diff --git a/pom.xml b/pom.xml index 0f8a672..a1b0f1e 100644 --- a/pom.xml +++ b/pom.xml @@ -57,7 +57,7 @@ v1.21-SNAPSHOT 1.21.11-R0.1-SNAPSHOT - 3.14.1-SNAPSHOT + 3.15.0-SNAPSHOT 1.12.0 diff --git a/src/main/java/world/bentobox/level/Level.java b/src/main/java/world/bentobox/level/Level.java index 20f2094..4af0b59 100644 --- a/src/main/java/world/bentobox/level/Level.java +++ b/src/main/java/world/bentobox/level/Level.java @@ -515,4 +515,12 @@ public boolean isNexo() { && Bukkit.getPluginManager().isPluginEnabled("Nexo"); } + /** + * @return true if the CraftEngine plugin is hooked and not disabled in config + */ + public boolean isCraftEngine() { + return !getSettings().getDisabledPluginHooks().contains("CraftEngine") + && getPlugin().getHooks().getHook("CraftEngine").isPresent(); + } + } diff --git a/src/main/java/world/bentobox/level/calculators/IslandLevelCalculator.java b/src/main/java/world/bentobox/level/calculators/IslandLevelCalculator.java index 0769a29..146540d 100644 --- a/src/main/java/world/bentobox/level/calculators/IslandLevelCalculator.java +++ b/src/main/java/world/bentobox/level/calculators/IslandLevelCalculator.java @@ -54,6 +54,7 @@ import us.lynuxcraft.deadsilenceiv.advancedchests.chest.gui.page.ChestPage; import world.bentobox.bentobox.BentoBox; import world.bentobox.bentobox.database.objects.Island; +import world.bentobox.bentobox.hooks.CraftEngineHook; import world.bentobox.bentobox.hooks.ItemsAdderHook; import world.bentobox.bentobox.hooks.OraxenHook; import world.bentobox.bentobox.util.Pair; @@ -562,11 +563,11 @@ private void processBlock(ChunkPair cp, int x, int y, int z, int globalX, int gl // Create a Location object only when needed for more complex checks. Location loc = null; - // === Custom Block Hooks (ItemsAdder, Oraxen, Nexo) === + // === Custom Block Hooks (ItemsAdder, Oraxen, Nexo, CraftEngine) === // These hooks can define custom blocks that override vanilla behavior. // They must be checked first. if (addon.isItemsAdder() || BentoBox.getInstance().getHooks().getHook("Oraxen").isPresent() - || addon.isNexo()) { + || addon.isNexo() || addon.isCraftEngine()) { loc = new Location(cp.world, globalX, y, globalZ); String customBlockId = null; if (addon.isItemsAdder()) { @@ -584,6 +585,9 @@ private void processBlock(ChunkPair cp, int x, int y, int z, int globalX, int gl customBlockId = "nexo:" + nexoMechanic.getItemID(); } } + if (customBlockId == null && addon.isCraftEngine()) { + customBlockId = CraftEngineHook.getBlockId(loc); + } if (customBlockId != null) { // If a custom block is found, count it and stop further processing for this block. diff --git a/src/main/java/world/bentobox/level/config/BlockConfig.java b/src/main/java/world/bentobox/level/config/BlockConfig.java index 2c9793a..62350c3 100644 --- a/src/main/java/world/bentobox/level/config/BlockConfig.java +++ b/src/main/java/world/bentobox/level/config/BlockConfig.java @@ -22,6 +22,7 @@ import com.nexomc.nexo.api.NexoItems; import world.bentobox.bentobox.BentoBox; +import world.bentobox.bentobox.hooks.CraftEngineHook; import world.bentobox.bentobox.hooks.ItemsAdderHook; import world.bentobox.bentobox.hooks.OraxenHook; import world.bentobox.level.Level; @@ -111,7 +112,11 @@ private boolean isOther(String key) { return NexoItems.exists(key.substring(5)); } // Check ItemsAdder - return addon.isItemsAdder() && ItemsAdderHook.isInRegistry(key); + if (addon.isItemsAdder() && ItemsAdderHook.isInRegistry(key)) { + return true; + } + // Check CraftEngine — block IDs are already namespaced (e.g. "mynamespace:my_block") + return addon.isCraftEngine() && CraftEngineHook.exists(key); } private boolean isSpawner(String key) {