Tags
Creators
Details
1.3.1
Compatibility
Changes
Release from 1.3.0-SNAPSHOT-2 New: /bp unlock GUI
The old coordinate-based /bp unlock [world] command has been replaced with a full paginated GUI. Running /bp unlock opens a six-row inventory listing every block currently protected by the target player, using the real block icon for each entry. Left-click any block to inspect its inventory contents in read-only mode — no items can be taken or placed. Right-click any block to remove its protection entirely; an action-bar message confirms the block name, the owner it was removed from, and the coordinates. Supports pagination and works for offline players. Requires blockprot.user.admin. New: Duration Parser
Timed access and protection expiry now share a single DurationParser that accepts human-readable duration strings with combined units. Accepted suffixes: s (seconds), m (minutes), h (hours), d (days), mo / mon (months), y (years). Units can be freely combined: 1d12h30m, 2mo3d, 1y6mo. All max-per-unit limits are enforced and configurable. Previously the timed-access parser was a separate inline implementation with no support for combined units. Fix: Inventory title and item name color injection
All GUI menu titles and item display names are now rendered as plain text, letting Minecraft apply its default white color. Previously LegacyComponentSerializer was used to set display names, which caused section-sign color codes embedded in translation strings or hardcoded prefixes to produce colored text — most visibly the §4Admin §f prefix on the /bp unlock inventory title shown in the screenshot below. Every inventory class has been updated: BlockProtInventory now strips §x and &x codes before passing any string to Component.text(). Lore lines and chat/action-bar messages are unaffected and still support legacy color codes from translation files. Fix: InventoryConstants.singleLine duplicate removed
singleLine was a duplicate constant of lineLength (both equal to 9). All seven call sites across BlockInfoInventory, FriendDetailInventory, FriendManageInventory, and UserSettingsInventory have been migrated to lineLength and the duplicate constant removed. Fix: Unused PlayerTextures import removed from BlockProtInventory Fix: Dead actionIcon() method removed from AuditInventory The method was only used to prepend colored §cX / §aO / §e- / §2+ symbols to audit entry display names. With the color injection fix, display names are now plain text and the symbol-based prefix was replaced by the already-existing actionLabel() string. The dead method has been removed. Fix: Inline color codes removed from TimedAccessInventory, AuditInventory, and AdminMenuInventory
Hardcoded §a / §c / §e / §7 / §8 / §f / §6 prefixes were removed from item labels, audit entry display names, lore lines, and the integrations action-bar output. Text that had no meaningful color intent is now plain; text in lore that was intentionally styled continues to use the legacy serializer from the translation file. Documentation: Command and permission audit
A full cross-reference of all command source files against plugin.yml and the README was performed. Corrections applied: /bp timed is documented as a chat-input flow rather than a tab-completable CLI subcommand (it was never registered in BlockProtCommand's CLI map); /bp friends bare invocation was undocumented and has been added; /bp reload, /bp update, and /bp integrations require op, not blockprot.user.admin — corrected in the README; /bp about and /bp help are CLI-only and are hidden in GUI mode — the incorrect "Universal Commands" section has been removed; the permissions table now distinguishes between permissions declared in plugin.yml (with defaults) and runtime-only nodes (blockprot.debug, blockprot.lockmax, blockprot.locklimit.*) that must be granted manually. Documentation: README User Menu table corrected
The User Menu slot table now reflects the actual UserMenuInventory layout: four items at slots 11–14 (Settings, Friends, Statistics, About). The previous table listed six items across slots 10–16 including Transfer and Timed Access hints that are not present in the current implementation.
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:C2ZYTu62:YkLBvmYG"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:C2ZYTu62:YkLBvmYG"
}

