Skip to content

Commit 6572946

Browse files
committed
Added support for copper chests
1 parent 51d4bf2 commit 6572946

File tree

6 files changed

+60
-2
lines changed

6 files changed

+60
-2
lines changed

src/main/java/net/coreprotect/bukkit/BukkitAdapter.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
package net.coreprotect.bukkit;
22

3+
import java.util.Arrays;
4+
import java.util.HashSet;
35
import java.util.List;
46
import java.util.Map;
7+
import java.util.Set;
58

69
import org.bukkit.Color;
710
import org.bukkit.DyeColor;
@@ -85,6 +88,7 @@ public static void loadAdapter() {
8588
}
8689

8790
// -------------------- Basic data conversion methods --------------------
91+
public static Set<Material> EMPTY_SET = new HashSet<>(Arrays.asList());
8892

8993
@Override
9094
public String parseLegacyName(String name) {
@@ -350,4 +354,14 @@ public Object getRegistryKey(Object value) {
350354
public Object getRegistryValue(String key, Object tClass) {
351355
return null;
352356
}
357+
358+
@Override
359+
public boolean isCopperChest(Material material) {
360+
return false;
361+
}
362+
363+
@Override
364+
public Set<Material> copperChestMaterials() {
365+
return EMPTY_SET;
366+
}
353367
}

src/main/java/net/coreprotect/bukkit/BukkitInterface.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import java.util.List;
44
import java.util.Map;
5+
import java.util.Set;
56

67
import org.bukkit.Material;
78
import org.bukkit.World;
@@ -432,4 +433,8 @@ public interface BukkitInterface {
432433
* @return The parsed name
433434
*/
434435
String parseLegacyName(String name);
436+
437+
boolean isCopperChest(Material material);
438+
439+
Set<Material> copperChestMaterials();
435440
}

src/main/java/net/coreprotect/bukkit/Bukkit_v1_21.java

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package net.coreprotect.bukkit;
22

3+
import java.util.Arrays;
4+
import java.util.HashSet;
35
import java.util.List;
46
import java.util.Set;
57

@@ -22,13 +24,18 @@
2224
*/
2325
public class Bukkit_v1_21 extends Bukkit_v1_20 implements BukkitInterface {
2426

27+
public static Set<Material> COPPER_CHESTS = new HashSet<>(Arrays.asList());
28+
2529
/**
2630
* Initializes the Bukkit_v1_21 adapter with 1.21-specific block groups and mappings.
2731
* Sets up collections of blocks with similar behavior for efficient handling.
2832
*/
2933
public Bukkit_v1_21() {
3034
initializeBlockGroups();
3135
initializeTrapdoorBlocks();
36+
BlockGroup.INTERACT_BLOCKS.addAll(copperChestMaterials());
37+
BlockGroup.CONTAINERS.addAll(copperChestMaterials());
38+
BlockGroup.UPDATE_STATE.addAll(copperChestMaterials());
3239
}
3340

3441
/**
@@ -154,4 +161,35 @@ public void setWolfVariant(org.bukkit.entity.Wolf wolf, Object value) {
154161
wolf.setVariant(variant);
155162

156163
}
164+
165+
@Override
166+
public boolean isCopperChest(Material material) {
167+
if (COPPER_CHESTS.contains(material) && material != Material.CHEST) {
168+
return true;
169+
}
170+
171+
return false;
172+
}
173+
174+
@Override
175+
public Set<Material> copperChestMaterials() {
176+
if (COPPER_CHESTS.isEmpty()) {
177+
Material copperChest = Material.getMaterial("COPPER_CHEST");
178+
if (copperChest == null) {
179+
COPPER_CHESTS.add(Material.CHEST);
180+
}
181+
else {
182+
COPPER_CHESTS.add(Material.getMaterial("COPPER_CHEST"));
183+
COPPER_CHESTS.add(Material.getMaterial("EXPOSED_COPPER_CHEST"));
184+
COPPER_CHESTS.add(Material.getMaterial("WEATHERED_COPPER_CHEST"));
185+
COPPER_CHESTS.add(Material.getMaterial("OXIDIZED_COPPER_CHEST"));
186+
COPPER_CHESTS.add(Material.getMaterial("WAXED_COPPER_CHEST"));
187+
COPPER_CHESTS.add(Material.getMaterial("WAXED_EXPOSED_COPPER_CHEST"));
188+
COPPER_CHESTS.add(Material.getMaterial("WAXED_WEATHERED_COPPER_CHEST"));
189+
COPPER_CHESTS.add(Material.getMaterial("WAXED_OXIDIZED_COPPER_CHEST"));
190+
}
191+
}
192+
193+
return COPPER_CHESTS;
194+
}
157195
}

src/main/java/net/coreprotect/database/rollback/RollbackProcessor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -209,7 +209,7 @@ else if (rowAction == 3) { // entity kill
209209
BlockData checkData = rowType == Material.AIR ? blockData : rawBlockData;
210210
if (checkData != null) {
211211
if (checkData.getAsString().equals(pendingChangeData.getAsString()) || checkData instanceof org.bukkit.block.data.MultipleFacing || checkData instanceof org.bukkit.block.data.type.Stairs || checkData instanceof org.bukkit.block.data.type.RedstoneWire) {
212-
if (rowType != Material.CHEST && rowType != Material.TRAPPED_CHEST) { // always update double chests
212+
if (rowType != Material.CHEST && rowType != Material.TRAPPED_CHEST && !BukkitAdapter.ADAPTER.isCopperChest(rowType)) { // always update double chests
213213
changeBlock = false;
214214
}
215215
}

src/main/java/net/coreprotect/listener/player/PlayerInteractListener.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ else if (event.getAction().equals(Action.RIGHT_CLICK_BLOCK)) {
145145
}
146146
else if (isContainerBlock && Config.getConfig(world).ITEM_TRANSACTIONS) {
147147
Location location = null;
148-
if (type.equals(Material.CHEST) || type.equals(Material.TRAPPED_CHEST)) {
148+
if (type.equals(Material.CHEST) || type.equals(Material.TRAPPED_CHEST) || BukkitAdapter.ADAPTER.isCopperChest(type)) {
149149
Chest chest = (Chest) clickedBlock.getState();
150150
InventoryHolder inventoryHolder = chest.getInventory().getHolder();
151151

src/main/java/net/coreprotect/utility/BlockUtils.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -208,6 +208,7 @@ public static Inventory getContainerInventory(BlockState blockState, boolean sin
208208
if (blockState instanceof BlockInventoryHolder) {
209209
if (singleBlock) {
210210
List<Material> chests = java.util.Arrays.asList(Material.CHEST, Material.TRAPPED_CHEST);
211+
chests.addAll(BukkitAdapter.ADAPTER.copperChestMaterials());
211212
Material type = blockState.getType();
212213
if (chests.contains(type)) {
213214
inventory = ((org.bukkit.block.Chest) blockState).getBlockInventory();

0 commit comments

Comments
 (0)