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;
|
package net.coreprotect.bukkit;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
import org.bukkit.Color;
|
import org.bukkit.Color;
|
||||||
import org.bukkit.DyeColor;
|
import org.bukkit.DyeColor;
|
||||||
|
|
@ -85,6 +88,7 @@ public class BukkitAdapter implements BukkitInterface {
|
||||||
}
|
}
|
||||||
|
|
||||||
// -------------------- Basic data conversion methods --------------------
|
// -------------------- Basic data conversion methods --------------------
|
||||||
|
public static Set<Material> EMPTY_SET = new HashSet<>(Arrays.asList());
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String parseLegacyName(String name) {
|
public String parseLegacyName(String name) {
|
||||||
|
|
@ -350,4 +354,14 @@ public class BukkitAdapter implements BukkitInterface {
|
||||||
public Object getRegistryValue(String key, Object tClass) {
|
public Object getRegistryValue(String key, Object tClass) {
|
||||||
return null;
|
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.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
|
|
@ -432,4 +433,8 @@ public interface BukkitInterface {
|
||||||
* @return The parsed name
|
* @return The parsed name
|
||||||
*/
|
*/
|
||||||
String parseLegacyName(String name);
|
String parseLegacyName(String name);
|
||||||
|
|
||||||
|
boolean isCopperChest(Material material);
|
||||||
|
|
||||||
|
Set<Material> copperChestMaterials();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,7 @@
|
||||||
package net.coreprotect.bukkit;
|
package net.coreprotect.bukkit;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Set;
|
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 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.
|
* 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.
|
* 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() {
|
public Bukkit_v1_21() {
|
||||||
initializeBlockGroups();
|
initializeBlockGroups();
|
||||||
initializeTrapdoorBlocks();
|
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);
|
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;
|
BlockData checkData = rowType == Material.AIR ? blockData : rawBlockData;
|
||||||
if (checkData != null) {
|
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 (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;
|
changeBlock = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -145,7 +145,7 @@ public final class PlayerInteractListener extends Queue implements Listener {
|
||||||
}
|
}
|
||||||
else if (isContainerBlock && Config.getConfig(world).ITEM_TRANSACTIONS) {
|
else if (isContainerBlock && Config.getConfig(world).ITEM_TRANSACTIONS) {
|
||||||
Location location = null;
|
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();
|
Chest chest = (Chest) clickedBlock.getState();
|
||||||
InventoryHolder inventoryHolder = chest.getInventory().getHolder();
|
InventoryHolder inventoryHolder = chest.getInventory().getHolder();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -208,6 +208,7 @@ public class BlockUtils {
|
||||||
if (blockState instanceof BlockInventoryHolder) {
|
if (blockState instanceof BlockInventoryHolder) {
|
||||||
if (singleBlock) {
|
if (singleBlock) {
|
||||||
List<Material> chests = java.util.Arrays.asList(Material.CHEST, Material.TRAPPED_CHEST);
|
List<Material> chests = java.util.Arrays.asList(Material.CHEST, Material.TRAPPED_CHEST);
|
||||||
|
chests.addAll(BukkitAdapter.ADAPTER.copperChestMaterials());
|
||||||
Material type = blockState.getType();
|
Material type = blockState.getType();
|
||||||
if (chests.contains(type)) {
|
if (chests.contains(type)) {
|
||||||
inventory = ((org.bukkit.block.Chest) blockState).getBlockInventory();
|
inventory = ((org.bukkit.block.Chest) blockState).getBlockInventory();
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue