diff --git a/src/main/java/refinedstorage/RSUtils.java b/src/main/java/refinedstorage/RSUtils.java index 812b7eff8..f630e8329 100755 --- a/src/main/java/refinedstorage/RSUtils.java +++ b/src/main/java/refinedstorage/RSUtils.java @@ -1,11 +1,25 @@ package refinedstorage; import io.netty.buffer.ByteBuf; +import net.minecraft.inventory.IInventory; +import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.EnumFacing; +import net.minecraftforge.common.util.Constants; import net.minecraftforge.fluids.FluidRegistry; import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.fluids.capability.CapabilityFluidHandler; +import net.minecraftforge.fluids.capability.IFluidHandler; +import net.minecraftforge.fluids.capability.wrappers.FluidHandlerWrapper; import net.minecraftforge.fml.common.network.ByteBufUtils; +import net.minecraftforge.items.CapabilityItemHandler; +import net.minecraftforge.items.IItemHandler; +import net.minecraftforge.items.wrapper.InvWrapper; +import net.minecraftforge.items.wrapper.SidedInvWrapper; import refinedstorage.api.network.INetworkMaster; import refinedstorage.apiimpl.API; import refinedstorage.apiimpl.storage.fluid.FluidStorageNBT; @@ -14,6 +28,9 @@ import refinedstorage.apiimpl.storage.item.ItemStorageNBT; import java.util.function.Function; public final class RSUtils { + private static final String NBT_INVENTORY = "Inventory_%d"; + private static final String NBT_SLOT = "Slot"; + public static void writeItemStack(ByteBuf buf, INetworkMaster network, ItemStack stack) { buf.writeInt(Item.getIdFromItem(stack.getItem())); buf.writeInt(stack.stackSize); @@ -42,4 +59,108 @@ public final class RSUtils { } } } + + public static void writeItems(IItemHandler handler, int id, NBTTagCompound nbt) { + NBTTagList tagList = new NBTTagList(); + + for (int i = 0; i < handler.getSlots(); i++) { + if (handler.getStackInSlot(i) != null) { + NBTTagCompound compoundTag = new NBTTagCompound(); + + compoundTag.setInteger(NBT_SLOT, i); + + handler.getStackInSlot(i).writeToNBT(compoundTag); + + tagList.appendTag(compoundTag); + } + } + + nbt.setTag(String.format(NBT_INVENTORY, id), tagList); + } + + public static void readItems(IItemHandler handler, int id, NBTTagCompound nbt) { + String name = String.format(NBT_INVENTORY, id); + + if (nbt.hasKey(name)) { + NBTTagList tagList = nbt.getTagList(name, Constants.NBT.TAG_COMPOUND); + + for (int i = 0; i < tagList.tagCount(); i++) { + int slot = tagList.getCompoundTagAt(i).getInteger(NBT_SLOT); + + ItemStack stack = ItemStack.loadItemStackFromNBT(tagList.getCompoundTagAt(i)); + + if (slot >= 0 && slot < handler.getSlots()) { + handler.insertItem(slot, stack, false); + } + } + } + } + + public static void writeItemsLegacy(IInventory inventory, int id, NBTTagCompound nbt) { + NBTTagList tagList = new NBTTagList(); + + for (int i = 0; i < inventory.getSizeInventory(); i++) { + if (inventory.getStackInSlot(i) != null) { + NBTTagCompound compoundTag = new NBTTagCompound(); + + compoundTag.setInteger(NBT_SLOT, i); + + inventory.getStackInSlot(i).writeToNBT(compoundTag); + + tagList.appendTag(compoundTag); + } + } + + nbt.setTag(String.format(NBT_INVENTORY, id), tagList); + } + + public static void readItemsLegacy(IInventory inventory, int id, NBTTagCompound nbt) { + String name = String.format(NBT_INVENTORY, id); + + if (nbt.hasKey(name)) { + NBTTagList tagList = nbt.getTagList(name, Constants.NBT.TAG_COMPOUND); + + for (int i = 0; i < tagList.tagCount(); i++) { + int slot = tagList.getCompoundTagAt(i).getInteger(NBT_SLOT); + + ItemStack stack = ItemStack.loadItemStackFromNBT(tagList.getCompoundTagAt(i)); + + inventory.setInventorySlotContents(slot, stack); + } + } + } + + public static IItemHandler getItemHandler(TileEntity tile, EnumFacing side) { + if (tile == null) { + return null; + } + + IItemHandler handler = tile.hasCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, side) ? tile.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, side) : null; + + if (handler == null) { + if (side != null && tile instanceof ISidedInventory) { + handler = new SidedInvWrapper((ISidedInventory) tile, side); + } else if (tile instanceof IInventory) { + handler = new InvWrapper((IInventory) tile); + } + } + + return handler; + } + + public static IFluidHandler getFluidHandler(TileEntity tile, EnumFacing side) { + if (tile == null) { + return null; + } + + IFluidHandler handler = null; + + if (tile.hasCapability(CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY, side)) { + handler = tile.getCapability(CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY, side); + } else if (tile instanceof net.minecraftforge.fluids.IFluidHandler) { + handler = new FluidHandlerWrapper((net.minecraftforge.fluids.IFluidHandler) tile, side); + } + + return handler; + } } diff --git a/src/main/java/refinedstorage/inventory/ItemHandlerGridFilter.java b/src/main/java/refinedstorage/inventory/ItemHandlerGridFilter.java index 1184700c3..a11842c16 100755 --- a/src/main/java/refinedstorage/inventory/ItemHandlerGridFilter.java +++ b/src/main/java/refinedstorage/inventory/ItemHandlerGridFilter.java @@ -3,7 +3,7 @@ package refinedstorage.inventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraftforge.items.ItemStackHandler; -import refinedstorage.tile.TileBase; +import refinedstorage.RSUtils; public class ItemHandlerGridFilter extends ItemStackHandler { private ItemStack stack; @@ -14,7 +14,7 @@ public class ItemHandlerGridFilter extends ItemStackHandler { this.stack = stack; if (stack.hasTagCompound()) { - TileBase.readItems(this, 0, stack.getTagCompound()); + RSUtils.readItems(this, 0, stack.getTagCompound()); } } @@ -26,7 +26,7 @@ public class ItemHandlerGridFilter extends ItemStackHandler { stack.setTagCompound(new NBTTagCompound()); } - TileBase.writeItems(this, 0, stack.getTagCompound()); + RSUtils.writeItems(this, 0, stack.getTagCompound()); } public ItemStack[] getFilteredItems() { diff --git a/src/main/java/refinedstorage/tile/TileBase.java b/src/main/java/refinedstorage/tile/TileBase.java index f28795b59..c784c5875 100755 --- a/src/main/java/refinedstorage/tile/TileBase.java +++ b/src/main/java/refinedstorage/tile/TileBase.java @@ -1,11 +1,7 @@ package refinedstorage.tile; import net.minecraft.block.state.IBlockState; -import net.minecraft.inventory.IInventory; -import net.minecraft.inventory.ISidedInventory; -import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.nbt.NBTTagList; import net.minecraft.network.NetworkManager; import net.minecraft.network.play.server.SPacketUpdateTileEntity; import net.minecraft.tileentity.TileEntity; @@ -13,14 +9,7 @@ import net.minecraft.util.EnumFacing; import net.minecraft.util.ITickable; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; -import net.minecraftforge.common.util.Constants; -import net.minecraftforge.fluids.capability.CapabilityFluidHandler; -import net.minecraftforge.fluids.capability.IFluidHandler; -import net.minecraftforge.fluids.capability.wrappers.FluidHandlerWrapper; -import net.minecraftforge.items.CapabilityItemHandler; import net.minecraftforge.items.IItemHandler; -import net.minecraftforge.items.wrapper.InvWrapper; -import net.minecraftforge.items.wrapper.SidedInvWrapper; import refinedstorage.tile.data.TileDataManager; import javax.annotation.Nullable; @@ -28,9 +17,6 @@ import javax.annotation.Nullable; public abstract class TileBase extends TileEntity implements ITickable { private static final String NBT_DIRECTION = "Direction"; - private static final String NBT_INVENTORY = "Inventory_%d"; - private static final String NBT_SLOT = "Slot"; - private EnumFacing direction = EnumFacing.NORTH; protected TileDataManager dataManager = new TileDataManager(this); @@ -133,111 +119,6 @@ public abstract class TileBase extends TileEntity implements ITickable { return null; } - public static void writeItems(IItemHandler handler, int id, NBTTagCompound nbt) { - NBTTagList tagList = new NBTTagList(); - - for (int i = 0; i < handler.getSlots(); i++) { - if (handler.getStackInSlot(i) != null) { - NBTTagCompound compoundTag = new NBTTagCompound(); - - compoundTag.setInteger(NBT_SLOT, i); - - handler.getStackInSlot(i).writeToNBT(compoundTag); - - tagList.appendTag(compoundTag); - } - } - - nbt.setTag(String.format(NBT_INVENTORY, id), tagList); - } - - public static void readItems(IItemHandler handler, int id, NBTTagCompound nbt) { - String name = String.format(NBT_INVENTORY, id); - - if (nbt.hasKey(name)) { - NBTTagList tagList = nbt.getTagList(name, Constants.NBT.TAG_COMPOUND); - - for (int i = 0; i < tagList.tagCount(); i++) { - int slot = tagList.getCompoundTagAt(i).getInteger(NBT_SLOT); - - ItemStack stack = ItemStack.loadItemStackFromNBT(tagList.getCompoundTagAt(i)); - - if (slot >= 0 && slot < handler.getSlots()) { - handler.insertItem(slot, stack, false); - } - } - } - } - - public static void writeItemsLegacy(IInventory inventory, int id, NBTTagCompound nbt) { - NBTTagList tagList = new NBTTagList(); - - for (int i = 0; i < inventory.getSizeInventory(); i++) { - if (inventory.getStackInSlot(i) != null) { - NBTTagCompound compoundTag = new NBTTagCompound(); - - compoundTag.setInteger(NBT_SLOT, i); - - inventory.getStackInSlot(i).writeToNBT(compoundTag); - - tagList.appendTag(compoundTag); - } - } - - nbt.setTag(String.format(NBT_INVENTORY, id), tagList); - } - - public static void readItemsLegacy(IInventory inventory, int id, NBTTagCompound nbt) { - String name = String.format(NBT_INVENTORY, id); - - if (nbt.hasKey(name)) { - NBTTagList tagList = nbt.getTagList(name, Constants.NBT.TAG_COMPOUND); - - for (int i = 0; i < tagList.tagCount(); i++) { - int slot = tagList.getCompoundTagAt(i).getInteger(NBT_SLOT); - - ItemStack stack = ItemStack.loadItemStackFromNBT(tagList.getCompoundTagAt(i)); - - inventory.setInventorySlotContents(slot, stack); - } - } - } - - public static IItemHandler getItemHandler(TileEntity tile, EnumFacing side) { - if (tile == null) { - return null; - } - - IItemHandler handler = tile.hasCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, side) ? tile.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, side) : null; - - if (handler == null) { - if (side != null && tile instanceof ISidedInventory) { - handler = new SidedInvWrapper((ISidedInventory) tile, side); - } else if (tile instanceof IInventory) { - handler = new InvWrapper((IInventory) tile); - } - } - - return handler; - } - - @SuppressWarnings("deprecation") - protected IFluidHandler getFluidHandler(TileEntity tile, EnumFacing side) { - if (tile == null) { - return null; - } - - IFluidHandler handler = null; - - if (tile.hasCapability(CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY, side)) { - handler = tile.getCapability(CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY, side); - } else if (tile instanceof net.minecraftforge.fluids.IFluidHandler) { - handler = new FluidHandlerWrapper((net.minecraftforge.fluids.IFluidHandler) tile, side); - } - - return handler; - } - @Override public boolean equals(Object o) { return o instanceof TileBase && ((TileBase) o).getPos().equals(pos) && ((TileBase) o).getWorld().provider.getDimension() == worldObj.provider.getDimension(); diff --git a/src/main/java/refinedstorage/tile/TileConstructor.java b/src/main/java/refinedstorage/tile/TileConstructor.java index f5b7915df..e94609599 100755 --- a/src/main/java/refinedstorage/tile/TileConstructor.java +++ b/src/main/java/refinedstorage/tile/TileConstructor.java @@ -16,6 +16,7 @@ import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.items.CapabilityItemHandler; import net.minecraftforge.items.IItemHandler; import refinedstorage.RS; +import refinedstorage.RSUtils; import refinedstorage.api.util.IComparer; import refinedstorage.container.slot.SlotSpecimen; import refinedstorage.inventory.ItemHandlerBasic; @@ -144,9 +145,9 @@ public class TileConstructor extends TileMultipartNode implements IComparable, I type = tag.getInteger(NBT_TYPE); } - readItems(itemFilters, 0, tag); - readItems(upgrades, 1, tag); - readItems(fluidFilters, 2, tag); + RSUtils.readItems(itemFilters, 0, tag); + RSUtils.readItems(upgrades, 1, tag); + RSUtils.readItems(fluidFilters, 2, tag); } @Override @@ -156,9 +157,9 @@ public class TileConstructor extends TileMultipartNode implements IComparable, I tag.setInteger(NBT_COMPARE, compare); tag.setInteger(NBT_TYPE, type); - writeItems(itemFilters, 0, tag); - writeItems(upgrades, 1, tag); - writeItems(fluidFilters, 2, tag); + RSUtils.writeItems(itemFilters, 0, tag); + RSUtils.writeItems(upgrades, 1, tag); + RSUtils.writeItems(fluidFilters, 2, tag); return tag; } diff --git a/src/main/java/refinedstorage/tile/TileCrafter.java b/src/main/java/refinedstorage/tile/TileCrafter.java index 2ad8fffe6..869a5286e 100755 --- a/src/main/java/refinedstorage/tile/TileCrafter.java +++ b/src/main/java/refinedstorage/tile/TileCrafter.java @@ -9,6 +9,7 @@ import net.minecraftforge.items.CapabilityItemHandler; import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.wrapper.CombinedInvWrapper; import refinedstorage.RS; +import refinedstorage.RSUtils; import refinedstorage.api.autocrafting.ICraftingPattern; import refinedstorage.api.autocrafting.ICraftingPatternContainer; import refinedstorage.api.autocrafting.ICraftingPatternProvider; @@ -134,8 +135,8 @@ public class TileCrafter extends TileNode implements ICraftingPatternContainer { triggeredAutocrafting = tag.getBoolean(NBT_TRIGGERED_AUTOCRAFTING); } - readItems(patterns, 0, tag); - readItems(upgrades, 1, tag); + RSUtils.readItems(patterns, 0, tag); + RSUtils.readItems(upgrades, 1, tag); } @Override @@ -144,8 +145,8 @@ public class TileCrafter extends TileNode implements ICraftingPatternContainer { tag.setBoolean(NBT_TRIGGERED_AUTOCRAFTING, triggeredAutocrafting); - writeItems(patterns, 0, tag); - writeItems(upgrades, 1, tag); + RSUtils.writeItems(patterns, 0, tag); + RSUtils.writeItems(upgrades, 1, tag); return tag; } @@ -157,7 +158,7 @@ public class TileCrafter extends TileNode implements ICraftingPatternContainer { @Override public IItemHandler getFacingInventory() { - return getItemHandler(getFacingTile(), getDirection().getOpposite()); + return RSUtils.getItemHandler(getFacingTile(), getDirection().getOpposite()); } @Override diff --git a/src/main/java/refinedstorage/tile/TileDestructor.java b/src/main/java/refinedstorage/tile/TileDestructor.java index 9569247ad..2783a361e 100755 --- a/src/main/java/refinedstorage/tile/TileDestructor.java +++ b/src/main/java/refinedstorage/tile/TileDestructor.java @@ -19,6 +19,7 @@ import net.minecraftforge.fluids.capability.wrappers.FluidBlockWrapper; import net.minecraftforge.items.CapabilityItemHandler; import net.minecraftforge.items.IItemHandler; import refinedstorage.RS; +import refinedstorage.RSUtils; import refinedstorage.api.util.IComparer; import refinedstorage.inventory.ItemHandlerBasic; import refinedstorage.inventory.ItemHandlerFluid; @@ -166,9 +167,9 @@ public class TileDestructor extends TileMultipartNode implements IComparable, IF type = tag.getInteger(NBT_TYPE); } - readItems(itemFilters, 0, tag); - readItems(upgrades, 1, tag); - readItems(fluidFilters, 2, tag); + RSUtils.readItems(itemFilters, 0, tag); + RSUtils.readItems(upgrades, 1, tag); + RSUtils.readItems(fluidFilters, 2, tag); } @Override @@ -179,9 +180,9 @@ public class TileDestructor extends TileMultipartNode implements IComparable, IF tag.setInteger(NBT_MODE, mode); tag.setInteger(NBT_TYPE, type); - writeItems(itemFilters, 0, tag); - writeItems(upgrades, 1, tag); - writeItems(fluidFilters, 2, tag); + RSUtils.writeItems(itemFilters, 0, tag); + RSUtils.writeItems(upgrades, 1, tag); + RSUtils.writeItems(fluidFilters, 2, tag); return tag; } diff --git a/src/main/java/refinedstorage/tile/TileDetector.java b/src/main/java/refinedstorage/tile/TileDetector.java index e7f7288fb..e04e5bdab 100755 --- a/src/main/java/refinedstorage/tile/TileDetector.java +++ b/src/main/java/refinedstorage/tile/TileDetector.java @@ -11,6 +11,7 @@ import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.items.IItemHandler; import refinedstorage.RS; import refinedstorage.RSBlocks; +import refinedstorage.RSUtils; import refinedstorage.api.autocrafting.task.ICraftingTask; import refinedstorage.api.network.INetworkMaster; import refinedstorage.api.util.IComparer; @@ -231,8 +232,8 @@ public class TileDetector extends TileNode implements IComparable, IType { type = tag.getInteger(NBT_TYPE); } - readItems(itemFilters, 0, tag); - readItems(fluidFilters, 1, tag); + RSUtils.readItems(itemFilters, 0, tag); + RSUtils.readItems(fluidFilters, 1, tag); } @Override @@ -244,8 +245,8 @@ public class TileDetector extends TileNode implements IComparable, IType { tag.setInteger(NBT_AMOUNT, amount); tag.setInteger(NBT_TYPE, type); - writeItems(itemFilters, 0, tag); - writeItems(fluidFilters, 1, tag); + RSUtils.writeItems(itemFilters, 0, tag); + RSUtils.writeItems(fluidFilters, 1, tag); return tag; } diff --git a/src/main/java/refinedstorage/tile/TileDiskDrive.java b/src/main/java/refinedstorage/tile/TileDiskDrive.java index 7cefed1ca..77dd45e20 100755 --- a/src/main/java/refinedstorage/tile/TileDiskDrive.java +++ b/src/main/java/refinedstorage/tile/TileDiskDrive.java @@ -216,9 +216,9 @@ public class TileDiskDrive extends TileNode implements IItemStorageProvider, IFl public void read(NBTTagCompound tag) { super.read(tag); - readItems(disks, 0, tag); - readItems(itemFilters, 1, tag); - readItems(fluidFilters, 2, tag); + RSUtils.readItems(disks, 0, tag); + RSUtils.readItems(itemFilters, 1, tag); + RSUtils.readItems(fluidFilters, 2, tag); if (tag.hasKey(NBT_PRIORITY)) { priority = tag.getInteger(NBT_PRIORITY); @@ -251,9 +251,9 @@ public class TileDiskDrive extends TileNode implements IItemStorageProvider, IFl } } - writeItems(disks, 0, tag); - writeItems(itemFilters, 1, tag); - writeItems(fluidFilters, 2, tag); + RSUtils.writeItems(disks, 0, tag); + RSUtils.writeItems(itemFilters, 1, tag); + RSUtils.writeItems(fluidFilters, 2, tag); tag.setInteger(NBT_PRIORITY, priority); tag.setInteger(NBT_COMPARE, compare); diff --git a/src/main/java/refinedstorage/tile/TileDiskManipulator.java b/src/main/java/refinedstorage/tile/TileDiskManipulator.java index e24af68ac..420fe89b7 100755 --- a/src/main/java/refinedstorage/tile/TileDiskManipulator.java +++ b/src/main/java/refinedstorage/tile/TileDiskManipulator.java @@ -456,10 +456,10 @@ public class TileDiskManipulator extends TileNode implements IComparable, IFilte public void read(NBTTagCompound tag) { super.read(tag); - readItems(disks, 0, tag); - readItems(itemFilters, 1, tag); - readItems(fluidFilters, 2, tag); - readItems(upgrades, 3, tag); + RSUtils.readItems(disks, 0, tag); + RSUtils.readItems(itemFilters, 1, tag); + RSUtils.readItems(fluidFilters, 2, tag); + RSUtils.readItems(upgrades, 3, tag); if (tag.hasKey(NBT_COMPARE)) { compare = tag.getInteger(NBT_COMPARE); @@ -482,10 +482,10 @@ public class TileDiskManipulator extends TileNode implements IComparable, IFilte public NBTTagCompound write(NBTTagCompound tag) { super.write(tag); - writeItems(disks, 0, tag); - writeItems(itemFilters, 1, tag); - writeItems(fluidFilters, 2, tag); - writeItems(upgrades, 3, tag); + RSUtils.writeItems(disks, 0, tag); + RSUtils.writeItems(itemFilters, 1, tag); + RSUtils.writeItems(fluidFilters, 2, tag); + RSUtils.writeItems(upgrades, 3, tag); tag.setInteger(NBT_COMPARE, compare); tag.setInteger(NBT_MODE, mode); diff --git a/src/main/java/refinedstorage/tile/TileExporter.java b/src/main/java/refinedstorage/tile/TileExporter.java index 5a5553289..28645b187 100755 --- a/src/main/java/refinedstorage/tile/TileExporter.java +++ b/src/main/java/refinedstorage/tile/TileExporter.java @@ -12,6 +12,7 @@ import net.minecraftforge.items.CapabilityItemHandler; import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.ItemHandlerHelper; import refinedstorage.RS; +import refinedstorage.RSUtils; import refinedstorage.api.util.IComparer; import refinedstorage.inventory.ItemHandlerBasic; import refinedstorage.inventory.ItemHandlerFluid; @@ -57,7 +58,7 @@ public class TileExporter extends TileMultipartNode implements IComparable, ITyp int size = upgrades.hasUpgrade(ItemUpgrade.TYPE_STACK) ? 64 : 1; if (type == IType.ITEMS) { - IItemHandler handler = getItemHandler(getFacingTile(), getDirection().getOpposite()); + IItemHandler handler = RSUtils.getItemHandler(getFacingTile(), getDirection().getOpposite()); if (handler != null) { for (int i = 0; i < itemFilters.getSlots(); ++i) { @@ -79,7 +80,7 @@ public class TileExporter extends TileMultipartNode implements IComparable, ITyp } } } else if (type == IType.FLUIDS) { - IFluidHandler handler = getFluidHandler(getFacingTile(), getDirection().getOpposite()); + IFluidHandler handler = RSUtils.getFluidHandler(getFacingTile(), getDirection().getOpposite()); if (handler != null) { for (FluidStack stack : fluidFilters.getFluids()) { @@ -130,9 +131,9 @@ public class TileExporter extends TileMultipartNode implements IComparable, ITyp type = tag.getInteger(NBT_TYPE); } - readItems(itemFilters, 0, tag); - readItems(upgrades, 1, tag); - readItems(fluidFilters, 2, tag); + RSUtils.readItems(itemFilters, 0, tag); + RSUtils.readItems(upgrades, 1, tag); + RSUtils.readItems(fluidFilters, 2, tag); } @Override @@ -142,9 +143,9 @@ public class TileExporter extends TileMultipartNode implements IComparable, ITyp tag.setInteger(NBT_COMPARE, compare); tag.setInteger(NBT_TYPE, type); - writeItems(itemFilters, 0, tag); - writeItems(upgrades, 1, tag); - writeItems(fluidFilters, 2, tag); + RSUtils.writeItems(itemFilters, 0, tag); + RSUtils.writeItems(upgrades, 1, tag); + RSUtils.writeItems(fluidFilters, 2, tag); return tag; } diff --git a/src/main/java/refinedstorage/tile/TileFluidInterface.java b/src/main/java/refinedstorage/tile/TileFluidInterface.java index 0375bbda2..359383eda 100755 --- a/src/main/java/refinedstorage/tile/TileFluidInterface.java +++ b/src/main/java/refinedstorage/tile/TileFluidInterface.java @@ -9,6 +9,7 @@ import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidTank; import net.minecraftforge.fluids.capability.CapabilityFluidHandler; import refinedstorage.RS; +import refinedstorage.RSUtils; import refinedstorage.api.util.IComparer; import refinedstorage.apiimpl.storage.fluid.FluidUtils; import refinedstorage.inventory.ItemHandlerBasic; @@ -165,9 +166,9 @@ public class TileFluidInterface extends TileNode implements IComparable { public NBTTagCompound write(NBTTagCompound tag) { super.write(tag); - writeItems(upgrades, 0, tag); - writeItems(in, 1, tag); - writeItems(out, 2, tag); + RSUtils.writeItems(upgrades, 0, tag); + RSUtils.writeItems(in, 1, tag); + RSUtils.writeItems(out, 2, tag); tag.setTag(NBT_TANK_IN, tankIn.writeToNBT(new NBTTagCompound())); tag.setTag(NBT_TANK_OUT, tankOut.writeToNBT(new NBTTagCompound())); @@ -181,9 +182,9 @@ public class TileFluidInterface extends TileNode implements IComparable { public void read(NBTTagCompound tag) { super.read(tag); - readItems(upgrades, 0, tag); - readItems(in, 1, tag); - readItems(out, 2, tag); + RSUtils.readItems(upgrades, 0, tag); + RSUtils.readItems(in, 1, tag); + RSUtils.readItems(out, 2, tag); if (tag.hasKey(NBT_TANK_IN)) { tankIn.readFromNBT(tag.getCompoundTag(NBT_TANK_IN)); diff --git a/src/main/java/refinedstorage/tile/TileFluidStorage.java b/src/main/java/refinedstorage/tile/TileFluidStorage.java index b05b5d8ed..8e56b7df7 100755 --- a/src/main/java/refinedstorage/tile/TileFluidStorage.java +++ b/src/main/java/refinedstorage/tile/TileFluidStorage.java @@ -5,6 +5,7 @@ import net.minecraft.network.datasync.DataSerializers; import net.minecraftforge.fluids.FluidStack; import refinedstorage.RS; import refinedstorage.RSBlocks; +import refinedstorage.RSUtils; import refinedstorage.api.network.INetworkMaster; import refinedstorage.api.storage.fluid.IFluidStorage; import refinedstorage.api.storage.fluid.IFluidStorageProvider; @@ -124,7 +125,7 @@ public class TileFluidStorage extends TileNode implements IFluidStorageProvider, public void read(NBTTagCompound tag) { super.read(tag); - readItems(filters, 0, tag); + RSUtils.readItems(filters, 0, tag); if (tag.hasKey(NBT_PRIORITY)) { priority = tag.getInteger(NBT_PRIORITY); @@ -147,7 +148,7 @@ public class TileFluidStorage extends TileNode implements IFluidStorageProvider, public NBTTagCompound write(NBTTagCompound tag) { super.write(tag); - writeItems(filters, 0, tag); + RSUtils.writeItems(filters, 0, tag); tag.setInteger(NBT_PRIORITY, priority); diff --git a/src/main/java/refinedstorage/tile/TileImporter.java b/src/main/java/refinedstorage/tile/TileImporter.java index cf127dc3e..98998ccf2 100755 --- a/src/main/java/refinedstorage/tile/TileImporter.java +++ b/src/main/java/refinedstorage/tile/TileImporter.java @@ -11,6 +11,7 @@ import net.minecraftforge.fluids.capability.IFluidHandler; import net.minecraftforge.items.CapabilityItemHandler; import net.minecraftforge.items.IItemHandler; import refinedstorage.RS; +import refinedstorage.RSUtils; import refinedstorage.api.util.IComparer; import refinedstorage.inventory.ItemHandlerBasic; import refinedstorage.inventory.ItemHandlerFluid; @@ -62,7 +63,7 @@ public class TileImporter extends TileMultipartNode implements IComparable, IFil int size = upgrades.hasUpgrade(ItemUpgrade.TYPE_STACK) ? 64 : 1; if (type == IType.ITEMS) { - IItemHandler handler = getItemHandler(getFacingTile(), getDirection().getOpposite()); + IItemHandler handler = RSUtils.getItemHandler(getFacingTile(), getDirection().getOpposite()); if (getFacingTile() instanceof TileDiskDrive || handler == null) { return; @@ -90,7 +91,7 @@ public class TileImporter extends TileMultipartNode implements IComparable, IFil } } } else if (type == IType.FLUIDS && ticks % upgrades.getSpeed() == 0) { - IFluidHandler handler = getFluidHandler(getFacingTile(), getDirection().getOpposite()); + IFluidHandler handler = RSUtils.getFluidHandler(getFacingTile(), getDirection().getOpposite()); if (handler != null) { FluidStack stack = handler.drain(Fluid.BUCKET_VOLUME, false); @@ -146,9 +147,9 @@ public class TileImporter extends TileMultipartNode implements IComparable, IFil type = tag.getInteger(NBT_TYPE); } - readItems(itemFilters, 0, tag); - readItems(upgrades, 1, tag); - readItems(fluidFilters, 2, tag); + RSUtils.readItems(itemFilters, 0, tag); + RSUtils.readItems(upgrades, 1, tag); + RSUtils.readItems(fluidFilters, 2, tag); } @Override @@ -159,9 +160,9 @@ public class TileImporter extends TileMultipartNode implements IComparable, IFil tag.setInteger(NBT_MODE, mode); tag.setInteger(NBT_TYPE, type); - writeItems(itemFilters, 0, tag); - writeItems(upgrades, 1, tag); - writeItems(fluidFilters, 2, tag); + RSUtils.writeItems(itemFilters, 0, tag); + RSUtils.writeItems(upgrades, 1, tag); + RSUtils.writeItems(fluidFilters, 2, tag); return tag; } diff --git a/src/main/java/refinedstorage/tile/TileInterface.java b/src/main/java/refinedstorage/tile/TileInterface.java index faedbbf74..0c0293dc4 100755 --- a/src/main/java/refinedstorage/tile/TileInterface.java +++ b/src/main/java/refinedstorage/tile/TileInterface.java @@ -8,6 +8,7 @@ import net.minecraftforge.items.CapabilityItemHandler; import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.wrapper.CombinedInvWrapper; import refinedstorage.RS; +import refinedstorage.RSUtils; import refinedstorage.api.util.IComparer; import refinedstorage.inventory.ItemHandlerBasic; import refinedstorage.inventory.ItemHandlerUpgrade; @@ -125,10 +126,10 @@ public class TileInterface extends TileNode implements IComparable { public void read(NBTTagCompound tag) { super.read(tag); - readItems(importItems, 0, tag); - readItems(exportSpecimenItems, 1, tag); - readItems(exportItems, 2, tag); - readItems(upgrades, 3, tag); + RSUtils.readItems(importItems, 0, tag); + RSUtils.readItems(exportSpecimenItems, 1, tag); + RSUtils.readItems(exportItems, 2, tag); + RSUtils.readItems(upgrades, 3, tag); if (tag.hasKey(NBT_COMPARE)) { compare = tag.getInteger(NBT_COMPARE); @@ -139,10 +140,10 @@ public class TileInterface extends TileNode implements IComparable { public NBTTagCompound write(NBTTagCompound tag) { super.write(tag); - writeItems(importItems, 0, tag); - writeItems(exportSpecimenItems, 1, tag); - writeItems(exportItems, 2, tag); - writeItems(upgrades, 3, tag); + RSUtils.writeItems(importItems, 0, tag); + RSUtils.writeItems(exportSpecimenItems, 1, tag); + RSUtils.writeItems(exportItems, 2, tag); + RSUtils.writeItems(upgrades, 3, tag); tag.setInteger(NBT_COMPARE, compare); diff --git a/src/main/java/refinedstorage/tile/TileNetworkTransmitter.java b/src/main/java/refinedstorage/tile/TileNetworkTransmitter.java index 84e8cce76..52090efdf 100755 --- a/src/main/java/refinedstorage/tile/TileNetworkTransmitter.java +++ b/src/main/java/refinedstorage/tile/TileNetworkTransmitter.java @@ -8,6 +8,7 @@ import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.wrapper.CombinedInvWrapper; import refinedstorage.RS; import refinedstorage.RSItems; +import refinedstorage.RSUtils; import refinedstorage.inventory.ItemHandlerBasic; import refinedstorage.inventory.ItemHandlerUpgrade; import refinedstorage.inventory.ItemValidatorBasic; @@ -92,8 +93,8 @@ public class TileNetworkTransmitter extends TileNode { public NBTTagCompound write(NBTTagCompound tag) { super.write(tag); - writeItems(networkCard, 0, tag); - writeItems(upgrades, 1, tag); + RSUtils.writeItems(networkCard, 0, tag); + RSUtils.writeItems(upgrades, 1, tag); return tag; } @@ -102,8 +103,8 @@ public class TileNetworkTransmitter extends TileNode { public void read(NBTTagCompound tag) { super.read(tag); - readItems(networkCard, 0, tag); - readItems(upgrades, 1, tag); + RSUtils.readItems(networkCard, 0, tag); + RSUtils.readItems(upgrades, 1, tag); } @Override diff --git a/src/main/java/refinedstorage/tile/TileProcessingPatternEncoder.java b/src/main/java/refinedstorage/tile/TileProcessingPatternEncoder.java index 5b69bd7d2..f7dfbf17e 100755 --- a/src/main/java/refinedstorage/tile/TileProcessingPatternEncoder.java +++ b/src/main/java/refinedstorage/tile/TileProcessingPatternEncoder.java @@ -8,6 +8,7 @@ import net.minecraftforge.items.CapabilityItemHandler; import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.ItemHandlerHelper; import refinedstorage.RSItems; +import refinedstorage.RSUtils; import refinedstorage.inventory.ItemHandlerBasic; import refinedstorage.inventory.ItemValidatorBasic; import refinedstorage.item.ItemPattern; @@ -20,8 +21,8 @@ public class TileProcessingPatternEncoder extends TileBase { public NBTTagCompound write(NBTTagCompound tag) { super.write(tag); - writeItems(patterns, 0, tag); - writeItems(configuration, 1, tag); + RSUtils.writeItems(patterns, 0, tag); + RSUtils.writeItems(configuration, 1, tag); return tag; } @@ -30,8 +31,8 @@ public class TileProcessingPatternEncoder extends TileBase { public void read(NBTTagCompound tag) { super.read(tag); - readItems(patterns, 0, tag); - readItems(configuration, 1, tag); + RSUtils.readItems(patterns, 0, tag); + RSUtils.readItems(configuration, 1, tag); } public void onCreatePattern() { diff --git a/src/main/java/refinedstorage/tile/TileSolderer.java b/src/main/java/refinedstorage/tile/TileSolderer.java index 470fd34b0..cb8a41836 100755 --- a/src/main/java/refinedstorage/tile/TileSolderer.java +++ b/src/main/java/refinedstorage/tile/TileSolderer.java @@ -9,6 +9,7 @@ import net.minecraftforge.items.CapabilityItemHandler; import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.wrapper.CombinedInvWrapper; import refinedstorage.RS; +import refinedstorage.RSUtils; import refinedstorage.api.network.INetworkMaster; import refinedstorage.api.solderer.ISoldererRecipe; import refinedstorage.apiimpl.API; @@ -152,9 +153,9 @@ public class TileSolderer extends TileNode { public void read(NBTTagCompound tag) { super.read(tag); - readItems(items, 0, tag); - readItems(upgrades, 1, tag); - readItems(result, 2, tag); + RSUtils.readItems(items, 0, tag); + RSUtils.readItems(upgrades, 1, tag); + RSUtils.readItems(result, 2, tag); recipe = API.instance().getSoldererRegistry().getRecipe(items); @@ -171,9 +172,9 @@ public class TileSolderer extends TileNode { public NBTTagCompound write(NBTTagCompound tag) { super.write(tag); - writeItems(items, 0, tag); - writeItems(upgrades, 1, tag); - writeItems(result, 2, tag); + RSUtils.writeItems(items, 0, tag); + RSUtils.writeItems(upgrades, 1, tag); + RSUtils.writeItems(result, 2, tag); tag.setBoolean(NBT_WORKING, working); tag.setInteger(NBT_PROGRESS, progress); diff --git a/src/main/java/refinedstorage/tile/TileStorage.java b/src/main/java/refinedstorage/tile/TileStorage.java index 440cad57e..dcb970e4e 100755 --- a/src/main/java/refinedstorage/tile/TileStorage.java +++ b/src/main/java/refinedstorage/tile/TileStorage.java @@ -6,6 +6,7 @@ import net.minecraft.network.datasync.DataSerializers; import net.minecraftforge.items.ItemHandlerHelper; import refinedstorage.RS; import refinedstorage.RSBlocks; +import refinedstorage.RSUtils; import refinedstorage.api.network.INetworkMaster; import refinedstorage.api.storage.item.IItemStorage; import refinedstorage.api.storage.item.IItemStorageProvider; @@ -136,7 +137,7 @@ public class TileStorage extends TileNode implements IItemStorageProvider, IStor public void read(NBTTagCompound tag) { super.read(tag); - readItems(filters, 0, tag); + RSUtils.readItems(filters, 0, tag); if (tag.hasKey(NBT_PRIORITY)) { priority = tag.getInteger(NBT_PRIORITY); @@ -163,7 +164,7 @@ public class TileStorage extends TileNode implements IItemStorageProvider, IStor public NBTTagCompound write(NBTTagCompound tag) { super.write(tag); - writeItems(filters, 0, tag); + RSUtils.writeItems(filters, 0, tag); tag.setInteger(NBT_PRIORITY, priority); diff --git a/src/main/java/refinedstorage/tile/TileWirelessTransmitter.java b/src/main/java/refinedstorage/tile/TileWirelessTransmitter.java index 1cb2535ad..27ae8dd64 100755 --- a/src/main/java/refinedstorage/tile/TileWirelessTransmitter.java +++ b/src/main/java/refinedstorage/tile/TileWirelessTransmitter.java @@ -8,6 +8,7 @@ import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.items.CapabilityItemHandler; import net.minecraftforge.items.IItemHandler; import refinedstorage.RS; +import refinedstorage.RSUtils; import refinedstorage.api.network.IWirelessTransmitter; import refinedstorage.inventory.ItemHandlerBasic; import refinedstorage.inventory.ItemHandlerUpgrade; @@ -42,14 +43,14 @@ public class TileWirelessTransmitter extends TileNode implements IWirelessTransm public void read(NBTTagCompound tag) { super.read(tag); - readItems(upgrades, 0, tag); + RSUtils.readItems(upgrades, 0, tag); } @Override public NBTTagCompound write(NBTTagCompound tag) { super.write(tag); - writeItems(upgrades, 0, tag); + RSUtils.writeItems(upgrades, 0, tag); return tag; } diff --git a/src/main/java/refinedstorage/tile/externalstorage/TileExternalStorage.java b/src/main/java/refinedstorage/tile/externalstorage/TileExternalStorage.java index 69f51d4c8..f6de1d514 100755 --- a/src/main/java/refinedstorage/tile/externalstorage/TileExternalStorage.java +++ b/src/main/java/refinedstorage/tile/externalstorage/TileExternalStorage.java @@ -11,6 +11,7 @@ import net.minecraftforge.fluids.capability.IFluidTankProperties; import net.minecraftforge.items.IItemHandler; import powercrystals.minefactoryreloaded.api.IDeepStorageUnit; import refinedstorage.RS; +import refinedstorage.RSUtils; import refinedstorage.api.network.INetworkMaster; import refinedstorage.api.storage.fluid.IFluidStorage; import refinedstorage.api.storage.fluid.IFluidStorageProvider; @@ -161,8 +162,8 @@ public class TileExternalStorage extends TileMultipartNode implements IItemStora public void read(NBTTagCompound tag) { super.read(tag); - readItems(itemFilters, 0, tag); - readItems(fluidFilters, 1, tag); + RSUtils.readItems(itemFilters, 0, tag); + RSUtils.readItems(fluidFilters, 1, tag); if (tag.hasKey(NBT_PRIORITY)) { priority = tag.getInteger(NBT_PRIORITY); @@ -185,8 +186,8 @@ public class TileExternalStorage extends TileMultipartNode implements IItemStora public NBTTagCompound write(NBTTagCompound tag) { super.write(tag); - writeItems(itemFilters, 0, tag); - writeItems(fluidFilters, 1, tag); + RSUtils.writeItems(itemFilters, 0, tag); + RSUtils.writeItems(fluidFilters, 1, tag); tag.setInteger(NBT_PRIORITY, priority); tag.setInteger(NBT_COMPARE, compare); @@ -251,13 +252,13 @@ public class TileExternalStorage extends TileMultipartNode implements IItemStora } else if (facing instanceof IDeepStorageUnit) { itemStorages.add(new ItemStorageDSU(this, (IDeepStorageUnit) facing)); } else { - IItemHandler itemHandler = getItemHandler(facing, getDirection().getOpposite()); + IItemHandler itemHandler = RSUtils.getItemHandler(facing, getDirection().getOpposite()); if (itemHandler != null) { itemStorages.add(new ItemStorageItemHandler(this, itemHandler)); } - IFluidHandler fluidHandler = getFluidHandler(facing, getDirection().getOpposite()); + IFluidHandler fluidHandler = RSUtils.getFluidHandler(facing, getDirection().getOpposite()); if (fluidHandler != null) { for (IFluidTankProperties property : fluidHandler.getTankProperties()) { diff --git a/src/main/java/refinedstorage/tile/grid/TileGrid.java b/src/main/java/refinedstorage/tile/grid/TileGrid.java index ff726d668..9f4c5814b 100755 --- a/src/main/java/refinedstorage/tile/grid/TileGrid.java +++ b/src/main/java/refinedstorage/tile/grid/TileGrid.java @@ -16,6 +16,7 @@ import net.minecraftforge.items.wrapper.InvWrapper; import refinedstorage.RS; import refinedstorage.RSBlocks; import refinedstorage.RSItems; +import refinedstorage.RSUtils; import refinedstorage.api.network.grid.IFluidGridHandler; import refinedstorage.api.network.grid.IItemGridHandler; import refinedstorage.apiimpl.API; @@ -441,9 +442,9 @@ public class TileGrid extends TileNode implements IGrid { public void read(NBTTagCompound tag) { super.read(tag); - readItemsLegacy(matrix, 0, tag); - readItems(patterns, 1, tag); - readItems(filter, 2, tag); + RSUtils.readItemsLegacy(matrix, 0, tag); + RSUtils.readItems(patterns, 1, tag); + RSUtils.readItems(filter, 2, tag); if (tag.hasKey(NBT_VIEW_TYPE)) { viewType = tag.getInteger(NBT_VIEW_TYPE); @@ -466,9 +467,9 @@ public class TileGrid extends TileNode implements IGrid { public NBTTagCompound write(NBTTagCompound tag) { super.write(tag); - writeItemsLegacy(matrix, 0, tag); - writeItems(patterns, 1, tag); - writeItems(filter, 2, tag); + RSUtils.writeItemsLegacy(matrix, 0, tag); + RSUtils.writeItems(patterns, 1, tag); + RSUtils.writeItems(filter, 2, tag); tag.setInteger(NBT_VIEW_TYPE, viewType); tag.setInteger(NBT_SORTING_DIRECTION, sortingDirection); diff --git a/src/main/java/refinedstorage/tile/grid/WirelessGrid.java b/src/main/java/refinedstorage/tile/grid/WirelessGrid.java index a3ae9cbdd..debc30453 100755 --- a/src/main/java/refinedstorage/tile/grid/WirelessGrid.java +++ b/src/main/java/refinedstorage/tile/grid/WirelessGrid.java @@ -10,6 +10,7 @@ import net.minecraftforge.common.DimensionManager; import net.minecraftforge.fml.common.FMLCommonHandler; import net.minecraftforge.fml.relauncher.Side; import refinedstorage.RS; +import refinedstorage.RSUtils; import refinedstorage.api.network.grid.IFluidGridHandler; import refinedstorage.api.network.grid.IItemGridHandler; import refinedstorage.block.EnumGridType; @@ -19,7 +20,6 @@ import refinedstorage.inventory.ItemHandlerBasic; import refinedstorage.inventory.ItemHandlerGridFilterInGrid; import refinedstorage.item.ItemWirelessGrid; import refinedstorage.network.MessageWirelessGridSettingsUpdate; -import refinedstorage.tile.TileBase; import refinedstorage.tile.TileController; import refinedstorage.tile.data.TileDataParameter; @@ -48,7 +48,7 @@ public class WirelessGrid implements IGrid { stack.setTagCompound(new NBTTagCompound()); } - TileBase.writeItems(this, slot, stack.getTagCompound()); + RSUtils.writeItems(this, slot, stack.getTagCompound()); } } }; @@ -66,7 +66,7 @@ public class WirelessGrid implements IGrid { if (stack.hasTagCompound()) { for (int i = 0; i < 4; ++i) { - TileBase.readItems(filter, i, stack.getTagCompound()); + RSUtils.readItems(filter, i, stack.getTagCompound()); } } }