Storage blocks aren't working yet

This commit is contained in:
Raoul Van den Berge
2016-05-19 02:42:43 +02:00
parent b6dcce7859
commit daca12e1cb
4 changed files with 55 additions and 41 deletions

View File

@@ -78,9 +78,7 @@ public class BlockStorage extends BlockMachine {
NBTTagCompound tag = stack.getTagCompound(); NBTTagCompound tag = stack.getTagCompound();
if (tag != null && tag.hasKey(TileStorage.NBT_STORAGE)) { ((TileStorage) world.getTileEntity(pos)).onPlaced((tag != null && tag.hasKey(TileStorage.NBT_STORAGE)) ? tag.getCompoundTag(TileStorage.NBT_STORAGE) : null);
((TileStorage) world.getTileEntity(pos)).setStorageTag((NBTTagCompound) tag.getTag(TileStorage.NBT_STORAGE));
}
} }
@Override @Override

View File

@@ -143,6 +143,14 @@ public class NBTStorage implements IStorage {
this.priority = priority; this.priority = priority;
} }
public int getCapacity() {
return capacity;
}
public void setCapacity(int capacity) {
this.capacity = capacity;
}
public NBTTagCompound getTag() { public NBTTagCompound getTag() {
return tag; return tag;
} }

View File

@@ -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);
}
}

View File

@@ -3,7 +3,6 @@ package refinedstorage.tile;
import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBuf;
import net.minecraft.inventory.Container; import net.minecraft.inventory.Container;
import net.minecraft.inventory.IInventory; import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
import refinedstorage.RefinedStorage; import refinedstorage.RefinedStorage;
import refinedstorage.RefinedStorageBlocks; import refinedstorage.RefinedStorageBlocks;
@@ -17,11 +16,10 @@ import refinedstorage.storage.*;
import refinedstorage.tile.config.ICompareConfig; import refinedstorage.tile.config.ICompareConfig;
import refinedstorage.tile.config.IModeConfig; import refinedstorage.tile.config.IModeConfig;
import refinedstorage.tile.config.IRedstoneModeConfig; import refinedstorage.tile.config.IRedstoneModeConfig;
import refinedstorage.tile.config.ModeConfigUtils;
import java.util.List; 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_STORAGE = "Storage";
public static final String NBT_PRIORITY = "Priority"; public static final String NBT_PRIORITY = "Priority";
public static final String NBT_COMPARE = "Compare"; 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 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 priority = 0;
private int compare = 0; private int compare = 0;
@@ -45,19 +43,31 @@ public class TileStorage extends TileMachine implements IStorageProvider, IStora
@Override @Override
public void updateMachine() { 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() { public NBTStorage getStorage() {
if (storage == null) { if (storage == null) {
storage = new NBTStorage(storageTag, priority, getCapacity()); storage = new StorageBlockStorage(this);
} }
return storage; return storage;
} }
@Override @Override
public void provide(List<IStorage> storages) { public void provide(List<IStorage> storages) {
storages.add(this); storages.add(getStorage());
} }
@Override @Override
@@ -72,6 +82,8 @@ public class TileStorage extends TileMachine implements IStorageProvider, IStora
if (nbt.hasKey(NBT_STORAGE)) { if (nbt.hasKey(NBT_STORAGE)) {
storageTag = nbt.getCompoundTag(NBT_STORAGE); storageTag = nbt.getCompoundTag(NBT_STORAGE);
} else {
storageTag = NBTStorage.createNBT();
} }
if (nbt.hasKey(NBT_COMPARE)) { if (nbt.hasKey(NBT_COMPARE)) {
@@ -90,7 +102,7 @@ public class TileStorage extends TileMachine implements IStorageProvider, IStora
RefinedStorageUtils.saveInventory(inventory, 0, nbt); RefinedStorageUtils.saveInventory(inventory, 0, nbt);
nbt.setInteger(NBT_PRIORITY, priority); nbt.setInteger(NBT_PRIORITY, priority);
nbt.setTag(NBT_STORAGE, getStorage().getTag()); nbt.setTag(NBT_STORAGE, storageTag);
nbt.setInteger(NBT_COMPARE, compare); nbt.setInteger(NBT_COMPARE, compare);
nbt.setInteger(NBT_MODE, mode); nbt.setInteger(NBT_MODE, mode);
} }
@@ -128,34 +140,6 @@ public class TileStorage extends TileMachine implements IStorageProvider, IStora
return ContainerStorage.class; return ContainerStorage.class;
} }
@Override
public void addItems(List<ItemGroup> 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 @Override
public int getCompare() { public int getCompare() {
return compare; return compare;
@@ -240,7 +224,6 @@ public class TileStorage extends TileMachine implements IStorageProvider, IStora
public void setPriority(int priority) { public void setPriority(int priority) {
markDirty(); markDirty();
this.getStorage().setPriority(priority);
this.priority = priority; this.priority = priority;
} }