From 5bf0b5ee746a58442aca3ac3f8b9b2ddd648a26b Mon Sep 17 00:00:00 2001 From: EpicPlayerA10 Date: Mon, 12 Jul 2021 16:12:07 +0200 Subject: [PATCH] Some fixing --- .../core/multiblocks/MultiBlockMachine.java | 14 ++++++-------- .../items/multiblocks/ArmorForge.java | 2 +- .../items/multiblocks/Compressor.java | 6 +++--- .../items/multiblocks/MagicWorkbench.java | 6 +++--- .../items/multiblocks/PressureChamber.java | 6 +++--- 5 files changed, 16 insertions(+), 18 deletions(-) diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/core/multiblocks/MultiBlockMachine.java b/src/main/java/io/github/thebusybiscuit/slimefun4/core/multiblocks/MultiBlockMachine.java index f3da3c57b..7c2d8d8bf 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/core/multiblocks/MultiBlockMachine.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/core/multiblocks/MultiBlockMachine.java @@ -178,20 +178,18 @@ public abstract class MultiBlockMachine extends SlimefunItem implements NotPlace * A crafted {@link ItemStack} from {@link MultiBlockMachine} * @param block * Main {@link Block} of our {@link Container} from {@link MultiBlockMachine} + * @param blockInv + * The {@link Inventory} of our {@link Container} * */ @ParametersAreNonnullByDefault - protected void handleCraftedItem(ItemStack outputItem, Block block) { - BlockState state = PaperLib.getBlockState(block, false).getState(); - Validate.isTrue(state instanceof Container); - Container container = (Container) state; - Inventory containerInv = container.getInventory(); - Inventory outputInv = findOutputInventory(outputItem, block, containerInv); + protected void handleCraftedItem(ItemStack outputItem, Block block, Inventory blockInv) { + Inventory outputInv = findOutputInventory(outputItem, block, blockInv); if (outputInv != null) { outputInv.addItem(outputItem); - } else if (InvUtils.fits(containerInv, outputItem)) { - containerInv.addItem(outputItem); + } else if (InvUtils.fits(blockInv, outputItem)) { + blockInv.addItem(outputItem); } else { // fallback SlimefunUtils.spawnItem(block.getLocation(), outputItem, ItemSpawnReason.MULTIBLOCK_MACHINE_OVERFLOW, true); diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/multiblocks/ArmorForge.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/multiblocks/ArmorForge.java index 4078814a4..baa750ef1 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/multiblocks/ArmorForge.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/multiblocks/ArmorForge.java @@ -91,7 +91,7 @@ public class ArmorForge extends AbstractCraftingTable { p.getWorld().playSound(p.getLocation(), Sound.BLOCK_ANVIL_USE, 1F, 2F); } else { p.getWorld().playSound(p.getLocation(), Sound.ENTITY_ARROW_HIT_PLAYER, 1F, 1F); - handleCraftedItem(output, dispenser); + handleCraftedItem(output, dispenser, inv); } }, j * 20L); } diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/multiblocks/Compressor.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/multiblocks/Compressor.java index 8f6bc37f6..46b8d91da 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/multiblocks/Compressor.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/multiblocks/Compressor.java @@ -72,7 +72,7 @@ public class Compressor extends MultiBlockMachine { removing.setAmount(recipeInput.getAmount()); inv.removeItem(removing); - craft(p, output, dispBlock); + craft(p, output, dispBlock, inv); } else { SlimefunPlugin.getLocalization().sendMessage(p, "machines.full-inventory", true); } @@ -87,7 +87,7 @@ public class Compressor extends MultiBlockMachine { } @ParametersAreNonnullByDefault - private void craft(Player p, ItemStack output, Block dispenser) { + private void craft(Player p, ItemStack output, Block dispenser, Inventory dispInv) { for (int i = 0; i < 4; i++) { int j = i; @@ -96,7 +96,7 @@ public class Compressor extends MultiBlockMachine { p.getWorld().playSound(p.getLocation(), j == 1 ? Sound.BLOCK_PISTON_CONTRACT : Sound.BLOCK_PISTON_EXTEND, 1F, j == 0 ? 1F : 2F); } else { p.getWorld().playSound(p.getLocation(), Sound.ENTITY_ARROW_HIT_PLAYER, 1F, 1F); - handleCraftedItem(output, dispenser); + handleCraftedItem(output, dispenser, dispInv); } }, i * 20L); } diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/multiblocks/MagicWorkbench.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/multiblocks/MagicWorkbench.java index 6ac125c00..f6a7605c8 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/multiblocks/MagicWorkbench.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/multiblocks/MagicWorkbench.java @@ -90,13 +90,13 @@ public class MagicWorkbench extends AbstractCraftingTable { } } - startAnimation(p, b, dispenser, output); + startAnimation(p, b, inv, dispenser, output); } else { SlimefunPlugin.getLocalization().sendMessage(p, "machines.full-inventory", true); } } - private void startAnimation(Player p, Block b, Block dispenser, ItemStack output) { + private void startAnimation(Player p, Block b, Inventory dispInv, Block dispenser, ItemStack output) { for (int j = 0; j < 4; j++) { int current = j; SlimefunPlugin.runSync(() -> { @@ -107,7 +107,7 @@ public class MagicWorkbench extends AbstractCraftingTable { p.getWorld().playSound(b.getLocation(), Sound.BLOCK_WOODEN_BUTTON_CLICK_ON, 1F, 1F); } else { p.getWorld().playSound(p.getLocation(), Sound.ENTITY_ARROW_HIT_PLAYER, 1F, 1F); - handleCraftedItem(output, dispenser); + handleCraftedItem(output, dispenser, dispInv); } }, j * 20L); } diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/multiblocks/PressureChamber.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/multiblocks/PressureChamber.java index 9f09e49d7..eb29c82be 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/multiblocks/PressureChamber.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/multiblocks/PressureChamber.java @@ -57,7 +57,7 @@ public class PressureChamber extends MultiBlockMachine { removing.setAmount(convert.getAmount()); inv.removeItem(removing); - craft(p, b, output, dispBlock); + craft(p, b, output, inv, dispBlock); } else { SlimefunPlugin.getLocalization().sendMessage(p, "machines.full-inventory", true); } @@ -71,7 +71,7 @@ public class PressureChamber extends MultiBlockMachine { } @ParametersAreNonnullByDefault - private void craft(Player p, Block b, ItemStack output, Block dispenser) { + private void craft(Player p, Block b, ItemStack output, Inventory dispInv, Block dispenser) { for (int i = 0; i < 4; i++) { int j = i; @@ -85,7 +85,7 @@ public class PressureChamber extends MultiBlockMachine { p.getWorld().playSound(b.getLocation(), Sound.ENTITY_TNT_PRIMED, 1F, 1F); } else { p.getWorld().playSound(p.getLocation(), Sound.ENTITY_ARROW_HIT_PLAYER, 1F, 1F); - handleCraftedItem(output, dispenser); + handleCraftedItem(output, dispenser, dispInv); } }, i * 20L); }