101 lines
3 KiB
Java
101 lines
3 KiB
Java
package net.minecraft.container;
|
|
|
|
import net.minecraft.block.tile.TileEntityFurnace;
|
|
import net.minecraft.container.inventory.InventoryPlayer;
|
|
import net.minecraft.container.slot.Slot;
|
|
import net.minecraft.container.slot.SlotFurnace;
|
|
import net.minecraft.entity.EntityPlayer;
|
|
import net.minecraft.item.crafting.ICrafting;
|
|
import net.minecraft.item.crafting.ItemStack;
|
|
|
|
public class ContainerFurnace extends Container {
|
|
private TileEntityFurnace furnace;
|
|
private int lastCookTime = 0;
|
|
private int lastBurnTime = 0;
|
|
private int lastItemBurnTime = 0;
|
|
|
|
public ContainerFurnace(InventoryPlayer var1, TileEntityFurnace var2) {
|
|
this.furnace = var2;
|
|
this.addSlot(new Slot(var2, 0, 56, 17));
|
|
this.addSlot(new Slot(var2, 1, 56, 53));
|
|
this.addSlot(new SlotFurnace(var1.player, var2, 2, 116, 35));
|
|
|
|
int var3;
|
|
for(var3 = 0; var3 < 3; ++var3) {
|
|
for(int var4 = 0; var4 < 9; ++var4) {
|
|
this.addSlot(new Slot(var1, var4 + var3 * 9 + 9, 8 + var4 * 18, 84 + var3 * 18));
|
|
}
|
|
}
|
|
|
|
for(var3 = 0; var3 < 9; ++var3) {
|
|
this.addSlot(new Slot(var1, var3, 8 + var3 * 18, 142));
|
|
}
|
|
|
|
}
|
|
|
|
public void onCraftGuiOpened(ICrafting var1) {
|
|
super.onCraftGuiOpened(var1);
|
|
var1.updateCraftingInventoryInfo(this, 0, this.furnace.furnaceCookTime);
|
|
var1.updateCraftingInventoryInfo(this, 1, this.furnace.furnaceBurnTime);
|
|
var1.updateCraftingInventoryInfo(this, 2, this.furnace.currentItemBurnTime);
|
|
}
|
|
|
|
public void updateCraftingMatrix() {
|
|
super.updateCraftingMatrix();
|
|
|
|
for(int var1 = 0; var1 < this.crafters.size(); ++var1) {
|
|
ICrafting var2 = (ICrafting)this.crafters.get(var1);
|
|
if(this.lastCookTime != this.furnace.furnaceCookTime) {
|
|
var2.updateCraftingInventoryInfo(this, 0, this.furnace.furnaceCookTime);
|
|
}
|
|
|
|
if(this.lastBurnTime != this.furnace.furnaceBurnTime) {
|
|
var2.updateCraftingInventoryInfo(this, 1, this.furnace.furnaceBurnTime);
|
|
}
|
|
|
|
if(this.lastItemBurnTime != this.furnace.currentItemBurnTime) {
|
|
var2.updateCraftingInventoryInfo(this, 2, this.furnace.currentItemBurnTime);
|
|
}
|
|
}
|
|
|
|
this.lastCookTime = this.furnace.furnaceCookTime;
|
|
this.lastBurnTime = this.furnace.furnaceBurnTime;
|
|
this.lastItemBurnTime = this.furnace.currentItemBurnTime;
|
|
}
|
|
|
|
public boolean canInteractWith(EntityPlayer var1) {
|
|
return this.furnace.canInteractWith(var1);
|
|
}
|
|
|
|
public ItemStack func_27086_a(int var1) {
|
|
ItemStack var2 = null;
|
|
Slot var3 = (Slot)this.inventorySlots.get(var1);
|
|
if(var3 != null && var3.func_27006_b()) {
|
|
ItemStack var4 = var3.getStack();
|
|
var2 = var4.copy();
|
|
if(var1 == 2) {
|
|
this.func_28126_a(var4, 3, 39, true);
|
|
} else if(var1 >= 3 && var1 < 30) {
|
|
this.func_28126_a(var4, 30, 39, false);
|
|
} else if(var1 >= 30 && var1 < 39) {
|
|
this.func_28126_a(var4, 3, 30, false);
|
|
} else {
|
|
this.func_28126_a(var4, 3, 39, false);
|
|
}
|
|
|
|
if(var4.stackSize == 0) {
|
|
var3.putStack((ItemStack)null);
|
|
} else {
|
|
var3.onSlotChanged();
|
|
}
|
|
|
|
if(var4.stackSize == var2.stackSize) {
|
|
return null;
|
|
}
|
|
|
|
var3.onPickupFromSlot(var4);
|
|
}
|
|
|
|
return var2;
|
|
}
|
|
}
|