From f3d8cf5b1c121b87c7249a3b95997ac2fcd8deb8 Mon Sep 17 00:00:00 2001 From: Raoul Van den Berge Date: Mon, 6 Jun 2016 22:41:45 +0200 Subject: [PATCH] Abstract stuff into stuff --- .../block/BlockExternalStorage.java | 2 +- .../network/MessagePriorityUpdate.java | 2 +- .../refinedstorage/proxy/CommonProxy.java | 1 + .../tile/externalstorage/ExternalStorage.java | 7 ++ .../externalstorage/ItemHandlerStorage.java | 79 +++++++++++++ .../TileExternalStorage.java | 110 ++++-------------- 6 files changed, 113 insertions(+), 88 deletions(-) create mode 100755 src/main/java/refinedstorage/tile/externalstorage/ExternalStorage.java create mode 100755 src/main/java/refinedstorage/tile/externalstorage/ItemHandlerStorage.java rename src/main/java/refinedstorage/tile/{ => externalstorage}/TileExternalStorage.java (63%) diff --git a/src/main/java/refinedstorage/block/BlockExternalStorage.java b/src/main/java/refinedstorage/block/BlockExternalStorage.java index ba4a8fb83..904df49d9 100755 --- a/src/main/java/refinedstorage/block/BlockExternalStorage.java +++ b/src/main/java/refinedstorage/block/BlockExternalStorage.java @@ -10,7 +10,7 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import refinedstorage.RefinedStorage; import refinedstorage.RefinedStorageGui; -import refinedstorage.tile.TileExternalStorage; +import refinedstorage.tile.externalstorage.TileExternalStorage; public class BlockExternalStorage extends BlockMachine { public BlockExternalStorage() { diff --git a/src/main/java/refinedstorage/network/MessagePriorityUpdate.java b/src/main/java/refinedstorage/network/MessagePriorityUpdate.java index d3b66c873..6d981a6b3 100755 --- a/src/main/java/refinedstorage/network/MessagePriorityUpdate.java +++ b/src/main/java/refinedstorage/network/MessagePriorityUpdate.java @@ -6,8 +6,8 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.math.BlockPos; import net.minecraftforge.fml.common.network.simpleimpl.IMessage; import refinedstorage.tile.TileDiskDrive; -import refinedstorage.tile.TileExternalStorage; import refinedstorage.tile.TileStorage; +import refinedstorage.tile.externalstorage.TileExternalStorage; public class MessagePriorityUpdate extends MessageHandlerPlayerToServer implements IMessage { private int x; diff --git a/src/main/java/refinedstorage/proxy/CommonProxy.java b/src/main/java/refinedstorage/proxy/CommonProxy.java index 99af6b731..d68b8154e 100755 --- a/src/main/java/refinedstorage/proxy/CommonProxy.java +++ b/src/main/java/refinedstorage/proxy/CommonProxy.java @@ -32,6 +32,7 @@ import refinedstorage.solderer.SoldererRecipeStorage; import refinedstorage.solderer.SoldererRecipeUpgrade; import refinedstorage.tile.*; import refinedstorage.tile.controller.TileController; +import refinedstorage.tile.externalstorage.TileExternalStorage; import refinedstorage.tile.grid.TileGrid; import static refinedstorage.RefinedStorage.ID; diff --git a/src/main/java/refinedstorage/tile/externalstorage/ExternalStorage.java b/src/main/java/refinedstorage/tile/externalstorage/ExternalStorage.java new file mode 100755 index 000000000..2baeed82e --- /dev/null +++ b/src/main/java/refinedstorage/tile/externalstorage/ExternalStorage.java @@ -0,0 +1,7 @@ +package refinedstorage.tile.externalstorage; + +import refinedstorage.api.storage.IStorage; + +public abstract class ExternalStorage implements IStorage { + public abstract int getCapacity(); +} diff --git a/src/main/java/refinedstorage/tile/externalstorage/ItemHandlerStorage.java b/src/main/java/refinedstorage/tile/externalstorage/ItemHandlerStorage.java new file mode 100755 index 000000000..a6c24e82e --- /dev/null +++ b/src/main/java/refinedstorage/tile/externalstorage/ItemHandlerStorage.java @@ -0,0 +1,79 @@ +package refinedstorage.tile.externalstorage; + +import net.minecraft.item.ItemStack; +import net.minecraftforge.items.IItemHandler; +import net.minecraftforge.items.ItemHandlerHelper; +import refinedstorage.RefinedStorageUtils; +import refinedstorage.tile.config.ModeFilter; + +import java.util.List; + +public class ItemHandlerStorage extends ExternalStorage { + private TileExternalStorage externalStorage; + private IItemHandler handler; + + public ItemHandlerStorage(TileExternalStorage externalStorage, IItemHandler handler) { + this.externalStorage = externalStorage; + this.handler = handler; + } + + @Override + public int getCapacity() { + return handler.getSlots() * 64; + } + + @Override + public void addItems(List items) { + for (int i = 0; i < handler.getSlots(); ++i) { + if (handler.getStackInSlot(i) != null && handler.getStackInSlot(i).getItem() != null) { + items.add(handler.getStackInSlot(i).copy()); + } + } + } + + @Override + public ItemStack push(ItemStack stack, boolean simulate) { + if (ModeFilter.respectsMode(externalStorage.getFilters(), externalStorage, externalStorage.getCompare(), stack)) { + return ItemHandlerHelper.insertItem(handler, stack, simulate); + } + + return stack; + } + + @Override + public ItemStack take(ItemStack stack, int size, int flags) { + for (int i = 0; i < handler.getSlots(); ++i) { + ItemStack slot = handler.getStackInSlot(i); + + if (slot != null && RefinedStorageUtils.compareStack(slot, stack, flags)) { + size = Math.min(size, slot.stackSize); + + ItemStack took = ItemHandlerHelper.copyStackWithSize(slot, size); + + handler.extractItem(i, size, false); + + return took; + } + } + + return null; + } + + @Override + public int getStored() { + int size = 0; + + for (int i = 0; i < handler.getSlots(); ++i) { + if (handler.getStackInSlot(i) != null) { + size += handler.getStackInSlot(i).stackSize; + } + } + + return size; + } + + @Override + public int getPriority() { + return externalStorage.getPriority(); + } +} diff --git a/src/main/java/refinedstorage/tile/TileExternalStorage.java b/src/main/java/refinedstorage/tile/externalstorage/TileExternalStorage.java similarity index 63% rename from src/main/java/refinedstorage/tile/TileExternalStorage.java rename to src/main/java/refinedstorage/tile/externalstorage/TileExternalStorage.java index 94765bcc5..4057b9551 100755 --- a/src/main/java/refinedstorage/tile/TileExternalStorage.java +++ b/src/main/java/refinedstorage/tile/externalstorage/TileExternalStorage.java @@ -1,13 +1,11 @@ -package refinedstorage.tile; +package refinedstorage.tile.externalstorage; import io.netty.buffer.ByteBuf; import net.minecraft.inventory.Container; -import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.EnumFacing; import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.items.IItemHandler; -import net.minecraftforge.items.ItemHandlerHelper; import refinedstorage.RefinedStorage; import refinedstorage.RefinedStorageUtils; import refinedstorage.api.RefinedStorageCapabilities; @@ -16,11 +14,16 @@ import refinedstorage.api.storage.IStorageProvider; import refinedstorage.container.ContainerStorage; import refinedstorage.inventory.BasicItemHandler; import refinedstorage.network.MessagePriorityUpdate; -import refinedstorage.tile.config.*; +import refinedstorage.tile.IStorageGui; +import refinedstorage.tile.TileMachine; +import refinedstorage.tile.config.ICompareConfig; +import refinedstorage.tile.config.IModeConfig; +import refinedstorage.tile.config.IRedstoneModeConfig; +import refinedstorage.tile.config.ModeConstants; import java.util.List; -public class TileExternalStorage extends TileMachine implements IStorageProvider, IStorage, IStorageGui, ICompareConfig, IModeConfig { +public class TileExternalStorage extends TileMachine implements IStorageProvider, IStorageGui, ICompareConfig, IModeConfig { public static final String NBT_PRIORITY = "Priority"; public static final String NBT_COMPARE = "Compare"; public static final String NBT_MODE = "Mode"; @@ -31,7 +34,10 @@ public class TileExternalStorage extends TileMachine implements IStorageProvider private int compare = 0; private int mode = ModeConstants.WHITELIST; - private int stored = 0; + private ExternalStorage storage; + + private int stored; + private int capacity; @Override public int getEnergyUsage() { @@ -40,69 +46,22 @@ public class TileExternalStorage extends TileMachine implements IStorageProvider @Override public void updateMachine() { - } + IItemHandler handler = RefinedStorageUtils.getItemHandler(getFacingTile(), getDirection().getOpposite()); - @Override - public void addItems(List items) { - IItemHandler handler = getItemHandler(); - - if (handler != null) { - for (int i = 0; i < handler.getSlots(); ++i) { - if (handler.getStackInSlot(i) != null && handler.getStackInSlot(i).getItem() != null) { - items.add(handler.getStackInSlot(i).copy()); - } - } + if (handler == null) { + storage = null; + } else if (storage == null) { + storage = new ItemHandlerStorage(this, handler); } } - @Override - public ItemStack push(ItemStack stack, boolean simulate) { - if (ModeFilter.respectsMode(filters, this, compare, stack)) { - IItemHandler handler = getItemHandler(); - - if (handler != null) { - return ItemHandlerHelper.insertItem(handler, stack, simulate); - } - } - - return stack; - } - - @Override - public ItemStack take(ItemStack stack, int size, int flags) { - IItemHandler handler = getItemHandler(); - - if (handler != null) { - for (int i = 0; i < handler.getSlots(); ++i) { - ItemStack slot = handler.getStackInSlot(i); - - if (slot != null && RefinedStorageUtils.compareStack(slot, stack, flags)) { - size = Math.min(size, slot.stackSize); - - ItemStack took = ItemHandlerHelper.copyStackWithSize(slot, size); - - handler.extractItem(i, size, false); - - return took; - } - } - } - - return null; - } - - public IItemHandler getItemHandler() { - return RefinedStorageUtils.getItemHandler(getFacingTile(), getDirection().getOpposite()); - } - @Override public void writeContainerData(ByteBuf buf) { super.writeContainerData(buf); buf.writeInt(priority); - buf.writeInt(getStored()); - + buf.writeInt(getCapacity()); buf.writeInt(compare); buf.writeInt(mode); } @@ -113,6 +72,7 @@ public class TileExternalStorage extends TileMachine implements IStorageProvider priority = buf.readInt(); stored = buf.readInt(); + capacity = buf.readInt(); compare = buf.readInt(); mode = buf.readInt(); } @@ -191,7 +151,9 @@ public class TileExternalStorage extends TileMachine implements IStorageProvider @Override public void provide(List storages) { - storages.add(this); + if (storage != null) { + storages.add(storage); + } } @Override @@ -216,36 +178,12 @@ public class TileExternalStorage extends TileMachine implements IStorageProvider @Override public int getStored() { - if (worldObj.isRemote) { - return stored; - } - - IItemHandler handler = getItemHandler(); - - if (handler != null) { - int size = 0; - - for (int i = 0; i < handler.getSlots(); ++i) { - if (handler.getStackInSlot(i) != null) { - size += handler.getStackInSlot(i).stackSize; - } - } - - return size; - } else { - return 0; - } + return worldObj.isRemote ? stored : (storage != null ? storage.getStored() : 0); } @Override public int getCapacity() { - IItemHandler handler = getItemHandler(); - - if (handler != null) { - return handler.getSlots() * 64; - } - - return 0; + return worldObj.isRemote ? capacity : (storage != null ? storage.getCapacity() : 0); } @Override