Skip to content

Commit

Permalink
Added support for multiple output chests
Browse files Browse the repository at this point in the history
  • Loading branch information
EpicPlayerA10 committed Jun 26, 2021
1 parent 66dc68a commit 05c11a6
Show file tree
Hide file tree
Showing 4 changed files with 42 additions and 39 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -90,16 +90,17 @@ private void craft(Player p, ItemStack output, Inventory inv, Dispenser dispense
SlimefunPlugin.runSync(() -> {
if (current < 3) {
p.getWorld().playSound(p.getLocation(), Sound.BLOCK_ANVIL_USE, 1F, 2F);
} else if (InvUtils.fits(outputInv, output)) {
p.getWorld().playSound(p.getLocation(), Sound.ENTITY_ARROW_HIT_PLAYER, 1F, 1F);
outputInv.addItem(output);
} else if (InvUtils.fits(dispenser.getInventory(), output)) {
p.getWorld().playSound(p.getLocation(), Sound.ENTITY_ARROW_HIT_PLAYER, 1F, 1F);
dispenser.getInventory().addItem(output);
} else {
// fallback
Inventory outputInv2 = findOutputInventory(output, dispenser.getBlock(), dispenser.getInventory());
p.getWorld().playSound(p.getLocation(), Sound.ENTITY_ARROW_HIT_PLAYER, 1F, 1F);
dispenser.getWorld().dropItemNaturally(dispenser.getLocation(), output);
if (outputInv2 != null) {
outputInv2.addItem(output);
} else if (InvUtils.fits(dispenser.getInventory(), output)) {
dispenser.getInventory().addItem(output);
} else {
// fallback
dispenser.getWorld().dropItemNaturally(dispenser.getLocation(), output);
}
}
}, j * 20L);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ public void onInteract(Player p, Block b) {
removing.setAmount(recipeInput.getAmount());
inv.removeItem(removing);

craft(p, output, outputInv, disp);
craft(p, output, disp);
} else {
SlimefunPlugin.getLocalization().sendMessage(p, "machines.full-inventory", true);
}
Expand All @@ -88,23 +88,24 @@ public void onInteract(Player p, Block b) {
}

@ParametersAreNonnullByDefault
private void craft(Player p, ItemStack output, Inventory outputInv, Dispenser dispenser) {
private void craft(Player p, ItemStack output, Dispenser dispenser) {
for (int i = 0; i < 4; i++) {
int j = i;

SlimefunPlugin.runSync(() -> {
if (j < 3) {
p.getWorld().playSound(p.getLocation(), j == 1 ? Sound.BLOCK_PISTON_CONTRACT : Sound.BLOCK_PISTON_EXTEND, 1F, j == 0 ? 1F : 2F);
} else if (InvUtils.fits(outputInv, output)) {
p.getWorld().playSound(p.getLocation(), Sound.ENTITY_ARROW_HIT_PLAYER, 1F, 1F);
outputInv.addItem(output);
} else if (InvUtils.fits(dispenser.getInventory(), output)) {
p.getWorld().playSound(p.getLocation(), Sound.ENTITY_ARROW_HIT_PLAYER, 1F, 1F);
dispenser.getInventory().addItem(output);
} else {
// fallback
Inventory outputInv = findOutputInventory(output, dispenser.getBlock(), dispenser.getInventory());
p.getWorld().playSound(p.getLocation(), Sound.ENTITY_ARROW_HIT_PLAYER, 1F, 1F);
dispenser.getWorld().dropItemNaturally(dispenser.getLocation(), output);
if (outputInv != null) {
outputInv.addItem(output);
} else if (InvUtils.fits(dispenser.getInventory(), output)) {
dispenser.getInventory().addItem(output);
} else {
// fallback
dispenser.getWorld().dropItemNaturally(dispenser.getLocation(), output);
}
}
}, i * 20L);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -91,31 +91,31 @@ private void craft(Inventory inv, Dispenser dispenser, Player p, Block b, ItemSt
}
}

startAnimation(p, b, outputInv, output, dispenser);
startAnimation(p, b, output, dispenser);
} else {
SlimefunPlugin.getLocalization().sendMessage(p, "machines.full-inventory", true);
}
}

private void startAnimation(Player p, Block b, Inventory inv, ItemStack output, Dispenser dispenser) {
private void startAnimation(Player p, Block b, ItemStack output, Dispenser dispenser) {
for (int j = 0; j < 4; j++) {
int current = j;
SlimefunPlugin.runSync(() -> {
p.getWorld().playEffect(b.getLocation(), Effect.MOBSPAWNER_FLAMES, 1);
p.getWorld().playEffect(b.getLocation(), Effect.ENDER_SIGNAL, 1);

if (current < 3) {
p.getWorld().playSound(b.getLocation(), Sound.BLOCK_WOODEN_BUTTON_CLICK_ON, 1F, 1F);
} else if (InvUtils.fits(inv, output)) {
p.getWorld().playSound(p.getLocation(), Sound.ENTITY_ARROW_HIT_PLAYER, 1F, 1F);
inv.addItem(output);
} else if (InvUtils.fits(dispenser.getInventory(), output)) {
p.getWorld().playSound(p.getLocation(), Sound.ENTITY_ARROW_HIT_PLAYER, 1F, 1F);
dispenser.getInventory().addItem(output);
} else {
// fallback
Inventory outputInv = findOutputInventory(output, dispenser.getBlock(), dispenser.getInventory());
p.getWorld().playSound(p.getLocation(), Sound.ENTITY_ARROW_HIT_PLAYER, 1F, 1F);
dispenser.getWorld().dropItemNaturally(dispenser.getLocation(), output);
if (outputInv != null) {
outputInv.addItem(output);
} else if (InvUtils.fits(dispenser.getInventory(), output)) {
dispenser.getInventory().addItem(output);
} else {
// fallback
dispenser.getWorld().dropItemNaturally(dispenser.getLocation(), output);
}
}
}, j * 20L);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ public void onInteract(Player p, Block b) {
removing.setAmount(convert.getAmount());
inv.removeItem(removing);

craft(p, b, output, outputInv, disp);
craft(p, b, output, disp);
} else {
SlimefunPlugin.getLocalization().sendMessage(p, "machines.full-inventory", true);
}
Expand All @@ -72,7 +72,7 @@ public void onInteract(Player p, Block b) {
}

@ParametersAreNonnullByDefault
private void craft(Player p, Block b, ItemStack output, Inventory outputInv, Dispenser dispenser) {
private void craft(Player p, Block b, ItemStack output, Dispenser dispenser) {
for (int i = 0; i < 4; i++) {
int j = i;

Expand All @@ -84,16 +84,17 @@ private void craft(Player p, Block b, ItemStack output, Inventory outputInv, Dis

if (j < 3) {
p.getWorld().playSound(b.getLocation(), Sound.ENTITY_TNT_PRIMED, 1F, 1F);
} else if (InvUtils.fits(outputInv, output)) {
p.getWorld().playSound(p.getLocation(), Sound.ENTITY_ARROW_HIT_PLAYER, 1F, 1F);
outputInv.addItem(output);
} else if (InvUtils.fits(dispenser.getInventory(), output)) {
p.getWorld().playSound(p.getLocation(), Sound.ENTITY_ARROW_HIT_PLAYER, 1F, 1F);
dispenser.getInventory().addItem(output);
} else {
// fallback
Inventory outputInv = findOutputInventory(output, dispenser.getBlock(), dispenser.getInventory());
p.getWorld().playSound(p.getLocation(), Sound.ENTITY_ARROW_HIT_PLAYER, 1F, 1F);
dispenser.getWorld().dropItemNaturally(dispenser.getLocation(), output);
if (outputInv != null) {
outputInv.addItem(output);
} else if (InvUtils.fits(dispenser.getInventory(), output)) {
dispenser.getInventory().addItem(output);
} else {
// fallback
dispenser.getWorld().dropItemNaturally(dispenser.getLocation(), output);
}
}
}, i * 20L);
}
Expand Down

0 comments on commit 05c11a6

Please sign in to comment.