This commit is contained in:
Raoul Van den Berge
2016-07-18 23:49:00 +02:00
parent 8b72e4bd17
commit a4ea1d86c8
4 changed files with 25 additions and 26 deletions

View File

@@ -1,9 +1,7 @@
package refinedstorage; package refinedstorage;
import io.netty.buffer.ByteBuf;
import net.minecraft.inventory.IInventory; import net.minecraft.inventory.IInventory;
import net.minecraft.inventory.ISidedInventory; import net.minecraft.inventory.ISidedInventory;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagIntArray; import net.minecraft.nbt.NBTTagIntArray;
@@ -14,7 +12,6 @@ import net.minecraft.util.EnumHand;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.common.util.Constants; import net.minecraftforge.common.util.Constants;
import net.minecraftforge.fml.common.network.ByteBufUtils;
import net.minecraftforge.items.CapabilityItemHandler; import net.minecraftforge.items.CapabilityItemHandler;
import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.IItemHandler;
import net.minecraftforge.items.wrapper.InvWrapper; import net.minecraftforge.items.wrapper.InvWrapper;
@@ -24,7 +21,6 @@ import org.apache.commons.lang3.ArrayUtils;
import refinedstorage.api.autocrafting.ICraftingPattern; import refinedstorage.api.autocrafting.ICraftingPattern;
import refinedstorage.api.network.INetworkMaster; import refinedstorage.api.network.INetworkMaster;
import refinedstorage.api.storage.CompareFlags; import refinedstorage.api.storage.CompareFlags;
import refinedstorage.apiimpl.storage.ClientStack;
import refinedstorage.item.ItemUpgrade; import refinedstorage.item.ItemUpgrade;
import java.util.HashSet; import java.util.HashSet;
@@ -346,22 +342,6 @@ public final class RefinedStorageUtils {
return RefinedStorageUtils.getPattern(network, stack) != null; return RefinedStorageUtils.getPattern(network, stack) != null;
} }
public static void writeClientStack(ByteBuf buf, INetworkMaster network, ItemStack stack) {
buf.writeInt(Item.getIdFromItem(stack.getItem()));
buf.writeInt(stack.stackSize);
buf.writeInt(stack.getItemDamage());
ByteBufUtils.writeTag(buf, stack.getTagCompound());
buf.writeInt(getItemStackHashCode(stack));
buf.writeBoolean(RefinedStorageUtils.hasPattern(network, stack));
}
public static ClientStack readClientStack(ByteBuf buf) {
ItemStack stack = new ItemStack(Item.getItemById(buf.readInt()), buf.readInt(), buf.readInt());
stack.setTagCompound(ByteBufUtils.readTag(buf));
return new ClientStack(buf.readInt(), stack, buf.readBoolean());
}
public static int getItemStackHashCode(ItemStack stack) { public static int getItemStackHashCode(ItemStack stack) {
return stack.getItem().hashCode() * (stack.getItemDamage() + 1) * (stack.hasTagCompound() ? stack.getTagCompound().hashCode() : 1); return stack.getItem().hashCode() * (stack.getItemDamage() + 1) * (stack.hasTagCompound() ? stack.getTagCompound().hashCode() : 1);
} }

View File

@@ -1,6 +1,11 @@
package refinedstorage.apiimpl.storage; package refinedstorage.apiimpl.storage;
import io.netty.buffer.ByteBuf;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraftforge.fml.common.network.ByteBufUtils;
import refinedstorage.RefinedStorageUtils;
import refinedstorage.api.network.INetworkMaster;
public class ClientStack { public class ClientStack {
private int id; private int id;
@@ -13,6 +18,13 @@ public class ClientStack {
this.craftable = craftable; this.craftable = craftable;
} }
public ClientStack(ByteBuf buf) {
stack = new ItemStack(Item.getItemById(buf.readInt()), buf.readInt(), buf.readInt());
stack.setTagCompound(ByteBufUtils.readTag(buf));
id = buf.readInt();
craftable = buf.readBoolean();
}
public int getId() { public int getId() {
return id; return id;
} }
@@ -29,4 +41,13 @@ public class ClientStack {
public boolean equals(Object obj) { public boolean equals(Object obj) {
return obj instanceof ClientStack && ((ClientStack) obj).getId() == id; return obj instanceof ClientStack && ((ClientStack) obj).getId() == id;
} }
public static void write(ByteBuf buf, INetworkMaster network, ItemStack stack) {
buf.writeInt(Item.getIdFromItem(stack.getItem()));
buf.writeInt(stack.stackSize);
buf.writeInt(stack.getItemDamage());
ByteBufUtils.writeTag(buf, stack.getTagCompound());
buf.writeInt(RefinedStorageUtils.getItemStackHashCode(stack));
buf.writeBoolean(RefinedStorageUtils.hasPattern(network, stack));
}
} }

View File

@@ -6,7 +6,6 @@ import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler; import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler;
import net.minecraftforge.fml.common.network.simpleimpl.MessageContext; import net.minecraftforge.fml.common.network.simpleimpl.MessageContext;
import refinedstorage.RefinedStorage; import refinedstorage.RefinedStorage;
import refinedstorage.RefinedStorageUtils;
import refinedstorage.api.network.INetworkMaster; import refinedstorage.api.network.INetworkMaster;
import refinedstorage.apiimpl.storage.ClientStack; import refinedstorage.apiimpl.storage.ClientStack;
@@ -28,13 +27,13 @@ public class MessageGridDelta implements IMessage, IMessageHandler<MessageGridDe
@Override @Override
public void fromBytes(ByteBuf buf) { public void fromBytes(ByteBuf buf) {
clientStack = RefinedStorageUtils.readClientStack(buf); clientStack = new ClientStack(buf);
delta = buf.readInt(); delta = buf.readInt();
} }
@Override @Override
public void toBytes(ByteBuf buf) { public void toBytes(ByteBuf buf) {
RefinedStorageUtils.writeClientStack(buf, network, stack); ClientStack.write(buf, network, stack);
buf.writeInt(delta); buf.writeInt(delta);
} }

View File

@@ -6,7 +6,6 @@ import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler; import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler;
import net.minecraftforge.fml.common.network.simpleimpl.MessageContext; import net.minecraftforge.fml.common.network.simpleimpl.MessageContext;
import refinedstorage.RefinedStorage; import refinedstorage.RefinedStorage;
import refinedstorage.RefinedStorageUtils;
import refinedstorage.api.network.INetworkMaster; import refinedstorage.api.network.INetworkMaster;
import refinedstorage.apiimpl.storage.ClientStack; import refinedstorage.apiimpl.storage.ClientStack;
@@ -29,7 +28,7 @@ public class MessageGridUpdate implements IMessage, IMessageHandler<MessageGridU
int items = buf.readInt(); int items = buf.readInt();
for (int i = 0; i < items; ++i) { for (int i = 0; i < items; ++i) {
this.items.add(RefinedStorageUtils.readClientStack(buf)); this.items.add(new ClientStack(buf));
} }
} }
@@ -38,7 +37,7 @@ public class MessageGridUpdate implements IMessage, IMessageHandler<MessageGridU
buf.writeInt(network.getStorage().getStacks().size()); buf.writeInt(network.getStorage().getStacks().size());
for (ItemStack stack : network.getStorage().getStacks()) { for (ItemStack stack : network.getStorage().getStacks()) {
RefinedStorageUtils.writeClientStack(buf, network, stack); ClientStack.write(buf, network, stack);
} }
} }