Advertisement
Guest User

Untitled

a guest
Oct 11th, 2020
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.94 KB | None | 0 0
  1. @Mod.EventBusSubscriber(modid = Charms.CHARMS, bus = Mod.EventBusSubscriber.Bus.FORGE)
  2. public class CharmContainer extends Container {
  3.  
  4. public final PlayerEntity playerIn;
  5. public final CharmContainerTE tileEntity;
  6. private final IWorldPosCallable canInteractWithCallable;
  7.  
  8. public CharmContainer(final int windowId, final PlayerInventory playerInventory, PlayerEntity playerIn,
  9. final CharmContainerTE tileEntity) {
  10. super(ModContainerTypes.CHARM_CONTAINER.get(), windowId);
  11. this.playerIn = playerIn;
  12. this.tileEntity = tileEntity;
  13. this.canInteractWithCallable = IWorldPosCallable.of(tileEntity.getWorld(), tileEntity.getPos());
  14.  
  15. // Main Inventory
  16. int startX = 8;
  17. int startY = 18;
  18. int slotSizePlus2 = 18;
  19. for (int row = 0; row < 4; ++row) {
  20. for (int column = 0; column < 9; ++column) {
  21. this.addSlot(new Slot(tileEntity, (row * 9) + column, startX + (column * slotSizePlus2),
  22. startY + (row * slotSizePlus2)));
  23. }
  24. }
  25.  
  26. // Main Player Inventory
  27. int startPlayerInvY = startY * 5 + 12;
  28. for (int row = 0; row < 3; ++row) {
  29. for (int column = 0; column < 9; ++column) {
  30. this.addSlot(new Slot(playerInventory, 9 + (row * 9) + column, startX + (column * slotSizePlus2),
  31. startPlayerInvY + (row * slotSizePlus2)));
  32. }
  33. }
  34.  
  35. // Hotbar
  36. int hotbarY = startPlayerInvY + (startPlayerInvY / 2) + 7;
  37. for (int column = 0; column < 9; ++column) {
  38. this.addSlot(new Slot(playerInventory, column, startX + (column * slotSizePlus2), hotbarY));
  39. }
  40. }
  41.  
  42. private static CharmContainerTE getTileEntity(final PlayerInventory playerInventory,
  43. final PacketBuffer data) {
  44. Objects.requireNonNull(playerInventory, "playerInventory cannot be null");
  45. Objects.requireNonNull(data, "data cannot be null");
  46. final TileEntity tileAtPos = playerInventory.player.world.getTileEntity(data.readBlockPos());
  47. if (tileAtPos instanceof CharmContainerTE) {
  48. return (CharmContainerTE) tileAtPos;
  49. }
  50. throw new IllegalStateException("Tile entity is not correct! " + tileAtPos);
  51. }
  52.  
  53. public CharmContainer(final int windowId, final PlayerInventory playerInventory, PlayerEntity playerIn, PacketBuffer data) {
  54. this(windowId, playerInventory, playerIn, getTileEntity(playerInventory, data));
  55. }
  56.  
  57.  
  58.  
  59. @Override
  60. public void detectAndSendChanges() {
  61. if (this.tileEntity.getStackInSlot(1).getItem() == ItemList.haste_charm) {
  62. playerIn.addPotionEffect(new EffectInstance(Effects.HASTE, 10));
  63. }
  64. super.detectAndSendChanges();
  65. }
  66.  
  67. @Override
  68. public boolean canInteractWith(PlayerEntity playerIn) {
  69. return isWithinUsableDistance(canInteractWithCallable, playerIn, BlockList.charm_container);
  70. }
  71.  
  72. @Override
  73. public ItemStack transferStackInSlot(PlayerEntity playerIn, int index) {
  74. ItemStack itemstack = ItemStack.EMPTY;
  75. Slot slot = this.inventorySlots.get(index);
  76. if (slot != null && slot.getHasStack()) {
  77. ItemStack itemstack1 = slot.getStack();
  78. itemstack = itemstack1.copy();
  79. if (index < 36) {
  80. if (!this.mergeItemStack(itemstack1, 36, this.inventorySlots.size(), true)) {
  81. return ItemStack.EMPTY;
  82. }
  83. } else if (!this.mergeItemStack(itemstack1, 0, 36, false)) {
  84. return ItemStack.EMPTY;
  85. }
  86.  
  87. if (itemstack1.isEmpty()) {
  88. slot.putStack(ItemStack.EMPTY);
  89. } else {
  90. slot.onSlotChanged();
  91. }
  92. }
  93. return itemstack;
  94. }
  95. }
  96.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement