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.item.ItemStack;
import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumFacing;
import refinedstorage.tile.solderer.TileSolderer;
public class SoldererItemHandler extends ProxyItemHandler { public class SoldererItemHandler extends ProxyItemHandler {
private TileSolderer solderer;
private EnumFacing side; private EnumFacing side;
public SoldererItemHandler(BasicItemHandler soldererHandler, EnumFacing side) { public SoldererItemHandler(TileSolderer solderer, EnumFacing side) {
super(soldererHandler); super(solderer.getItems());
this.solderer = solderer;
this.side = side; this.side = side;
} }
@Override @Override
public ItemStack insertItem(int slot, ItemStack stack, boolean simulate) { public ItemStack insertItem(int slot, ItemStack stack, boolean simulate) {
if (((side == EnumFacing.NORTH || side == EnumFacing.EAST) && slot == 0) || if (solderer.getDirection() == EnumFacing.DOWN || solderer.getDirection() == EnumFacing.UP) {
((side == EnumFacing.SOUTH || side == EnumFacing.WEST) && slot == 2) || if (((side == EnumFacing.WEST || side == EnumFacing.SOUTH) && slot == 0) || ((side == EnumFacing.NORTH || side == EnumFacing.EAST) && slot == 2) || (side == EnumFacing.UP && slot == 1)) {
((side == EnumFacing.UP && slot == 1))) { return super.insertItem(slot, stack, simulate);
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; return stack;

View File

@@ -24,6 +24,7 @@ public class TileSolderer extends TileMachine {
private BasicItemHandler items = new BasicItemHandler(4, this); private BasicItemHandler items = new BasicItemHandler(4, this);
private BasicItemHandler upgrades = new BasicItemHandler(4, this, new BasicItemValidator(RefinedStorageItems.UPGRADE, ItemUpgrade.TYPE_SPEED)); 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; private ISoldererRecipe recipe;
@@ -179,7 +180,7 @@ public class TileSolderer extends TileMachine {
return (int) ((float) progress / (float) duration * (float) i); return (int) ((float) progress / (float) duration * (float) i);
} }
public IItemHandler getItems() { public BasicItemHandler getItems() {
return items; return items;
} }
@@ -195,7 +196,13 @@ public class TileSolderer extends TileMachine {
@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) 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); return super.getCapability(capability, facing);