diff options
author | Aaron <51387595+AzureAaron@users.noreply.github.com> | 2023-10-17 18:14:57 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-10-17 18:14:57 -0400 |
commit | 7c572db73914cbdbfbd5e38325a8c09a27935e33 (patch) | |
tree | 9a5c5de0261bf8e65abb51ecf0cd7249ea67aeec /src | |
parent | 150c9e4fed1973cf4eb14d8f10323a129266e602 (diff) | |
parent | 61b3fbd28b64cb103caaf19305e12164a80d6a40 (diff) | |
download | Skyblocker-7c572db73914cbdbfbd5e38325a8c09a27935e33.tar.gz Skyblocker-7c572db73914cbdbfbd5e38325a8c09a27935e33.tar.bz2 Skyblocker-7c572db73914cbdbfbd5e38325a8c09a27935e33.zip |
Merge pull request #367 from AzureAaron/codec-tests
Codec-based Test
Diffstat (limited to 'src')
-rw-r--r-- | src/main/java/de/hysky/skyblocker/skyblock/item/CustomArmorTrims.java | 8 | ||||
-rw-r--r-- | src/test/java/de/hysky/skyblocker/skyblock/item/ArmorTrimIdSerializationTest.java | 19 |
2 files changed, 20 insertions, 7 deletions
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/item/CustomArmorTrims.java b/src/main/java/de/hysky/skyblocker/skyblock/item/CustomArmorTrims.java index 9242d47b..ff9e13c9 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/item/CustomArmorTrims.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/item/CustomArmorTrims.java @@ -3,6 +3,9 @@ package de.hysky.skyblocker.skyblock.item; import com.mojang.brigadier.Command; import com.mojang.brigadier.CommandDispatcher; import com.mojang.brigadier.suggestion.SuggestionProvider; +import com.mojang.serialization.Codec; +import com.mojang.serialization.codecs.RecordCodecBuilder; + import de.hysky.skyblocker.config.SkyblockerConfigManager; import de.hysky.skyblocker.events.SkyblockEvents; import de.hysky.skyblocker.utils.ItemUtils; @@ -137,6 +140,11 @@ public class CustomArmorTrims { } public record ArmorTrimId(@SerialEntry Identifier material, @SerialEntry Identifier pattern) implements Pair<Identifier, Identifier> { + public static final Codec<ArmorTrimId> CODEC = RecordCodecBuilder.create(instance -> instance.group( + Identifier.CODEC.fieldOf("material").forGetter(ArmorTrimId::material), + Identifier.CODEC.fieldOf("pattern").forGetter(ArmorTrimId::pattern)) + .apply(instance, ArmorTrimId::new)); + @Override public Identifier left() { return material(); diff --git a/src/test/java/de/hysky/skyblocker/skyblock/item/ArmorTrimIdSerializationTest.java b/src/test/java/de/hysky/skyblocker/skyblock/item/ArmorTrimIdSerializationTest.java index 36b65cae..2709aba4 100644 --- a/src/test/java/de/hysky/skyblocker/skyblock/item/ArmorTrimIdSerializationTest.java +++ b/src/test/java/de/hysky/skyblocker/skyblock/item/ArmorTrimIdSerializationTest.java @@ -1,27 +1,32 @@ package de.hysky.skyblocker.skyblock.item; import com.google.gson.Gson; -import com.google.gson.GsonBuilder; +import com.google.gson.JsonElement; +import com.mojang.serialization.JsonOps; + +import de.hysky.skyblocker.skyblock.item.CustomArmorTrims.ArmorTrimId; import net.minecraft.util.Identifier; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; public class ArmorTrimIdSerializationTest { - private final Gson gson = new GsonBuilder().registerTypeAdapter(Identifier.class, new Identifier.Serializer()).create(); + private final Gson gson = new Gson(); @Test void serialize() { - CustomArmorTrims.ArmorTrimId armorTrimId = new CustomArmorTrims.ArmorTrimId(new Identifier("material_id"), new Identifier("pattern_id")); - String json = gson.toJson(armorTrimId); + ArmorTrimId armorTrimId = new ArmorTrimId(new Identifier("material_id"), new Identifier("pattern_id")); + JsonElement json = ArmorTrimId.CODEC.encodeStart(JsonOps.INSTANCE, armorTrimId).result().orElseThrow(); String expectedJson = "{\"material\":\"minecraft:material_id\",\"pattern\":\"minecraft:pattern_id\"}"; - Assertions.assertEquals(expectedJson, json); + + Assertions.assertEquals(expectedJson, json.toString()); } @Test void deserialize() { String json = "{\"material\":\"minecraft:material_id\",\"pattern\":\"minecraft:pattern_id\"}"; - CustomArmorTrims.ArmorTrimId armorTrimId = gson.fromJson(json, CustomArmorTrims.ArmorTrimId.class); - CustomArmorTrims.ArmorTrimId expectedArmorTrimId = new CustomArmorTrims.ArmorTrimId(new Identifier("material_id"), new Identifier("pattern_id")); + ArmorTrimId armorTrimId = ArmorTrimId.CODEC.parse(JsonOps.INSTANCE, gson.fromJson(json, JsonElement.class)).result().orElseThrow(); + ArmorTrimId expectedArmorTrimId = new ArmorTrimId(new Identifier("material_id"), new Identifier("pattern_id")); + Assertions.assertEquals(expectedArmorTrimId, armorTrimId); } } |