diff --git a/src/main/java/ch/njol/skript/classes/registry/RegistrySerializer.java b/src/main/java/ch/njol/skript/classes/registry/RegistrySerializer.java index 2c0796e4218..33f6645fe52 100644 --- a/src/main/java/ch/njol/skript/classes/registry/RegistrySerializer.java +++ b/src/main/java/ch/njol/skript/classes/registry/RegistrySerializer.java @@ -43,27 +43,27 @@ public RegistrySerializer(Registry registry) { @Override public @NotNull Fields serialize(R o) { Fields fields = new Fields(); - fields.putPrimitive("name", o.getKey().toString()); + fields.putObject("name", o.getKey().toString()); return fields; } @Override - protected R deserialize(Fields fields) { - try { - String name = fields.getAndRemovePrimitive("name", String.class); - NamespacedKey namespacedKey; - if (!name.contains(":")) { - // Old variables - namespacedKey = NamespacedKey.minecraft(name); - } else { - namespacedKey = NamespacedKey.fromString(name); - } - if (namespacedKey == null) - return null; - return registry.get(namespacedKey); - } catch (StreamCorruptedException e) { - return null; + protected R deserialize(Fields fields) throws StreamCorruptedException { + String name = fields.getAndRemoveObject("name", String.class); + assert name != null; + NamespacedKey namespacedKey; + if (!name.contains(":")) { + // Old variables + namespacedKey = NamespacedKey.minecraft(name); + } else { + namespacedKey = NamespacedKey.fromString(name); } + if (namespacedKey == null) + throw new StreamCorruptedException("Invalid namespacedkey: " + name); + R object = registry.get(namespacedKey); + if (object == null) + throw new StreamCorruptedException("Invalid object from registry: " + namespacedKey); + return object; } @Override diff --git a/src/test/skript/tests/misc/registry.sk b/src/test/skript/tests/misc/registry.sk new file mode 100644 index 00000000000..20293d1089a --- /dev/null +++ b/src/test/skript/tests/misc/registry.sk @@ -0,0 +1,10 @@ +test "registry" when minecraft version is "1.14": + + # Test namespaced keys + assert curse of vanishing = minecraft:vanishing_curse with "'curse of vanishing' enchant should match namespace key" + + # Test serialization + set {test::enchantment} to minecraft:sharpness + assert {test::enchantment} = sharpness with "variable should have been set to sharpness enchantment" + +