Advertisement
XeNe

ContainerCombinerMachine

Dec 31st, 2014
244
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.49 KB | None | 0 0
  1. package firstetestmod;
  2.  
  3. import net.minecraft.entity.player.EntityPlayer;
  4. import net.minecraft.entity.player.InventoryPlayer;
  5. import net.minecraft.inventory.Container;
  6. import net.minecraft.inventory.ICrafting;
  7. import net.minecraft.inventory.IInventory;
  8. import net.minecraft.inventory.Slot;
  9. import net.minecraft.inventory.SlotFurnace;
  10. import net.minecraft.item.ItemStack;
  11. import cpw.mods.fml.relauncher.Side;
  12. import cpw.mods.fml.relauncher.SideOnly;
  13.  
  14. public class ContainerCombinerMachine extends Container
  15. {
  16. private static final IInventory par2TileEntityFurnace = null;
  17. private TileEntityCombinerMachine CombinerMachine;
  18. private int lastCookTime;
  19. private int lastBurnTime;
  20.  
  21. public ContainerCombinerMachine(InventoryPlayer par1InventoryPlayer, TileEntityCombinerMachine tileEntityCombinerMachine)
  22. {
  23. this.CombinerMachine = tileEntityCombinerMachine;
  24. this.addSlotToContainer(new Slot(par2TileEntityFurnace, 0, 56, 35));
  25. this.addSlotToContainer(new Slot(par2TileEntityFurnace, 1, 8, 56));
  26. this.addSlotToContainer(new SlotFurnace(par1InventoryPlayer.player, par2TileEntityFurnace, 2, 116, 35));
  27. int i;
  28.  
  29. for (i = 0; i < 3; ++i)
  30. {
  31. for (int j = 0; j < 9; ++j)
  32. {
  33. this.addSlotToContainer(new Slot(par1InventoryPlayer, j + i * 9 + 9, 8 + j * 18, 84 + i * 18));
  34. }
  35. }
  36.  
  37. for (i = 0; i < 9; ++i)
  38. {
  39. this.addSlotToContainer(new Slot(par1InventoryPlayer, i, 8 + i * 18, 142));
  40. }
  41. }
  42.  
  43. public void addCraftingToCrafters(ICrafting par1ICrafting)
  44. {
  45. super.addCraftingToCrafters(par1ICrafting);
  46. par1ICrafting.sendProgressBarUpdate(this, 0, this.CombinerMachine.cookTime);
  47. par1ICrafting.sendProgressBarUpdate(this, 1, this.CombinerMachine.power);
  48. }
  49.  
  50. /**
  51. * Looks for changes made in the container, sends them to every listener.
  52. */
  53. public void detectAndSendChanges()
  54. {
  55. super.detectAndSendChanges();
  56.  
  57. for (int i = 0; i < this.crafters.size(); ++i)
  58. {
  59. ICrafting icrafting = (ICrafting)this.crafters.get(i);
  60.  
  61. if (this.lastCookTime != this.CombinerMachine.cookTime)
  62. {
  63. icrafting.sendProgressBarUpdate(this, 0, this.CombinerMachine.cookTime);
  64. }
  65.  
  66. if (this.lastBurnTime != this.CombinerMachine.power)
  67. {
  68. icrafting.sendProgressBarUpdate(this, 1, this.CombinerMachine.power);
  69. }
  70. }
  71.  
  72. this.lastCookTime = this.CombinerMachine.cookTime;
  73. this.lastBurnTime = this.CombinerMachine.power;
  74. }
  75.  
  76. @SideOnly(Side.CLIENT)
  77. public void updateProgressBar(int par1, int par2)
  78. {
  79. if (par1 == 0)
  80. {
  81. this.CombinerMachine.cookTime = par2;
  82. }
  83.  
  84. if (par1 == 1)
  85. {
  86. this.CombinerMachine.power = par2;
  87. }
  88. }
  89.  
  90. public boolean canInteractWith(EntityPlayer par1EntityPlayer)
  91. {
  92. return this.CombinerMachine.isUseableByPlayer(par1EntityPlayer);
  93. }
  94.  
  95. /**
  96. * Called when a player shift-clicks on a slot. You must override this or you will crash when someone does that.
  97. */
  98. public ItemStack transferStackInSlot(EntityPlayer par1EntityPlayer, int par2)
  99. {
  100. ItemStack itemstack = null;
  101. Slot slot = (Slot)this.inventorySlots.get(par2);
  102.  
  103. if (slot != null && slot.getHasStack())
  104. {
  105. ItemStack itemstack1 = slot.getStack();
  106. itemstack = itemstack1.copy();
  107.  
  108. if (par2 == 2)
  109. {
  110. if (!this.mergeItemStack(itemstack1, 3, 39, true))
  111. {
  112. return null;
  113. }
  114.  
  115. slot.onSlotChange(itemstack1, itemstack);
  116. }
  117. else if (par2 != 1 && par2 != 0)
  118. {
  119. if (CombinerRecipies.ores().smelting().getSmeltingResult(itemstack1) != null)
  120. {
  121. if (!this.mergeItemStack(itemstack1, 0, 1, false))
  122. {
  123. return null;
  124. }
  125. }
  126. else if (TileEntityCombinerMachine.isItemFuel(itemstack1))
  127. {
  128. if (!this.mergeItemStack(itemstack1, 1, 2, false))
  129. {
  130. return null;
  131. }
  132. }
  133. else if (par2 >= 3 && par2 < 30)
  134. {
  135. if (!this.mergeItemStack(itemstack1, 30, 39, false))
  136. {
  137. return null;
  138. }
  139. }
  140. else if (par2 >= 30 && par2 < 39 && !this.mergeItemStack(itemstack1, 3, 30, false))
  141. {
  142. return null;
  143. }
  144. }
  145. else if (!this.mergeItemStack(itemstack1, 3, 39, false))
  146. {
  147. return null;
  148. }
  149.  
  150. if (itemstack1.stackSize == 0)
  151. {
  152. slot.putStack((ItemStack)null);
  153. }
  154. else
  155. {
  156. slot.onSlotChanged();
  157. }
  158.  
  159. if (itemstack1.stackSize == itemstack.stackSize)
  160. {
  161. return null;
  162. }
  163.  
  164. slot.onPickupFromSlot(par1EntityPlayer, itemstack1);
  165. }
  166.  
  167. return itemstack;
  168. }
  169. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement