diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java index c3dc11e02..fdbb88a07 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java @@ -39,12 +39,9 @@ public class SlimefunItem { public static List items = new ArrayList<>(); public static Map mapID = new HashMap<>(); - public static List radioactive = new ArrayList<>(); public static Set tickers = new HashSet<>(); public static List all = new ArrayList<>(); - public static Map> handlers = new HashMap<>(); - public static Map blockhandler = new HashMap<>(); private String id; private String hash; @@ -256,7 +253,7 @@ public class SlimefunItem { for (ItemHandler handler: itemhandlers) { Set handlerset = getHandlers(handler.toCodename()); handlerset.add(handler); - handlers.put(handler.toCodename(), handlerset); + SlimefunPlugin.getUtilities().itemHandlers.put(handler.toCodename(), handlerset); } if (SlimefunPlugin.getSettings().printOutLoading) { @@ -439,22 +436,22 @@ public class SlimefunItem { } public void register(boolean vanilla, SlimefunBlockHandler handler) { - blockhandler.put(getID(), handler); + SlimefunPlugin.getUtilities().blockHandlers.put(getID(), handler); register(vanilla); } public void register(SlimefunBlockHandler handler) { - blockhandler.put(getID(), handler); + SlimefunPlugin.getUtilities().blockHandlers.put(getID(), handler); register(false); } public static Set getHandlers(String codeid) { - if (handlers.containsKey(codeid)) return handlers.get(codeid); + if (SlimefunPlugin.getUtilities().itemHandlers.containsKey(codeid)) return SlimefunPlugin.getUtilities().itemHandlers.get(codeid); else return new HashSet<>(); } public static void setRadioactive(ItemStack item) { - radioactive.add(item); + SlimefunPlugin.getUtilities().radioactiveItems.add(item); } public static ItemStack getItem(String id) { @@ -521,7 +518,7 @@ public class SlimefunItem { } public static void registerBlockHandler(String id, SlimefunBlockHandler handler) { - blockhandler.put(id, handler); + SlimefunPlugin.getUtilities().blockHandlers.put(id, handler); } public void registerChargeableBlock(boolean vanilla, int capacity, ItemHandler... handlers) { diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AContainer.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AContainer.java index e956bfc40..dec4b0b84 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AContainer.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AContainer.java @@ -12,8 +12,6 @@ import org.bukkit.entity.Player; import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.meta.Damageable; -import org.bukkit.inventory.meta.ItemMeta; import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib; import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config; @@ -218,18 +216,7 @@ public abstract class AContainer extends SlimefunItem { if (isProcessing(b)) { int timeleft = progress.get(b); if (timeleft > 0) { - ItemStack item = getProgressBar().clone(); - ItemMeta im = item.getItemMeta(); - ((Damageable) im).setDamage(MachineHelper.getDurability(item, timeleft, processing.get(b).getTicks())); - im.setDisplayName(" "); - List lore = new ArrayList<>(); - lore.add(MachineHelper.getProgress(timeleft, processing.get(b).getTicks())); - lore.add(""); - lore.add(MachineHelper.getTimeLeft(timeleft / 2)); - im.setLore(lore); - item.setItemMeta(im); - - BlockStorage.getInventory(b).replaceExistingItem(22, item); + MachineHelper.updateProgressbar(BlockStorage.getInventory(b), 22, timeleft, processing.get(b).getTicks(), getProgressBar()); if (ChargableBlock.isChargable(b)) { if (ChargableBlock.getCharge(b) < getEnergyConsumption()) return; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/ADrill.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/ADrill.java index 8baa89503..0e17512ea 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/ADrill.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/ADrill.java @@ -1,15 +1,10 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems; -import java.util.ArrayList; -import java.util.List; - import org.bukkit.Material; import org.bukkit.block.Block; import org.bukkit.entity.Player; import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.meta.Damageable; -import org.bukkit.inventory.meta.ItemMeta; import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ClickAction; @@ -110,18 +105,7 @@ public abstract class ADrill extends AContainer { if (isProcessing(b)) { int timeleft = progress.get(b); if (timeleft > 0) { - ItemStack item = getProgressBar().clone(); - ItemMeta im = item.getItemMeta(); - ((Damageable) im).setDamage(MachineHelper.getDurability(item, timeleft, processing.get(b).getTicks())); - im.setDisplayName(" "); - List lore = new ArrayList<>(); - lore.add(MachineHelper.getProgress(timeleft, processing.get(b).getTicks())); - lore.add(""); - lore.add(MachineHelper.getTimeLeft(timeleft / 2)); - im.setLore(lore); - item.setItemMeta(im); - - BlockStorage.getInventory(b).replaceExistingItem(22, item); + MachineHelper.updateProgressbar(BlockStorage.getInventory(b), 22, timeleft, processing.get(b).getTicks(), getProgressBar()); if (ChargableBlock.getCharge(b) < getEnergyConsumption()) return; ChargableBlock.addCharge(b, -getEnergyConsumption()); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AGenerator.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AGenerator.java index 997448955..066a8343a 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AGenerator.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AGenerator.java @@ -1,9 +1,7 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems; -import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; -import java.util.List; import java.util.Map; import java.util.Set; @@ -15,8 +13,6 @@ import org.bukkit.entity.Player; import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.meta.Damageable; -import org.bukkit.inventory.meta.ItemMeta; import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib; import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config; @@ -169,18 +165,7 @@ public abstract class AGenerator extends SlimefunItem { if (isProcessing(l)) { int timeleft = progress.get(l); if (timeleft > 0) { - ItemStack item = getProgressBar().clone(); - ItemMeta im = item.getItemMeta(); - ((Damageable) im).setDamage(MachineHelper.getDurability(item, timeleft, processing.get(l).getTicks())); - im.setDisplayName(" "); - List lore = new ArrayList<>(); - lore.add(MachineHelper.getProgress(timeleft, processing.get(l).getTicks())); - lore.add(""); - lore.add(MachineHelper.getTimeLeft(timeleft / 2)); - im.setLore(lore); - item.setItemMeta(im); - - BlockStorage.getInventory(l).replaceExistingItem(22, item); + MachineHelper.updateProgressbar(BlockStorage.getInventory(l), 22, timeleft, processing.get(l).getTicks(), getProgressBar()); if (ChargableBlock.isChargable(l)) { if (ChargableBlock.getMaxCharge(l) - ChargableBlock.getCharge(l) >= getEnergyProduction()) { diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AReactor.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AReactor.java index 710bb50d2..4cddf3a39 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AReactor.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AReactor.java @@ -1,9 +1,7 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems; -import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; -import java.util.List; import java.util.Map; import java.util.Optional; import java.util.Random; @@ -18,7 +16,6 @@ import org.bukkit.block.BlockFace; import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.meta.ItemMeta; import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib; import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config; @@ -279,18 +276,7 @@ public abstract class AReactor extends SlimefunItem { if (!l.getBlock().getRelative(cooling[new Random().nextInt(cooling.length)]).isLiquid()) explode.add(l); }); - ItemStack item = getProgressBar().clone(); - ItemMeta im = item.getItemMeta(); - im.setDisplayName(" "); - List lore = new ArrayList<>(); - lore.add(MachineHelper.getProgress(timeleft, processing.get(l).getTicks())); - lore.add(MachineHelper.getCoolant(timeleft, processing.get(l).getTicks())); - lore.add(""); - lore.add(MachineHelper.getTimeLeft(timeleft / 2)); - im.setLore(lore); - item.setItemMeta(im); - - BlockStorage.getInventory(l).replaceExistingItem(22, item); + MachineHelper.updateProgressbar(BlockStorage.getInventory(l), 22, timeleft, processing.get(l).getTicks(), getProgressBar()); if (needsCooling()) { boolean coolant = (processing.get(l).getTicks() - timeleft) % 25 == 0; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/MachineHelper.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/MachineHelper.java index c0d5bd31c..79062e06b 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/MachineHelper.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/MachineHelper.java @@ -1,7 +1,14 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems; +import java.util.ArrayList; +import java.util.List; + import org.bukkit.ChatColor; import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.Damageable; +import org.bukkit.inventory.meta.ItemMeta; + +import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu; public final class MachineHelper { @@ -79,5 +86,20 @@ public final class MachineHelper { public static short getDurability(ItemStack item, int timeleft, int max) { return (short) ((item.getType().getMaxDurability() / max) * timeleft); } + + public static void updateProgressbar(BlockMenu menu, int slot, int timeleft, int time, ItemStack indicator) { + ItemStack item = indicator.clone(); + ItemMeta im = item.getItemMeta(); + ((Damageable) im).setDamage(getDurability(item, timeleft, time)); + im.setDisplayName(" "); + List lore = new ArrayList<>(); + lore.add(getProgress(timeleft, time)); + lore.add(""); + lore.add(getTimeLeft(timeleft / 2)); + im.setLore(lore); + item.setItemMeta(im); + + menu.replaceExistingItem(22, item); + } } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/BlockPlacer.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/BlockPlacer.java index 371cb5b3c..943ee9adc 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/BlockPlacer.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/BlockPlacer.java @@ -46,7 +46,7 @@ public class BlockPlacer extends SlimefunItem { SlimefunItem sfItem = SlimefunItem.getByItem(e.getItem()); if (sfItem != null) { - if (!SlimefunItem.blockhandler.containsKey(sfItem.getID())) { + 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()); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoAnvil.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoAnvil.java index ab48a45ed..c1e18d108 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoAnvil.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoAnvil.java @@ -1,8 +1,5 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric; -import java.util.ArrayList; -import java.util.List; - import org.bukkit.Material; import org.bukkit.block.Block; import org.bukkit.inventory.ItemStack; @@ -55,18 +52,7 @@ public abstract class AutoAnvil extends AContainer { if (isProcessing(b)) { int timeleft = progress.get(b); if (timeleft > 0) { - ItemStack item = getProgressBar().clone(); - ItemMeta im = item.getItemMeta(); - ((Damageable) im).setDamage(MachineHelper.getDurability(item, timeleft, processing.get(b).getTicks())); - im.setDisplayName(" "); - List lore = new ArrayList<>(); - lore.add(MachineHelper.getProgress(timeleft, processing.get(b).getTicks())); - lore.add(""); - lore.add(MachineHelper.getTimeLeft(timeleft / 2)); - im.setLore(lore); - item.setItemMeta(im); - - BlockStorage.getInventory(b).replaceExistingItem(22, item); + MachineHelper.updateProgressbar(BlockStorage.getInventory(b), 22, timeleft, processing.get(b).getTicks(), getProgressBar()); if (ChargableBlock.isChargable(b)) { if (ChargableBlock.getCharge(b) < getEnergyConsumption()) return; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoDisenchanter.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoDisenchanter.java index c649bdb43..a383f8d8a 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoDisenchanter.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoDisenchanter.java @@ -1,9 +1,7 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric; -import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; -import java.util.List; import java.util.Map; import java.util.Set; @@ -11,9 +9,7 @@ import org.bukkit.Material; import org.bukkit.block.Block; import org.bukkit.enchantments.Enchantment; import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.meta.Damageable; import org.bukkit.inventory.meta.EnchantmentStorageMeta; -import org.bukkit.inventory.meta.ItemMeta; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.InvUtils; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; @@ -56,18 +52,7 @@ public class AutoDisenchanter extends AContainer { if (isProcessing(b)) { int timeleft = progress.get(b); if (timeleft > 0) { - ItemStack item = getProgressBar().clone(); - ItemMeta im = item.getItemMeta(); - ((Damageable) im).setDamage(MachineHelper.getDurability(item, timeleft, processing.get(b).getTicks())); - im.setDisplayName(" "); - List lore = new ArrayList<>(); - lore.add(MachineHelper.getProgress(timeleft, processing.get(b).getTicks())); - lore.add(""); - lore.add(MachineHelper.getTimeLeft(timeleft / 2)); - im.setLore(lore); - item.setItemMeta(im); - - BlockStorage.getInventory(b).replaceExistingItem(22, item); + MachineHelper.updateProgressbar(BlockStorage.getInventory(b), 22, timeleft, processing.get(b).getTicks(), getProgressBar()); if (ChargableBlock.isChargable(b)) { if (ChargableBlock.getCharge(b) < getEnergyConsumption()) return; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoDrier.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoDrier.java index 2b54fabee..62e96671c 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoDrier.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoDrier.java @@ -1,5 +1,10 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric; +import org.bukkit.Material; +import org.bukkit.Tag; +import org.bukkit.block.Block; +import org.bukkit.inventory.ItemStack; + import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.InvUtils; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; import me.mrCookieSlime.Slimefun.Lists.RecipeType; @@ -9,15 +14,6 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineHelpe import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecipe; import me.mrCookieSlime.Slimefun.api.BlockStorage; import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock; -import org.bukkit.Material; -import org.bukkit.Tag; -import org.bukkit.block.Block; -import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.meta.Damageable; -import org.bukkit.inventory.meta.ItemMeta; - -import java.util.ArrayList; -import java.util.List; public class AutoDrier extends AContainer { @@ -40,19 +36,8 @@ public class AutoDrier extends AContainer { if (isProcessing(b)) { int timeleft = progress.get(b); if (timeleft > 0) { - ItemStack item = getProgressBar().clone(); - ItemMeta im = item.getItemMeta(); - ((Damageable) im).setDamage(MachineHelper.getDurability(item, timeleft, processing.get(b).getTicks())); - im.setDisplayName(" "); - List lore = new ArrayList<>(); - lore.add(MachineHelper.getProgress(timeleft, processing.get(b).getTicks())); - lore.add(""); - lore.add(MachineHelper.getTimeLeft(timeleft / 2)); - im.setLore(lore); - item.setItemMeta(im); - - BlockStorage.getInventory(b).replaceExistingItem(22, item); - + MachineHelper.updateProgressbar(BlockStorage.getInventory(b), 22, timeleft, processing.get(b).getTicks(), getProgressBar()); + if (ChargableBlock.isChargable(b)) { if (ChargableBlock.getCharge(b) < getEnergyConsumption()) return; ChargableBlock.addCharge(b, -getEnergyConsumption()); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoEnchanter.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoEnchanter.java index 7a431891e..e1250db32 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoEnchanter.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoEnchanter.java @@ -1,9 +1,7 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric; -import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; -import java.util.List; import java.util.Map; import java.util.Set; @@ -11,9 +9,7 @@ import org.bukkit.Material; import org.bukkit.block.Block; import org.bukkit.enchantments.Enchantment; import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.meta.Damageable; import org.bukkit.inventory.meta.EnchantmentStorageMeta; -import org.bukkit.inventory.meta.ItemMeta; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.InvUtils; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; @@ -56,19 +52,8 @@ public class AutoEnchanter extends AContainer { if (isProcessing(b)) { int timeleft = progress.get(b); if (timeleft > 0) { - ItemStack item = getProgressBar().clone(); - ItemMeta im = item.getItemMeta(); - ((Damageable) im).setDamage(MachineHelper.getDurability(item, timeleft, processing.get(b).getTicks())); - im.setDisplayName(" "); - List lore = new ArrayList<>(); - lore.add(MachineHelper.getProgress(timeleft, processing.get(b).getTicks())); - lore.add(""); - lore.add(MachineHelper.getTimeLeft(timeleft / 2)); - im.setLore(lore); - item.setItemMeta(im); - - BlockStorage.getInventory(b).replaceExistingItem(22, item); - + MachineHelper.updateProgressbar(BlockStorage.getInventory(b), 22, timeleft, processing.get(b).getTicks(), getProgressBar()); + if (ChargableBlock.isChargable(b)) { if (ChargableBlock.getCharge(b) < getEnergyConsumption()) return; ChargableBlock.addCharge(b, -getEnergyConsumption()); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricDustWasher.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricDustWasher.java index 7d6a30f6c..cf12b836c 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricDustWasher.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricDustWasher.java @@ -1,14 +1,10 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric; -import java.util.ArrayList; -import java.util.List; import java.util.Random; import org.bukkit.Material; import org.bukkit.block.Block; import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.meta.Damageable; -import org.bukkit.inventory.meta.ItemMeta; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.InvUtils; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; @@ -47,18 +43,7 @@ public abstract class ElectricDustWasher extends AContainer { if (isProcessing(b)) { int timeleft = progress.get(b); if (timeleft > 0 && getSpeed() < 10) { - ItemStack item = getProgressBar().clone(); - ItemMeta im = item.getItemMeta(); - ((Damageable) im).setDamage(MachineHelper.getDurability(item, timeleft, processing.get(b).getTicks())); - im.setDisplayName(" "); - List lore = new ArrayList<>(); - lore.add(MachineHelper.getProgress(timeleft, processing.get(b).getTicks())); - lore.add(""); - lore.add(MachineHelper.getTimeLeft(timeleft / 2)); - im.setLore(lore); - item.setItemMeta(im); - - BlockStorage.getInventory(b).replaceExistingItem(22, item); + MachineHelper.updateProgressbar(BlockStorage.getInventory(b), 22, timeleft, processing.get(b).getTicks(), getProgressBar()); if (ChargableBlock.isChargable(b)) { if (ChargableBlock.getCharge(b) < getEnergyConsumption()) return; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricGoldPan.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricGoldPan.java index 94dc3efb0..595322b0f 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricGoldPan.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricGoldPan.java @@ -1,7 +1,8 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric; -import java.util.ArrayList; -import java.util.List; +import org.bukkit.Material; +import org.bukkit.block.Block; +import org.bukkit.inventory.ItemStack; import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.InvUtils; @@ -16,12 +17,6 @@ import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.api.BlockStorage; import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock; -import org.bukkit.Material; -import org.bukkit.block.Block; -import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.meta.Damageable; -import org.bukkit.inventory.meta.ItemMeta; - public abstract class ElectricGoldPan extends AContainer { public ElectricGoldPan(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) { @@ -45,18 +40,7 @@ public abstract class ElectricGoldPan extends AContainer { if (isProcessing(b)) { int timeleft = progress.get(b); if (timeleft > 0 && getSpeed() < 10) { - ItemStack item = getProgressBar().clone(); - ItemMeta im = item.getItemMeta(); - ((Damageable) im).setDamage(MachineHelper.getDurability(item, timeleft, processing.get(b).getTicks())); - im.setDisplayName(" "); - List lore = new ArrayList<>(); - lore.add(MachineHelper.getProgress(timeleft, processing.get(b).getTicks())); - lore.add(""); - lore.add(MachineHelper.getTimeLeft(timeleft / 2)); - im.setLore(lore); - item.setItemMeta(im); - - BlockStorage.getInventory(b).replaceExistingItem(22, item); + MachineHelper.updateProgressbar(BlockStorage.getInventory(b), 22, timeleft, processing.get(b).getTicks(), getProgressBar()); if (ChargableBlock.isChargable(b)) { if (ChargableBlock.getCharge(b) < getEnergyConsumption()) return; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/HeatedPressureChamber.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/HeatedPressureChamber.java index b6d65363a..bef4a3c05 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/HeatedPressureChamber.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/HeatedPressureChamber.java @@ -10,8 +10,6 @@ import org.bukkit.Material; import org.bukkit.block.Block; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.meta.Damageable; -import org.bukkit.inventory.meta.ItemMeta; import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib; import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config; @@ -142,18 +140,7 @@ public abstract class HeatedPressureChamber extends AContainer { int timeleft = progress.get(b); if (timeleft > 0) { - ItemStack item = getProgressBar().clone(); - ItemMeta im = item.getItemMeta(); - im.setDisplayName(" "); - ((Damageable) im).setDamage(MachineHelper.getDurability(item, timeleft, processing.get(b).getTicks())); - List lore = new ArrayList<>(); - lore.add(MachineHelper.getProgress(timeleft, processing.get(b).getTicks())); - lore.add(""); - lore.add(MachineHelper.getTimeLeft(timeleft / 2)); - im.setLore(lore); - item.setItemMeta(im); - - BlockStorage.getInventory(b).replaceExistingItem(22, item); + MachineHelper.updateProgressbar(BlockStorage.getInventory(b), 22, timeleft, processing.get(b).getTicks(), getProgressBar()); if (ChargableBlock.isChargable(b)) { if (ChargableBlock.getCharge(b) < getEnergyConsumption()) return; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/OilPump.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/OilPump.java index a5cb3ee73..17d369cfc 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/OilPump.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/OilPump.java @@ -1,14 +1,9 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric; -import java.util.ArrayList; -import java.util.List; - import org.bukkit.Material; import org.bukkit.block.Block; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.meta.Damageable; -import org.bukkit.inventory.meta.ItemMeta; import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.InvUtils; @@ -80,18 +75,7 @@ public abstract class OilPump extends AContainer { if (isProcessing(b)) { int timeleft = progress.get(b); if (timeleft > 0) { - ItemStack item = getProgressBar().clone(); - ItemMeta im = item.getItemMeta(); - ((Damageable) im).setDamage(MachineHelper.getDurability(item, timeleft, processing.get(b).getTicks())); - im.setDisplayName(" "); - List lore = new ArrayList<>(); - lore.add(MachineHelper.getProgress(timeleft, processing.get(b).getTicks())); - lore.add(""); - lore.add(MachineHelper.getTimeLeft(timeleft / 2)); - im.setLore(lore); - item.setItemMeta(im); - - BlockStorage.getInventory(b).replaceExistingItem(22, item); + MachineHelper.updateProgressbar(BlockStorage.getInventory(b), 22, timeleft, processing.get(b).getTicks(), getProgressBar()); if (ChargableBlock.getCharge(b) < getEnergyConsumption()) return; ChargableBlock.addCharge(b, -getEnergyConsumption()); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/Refinery.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/Refinery.java index 534f547e0..c05172574 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/Refinery.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/Refinery.java @@ -1,7 +1,8 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric; -import java.util.ArrayList; -import java.util.List; +import org.bukkit.Material; +import org.bukkit.block.Block; +import org.bukkit.inventory.ItemStack; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.InvUtils; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; @@ -15,12 +16,6 @@ import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.api.BlockStorage; import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock; -import org.bukkit.Material; -import org.bukkit.block.Block; -import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.meta.Damageable; -import org.bukkit.inventory.meta.ItemMeta; - public abstract class Refinery extends AContainer { public Refinery(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) { @@ -47,18 +42,7 @@ public abstract class Refinery extends AContainer { if (isProcessing(b)) { int timeleft = progress.get(b); if (timeleft > 0) { - ItemStack item = getProgressBar().clone(); - ItemMeta im = item.getItemMeta(); - ((Damageable) im).setDamage(MachineHelper.getDurability(item, timeleft, processing.get(b).getTicks())); - im.setDisplayName(" "); - List lore = new ArrayList<>(); - lore.add(MachineHelper.getProgress(timeleft, processing.get(b).getTicks())); - lore.add(""); - lore.add(MachineHelper.getTimeLeft(timeleft / 2)); - im.setLore(lore); - item.setItemMeta(im); - - BlockStorage.getInventory(b).replaceExistingItem(22, item); + MachineHelper.updateProgressbar(BlockStorage.getInventory(b), 22, timeleft, processing.get(b).getTicks(), getProgressBar()); if (ChargableBlock.isChargable(b)) { if (ChargableBlock.getCharge(b) < getEnergyConsumption()) return; diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java index b9fd22e5c..87ef41899 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java @@ -1451,9 +1451,10 @@ public final class SlimefunSetup { b.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, b.getType()); SlimefunItem sfItem = BlockStorage.check(b); boolean allow = false; + if (sfItem != null && !(sfItem instanceof HandledBlock)) { - if (SlimefunItem.blockhandler.containsKey(sfItem.getID())) { - allow = SlimefunItem.blockhandler.get(sfItem.getID()).onBreak(e.getPlayer(), e.getBlock(), sfItem, UnregisterReason.PLAYER_BREAK); + if (SlimefunPlugin.getUtilities().blockHandlers.containsKey(sfItem.getID())) { + allow = SlimefunPlugin.getUtilities().blockHandlers.get(sfItem.getID()).onBreak(e.getPlayer(), e.getBlock(), sfItem, UnregisterReason.PLAYER_BREAK); } if (allow) { drops.add(BlockStorage.retrieve(e.getBlock())); diff --git a/src/me/mrCookieSlime/Slimefun/SlimefunPlugin.java b/src/me/mrCookieSlime/Slimefun/SlimefunPlugin.java index 6fa0972e6..4a70482f7 100644 --- a/src/me/mrCookieSlime/Slimefun/SlimefunPlugin.java +++ b/src/me/mrCookieSlime/Slimefun/SlimefunPlugin.java @@ -251,9 +251,11 @@ public final class SlimefunPlugin extends JavaPlugin { if (SlimefunItem.getByID("ANCIENT_ALTAR") != null) new AncientAltarListener((SlimefunPlugin) instance); }, 0); + + SlimefunCommand command = new SlimefunCommand(this); - getCommand("slimefun").setExecutor(new SlimefunCommand(this)); - getCommand("slimefun").setTabCompleter(new SlimefunTabCompleter()); + getCommand("slimefun").setExecutor(command); + getCommand("slimefun").setTabCompleter(new SlimefunTabCompleter(command)); // Armor Update Task if (config.getBoolean("options.enable-armor-effects")) { @@ -273,7 +275,7 @@ public final class SlimefunPlugin extends JavaPlugin { } } - for (ItemStack radioactive: SlimefunItem.radioactive) { + for (ItemStack radioactive: utilities.radioactiveItems) { if (p.getInventory().containsAtLeast(radioactive, 1) || SlimefunManager.isItemSimiliar(p.getInventory().getItemInOffHand(), radioactive, true)) { // Check if player is wearing the hazmat suit // If so, break the loop @@ -364,12 +366,6 @@ public final class SlimefunPlugin extends JavaPlugin { SlimefunItem.all = null; SlimefunItem.items = null; SlimefunItem.mapID = null; - SlimefunItem.handlers = null; - SlimefunItem.radioactive = null; - SlimefunCommand.arguments = null; - SlimefunCommand.descriptions = null; - SlimefunCommand.tabs = null; - SlimefunItem.blockhandler = null; BlockMenuPreset.presets = null; ChargableBlock.capacitors = null; ChargableBlock.maxCharges = null; diff --git a/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java b/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java index 4b5e6d87b..61a97d243 100644 --- a/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java +++ b/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java @@ -529,7 +529,7 @@ public abstract class ProgrammableAndroid extends SlimefunItem { if (!blockblacklist.contains(block.getType()) && !drops.isEmpty() && CSCoreLib.getLib().getProtectionManager().canBuild(UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner")), block)) { SlimefunItem item = BlockStorage.check(block); if (item != null) { - if (fits(b, item.getItem()) && SlimefunItem.blockhandler.containsKey(item.getID()) && SlimefunItem.blockhandler.get(item.getID()).onBreak(null, block, item, UnregisterReason.ANDROID_DIG)) { + if (fits(b, item.getItem()) && SlimefunPlugin.getUtilities().blockHandlers.containsKey(item.getID()) && SlimefunPlugin.getUtilities().blockHandlers.get(item.getID()).onBreak(null, block, item, UnregisterReason.ANDROID_DIG)) { pushItems(b, BlockStorage.retrieve(block)); block.getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, block.getType()); block.setType(Material.PLAYER_HEAD); diff --git a/src/me/mrCookieSlime/Slimefun/commands/SlimefunCommand.java b/src/me/mrCookieSlime/Slimefun/commands/SlimefunCommand.java index a5da3a818..190db46f1 100644 --- a/src/me/mrCookieSlime/Slimefun/commands/SlimefunCommand.java +++ b/src/me/mrCookieSlime/Slimefun/commands/SlimefunCommand.java @@ -35,17 +35,17 @@ import me.mrCookieSlime.Slimefun.Objects.Research; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Setup.Messages; import me.mrCookieSlime.Slimefun.api.BlockStorage; -import me.mrCookieSlime.Slimefun.api.SlimefunGuideLayout; import me.mrCookieSlime.Slimefun.api.PlayerProfile; import me.mrCookieSlime.Slimefun.api.Slimefun; +import me.mrCookieSlime.Slimefun.api.SlimefunGuideLayout; public class SlimefunCommand implements CommandExecutor, Listener { public SlimefunPlugin plugin; - public static List arguments = new ArrayList<>(); - public static List descriptions = new ArrayList<>(); - public static List tabs = new ArrayList<>(); + private List arguments = new ArrayList<>(); + private List descriptions = new ArrayList<>(); + private List tabs = new ArrayList<>(); public SlimefunCommand(SlimefunPlugin plugin) { this.plugin = plugin; @@ -319,4 +319,8 @@ public class SlimefunCommand implements CommandExecutor, Listener { } } + public List getTabArguments() { + return tabs; + } + } diff --git a/src/me/mrCookieSlime/Slimefun/commands/SlimefunTabCompleter.java b/src/me/mrCookieSlime/Slimefun/commands/SlimefunTabCompleter.java index 2e8601421..9d79ec269 100644 --- a/src/me/mrCookieSlime/Slimefun/commands/SlimefunTabCompleter.java +++ b/src/me/mrCookieSlime/Slimefun/commands/SlimefunTabCompleter.java @@ -11,11 +11,17 @@ import org.bukkit.command.CommandSender; import org.bukkit.command.TabCompleter; public class SlimefunTabCompleter implements TabCompleter { + + private SlimefunCommand command; + + public SlimefunTabCompleter(SlimefunCommand command) { + this.command = command; + } @Override public List onTabComplete(CommandSender sender, Command cmd, String label, String[] args) { if (args.length == 1) { - return createReturnList(SlimefunCommand.tabs, args[0]); + return createReturnList(command.getTabArguments(), args[0]); } else if (args.length == 3) { if (args[0].equalsIgnoreCase("give")) { diff --git a/src/me/mrCookieSlime/Slimefun/listeners/ToolListener.java b/src/me/mrCookieSlime/Slimefun/listeners/ToolListener.java index 0d608b19c..72e5e8f7e 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/ToolListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/ToolListener.java @@ -70,8 +70,8 @@ public class ToolListener implements Listener { if (sfItem != null && !sfItem.isDisabled() && !(sfItem instanceof NotPlaceable)) { BlockStorage.addBlockInfo(e.getBlock(), "id", sfItem.getID(), true); - if (SlimefunItem.blockhandler.containsKey(sfItem.getID())) { - SlimefunItem.blockhandler.get(sfItem.getID()).onPlace(e.getPlayer(), e.getBlock(), sfItem); + if (utilities.blockHandlers.containsKey(sfItem.getID())) { + utilities.blockHandlers.get(sfItem.getID()).onPlace(e.getPlayer(), e.getBlock(), sfItem); } else { for (ItemHandler handler : SlimefunItem.getHandlers("BlockPlaceHandler")) { @@ -186,8 +186,8 @@ public class ToolListener implements Listener { SlimefunItem sfItem = BlockStorage.check(e.getBlock().getRelative(BlockFace.UP)); if (sfItem != null && !(sfItem instanceof HandledBlock)) { - if (SlimefunItem.blockhandler.containsKey(sfItem.getID())) { - allow = SlimefunItem.blockhandler.get(sfItem.getID()).onBreak(e.getPlayer(), block2, sfItem, UnregisterReason.PLAYER_BREAK); + if (utilities.blockHandlers.containsKey(sfItem.getID())) { + allow = utilities.blockHandlers.get(sfItem.getID()).onBreak(e.getPlayer(), block2, sfItem, UnregisterReason.PLAYER_BREAK); } if (allow) { block2.getWorld().dropItemNaturally(block2.getLocation(), BlockStorage.retrieve(block2)); @@ -203,8 +203,8 @@ public class ToolListener implements Listener { SlimefunItem sfItem = BlockStorage.check(e.getBlock()); if (sfItem != null && !(sfItem instanceof HandledBlock)) { - if (SlimefunItem.blockhandler.containsKey(sfItem.getID())) { - allow = SlimefunItem.blockhandler.get(sfItem.getID()).onBreak(e.getPlayer(), e.getBlock(), sfItem, UnregisterReason.PLAYER_BREAK); + if (utilities.blockHandlers.containsKey(sfItem.getID())) { + allow = utilities.blockHandlers.get(sfItem.getID()).onBreak(e.getPlayer(), e.getBlock(), sfItem, UnregisterReason.PLAYER_BREAK); } else { // Walk over all registered block break handlers until one says that it'll handle it. @@ -256,8 +256,8 @@ public class ToolListener implements Listener { blocks.remove(); if (!item.getID().equalsIgnoreCase("HARDENED_GLASS") && !item.getID().equalsIgnoreCase("WITHER_PROOF_OBSIDIAN") && !item.getID().equalsIgnoreCase("WITHER_PROOF_GLASS") && !item.getID().equalsIgnoreCase("FORCEFIELD_PROJECTOR") && !item.getID().equalsIgnoreCase("FORCEFIELD_RELAY")) { boolean success = true; - if (SlimefunItem.blockhandler.containsKey(item.getID())) { - success = SlimefunItem.blockhandler.get(item.getID()).onBreak(null, block, item, UnregisterReason.EXPLODE); + if (utilities.blockHandlers.containsKey(item.getID())) { + success = utilities.blockHandlers.get(item.getID()).onBreak(null, block, item, UnregisterReason.EXPLODE); } if (success) { BlockStorage.clearBlockInfo(block); diff --git a/src/me/mrCookieSlime/Slimefun/utils/Utilities.java b/src/me/mrCookieSlime/Slimefun/utils/Utilities.java index c6c9487ab..7be5c8505 100644 --- a/src/me/mrCookieSlime/Slimefun/utils/Utilities.java +++ b/src/me/mrCookieSlime/Slimefun/utils/Utilities.java @@ -17,6 +17,8 @@ import org.bukkit.inventory.ItemStack; import me.mrCookieSlime.Slimefun.GEO.OreGenResource; import me.mrCookieSlime.Slimefun.Objects.Category; +import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler; +import me.mrCookieSlime.Slimefun.Objects.handlers.ItemHandler; import me.mrCookieSlime.Slimefun.Setup.PostSlimefunLoadingHandler; import me.mrCookieSlime.Slimefun.ancient_altar.AltarRecipe; import me.mrCookieSlime.Slimefun.api.BlockStorage; @@ -38,6 +40,10 @@ import me.mrCookieSlime.Slimefun.hooks.github.GitHubConnector; public final class Utilities { public int vanillaItems = 0; + + public Set radioactiveItems = new HashSet<>(); + public Map> itemHandlers = new HashMap<>(); + public Map blockHandlers = new HashMap<>(); public List currentlyEnabledCategories = new ArrayList<>();