diff --git a/pom.xml b/pom.xml
index 1f5fddc..d1985af 100644
--- a/pom.xml
+++ b/pom.xml
@@ -54,15 +54,15 @@
2.0.9
- 1.21.7-R0.1-SNAPSHOT
- 1.21.8-R0.1-SNAPSHOT
- 3.3.0
+ 1.21.10-R0.1-SNAPSHOT
+ 1.21.10-R0.1-SNAPSHOT
+ 3.9.0
${build.version}-SNAPSHOT
-LOCAL
- 3.2.1
+ 3.3.0
BentoBoxWorld_Boxed
bentobox-world
@@ -176,48 +176,11 @@
${bentobox.version}
provided
-
-
- org.spigotmc
- spigot
- ${spigot.version}
- provided
-
-
- org.spigotmc......
- spigot
- 1.21.7-R0.1-SNAPSHOT
- provided
-
-
- org.spigotmc.....
- spigot
- 1.21.6-R0.1-SNAPSHOT
- provided
-
- org.spigotmc....
- spigot
- 1.21.5-R0.1-SNAPSHOT
- provided
-
-
- org.spigotmc...
- spigot
- 1.21.4-R0.1-SNAPSHOT
- provided
-
-
- org.spigotmc..
- spigot
- 1.21.3-R0.1-SNAPSHOT
- provided
-
-
- org.spigotmc......
- spigot
- 1.21.1-R0.1-SNAPSHOT
- provided
+ net.kyori
+ adventure-api
+ 4.24.0
+ test
diff --git a/src/main/java/world/bentobox/boxed/Boxed.java b/src/main/java/world/bentobox/boxed/Boxed.java
index 49e7690..8255fb5 100644
--- a/src/main/java/world/bentobox/boxed/Boxed.java
+++ b/src/main/java/world/bentobox/boxed/Boxed.java
@@ -131,11 +131,6 @@ public void onEnable() {
if (this.getPlugin().getAddonsManager().getAddonByName("InvSwitcher").isEmpty()) {
this.logWarning("Boxed normally requires the InvSwitcher addon for per-world Advancements.");
}
- if (Bukkit.getPluginManager().isPluginEnabled("MultiverseCore")) {
- this.logError("Boxed is not compatible with Multiverse! Disabling!");
- this.setState(State.DISABLED);
- return;
- }
// Advancements manager
advManager = new AdvancementsManager(this);
// Make flags only applicable to this game mode
diff --git a/src/main/java/world/bentobox/boxed/listeners/NewAreaListener.java b/src/main/java/world/bentobox/boxed/listeners/NewAreaListener.java
index 928c34d..0dd552c 100644
--- a/src/main/java/world/bentobox/boxed/listeners/NewAreaListener.java
+++ b/src/main/java/world/bentobox/boxed/listeners/NewAreaListener.java
@@ -53,10 +53,10 @@
import world.bentobox.bentobox.api.events.island.IslandResettedEvent;
import world.bentobox.bentobox.database.Database;
import world.bentobox.bentobox.database.objects.Island;
+import world.bentobox.bentobox.nms.AbstractMetaData;
import world.bentobox.bentobox.util.Pair;
import world.bentobox.bentobox.util.Util;
import world.bentobox.boxed.Boxed;
-import world.bentobox.boxed.nms.AbstractMetaData;
import world.bentobox.boxed.objects.BoxedJigsawBlock;
import world.bentobox.boxed.objects.BoxedStructureBlock;
import world.bentobox.boxed.objects.IslandStructures;
@@ -537,7 +537,7 @@ public static BoundingBox removeJigsaw(StructureRecord item) {
*/
private static void processStructureBlock(Block b) {
// I would like to read the data from the block and do something with it!
- String data = nmsData(b);
+ String data = Util.getMetaData().nmsData(b);
if (data.isEmpty()) {
return;
}
@@ -570,7 +570,7 @@ private static void processStructureBlock(Block b) {
*/
private static void processJigsaw(Block b, StructureRotation structureRotation, boolean pasteMobs) {
try {
- String data = nmsData(b);
+ String data = Util.getMetaData().nmsData(b);
if (data.isEmpty()) {
return;
}
@@ -693,28 +693,6 @@ private static BlockFace getDirection(String finalState) {
.orElse(BlockFace.SELF);
}
- /**
- * Gets NMS data from a block using the appropriate handler.
- *
- * @param block The block.
- * @return The NMS data string.
- */
- private static String nmsData(Block block) {
- AbstractMetaData handler;
- try {
- Class> clazz = Class.forName(pluginPackageName + ".nms." + bukkitVersion + ".GetMetaData");
- if (AbstractMetaData.class.isAssignableFrom(clazz)) {
- handler = (AbstractMetaData) clazz.getConstructor().newInstance();
- } else {
- throw new IllegalStateException("Class " + clazz.getName() + " does not implement AbstractGetMetaData");
- }
- } catch (Exception e) {
- BentoBox.getInstance().logError("No metadata handler found for " + bukkitVersion + " in Boxed (yet).");
- handler = new world.bentobox.boxed.nms.fallback.GetMetaData();
- }
- return handler.nmsData(block);
- }
-
/**
* Loads the list of structures to be placed from the database.
*
diff --git a/src/main/java/world/bentobox/boxed/nms/AbstractMetaData.java b/src/main/java/world/bentobox/boxed/nms/AbstractMetaData.java
deleted file mode 100644
index 81906cb..0000000
--- a/src/main/java/world/bentobox/boxed/nms/AbstractMetaData.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package world.bentobox.boxed.nms;
-
-import java.lang.reflect.Field;
-import java.lang.reflect.Method;
-
-import org.bukkit.block.Block;
-
-import net.minecraft.nbt.NBTTagCompound;
-import net.minecraft.network.protocol.game.PacketPlayOutTileEntityData;
-import net.minecraft.world.level.block.entity.TileEntity;
-import world.bentobox.bentobox.BentoBox;
-
-public abstract class AbstractMetaData {
-
- public abstract String nmsData(Block block);
-
- protected String getData(TileEntity te, String method, String field) {
- try {
- // Check if the method 'j' exists
- Method updatePacketMethod = te.getClass().getDeclaredMethod(method);
- if (updatePacketMethod != null) {
- // Invoke the method to get the PacketPlayOutTileEntityData object
- updatePacketMethod.setAccessible(true);
- Object object = updatePacketMethod.invoke(te);
- PacketPlayOutTileEntityData packet = (PacketPlayOutTileEntityData) object;
- //if (object instanceof PacketPlayOutTileEntityData packet) {
- // Access the private field for the NBTTagCompound getter in PacketPlayOutTileEntityData
- Field fieldC = packet.getClass().getDeclaredField(field);
- fieldC.setAccessible(true);
- NBTTagCompound nbtTag = (NBTTagCompound) fieldC.get(packet);
-
- return nbtTag.toString(); // This will show what you want
- //} else {
- // throw new ClassNotFoundException(
- // object.getClass().getCanonicalName() + " is not a PacketPlayOutTileEntityData");
- //}
- }
- } catch (Exception e) {
- System.out.println("The method '" + method + "' does not exist in the TileEntity class.");
- e.printStackTrace();
- }
- return "";
-
- }
-}
diff --git a/src/main/java/world/bentobox/boxed/nms/fallback/GetMetaData.java b/src/main/java/world/bentobox/boxed/nms/fallback/GetMetaData.java
deleted file mode 100644
index ba63d91..0000000
--- a/src/main/java/world/bentobox/boxed/nms/fallback/GetMetaData.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package world.bentobox.boxed.nms.fallback;
-
-import org.bukkit.block.Block;
-
-import world.bentobox.boxed.nms.AbstractMetaData;
-
-/**
- * Fallback
- */
-public class GetMetaData extends AbstractMetaData {
-
- @Override
- public String nmsData(Block block) {
- return ""; // We cannot read it if we have no NMS
- }
-
-}
diff --git a/src/main/java/world/bentobox/boxed/nms/v1_21_1_R0_1_SNAPSHOT/GetMetaData.java b/src/main/java/world/bentobox/boxed/nms/v1_21_1_R0_1_SNAPSHOT/GetMetaData.java
deleted file mode 100644
index f28677f..0000000
--- a/src/main/java/world/bentobox/boxed/nms/v1_21_1_R0_1_SNAPSHOT/GetMetaData.java
+++ /dev/null
@@ -1,5 +0,0 @@
-package world.bentobox.boxed.nms.v1_21_1_R0_1_SNAPSHOT;
-
-public class GetMetaData extends world.bentobox.boxed.nms.v1_21_R0_1_SNAPSHOT.GetMetaData {
- // Identical to 1.21
-}
\ No newline at end of file
diff --git a/src/main/java/world/bentobox/boxed/nms/v1_21_3_R0_1_SNAPSHOT/GetMetaData.java b/src/main/java/world/bentobox/boxed/nms/v1_21_3_R0_1_SNAPSHOT/GetMetaData.java
deleted file mode 100644
index c0df15e..0000000
--- a/src/main/java/world/bentobox/boxed/nms/v1_21_3_R0_1_SNAPSHOT/GetMetaData.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package world.bentobox.boxed.nms.v1_21_3_R0_1_SNAPSHOT;
-
-import org.bukkit.Location;
-import org.bukkit.block.Block;
-import org.bukkit.craftbukkit.v1_21_R2.CraftWorld;
-
-import net.minecraft.core.BlockPosition;
-import net.minecraft.world.level.block.entity.TileEntity;
-import world.bentobox.boxed.nms.AbstractMetaData;
-
-public class GetMetaData extends AbstractMetaData {
-
- @Override
- public String nmsData(Block block) {
- Location w = block.getLocation();
- CraftWorld cw = (CraftWorld) w.getWorld(); // CraftWorld is NMS one
- // for 1.13+ (we have use WorldServer)
- TileEntity te = cw.getHandle().c_(new BlockPosition(w.getBlockX(), w.getBlockY(), w.getBlockZ()));
- return getData(te, "getUpdatePacket", "tag");
- }
-
-}
\ No newline at end of file
diff --git a/src/main/java/world/bentobox/boxed/nms/v1_21_4_R0_1_SNAPSHOT/GetMetaData.java b/src/main/java/world/bentobox/boxed/nms/v1_21_4_R0_1_SNAPSHOT/GetMetaData.java
deleted file mode 100644
index e6cbf37..0000000
--- a/src/main/java/world/bentobox/boxed/nms/v1_21_4_R0_1_SNAPSHOT/GetMetaData.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package world.bentobox.boxed.nms.v1_21_4_R0_1_SNAPSHOT;
-
-import org.bukkit.Location;
-import org.bukkit.block.Block;
-import org.bukkit.craftbukkit.v1_21_R3.CraftWorld;
-
-import net.minecraft.core.BlockPosition;
-import net.minecraft.world.level.block.entity.TileEntity;
-import world.bentobox.boxed.nms.AbstractMetaData;
-
-public class GetMetaData extends AbstractMetaData {
-
- @Override
- public String nmsData(Block block) {
- Location w = block.getLocation();
- CraftWorld cw = (CraftWorld) w.getWorld(); // CraftWorld is NMS one
- // for 1.13+ (we have use WorldServer)
- TileEntity te = cw.getHandle().c_(new BlockPosition(w.getBlockX(), w.getBlockY(), w.getBlockZ()));
- return getData(te, "getUpdatePacket", "tag");
- }
-
-}
\ No newline at end of file
diff --git a/src/main/java/world/bentobox/boxed/nms/v1_21_5_R0_1_SNAPSHOT/GetMetaData.java b/src/main/java/world/bentobox/boxed/nms/v1_21_5_R0_1_SNAPSHOT/GetMetaData.java
deleted file mode 100644
index b90a2cb..0000000
--- a/src/main/java/world/bentobox/boxed/nms/v1_21_5_R0_1_SNAPSHOT/GetMetaData.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package world.bentobox.boxed.nms.v1_21_5_R0_1_SNAPSHOT;
-
-import org.bukkit.Location;
-import org.bukkit.block.Block;
-import org.bukkit.craftbukkit.v1_21_R4.CraftWorld;
-
-import net.minecraft.core.BlockPosition;
-import net.minecraft.world.level.block.entity.TileEntity;
-import world.bentobox.boxed.nms.AbstractMetaData;
-
-public class GetMetaData extends AbstractMetaData {
-
- @Override
- public String nmsData(Block block) {
- Location w = block.getLocation();
- CraftWorld cw = (CraftWorld) w.getWorld(); // CraftWorld is NMS one
- // for 1.13+ (we have use WorldServer)
- TileEntity te = cw.getHandle().c_(new BlockPosition(w.getBlockX(), w.getBlockY(), w.getBlockZ()));
- return getData(te, "getUpdatePacket", "tag");
- }
-
-}
\ No newline at end of file
diff --git a/src/main/java/world/bentobox/boxed/nms/v1_21_6_R0_1_SNAPSHOT/GetMetaData.java b/src/main/java/world/bentobox/boxed/nms/v1_21_6_R0_1_SNAPSHOT/GetMetaData.java
deleted file mode 100644
index d7e836e..0000000
--- a/src/main/java/world/bentobox/boxed/nms/v1_21_6_R0_1_SNAPSHOT/GetMetaData.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package world.bentobox.boxed.nms.v1_21_6_R0_1_SNAPSHOT;
-
-import org.bukkit.Location;
-import org.bukkit.block.Block;
-import org.bukkit.craftbukkit.v1_21_R5.CraftWorld;
-
-import net.minecraft.core.BlockPosition;
-import net.minecraft.world.level.block.entity.TileEntity;
-import world.bentobox.boxed.nms.AbstractMetaData;
-
-public class GetMetaData extends AbstractMetaData {
-
- @Override
- public String nmsData(Block block) {
- Location w = block.getLocation();
- CraftWorld cw = (CraftWorld) w.getWorld(); // CraftWorld is NMS one
- // for 1.13+ (we have use WorldServer)
- TileEntity te = cw.getHandle().c_(new BlockPosition(w.getBlockX(), w.getBlockY(), w.getBlockZ()));
- return getData(te, "getUpdatePacket", "tag");
- }
-
-}
\ No newline at end of file
diff --git a/src/main/java/world/bentobox/boxed/nms/v1_21_7_R0_1_SNAPSHOT/GetMetaData.java b/src/main/java/world/bentobox/boxed/nms/v1_21_7_R0_1_SNAPSHOT/GetMetaData.java
deleted file mode 100644
index e268b34..0000000
--- a/src/main/java/world/bentobox/boxed/nms/v1_21_7_R0_1_SNAPSHOT/GetMetaData.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package world.bentobox.boxed.nms.v1_21_7_R0_1_SNAPSHOT;
-
-import org.bukkit.Location;
-import org.bukkit.block.Block;
-import org.bukkit.craftbukkit.v1_21_R5.CraftWorld;
-
-import net.minecraft.core.BlockPosition;
-import net.minecraft.world.level.block.entity.TileEntity;
-import world.bentobox.boxed.nms.AbstractMetaData;
-
-public class GetMetaData extends AbstractMetaData {
-
- @Override
- public String nmsData(Block block) {
- Location w = block.getLocation();
- CraftWorld cw = (CraftWorld) w.getWorld(); // CraftWorld is NMS one
- // for 1.13+ (we have use WorldServer)
- TileEntity te = cw.getHandle().c_(new BlockPosition(w.getBlockX(), w.getBlockY(), w.getBlockZ()));
- return getData(te, "getUpdatePacket", "tag");
- }
-
-}
\ No newline at end of file
diff --git a/src/main/java/world/bentobox/boxed/nms/v1_21_8_R0_1_SNAPSHOT/GetMetaData.java b/src/main/java/world/bentobox/boxed/nms/v1_21_8_R0_1_SNAPSHOT/GetMetaData.java
deleted file mode 100644
index 0c8f3ff..0000000
--- a/src/main/java/world/bentobox/boxed/nms/v1_21_8_R0_1_SNAPSHOT/GetMetaData.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package world.bentobox.boxed.nms.v1_21_8_R0_1_SNAPSHOT;
-
-import org.bukkit.Location;
-import org.bukkit.block.Block;
-import org.bukkit.craftbukkit.v1_21_R5.CraftWorld;
-
-import net.minecraft.core.BlockPosition;
-import net.minecraft.world.level.block.entity.TileEntity;
-import world.bentobox.boxed.nms.AbstractMetaData;
-
-public class GetMetaData extends AbstractMetaData {
-
- @Override
- public String nmsData(Block block) {
- Location w = block.getLocation();
- CraftWorld cw = (CraftWorld) w.getWorld(); // CraftWorld is NMS one
- // for 1.13+ (we have use WorldServer)
- TileEntity te = cw.getHandle().c_(new BlockPosition(w.getBlockX(), w.getBlockY(), w.getBlockZ()));
- return getData(te, "getUpdatePacket", "tag");
- }
-
-}
\ No newline at end of file
diff --git a/src/main/java/world/bentobox/boxed/nms/v1_21_R0_1_SNAPSHOT/GetMetaData.java b/src/main/java/world/bentobox/boxed/nms/v1_21_R0_1_SNAPSHOT/GetMetaData.java
deleted file mode 100644
index 36be817..0000000
--- a/src/main/java/world/bentobox/boxed/nms/v1_21_R0_1_SNAPSHOT/GetMetaData.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package world.bentobox.boxed.nms.v1_21_R0_1_SNAPSHOT;
-
-import org.bukkit.Location;
-import org.bukkit.block.Block;
-import org.bukkit.craftbukkit.v1_21_R1.CraftWorld;
-
-import net.minecraft.core.BlockPosition;
-import net.minecraft.world.level.block.entity.TileEntity;
-import world.bentobox.boxed.nms.AbstractMetaData;
-
-public class GetMetaData extends AbstractMetaData {
-
- @Override
- public String nmsData(Block block) {
- Location w = block.getLocation();
- CraftWorld cw = (CraftWorld) w.getWorld(); // CraftWorld is NMS one
- // for 1.13+ (we have use WorldServer)
- TileEntity te = cw.getHandle().c_(new BlockPosition(w.getBlockX(), w.getBlockY(), w.getBlockZ()));
-
- return getData(te, "az_", "tag");
- }
-
-}
\ No newline at end of file
diff --git a/src/main/resources/addon.yml b/src/main/resources/addon.yml
index 6c57f2a..982cc33 100755
--- a/src/main/resources/addon.yml
+++ b/src/main/resources/addon.yml
@@ -1,7 +1,7 @@
name: Boxed
main: world.bentobox.boxed.Boxed
version: ${version}${build.number}
-api-version: 3.3.3
+api-version: 3.9.0
metrics: true
icon: "COMPOSTER"
repository: "BentoBoxWorld/Boxed"