Skip to content

Commit a8188bd

Browse files
committed
Simplify stream codec for qio item viewer sync
1 parent 9e9840e commit a8188bd

File tree

1 file changed

+12
-11
lines changed

1 file changed

+12
-11
lines changed

src/main/java/mekanism/common/network/to_client/qio/PacketQIOItemViewerGuiSync.java

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,11 @@
33
import com.mojang.datafixers.util.Function3;
44
import it.unimi.dsi.fastutil.objects.Object2LongMap;
55
import it.unimi.dsi.fastutil.objects.Object2LongOpenHashMap;
6+
import java.util.Optional;
7+
import mekanism.common.lib.inventory.HashedItem;
68
import mekanism.common.lib.inventory.HashedItem.UUIDAwareHashedItem;
79
import mekanism.common.network.IMekanismPacket;
8-
import mekanism.common.network.PacketUtils;
9-
import net.minecraft.network.FriendlyByteBuf;
10+
import net.minecraft.core.UUIDUtil;
1011
import net.minecraft.network.RegistryFriendlyByteBuf;
1112
import net.minecraft.network.codec.ByteBufCodecs;
1213
import net.minecraft.network.codec.StreamCodec;
@@ -17,20 +18,20 @@
1718
// we can also send a smaller packet to each client until they disconnect and then we clear what packets they know
1819
public abstract class PacketQIOItemViewerGuiSync implements IMekanismPacket {
1920

21+
private static final StreamCodec<RegistryFriendlyByteBuf, Object2LongMap<UUIDAwareHashedItem>> ITEM_MAP_CODEC = ByteBufCodecs.map(Object2LongOpenHashMap::new,
22+
StreamCodec.composite(
23+
ItemStack.STREAM_CODEC, HashedItem::getInternalStack,
24+
ByteBufCodecs.optional(UUIDUtil.STREAM_CODEC), item -> Optional.ofNullable(item.getUUID()),
25+
(stack, uuid) -> new UUIDAwareHashedItem(stack, uuid.orElse(null))
26+
), ByteBufCodecs.VAR_LONG
27+
);
28+
2029
protected static <PKT extends PacketQIOItemViewerGuiSync> StreamCodec<RegistryFriendlyByteBuf, PKT> streamCodec(
2130
Function3<Long, Integer, Object2LongMap<UUIDAwareHashedItem>, PKT> constructor) {
2231
return StreamCodec.composite(
2332
ByteBufCodecs.VAR_LONG, pkt -> pkt.countCapacity,
2433
ByteBufCodecs.VAR_INT, pkt -> pkt.typeCapacity,
25-
StreamCodec.of(
26-
(buffer, itemMap) -> buffer.writeMap(itemMap, (buf, item) -> {
27-
ItemStack.STREAM_CODEC.encode(buffer, item.getInternalStack());
28-
//Shouldn't be null unless something failed, but if it does try to handle it relatively gracefully
29-
buf.writeNullable(item.getUUID(), (b, u) -> b.writeUUID(u));
30-
}, FriendlyByteBuf::writeVarLong),
31-
buffer -> buffer.readMap(Object2LongOpenHashMap::new, buf -> new UUIDAwareHashedItem(ItemStack.STREAM_CODEC.decode(buffer),
32-
buf.readNullable(b -> b.readUUID())), FriendlyByteBuf::readVarLong)
33-
), pkt -> pkt.itemMap,
34+
ITEM_MAP_CODEC, pkt -> pkt.itemMap,
3435
constructor
3536
);
3637
}

0 commit comments

Comments
 (0)