From 09f76a42866106c775984b9951346fd0a0e85880 Mon Sep 17 00:00:00 2001 From: Sollace Date: Wed, 12 Jan 2022 14:26:00 +0200 Subject: [PATCH] Fixed disconnect when joining a multiplayer server --- .../magic/spell/crafting/TraitIngredient.java | 14 +++----------- .../ability/magic/spell/trait/SpellTraits.java | 6 ++++++ 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/minelittlepony/unicopia/ability/magic/spell/crafting/TraitIngredient.java b/src/main/java/com/minelittlepony/unicopia/ability/magic/spell/crafting/TraitIngredient.java index 49793dd5..ebdec176 100644 --- a/src/main/java/com/minelittlepony/unicopia/ability/magic/spell/crafting/TraitIngredient.java +++ b/src/main/java/com/minelittlepony/unicopia/ability/magic/spell/crafting/TraitIngredient.java @@ -22,20 +22,12 @@ public record TraitIngredient ( } public void write(PacketByteBuf buf) { - min.ifPresentOrElse(m -> { - buf.writeBoolean(true); - m.write(buf); - }, () -> buf.writeBoolean(false)); - max.ifPresentOrElse(m -> { - buf.writeBoolean(true); - m.write(buf); - }, () -> buf.writeBoolean(false)); + buf.writeOptional(min, (b, m) -> m.write(b)); + buf.writeOptional(max, (b, m) -> m.write(b)); } public static TraitIngredient fromPacket(PacketByteBuf buf) { - Optional min = Optional.empty(); - Optional max = Optional.empty(); - return new TraitIngredient(min, max); + return new TraitIngredient(SpellTraits.fromPacket(buf), SpellTraits.fromPacket(buf)); } public static TraitIngredient fromJson(JsonObject json) { diff --git a/src/main/java/com/minelittlepony/unicopia/ability/magic/spell/trait/SpellTraits.java b/src/main/java/com/minelittlepony/unicopia/ability/magic/spell/trait/SpellTraits.java index 2f66b215..f75b1943 100644 --- a/src/main/java/com/minelittlepony/unicopia/ability/magic/spell/trait/SpellTraits.java +++ b/src/main/java/com/minelittlepony/unicopia/ability/magic/spell/trait/SpellTraits.java @@ -216,6 +216,12 @@ public final class SpellTraits implements Iterable> { } public static Optional fromPacket(PacketByteBuf buf) { + + boolean present = buf.readBoolean(); + if (!present) { + return Optional.empty(); + } + Map entries = new HashMap<>(); int count = buf.readInt(); if (count <= 0) {