From 10100b68db9dabaa71996c8156772b91581db064 Mon Sep 17 00:00:00 2001 From: ags816710 Date: Tue, 9 Jun 2026 20:10:36 +0100 Subject: [PATCH] feat: add support for barrels and copper chests - Wand now able to add copper chests and barrels to network. - Changed `instanceof Chest` to `instanceof Container` in multiple places to support Barrels. --- .../managers/ConfigManager.java | 9 ++++++++ .../managers/NetworkManager.java | 7 +++--- .../networkstorage/storage/Network.java | 22 ++++++++----------- 3 files changed, 22 insertions(+), 16 deletions(-) diff --git a/src/main/java/com/dermoha/networkstorage/managers/ConfigManager.java b/src/main/java/com/dermoha/networkstorage/managers/ConfigManager.java index f31c1a3..7212fec 100644 --- a/src/main/java/com/dermoha/networkstorage/managers/ConfigManager.java +++ b/src/main/java/com/dermoha/networkstorage/managers/ConfigManager.java @@ -109,6 +109,15 @@ public Material getTerminalBlockType() { public boolean isNetworkContainerBlock(Material material) { return material == Material.CHEST || material == Material.TRAPPED_CHEST + || material == Material.COPPER_CHEST + || material == Material.BARREL + || material == Material.EXPOSED_COPPER_CHEST + || material == Material.WEATHERED_COPPER_CHEST + || material == Material.OXIDIZED_COPPER_CHEST + || material == Material.WAXED_COPPER_CHEST + || material == Material.WAXED_EXPOSED_COPPER_CHEST + || material == Material.WAXED_WEATHERED_COPPER_CHEST + || material == Material.WAXED_OXIDIZED_COPPER_CHEST || material == getTerminalBlockType(); } diff --git a/src/main/java/com/dermoha/networkstorage/managers/NetworkManager.java b/src/main/java/com/dermoha/networkstorage/managers/NetworkManager.java index 354b50b..1bf650b 100644 --- a/src/main/java/com/dermoha/networkstorage/managers/NetworkManager.java +++ b/src/main/java/com/dermoha/networkstorage/managers/NetworkManager.java @@ -6,6 +6,7 @@ import org.bukkit.Location; import org.bukkit.OfflinePlayer; import org.bukkit.block.Chest; +import org.bukkit.block.Container; import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.configuration.file.YamlConfiguration; @@ -772,11 +773,11 @@ public synchronized int purgeAllNetworksForSeasonReset() { private void clearNetworkChestContents(Network network) { for (Location location : network.getChestLocations()) { - if (!(location.getBlock().getState() instanceof Chest chest)) { + if (!(location.getBlock().getState() instanceof Container container)) { continue; } - chest.getInventory().clear(); - chest.update(); + container.getInventory().clear(); + container.update(); } } diff --git a/src/main/java/com/dermoha/networkstorage/storage/Network.java b/src/main/java/com/dermoha/networkstorage/storage/Network.java index 5e501a6..0614469 100644 --- a/src/main/java/com/dermoha/networkstorage/storage/Network.java +++ b/src/main/java/com/dermoha/networkstorage/storage/Network.java @@ -3,7 +3,7 @@ import com.dermoha.networkstorage.stats.PlayerStat; import org.bukkit.Location; import org.bukkit.Material; -import org.bukkit.block.Chest; +import org.bukkit.block.Container; import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; @@ -190,9 +190,8 @@ public Map getNetworkItems() { Map networkItems = new HashMap<>(); for (Location chestLoc : chestLocations) { - if (chestLoc.getBlock().getState() instanceof Chest) { - Chest chest = (Chest) chestLoc.getBlock().getState(); - for (ItemStack item : chest.getInventory().getContents()) { + if (chestLoc.getBlock().getState() instanceof Container container) { + for (ItemStack item : container.getInventory().getContents()) { if (item != null && item.getType() != Material.AIR) { addToNetworkMap(networkItems, item); } @@ -228,9 +227,8 @@ public ItemStack removeFromNetwork(ItemStack itemToRemove, int amount) { for (Location chestLoc : chestLocations) { if (remaining <= 0) break; - if (chestLoc.getBlock().getState() instanceof Chest) { - Chest chest = (Chest) chestLoc.getBlock().getState(); - Inventory inv = chest.getInventory(); + if (chestLoc.getBlock().getState() instanceof Container container) { + Inventory inv = container.getInventory(); for (int i = 0; i < inv.getSize() && remaining > 0; i++) { ItemStack item = inv.getItem(i); if (item != null && item.isSimilar(itemToRemove)) { @@ -256,9 +254,8 @@ public ItemStack addToNetwork(ItemStack itemToAdd) { ItemStack remaining = itemToAdd.clone(); for (Location chestLoc : chestLocations) { if (remaining.getAmount() <= 0) break; - if (chestLoc.getBlock().getState() instanceof Chest) { - Chest chest = (Chest) chestLoc.getBlock().getState(); - HashMap result = chest.getInventory().addItem(remaining); + if (chestLoc.getBlock().getState() instanceof Container container) { + HashMap result = container.getInventory().addItem(remaining); if (result.isEmpty()) { remaining = null; break; @@ -275,9 +272,8 @@ public double getCapacityPercent() { int totalSlots = 0; int usedSlots = 0; for (Location chestLoc : chestLocations) { - if (chestLoc.getBlock().getState() instanceof Chest) { - Chest chest = (Chest) chestLoc.getBlock().getState(); - Inventory inv = chest.getInventory(); + if (chestLoc.getBlock().getState() instanceof Container container) { + Inventory inv = container.getInventory(); totalSlots += inv.getSize(); for (ItemStack item : inv.getContents()) { if (item != null && item.getType() != Material.AIR) {