From 81863941fbc0275ef7f089d3c3c26428e33fb3fe Mon Sep 17 00:00:00 2001 From: tastybento Date: Wed, 4 Jun 2025 07:41:12 -0700 Subject: [PATCH] Fixes #373 chest contents not being counted --- .../calculators/IslandLevelCalculator.java | 47 +++++++++++++++++-- 1 file changed, 43 insertions(+), 4 deletions(-) diff --git a/src/main/java/world/bentobox/level/calculators/IslandLevelCalculator.java b/src/main/java/world/bentobox/level/calculators/IslandLevelCalculator.java index da71e57..6f2519b 100644 --- a/src/main/java/world/bentobox/level/calculators/IslandLevelCalculator.java +++ b/src/main/java/world/bentobox/level/calculators/IslandLevelCalculator.java @@ -499,7 +499,7 @@ private void processBlock(ChunkPair cp, int x, int y, int z, int globalX, int gl processSlabs(blockData, m, belowSeaLevel); processStackers(loc, m); processUltimateStacker(m, loc, belowSeaLevel); - processChests(cp, blockData); + processChests(cp, cp.chunkSnapshot.getBlockType(x, y, z)); processSpawnerOrBlock(m, loc, belowSeaLevel); } @@ -524,9 +524,48 @@ private void processUltimateStacker(Material m, Location loc, boolean belowSeaLe } } - private void processChests(ChunkPair cp, BlockData blockData) { - if (addon.getSettings().isIncludeChests() && blockData instanceof Container) { - chestBlocks.add(cp.chunk); + private void processChests(ChunkPair cp, Material material) { + if (addon.getSettings().isIncludeChests()) { + switch (material) { + case CHEST: + case TRAPPED_CHEST: + case BARREL: + case HOPPER: + case DISPENSER: + case DROPPER: + case SHULKER_BOX: + case WHITE_SHULKER_BOX: + case ORANGE_SHULKER_BOX: + case MAGENTA_SHULKER_BOX: + case LIGHT_BLUE_SHULKER_BOX: + case YELLOW_SHULKER_BOX: + case LIME_SHULKER_BOX: + case PINK_SHULKER_BOX: + case GRAY_SHULKER_BOX: + case LIGHT_GRAY_SHULKER_BOX: + case CYAN_SHULKER_BOX: + case PURPLE_SHULKER_BOX: + case BLUE_SHULKER_BOX: + case BROWN_SHULKER_BOX: + case GREEN_SHULKER_BOX: + case RED_SHULKER_BOX: + case BLACK_SHULKER_BOX: + case BREWING_STAND: + case FURNACE: + case BLAST_FURNACE: + case SMOKER: + case BEACON: // has an inventory slot + case ENCHANTING_TABLE: // technically has an item slot + case LECTERN: // stores a book + case JUKEBOX: // stores a record + // ✅ It's a container + chestBlocks.add(cp.chunk); + break; + default: + // ❌ Not a container + break; + } + } }