Make solderer sides better

This commit is contained in:
Raoul Van den Berge
2016-05-29 12:39:49 +02:00
parent c755007626
commit 87c6b7f67f
2 changed files with 22 additions and 8 deletions

View File

@@ -2,22 +2,29 @@ package refinedstorage.inventory;
import net.minecraft.item.ItemStack;
import net.minecraft.util.EnumFacing;
import refinedstorage.tile.solderer.TileSolderer;
public class SoldererItemHandler extends ProxyItemHandler {
private TileSolderer solderer;
private EnumFacing side;
public SoldererItemHandler(BasicItemHandler soldererHandler, EnumFacing side) {
super(soldererHandler);
public SoldererItemHandler(TileSolderer solderer, EnumFacing side) {
super(solderer.getItems());
this.solderer = solderer;
this.side = side;
}
@Override
public ItemStack insertItem(int slot, ItemStack stack, boolean simulate) {
if (((side == EnumFacing.NORTH || side == EnumFacing.EAST) && slot == 0) ||
((side == EnumFacing.SOUTH || side == EnumFacing.WEST) && slot == 2) ||
((side == EnumFacing.UP && slot == 1))) {
return super.insertItem(slot, stack, simulate);
if (solderer.getDirection() == EnumFacing.DOWN || solderer.getDirection() == EnumFacing.UP) {
if (((side == EnumFacing.WEST || side == EnumFacing.SOUTH) && slot == 0) || ((side == EnumFacing.NORTH || side == EnumFacing.EAST) && slot == 2) || (side == EnumFacing.UP && slot == 1)) {
return super.insertItem(slot, stack, simulate);
}
} else {
if ((side == solderer.getDirection().rotateY() && slot == 0) || (side == solderer.getDirection().rotateYCCW() && slot == 2) || (side == EnumFacing.UP && slot == 1)) {
return super.insertItem(slot, stack, simulate);
}
}
return stack;

View File

@@ -24,6 +24,7 @@ public class TileSolderer extends TileMachine {
private BasicItemHandler items = new BasicItemHandler(4, this);
private BasicItemHandler upgrades = new BasicItemHandler(4, this, new BasicItemValidator(RefinedStorageItems.UPGRADE, ItemUpgrade.TYPE_SPEED));
private SoldererItemHandler[] itemsFacade = new SoldererItemHandler[EnumFacing.values().length];
private ISoldererRecipe recipe;
@@ -179,7 +180,7 @@ public class TileSolderer extends TileMachine {
return (int) ((float) progress / (float) duration * (float) i);
}
public IItemHandler getItems() {
public BasicItemHandler getItems() {
return items;
}
@@ -195,7 +196,13 @@ public class TileSolderer extends TileMachine {
@Override
public <T> T getCapability(Capability<T> capability, EnumFacing facing) {
if (capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) {
return (T) new SoldererItemHandler(items, facing);
int i = facing.ordinal();
if (itemsFacade[i] == null) {
itemsFacade[i] = new SoldererItemHandler(this, facing);
}
return (T) itemsFacade[i];
}
return super.getCapability(capability, facing);