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:
@@ -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) {
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user