Disk Manipulator Sided (#499)

* Lock access type for Extra Utilities 2 Trash Can

* Another approach

* Forgot to delete NBT Tag

* Disk Manipulator Sided

* Backwards Compatibility

* Too many spaces

* Comment it
This commit is contained in:
InusualZ
2016-10-23 13:34:12 -04:00
committed by Raoul
parent d038379701
commit bcd7fbbc2c
2 changed files with 39 additions and 17 deletions

View File

@@ -16,11 +16,11 @@ public class ContainerDiskManipulator extends ContainerBase {
} }
for (int i = 0; i < 6; ++i) { for (int i = 0; i < 6; ++i) {
addSlotToContainer(new SlotItemHandler(manipulator.getDisks(), i, 26 + (i % 2 * 18), ((i / 2) * 18) + 57)); addSlotToContainer(new SlotItemHandler(manipulator.getInputDisks(), i, 26 + (i % 2 * 18), ((i / 2) * 18) + 57));
} }
for (int i = 0; i < 6; ++i) { for (int i = 0; i < 6; ++i) {
addSlotToContainer(new SlotItemHandler(manipulator.getDisks(), 6 + i, 116 + (i % 2 * 18), ((i / 2) * 18) + 57)); addSlotToContainer(new SlotItemHandler(manipulator.getOutputDisks(), i, 116 + (i % 2 * 18), ((i / 2) * 18) + 57));
} }
for (int i = 0; i < 9; ++i) { for (int i = 0; i < 9; ++i) {

View File

@@ -29,6 +29,7 @@ import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.items.CapabilityItemHandler; import net.minecraftforge.items.CapabilityItemHandler;
import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.IItemHandler;
import net.minecraftforge.items.ItemHandlerHelper; import net.minecraftforge.items.ItemHandlerHelper;
import net.minecraftforge.items.wrapper.CombinedInvWrapper;
import java.util.ArrayList; import java.util.ArrayList;
@@ -75,7 +76,7 @@ public class TileDiskManipulator extends TileNode implements IComparable, IFilte
private ItemHandlerUpgrade upgrades = new ItemHandlerUpgrade(4, this, ItemUpgrade.TYPE_SPEED, ItemUpgrade.TYPE_STACK); private ItemHandlerUpgrade upgrades = new ItemHandlerUpgrade(4, this, ItemUpgrade.TYPE_SPEED, ItemUpgrade.TYPE_STACK);
private ItemHandlerBasic disks = new ItemHandlerBasic(12, this, IItemValidator.STORAGE_DISK) { private ItemHandlerBasic inputDisks = new ItemHandlerBasic(6, this, IItemValidator.STORAGE_DISK) {
@Override @Override
protected void onContentsChanged(int slot) { protected void onContentsChanged(int slot) {
super.onContentsChanged(slot); super.onContentsChanged(slot);
@@ -100,6 +101,8 @@ public class TileDiskManipulator extends TileNode implements IComparable, IFilte
} }
}; };
private ItemHandlerBasic outputDisks = new ItemHandlerBasic(6, this, IItemValidator.STORAGE_DISK);
public class ItemStorage extends ItemStorageNBT { public class ItemStorage extends ItemStorageNBT {
public ItemStorage(ItemStack disk) { public ItemStorage(ItemStack disk) {
super(disk.getTagCompound(), EnumItemStorageType.getById(disk.getItemDamage()).getCapacity(), TileDiskManipulator.this); super(disk.getTagCompound(), EnumItemStorageType.getById(disk.getItemDamage()).getCapacity(), TileDiskManipulator.this);
@@ -373,15 +376,14 @@ public class TileDiskManipulator extends TileNode implements IComparable, IFilte
} }
private void moveDriveToOutput(int slot) { private void moveDriveToOutput(int slot) {
ItemStack disk = disks.getStackInSlot(slot); ItemStack disk = inputDisks.getStackInSlot(slot);
if (disk != null) { if (disk != null) {
int i = 6; int i = 0;
while (i < 6 && outputDisks.getStackInSlot(i) != null) {
while (i < 12 && disks.getStackInSlot(i) != null) {
i++; i++;
} }
if (i == 12) { if (i == 6) {
return; return;
} }
@@ -396,9 +398,8 @@ public class TileDiskManipulator extends TileNode implements IComparable, IFilte
fluidStorages[slot] = null; fluidStorages[slot] = null;
} }
} }
inputDisks.extractItem(slot, 1, false);
disks.extractItem(slot, 1, false); outputDisks.insertItem(i, disk, false);
disks.insertItem(i, disk, false);
} }
} }
@@ -437,8 +438,12 @@ public class TileDiskManipulator extends TileNode implements IComparable, IFilte
return this.mode; return this.mode;
} }
public IItemHandler getDisks() { public IItemHandler getInputDisks() {
return disks; return inputDisks;
}
public IItemHandler getOutputDisks() {
return outputDisks;
} }
public IItemHandler getUpgrades() { public IItemHandler getUpgrades() {
@@ -449,10 +454,24 @@ public class TileDiskManipulator extends TileNode implements IComparable, IFilte
public void read(NBTTagCompound tag) { public void read(NBTTagCompound tag) {
super.read(tag); super.read(tag);
RSUtils.readItems(disks, 0, tag); // Backwards Compatibility
ItemHandlerBasic oldDisks = new ItemHandlerBasic(12, this, IItemValidator.STORAGE_DISK);
RSUtils.readItems(oldDisks, 0, tag);
for (int i = 0; i < 12; ++i) {
ItemStack stack = oldDisks.extractItem(i, 1, false);
if (stack != null) {
if (i < 6) {
inputDisks.insertItem(i, stack, false);
} else {
outputDisks.insertItem(i, stack, false);
}
}
}
RSUtils.readItems(itemFilters, 1, tag); RSUtils.readItems(itemFilters, 1, tag);
RSUtils.readItems(fluidFilters, 2, tag); RSUtils.readItems(fluidFilters, 2, tag);
RSUtils.readItems(upgrades, 3, tag); RSUtils.readItems(upgrades, 3, tag);
RSUtils.readItems(outputDisks, 4, tag);
if (tag.hasKey(NBT_COMPARE)) { if (tag.hasKey(NBT_COMPARE)) {
compare = tag.getInteger(NBT_COMPARE); compare = tag.getInteger(NBT_COMPARE);
@@ -475,10 +494,13 @@ public class TileDiskManipulator extends TileNode implements IComparable, IFilte
public NBTTagCompound write(NBTTagCompound tag) { public NBTTagCompound write(NBTTagCompound tag) {
super.write(tag); super.write(tag);
RSUtils.writeItems(disks, 0, tag); onBreak();
RSUtils.writeItems(inputDisks, 0, tag);
RSUtils.writeItems(itemFilters, 1, tag); RSUtils.writeItems(itemFilters, 1, tag);
RSUtils.writeItems(fluidFilters, 2, tag); RSUtils.writeItems(fluidFilters, 2, tag);
RSUtils.writeItems(upgrades, 3, tag); RSUtils.writeItems(upgrades, 3, tag);
RSUtils.writeItems(outputDisks, 4, tag);
tag.setInteger(NBT_COMPARE, compare); tag.setInteger(NBT_COMPARE, compare);
tag.setInteger(NBT_MODE, mode); tag.setInteger(NBT_MODE, mode);
@@ -490,13 +512,13 @@ public class TileDiskManipulator extends TileNode implements IComparable, IFilte
@Override @Override
public IItemHandler getDrops() { public IItemHandler getDrops() {
return disks; return new CombinedInvWrapper(inputDisks, outputDisks, upgrades);
} }
@Override @Override
public <T> T getCapability(Capability<T> capability, EnumFacing facing) { public <T> T getCapability(Capability<T> capability, EnumFacing facing) {
if (capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) { if (capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) {
return (T) disks; return facing == EnumFacing.DOWN ? (T) outputDisks : (T) inputDisks;
} }
return super.getCapability(capability, facing); return super.getCapability(capability, facing);