1
mirror of https://github.com/StarWishsama/Slimefun4.git synced 2024-09-20 03:35:51 +00:00

Some fixing

This commit is contained in:
EpicPlayerA10 2021-07-12 16:12:07 +02:00
parent b9420da407
commit 5bf0b5ee74
5 changed files with 16 additions and 18 deletions

View File

@ -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);

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}