ModContainer.java 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. package me.km.snuviscript;
  2. import me.km.Server;
  3. import me.km.utils.ReflectionUtils;
  4. import net.minecraft.entity.player.PlayerEntity;
  5. import net.minecraft.inventory.IInventory;
  6. import net.minecraft.inventory.container.ClickType;
  7. import net.minecraft.inventory.container.Container;
  8. import net.minecraft.inventory.container.ContainerType;
  9. import net.minecraft.inventory.container.IContainerListener;
  10. import net.minecraft.inventory.container.Slot;
  11. import net.minecraft.item.ItemStack;
  12. import net.minecraft.util.IIntArray;
  13. import net.minecraft.util.IntReferenceHolder;
  14. import net.minecraft.util.NonNullList;
  15. import net.minecraft.world.World;
  16. import net.minecraft.entity.player.ServerPlayerEntity;
  17. public class ModContainer extends Container {
  18. private final Container container;
  19. private static ContainerType<?> getType(Container c) {
  20. try {
  21. return c.getType();
  22. } catch(Exception ex) {
  23. return null;
  24. }
  25. }
  26. public ModContainer(Container c) {
  27. super(getType(c), c.windowId);
  28. this.container = c;
  29. }
  30. public String getName() {
  31. return container.getClass().getSimpleName();
  32. }
  33. @Override
  34. public ItemStack slotClick(int slot, int dragType, ClickType ct, PlayerEntity p) {
  35. if(Server.scriptEvents.onContainerClick(this, slot, dragType, ct, p)) {
  36. Server.scheduler.scheduleTask(() -> {
  37. ((ServerPlayerEntity) p).sendAllContents(this, getInventory());
  38. });
  39. return ItemStack.EMPTY;
  40. }
  41. return container.slotClick(slot, dragType, ct, p);
  42. }
  43. @Override
  44. public boolean canInteractWith(PlayerEntity p) {
  45. return container.canInteractWith(p);
  46. }
  47. @Override
  48. public ContainerType<?> getType() {
  49. return container.getType();
  50. }
  51. @Override
  52. protected Slot addSlot(Slot slotIn) {
  53. return ReflectionUtils.addSlot(container, slotIn);
  54. }
  55. @Override
  56. protected IntReferenceHolder trackInt(IntReferenceHolder intIn) {
  57. return ReflectionUtils.trackInt(container, intIn);
  58. }
  59. @Override
  60. protected void trackIntArray(IIntArray arrayIn) {
  61. ReflectionUtils.trackIntArray(container, arrayIn);
  62. }
  63. @Override
  64. public void addListener(IContainerListener listener) {
  65. container.addListener(listener);
  66. }
  67. @Override
  68. public NonNullList<ItemStack> getInventory() {
  69. return container.getInventory();
  70. }
  71. @Override
  72. public void detectAndSendChanges() {
  73. container.detectAndSendChanges();
  74. }
  75. @Override
  76. public boolean enchantItem(PlayerEntity playerIn, int id) {
  77. return container.enchantItem(playerIn, id);
  78. }
  79. @Override
  80. public Slot getSlot(int slotId) {
  81. return container.getSlot(slotId);
  82. }
  83. @Override
  84. public ItemStack transferStackInSlot(PlayerEntity playerIn, int index) {
  85. return container.transferStackInSlot(playerIn, index);
  86. }
  87. @Override
  88. public boolean canMergeSlot(ItemStack stack, Slot slotIn) {
  89. return container.canMergeSlot(stack, slotIn);
  90. }
  91. @Override
  92. public void onContainerClosed(PlayerEntity playerIn) {
  93. container.onContainerClosed(playerIn);
  94. }
  95. @Override
  96. protected void clearContainer(PlayerEntity playerIn, World worldIn, IInventory inventoryIn) {
  97. ReflectionUtils.clearContainer(container, playerIn, worldIn, inventoryIn);
  98. }
  99. @Override
  100. public void onCraftMatrixChanged(IInventory inventoryIn) {
  101. container.onCraftMatrixChanged(inventoryIn);
  102. }
  103. @Override
  104. public void putStackInSlot(int slotID, ItemStack stack) {
  105. container.putStackInSlot(slotID, stack);
  106. }
  107. @Override
  108. public void updateProgressBar(int id, int data) {
  109. container.updateProgressBar(id, data);
  110. }
  111. @Override
  112. public boolean getCanCraft(PlayerEntity player) {
  113. return container.getCanCraft(player);
  114. }
  115. @Override
  116. public void setCanCraft(PlayerEntity player, boolean canCraft) {
  117. container.setCanCraft(player, canCraft);
  118. }
  119. @Override
  120. protected boolean mergeItemStack(ItemStack stack, int startIndex, int endIndex,
  121. boolean reverseDirection) {
  122. return ReflectionUtils.mergeItemStack(container, stack, startIndex, endIndex,
  123. reverseDirection);
  124. }
  125. @Override
  126. protected void resetDrag() {
  127. ReflectionUtils.resetDrag(container);
  128. }
  129. @Override
  130. public boolean canDragIntoSlot(Slot slotIn) {
  131. return container.canDragIntoSlot(slotIn);
  132. }
  133. }