Skip to content

Release 2.10.0#166

Merged
tastybento merged 5 commits into
masterfrom
develop
Jul 11, 2026
Merged

Release 2.10.0#166
tastybento merged 5 commits into
masterfrom
develop

Conversation

@tastybento

Copy link
Copy Markdown
Member

Release 2.10.0

Merges develop into master for the 2.10.0 release.

Features

  • Custom block support — generators can now drop custom blocks from ItemsAdder, CraftEngine, Oraxen and Nexo, referenced by a plugin-prefixed ID (e.g. itemsadder:iasurvival:ruby_ore, craftengine:default:topaz_ore). Wired through BentoBox core hooks.
    • ItemsAdder and CraftEngine work out of the box; Oraxen and Nexo IDs are accepted and will place once BentoBox core hooks gain support for them.
    • New CustomBlocks utility resolves and places custom blocks; MagicGenerator block replacement extended to handle them.
    • Admin GUI: new Add Custom Block button in the generator edit panel with chat-input prompt and validation (input-custom-block, custom-block-invalid-prefix, custom-block-not-found).
    • generatorTemplate.yml documents the custom-block syntax.

Build

Tests

  • New CustomBlocksTest (custom block resolution/placement).
  • MagicGeneratorTest extended for custom-block drops.

Build: mvn clean package → BUILD SUCCESS.

🤖 Generated with Claude Code

tastybento and others added 5 commits July 11, 2026 11:19
… Oraxen, Nexo)

Generator block entries are now stored as string block IDs instead of
Material: vanilla material names (COBBLESTONE) or provider-prefixed
custom block IDs (itemsadder:namespace:id, craftengine:namespace:id,
oraxen:id, nexo:id). Existing databases load unchanged because GSON
already serialized Material values as their names.

All third-party plugin access is routed through BentoBox core hooks via
the new CustomBlocks utility, so the addon never depends on the plugins
directly. ItemsAdder and CraftEngine blocks generate out of the box;
Oraxen and Nexo IDs are accepted but degrade gracefully to the vanilla
block until core hooks support placing them (BentoBoxWorld/BentoBox#3020,
BentoBoxWorld/BentoBox#3025).

- MagicGenerator validates picked IDs against the hooks and reports
  failures via /why
- Listeners set vanilla blocks immediately; custom blocks are placed via
  their hook one tick later, since hook APIs set blocks directly
- Panels render custom blocks with the provider item's texture and
  display name; the admin edit panel gains an Add Custom Block button
  with chat input validated against the hook registry
- generatorTemplate.yml accepts quoted prefixed keys; unregistered
  custom blocks import with a warning so templates stay portable
- BentoBox dependency bumped to 3.18.1 (CraftEngineHook needs 3.15.0+)

Also fixes a pre-existing admin panel bug where editing a treasure's
chance wrote the block list into the deprecated treasureChanceMap
instead of updating treasureItemChanceMap.

Addresses #103

Co-Authored-By: Claude Fable 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01Q63R7wAXARZD2Rpg3oun6m
CI failed with "class file has wrong version 69.0, should be 65.0" on
every BentoBox class: the published 3.18.1 jar is compiled for Java 25,
which the Java 21 toolchain used by this project (and its CI) cannot
read. 3.17.0 is the newest Java 21-compatible release and contains all
hook APIs used by the custom block support (CraftEngineHook.getItemStack
landed in 3.16.0).

Co-Authored-By: Claude Fable 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01Q63R7wAXARZD2Rpg3oun6m
- S1319: expose NavigableMap instead of TreeMap in GeneratorTierObject
  block-chance and material-height getters/setters (defensive copy on set)
- S1192: extract duplicated template-context literal into a constant in
  StoneGeneratorImportManager
- S3776/S6541: split MagicGenerator.processBlockReplacement into
  selectBlockId/isPlaceable/processTreasureDrop to cut cognitive complexity
  and Brain Method metrics
- S3776: extract click-handler and min/max height buttons in
  GeneratorEditPanel to reduce cognitive complexity

Updated call sites (MagicGenerator, CommonPanel) to the interface type.
Full test suite: 165 tests, 0 failures.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
Claude-Session: https://claude.ai/code/session_01Q63R7wAXARZD2Rpg3oun6m
Add custom block support via BentoBox hooks (ItemsAdder, CraftEngine, Oraxen, Nexo)
@sonarqubecloud

Copy link
Copy Markdown

@tastybento tastybento merged commit 4b9a1a8 into master Jul 11, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant