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

Refactoring

This commit is contained in:
TheBusyBiscuit 2019-09-01 23:21:01 +02:00
parent 7ec4924665
commit 90327e6908

View File

@ -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<AutonomousMachineHandler> {
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()]);
}