Guest User

Untitled

a guest
Jun 5th, 2018
158
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.55 KB | None | 0 0
  1. package fr.rissalfa.slimemod.objects.blocks.machines;
  2.  
  3. import fr.rissalfa.slimemod.objects.blocks.machines.slots.SlotEnergyFuel;
  4. import fr.rissalfa.slimemod.objects.blocks.machines.slots.SlotMachineOutput;
  5. import net.minecraft.entity.player.EntityPlayer;
  6. import net.minecraft.entity.player.InventoryPlayer;
  7. import net.minecraft.inventory.Container;
  8. import net.minecraft.inventory.IContainerListener;
  9. import net.minecraft.inventory.Slot;
  10. import net.minecraft.item.ItemStack;
  11. import net.minecraftforge.fml.relauncher.Side;
  12. import net.minecraftforge.fml.relauncher.SideOnly;
  13.  
  14.  
  15. public class ContainerMachineBase extends Container
  16. {
  17. private final TileEntityMachineBase tileentity;
  18. private int cookTime, totalCookTime, burnTime, currentBurnTime;
  19.  
  20. public ContainerMachineBase(InventoryPlayer player, TileEntityMachineBase tileentity)
  21. {
  22. this.tileentity = tileentity;
  23.  
  24. this.addSlotToContainer(new Slot(tileentity, 0, 14, 8));
  25. this.addSlotToContainer(new Slot(tileentity, 1, 51, 8));
  26. this.addSlotToContainer(new SlotEnergyFuel(tileentity, 2, 14, 56));
  27. this.addSlotToContainer(new SlotMachineOutput(player.player, tileentity, 3, 114, 7));
  28.  
  29. for(int y = 0; y < 3; y++)
  30. {
  31. for(int x = 0; x < 9; x++)
  32. {
  33. this.addSlotToContainer(new Slot(player, x + y*9 + 9, 8 + x*18, 84 + y*18));
  34. }
  35. }
  36.  
  37. for(int x = 0; x < 9; x++)
  38. {
  39. this.addSlotToContainer(new Slot(player, x, 8 + x * 18, 142));
  40. }
  41. }
  42.  
  43. @Override
  44. public void addListener(IContainerListener listener)
  45. {
  46. super.addListener(listener);
  47. listener.sendAllWindowProperties(this, this.tileentity);
  48. }
  49.  
  50. @Override
  51. public void detectAndSendChanges()
  52. {
  53. super.detectAndSendChanges();
  54.  
  55. for(int i = 0; i < this.listeners.size(); ++i)
  56. {
  57. IContainerListener listener = (IContainerListener)this.listeners.get(i);
  58.  
  59. if(this.cookTime != this.tileentity.getField(2)) listener.sendWindowProperty(this, 2, this.tileentity.getField(2));
  60. if(this.burnTime != this.tileentity.getField(0)) listener.sendWindowProperty(this, 0, this.tileentity.getField(0));
  61. if(this.currentBurnTime != this.tileentity.getField(1)) listener.sendWindowProperty(this, 1, this.tileentity.getField(1));
  62. if(this.totalCookTime != this.tileentity.getField(3)) listener.sendWindowProperty(this, 3, this.tileentity.getField(3));
  63. }
  64.  
  65. this.cookTime = this.tileentity.getField(2);
  66. this.burnTime = this.tileentity.getField(0);
  67. this.currentBurnTime = this.tileentity.getField(1);
  68. this.totalCookTime = this.tileentity.getField(3);
  69. }
  70.  
  71. @Override
  72. @SideOnly(Side.CLIENT)
  73. public void updateProgressBar(int id, int data)
  74. {
  75. this.tileentity.setField(id, data);
  76. }
  77.  
  78. @Override
  79. public boolean canInteractWith(EntityPlayer playerIn)
  80. {
  81. return this.tileentity.isUsableByPlayer(playerIn);
  82. }
  83.  
  84. @Override
  85. public ItemStack transferStackInSlot(EntityPlayer playerIn, int index)
  86. {
  87. ItemStack stack = ItemStack.EMPTY;
  88. Slot slot = (Slot)this.inventorySlots.get(index);
  89.  
  90. if(slot != null && slot.getHasStack())
  91. {
  92. ItemStack stack1 = slot.getStack();
  93. stack = stack1.copy();
  94.  
  95. if(index == 3)
  96. {
  97. if(!this.mergeItemStack(stack1, 4, 40, true)) return ItemStack.EMPTY;
  98. slot.onSlotChange(stack1, stack);
  99. }
  100. else if(index != 2 && index != 1 && index != 0)
  101. {
  102. Slot slot1 = (Slot)this.inventorySlots.get(index + 1);
  103.  
  104. if(!MachineBaseRecipes.getINSTANCE().getProcessResult(stack1, slot1.getStack()).isEmpty())
  105. {
  106. if(!this.mergeItemStack(stack1, 0, 2, false))
  107. {
  108. return ItemStack.EMPTY;
  109. }
  110. else if(TileEntityMachineBase.isItemEnergy(stack1))
  111. {
  112. if(!this.mergeItemStack(stack1, 2, 3, false)) return ItemStack.EMPTY;
  113. }
  114. else if(TileEntityMachineBase.isItemEnergy(stack1))
  115. {
  116. if(!this.mergeItemStack(stack1, 2, 3, false)) return ItemStack.EMPTY;
  117. }
  118. else if(TileEntityMachineBase.isItemEnergy(stack1))
  119. {
  120. if(!this.mergeItemStack(stack1, 2, 3, false)) return ItemStack.EMPTY;
  121. }
  122. else if(index >= 4 && index < 31)
  123. {
  124. if(!this.mergeItemStack(stack1, 31, 40, false)) return ItemStack.EMPTY;
  125. }
  126. else if(index >= 31 && index < 40 && !this.mergeItemStack(stack1, 4, 31, false))
  127. {
  128. return ItemStack.EMPTY;
  129. }
  130. }
  131. }
  132. else if(!this.mergeItemStack(stack1, 4, 40, false))
  133. {
  134. return ItemStack.EMPTY;
  135. }
  136. if(stack1.isEmpty())
  137. {
  138. slot.putStack(ItemStack.EMPTY);
  139. }
  140. else
  141. {
  142. slot.onSlotChanged();
  143.  
  144. }
  145. if(stack1.getCount() == stack.getCount()) return ItemStack.EMPTY;
  146. slot.onTake(playerIn, stack1);
  147. }
  148. return stack;
  149. }
  150.  
  151.  
  152. }
Advertisement
Add Comment
Please, Sign In to add comment