Added support for copper chests
This commit is contained in:
parent
51d4bf27cd
commit
6572946b3d
6 changed files with 60 additions and 2 deletions
|
|
@ -1,7 +1,10 @@
|
|||
package net.coreprotect.bukkit;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import org.bukkit.Color;
|
||||
import org.bukkit.DyeColor;
|
||||
|
|
@ -85,6 +88,7 @@ public class BukkitAdapter implements BukkitInterface {
|
|||
}
|
||||
|
||||
// -------------------- Basic data conversion methods --------------------
|
||||
public static Set<Material> EMPTY_SET = new HashSet<>(Arrays.asList());
|
||||
|
||||
@Override
|
||||
public String parseLegacyName(String name) {
|
||||
|
|
@ -350,4 +354,14 @@ public class BukkitAdapter implements BukkitInterface {
|
|||
public Object getRegistryValue(String key, Object tClass) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isCopperChest(Material material) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Set<Material> copperChestMaterials() {
|
||||
return EMPTY_SET;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ package net.coreprotect.bukkit;
|
|||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.World;
|
||||
|
|
@ -432,4 +433,8 @@ public interface BukkitInterface {
|
|||
* @return The parsed name
|
||||
*/
|
||||
String parseLegacyName(String name);
|
||||
|
||||
boolean isCopperChest(Material material);
|
||||
|
||||
Set<Material> copperChestMaterials();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
package net.coreprotect.bukkit;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
|
|
@ -22,6 +24,8 @@ import net.coreprotect.model.BlockGroup;
|
|||
*/
|
||||
public class Bukkit_v1_21 extends Bukkit_v1_20 implements BukkitInterface {
|
||||
|
||||
public static Set<Material> COPPER_CHESTS = new HashSet<>(Arrays.asList());
|
||||
|
||||
/**
|
||||
* Initializes the Bukkit_v1_21 adapter with 1.21-specific block groups and mappings.
|
||||
* Sets up collections of blocks with similar behavior for efficient handling.
|
||||
|
|
@ -29,6 +33,9 @@ public class Bukkit_v1_21 extends Bukkit_v1_20 implements BukkitInterface {
|
|||
public Bukkit_v1_21() {
|
||||
initializeBlockGroups();
|
||||
initializeTrapdoorBlocks();
|
||||
BlockGroup.INTERACT_BLOCKS.addAll(copperChestMaterials());
|
||||
BlockGroup.CONTAINERS.addAll(copperChestMaterials());
|
||||
BlockGroup.UPDATE_STATE.addAll(copperChestMaterials());
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -154,4 +161,35 @@ public class Bukkit_v1_21 extends Bukkit_v1_20 implements BukkitInterface {
|
|||
wolf.setVariant(variant);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isCopperChest(Material material) {
|
||||
if (COPPER_CHESTS.contains(material) && material != Material.CHEST) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Set<Material> copperChestMaterials() {
|
||||
if (COPPER_CHESTS.isEmpty()) {
|
||||
Material copperChest = Material.getMaterial("COPPER_CHEST");
|
||||
if (copperChest == null) {
|
||||
COPPER_CHESTS.add(Material.CHEST);
|
||||
}
|
||||
else {
|
||||
COPPER_CHESTS.add(Material.getMaterial("COPPER_CHEST"));
|
||||
COPPER_CHESTS.add(Material.getMaterial("EXPOSED_COPPER_CHEST"));
|
||||
COPPER_CHESTS.add(Material.getMaterial("WEATHERED_COPPER_CHEST"));
|
||||
COPPER_CHESTS.add(Material.getMaterial("OXIDIZED_COPPER_CHEST"));
|
||||
COPPER_CHESTS.add(Material.getMaterial("WAXED_COPPER_CHEST"));
|
||||
COPPER_CHESTS.add(Material.getMaterial("WAXED_EXPOSED_COPPER_CHEST"));
|
||||
COPPER_CHESTS.add(Material.getMaterial("WAXED_WEATHERED_COPPER_CHEST"));
|
||||
COPPER_CHESTS.add(Material.getMaterial("WAXED_OXIDIZED_COPPER_CHEST"));
|
||||
}
|
||||
}
|
||||
|
||||
return COPPER_CHESTS;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -209,7 +209,7 @@ public class RollbackProcessor {
|
|||
BlockData checkData = rowType == Material.AIR ? blockData : rawBlockData;
|
||||
if (checkData != null) {
|
||||
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) {
|
||||
if (rowType != Material.CHEST && rowType != Material.TRAPPED_CHEST) { // always update double chests
|
||||
if (rowType != Material.CHEST && rowType != Material.TRAPPED_CHEST && !BukkitAdapter.ADAPTER.isCopperChest(rowType)) { // always update double chests
|
||||
changeBlock = false;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -145,7 +145,7 @@ public final class PlayerInteractListener extends Queue implements Listener {
|
|||
}
|
||||
else if (isContainerBlock && Config.getConfig(world).ITEM_TRANSACTIONS) {
|
||||
Location location = null;
|
||||
if (type.equals(Material.CHEST) || type.equals(Material.TRAPPED_CHEST)) {
|
||||
if (type.equals(Material.CHEST) || type.equals(Material.TRAPPED_CHEST) || BukkitAdapter.ADAPTER.isCopperChest(type)) {
|
||||
Chest chest = (Chest) clickedBlock.getState();
|
||||
InventoryHolder inventoryHolder = chest.getInventory().getHolder();
|
||||
|
||||
|
|
|
|||
|
|
@ -208,6 +208,7 @@ public class BlockUtils {
|
|||
if (blockState instanceof BlockInventoryHolder) {
|
||||
if (singleBlock) {
|
||||
List<Material> chests = java.util.Arrays.asList(Material.CHEST, Material.TRAPPED_CHEST);
|
||||
chests.addAll(BukkitAdapter.ADAPTER.copperChestMaterials());
|
||||
Material type = blockState.getType();
|
||||
if (chests.contains(type)) {
|
||||
inventory = ((org.bukkit.block.Chest) blockState).getBlockInventory();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue