diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/BukkitNetworkManager.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/BukkitNetworkManager.java index d7ab1e78e..003eb9301 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/BukkitNetworkManager.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/BukkitNetworkManager.java @@ -67,7 +67,7 @@ import net.momirealms.craftengine.core.item.behavior.ItemBehavior; import net.momirealms.craftengine.core.item.context.UseOnContext; import net.momirealms.craftengine.core.item.recipe.network.legacy.LegacyRecipeHolder; import net.momirealms.craftengine.core.item.recipe.network.modern.RecipeBookEntry; -import net.momirealms.craftengine.core.item.recipe.network.modern.SingleInputDisplay; +import net.momirealms.craftengine.core.item.recipe.network.modern.SingleInputButtonDisplay; import net.momirealms.craftengine.core.item.recipe.network.modern.display.RecipeDisplay; import net.momirealms.craftengine.core.item.trade.MerchantOffer; import net.momirealms.craftengine.core.pack.host.ResourcePackDownloadData; @@ -3123,8 +3123,8 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes FriendlyByteBuf::readKey, b -> b.readCollection(ArrayList::new, FriendlyByteBuf::readVarInt) ); - List> displays = buf.readCollection(ArrayList::new, b -> { - SingleInputDisplay display = SingleInputDisplay.read(b, __ -> itemManager.wrap(FastNMS.INSTANCE.method$FriendlyByteBuf$readItem(friendlyBuf))); + List> displays = buf.readCollection(ArrayList::new, b -> { + SingleInputButtonDisplay display = SingleInputButtonDisplay.read(b, __ -> itemManager.wrap(FastNMS.INSTANCE.method$FriendlyByteBuf$readItem(friendlyBuf))); display.applyClientboundData(item -> { Optional> remapped = itemManager.s2c(item, player); if (remapped.isEmpty()) { diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/modern/SingleInputButtonDisplay.java b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/modern/SingleInputButtonDisplay.java new file mode 100644 index 000000000..930c01714 --- /dev/null +++ b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/modern/SingleInputButtonDisplay.java @@ -0,0 +1,28 @@ +package net.momirealms.craftengine.core.item.recipe.network.modern; + +import com.mojang.datafixers.util.Either; +import net.momirealms.craftengine.core.item.Item; +import net.momirealms.craftengine.core.item.recipe.network.modern.display.slot.SlotDisplay; +import net.momirealms.craftengine.core.util.FriendlyByteBuf; +import net.momirealms.craftengine.core.util.Key; + +import java.util.List; +import java.util.function.Function; + +public record SingleInputButtonDisplay(Either, Key> ingredients, SlotDisplay display) { + + public static SingleInputButtonDisplay read(FriendlyByteBuf buf, FriendlyByteBuf.Reader> reader) { + Either, Key> ingredients = buf.readHolderSet(); + SlotDisplay slotDisplay = SlotDisplay.read(buf, reader); + return new SingleInputButtonDisplay<>(ingredients, slotDisplay); + } + + public void write(FriendlyByteBuf buf, FriendlyByteBuf.Writer> writer) { + buf.writeHolderSet(this.ingredients); + this.display.write(buf, writer); + } + + public void applyClientboundData(Function, Item> function) { + this.display.applyClientboundData(function); + } +} diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/modern/SingleInputDisplay.java b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/modern/SingleInputDisplay.java deleted file mode 100644 index dfa719d5f..000000000 --- a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/modern/SingleInputDisplay.java +++ /dev/null @@ -1,28 +0,0 @@ -package net.momirealms.craftengine.core.item.recipe.network.modern; - -import net.momirealms.craftengine.core.item.Item; -import net.momirealms.craftengine.core.item.recipe.network.modern.display.slot.SlotDisplay; -import net.momirealms.craftengine.core.util.FriendlyByteBuf; - -import java.util.ArrayList; -import java.util.List; -import java.util.Optional; -import java.util.function.Function; - -public record SingleInputDisplay(List ingredients, Optional> display) { - - public static SingleInputDisplay read(FriendlyByteBuf buf, FriendlyByteBuf.Reader> reader) { - List ingredients = buf.readCollection(ArrayList::new, FriendlyByteBuf::readVarInt); - Optional> slotDisplay = buf.readOptional(b -> SlotDisplay.read(b, reader)); - return new SingleInputDisplay<>(ingredients, slotDisplay); - } - - public void write(FriendlyByteBuf buf, FriendlyByteBuf.Writer> writer) { - buf.writeCollection(this.ingredients, FriendlyByteBuf::writeVarInt); - buf.writeOptional(this.display, (b, d) -> d.write(buf, writer)); - } - - public void applyClientboundData(Function, Item> function) { - this.display.ifPresent(i -> i.applyClientboundData(function)); - } -}