Update ContainerAutoWorkbench.java
This commit is contained in:
parent
903dd33568
commit
22f6d690af
1 changed files with 58 additions and 124 deletions
|
@ -9,153 +9,87 @@
|
|||
|
||||
package buildcraft.factory.gui;
|
||||
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.entity.player.InventoryPlayer;
|
||||
import net.minecraft.inventory.IInventory;
|
||||
import net.minecraft.inventory.InventoryCraftResult;
|
||||
import net.minecraft.inventory.Slot;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.inventory.SlotCrafting;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.stats.AchievementList;
|
||||
import net.minecraft.item.crafting.CraftingManager;
|
||||
import buildcraft.core.gui.BuildCraftContainer;
|
||||
import buildcraft.core.proxy.CoreProxy;
|
||||
import buildcraft.factory.TileAutoWorkbench;
|
||||
|
||||
public class ContainerAutoWorkbench extends BuildCraftContainer {
|
||||
|
||||
TileAutoWorkbench tile;
|
||||
TileAutoWorkbench parent = null;
|
||||
|
||||
// public InventoryCrafting craftMatrix;
|
||||
public IInventory craftResult;
|
||||
|
||||
public class SlotAutoCrafting extends Slot {
|
||||
|
||||
private final IInventory craftMatrix;
|
||||
private EntityPlayer thePlayer;
|
||||
|
||||
public SlotAutoCrafting(EntityPlayer entityplayer, IInventory iinventory, IInventory iinventory1, int i, int j, int k) {
|
||||
super(iinventory1, i, j, k);
|
||||
thePlayer = entityplayer;
|
||||
craftMatrix = iinventory;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isItemValid(ItemStack itemstack) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPickupFromSlot(EntityPlayer pl, ItemStack itemstack) {
|
||||
CoreProxy.proxy.onCraftingPickup(thePlayer.worldObj, thePlayer, itemstack);
|
||||
if (itemstack.itemID == Block.workbench.blockID) {
|
||||
thePlayer.addStat(AchievementList.buildWorkBench, 1);
|
||||
} else if (itemstack.itemID == Item.pickaxeWood.itemID) {
|
||||
thePlayer.addStat(AchievementList.buildPickaxe, 1);
|
||||
} else if (itemstack.itemID == Block.furnaceIdle.blockID) {
|
||||
thePlayer.addStat(AchievementList.buildFurnace, 1);
|
||||
} else if (itemstack.itemID == Item.hoeWood.itemID) {
|
||||
thePlayer.addStat(AchievementList.buildHoe, 1);
|
||||
} else if (itemstack.itemID == Item.bread.itemID) {
|
||||
thePlayer.addStat(AchievementList.makeBread, 1);
|
||||
} else if (itemstack.itemID == Item.cake.itemID) {
|
||||
thePlayer.addStat(AchievementList.bakeCake, 1);
|
||||
} else if (itemstack.itemID == Item.pickaxeStone.itemID) {
|
||||
thePlayer.addStat(AchievementList.buildBetterPickaxe, 1);
|
||||
} else if (itemstack.itemID == Item.swordWood.itemID) {
|
||||
thePlayer.addStat(AchievementList.buildSword, 1);
|
||||
} else if (itemstack.itemID == Block.enchantmentTable.blockID) {
|
||||
thePlayer.addStat(AchievementList.enchantments, 1);
|
||||
} else if (itemstack.itemID == Block.bookShelf.blockID) {
|
||||
thePlayer.addStat(AchievementList.bookcase, 1);
|
||||
public ContainerAutoWorkbench(InventoryPlayer playerInventory, TileAutoWorkbench tileEntity) {
|
||||
super(tileEntity.getSizeInventory());
|
||||
|
||||
this.parent = tileEntity;
|
||||
|
||||
for (int x = 0; x < 3; x++) {
|
||||
for (int y = 0; y < 3; y++) {
|
||||
this.addSlotToContainer(new Slot(this.parent, y * 3 + x, x * 18 + 30, y * 18 + 17));
|
||||
}
|
||||
CoreProxy.proxy.TakenFromCrafting(thePlayer, itemstack, craftMatrix);
|
||||
// FIXME: Autocrafting table should post a forge event.
|
||||
// ForgeHooks.onTakenFromCrafting(thePlayer, itemstack, craftMatrix);
|
||||
|
||||
tile.extractItem(true, true);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public ContainerAutoWorkbench(InventoryPlayer inventoryplayer, TileAutoWorkbench tile) {
|
||||
super(tile.getSizeInventory());
|
||||
|
||||
craftResult = new InventoryCraftResult();
|
||||
this.tile = tile;
|
||||
addSlotToContainer(new SlotAutoCrafting(inventoryplayer.player, tile, craftResult, 0, 124, 35));
|
||||
for (int l = 0; l < 3; l++) {
|
||||
for (int k1 = 0; k1 < 3; k1++) {
|
||||
addSlotToContainer(new Slot(tile, k1 + l * 3, 30 + k1 * 18, 17 + l * 18));
|
||||
this.addSlotToContainer(new SlotCrafting(playerInventory.player, this.parent, parent.getCraftResult(), 0, 124, 35));
|
||||
|
||||
for (int x = 0; x < 3; x++) {
|
||||
for (int y = 0; y < 9; y++) {
|
||||
this.addSlotToContainer(new Slot(playerInventory, x * 9 + y + 9, y * 18 + 8, x * 18 + 84));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
for (int x = 0; x < 9; x++){
|
||||
this.addSlotToContainer(new Slot(playerInventory, x, x * 18 + 8, 142));
|
||||
}
|
||||
|
||||
for (int i1 = 0; i1 < 3; i1++) {
|
||||
for (int l1 = 0; l1 < 9; l1++) {
|
||||
addSlotToContainer(new Slot(inventoryplayer, l1 + i1 * 9 + 9, 8 + l1 * 18, 84 + i1 * 18));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
for (int j1 = 0; j1 < 9; j1++) {
|
||||
addSlotToContainer(new Slot(inventoryplayer, j1, 8 + j1 * 18, 142));
|
||||
}
|
||||
|
||||
onCraftMatrixChanged(tile);
|
||||
this.onCraftMatrixChanged(parent);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void detectAndSendChanges() {
|
||||
super.detectAndSendChanges();
|
||||
craftResult.setInventorySlotContents(0, tile.findRecipe());
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack slotClick(int i, int j, int flag, EntityPlayer entityplayer) {
|
||||
// This call ensures that the ouptut is correctly computed
|
||||
craftResult.setInventorySlotContents(0, tile.findRecipe());
|
||||
|
||||
ItemStack ret = super.slotClick(i, j, flag, entityplayer);
|
||||
onCraftMatrixChanged(tile);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canInteractWith(EntityPlayer entityplayer) {
|
||||
return tile.isUseableByPlayer(entityplayer);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack transferStackInSlot(EntityPlayer pl, int i) {
|
||||
public ItemStack transferStackInSlot(EntityPlayer player, int slot) {
|
||||
Slot output = (Slot) inventorySlots.get(slot);
|
||||
ItemStack itemstack = null;
|
||||
Slot slot = (Slot) inventorySlots.get(i);
|
||||
if (slot != null && slot.getHasStack()) {
|
||||
ItemStack itemstack1 = slot.getStack();
|
||||
if (output != null && output.getHasStack()){
|
||||
ItemStack itemstack1 = output.getStack();
|
||||
itemstack = itemstack1.copy();
|
||||
if (i == 0) {
|
||||
if (!mergeItemStack(itemstack1, 10, 46, true))
|
||||
return null;
|
||||
} else if (i >= 10 && i < 37) {
|
||||
if (!mergeItemStack(itemstack1, 37, 46, false))
|
||||
return null;
|
||||
} else if (i >= 37 && i < 46) {
|
||||
if (!mergeItemStack(itemstack1, 10, 37, false))
|
||||
return null;
|
||||
} else if (!mergeItemStack(itemstack1, 10, 46, false))
|
||||
return null;
|
||||
if (itemstack1.stackSize == 0) {
|
||||
slot.putStack(null);
|
||||
|
||||
if (slot == 9 ? !mergeItemStack(itemstack1, 10, 46, true) : slot < 37 ?
|
||||
slot < 10 ? !this.mergeItemStack(itemstack1, 10, 46, false) : !this.mergeItemStack(itemstack1, 37, 46, false) :
|
||||
!this.mergeItemStack(itemstack1, 10, 37, false)){
|
||||
itemstack = null;
|
||||
}else if (itemstack1.stackSize == 0) {
|
||||
output.putStack(null);
|
||||
} else {
|
||||
slot.onSlotChanged();
|
||||
output.onSlotChanged();
|
||||
}
|
||||
if (itemstack1.stackSize != itemstack.stackSize) {
|
||||
slot.onPickupFromSlot(pl, itemstack1);
|
||||
} else
|
||||
return null;
|
||||
}
|
||||
|
||||
if (slot == 9){
|
||||
((SlotCrafting) output).onPickupFromSlot(player, itemstack);
|
||||
}
|
||||
this.parent.onInventoryChanged();
|
||||
return itemstack;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected void retrySlotClick(int par1, int par2, boolean par3, EntityPlayer par4EntityPlayer) {
|
||||
if (par1 != 9){
|
||||
super.retrySlotClick(par1, par2, par3, par4EntityPlayer);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCraftMatrixChanged(IInventory inventory) {
|
||||
inventory.onInventoryChanged();
|
||||
|
||||
super.onCraftMatrixChanged(inventory);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canInteractWith(EntityPlayer player) {
|
||||
return this.parent.isUseableByPlayer(player);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue