initial commit
This commit is contained in:
parent
3c9ee26b06
commit
22186c33b9
1458 changed files with 282792 additions and 0 deletions
138
java/src/game/inventory/ContainerMachine.java
Executable file
138
java/src/game/inventory/ContainerMachine.java
Executable file
|
@ -0,0 +1,138 @@
|
|||
package game.inventory;
|
||||
|
||||
import game.entity.npc.EntityNPC;
|
||||
import game.item.ItemStack;
|
||||
import game.tileentity.TileEntityMachine;
|
||||
import game.tileentity.TileEntityMachine.Status;
|
||||
|
||||
public class ContainerMachine extends Container
|
||||
{
|
||||
private final IInventory machine;
|
||||
private final TileEntityMachine tile;
|
||||
private int temperature;
|
||||
private Status status = Status.OFF;
|
||||
private final int[] resources;
|
||||
|
||||
public ContainerMachine(InventoryPlayer playerInv, TileEntityMachine tile, IInventory machine, EntityNPC player)
|
||||
{
|
||||
this.machine = machine;
|
||||
this.tile = tile;
|
||||
this.resources = new int[tile.getNumResources()];
|
||||
machine.openInventory(player);
|
||||
int i = 71;
|
||||
|
||||
for (int j = 0; j < machine.getSizeInventory(); ++j)
|
||||
{
|
||||
final int index = j;
|
||||
this.addSlotToContainer(new Slot(machine, j, 8 + j * 18, 40) {
|
||||
public boolean isItemValid(ItemStack stack)
|
||||
{
|
||||
return ContainerMachine.this.tile.isItemValidForSlot(index, stack);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
for (int l = 0; l < 3; ++l)
|
||||
{
|
||||
for (int k = 0; k < 9; ++k)
|
||||
{
|
||||
this.addSlotToContainer(new Slot(playerInv, k + l * 9 + 9, 8 + k * 18, l * 18 + i));
|
||||
}
|
||||
}
|
||||
|
||||
for (int i1 = 0; i1 < 9; ++i1)
|
||||
{
|
||||
this.addSlotToContainer(new Slot(playerInv, i1, 8 + i1 * 18, 58 + i));
|
||||
}
|
||||
}
|
||||
|
||||
public boolean canInteractWith(EntityNPC playerIn)
|
||||
{
|
||||
return this.machine.isUseableByPlayer(playerIn);
|
||||
}
|
||||
|
||||
protected boolean canTransfer(Slot slot, ItemStack stack) {
|
||||
return slot.isItemValid(stack);
|
||||
}
|
||||
|
||||
public ItemStack transferStackInSlot(EntityNPC playerIn, int index)
|
||||
{
|
||||
ItemStack itemstack = null;
|
||||
Slot slot = (Slot)this.inventorySlots.get(index);
|
||||
|
||||
if (slot != null && slot.getHasStack())
|
||||
{
|
||||
ItemStack itemstack1 = slot.getStack();
|
||||
itemstack = itemstack1.copy();
|
||||
|
||||
if (index < this.machine.getSizeInventory())
|
||||
{
|
||||
if (!this.mergeItemStack(itemstack1, this.machine.getSizeInventory(), this.inventorySlots.size(), true))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
else if (!this.mergeItemStack(itemstack1, 0, this.machine.getSizeInventory(), false))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
if (itemstack1.stackSize == 0)
|
||||
{
|
||||
slot.putStack((ItemStack)null);
|
||||
}
|
||||
else
|
||||
{
|
||||
slot.onSlotChanged();
|
||||
}
|
||||
}
|
||||
|
||||
return itemstack;
|
||||
}
|
||||
|
||||
public void onContainerClosed(EntityNPC playerIn)
|
||||
{
|
||||
super.onContainerClosed(playerIn);
|
||||
this.machine.closeInventory(playerIn);
|
||||
}
|
||||
|
||||
public void onCraftGuiOpened(ICrafting listener)
|
||||
{
|
||||
super.onCraftGuiOpened(listener);
|
||||
// listener.sendAllWindowProperties(this, this.machine);
|
||||
}
|
||||
|
||||
public void updateProgressBar(int id, int data)
|
||||
{
|
||||
if(id == this.resources.length)
|
||||
this.tile.setTemperature(data);
|
||||
else if(id == this.resources.length + 1)
|
||||
this.tile.setStatus(Status.values()[data % Status.values().length]);
|
||||
else
|
||||
this.tile.getResource(id).setValue(data);
|
||||
}
|
||||
|
||||
public void detectAndSendChanges()
|
||||
{
|
||||
super.detectAndSendChanges();
|
||||
|
||||
for (int i = 0; i < this.crafters.size(); ++i)
|
||||
{
|
||||
ICrafting icrafting = (ICrafting)this.crafters.get(i);
|
||||
if(this.temperature != this.tile.getTemperature())
|
||||
icrafting.sendProgressBarUpdate(this, this.resources.length, this.tile.getTemperature());
|
||||
if(this.status != this.tile.getStatus())
|
||||
icrafting.sendProgressBarUpdate(this, this.resources.length + 1, this.tile.getStatus().ordinal());
|
||||
for(int z = 0; z < this.resources.length; z++) {
|
||||
if(this.resources[z] != this.tile.getResource(z).getValue())
|
||||
icrafting.sendProgressBarUpdate(this, z, this.tile.getResource(z).getValue());
|
||||
}
|
||||
}
|
||||
|
||||
this.temperature = this.tile.getTemperature();
|
||||
this.status = this.tile.getStatus();
|
||||
for(int z = 0; z < this.resources.length; z++) {
|
||||
this.resources[z] = this.tile.getResource(z).getValue();
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue