Advertisement
Xander402

ChoppingBoardContainer.java

Dec 19th, 2019
130
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. package ...
  2.  
  3. import ...
  4.  
  5. public class ChoppingBoardContainer extends RecipeBookContainer<CraftingInventory> {
  6.  
  7.     private final CraftingInventory inventory;
  8.     private final CraftResultInventory resultInventory;
  9.     private final IWorldPosCallable worldPosCallable;
  10.     private final PlayerEntity player;
  11.  
  12.     public ChoppingBoardContainer(PlayerInventory inventory, IWorldPosCallable pos) {
  13.         super(ContainerType.CRAFTING, 402);
  14.         this.inventory = new CraftingInventory(this, 3, 3);
  15.         this.resultInventory = new CraftResultInventory();
  16.         this.worldPosCallable = pos;
  17.         this.player = inventory.player;
  18.         this.addSlot(new CraftingResultSlot(inventory.player, this.inventory, this.resultInventory,
  19.                 0, 124, 35));
  20.  
  21.         int i, j;
  22.         for (i = 0; i < 3; ++i) {
  23.             for (j = 0; j < 3; ++j) {
  24.                 this.addSlot(new FoodSlot(this.inventory, j + i * 3,
  25.                         30 + j * 18, 17 + i * 18));
  26.             }
  27.         }
  28.         for (i = 0; i < 3; ++i) {
  29.             for (j = 0; j < 9; ++j) {
  30.                 this.addSlot(new Slot(inventory, j + i * 9 + 9,
  31.                         8 + j * 18, 84 + i * 18));
  32.             }
  33.         }
  34.         for (i = 0; i < 9; ++i) {
  35.             this.addSlot(new Slot(inventory, i, 8 + i * 18, 142));
  36.         }
  37.  
  38.     }
  39.  
  40.     private static void handleChanges(int p_217066_0_, World p_217066_1_, PlayerEntity p_217066_2_,
  41.                                       CraftingInventory p_217066_3_, CraftResultInventory p_217066_4_) {
  42.         if (!p_217066_1_.isRemote) {
  43.             ServerPlayerEntity lvt_5_1_ = (ServerPlayerEntity) p_217066_2_;
  44.             ItemStack lvt_6_1_ = ItemStack.EMPTY;
  45.             Optional<ICraftingRecipe> lvt_7_1_ = Objects.requireNonNull(p_217066_1_.getServer()).getRecipeManager()
  46.                     .getRecipe(IRecipeType.CRAFTING, p_217066_3_, p_217066_1_);
  47.             if (lvt_7_1_.isPresent()) {
  48.                 ICraftingRecipe lvt_8_1_ = lvt_7_1_.get();
  49.                 if (p_217066_4_.canUseRecipe(p_217066_1_, lvt_5_1_, lvt_8_1_)) {
  50.                     lvt_6_1_ = lvt_8_1_.getCraftingResult(p_217066_3_);
  51.                 }
  52.             }
  53.  
  54.             p_217066_4_.setInventorySlotContents(0, lvt_6_1_);
  55.             lvt_5_1_.connection.sendPacket(new SSetSlotPacket(p_217066_0_, 0, lvt_6_1_));
  56.         }
  57.     }
  58.  
  59.     @Override
  60.     public void onCraftMatrixChanged(IInventory p_75130_1_) {
  61.         this.worldPosCallable.consume((p_217069_1_, p_217069_2_)
  62.                 -> handleChanges(this.windowId, p_217069_1_, this.player, this.inventory, this.resultInventory));
  63.     }
  64.  
  65.     @Override
  66.     public void func_201771_a(RecipeItemHelper p_201771_1_) {
  67.         this.inventory.fillStackedContents(p_201771_1_);
  68.     }
  69.  
  70.     @Override
  71.     public void clear() {
  72.         this.inventory.clear();
  73.         this.resultInventory.clear();
  74.     }
  75.  
  76.     @Override
  77.     public boolean matches(IRecipe<? super CraftingInventory> p_201769_1_) {
  78.         return p_201769_1_.matches(this.inventory, this.player.world);
  79.     }
  80.  
  81.     @Override
  82.     public void onContainerClosed(PlayerEntity player) {
  83.         super.onContainerClosed(player);
  84.         this.worldPosCallable.consume((p_217068_2_, p_217068_3_) -> this.clearContainer(player, p_217068_2_, this.inventory));
  85.     }
  86.  
  87.     @Override
  88.     public boolean canInteractWith(PlayerEntity p_75145_1_) {
  89.         return true;
  90.     }
  91.  
  92.     @Override
  93.     public ItemStack transferStackInSlot(PlayerEntity p_82846_1_, int p_82846_2_) {
  94.         ItemStack lvt_3_1_ = ItemStack.EMPTY;
  95.         Slot lvt_4_1_ = this.inventorySlots.get(p_82846_2_);
  96.         if (lvt_4_1_ != null && lvt_4_1_.getHasStack()) {
  97.             ItemStack lvt_5_1_ = lvt_4_1_.getStack();
  98.             lvt_3_1_ = lvt_5_1_.copy();
  99.             if (p_82846_2_ == 0) {
  100.                 this.worldPosCallable.consume((p_217067_2_, p_217067_3_) ->
  101.                         lvt_5_1_.getItem().onCreated(lvt_5_1_, p_217067_2_, p_82846_1_));
  102.                 if (!this.mergeItemStack(lvt_5_1_, 10, 46, true)) {
  103.                     return ItemStack.EMPTY;
  104.                 }
  105.  
  106.                 lvt_4_1_.onSlotChange(lvt_5_1_, lvt_3_1_);
  107.             } else if (p_82846_2_ >= 10 && p_82846_2_ < 37) {
  108.                 if (!this.mergeItemStack(lvt_5_1_, 37, 46, false)) {
  109.                     return ItemStack.EMPTY;
  110.                 }
  111.             } else if (p_82846_2_ >= 37 && p_82846_2_ < 46) {
  112.                 if (!this.mergeItemStack(lvt_5_1_, 10, 37, false)) {
  113.                     return ItemStack.EMPTY;
  114.                 }
  115.             } else if (!this.mergeItemStack(lvt_5_1_, 10, 46, false)) {
  116.                 return ItemStack.EMPTY;
  117.             }
  118.  
  119.             if (lvt_5_1_.isEmpty()) {
  120.                 lvt_4_1_.putStack(ItemStack.EMPTY);
  121.             } else {
  122.                 lvt_4_1_.onSlotChanged();
  123.             }
  124.  
  125.             if (lvt_5_1_.getCount() == lvt_3_1_.getCount()) {
  126.                 return ItemStack.EMPTY;
  127.             }
  128.  
  129.             ItemStack lvt_6_1_ = lvt_4_1_.onTake(p_82846_1_, lvt_5_1_);
  130.             if (p_82846_2_ == 0) {
  131.                 p_82846_1_.dropItem(lvt_6_1_, false);
  132.             }
  133.         }
  134.  
  135.         return lvt_3_1_;
  136.     }
  137.  
  138.     @Override
  139.     public boolean canMergeSlot(ItemStack p_94530_1_, Slot p_94530_2_) {
  140.         return p_94530_2_.inventory != this.resultInventory && super.canMergeSlot(p_94530_1_, p_94530_2_);
  141.     }
  142.  
  143.     @Override
  144.     public int getOutputSlot() {
  145.         return 0;
  146.     }
  147.  
  148.     @Override
  149.     public int getWidth() {
  150.         return this.inventory.getWidth();
  151.     }
  152.  
  153.     @Override
  154.     public int getHeight() {
  155.         return this.inventory.getHeight();
  156.     }
  157.  
  158.     @OnlyIn(Dist.CLIENT)
  159.     @Override
  160.     public int getSize() {
  161.         return 10;
  162.     }
  163.  
  164.     public class FoodSlot extends Slot {
  165.         public FoodSlot(IInventory inventory, int p1, int p2, int p3) {
  166.             super(inventory, p1, p2, p3);
  167.         }
  168.    
  169.         @Override
  170.         public boolean isItemValid(ItemStack item) {
  171.             //return FoodSlotValidItems.isValidForChoppingBoard(item.getItem());
  172.             return false;
  173.         }
  174.     }
  175. }
Advertisement
RAW Paste Data Copied
Advertisement