Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package ...
- import ...
- public class ChoppingBoardContainer extends RecipeBookContainer<CraftingInventory> {
- private final CraftingInventory inventory;
- private final CraftResultInventory resultInventory;
- private final IWorldPosCallable worldPosCallable;
- private final PlayerEntity player;
- public ChoppingBoardContainer(PlayerInventory inventory, IWorldPosCallable pos) {
- super(ContainerType.CRAFTING, 402);
- this.inventory = new CraftingInventory(this, 3, 3);
- this.resultInventory = new CraftResultInventory();
- this.worldPosCallable = pos;
- this.player = inventory.player;
- this.addSlot(new CraftingResultSlot(inventory.player, this.inventory, this.resultInventory,
- 0, 124, 35));
- int i, j;
- for (i = 0; i < 3; ++i) {
- for (j = 0; j < 3; ++j) {
- this.addSlot(new FoodSlot(this.inventory, j + i * 3,
- 30 + j * 18, 17 + i * 18));
- }
- }
- for (i = 0; i < 3; ++i) {
- for (j = 0; j < 9; ++j) {
- this.addSlot(new Slot(inventory, j + i * 9 + 9,
- 8 + j * 18, 84 + i * 18));
- }
- }
- for (i = 0; i < 9; ++i) {
- this.addSlot(new Slot(inventory, i, 8 + i * 18, 142));
- }
- }
- private static void handleChanges(int p_217066_0_, World p_217066_1_, PlayerEntity p_217066_2_,
- CraftingInventory p_217066_3_, CraftResultInventory p_217066_4_) {
- if (!p_217066_1_.isRemote) {
- ServerPlayerEntity lvt_5_1_ = (ServerPlayerEntity) p_217066_2_;
- ItemStack lvt_6_1_ = ItemStack.EMPTY;
- Optional<ICraftingRecipe> lvt_7_1_ = Objects.requireNonNull(p_217066_1_.getServer()).getRecipeManager()
- .getRecipe(IRecipeType.CRAFTING, p_217066_3_, p_217066_1_);
- if (lvt_7_1_.isPresent()) {
- ICraftingRecipe lvt_8_1_ = lvt_7_1_.get();
- if (p_217066_4_.canUseRecipe(p_217066_1_, lvt_5_1_, lvt_8_1_)) {
- lvt_6_1_ = lvt_8_1_.getCraftingResult(p_217066_3_);
- }
- }
- p_217066_4_.setInventorySlotContents(0, lvt_6_1_);
- lvt_5_1_.connection.sendPacket(new SSetSlotPacket(p_217066_0_, 0, lvt_6_1_));
- }
- }
- @Override
- public void onCraftMatrixChanged(IInventory p_75130_1_) {
- this.worldPosCallable.consume((p_217069_1_, p_217069_2_)
- -> handleChanges(this.windowId, p_217069_1_, this.player, this.inventory, this.resultInventory));
- }
- @Override
- public void func_201771_a(RecipeItemHelper p_201771_1_) {
- this.inventory.fillStackedContents(p_201771_1_);
- }
- @Override
- public void clear() {
- this.inventory.clear();
- this.resultInventory.clear();
- }
- @Override
- public boolean matches(IRecipe<? super CraftingInventory> p_201769_1_) {
- return p_201769_1_.matches(this.inventory, this.player.world);
- }
- @Override
- public void onContainerClosed(PlayerEntity player) {
- super.onContainerClosed(player);
- this.worldPosCallable.consume((p_217068_2_, p_217068_3_) -> this.clearContainer(player, p_217068_2_, this.inventory));
- }
- @Override
- public boolean canInteractWith(PlayerEntity p_75145_1_) {
- return true;
- }
- @Override
- public ItemStack transferStackInSlot(PlayerEntity p_82846_1_, int p_82846_2_) {
- ItemStack lvt_3_1_ = ItemStack.EMPTY;
- Slot lvt_4_1_ = this.inventorySlots.get(p_82846_2_);
- if (lvt_4_1_ != null && lvt_4_1_.getHasStack()) {
- ItemStack lvt_5_1_ = lvt_4_1_.getStack();
- lvt_3_1_ = lvt_5_1_.copy();
- if (p_82846_2_ == 0) {
- this.worldPosCallable.consume((p_217067_2_, p_217067_3_) ->
- lvt_5_1_.getItem().onCreated(lvt_5_1_, p_217067_2_, p_82846_1_));
- if (!this.mergeItemStack(lvt_5_1_, 10, 46, true)) {
- return ItemStack.EMPTY;
- }
- lvt_4_1_.onSlotChange(lvt_5_1_, lvt_3_1_);
- } else if (p_82846_2_ >= 10 && p_82846_2_ < 37) {
- if (!this.mergeItemStack(lvt_5_1_, 37, 46, false)) {
- return ItemStack.EMPTY;
- }
- } else if (p_82846_2_ >= 37 && p_82846_2_ < 46) {
- if (!this.mergeItemStack(lvt_5_1_, 10, 37, false)) {
- return ItemStack.EMPTY;
- }
- } else if (!this.mergeItemStack(lvt_5_1_, 10, 46, false)) {
- return ItemStack.EMPTY;
- }
- if (lvt_5_1_.isEmpty()) {
- lvt_4_1_.putStack(ItemStack.EMPTY);
- } else {
- lvt_4_1_.onSlotChanged();
- }
- if (lvt_5_1_.getCount() == lvt_3_1_.getCount()) {
- return ItemStack.EMPTY;
- }
- ItemStack lvt_6_1_ = lvt_4_1_.onTake(p_82846_1_, lvt_5_1_);
- if (p_82846_2_ == 0) {
- p_82846_1_.dropItem(lvt_6_1_, false);
- }
- }
- return lvt_3_1_;
- }
- @Override
- public boolean canMergeSlot(ItemStack p_94530_1_, Slot p_94530_2_) {
- return p_94530_2_.inventory != this.resultInventory && super.canMergeSlot(p_94530_1_, p_94530_2_);
- }
- @Override
- public int getOutputSlot() {
- return 0;
- }
- @Override
- public int getWidth() {
- return this.inventory.getWidth();
- }
- @Override
- public int getHeight() {
- return this.inventory.getHeight();
- }
- @OnlyIn(Dist.CLIENT)
- @Override
- public int getSize() {
- return 10;
- }
- public class FoodSlot extends Slot {
- public FoodSlot(IInventory inventory, int p1, int p2, int p3) {
- super(inventory, p1, p2, p3);
- }
- @Override
- public boolean isItemValid(ItemStack item) {
- //return FoodSlotValidItems.isValidForChoppingBoard(item.getItem());
- return false;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement