From b617a82ca1822898abea1721cd8c2503788d4011 Mon Sep 17 00:00:00 2001 From: Burbulinis Date: Sat, 25 Jan 2025 18:50:27 +0200 Subject: [PATCH 1/5] Add a LootTable serializer --- .../bukkit/loottables/LootTableModule.java | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/src/main/java/org/skriptlang/skript/bukkit/loottables/LootTableModule.java b/src/main/java/org/skriptlang/skript/bukkit/loottables/LootTableModule.java index 25770b763cf..4d792237b31 100644 --- a/src/main/java/org/skriptlang/skript/bukkit/loottables/LootTableModule.java +++ b/src/main/java/org/skriptlang/skript/bukkit/loottables/LootTableModule.java @@ -3,11 +3,13 @@ import ch.njol.skript.Skript; import ch.njol.skript.classes.ClassInfo; import ch.njol.skript.classes.Parser; +import ch.njol.skript.classes.Serializer; import ch.njol.skript.expressions.base.EventValueExpression; import ch.njol.skript.lang.ParseContext; import ch.njol.skript.lang.util.SimpleEvent; import ch.njol.skript.registrations.Classes; import ch.njol.skript.registrations.EventValues; +import ch.njol.yggdrasil.Fields; import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.NamespacedKey; @@ -18,6 +20,7 @@ import org.jetbrains.annotations.Nullable; import java.io.IOException; +import java.io.StreamCorruptedException; public class LootTableModule { @@ -53,6 +56,37 @@ public String toVariableNameString(LootTable o) { return "loot table:" + o.getKey(); } }) + .serializer(new Serializer<>() { + @Override + public Fields serialize(LootTable lootTable) { + Fields fields = new Fields(); + fields.putObject("key", lootTable.getKey()); + return fields; + } + + @Override + public void deserialize(LootTable lootTable, Fields fields) { + assert false; + } + + @Override + protected LootTable deserialize(Fields fields) throws StreamCorruptedException { + NamespacedKey key = fields.getAndRemoveObject("key", NamespacedKey.class); + if (key == null) + throw new IllegalArgumentException(); + return Bukkit.getLootTable(key); + } + + @Override + public boolean mustSyncDeserialization() { + return false; + } + + @Override + protected boolean canBeInstantiated() { + return false; + } + }) ); Classes.registerClass(new ClassInfo<>(LootContext.class, "lootcontext") From ce7735f51f4a3dd2f108fc9a9cbd7d8f5e3c21eb Mon Sep 17 00:00:00 2001 From: Burbulinis Date: Sat, 25 Jan 2025 23:23:26 +0200 Subject: [PATCH 2/5] Replace NamespacedKey with String when serializing and use StreamCorruptedException --- .../skript/bukkit/loottables/LootTableModule.java | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/skriptlang/skript/bukkit/loottables/LootTableModule.java b/src/main/java/org/skriptlang/skript/bukkit/loottables/LootTableModule.java index 4d792237b31..ac94028109f 100644 --- a/src/main/java/org/skriptlang/skript/bukkit/loottables/LootTableModule.java +++ b/src/main/java/org/skriptlang/skript/bukkit/loottables/LootTableModule.java @@ -21,6 +21,7 @@ import java.io.IOException; import java.io.StreamCorruptedException; +import java.util.UUID; public class LootTableModule { @@ -60,7 +61,7 @@ public String toVariableNameString(LootTable o) { @Override public Fields serialize(LootTable lootTable) { Fields fields = new Fields(); - fields.putObject("key", lootTable.getKey()); + fields.putObject("key", lootTable.getKey().toString()); return fields; } @@ -71,10 +72,15 @@ public void deserialize(LootTable lootTable, Fields fields) { @Override protected LootTable deserialize(Fields fields) throws StreamCorruptedException { - NamespacedKey key = fields.getAndRemoveObject("key", NamespacedKey.class); + String key = fields.getAndRemoveObject("key", String.class); if (key == null) - throw new IllegalArgumentException(); - return Bukkit.getLootTable(key); + throw new StreamCorruptedException(); + + NamespacedKey namespacedKey = NamespacedKey.fromString(key); + if (namespacedKey == null) + throw new StreamCorruptedException(); + + return Bukkit.getLootTable(namespacedKey); } @Override From 1757edbdd9cffae2d5bf4fcba66cf950caa7fa07 Mon Sep 17 00:00:00 2001 From: Burbulinis Date: Sat, 25 Jan 2025 23:26:01 +0200 Subject: [PATCH 3/5] Optimize imports --- .../skriptlang/skript/bukkit/loottables/LootTableModule.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/skriptlang/skript/bukkit/loottables/LootTableModule.java b/src/main/java/org/skriptlang/skript/bukkit/loottables/LootTableModule.java index ac94028109f..122fab50bf9 100644 --- a/src/main/java/org/skriptlang/skript/bukkit/loottables/LootTableModule.java +++ b/src/main/java/org/skriptlang/skript/bukkit/loottables/LootTableModule.java @@ -21,9 +21,9 @@ import java.io.IOException; import java.io.StreamCorruptedException; -import java.util.UUID; -public class LootTableModule { +public class +LootTableModule { public static void load() throws IOException { From f4e65dc2ca0cdbf6bba7d704ccf05287543783f8 Mon Sep 17 00:00:00 2001 From: Burbulinis Date: Wed, 29 Jan 2025 18:44:34 +0200 Subject: [PATCH 4/5] Return true in the mustSyncDeserialization method --- .../skriptlang/skript/bukkit/loottables/LootTableModule.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/skriptlang/skript/bukkit/loottables/LootTableModule.java b/src/main/java/org/skriptlang/skript/bukkit/loottables/LootTableModule.java index 122fab50bf9..a2a55f1eb16 100644 --- a/src/main/java/org/skriptlang/skript/bukkit/loottables/LootTableModule.java +++ b/src/main/java/org/skriptlang/skript/bukkit/loottables/LootTableModule.java @@ -85,7 +85,7 @@ protected LootTable deserialize(Fields fields) throws StreamCorruptedException { @Override public boolean mustSyncDeserialization() { - return false; + return true; } @Override From 7d7e8bae54d094835d4b49e874921b32004a6eb4 Mon Sep 17 00:00:00 2001 From: Patrick Miller Date: Sat, 1 Feb 2025 13:56:42 -0500 Subject: [PATCH 5/5] Fix class declaration split --- .../skriptlang/skript/bukkit/loottables/LootTableModule.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/org/skriptlang/skript/bukkit/loottables/LootTableModule.java b/src/main/java/org/skriptlang/skript/bukkit/loottables/LootTableModule.java index a2a55f1eb16..a11fdb1a16d 100644 --- a/src/main/java/org/skriptlang/skript/bukkit/loottables/LootTableModule.java +++ b/src/main/java/org/skriptlang/skript/bukkit/loottables/LootTableModule.java @@ -22,8 +22,7 @@ import java.io.IOException; import java.io.StreamCorruptedException; -public class -LootTableModule { +public class LootTableModule { public static void load() throws IOException {