diff --git a/pom.xml b/pom.xml index 772fa0b..61338fd 100644 --- a/pom.xml +++ b/pom.xml @@ -55,6 +55,7 @@ <powermock.version>2.0.9</powermock.version> <!-- More visible way how to change dependency versions --> <spigot.version>1.21.3-R0.1-SNAPSHOT</spigot.version> + <paper.version>1.21.3-R0.1-SNAPSHOT</paper.version> <bentobox.version>2.7.1-SNAPSHOT</bentobox.version> <!-- Revision variable removes warning about dynamic version --> <revision>${build.version}-SNAPSHOT</revision> @@ -111,6 +112,10 @@ </profiles> <repositories> + <repository> + <id>papermc</id> + <url>https://repo.papermc.io/repository/maven-public/</url> + </repository> <repository> <id>spigot-repo</id> <url>https://hub.spigotmc.org/nexus/content/repositories/snapshots</url> @@ -139,6 +144,20 @@ </repositories> <dependencies> + <!-- Paper API --> + <dependency> + <groupId>io.papermc.paper</groupId> + <artifactId>paper-api</artifactId> + <version>${paper.version}</version> + <scope>provided</scope> + </dependency> + <!-- PaperLib --> + <dependency> + <groupId>io.papermc</groupId> + <artifactId>paperlib</artifactId> + <version>1.0.6</version> + <scope>compile</scope> + </dependency> <!-- Spigot API --> <dependency> <groupId>org.spigotmc</groupId> @@ -172,14 +191,7 @@ <scope>provided</scope> </dependency> <!-- Spigot NMS. Used for chunk deletion and pasting. --> - - <dependency> - <groupId>org.spigotmc....</groupId> - <artifactId>spigot</artifactId> - <version>1.20.6-R0.1-SNAPSHOT</version> - <scope>provided</scope> - </dependency> - <dependency> + <dependency> <groupId>org.spigotmc</groupId> <artifactId>spigot</artifactId> <version>${spigot.version}</version> @@ -191,24 +203,6 @@ <version>1.21.1-R0.1-SNAPSHOT</version> <scope>provided</scope> </dependency> - <dependency> - <groupId>org.spigotmc.</groupId> - <artifactId>spigot</artifactId> - <version>1.20.4-R0.1-SNAPSHOT</version> - <scope>provided</scope> - </dependency> - <dependency> - <groupId>org.spigotmc..</groupId> - <artifactId>spigot</artifactId> - <version>1.20.2-R0.1-SNAPSHOT</version> - <scope>provided</scope> - </dependency> - <dependency> - <groupId>org.spigotmc...</groupId> - <artifactId>spigot</artifactId> - <version>1.20.1-R0.1-SNAPSHOT</version> - <scope>provided</scope> - </dependency> </dependencies> <build> @@ -318,10 +312,17 @@ </argLine> </configuration> </plugin> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-jar-plugin</artifactId> - <version>3.1.0</version> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-jar-plugin</artifactId> + <version>3.4.1</version> + <configuration> + <archive> + <manifestEntries> + <paperweight-mappings-namespace>spigot</paperweight-mappings-namespace> + </manifestEntries> + </archive> + </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> diff --git a/src/main/java/world/bentobox/boxed/AdvancementsManager.java b/src/main/java/world/bentobox/boxed/AdvancementsManager.java index d8adc0f..b9d2960 100644 --- a/src/main/java/world/bentobox/boxed/AdvancementsManager.java +++ b/src/main/java/world/bentobox/boxed/AdvancementsManager.java @@ -250,9 +250,11 @@ public class AdvancementsManager { } if (advConfig.getBoolean("settings.automatic-scoring")) { if (!a.getKey().getKey().contains("recipes") && a.getDisplay() != null) { - float x = a.getDisplay().getX(); - float y = a.getDisplay().getY(); - return (int) Math.round(Math.sqrt(x * x + y * y)); + int score = 1; + while (a.getParent() != null) { + score++; + } + return score; } else { return 0; } diff --git a/src/main/java/world/bentobox/boxed/listeners/NewAreaListener.java b/src/main/java/world/bentobox/boxed/listeners/NewAreaListener.java index 9a99a49..28f9675 100644 --- a/src/main/java/world/bentobox/boxed/listeners/NewAreaListener.java +++ b/src/main/java/world/bentobox/boxed/listeners/NewAreaListener.java @@ -396,8 +396,7 @@ public class NewAreaListener implements Listener { Location location = new Location(world, x, y, z); //BentoBox.getInstance().logDebug("Structure " + name + " will be placed at " + location); readyToBuild.computeIfAbsent(new Pair<>(x >> 4, z >> 4), k -> new ArrayList<>()) - .add(new StructureRecord(name, "minecraft:" + name, location, - rotation, mirror, noMobs)); + .add(new StructureRecord(name, "minecraft:" + name, location, rotation, mirror, noMobs)); this.itemsToBuild .add(new StructureRecord(name, "minecraft:" + name, location, rotation, mirror, noMobs)); } else { @@ -508,16 +507,21 @@ public class NewAreaListener implements Listener { } private static void processJigsaw(Block b, StructureRotation structureRotation, boolean pasteMobs) { - String data = nmsData(b); - if (data.isEmpty()) { - return; - } - BoxedJigsawBlock bjb = gson.fromJson(data, BoxedJigsawBlock.class); - String finalState = correctDirection(bjb.getFinal_state(), structureRotation); - BlockData bd = Bukkit.createBlockData(finalState); - b.setBlockData(bd); - if (!bjb.getPool().equalsIgnoreCase("minecraft:empty") && pasteMobs) { - spawnMob(b, bjb); + try { + String data = nmsData(b); + if (data.isEmpty()) { + return; + } + BoxedJigsawBlock bjb = gson.fromJson(data, BoxedJigsawBlock.class); + String finalState = correctDirection(bjb.getFinal_state(), structureRotation); + BlockData bd = Bukkit.createBlockData(finalState); + b.setBlockData(bd); + if (!bjb.getPool().equalsIgnoreCase("minecraft:empty") && pasteMobs) { + spawnMob(b, bjb); + } + } catch (Exception e) { + BentoBox.getInstance().logDebug("We have an error"); + e.printStackTrace(); } } diff --git a/src/main/java/world/bentobox/boxed/nms/AbstractMetaData.java b/src/main/java/world/bentobox/boxed/nms/AbstractMetaData.java index 94f7576..5657ff9 100644 --- a/src/main/java/world/bentobox/boxed/nms/AbstractMetaData.java +++ b/src/main/java/world/bentobox/boxed/nms/AbstractMetaData.java @@ -8,15 +8,20 @@ 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) { + /* + for (Method m : te.getClass().getMethods()) { + BentoBox.getInstance().logDebug(m.getName() + " returns " + m.getReturnType() + " and has these parameters " + + m.getParameterTypes()); + } + te.getUpdateTag(); + */ try { // Check if the method 'j' exists Method updatePacketMethod = te.getClass().getDeclaredMethod(method); @@ -30,7 +35,7 @@ public abstract class AbstractMetaData { 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( diff --git a/src/main/java/world/bentobox/boxed/nms/v1_20_4_R0_1_SNAPSHOT/GetMetaData.java b/src/main/java/world/bentobox/boxed/nms/v1_20_4_R0_1_SNAPSHOT/GetMetaData.java deleted file mode 100644 index 639598a..0000000 --- a/src/main/java/world/bentobox/boxed/nms/v1_20_4_R0_1_SNAPSHOT/GetMetaData.java +++ /dev/null @@ -1,21 +0,0 @@ -package world.bentobox.boxed.nms.v1_20_4_R0_1_SNAPSHOT; - -import org.bukkit.Location; -import org.bukkit.block.Block; -import org.bukkit.craftbukkit.v1_20_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 - TileEntity te = cw.getHandle().c_(new BlockPosition(w.getBlockX(), w.getBlockY(), w.getBlockZ())); - - return getData(te, "j", "c"); - } -} \ No newline at end of file diff --git a/src/main/java/world/bentobox/boxed/nms/v1_20_6_R0_1_SNAPSHOT/GetMetaData.java b/src/main/java/world/bentobox/boxed/nms/v1_20_6_R0_1_SNAPSHOT/GetMetaData.java deleted file mode 100644 index 2855074..0000000 --- a/src/main/java/world/bentobox/boxed/nms/v1_20_6_R0_1_SNAPSHOT/GetMetaData.java +++ /dev/null @@ -1,20 +0,0 @@ -package world.bentobox.boxed.nms.v1_20_6_R0_1_SNAPSHOT; - -import org.bukkit.Location; -import org.bukkit.block.Block; -import org.bukkit.craftbukkit.v1_20_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 - TileEntity te = cw.getHandle().c_(new BlockPosition(w.getBlockX(), w.getBlockY(), w.getBlockZ())); - return getData(te, "au_", "tag"); - } -} \ 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 index 0cf1131..c0df15e 100644 --- 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 @@ -1,5 +1,22 @@ package world.bentobox.boxed.nms.v1_21_3_R0_1_SNAPSHOT; -public class GetMetaData extends world.bentobox.boxed.nms.v1_21_R0_1_SNAPSHOT.GetMetaData { - // Identical to 1.21 +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