Release 1.0.1 - #16
Merged
Merged
Conversation
The phases panel offered the SELECT action (and its 'Click to change' tooltip) based on island state and phase requirements alone, without checking whether the player actually holds the permission of the setcount command the click runs. A player with chunkblock.island.setcount negated saw the tooltip and then got a permission error when clicking. The panel now resolves the setcount subcommand and checks its permission before offering the action; if the command cannot be resolved it stays permissive and lets the command's own check decide. Also renames the GUI/list titles from the AOneBlock leftover 'OneBlock Phases' to 'ChunkBlock Phases'. Fixes #11 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Y7xSdVPS5vRu6wqf6XshRq
…land When a respawn (or join/teleport) landed a player inside a locked chunk — e.g. because the world had no spawn set and a respawn plugin picked a bad location on an old, abandoned island — backtrack() relocated the player to the nearest unlocked spot of whatever island was at that location and, if the spot was unsafe, created a landing block there. Players ended up standing on a lone generated block on an island they had never visited. backtrack() now only ejects a player locally when they hold coop rank or higher on the island at their location. Everyone else is sent to their own island home (falling back to spawn), and landing blocks can no longer be created on islands the player does not belong to. Fixes #13 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Y7xSdVPS5vRu6wqf6XshRq
The border-claim detection ran on every left/right click and walked a 5-block horizontal ray from the eye that ignored the clicked block and passed straight through walls. Mining anything within ~5 blocks of a locked chunk (e.g. a cobblestone generator) fired a claim attempt on every swing, nagging 'You need X more level(s) of credit' with a sound each time even though the player was not touching the border. The claim gesture is now: a click on a block inside unlocked territory is ordinary interaction and never a claim; punching a block that is itself in a locked chunk targets that chunk directly; an air click walks the real 3D aim line and stops at the first solid block, so aiming through your own builds no longer probes the chunk beyond them. Failure feedback (no-credit and beyond-limit) is additionally throttled to once per two seconds per player so repeated swings cannot spam chat. Fixes #14 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Y7xSdVPS5vRu6wqf6XshRq
CaveBlock already uses /cb and /cbadmin (plus /cba) as its default aliases, so running both gamemodes on one server made the short commands collide. ChunkBlock's defaults are now 'ch chunkblock' for players and 'chadmin chunkblockadmin cha' for admins. Existing servers keep whatever they have in config.yml; only fresh installs get the new defaults. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Y7xSdVPS5vRu6wqf6XshRq
The pinned SHA predates BentoBoxWorld/.github#13, which moved the CurseForge metadata and Hangar versionUpload JSON out of inline curl -F values and into files. curl treats a ';' in an inline -F value as the start of a type= attribute, so a release body containing a semicolon truncates the JSON and both platforms reject the upload. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SAQ3YQkcfRoCZEwa6SPJcp
Two related fixes around the flags copied from AOneBlock: 1. Rename ONEBLOCK_BOSSBAR/ONEBLOCK_ACTIONBAR/START_SAFETY to CHUNKBLOCK_BOSSBAR/CHUNKBLOCK_ACTIONBAR/CHUNKBLOCK_START_SAFETY. FlagsManager rejects duplicate flag IDs, so on a server running AOneBlock and ChunkBlock together, whichever addon loaded second silently lost its flag registration — and the surviving flag's listener belonged to the other addon, so the boss bar/action bar/start-safety features broke for one of the two gamemodes. Locale keys and default config are renamed to match; servers that changed these world settings from the defaults will need to re-apply them once under the new names. 2. Guard BossBarListener and StartSafetyListener against running for an addon that never enabled. These listeners are registered by FlagsManager when the flags are registered in onLoad, so they outlive a load failure — seen in the wild when the Level addon was removed: BentoBox drops ChunkBlock for the missing dependency after onLoad has run, the flag listeners stay registered with no world behind them, and every join and move then NPEs in inWorld() (BentoBoxWorld/BentoBox fix in progress too; this guard also protects released BentoBox versions). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Y7xSdVPS5vRu6wqf6XshRq
ChunkBlock cannot function without Level: island levels are the currency spent to claim chunks. addon.yml already declares the hard dependency (depend: Level), which makes BentoBox refuse to load the addon when Level is absent — but that path runs after onLoad has registered flags, and on current BentoBox releases the flag listeners then linger with no world behind them (see 9b8a25f). onEnable now checks for the Level addon itself: if it is not on the server, ChunkBlock logs a clear pair of error lines, unregisters its own flags so no listeners survive, sets its state to DISABLED, and stops before initializing anything. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Y7xSdVPS5vRu6wqf6XshRq
ci: bump publish-platforms pin to the multipart-JSON fix
The zombie-listener guard added in 9b8a25f only covered onJoin and onEnterIsland. IslandExitEvent, IslandEnterEvent and FlagSettingChangeEvent fire globally from other gamemodes too, so exiting an island in another gamemode still NPE'd through removeBar -> inWorld on the null island world when ChunkBlock had been dropped for the missing Level dependency. Replaces the piecemeal checks with a single ready() gate (overworld exists) that every event handler goes through, and adds a test that fires all handlers against a world-less addon to keep it that way. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Y7xSdVPS5vRu6wqf6XshRq
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Y7xSdVPS5vRu6wqf6XshRq
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.



Release 1.0.1
First patch release. Fixes all bugs reported against 1.0.0 (#11, #13, #14), resolves the command and flag collisions with CaveBlock and AOneBlock, and makes ChunkBlock behave cleanly when the required Level addon is missing.
See the 1.0.1 draft release notes for the full changelog.
🤖 Generated with Claude Code
https://claude.ai/code/session_01Y7xSdVPS5vRu6wqf6XshRq