From 90327e6908dbb94a6f18505815d7d1ac3960d4c8 Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Sun, 1 Sep 2019 23:21:01 +0200 Subject: [PATCH] Refactoring --- .../SlimefunItem/machines/BlockPlacer.java | 71 +++++++++---------- 1 file changed, 33 insertions(+), 38 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/BlockPlacer.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/BlockPlacer.java index 8eb895778..5254a4493 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/BlockPlacer.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/BlockPlacer.java @@ -5,58 +5,44 @@ import java.util.List; import org.bukkit.Bukkit; import org.bukkit.Effect; import org.bukkit.Material; -import org.bukkit.block.Block; -import org.bukkit.block.Dispenser; -import org.bukkit.event.block.BlockDispenseEvent; import org.bukkit.inventory.ItemStack; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Objects.Category; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SimpleSlimefunItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Objects.handlers.AutonomousMachineHandler; import me.mrCookieSlime.Slimefun.api.BlockStorage; import me.mrCookieSlime.Slimefun.api.Slimefun; -public class BlockPlacer extends SlimefunItem { +public class BlockPlacer extends SimpleSlimefunItem { private String[] blacklist; public BlockPlacer(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe, String[] keys, Object[] values) { super(category, item, id, recipeType, recipe, keys, values); } - + @Override - public void register(boolean slimefun) { - addItemHandler(new AutonomousMachineHandler() { - - @Override - public boolean onBlockDispense(final BlockDispenseEvent e, Block dispenser, final Dispenser d, Block block, Block chest, SlimefunItem machine) { - if (machine.getID().equalsIgnoreCase(getID())) { - e.setCancelled(true); + public AutonomousMachineHandler getItemHandler() { + return (e, dispenser, d, block, chest, machine) -> { + if (machine.getID().equalsIgnoreCase(getID())) { + e.setCancelled(true); + + if ((block.getType() == null || block.getType() == Material.AIR) && e.getItem().getType().isBlock()) { + for (String blockType : blacklist) { + if (e.getItem().getType().toString().equals(blockType)) { + return false; + } + } - if ((block.getType() == null || block.getType() == Material.AIR) && e.getItem().getType().isBlock()) { - for (String blockType : blacklist) { - if (e.getItem().getType().toString().equals(blockType)) { - return false; - } - } - - SlimefunItem sfItem = SlimefunItem.getByItem(e.getItem()); - if (sfItem != null) { - if (!SlimefunPlugin.getUtilities().blockHandlers.containsKey(sfItem.getID())) { - block.setType(e.getItem().getType()); - BlockStorage.store(block, sfItem.getID()); - block.getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, e.getItem().getType()); - if (d.getInventory().containsAtLeast(e.getItem(), 2)) d.getInventory().removeItem(new CustomItem(e.getItem(), 1)); - else { - Bukkit.getScheduler().runTaskLater(SlimefunPlugin.instance, () -> d.getInventory().removeItem(e.getItem()), 2L); - } - } - } - else { + SlimefunItem sfItem = SlimefunItem.getByItem(e.getItem()); + if (sfItem != null) { + if (!SlimefunPlugin.getUtilities().blockHandlers.containsKey(sfItem.getID())) { block.setType(e.getItem().getType()); + BlockStorage.store(block, sfItem.getID()); block.getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, e.getItem().getType()); if (d.getInventory().containsAtLeast(e.getItem(), 2)) d.getInventory().removeItem(new CustomItem(e.getItem(), 1)); else { @@ -64,14 +50,23 @@ public class BlockPlacer extends SlimefunItem { } } } - return true; + else { + block.setType(e.getItem().getType()); + block.getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, e.getItem().getType()); + if (d.getInventory().containsAtLeast(e.getItem(), 2)) d.getInventory().removeItem(new CustomItem(e.getItem(), 1)); + else { + Bukkit.getScheduler().runTaskLater(SlimefunPlugin.instance, () -> d.getInventory().removeItem(e.getItem()), 2L); + } + } } - else return false; + return true; } - }); - - super.register(slimefun); - + else return false; + }; + } + + @Override + public void postRegister() { List list = (List) Slimefun.getItemValue(getID(), "unplaceable-blocks"); blacklist = list.toArray(new String[list.size()]); }