Skip to content

Commit

Permalink
Move code to superclass and call method in other machines
Browse files Browse the repository at this point in the history
  • Loading branch information
EpicPlayerA10 committed Jul 3, 2021
1 parent 1058c15 commit 0128d57
Show file tree
Hide file tree
Showing 5 changed files with 28 additions and 41 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
import org.bukkit.World;
import org.bukkit.block.Block;
import org.bukkit.block.BlockFace;
import org.bukkit.block.data.type.Dispenser;
import org.bukkit.block.Dispenser;
import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
Expand Down Expand Up @@ -165,6 +165,29 @@ public void load() {
}
}

/**
* This method handles a output {@link ItemStack} from the {@link MultiBlockMachine} which has a crafting delay
*
* @param outputItem
* A crafted {@link ItemStack} from {@link MultiBlockMachine}
* @param dispenser
* Our {@link Dispenser} from {@link MultiBlockMachine}
*
*/
protected void handleCraftedItem(ItemStack outputItem, Dispenser dispenser) {
Inventory dispInv = dispenser.getInventory();
Inventory outputInv = findOutputInventory(outputItem, dispenser.getBlock(), dispInv);

if (outputInv != null) {
outputInv.addItem(outputItem);
} else if (InvUtils.fits(dispInv, outputItem)) {
dispInv.addItem(outputItem);
} else {
// fallback
dispenser.getWorld().dropItemNaturally(dispenser.getLocation(), outputItem);
}
}

private static @Nonnull Material[] convertItemStacksToMaterial(@Nonnull ItemStack[] items) {
List<Material> materials = new ArrayList<>();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -91,17 +91,8 @@ private void craft(Player p, ItemStack output, Inventory inv, Dispenser dispense
if (current < 3) {
p.getWorld().playSound(p.getLocation(), Sound.BLOCK_ANVIL_USE, 1F, 2F);
} else {
Inventory dispInv = dispenser.getInventory();
Inventory outputInv2 = findOutputInventory(output, dispenser.getBlock(), dispInv);
p.getWorld().playSound(p.getLocation(), Sound.ENTITY_ARROW_HIT_PLAYER, 1F, 1F);
if (outputInv2 != null) {
outputInv2.addItem(output);
} else if (InvUtils.fits(dispInv, output)) {
dispInv.addItem(output);
} else {
// fallback
dispenser.getWorld().dropItemNaturally(dispenser.getLocation(), output);
}
handleCraftedItem(output, dispenser);
}
}, j * 20L);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -96,17 +96,8 @@ private void craft(Player p, ItemStack output, Dispenser dispenser) {
if (j < 3) {
p.getWorld().playSound(p.getLocation(), j == 1 ? Sound.BLOCK_PISTON_CONTRACT : Sound.BLOCK_PISTON_EXTEND, 1F, j == 0 ? 1F : 2F);
} else {
Inventory dispInv = dispenser.getInventory();
Inventory outputInv = findOutputInventory(output, dispenser.getBlock(), dispInv);
p.getWorld().playSound(p.getLocation(), Sound.ENTITY_ARROW_HIT_PLAYER, 1F, 1F);
if (outputInv != null) {
outputInv.addItem(output);
} else if (InvUtils.fits(dispInv, output)) {
dispInv.addItem(output);
} else {
// fallback
dispenser.getWorld().dropItemNaturally(dispenser.getLocation(), output);
}
handleCraftedItem(output, dispenser);
}
}, i * 20L);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -106,17 +106,8 @@ private void startAnimation(Player p, Block b, ItemStack output, Dispenser dispe
if (current < 3) {
p.getWorld().playSound(b.getLocation(), Sound.BLOCK_WOODEN_BUTTON_CLICK_ON, 1F, 1F);
} else {
Inventory dispInv = dispenser.getInventory();
Inventory outputInv = findOutputInventory(output, dispenser.getBlock(), dispInv);
p.getWorld().playSound(p.getLocation(), Sound.ENTITY_ARROW_HIT_PLAYER, 1F, 1F);
if (outputInv != null) {
outputInv.addItem(output);
} else if (InvUtils.fits(dispInv, output)) {
dispInv.addItem(output);
} else {
// fallback
dispenser.getWorld().dropItemNaturally(dispenser.getLocation(), output);
}
handleCraftedItem(output, dispenser);
}
}, j * 20L);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -85,17 +85,8 @@ private void craft(Player p, Block b, ItemStack output, Dispenser dispenser) {
if (j < 3) {
p.getWorld().playSound(b.getLocation(), Sound.ENTITY_TNT_PRIMED, 1F, 1F);
} else {
Inventory dispInv = dispenser.getInventory();
Inventory outputInv = findOutputInventory(output, dispenser.getBlock(), dispInv);
p.getWorld().playSound(p.getLocation(), Sound.ENTITY_ARROW_HIT_PLAYER, 1F, 1F);
if (outputInv != null) {
outputInv.addItem(output);
} else if (InvUtils.fits(dispInv, output)) {
dispInv.addItem(output);
} else {
// fallback
dispenser.getWorld().dropItemNaturally(dispenser.getLocation(), output);
}
handleCraftedItem(output, dispenser);
}
}, i * 20L);
}
Expand Down

0 comments on commit 0128d57

Please sign in to comment.