From daca12e1cbed59d5d5d0b99d3b4c544b3efc728a Mon Sep 17 00:00:00 2001 From: Raoul Van den Berge Date: Thu, 19 May 2016 02:42:43 +0200 Subject: [PATCH] Storage blocks aren't working yet --- .../refinedstorage/block/BlockStorage.java | 4 +- .../refinedstorage/storage/NBTStorage.java | 8 +++ .../storage/StorageBlockStorage.java | 25 ++++++++ .../java/refinedstorage/tile/TileStorage.java | 59 +++++++------------ 4 files changed, 55 insertions(+), 41 deletions(-) create mode 100755 src/main/java/refinedstorage/storage/StorageBlockStorage.java diff --git a/src/main/java/refinedstorage/block/BlockStorage.java b/src/main/java/refinedstorage/block/BlockStorage.java index 90731b399..a8282a78b 100755 --- a/src/main/java/refinedstorage/block/BlockStorage.java +++ b/src/main/java/refinedstorage/block/BlockStorage.java @@ -78,9 +78,7 @@ public class BlockStorage extends BlockMachine { NBTTagCompound tag = stack.getTagCompound(); - if (tag != null && tag.hasKey(TileStorage.NBT_STORAGE)) { - ((TileStorage) world.getTileEntity(pos)).setStorageTag((NBTTagCompound) tag.getTag(TileStorage.NBT_STORAGE)); - } + ((TileStorage) world.getTileEntity(pos)).onPlaced((tag != null && tag.hasKey(TileStorage.NBT_STORAGE)) ? tag.getCompoundTag(TileStorage.NBT_STORAGE) : null); } @Override diff --git a/src/main/java/refinedstorage/storage/NBTStorage.java b/src/main/java/refinedstorage/storage/NBTStorage.java index 8bc307673..ca04b8f25 100755 --- a/src/main/java/refinedstorage/storage/NBTStorage.java +++ b/src/main/java/refinedstorage/storage/NBTStorage.java @@ -143,6 +143,14 @@ public class NBTStorage implements IStorage { this.priority = priority; } + public int getCapacity() { + return capacity; + } + + public void setCapacity(int capacity) { + this.capacity = capacity; + } + public NBTTagCompound getTag() { return tag; } diff --git a/src/main/java/refinedstorage/storage/StorageBlockStorage.java b/src/main/java/refinedstorage/storage/StorageBlockStorage.java new file mode 100755 index 000000000..6c43d879f --- /dev/null +++ b/src/main/java/refinedstorage/storage/StorageBlockStorage.java @@ -0,0 +1,25 @@ +package refinedstorage.storage; + +import net.minecraft.item.ItemStack; +import refinedstorage.tile.TileStorage; +import refinedstorage.tile.config.ModeConfigUtils; + +public class StorageBlockStorage extends NBTStorage { + private TileStorage storage; + + public StorageBlockStorage(TileStorage storage) { + super(storage.getStorageTag(), storage.getCapacity(), 0); + + this.storage = storage; + } + + @Override + public int getPriority() { + return storage.getPriority(); + } + + @Override + public boolean canPush(ItemStack stack) { + return ModeConfigUtils.doesNotViolateMode(storage.getInventory(), storage, storage.getCompare(), stack) && super.canPush(stack); + } +} diff --git a/src/main/java/refinedstorage/tile/TileStorage.java b/src/main/java/refinedstorage/tile/TileStorage.java index 4dcf2feca..138614618 100755 --- a/src/main/java/refinedstorage/tile/TileStorage.java +++ b/src/main/java/refinedstorage/tile/TileStorage.java @@ -3,7 +3,6 @@ package refinedstorage.tile; import io.netty.buffer.ByteBuf; import net.minecraft.inventory.Container; import net.minecraft.inventory.IInventory; -import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import refinedstorage.RefinedStorage; import refinedstorage.RefinedStorageBlocks; @@ -17,11 +16,10 @@ import refinedstorage.storage.*; import refinedstorage.tile.config.ICompareConfig; import refinedstorage.tile.config.IModeConfig; import refinedstorage.tile.config.IRedstoneModeConfig; -import refinedstorage.tile.config.ModeConfigUtils; import java.util.List; -public class TileStorage extends TileMachine implements IStorageProvider, IStorage, IStorageGui, ICompareConfig, IModeConfig { +public class TileStorage extends TileMachine implements IStorageProvider, IStorageGui, ICompareConfig, IModeConfig { public static final String NBT_STORAGE = "Storage"; public static final String NBT_PRIORITY = "Priority"; public static final String NBT_COMPARE = "Compare"; @@ -29,9 +27,9 @@ public class TileStorage extends TileMachine implements IStorageProvider, IStora private InventorySimple inventory = new InventorySimple("storage", 9, this); - private NBTTagCompound storageTag = NBTStorage.createNBT(); + private NBTTagCompound storageTag; - private NBTStorage storage; + private StorageBlockStorage storage; private int priority = 0; private int compare = 0; @@ -45,19 +43,31 @@ public class TileStorage extends TileMachine implements IStorageProvider, IStora @Override public void updateMachine() { + if (getStorage().isDirty()) { + markDirty(); + + getStorage().markClean(); + } + } + + public void onPlaced(NBTTagCompound tag) { + if (tag == null) { + storageTag = NBTStorage.createNBT(); + } else { + storageTag = tag; + } } public NBTStorage getStorage() { if (storage == null) { - storage = new NBTStorage(storageTag, priority, getCapacity()); + storage = new StorageBlockStorage(this); } - return storage; } @Override public void provide(List storages) { - storages.add(this); + storages.add(getStorage()); } @Override @@ -72,6 +82,8 @@ public class TileStorage extends TileMachine implements IStorageProvider, IStora if (nbt.hasKey(NBT_STORAGE)) { storageTag = nbt.getCompoundTag(NBT_STORAGE); + } else { + storageTag = NBTStorage.createNBT(); } if (nbt.hasKey(NBT_COMPARE)) { @@ -90,7 +102,7 @@ public class TileStorage extends TileMachine implements IStorageProvider, IStora RefinedStorageUtils.saveInventory(inventory, 0, nbt); nbt.setInteger(NBT_PRIORITY, priority); - nbt.setTag(NBT_STORAGE, getStorage().getTag()); + nbt.setTag(NBT_STORAGE, storageTag); nbt.setInteger(NBT_COMPARE, compare); nbt.setInteger(NBT_MODE, mode); } @@ -128,34 +140,6 @@ public class TileStorage extends TileMachine implements IStorageProvider, IStora return ContainerStorage.class; } - @Override - public void addItems(List items) { - getStorage().addItems(items); - - markDirty(); - } - - @Override - public void push(ItemStack stack) { - getStorage().push(stack); - - markDirty(); - } - - @Override - public ItemStack take(ItemStack stack, int flags) { - ItemStack result = getStorage().take(stack, flags); - - markDirty(); - - return result; - } - - @Override - public boolean canPush(ItemStack stack) { - return ModeConfigUtils.doesNotViolateMode(inventory, this, compare, stack) && getStorage().canPush(stack); - } - @Override public int getCompare() { return compare; @@ -240,7 +224,6 @@ public class TileStorage extends TileMachine implements IStorageProvider, IStora public void setPriority(int priority) { markDirty(); - this.getStorage().setPriority(priority); this.priority = priority; }