aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorshedaniel <daniel@shedaniel.me>2023-09-30 01:28:28 +0800
committershedaniel <daniel@shedaniel.me>2023-09-30 01:29:31 +0800
commit7ca7269f61154d87ac6c152ee9c863c1f039b174 (patch)
tree146d65bbb1bc990715d975f21bac63d81d59e1eb
parent6cc29c0b2cce285f34e5b48852560fbfe2c66424 (diff)
downloadRoughlyEnoughItems-7ca7269f61154d87ac6c152ee9c863c1f039b174.tar.gz
RoughlyEnoughItems-7ca7269f61154d87ac6c152ee9c863c1f039b174.tar.bz2
RoughlyEnoughItems-7ca7269f61154d87ac6c152ee9c863c1f039b174.zip
Fix #1492
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsNetwork.java11
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/transfer/SimpleTransferHandlerImpl.java8
2 files changed, 13 insertions, 6 deletions
diff --git a/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsNetwork.java b/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsNetwork.java
index 5e8e49475..f76efdd65 100644
--- a/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsNetwork.java
+++ b/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsNetwork.java
@@ -172,7 +172,9 @@ public class RoughlyEnoughItemsNetwork {
boolean shift = packetByteBuf.readBoolean();
try {
CompoundTag nbt = packetByteBuf.readAnySizeNbt();
- List<InputIngredient<ItemStack>> inputs = readInputs(nbt.getCompound("Inputs"));
+ int version = nbt.getInt("Version");
+ if (version != 1) throw new IllegalStateException("Server and client REI protocol version mismatch! Server: 1, Client: " + version);
+ List<InputIngredient<ItemStack>> inputs = readInputs(nbt.getList("Inputs", Tag.TAG_COMPOUND));
List<SlotAccessor> input = readSlots(container, player, nbt.getList("InputSlots", Tag.TAG_COMPOUND));
List<SlotAccessor> inventory = readSlots(container, player, nbt.getList("InventorySlots", Tag.TAG_COMPOUND));
NewInputSlotCrafter<AbstractContainerMenu, Container> crafter = new NewInputSlotCrafter<>(container, input, inventory, inputs);
@@ -201,10 +203,11 @@ public class RoughlyEnoughItemsNetwork {
return slots;
}
- private static List<InputIngredient<ItemStack>> readInputs(CompoundTag tag) {
+ private static List<InputIngredient<ItemStack>> readInputs(ListTag tag) {
List<InputIngredient<ItemStack>> inputs = new ArrayList<>();
- for (Map.Entry<String, Tag> entry : tag.tags.entrySet()) {
- InputIngredient<EntryStack<?>> stacks = InputIngredient.of(Integer.parseInt(entry.getKey()), EntryIngredient.read((ListTag) entry.getValue()));
+ for (Tag t : tag) {
+ CompoundTag compoundTag = (CompoundTag) t;
+ InputIngredient<EntryStack<?>> stacks = InputIngredient.of(compoundTag.getInt("Index"), EntryIngredient.read(compoundTag.getList("Ingredient", Tag.TAG_COMPOUND)));
inputs.add(InputIngredient.withType(stacks, VanillaEntryTypes.ITEM));
}
return inputs;
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/transfer/SimpleTransferHandlerImpl.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/transfer/SimpleTransferHandlerImpl.java
index ef7d59c79..893562fbe 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/client/transfer/SimpleTransferHandlerImpl.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/transfer/SimpleTransferHandlerImpl.java
@@ -94,6 +94,7 @@ public enum SimpleTransferHandlerImpl implements ClientInternals.SimpleTransferH
private CompoundTag save(TransferHandler.Context context, List<InputIngredient<ItemStack>> inputs, Iterable<SlotAccessor> inputSlots, Iterable<SlotAccessor> inventorySlots) {
CompoundTag tag = new CompoundTag();
+ tag.putInt("Version", 1);
tag.put("Inputs", saveInputs(inputs));
tag.put("InventorySlots", saveSlots(context,inventorySlots));
tag.put("InputSlots", saveSlots(context, inputSlots));
@@ -111,10 +112,13 @@ public enum SimpleTransferHandlerImpl implements ClientInternals.SimpleTransferH
}
private Tag saveInputs(List<InputIngredient<ItemStack>> inputs) {
- CompoundTag tag = new CompoundTag();
+ ListTag tag = new ListTag();
for (InputIngredient<ItemStack> input : inputs) {
- tag.put(String.valueOf(input.getIndex()), EntryIngredients.ofItemStacks(input.get()).saveIngredient());
+ CompoundTag innerTag = new CompoundTag();
+ innerTag.put("Ingredient", EntryIngredients.ofItemStacks(input.get()).saveIngredient());
+ innerTag.putInt("Index", input.getIndex());
+ tag.add(innerTag);
}
return tag;