Make solderer sides better
This commit is contained in:
@@ -2,23 +2,30 @@ 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))) {
|
||||
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;
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user