From 33b09ef63de70be72d40afbc24557a2c47988827 Mon Sep 17 00:00:00 2001 From: dNiym Date: Mon, 26 Aug 2019 18:05:19 -0400 Subject: [PATCH 001/169] Fixes disabled items in worlds #735 --- .../Slimefun/listeners/ItemListener.java | 28 ++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java b/src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java index d2c2c75f8..a46a6945e 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java @@ -98,9 +98,35 @@ public class ItemListener implements Listener { } } + /* + * Handles Left click use and checks for disabled items. + */ + @EventHandler + public void enabledCheck(PlayerInteractEvent e) { + if(e.getAction() == Action.RIGHT_CLICK_AIR || e.getAction() == Action.RIGHT_CLICK_BLOCK) + return; + + ItemStack item = e.getItem(); + + if(item == null) + item = e.getPlayer().getInventory().getItemInMainHand(); + + if(item == null) + item = e.getPlayer().getInventory().getItemInOffHand(); + + if(item == null) + return; + + + if(!Slimefun.isEnabled(e.getPlayer(), item, true)) + e.setCancelled(true); + + } @EventHandler public void debug(PlayerInteractEvent e) { - if (e.getAction().equals(Action.PHYSICAL) || !e.getHand().equals(EquipmentSlot.HAND)) return; + if (e.getAction().equals(Action.PHYSICAL) || !e.getHand().equals(EquipmentSlot.HAND)) { + return; + } Player p = e.getPlayer(); if (SlimefunManager.isItemSimiliar(e.getPlayer().getInventory().getItemInMainHand(), SlimefunItems.DEBUG_FISH, true) || SlimefunManager.isItemSimiliar(e.getPlayer().getInventory().getItemInOffHand(), SlimefunItems.DEBUG_FISH, true)) { From 2b680ec88e689ddbc8efd3369f67a6f48f8a2531 Mon Sep 17 00:00:00 2001 From: dNiym Date: Mon, 26 Aug 2019 18:08:08 -0400 Subject: [PATCH 002/169] Undid un-needed brackets {} --- src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java b/src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java index a46a6945e..002868a8e 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java @@ -124,9 +124,8 @@ public class ItemListener implements Listener { } @EventHandler public void debug(PlayerInteractEvent e) { - if (e.getAction().equals(Action.PHYSICAL) || !e.getHand().equals(EquipmentSlot.HAND)) { - return; - } + if (e.getAction().equals(Action.PHYSICAL) || !e.getHand().equals(EquipmentSlot.HAND)) return; + Player p = e.getPlayer(); if (SlimefunManager.isItemSimiliar(e.getPlayer().getInventory().getItemInMainHand(), SlimefunItems.DEBUG_FISH, true) || SlimefunManager.isItemSimiliar(e.getPlayer().getInventory().getItemInOffHand(), SlimefunItems.DEBUG_FISH, true)) { From 07234cf2467d6385fb8c3c1662ac77ae5c0c5f06 Mon Sep 17 00:00:00 2001 From: dNiym Date: Mon, 26 Aug 2019 18:12:08 -0400 Subject: [PATCH 003/169] Made requested changes. --- src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java b/src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java index 002868a8e..a6e7537a9 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java @@ -103,7 +103,7 @@ public class ItemListener implements Listener { */ @EventHandler public void enabledCheck(PlayerInteractEvent e) { - if(e.getAction() == Action.RIGHT_CLICK_AIR || e.getAction() == Action.RIGHT_CLICK_BLOCK) + if(e.getAction() != Action.LEFT_CLICK_AIR && e.getAction() != Action.LEFT_CLICK_BLOCK) return; ItemStack item = e.getItem(); From 65af683a8a20ef4777e0d8136c08a860f51760d2 Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Tue, 27 Aug 2019 13:09:30 +0200 Subject: [PATCH 004/169] Resolves #247 --- .../Slimefun/Setup/MiscSetup.java | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/Setup/MiscSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/MiscSetup.java index 00656a4c3..c89ced948 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/MiscSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/MiscSetup.java @@ -121,6 +121,8 @@ public class MiscSetup { } + List grinder_recipes = new ArrayList<>(); + SlimefunItem grinder = SlimefunItem.getByID("GRIND_STONE"); if (grinder != null) { ItemStack[] input = null; @@ -128,7 +130,7 @@ public class MiscSetup { if (input == null) input = recipe; else { if (input[0] != null && recipe[0] != null) { - SlimefunRecipes.registerMachineRecipe("ELECTRIC_ORE_GRINDER", 4, new ItemStack[] {input[0]}, new ItemStack[] {recipe[0]}); + grinder_recipes.add(new ItemStack[] {input[0], recipe[0]}); } input = null; } @@ -142,12 +144,15 @@ public class MiscSetup { if (input == null) input = recipe; else { if (input[0] != null && recipe[0] != null) { - SlimefunRecipes.registerMachineRecipe("ELECTRIC_ORE_GRINDER", 4, new ItemStack[] {input[0]}, new ItemStack[] {recipe[0]}); + grinder_recipes.add(new ItemStack[] {input[0], recipe[0]}); } input = null; } } } + + // Favour 8 Cobblestone -> 1 Sand Recipe over 1 Cobblestone -> 1 Gravel Recipe + grinder_recipes.stream().sorted((a, b) -> Integer.compare(b[0].getAmount(), a[0].getAmount())).forEach(recipe -> SlimefunRecipes.registerMachineRecipe("ELECTRIC_ORE_GRINDER", 4, new ItemStack[] {recipe[0]}, new ItemStack[] {recipe[1]})); SlimefunItem smeltery = SlimefunItem.getByID("SMELTERY"); if (smeltery != null) { @@ -158,6 +163,7 @@ public class MiscSetup { if (input[0] != null && recipe[0] != null) { List inputs = new ArrayList<>(); boolean dust = false; + for (ItemStack i: input) { if (i != null) { inputs.add(i); @@ -172,14 +178,13 @@ public class MiscSetup { if (SlimefunManager.isItemSimiliar(i, SlimefunItems.ZINC_DUST, true)) dust = true; } } - - if (dust && inputs.size() == 1) { - // Dust -> Ingot Recipe, we want to exclude those - } - else { + + // We want to exclude Dust to Ingot Recipes + if (!(dust && inputs.size() == 1)) { SlimefunRecipes.registerMachineRecipe("ELECTRIC_SMELTERY", 12, inputs.toArray(new ItemStack[inputs.size()]), new ItemStack[] {recipe[0]}); } } + input = null; } } From fd36288efbd31034778b7c70c81701518daadd35 Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Tue, 27 Aug 2019 13:28:07 +0200 Subject: [PATCH 005/169] More Refactoring --- .../AncientAltar/RitualAnimation.java | 32 ++++++++------- .../CSCoreLibLoader.java | 2 +- .../Slimefun/Setup/SlimefunSetup.java | 18 +++++---- .../Slimefun/SlimefunStartup.java | 17 +++----- src/me/mrCookieSlime/Slimefun/Utilities.java | 40 +++++++++++++++++++ src/me/mrCookieSlime/Slimefun/Variables.java | 32 --------------- src/me/mrCookieSlime/Slimefun/api/Soul.java | 14 +++---- .../listeners/AncientAltarListener.java | 34 ++++++++++------ .../Slimefun/listeners/BackpackListener.java | 23 ++++++----- .../Slimefun/listeners/BowListener.java | 30 ++++++++------ .../Slimefun/listeners/DamageListener.java | 12 +++--- .../Slimefun/listeners/ItemListener.java | 13 +++--- .../Slimefun/listeners/ToolListener.java | 8 ++-- 13 files changed, 153 insertions(+), 122 deletions(-) rename src/me/mrCookieSlime/Slimefun/{CSCoreLibSetup => Setup}/CSCoreLibLoader.java (99%) create mode 100644 src/me/mrCookieSlime/Slimefun/Utilities.java delete mode 100644 src/me/mrCookieSlime/Slimefun/Variables.java diff --git a/src/me/mrCookieSlime/Slimefun/AncientAltar/RitualAnimation.java b/src/me/mrCookieSlime/Slimefun/AncientAltar/RitualAnimation.java index 7edd12b1e..9bfd2d98c 100644 --- a/src/me/mrCookieSlime/Slimefun/AncientAltar/RitualAnimation.java +++ b/src/me/mrCookieSlime/Slimefun/AncientAltar/RitualAnimation.java @@ -7,7 +7,7 @@ import java.util.Map; import me.mrCookieSlime.Slimefun.SlimefunStartup; import me.mrCookieSlime.Slimefun.listeners.AncientAltarListener; -import me.mrCookieSlime.Slimefun.Variables; +import me.mrCookieSlime.Slimefun.Utilities; import org.bukkit.Effect; import org.bukkit.Location; @@ -20,19 +20,21 @@ import org.bukkit.inventory.ItemStack; public class RitualAnimation implements Runnable { - List altars; + private List altars; - Block altar; - Location l; - ItemStack output; - List pedestals; - List items; + private Block altar; + private Location l; + private ItemStack output; + private List pedestals; + private List items; - List particles; - Map itemLock = new HashMap<>(); + private List particles; + private Map itemLock = new HashMap<>(); - boolean running; - int stage; + private boolean running; + private int stage; + + private Utilities variables = SlimefunStartup.instance.getUtilities(); public RitualAnimation(List altars, Block altar, Location drop, ItemStack output, List pedestals, List items) { this.l = drop; @@ -126,10 +128,10 @@ public class RitualAnimation implements Runnable { running = false; pedestals.forEach((pblock)-> { - Variables.altarinuse.remove(pblock.getLocation()); + variables.altarinuse.remove(pblock.getLocation()); }); - Variables.altarinuse.remove(altar.getLocation()); // should re-enable altar blocks on craft failure. + variables.altarinuse.remove(altar.getLocation()); // should re-enable altar blocks on craft failure. l.getWorld().playSound(l, Sound.ENTITY_ZOMBIE_ATTACK_IRON_DOOR, 5F, 1F); itemLock.clear(); altars.remove(altar); @@ -142,9 +144,9 @@ public class RitualAnimation implements Runnable { l.getWorld().dropItemNaturally(l.add(0, 1, 0), output); pedestals.forEach((pblock)->{ - Variables.altarinuse.remove(pblock.getLocation()); + variables.altarinuse.remove(pblock.getLocation()); }); - Variables.altarinuse.remove(altar.getLocation()); // should re-enable altar blocks on craft completion. + variables.altarinuse.remove(altar.getLocation()); // should re-enable altar blocks on craft completion. altars.remove(altar); } else { diff --git a/src/me/mrCookieSlime/Slimefun/CSCoreLibSetup/CSCoreLibLoader.java b/src/me/mrCookieSlime/Slimefun/Setup/CSCoreLibLoader.java similarity index 99% rename from src/me/mrCookieSlime/Slimefun/CSCoreLibSetup/CSCoreLibLoader.java rename to src/me/mrCookieSlime/Slimefun/Setup/CSCoreLibLoader.java index ce5cce8e4..280b30c8a 100644 --- a/src/me/mrCookieSlime/Slimefun/CSCoreLibSetup/CSCoreLibLoader.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/CSCoreLibLoader.java @@ -1,4 +1,4 @@ -package me.mrCookieSlime.Slimefun.CSCoreLibSetup; +package me.mrCookieSlime.Slimefun.Setup; import java.io.BufferedInputStream; import java.io.BufferedReader; diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java index 41c158646..2cb7ab58b 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java @@ -65,7 +65,7 @@ import me.mrCookieSlime.CSCoreLibPlugin.general.Recipe.RecipeCalculator; import me.mrCookieSlime.CSCoreLibPlugin.general.String.StringUtils; import me.mrCookieSlime.CSCoreLibPlugin.general.World.CustomSkull; import me.mrCookieSlime.Slimefun.SlimefunStartup; -import me.mrCookieSlime.Slimefun.Variables; +import me.mrCookieSlime.Slimefun.Utilities; import me.mrCookieSlime.Slimefun.Android.AndroidType; import me.mrCookieSlime.Slimefun.Android.ProgrammableAndroid; import me.mrCookieSlime.Slimefun.GPS.Elevator; @@ -1112,17 +1112,19 @@ public class SlimefunSetup { new SlimefunItem(Categories.TOOLS, SlimefunItems.GRAPPLING_HOOK, "GRAPPLING_HOOK", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {null, SlimefunItems.HOOK, SlimefunItems.HOOK, null, SlimefunItems.CHAIN, SlimefunItems.HOOK, SlimefunItems.CHAIN, null, null}) .register(true, new ItemInteractionHandler() { + + private Utilities variables = SlimefunStartup.instance.getUtilities(); @Override public boolean onRightClick(ItemUseEvent e, Player p, ItemStack item) { if (SlimefunManager.isItemSimiliar(item, SlimefunItems.GRAPPLING_HOOK, true)) { - if (e.getClickedBlock() == null && !Variables.jump_state.containsKey(p.getUniqueId())) { + if (e.getClickedBlock() == null && !variables.jump_state.containsKey(p.getUniqueId())) { e.setCancelled(true); if (p.getInventory().getItemInOffHand().getType().equals(Material.BOW)) { // Cancel, to fix dupe #740 return false; } - Variables.jump_state.put(p.getUniqueId(), p.getInventory().getItemInMainHand().getType() != Material.SHEARS); + variables.jump_state.put(p.getUniqueId(), p.getInventory().getItemInMainHand().getType() != Material.SHEARS); if (p.getInventory().getItemInMainHand().getType() == Material.LEAD) PlayerInventory.consumeItemInHand(p); Vector direction = p.getEyeLocation().getDirection().multiply(2.0); @@ -1135,8 +1137,8 @@ public class SlimefunSetup { b.addPotionEffect(new PotionEffect(PotionEffectType.INVISIBILITY, 100000, 100000)); b.setLeashHolder(arrow); - Variables.damage.add(p.getUniqueId()); - Variables.remove.put(p.getUniqueId(), new Entity[] {b, arrow}); + variables.damage.add(p.getUniqueId()); + variables.remove.put(p.getUniqueId(), new Entity[] {b, arrow}); } return true; } @@ -2517,7 +2519,7 @@ public class SlimefunSetup { FallingBlock block = ground.getWorld().spawnFallingBlock(ground.getBlock().getRelative(BlockFace.UP).getLocation(), ground.getBlock().getBlockData()); block.setDropItem(false); block.setVelocity(new Vector(0, 0.4 + i * 0.01, 0)); - Variables.blocks.add(block.getUniqueId()); + SlimefunStartup.instance.getUtilities().blocks.add(block.getUniqueId()); } for (Entity n: ground.getChunk().getEntities()) { if (n instanceof LivingEntity) { @@ -2854,7 +2856,7 @@ public class SlimefunSetup { @Override public boolean onHit(EntityDamageByEntityEvent e, LivingEntity n) { - if (SlimefunManager.isItemSimiliar(Variables.arrows.get(e.getDamager().getUniqueId()), SlimefunItems.EXPLOSIVE_BOW, true)) { + if (SlimefunManager.isItemSimiliar(SlimefunStartup.instance.getUtilities().arrows.get(e.getDamager().getUniqueId()), SlimefunItems.EXPLOSIVE_BOW, true)) { Vector vector = n.getVelocity(); vector.setY(0.6); n.setVelocity(vector); @@ -2872,7 +2874,7 @@ public class SlimefunSetup { @Override public boolean onHit(EntityDamageByEntityEvent e, LivingEntity n) { - if (SlimefunManager.isItemSimiliar(Variables.arrows.get(e.getDamager().getUniqueId()), SlimefunItems.ICY_BOW, true)) { + if (SlimefunManager.isItemSimiliar(SlimefunStartup.instance.getUtilities().arrows.get(e.getDamager().getUniqueId()), SlimefunItems.ICY_BOW, true)) { n.getWorld().playEffect(n.getLocation(), Effect.STEP_SOUND, Material.ICE); n.getWorld().playEffect(n.getEyeLocation(), Effect.STEP_SOUND, Material.ICE); n.addPotionEffect(new PotionEffect(PotionEffectType.SLOW, 20 * 2, 10)); diff --git a/src/me/mrCookieSlime/Slimefun/SlimefunStartup.java b/src/me/mrCookieSlime/Slimefun/SlimefunStartup.java index be4d316eb..ab03319f5 100644 --- a/src/me/mrCookieSlime/Slimefun/SlimefunStartup.java +++ b/src/me/mrCookieSlime/Slimefun/SlimefunStartup.java @@ -19,7 +19,6 @@ import me.mrCookieSlime.CSCoreLibPlugin.PluginUtils; import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config; import me.mrCookieSlime.CSCoreLibPlugin.general.Reflection.ReflectionUtils; import me.mrCookieSlime.Slimefun.AncientAltar.Pedestals; -import me.mrCookieSlime.Slimefun.CSCoreLibSetup.CSCoreLibLoader; import me.mrCookieSlime.Slimefun.GEO.OreGenSystem; import me.mrCookieSlime.Slimefun.GEO.Resources.NetherIceResource; import me.mrCookieSlime.Slimefun.GEO.Resources.OilResource; @@ -32,6 +31,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.AutoEnchanter; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.ElectricDustWasher; +import me.mrCookieSlime.Slimefun.Setup.CSCoreLibLoader; import me.mrCookieSlime.Slimefun.Setup.Files; import me.mrCookieSlime.Slimefun.Setup.Messages; import me.mrCookieSlime.Slimefun.Setup.MiscSetup; @@ -96,6 +96,7 @@ public class SlimefunStartup extends JavaPlugin { public static TickerTask ticker; private CoreProtectAPI coreProtectAPI; + private Utilities utilities = new Utilities(); private boolean clearlag = false; private boolean exoticGarden = false; @@ -427,17 +428,7 @@ public class SlimefunStartup extends JavaPlugin { SlimefunItem.map_id = null; SlimefunItem.handlers = null; SlimefunItem.radioactive = null; - Variables.damage = null; - Variables.jump_state = null; - Variables.mode = null; SlimefunGuide.history = null; - Variables.altarinuse = null; - Variables.enchanting = null; - Variables.backpack = null; - Variables.soulbound = null; - Variables.blocks = null; - Variables.cancelPlace = null; - Variables.arrows = null; SlimefunCommand.arguments = null; SlimefunCommand.descriptions = null; SlimefunCommand.tabs = null; @@ -519,5 +510,9 @@ public class SlimefunStartup extends JavaPlugin { public CoreProtectAPI getCoreProtectAPI() { return coreProtectAPI; } + + public Utilities getUtilities() { + return utilities; + } } diff --git a/src/me/mrCookieSlime/Slimefun/Utilities.java b/src/me/mrCookieSlime/Slimefun/Utilities.java new file mode 100644 index 000000000..82079ef40 --- /dev/null +++ b/src/me/mrCookieSlime/Slimefun/Utilities.java @@ -0,0 +1,40 @@ +package me.mrCookieSlime.Slimefun; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.UUID; + +import org.bukkit.Location; +import org.bukkit.entity.Entity; +import org.bukkit.inventory.ItemStack; + +/** + * Really dirty way to store stuff, but you can dump + * some Objects into here that need to be used throughout + * multiple Classes. + * + * @author TheBusyBiscuit + * + */ +public final class Utilities { + + public Map jump_state = new HashMap<>(); + public Set damage = new HashSet<>(); + public Map remove = new HashMap<>(); + public Map mode = new HashMap<>(); + + public Map enchanting = new HashMap<>(); + public Map backpack = new HashMap<>(); + + public Set altarinuse = new HashSet<>(); + + public Map> soulbound = new HashMap<>(); + public List blocks = new ArrayList<>(); + public List cancelPlace = new ArrayList<>(); + public Map arrows = new HashMap<>(); + +} diff --git a/src/me/mrCookieSlime/Slimefun/Variables.java b/src/me/mrCookieSlime/Slimefun/Variables.java deleted file mode 100644 index f6839c089..000000000 --- a/src/me/mrCookieSlime/Slimefun/Variables.java +++ /dev/null @@ -1,32 +0,0 @@ -package me.mrCookieSlime.Slimefun; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.UUID; - -import org.bukkit.Location; -import org.bukkit.entity.Entity; -import org.bukkit.inventory.ItemStack; - -@Deprecated -public class Variables { - - public static Map jump_state = new HashMap<>(); - public static Set damage = new HashSet<>(); - public static Map remove = new HashMap<>(); - public static Map mode = new HashMap<>(); - - public static Map enchanting = new HashMap<>(); - public static Map backpack = new HashMap<>(); - public static HashSet altarinuse = new HashSet<>(); - - public static Map> soulbound = new HashMap<>(); - public static List blocks = new ArrayList<>(); - public static List cancelPlace = new ArrayList<>(); - public static Map arrows = new HashMap<>(); - -} diff --git a/src/me/mrCookieSlime/Slimefun/api/Soul.java b/src/me/mrCookieSlime/Slimefun/api/Soul.java index ad5589808..6f3372715 100644 --- a/src/me/mrCookieSlime/Slimefun/api/Soul.java +++ b/src/me/mrCookieSlime/Slimefun/api/Soul.java @@ -4,24 +4,24 @@ import java.util.ArrayList; import java.util.List; import java.util.UUID; -import me.mrCookieSlime.Slimefun.Variables; - import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; +import me.mrCookieSlime.Slimefun.SlimefunStartup; + @Deprecated public class Soul { public static void storeItem(UUID uuid, ItemStack drop) { List items = new ArrayList<>(); - if (Variables.soulbound.containsKey(uuid)) items = Variables.soulbound.get(uuid); + if (SlimefunStartup.instance.getUtilities().soulbound.containsKey(uuid)) items = SlimefunStartup.instance.getUtilities().soulbound.get(uuid); items.add(drop); - Variables.soulbound.put(uuid, items); + SlimefunStartup.instance.getUtilities().soulbound.put(uuid, items); } public static void retrieveItems(Player p) { - if (Variables.soulbound.containsKey(p.getUniqueId())) { - for (ItemStack item: Variables.soulbound.get(p.getUniqueId())) { + if (SlimefunStartup.instance.getUtilities().soulbound.containsKey(p.getUniqueId())) { + for (ItemStack item: SlimefunStartup.instance.getUtilities().soulbound.get(p.getUniqueId())) { if (item.equals(p.getInventory().getHelmet())) continue; if (item.equals(p.getInventory().getChestplate())) continue; if (item.equals(p.getInventory().getLeggings())) continue; @@ -32,7 +32,7 @@ public class Soul { p.getInventory().addItem(item); } } - Variables.soulbound.remove(p.getUniqueId()); + SlimefunStartup.instance.getUtilities().soulbound.remove(p.getUniqueId()); } } diff --git a/src/me/mrCookieSlime/Slimefun/listeners/AncientAltarListener.java b/src/me/mrCookieSlime/Slimefun/listeners/AncientAltarListener.java index 3263d8000..864b7d462 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/AncientAltarListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/AncientAltarListener.java @@ -30,21 +30,25 @@ import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; import me.mrCookieSlime.CSCoreLibPlugin.general.Player.PlayerInventory; import me.mrCookieSlime.CSCoreLibPlugin.general.String.StringUtils; import me.mrCookieSlime.Slimefun.SlimefunStartup; +import me.mrCookieSlime.Slimefun.Utilities; import me.mrCookieSlime.Slimefun.AncientAltar.Pedestals; import me.mrCookieSlime.Slimefun.AncientAltar.RitualAnimation; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Setup.Messages; import me.mrCookieSlime.Slimefun.api.BlockStorage; -import me.mrCookieSlime.Slimefun.Variables; public class AncientAltarListener implements Listener { + + private Utilities utilities; public AncientAltarListener(SlimefunStartup plugin) { plugin.getServer().getPluginManager().registerEvents(this, plugin); + + utilities = plugin.getUtilities(); } - List altars = new ArrayList<>(); - Set removed_items = new HashSet<>(); + private List altars = new ArrayList<>(); + private Set removed_items = new HashSet<>(); @EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true) public void onInteract(PlayerInteractEvent e) { @@ -53,7 +57,7 @@ public class AncientAltarListener implements Listener { SlimefunItem item = BlockStorage.check(b); if (item != null) { if (item.getID().equals("ANCIENT_PEDESTAL")) { - if (Variables.altarinuse.contains(b.getLocation())) { + if (utilities.altarinuse.contains(b.getLocation())) { e.setCancelled(true); return; } @@ -82,11 +86,12 @@ public class AncientAltarListener implements Listener { } } else if (item.getID().equals("ANCIENT_ALTAR")) { - if (Variables.altarinuse.contains(b.getLocation())) { + if (utilities.altarinuse.contains(b.getLocation())) { e.setCancelled(true); return; } - Variables.altarinuse.add(b.getLocation()); // make altarinuse simply because that was the last block clicked. + + utilities.altarinuse.add(b.getLocation()); // make altarinuse simply because that was the last block clicked. e.setCancelled(true); ItemStack catalyst = new CustomItem(e.getPlayer().getInventory().getItemInMainHand(), 1); @@ -96,8 +101,9 @@ public class AncientAltarListener implements Listener { altars.add(e.getClickedBlock()); if (pedestals.size() == 8) { pedestals.forEach((pblock)->{ - Variables.altarinuse.add(pblock.getLocation()); + utilities.altarinuse.add(pblock.getLocation()); }); + if (catalyst != null && !catalyst.getType().equals(Material.AIR)) { List input = new ArrayList<>(); for (Block pedestal: pedestals) { @@ -115,25 +121,29 @@ public class AncientAltarListener implements Listener { else { altars.remove(e.getClickedBlock()); Messages.local.sendTranslation(e.getPlayer(), "machines.ANCIENT_ALTAR.unknown-recipe", true); + pedestals.forEach((pblock)->{ - Variables.altarinuse.remove(pblock.getLocation()); + utilities.altarinuse.remove(pblock.getLocation()); }); - Variables.altarinuse.remove(b.getLocation()); // bad recipe, no longer in use. + + utilities.altarinuse.remove(b.getLocation()); // bad recipe, no longer in use. } } else { altars.remove(e.getClickedBlock()); Messages.local.sendTranslation(e.getPlayer(), "machines.ANCIENT_ALTAR.unknown-catalyst", true); + pedestals.forEach((pblock)->{ - Variables.altarinuse.remove(pblock.getLocation()); + utilities.altarinuse.remove(pblock.getLocation()); }); - Variables.altarinuse.remove(b.getLocation()); // unkown catalyst, no longer in use + + utilities.altarinuse.remove(b.getLocation()); // unkown catalyst, no longer in use } } else { altars.remove(e.getClickedBlock()); Messages.local.sendTranslation(e.getPlayer(), "machines.ANCIENT_ALTAR.not-enough-pedestals", true, new Variable("%pedestals%", String.valueOf(pedestals.size()))); - Variables.altarinuse.remove(b.getLocation()); // not a valid altar so remove from inuse + utilities.altarinuse.remove(b.getLocation()); // not a valid altar so remove from inuse } } } diff --git a/src/me/mrCookieSlime/Slimefun/listeners/BackpackListener.java b/src/me/mrCookieSlime/Slimefun/listeners/BackpackListener.java index 3f9a94908..c957119b2 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/BackpackListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/BackpackListener.java @@ -18,7 +18,7 @@ import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; import me.mrCookieSlime.Slimefun.SlimefunStartup; -import me.mrCookieSlime.Slimefun.Variables; +import me.mrCookieSlime.Slimefun.Utilities; import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.Juice; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunBackpack; @@ -31,24 +31,27 @@ import me.mrCookieSlime.Slimefun.api.inventory.BackpackInventory; public class BackpackListener implements Listener { + private Utilities utilities; + public BackpackListener(SlimefunStartup plugin) { plugin.getServer().getPluginManager().registerEvents(this, plugin); + utilities = plugin.getUtilities(); } @EventHandler public void onClose(InventoryCloseEvent e) { - if (Variables.enchanting.containsKey(e.getPlayer().getUniqueId())) Variables.enchanting.remove(e.getPlayer().getUniqueId()); + if (utilities.enchanting.containsKey(e.getPlayer().getUniqueId())) utilities.enchanting.remove(e.getPlayer().getUniqueId()); - if (Variables.backpack.containsKey(e.getPlayer().getUniqueId())) { + if (utilities.backpack.containsKey(e.getPlayer().getUniqueId())) { ((Player) e.getPlayer()).playSound(e.getPlayer().getLocation(), Sound.ENTITY_HORSE_ARMOR, 1F, 1F); - PlayerProfile.getBackpack(Variables.backpack.get(e.getPlayer().getUniqueId())).markDirty(); - Variables.backpack.remove(e.getPlayer().getUniqueId()); + PlayerProfile.getBackpack(utilities.backpack.get(e.getPlayer().getUniqueId())).markDirty(); + utilities.backpack.remove(e.getPlayer().getUniqueId()); } } @EventHandler public void onItemDrop(PlayerDropItemEvent e) { - if (Variables.backpack.containsKey(e.getPlayer().getUniqueId())){ + if (utilities.backpack.containsKey(e.getPlayer().getUniqueId())){ ItemStack item = e.getItemDrop().getItemStack(); SlimefunItem sfItem = SlimefunItem.getByItem(item); if (sfItem instanceof SlimefunBackpack) e.setCancelled(true); @@ -57,8 +60,8 @@ public class BackpackListener implements Listener { @EventHandler public void onClick(InventoryClickEvent e) { - if (Variables.backpack.containsKey(e.getWhoClicked().getUniqueId())) { - ItemStack item = Variables.backpack.get(e.getWhoClicked().getUniqueId()); + if (utilities.backpack.containsKey(e.getWhoClicked().getUniqueId())) { + ItemStack item = utilities.backpack.get(e.getWhoClicked().getUniqueId()); if (e.getClick() == ClickType.NUMBER_KEY) { ItemStack hotbarItem = e.getWhoClicked().getInventory().getItem(e.getHotbarButton()); SlimefunItem sfItem = SlimefunItem.getByItem(hotbarItem); @@ -130,10 +133,10 @@ public class BackpackListener implements Listener { } } - if(!Variables.backpack.containsValue(item)) { + if(!utilities.backpack.containsValue(item)) { PlayerProfile.getBackpack(item).open(p); p.playSound(p.getLocation(), Sound.ENTITY_HORSE_ARMOR, 1F, 1F); - Variables.backpack.put(p.getUniqueId(), item); + utilities.backpack.put(p.getUniqueId(), item); } else Messages.local.sendTranslation(p, "backpack.already-open", true); } diff --git a/src/me/mrCookieSlime/Slimefun/listeners/BowListener.java b/src/me/mrCookieSlime/Slimefun/listeners/BowListener.java index db9a5fb12..d0192be32 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/BowListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/BowListener.java @@ -15,49 +15,53 @@ import org.bukkit.event.entity.ProjectileHitEvent; import org.bukkit.util.Vector; import me.mrCookieSlime.Slimefun.SlimefunStartup; -import me.mrCookieSlime.Slimefun.Variables; +import me.mrCookieSlime.Slimefun.Utilities; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.BowShootHandler; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.ItemHandler; public class BowListener implements Listener { + private Utilities utilities; + public BowListener(SlimefunStartup plugin) { plugin.getServer().getPluginManager().registerEvents(this, plugin); + utilities = plugin.getUtilities(); } @EventHandler public void onBowUse(EntityShootBowEvent e) { if (!(e.getEntity() instanceof Player) || !(e.getProjectile() instanceof Arrow)) return; - if (SlimefunItem.getByItem(e.getBow()) != null) Variables.arrows.put(e.getProjectile().getUniqueId(), e.getBow()); + if (SlimefunItem.getByItem(e.getBow()) != null) utilities.arrows.put(e.getProjectile().getUniqueId(), e.getBow()); } @EventHandler public void onArrowHit(final ProjectileHitEvent e) { Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> { if (!e.getEntity().isValid()) return; - if (Variables.arrows.containsKey(e.getEntity().getUniqueId())) Variables.arrows.remove(e.getEntity().getUniqueId()); + if (utilities.arrows.containsKey(e.getEntity().getUniqueId())) utilities.arrows.remove(e.getEntity().getUniqueId()); if (e.getEntity() instanceof Arrow) handleGrapplingHook((Arrow) e.getEntity()); }, 4L); } private void handleGrapplingHook(Arrow arrow) { if (arrow != null) { - if (arrow.getShooter() instanceof Player && Variables.jump_state.containsKey(((Player) arrow.getShooter()).getUniqueId())) { + if (arrow.getShooter() instanceof Player && utilities.jump_state.containsKey(((Player) arrow.getShooter()).getUniqueId())) { final Player p = (Player) arrow.getShooter(); - if (p.getGameMode() != GameMode.CREATIVE && Variables.jump_state.get(p.getUniqueId())) arrow.getWorld().dropItem(arrow.getLocation(), SlimefunItem.getItem("GRAPPLING_HOOK")); + if (p.getGameMode() != GameMode.CREATIVE && utilities.jump_state.get(p.getUniqueId())) arrow.getWorld().dropItem(arrow.getLocation(), SlimefunItem.getItem("GRAPPLING_HOOK")); if (p.getLocation().distance(arrow.getLocation()) < 3.0D) { if (arrow.getLocation().getY() > p.getLocation().getY()) { p.setVelocity(new Vector(0.0D, 0.25D, 0.0D)); } else p.setVelocity(arrow.getLocation().toVector().subtract(p.getLocation().toVector())); - for (Entity n: Variables.remove.get(p.getUniqueId())) { + + for (Entity n: utilities.remove.get(p.getUniqueId())) { n.remove(); } Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> { - Variables.jump_state.remove(p.getUniqueId()); - Variables.remove.remove(p.getUniqueId()); + utilities.jump_state.remove(p.getUniqueId()); + utilities.remove.remove(p.getUniqueId()); }, 20L); } else { @@ -80,13 +84,13 @@ public class BowListener implements Listener { p.setVelocity(v); - for (Entity n: Variables.remove.get(p.getUniqueId())) { + for (Entity n: utilities.remove.get(p.getUniqueId())) { n.remove(); } Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> { - Variables.jump_state.remove(p.getUniqueId()); - Variables.remove.remove(p.getUniqueId()); + utilities.jump_state.remove(p.getUniqueId()); + utilities.remove.remove(p.getUniqueId()); }, 20L); } } @@ -96,11 +100,11 @@ public class BowListener implements Listener { @EventHandler public void onArrowSuccessfulHit(EntityDamageByEntityEvent e) { if (e.getDamager() instanceof Arrow) { - if (Variables.arrows.containsKey(e.getDamager().getUniqueId()) && e.getEntity() instanceof LivingEntity) { + if (utilities.arrows.containsKey(e.getDamager().getUniqueId()) && e.getEntity() instanceof LivingEntity) { for (ItemHandler handler: SlimefunItem.getHandlers("BowShootHandler")) { if (((BowShootHandler) handler).onHit(e, (LivingEntity) e.getEntity())) break; } - Variables.arrows.remove(e.getDamager().getUniqueId()); + utilities.arrows.remove(e.getDamager().getUniqueId()); } handleGrapplingHook((Arrow) e.getDamager()); diff --git a/src/me/mrCookieSlime/Slimefun/listeners/DamageListener.java b/src/me/mrCookieSlime/Slimefun/listeners/DamageListener.java index ebb266e4c..d2c86fb2c 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/DamageListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/DamageListener.java @@ -27,7 +27,7 @@ import org.bukkit.inventory.meta.SkullMeta; import me.mrCookieSlime.EmeraldEnchants.EmeraldEnchants; import me.mrCookieSlime.EmeraldEnchants.ItemEnchantment; import me.mrCookieSlime.Slimefun.SlimefunStartup; -import me.mrCookieSlime.Slimefun.Variables; +import me.mrCookieSlime.Slimefun.Utilities; import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SoulboundItem; @@ -38,12 +38,14 @@ import me.mrCookieSlime.Slimefun.api.Soul; public class DamageListener implements Listener { + private SimpleDateFormat format = new SimpleDateFormat("(MMM d, yyyy @ hh:mm)"); + private Utilities utilities; + public DamageListener(SlimefunStartup plugin) { plugin.getServer().getPluginManager().registerEvents(this, plugin); + utilities = plugin.getUtilities(); } - private SimpleDateFormat format = new SimpleDateFormat("(MMM d, yyyy @ hh:mm)"); - @EventHandler public void onDamage(EntityDeathEvent e) { if (e.getEntity() instanceof Player) { @@ -138,9 +140,9 @@ public class DamageListener implements Listener { @EventHandler public void onArrowHit(EntityDamageEvent e) { if (e.getEntity() instanceof Player && e.getCause() == DamageCause.FALL) { - if (Variables.damage.contains(e.getEntity().getUniqueId())) { + if (utilities.damage.contains(e.getEntity().getUniqueId())) { e.setCancelled(true); - Variables.damage.remove(e.getEntity().getUniqueId()); + utilities.damage.remove(e.getEntity().getUniqueId()); } } } diff --git a/src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java b/src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java index a6e7537a9..47fa9aa48 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java @@ -42,7 +42,7 @@ import me.mrCookieSlime.CSCoreLibPlugin.general.Player.PlayerInventory; import me.mrCookieSlime.CSCoreLibPlugin.general.World.CustomSkull; import me.mrCookieSlime.Slimefun.SlimefunGuide; import me.mrCookieSlime.Slimefun.SlimefunStartup; -import me.mrCookieSlime.Slimefun.Variables; +import me.mrCookieSlime.Slimefun.Utilities; import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; import me.mrCookieSlime.Slimefun.Misc.BookDesign; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.Juice; @@ -61,9 +61,12 @@ import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset; import me.mrCookieSlime.Slimefun.api.inventory.UniversalBlockMenu; public class ItemListener implements Listener { - + + private Utilities utilities; + public ItemListener(SlimefunStartup plugin) { plugin.getServer().getPluginManager().registerEvents(this, plugin); + utilities = plugin.getUtilities(); } @EventHandler @@ -272,7 +275,7 @@ public class ItemListener implements Listener { if (tool != null) { List modes = ((MultiTool) SlimefunItem.getByItem(tool)).getModes(); int index = 0; - if (Variables.mode.containsKey(p.getUniqueId())) index = Variables.mode.get(p.getUniqueId()); + if (utilities.mode.containsKey(p.getUniqueId())) index = utilities.mode.get(p.getUniqueId()); if (!p.isSneaking()) { float charge = ItemEnergy.getStoredEnergy(item); @@ -286,7 +289,7 @@ public class ItemListener implements Listener { index++; if (index == modes.size()) index = 0; Messages.local.sendTranslation(p, "messages.mode-change", true, new Variable("%device%", "Multi Tool"), new Variable("%mode%", (String) Slimefun.getItemValue(SlimefunItem.getByItem(tool).getID(), "mode." + modes.get(index) + ".name"))); - Variables.mode.put(p.getUniqueId(), index); + utilities.mode.put(p.getUniqueId(), index); } } } @@ -420,7 +423,7 @@ public class ItemListener implements Listener { @EventHandler(priority = EventPriority.LOWEST) public void onEntityChangeBlock(EntityChangeBlockEvent e) { if (e.getEntity() instanceof FallingBlock) { - if (Variables.blocks.contains(e.getEntity().getUniqueId())) { + if (utilities.blocks.contains(e.getEntity().getUniqueId())) { e.setCancelled(true); e.getEntity().remove(); } diff --git a/src/me/mrCookieSlime/Slimefun/listeners/ToolListener.java b/src/me/mrCookieSlime/Slimefun/listeners/ToolListener.java index 29f7b1471..566b3aa56 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/ToolListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/ToolListener.java @@ -25,7 +25,7 @@ import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.SkullItem; import me.mrCookieSlime.CSCoreLibPlugin.general.Particles.FireworkShow; import me.mrCookieSlime.CSCoreLibPlugin.general.Player.PlayerInventory; import me.mrCookieSlime.Slimefun.SlimefunStartup; -import me.mrCookieSlime.Slimefun.Variables; +import me.mrCookieSlime.Slimefun.Utilities; import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.HandledBlock; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; @@ -43,9 +43,11 @@ public class ToolListener implements Listener { // Materials that require a Block under it, e.g. Pressure Plates private final Set sensitiveMaterials = new HashSet<>(); + private Utilities utilities; public ToolListener(SlimefunStartup plugin) { plugin.getServer().getPluginManager().registerEvents(this, plugin); + utilities = plugin.getUtilities(); sensitiveMaterials.add(Material.STONE_PRESSURE_PLATE); sensitiveMaterials.add(Material.LIGHT_WEIGHTED_PRESSURE_PLATE); @@ -90,9 +92,9 @@ public class ToolListener implements Listener { public void onBlockPlace(BlockPlaceEvent e) { ItemStack item = e.getItemInHand(); - if (Variables.cancelPlace.contains(e.getPlayer().getUniqueId())) { + if (utilities.cancelPlace.contains(e.getPlayer().getUniqueId())) { e.setCancelled(true); - Variables.cancelPlace.remove(e.getPlayer().getUniqueId()); + utilities.cancelPlace.remove(e.getPlayer().getUniqueId()); } if (SlimefunManager.isItemSimiliar(item, SlimefunItems.BASIC_CIRCUIT_BOARD, true)) e.setCancelled(true); else if (SlimefunManager.isItemSimiliar(item, SlimefunItems.ADVANCED_CIRCUIT_BOARD, true)) e.setCancelled(true); From 641a2e6e304df8038f73f997d0017c226c6322c9 Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Tue, 27 Aug 2019 14:08:09 +0200 Subject: [PATCH 006/169] A LOT more Refactoring + Technical debt reduction --- .../Slimefun/AncientAltar/AltarRecipe.java | 10 ++-- .../Slimefun/AncientAltar/Pedestals.java | 27 ++++++----- .../AncientAltar/RitualAnimation.java | 37 +++++++------- .../Slimefun/Android/AndroidType.java | 2 +- .../Slimefun/GEO/OreGenSystem.java | 4 +- .../mrCookieSlime/Slimefun/GPS/Elevator.java | 16 ++++--- .../Slimefun/Objects/Research.java | 15 ++---- .../Slimefun/Setup/SlimefunSetup.java | 4 +- .../Slimefun/SlimefunStartup.java | 48 +++++++------------ src/me/mrCookieSlime/Slimefun/Utilities.java | 17 ++++++- .../Slimefun/commands/SlimefunCommand.java | 3 +- .../Slimefun/hooks/github/Contributor.java | 7 +-- .../hooks/github/GitHubConnector.java | 7 +-- .../Slimefun/hooks/github/GitHubSetup.java | 8 ++-- .../Slimefun/listeners/BowListener.java | 8 ++-- .../Slimefun/listeners/ItemListener.java | 18 ++----- 16 files changed, 110 insertions(+), 121 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/AncientAltar/AltarRecipe.java b/src/me/mrCookieSlime/Slimefun/AncientAltar/AltarRecipe.java index 8bcbbb810..bff174af8 100644 --- a/src/me/mrCookieSlime/Slimefun/AncientAltar/AltarRecipe.java +++ b/src/me/mrCookieSlime/Slimefun/AncientAltar/AltarRecipe.java @@ -5,11 +5,13 @@ import java.util.List; import org.bukkit.inventory.ItemStack; +import me.mrCookieSlime.Slimefun.SlimefunStartup; + public class AltarRecipe { - ItemStack catalyst; - List input; - ItemStack output; + private ItemStack catalyst; + private List input; + private ItemStack output; public AltarRecipe(List input, ItemStack output) { this.catalyst = input.get(4); @@ -27,7 +29,7 @@ public class AltarRecipe { this.output = output; - Pedestals.recipes.add(this); + SlimefunStartup.instance.getUtilities().altarRecipes.add(this); } public ItemStack getCatalyst() { diff --git a/src/me/mrCookieSlime/Slimefun/AncientAltar/Pedestals.java b/src/me/mrCookieSlime/Slimefun/AncientAltar/Pedestals.java index 018acf6ea..526b36395 100644 --- a/src/me/mrCookieSlime/Slimefun/AncientAltar/Pedestals.java +++ b/src/me/mrCookieSlime/Slimefun/AncientAltar/Pedestals.java @@ -8,39 +8,41 @@ import org.bukkit.block.Block; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; +import me.mrCookieSlime.Slimefun.SlimefunStartup; import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.api.BlockStorage; -public class Pedestals { - - public static List recipes = new ArrayList<>(); +public final class Pedestals { + + private Pedestals() {} public static List getPedestals(Block altar) { + String pedestal = "ANCIENT_PEDESTAL"; List list = new ArrayList<>(); - if (BlockStorage.check(altar.getRelative(2, 0, -2), "ANCIENT_PEDESTAL")) { + if (BlockStorage.check(altar.getRelative(2, 0, -2), pedestal)) { list.add(altar.getRelative(2, 0, -2)); } - if (BlockStorage.check(altar.getRelative(3, 0, 0), "ANCIENT_PEDESTAL")) { + if (BlockStorage.check(altar.getRelative(3, 0, 0), pedestal)) { list.add(altar.getRelative(3, 0, 0)); } - if (BlockStorage.check(altar.getRelative(2, 0, 2), "ANCIENT_PEDESTAL")) { + if (BlockStorage.check(altar.getRelative(2, 0, 2), pedestal)) { list.add(altar.getRelative(2, 0, 2)); } - if (BlockStorage.check(altar.getRelative(0, 0, 3), "ANCIENT_PEDESTAL")) { + if (BlockStorage.check(altar.getRelative(0, 0, 3), pedestal)) { list.add(altar.getRelative(0, 0, 3)); } - if (BlockStorage.check(altar.getRelative(-2, 0, 2), "ANCIENT_PEDESTAL")) { + if (BlockStorage.check(altar.getRelative(-2, 0, 2), pedestal)) { list.add(altar.getRelative(-2, 0, 2)); } - if (BlockStorage.check(altar.getRelative(-3, 0, 0), "ANCIENT_PEDESTAL")) { + if (BlockStorage.check(altar.getRelative(-3, 0, 0), pedestal)) { list.add(altar.getRelative(-3, 0, 0)); } - if (BlockStorage.check(altar.getRelative(-2, 0, -2), "ANCIENT_PEDESTAL")) { + if (BlockStorage.check(altar.getRelative(-2, 0, -2), pedestal)) { list.add(altar.getRelative(-2, 0, -2)); } - if (BlockStorage.check(altar.getRelative(0, 0, -3), "ANCIENT_PEDESTAL")) { + if (BlockStorage.check(altar.getRelative(0, 0, -3), pedestal)) { list.add(altar.getRelative(0, 0, -3)); } @@ -49,6 +51,7 @@ public class Pedestals { public static ItemStack getRecipeOutput(ItemStack catalyst, List input) { if (input.size() != 8) return null; + if (SlimefunManager.isItemSimiliar(catalyst, SlimefunItems.BROKEN_SPAWNER, false)) { if (checkRecipe(SlimefunItems.BROKEN_SPAWNER, input) == null) return null; final ItemStack spawner = SlimefunItems.REPAIRED_SPAWNER.clone(); @@ -63,7 +66,7 @@ public class Pedestals { private static ItemStack checkRecipe(ItemStack catalyst, List items) { loop: - for (AltarRecipe recipe: recipes) { + for (AltarRecipe recipe: SlimefunStartup.instance.getUtilities().altarRecipes) { if (!SlimefunManager.isItemSimiliar(catalyst, recipe.getCatalyst(), true)) { continue; } diff --git a/src/me/mrCookieSlime/Slimefun/AncientAltar/RitualAnimation.java b/src/me/mrCookieSlime/Slimefun/AncientAltar/RitualAnimation.java index 9bfd2d98c..47e51f3a2 100644 --- a/src/me/mrCookieSlime/Slimefun/AncientAltar/RitualAnimation.java +++ b/src/me/mrCookieSlime/Slimefun/AncientAltar/RitualAnimation.java @@ -29,12 +29,12 @@ public class RitualAnimation implements Runnable { private List items; private List particles; - private Map itemLock = new HashMap<>(); + private Map itemLock = new HashMap<>(); private boolean running; private int stage; - private Utilities variables = SlimefunStartup.instance.getUtilities(); + private Utilities utilities = SlimefunStartup.instance.getUtilities(); public RitualAnimation(List altars, Block altar, Location drop, ItemStack output, List pedestals, List items) { this.l = drop; @@ -47,9 +47,10 @@ public class RitualAnimation implements Runnable { this.running = true; this.stage = 0; - for(Block ped:this.pedestals) { - Item itm = AncientAltarListener.findItem(ped); - this.itemLock.put(itm, itm.getLocation().clone()); + + for (Block pedestal: this.pedestals) { + Item item = AncientAltarListener.findItem(pedestal); + this.itemLock.put(item, item.getLocation().clone()); } } @@ -57,17 +58,17 @@ public class RitualAnimation implements Runnable { public void run() { idle(); - if(!checkLockedItems()) { + if (!checkLockedItems()) { abort(); return; } - if(this.stage == 36) { + if (this.stage == 36) { finish(); return; } - if(this.stage > 0 && this.stage % 4 == 0) { + if (this.stage > 0 && this.stage % 4 == 0) { checkPedestal(pedestals.get(this.stage / 4 - 1)); } @@ -76,8 +77,8 @@ public class RitualAnimation implements Runnable { } private boolean checkLockedItems() { - for (Item item : this.itemLock.keySet()) { - if (item.getLocation().distance(this.itemLock.get(item)) > 0.3) { + for (Map.Entry entry: itemLock.entrySet()) { + if (entry.getKey().getLocation().distance(entry.getValue()) > 0.3) { return false; } } @@ -126,12 +127,10 @@ public class RitualAnimation implements Runnable { private void abort() { running = false; + pedestals.forEach(b -> utilities.altarinuse.remove(b.getLocation())); - pedestals.forEach((pblock)-> { - variables.altarinuse.remove(pblock.getLocation()); - }); - - variables.altarinuse.remove(altar.getLocation()); // should re-enable altar blocks on craft failure. + // This should re-enable altar blocks on craft failure. + utilities.altarinuse.remove(altar.getLocation()); l.getWorld().playSound(l, Sound.ENTITY_ZOMBIE_ATTACK_IRON_DOOR, 5F, 1F); itemLock.clear(); altars.remove(altar); @@ -143,10 +142,10 @@ public class RitualAnimation implements Runnable { l.getWorld().playEffect(l, Effect.STEP_SOUND, Material.EMERALD_BLOCK); l.getWorld().dropItemNaturally(l.add(0, 1, 0), output); - pedestals.forEach((pblock)->{ - variables.altarinuse.remove(pblock.getLocation()); - }); - variables.altarinuse.remove(altar.getLocation()); // should re-enable altar blocks on craft completion. + pedestals.forEach(b -> utilities.altarinuse.remove(b.getLocation())); + + // This should re-enable altar blocks on craft completion. + utilities.altarinuse.remove(altar.getLocation()); altars.remove(altar); } else { diff --git a/src/me/mrCookieSlime/Slimefun/Android/AndroidType.java b/src/me/mrCookieSlime/Slimefun/Android/AndroidType.java index 083a7614a..375d6bf70 100644 --- a/src/me/mrCookieSlime/Slimefun/Android/AndroidType.java +++ b/src/me/mrCookieSlime/Slimefun/Android/AndroidType.java @@ -12,7 +12,7 @@ public enum AndroidType { NON_FIGHTER; public boolean isType(AndroidType type) { - return type.equals(NONE) || type.equals(this) || (type.equals(NON_FIGHTER) && !this.equals(FIGHTER)); + return type == NONE || type == this || (type == NON_FIGHTER && this != FIGHTER); } } diff --git a/src/me/mrCookieSlime/Slimefun/GEO/OreGenSystem.java b/src/me/mrCookieSlime/Slimefun/GEO/OreGenSystem.java index fe547c8a4..40f81902b 100644 --- a/src/me/mrCookieSlime/Slimefun/GEO/OreGenSystem.java +++ b/src/me/mrCookieSlime/Slimefun/GEO/OreGenSystem.java @@ -10,7 +10,9 @@ import org.bukkit.block.Biome; import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config; import me.mrCookieSlime.Slimefun.api.BlockStorage; -public class OreGenSystem { +public final class OreGenSystem { + + private OreGenSystem() {} public static Map map = new HashMap<>(); diff --git a/src/me/mrCookieSlime/Slimefun/GPS/Elevator.java b/src/me/mrCookieSlime/Slimefun/GPS/Elevator.java index 175259f84..3b177ed91 100644 --- a/src/me/mrCookieSlime/Slimefun/GPS/Elevator.java +++ b/src/me/mrCookieSlime/Slimefun/GPS/Elevator.java @@ -1,7 +1,6 @@ package me.mrCookieSlime.Slimefun.GPS; -import java.util.ArrayList; -import java.util.List; +import java.util.Set; import java.util.UUID; import org.bukkit.ChatColor; @@ -16,13 +15,14 @@ import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ChestMenu; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.CustomBookOverlay; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.MenuHelper; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; +import me.mrCookieSlime.Slimefun.SlimefunStartup; import me.mrCookieSlime.Slimefun.Setup.Messages; import me.mrCookieSlime.Slimefun.api.BlockStorage; -public class Elevator { - - public static List ignored = new ArrayList<>(); +public final class Elevator { + private Elevator() {} + public static void openEditor(Player p, final Block b) { ChestMenu menu = new ChestMenu("Elevator Settings"); @@ -53,8 +53,10 @@ public class Elevator { } public static void openDialogue(Player p, Block b) { - if (ignored.contains(p.getUniqueId())) { - ignored.remove(p.getUniqueId()); + Set elevatorUsers = SlimefunStartup.instance.getUtilities().elevatorUsers; + + if (elevatorUsers.contains(p.getUniqueId())) { + elevatorUsers.remove(p.getUniqueId()); return; } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/Research.java b/src/me/mrCookieSlime/Slimefun/Objects/Research.java index 3eb997786..d5465e0c6 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/Research.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/Research.java @@ -1,7 +1,6 @@ package me.mrCookieSlime.Slimefun.Objects; import java.util.ArrayList; -import java.util.HashSet; import java.util.Iterator; import java.util.LinkedList; import java.util.List; @@ -58,12 +57,6 @@ public class Research { */ public static List titles; - /** - * Contains all the players (UUIDs) that are currently unlocking a research. - * @since 4.0 - */ - public static Set researching = new HashSet<>(); - /** * Whether researching in creative is free. * @since 4.0 @@ -275,8 +268,8 @@ public class Research { FireworkShow.launchRandom(p, 1); } } - else if (!researching.contains(p.getUniqueId())){ - researching.add(p.getUniqueId()); + else if (!SlimefunStartup.instance.getUtilities().researching.contains(p.getUniqueId())){ + SlimefunStartup.instance.getUtilities().researching.add(p.getUniqueId()); Messages.local.sendTranslation(p, "messages.research.start", true, new Variable("%research%", getName())); for (int i = 1; i < research_progress.length + 1; i++) { @@ -296,7 +289,7 @@ public class Research { FireworkShow.launchRandom(p, 1); } - researching.remove(p.getUniqueId()); + SlimefunStartup.instance.getUtilities().researching.remove(p.getUniqueId()); }, (research_progress.length + 1) * 20L); } } @@ -354,7 +347,7 @@ public class Research { * @since 4.0 */ public static boolean isResearching(Player p) { - return researching.contains(p.getUniqueId()); + return SlimefunStartup.instance.getUtilities().researching.contains(p.getUniqueId()); } /** diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java index 2cb7ab58b..bce7859f9 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java @@ -1118,13 +1118,13 @@ public class SlimefunSetup { @Override public boolean onRightClick(ItemUseEvent e, Player p, ItemStack item) { if (SlimefunManager.isItemSimiliar(item, SlimefunItems.GRAPPLING_HOOK, true)) { - if (e.getClickedBlock() == null && !variables.jump_state.containsKey(p.getUniqueId())) { + if (e.getClickedBlock() == null && !variables.jumpState.containsKey(p.getUniqueId())) { e.setCancelled(true); if (p.getInventory().getItemInOffHand().getType().equals(Material.BOW)) { // Cancel, to fix dupe #740 return false; } - variables.jump_state.put(p.getUniqueId(), p.getInventory().getItemInMainHand().getType() != Material.SHEARS); + variables.jumpState.put(p.getUniqueId(), p.getInventory().getItemInMainHand().getType() != Material.SHEARS); if (p.getInventory().getItemInMainHand().getType() == Material.LEAD) PlayerInventory.consumeItemInHand(p); Vector direction = p.getEyeLocation().getDirection().multiply(2.0); diff --git a/src/me/mrCookieSlime/Slimefun/SlimefunStartup.java b/src/me/mrCookieSlime/Slimefun/SlimefunStartup.java index ab03319f5..f9e5790a8 100644 --- a/src/me/mrCookieSlime/Slimefun/SlimefunStartup.java +++ b/src/me/mrCookieSlime/Slimefun/SlimefunStartup.java @@ -18,11 +18,9 @@ import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib; import me.mrCookieSlime.CSCoreLibPlugin.PluginUtils; import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config; import me.mrCookieSlime.CSCoreLibPlugin.general.Reflection.ReflectionUtils; -import me.mrCookieSlime.Slimefun.AncientAltar.Pedestals; import me.mrCookieSlime.Slimefun.GEO.OreGenSystem; import me.mrCookieSlime.Slimefun.GEO.Resources.NetherIceResource; import me.mrCookieSlime.Slimefun.GEO.Resources.OilResource; -import me.mrCookieSlime.Slimefun.GPS.Elevator; import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; import me.mrCookieSlime.Slimefun.Objects.MultiBlock; import me.mrCookieSlime.Slimefun.Objects.Research; @@ -56,7 +54,6 @@ import me.mrCookieSlime.Slimefun.commands.SlimefunCommand; import me.mrCookieSlime.Slimefun.commands.SlimefunTabCompleter; import me.mrCookieSlime.Slimefun.hooks.PlaceholderAPIHook; import me.mrCookieSlime.Slimefun.hooks.WorldEditHook; -import me.mrCookieSlime.Slimefun.hooks.github.Contributor; import me.mrCookieSlime.Slimefun.hooks.github.GitHubConnector; import me.mrCookieSlime.Slimefun.hooks.github.GitHubSetup; import me.mrCookieSlime.Slimefun.listeners.AncientAltarListener; @@ -261,22 +258,6 @@ public class SlimefunStartup extends JavaPlugin { if (SlimefunItem.getByID("ANCIENT_ALTAR") != null) new AncientAltarListener((SlimefunStartup) instance); }, 0); - // WorldEdit Hook to clear Slimefun Data upon //set 0 //cut or any other equivalent - if (getServer().getPluginManager().isPluginEnabled("WorldEdit")) { - try { - Class.forName("com.sk89q.worldedit.extent.Extent"); - new WorldEditHook(); - System.out.println("[Slimefun] Successfully hooked into WorldEdit!"); - } catch (Exception x) { - System.err.println("[Slimefun] Failed to hook into WorldEdit!"); - System.err.println("[Slimefun] Maybe consider updating WorldEdit or Slimefun?"); - } - } - - if (getServer().getPluginManager().isPluginEnabled("PlaceholderAPI")) { - new PlaceholderAPIHook().register(); - } - getCommand("slimefun").setExecutor(new SlimefunCommand(this)); getCommand("slimefun").setTabCompleter(new SlimefunTabCompleter()); @@ -340,11 +321,7 @@ public class SlimefunStartup extends JavaPlugin { getServer().getScheduler().runTaskTimerAsynchronously(this, new BlockAutoSaver(), 2000L, config.getInt("options.auto-save-delay-in-minutes") * 60L * 20L); getServer().getScheduler().runTaskTimerAsynchronously(this, ticker, 100L, config.getInt("URID.custom-ticker-delay")); - getServer().getScheduler().runTaskTimerAsynchronously(this, () -> { - for (GitHubConnector connector : GitHubConnector.connectors) { - connector.pullFile(); - } - }, 80L, 60 * 60 * 20L); + getServer().getScheduler().runTaskTimerAsynchronously(this, () -> utilities.connectors.forEach(GitHubConnector::pullFile), 80L, 60 * 60 * 20L); // Hooray! System.out.println("[Slimefun] Finished!"); @@ -357,9 +334,25 @@ public class SlimefunStartup extends JavaPlugin { }, 0); if (clearlag) new ClearLaggIntegration(this); - if (coreProtect) coreProtectAPI = ((CoreProtect) getServer().getPluginManager().getPlugin("CoreProtect")).getAPI(); + + // WorldEdit Hook to clear Slimefun Data upon //set 0 //cut or any other equivalent + if (getServer().getPluginManager().isPluginEnabled("WorldEdit")) { + try { + Class.forName("com.sk89q.worldedit.extent.Extent"); + new WorldEditHook(); + System.out.println("[Slimefun] Successfully hooked into WorldEdit!"); + } catch (Exception x) { + System.err.println("[Slimefun] Failed to hook into WorldEdit!"); + System.err.println("[Slimefun] Maybe consider updating WorldEdit or Slimefun?"); + } + } + + if (getServer().getPluginManager().isPluginEnabled("PlaceholderAPI")) { + new PlaceholderAPIHook().register(); + } + Research.creative_research = config.getBoolean("options.allow-free-creative-research"); Research.titles = config.getStringList("research-ranks"); @@ -422,7 +415,6 @@ public class SlimefunStartup extends JavaPlugin { Files.WHITELIST = null; MultiBlock.list = null; Research.list = null; - Research.researching = null; SlimefunItem.all = null; SlimefunItem.items = null; SlimefunItem.map_id = null; @@ -442,8 +434,6 @@ public class SlimefunStartup extends JavaPlugin { AContainer.processing = null; AContainer.progress = null; Slimefun.guide_handlers = null; - Pedestals.recipes = null; - Elevator.ignored = null; EnergyNet.listeners = null; EnergyNet.machines_input = null; EnergyNet.machines_output = null; @@ -453,8 +443,6 @@ public class SlimefunStartup extends JavaPlugin { TickerTask.block_timings = null; OreGenSystem.map = null; SlimefunGuide.contributors = null; - GitHubConnector.connectors = null; - Contributor.textures = null; ChestManipulator.listeners = null; PlayerProfile.profiles = null; diff --git a/src/me/mrCookieSlime/Slimefun/Utilities.java b/src/me/mrCookieSlime/Slimefun/Utilities.java index 82079ef40..c98047b97 100644 --- a/src/me/mrCookieSlime/Slimefun/Utilities.java +++ b/src/me/mrCookieSlime/Slimefun/Utilities.java @@ -12,6 +12,9 @@ import org.bukkit.Location; import org.bukkit.entity.Entity; import org.bukkit.inventory.ItemStack; +import me.mrCookieSlime.Slimefun.AncientAltar.AltarRecipe; +import me.mrCookieSlime.Slimefun.hooks.github.GitHubConnector; + /** * Really dirty way to store stuff, but you can dump * some Objects into here that need to be used throughout @@ -22,7 +25,7 @@ import org.bukkit.inventory.ItemStack; */ public final class Utilities { - public Map jump_state = new HashMap<>(); + public Map jumpState = new HashMap<>(); public Set damage = new HashSet<>(); public Map remove = new HashMap<>(); public Map mode = new HashMap<>(); @@ -31,10 +34,22 @@ public final class Utilities { public Map backpack = new HashMap<>(); public Set altarinuse = new HashSet<>(); + public Set altarRecipes = new HashSet<>(); public Map> soulbound = new HashMap<>(); public List blocks = new ArrayList<>(); public List cancelPlace = new ArrayList<>(); public Map arrows = new HashMap<>(); + + public Set elevatorUsers = new HashSet<>(); + + public Set connectors = new HashSet<>(); + public Map contributorHeads = new HashMap<>(); + + /** + * Contains all the players (UUIDs) that are currently unlocking a research. + * @since 4.0 + */ + public Set researching = new HashSet<>(); } diff --git a/src/me/mrCookieSlime/Slimefun/commands/SlimefunCommand.java b/src/me/mrCookieSlime/Slimefun/commands/SlimefunCommand.java index 9fe6a7546..a6a39337f 100644 --- a/src/me/mrCookieSlime/Slimefun/commands/SlimefunCommand.java +++ b/src/me/mrCookieSlime/Slimefun/commands/SlimefunCommand.java @@ -28,7 +28,6 @@ import me.mrCookieSlime.CSCoreLibPlugin.general.World.TitleBuilder; import me.mrCookieSlime.CSCoreLibPlugin.general.World.TitleBuilder.TitleType; import me.mrCookieSlime.Slimefun.SlimefunGuide; import me.mrCookieSlime.Slimefun.SlimefunStartup; -import me.mrCookieSlime.Slimefun.GPS.Elevator; import me.mrCookieSlime.Slimefun.GPS.GPSNetwork; import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; import me.mrCookieSlime.Slimefun.Misc.BookDesign; @@ -143,7 +142,7 @@ public class SlimefunCommand implements CommandExecutor, Listener { double z = Integer.parseInt(args[3]) + 0.5D; if (BlockStorage.getLocationInfo(((Player) sender).getWorld().getBlockAt(Integer.parseInt(args[1]), Integer.parseInt(args[2]), Integer.parseInt(args[3])).getLocation(), "floor") != null) { - Elevator.ignored.add(((Player) sender).getUniqueId()); + plugin.getUtilities().elevatorUsers.add(((Player) sender).getUniqueId()); float yaw = ((Player) sender).getEyeLocation().getYaw() + 180; if (yaw > 180) yaw = -180 + (yaw - 180); ((Player) sender).teleport(new Location(((Player) sender).getWorld(), x, y, z, yaw, ((Player) sender).getEyeLocation().getPitch())); diff --git a/src/me/mrCookieSlime/Slimefun/hooks/github/Contributor.java b/src/me/mrCookieSlime/Slimefun/hooks/github/Contributor.java index a16211c91..11538074b 100644 --- a/src/me/mrCookieSlime/Slimefun/hooks/github/Contributor.java +++ b/src/me/mrCookieSlime/Slimefun/hooks/github/Contributor.java @@ -1,7 +1,6 @@ package me.mrCookieSlime.Slimefun.hooks.github; -import java.util.HashMap; -import java.util.Map; +import me.mrCookieSlime.Slimefun.SlimefunStartup; /** * Represents a contributor on Slimefun4's GitHub repository. @@ -10,8 +9,6 @@ import java.util.Map; */ public class Contributor { - public static Map textures = new HashMap<>(); - private String name; private String job; private String profile; @@ -72,6 +69,6 @@ public class Contributor { * @return A Base64-Head Texture */ public String getTexture() { - return textures.get(name); + return SlimefunStartup.instance.getUtilities().contributorHeads.get(name); } } diff --git a/src/me/mrCookieSlime/Slimefun/hooks/github/GitHubConnector.java b/src/me/mrCookieSlime/Slimefun/hooks/github/GitHubConnector.java index 450fb4691..d43233aab 100644 --- a/src/me/mrCookieSlime/Slimefun/hooks/github/GitHubConnector.java +++ b/src/me/mrCookieSlime/Slimefun/hooks/github/GitHubConnector.java @@ -9,22 +9,19 @@ import java.net.URL; import java.net.URLConnection; import java.nio.channels.Channels; import java.nio.channels.ReadableByteChannel; -import java.util.HashSet; -import java.util.Set; import com.google.gson.JsonElement; import com.google.gson.JsonParser; + import me.mrCookieSlime.Slimefun.SlimefunStartup; public abstract class GitHubConnector { - public static Set connectors = new HashSet(); - private File file; public GitHubConnector() { this.file = new File("plugins/Slimefun/cache/github/" + this.getFileName() + ".json"); - connectors.add(this); + SlimefunStartup.instance.getUtilities().connectors.add(this); } public abstract String getFileName(); diff --git a/src/me/mrCookieSlime/Slimefun/hooks/github/GitHubSetup.java b/src/me/mrCookieSlime/Slimefun/hooks/github/GitHubSetup.java index bef92fced..ed77ccacb 100644 --- a/src/me/mrCookieSlime/Slimefun/hooks/github/GitHubSetup.java +++ b/src/me/mrCookieSlime/Slimefun/hooks/github/GitHubSetup.java @@ -42,7 +42,9 @@ public class GitHubSetup { for (JsonElement e: array) { String name = e.getAsJsonObject().get("login").getAsString(); - if (Contributor.textures.containsKey(name)) continue; + if (SlimefunStartup.instance.getUtilities().contributorHeads.containsKey(name)) { + continue; + } InputStreamReader profile_reader = null, session_reader = null; @@ -57,12 +59,12 @@ public class GitHubSetup { for (JsonElement el: properties) { if (el.isJsonObject() && el.getAsJsonObject().get("name").getAsString().equals("textures")) { - Contributor.textures.put(name, el.getAsJsonObject().get("value").getAsString()); + SlimefunStartup.instance.getUtilities().contributorHeads.put(name, el.getAsJsonObject().get("value").getAsString()); break; } } } catch (Exception x) { - Contributor.textures.put(name, null); + SlimefunStartup.instance.getUtilities().contributorHeads.put(name, null); } finally { if (profile_reader != null) { try { diff --git a/src/me/mrCookieSlime/Slimefun/listeners/BowListener.java b/src/me/mrCookieSlime/Slimefun/listeners/BowListener.java index d0192be32..9ce85ba7a 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/BowListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/BowListener.java @@ -46,9 +46,9 @@ public class BowListener implements Listener { private void handleGrapplingHook(Arrow arrow) { if (arrow != null) { - if (arrow.getShooter() instanceof Player && utilities.jump_state.containsKey(((Player) arrow.getShooter()).getUniqueId())) { + if (arrow.getShooter() instanceof Player && utilities.jumpState.containsKey(((Player) arrow.getShooter()).getUniqueId())) { final Player p = (Player) arrow.getShooter(); - if (p.getGameMode() != GameMode.CREATIVE && utilities.jump_state.get(p.getUniqueId())) arrow.getWorld().dropItem(arrow.getLocation(), SlimefunItem.getItem("GRAPPLING_HOOK")); + if (p.getGameMode() != GameMode.CREATIVE && utilities.jumpState.get(p.getUniqueId())) arrow.getWorld().dropItem(arrow.getLocation(), SlimefunItem.getItem("GRAPPLING_HOOK")); if (p.getLocation().distance(arrow.getLocation()) < 3.0D) { if (arrow.getLocation().getY() > p.getLocation().getY()) { p.setVelocity(new Vector(0.0D, 0.25D, 0.0D)); @@ -60,7 +60,7 @@ public class BowListener implements Listener { } Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> { - utilities.jump_state.remove(p.getUniqueId()); + utilities.jumpState.remove(p.getUniqueId()); utilities.remove.remove(p.getUniqueId()); }, 20L); } @@ -89,7 +89,7 @@ public class BowListener implements Listener { } Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> { - utilities.jump_state.remove(p.getUniqueId()); + utilities.jumpState.remove(p.getUniqueId()); utilities.remove.remove(p.getUniqueId()); }, 20L); } diff --git a/src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java b/src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java index 47fa9aa48..d6ca9180f 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java @@ -106,24 +106,14 @@ public class ItemListener implements Listener { */ @EventHandler public void enabledCheck(PlayerInteractEvent e) { - if(e.getAction() != Action.LEFT_CLICK_AIR && e.getAction() != Action.LEFT_CLICK_BLOCK) + if (e.getAction() != Action.LEFT_CLICK_AIR && e.getAction() != Action.LEFT_CLICK_BLOCK) { return; + } ItemStack item = e.getItem(); - - if(item == null) - item = e.getPlayer().getInventory().getItemInMainHand(); - - if(item == null) - item = e.getPlayer().getInventory().getItemInOffHand(); - - if(item == null) - return; - - - if(!Slimefun.isEnabled(e.getPlayer(), item, true)) + if (item != null && !Slimefun.isEnabled(e.getPlayer(), item, true)) { e.setCancelled(true); - + } } @EventHandler public void debug(PlayerInteractEvent e) { From 77a8911b8c7921cba8611addd4fc399ae42eddd3 Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Tue, 27 Aug 2019 15:27:38 +0200 Subject: [PATCH 007/169] Another large wave of refactoring and technical debt reduction --- .../Events/MultiBlockInteractEvent.java | 6 +- .../Slimefun/Events/ResearchUnlockEvent.java | 6 +- .../GEO/Resources/NetherIceResource.java | 9 +- .../Slimefun/GEO/Resources/OilResource.java | 27 ++---- .../Slimefun/GPS/GPSNetwork.java | 36 +++---- .../Slimefun/GPS/TeleportationSequence.java | 19 ++-- .../Slimefun/Lists/Categories.java | 12 ++- .../Slimefun/Lists/RecipeType.java | 36 +++---- .../Slimefun/Lists/SlimefunItems.java | 32 ++++--- .../Slimefun/Objects/Charge.java | 8 +- .../Slimefun/Objects/Research.java | 4 +- .../Objects/SlimefunItem/SlimefunItem.java | 7 +- .../Slimefun/Setup/SlimefunSetup.java | 4 +- src/me/mrCookieSlime/Slimefun/Utilities.java | 3 +- .../AltarRecipe.java | 2 +- .../Pedestals.java | 32 +++---- .../RitualAnimation.java | 2 +- .../{Android => androids}/AndroidObject.java | 2 +- .../{Android => androids}/AndroidType.java | 2 +- .../ProgrammableAndroid.java | 54 +++++------ .../{Android => androids}/ScriptPart.java | 2 +- .../comparators/ScriptDownloadSorter.java | 4 +- .../comparators/ScriptReputationSorter.java | 4 +- .../Slimefun/api/ErrorReport.java | 93 +++++++++++++++---- .../Slimefun/api/PlayerProfile.java | 2 +- .../Slimefun/api/TickerTask.java | 12 +-- .../Slimefun/hooks/PlaceholderAPIHook.java | 2 +- .../listeners/AncientAltarListener.java | 4 +- .../listeners/AndroidKillingListener.java | 2 +- 29 files changed, 232 insertions(+), 196 deletions(-) rename src/me/mrCookieSlime/Slimefun/{AncientAltar => ancient_altar}/AltarRecipe.java (95%) rename src/me/mrCookieSlime/Slimefun/{AncientAltar => ancient_altar}/Pedestals.java (79%) rename src/me/mrCookieSlime/Slimefun/{AncientAltar => ancient_altar}/RitualAnimation.java (98%) rename src/me/mrCookieSlime/Slimefun/{Android => androids}/AndroidObject.java (88%) rename src/me/mrCookieSlime/Slimefun/{Android => androids}/AndroidType.java (85%) rename src/me/mrCookieSlime/Slimefun/{Android => androids}/ProgrammableAndroid.java (96%) rename src/me/mrCookieSlime/Slimefun/{Android => androids}/ScriptPart.java (99%) rename src/me/mrCookieSlime/Slimefun/{Android => androids}/comparators/ScriptDownloadSorter.java (64%) rename src/me/mrCookieSlime/Slimefun/{Android => androids}/comparators/ScriptReputationSorter.java (78%) diff --git a/src/me/mrCookieSlime/Slimefun/Events/MultiBlockInteractEvent.java b/src/me/mrCookieSlime/Slimefun/Events/MultiBlockInteractEvent.java index 77740205b..23ab8c688 100644 --- a/src/me/mrCookieSlime/Slimefun/Events/MultiBlockInteractEvent.java +++ b/src/me/mrCookieSlime/Slimefun/Events/MultiBlockInteractEvent.java @@ -20,10 +20,10 @@ public class MultiBlockInteractEvent extends Event implements Cancellable { public HandlerList getHandlers() { return handlers; } - + public static HandlerList getHandlerList() { - return handlers; - } + return handlers; + } public MultiBlockInteractEvent(Player p, MultiBlock mb, Block clicked) { this.p = p; diff --git a/src/me/mrCookieSlime/Slimefun/Events/ResearchUnlockEvent.java b/src/me/mrCookieSlime/Slimefun/Events/ResearchUnlockEvent.java index 474fd2ffe..b4470bb91 100644 --- a/src/me/mrCookieSlime/Slimefun/Events/ResearchUnlockEvent.java +++ b/src/me/mrCookieSlime/Slimefun/Events/ResearchUnlockEvent.java @@ -18,10 +18,10 @@ public class ResearchUnlockEvent extends Event implements Cancellable { public HandlerList getHandlers() { return handlers; } - + public static HandlerList getHandlerList() { - return handlers; - } + return handlers; + } public ResearchUnlockEvent(Player p, Research res) { this.p = p; diff --git a/src/me/mrCookieSlime/Slimefun/GEO/Resources/NetherIceResource.java b/src/me/mrCookieSlime/Slimefun/GEO/Resources/NetherIceResource.java index 3445c3bdd..4c2cac513 100644 --- a/src/me/mrCookieSlime/Slimefun/GEO/Resources/NetherIceResource.java +++ b/src/me/mrCookieSlime/Slimefun/GEO/Resources/NetherIceResource.java @@ -10,14 +10,7 @@ public class NetherIceResource implements OreGenResource { @Override public int getDefaultSupply(Biome biome) { - switch (biome) { - case NETHER: { - return 32; - } - default: { - return 0; - } - } + return biome == Biome.NETHER ? 32: 0; } @Override diff --git a/src/me/mrCookieSlime/Slimefun/GEO/Resources/OilResource.java b/src/me/mrCookieSlime/Slimefun/GEO/Resources/OilResource.java index 16817b518..26b3c4cd3 100644 --- a/src/me/mrCookieSlime/Slimefun/GEO/Resources/OilResource.java +++ b/src/me/mrCookieSlime/Slimefun/GEO/Resources/OilResource.java @@ -14,35 +14,30 @@ public class OilResource implements OreGenResource { switch (biome) { case SNOWY_BEACH: case STONE_SHORE: - case BEACH: { + case BEACH: return CSCoreLib.randomizer().nextInt(6) + 2; - } case DESERT: case DESERT_HILLS: - case DESERT_LAKES: { + case DESERT_LAKES: return CSCoreLib.randomizer().nextInt(40) + 19; - } case MOUNTAINS: case GRAVELLY_MOUNTAINS: case MOUNTAIN_EDGE: - case RIVER: { + case RIVER: return CSCoreLib.randomizer().nextInt(14) + 13; - } case SNOWY_MOUNTAINS: case SNOWY_TUNDRA: case ICE_SPIKES: case FROZEN_OCEAN: - case FROZEN_RIVER: { + case FROZEN_RIVER: return CSCoreLib.randomizer().nextInt(11) + 3; - } case THE_END: - case NETHER: { + case NETHER: return 0; - } case BADLANDS: @@ -52,24 +47,20 @@ public class OilResource implements OreGenResource { case MODIFIED_BADLANDS_PLATEAU: case MODIFIED_WOODED_BADLANDS_PLATEAU: case MUSHROOM_FIELDS: - case MUSHROOM_FIELD_SHORE: { + case MUSHROOM_FIELD_SHORE: return CSCoreLib.randomizer().nextInt(24) + 14; - } case DEEP_OCEAN: - case OCEAN: { + case OCEAN: return CSCoreLib.randomizer().nextInt(62) + 24; - } case SWAMP: - case SWAMP_HILLS: { + case SWAMP_HILLS: return CSCoreLib.randomizer().nextInt(20) + 4; - } - default: { + default: return CSCoreLib.randomizer().nextInt(10) + 6; } - } } @Override diff --git a/src/me/mrCookieSlime/Slimefun/GPS/GPSNetwork.java b/src/me/mrCookieSlime/Slimefun/GPS/GPSNetwork.java index 46214dad7..63b0c1a0e 100644 --- a/src/me/mrCookieSlime/Slimefun/GPS/GPSNetwork.java +++ b/src/me/mrCookieSlime/Slimefun/GPS/GPSNetwork.java @@ -24,6 +24,7 @@ import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.MenuHelper; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; import me.mrCookieSlime.CSCoreLibPlugin.general.Math.DoubleHandler; import me.mrCookieSlime.CSCoreLibPlugin.general.World.CustomSkull; +import me.mrCookieSlime.Slimefun.SlimefunStartup; import me.mrCookieSlime.Slimefun.GEO.OreGenResource; import me.mrCookieSlime.Slimefun.GEO.OreGenSystem; import me.mrCookieSlime.Slimefun.Setup.Messages; @@ -35,10 +36,14 @@ public class GPSNetwork { private int[] border = new int[] {0, 1, 3, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 26, 27, 35, 36, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53}; private int[] inventory = new int[] {19, 20, 21, 22, 23, 24, 25, 28, 29, 30, 31, 32, 33, 34, 37, 38, 39, 40, 41, 42, 43}; + private static final int[] teleporter_border = new int[] {0, 1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 26, 27, 35, 36, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53}; + private static final int[] teleporter_inventory = new int[] {19, 20, 21, 22, 23, 24, 25, 28, 29, 30, 31, 32, 33, 34, 37, 38, 39, 40, 41, 42, 43}; + public void updateTransmitter(Block b, UUID uuid, NetworkStatus status) { Set set = new HashSet<>(); if (transmitters.containsKey(uuid)) set = transmitters.get(uuid); - if (status.equals(NetworkStatus.ONLINE)) { + + if (status == NetworkStatus.ONLINE) { if (!set.contains(b.getLocation())) { set.add(b.getLocation()); transmitters.put(uuid, set); @@ -115,10 +120,10 @@ public class GPSNetwork { if (entry.getKey().startsWith("&4Deathpoint")) { return CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMWFlMzg1NWY5NTJjZDRhMDNjMTQ4YTk0NmUzZjgxMmE1OTU1YWQzNWNiY2I1MjYyN2VhNGFjZDQ3ZDMwODEifX19"); } - else if (l.getWorld().getEnvironment().equals(Environment.NETHER)) { + else if (l.getWorld().getEnvironment() == Environment.NETHER) { return CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZDgzNTcxZmY1ODlmMWE1OWJiMDJiODA4MDBmYzczNjExNmUyN2MzZGNmOWVmZWJlZGU4Y2YxZmRkZSJ9fX0="); } - else if (l.getWorld().getEnvironment().equals(Environment.THE_END)) { + else if (l.getWorld().getEnvironment() == Environment.THE_END) { return CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYzZjYWM1OWIyYWFlNDg5YWEwNjg3YjVkODAyYjI1NTVlYjE0YTQwYmQ2MmIyMWViMTE2ZmE1NjljZGI3NTYifX19"); } else { @@ -146,14 +151,10 @@ public class GPSNetwork { }); menu.addItem(4, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZGRjZmJhNThmYWYxZjY0ODQ3ODg0MTExODIyYjY0YWZhMjFkN2ZjNjJkNDQ4MWYxNGYzZjNiY2I2MzMwIn19fQ=="), "&7Network Info", "", "&8\u21E8 &7Status: " + (getNetworkComplexity(p.getUniqueId()) > 0 ? "&2&lONLINE": "&4&lOFFLINE"), "&8\u21E8 &7Complexity: &r" + getNetworkComplexity(p.getUniqueId()))); - menu.addMenuClickHandler(4, - (pl, slot, item, action) -> false - ); + menu.addMenuClickHandler(4, (pl, slot, item, action) -> false); menu.addItem(6, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYzljODg4MWU0MjkxNWE5ZDI5YmI2MWExNmZiMjZkMDU5OTEzMjA0ZDI2NWRmNWI0MzliM2Q3OTJhY2Q1NiJ9fX0="), "&7Waypoint Overview &e(Selected)")); - menu.addMenuClickHandler(6, - (pl, slot, item, action) -> false - ); + menu.addMenuClickHandler(6, (pl, slot, item, action) -> false); int index = 0; for (final Map.Entry entry : getWaypoints(p.getUniqueId()).entrySet()) { @@ -223,7 +224,7 @@ public class GPSNetwork { } public Set getTransmitters(UUID uuid) { - return transmitters.containsKey(uuid) ? transmitters.get(uuid): new HashSet(); + return transmitters.containsKey(uuid) ? transmitters.get(uuid): new HashSet<>(); } public void scanChunk(Player p, Chunk chunk) { @@ -247,20 +248,15 @@ public class GPSNetwork { menu.open(p); } - private final static int[] teleporter_border = new int[] {0, 1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 26, 27, 35, 36, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53}; - private final static int[] teleporter_inventory = new int[] {19, 20, 21, 22, 23, 24, 25, 28, 29, 30, 31, 32, 33, 34, 37, 38, 39, 40, 41, 42, 43}; - public static void openTeleporterGUI(Player p, UUID uuid, Block b, final int complexity) throws Exception { - if (TeleportationSequence.players.contains(p.getUniqueId())) return; + if (SlimefunStartup.instance.getUtilities().teleporterUsers.contains(p.getUniqueId())) return; p.playSound(p.getLocation(), Sound.UI_BUTTON_CLICK, 1F, 1F); - TeleportationSequence.players.add(p.getUniqueId()); + SlimefunStartup.instance.getUtilities().teleporterUsers.add(p.getUniqueId()); ChestMenu menu = new ChestMenu("&3Teleporter"); - menu.addMenuCloseHandler( - pl -> TeleportationSequence.players.remove(pl.getUniqueId()) - ); + menu.addMenuCloseHandler(pl -> SlimefunStartup.instance.getUtilities().teleporterUsers.remove(pl.getUniqueId())); for (int slot : teleporter_border) { menu.addItem(slot, new CustomItem(new ItemStack(Material.GRAY_STAINED_GLASS_PANE), " "), @@ -269,9 +265,7 @@ public class GPSNetwork { } menu.addItem(4, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYzljODg4MWU0MjkxNWE5ZDI5YmI2MWExNmZiMjZkMDU5OTEzMjA0ZDI2NWRmNWI0MzliM2Q3OTJhY2Q1NiJ9fX0="), "&7Waypoint Overview &e(Select a Destination)")); - menu.addMenuClickHandler(4, - (pl, slot, item, action) -> false - ); + menu.addMenuClickHandler(4, (pl, slot, item, action) -> false); final Location source = new Location(b.getWorld(), b.getX() + 0.5D, b.getY() + 2D, b.getZ() + 0.5D); int index = 0; diff --git a/src/me/mrCookieSlime/Slimefun/GPS/TeleportationSequence.java b/src/me/mrCookieSlime/Slimefun/GPS/TeleportationSequence.java index 10798406e..7572a62c8 100644 --- a/src/me/mrCookieSlime/Slimefun/GPS/TeleportationSequence.java +++ b/src/me/mrCookieSlime/Slimefun/GPS/TeleportationSequence.java @@ -1,7 +1,5 @@ package me.mrCookieSlime.Slimefun.GPS; -import java.util.HashSet; -import java.util.Set; import java.util.UUID; import org.bukkit.Bukkit; @@ -17,12 +15,12 @@ import me.mrCookieSlime.CSCoreLibPlugin.general.World.TitleBuilder; import me.mrCookieSlime.CSCoreLibPlugin.general.World.TitleBuilder.TitleType; import me.mrCookieSlime.Slimefun.SlimefunStartup; -public class TeleportationSequence { - - public static Set players = new HashSet<>(); +public final class TeleportationSequence { + + private TeleportationSequence() {} public static void start(UUID uuid, int complexity, Location source, Location destination, boolean resistance) { - players.add(uuid); + SlimefunStartup.instance.getUtilities().teleporterUsers.add(uuid); updateProgress(uuid, getSpeed(complexity, source, destination), 1, source, destination, resistance); } @@ -50,7 +48,8 @@ public class TeleportationSequence { } private static void cancel(UUID uuid, Player p) { - players.remove(uuid); + SlimefunStartup.instance.getUtilities().teleporterUsers.remove(uuid); + if (p != null) { try { TitleBuilder title = (TitleBuilder) new TitleBuilder(20, 60, 20).addText(ChatColor.translateAlternateColorCodes('&', "&4Teleportation cancelled")); @@ -84,7 +83,7 @@ public class TeleportationSequence { destination.getWorld().spawnParticle(Particle.PORTAL,new Location(destination.getWorld(), destination.getX(), destination.getY() + 1, destination.getZ()),progress * 2, 0.2F, 0.8F, 0.2F ); destination.getWorld().playSound(destination, Sound.ENTITY_BLAZE_DEATH, 2F, 1.4F); - players.remove(uuid); + SlimefunStartup.instance.getUtilities().teleporterUsers.remove(uuid); } else { TitleBuilder title = (TitleBuilder) new TitleBuilder(0, 60, 0).addText(ChatColor.translateAlternateColorCodes('&', "&3Teleporting...")); @@ -96,9 +95,7 @@ public class TeleportationSequence { source.getWorld().spawnParticle(Particle.PORTAL, source, progress * 2, 0.2F, 0.8F, 0.2F); source.getWorld().playSound(source, Sound.UI_BUTTON_CLICK, 1.7F, 0.6F); - Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> { - updateProgress(uuid, speed, progress + speed, source, destination, resistance); - }, 10l); + Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> updateProgress(uuid, speed, progress + speed, source, destination, resistance), 10L); } } catch (Exception e) { e.printStackTrace(); diff --git a/src/me/mrCookieSlime/Slimefun/Lists/Categories.java b/src/me/mrCookieSlime/Slimefun/Lists/Categories.java index 912cc6ce0..47ef4b0c7 100644 --- a/src/me/mrCookieSlime/Slimefun/Lists/Categories.java +++ b/src/me/mrCookieSlime/Slimefun/Lists/Categories.java @@ -1,5 +1,9 @@ package me.mrCookieSlime.Slimefun.Lists; +import org.bukkit.ChatColor; +import org.bukkit.Color; +import org.bukkit.Material; + import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomArmor; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.MenuItem; @@ -8,10 +12,6 @@ import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.LockedCategory; import me.mrCookieSlime.Slimefun.Objects.SeasonCategory; -import org.bukkit.ChatColor; -import org.bukkit.Color; -import org.bukkit.Material; - /** * Built-in categories. * @@ -19,7 +19,9 @@ import org.bukkit.Material; * @since 4.0 * @see Category */ -public class Categories { +public final class Categories { + + private Categories() {} public static Category WEAPONS = new Category(new MenuItem(Material.GOLDEN_SWORD, "&7Weapons", 0, "open"), 1); public static Category PORTABLE = null; diff --git a/src/me/mrCookieSlime/Slimefun/Lists/RecipeType.java b/src/me/mrCookieSlime/Slimefun/Lists/RecipeType.java index 607a07c6a..fdb190ca1 100644 --- a/src/me/mrCookieSlime/Slimefun/Lists/RecipeType.java +++ b/src/me/mrCookieSlime/Slimefun/Lists/RecipeType.java @@ -14,26 +14,26 @@ import org.bukkit.inventory.ItemStack; public class RecipeType { - public static final RecipeType MULTIBLOCK = new RecipeType(new CustomItem(Material.BRICK, "&bMultiBlock", 0, new String[] {"", "&a&oBuild it in the World"})); - public static final RecipeType ARMOR_FORGE = new RecipeType(new CustomItem(Material.ANVIL, "&bArmor Forge", 0, new String[] {"", "&a&oCraft it in an Armor Forge"}), "ARMOR_FORGE"); - public static final RecipeType GRIND_STONE = new RecipeType(new CustomItem(Material.DISPENSER, "&bGrind Stone", 0, new String[] {"", "&a&oGrind it using the Grind Stone"}), "GRIND_STONE"); - public static final RecipeType MOB_DROP = new RecipeType(new CustomItem(Material.IRON_SWORD, "&bMob Drop", 0, new String[] {"", "&a&oKill the specified Mob to obtain this Item"})); - public static final RecipeType SMELTERY = new RecipeType(new CustomItem(Material.FURNACE, "&6Smeltery", 0, new String[] {"", "&a&oSmelt it using a Smeltery"}), "SMELTERY"); - public static final RecipeType ORE_CRUSHER = new RecipeType(new CustomItem(Material.DISPENSER, "&bOre Crusher", 0, new String[] {"", "&a&oCrush it using the Ore Crusher"}), "ORE_CRUSHER"); - public static final RecipeType GOLD_PAN = new RecipeType(new CustomItem(Material.BOWL, "&bGold Pan", 0, new String[] {"", "&a&oUse a Gold Pan on Gravel to obtain this Item"})); - public static final RecipeType COMPRESSOR = new RecipeType(new CustomItem(Material.PISTON, "&bCompressor", 0, new String[] {"", "&a&oCompress it using the Compressor"}), "COMPRESSOR"); - public static final RecipeType PRESSURE_CHAMBER = new RecipeType(new CustomItem(Material.GLASS, "&bPressure Chamber", 0, new String[] {"", "&a&oCompress it using the Pressure Chamber"}), "PRESSURE_CHAMBER"); - public static final RecipeType OVEN = new RecipeType(new CustomItem(Material.FURNACE, "&bOven", 0, new String[] {"", "&a&oSmelt it in an Oven"}), "OVEN"); - public static final RecipeType MAGIC_WORKBENCH = new RecipeType(new CustomItem(Material.BOOKSHELF, "&6Magic Workbench", 0, new String[] {"", "&a&oCraft it in a Magic Workbench"}), "MAGIC_WORKBENCH"); - public static final RecipeType ORE_WASHER = new RecipeType(new CustomItem(Material.CAULDRON, "&6Ore Washer", 0, new String[] {"", "&a&oWash it in an Ore Washer"}), "ORE_WASHER"); - public static final RecipeType ENHANCED_CRAFTING_TABLE = new RecipeType(new CustomItem(Material.CRAFTING_TABLE, "&eEnhanced Crafting Table", 0, new String[] {"", "&a&oA regular Crafting Table cannot", "&a&ohold this massive Amount of Power..."}), "ENHANCED_CRAFTING_TABLE"); - public static final RecipeType JUICER = new RecipeType(new CustomItem(Material.GLASS_BOTTLE, "&eJuicer", 0, new String[] {"", "&a&oUsed for Juice Creation"}), "JUICER"); - public static final RecipeType ANCIENT_ALTAR = new RecipeType(new CustomItem(Material.ENCHANTING_TABLE, "&4Ancient Altar", 0, new String[] {"", "&dYou will need to craft this Item", "&dby performing an Ancient Altar Ritual"})); + public static final RecipeType MULTIBLOCK = new RecipeType(new CustomItem(Material.BRICK, "&bMultiBlock", "", "&a&oBuild it in the World")); + public static final RecipeType ARMOR_FORGE = new RecipeType(new CustomItem(Material.ANVIL, "&bArmor Forge", "", "&a&oCraft it in an Armor Forge"), "ARMOR_FORGE"); + public static final RecipeType GRIND_STONE = new RecipeType(new CustomItem(Material.DISPENSER, "&bGrind Stone", "", "&a&oGrind it using the Grind Stone"), "GRIND_STONE"); + public static final RecipeType MOB_DROP = new RecipeType(new CustomItem(Material.IRON_SWORD, "&bMob Drop", "", "&a&oKill the specified Mob to obtain this Item")); + public static final RecipeType SMELTERY = new RecipeType(new CustomItem(Material.FURNACE, "&6Smeltery", "", "&a&oSmelt it using a Smeltery"), "SMELTERY"); + public static final RecipeType ORE_CRUSHER = new RecipeType(new CustomItem(Material.DISPENSER, "&bOre Crusher", "", "&a&oCrush it using the Ore Crusher"), "ORE_CRUSHER"); + public static final RecipeType GOLD_PAN = new RecipeType(new CustomItem(Material.BOWL, "&bGold Pan", "", "&a&oUse a Gold Pan on Gravel to obtain this Item")); + public static final RecipeType COMPRESSOR = new RecipeType(new CustomItem(Material.PISTON, "&bCompressor", "", "&a&oCompress it using the Compressor"), "COMPRESSOR"); + public static final RecipeType PRESSURE_CHAMBER = new RecipeType(new CustomItem(Material.GLASS, "&bPressure Chamber", "", "&a&oCompress it using the Pressure Chamber"), "PRESSURE_CHAMBER"); + public static final RecipeType OVEN = new RecipeType(new CustomItem(Material.FURNACE, "&bOven", "", "&a&oSmelt it in an Oven"), "OVEN"); + public static final RecipeType MAGIC_WORKBENCH = new RecipeType(new CustomItem(Material.BOOKSHELF, "&6Magic Workbench", "", "&a&oCraft it in a Magic Workbench"), "MAGIC_WORKBENCH"); + public static final RecipeType ORE_WASHER = new RecipeType(new CustomItem(Material.CAULDRON, "&6Ore Washer", "", "&a&oWash it in an Ore Washer"), "ORE_WASHER"); + public static final RecipeType ENHANCED_CRAFTING_TABLE = new RecipeType(new CustomItem(Material.CRAFTING_TABLE, "&eEnhanced Crafting Table", "", "&a&oA regular Crafting Table cannot", "&a&ohold this massive Amount of Power..."), "ENHANCED_CRAFTING_TABLE"); + public static final RecipeType JUICER = new RecipeType(new CustomItem(Material.GLASS_BOTTLE, "&eJuicer", "", "&a&oUsed for Juice Creation"), "JUICER"); + public static final RecipeType ANCIENT_ALTAR = new RecipeType(new CustomItem(Material.ENCHANTING_TABLE, "&4Ancient Altar", "", "&dYou will need to craft this Item", "&dby performing an Ancient Altar Ritual")); public static final RecipeType HEATED_PRESSURE_CHAMBER = new RecipeType(new CustomItem(new ItemStack(Material.GRAY_STAINED_GLASS), "&cHeated Pressure Chamber", "", "&a&oCraft this Item in a", "&a&oHeated Pressure Chamber"), "HEATED_PRESSURE_CHAMBER"); - public static final RecipeType SHAPED_RECIPE = new RecipeType(new CustomItem(Material.CRAFTING_TABLE, "&eShaped Recipe", 0, new String[] {"", "&a&oJust a standard Recipe in the Workbench..."})); - public static final RecipeType SHAPELESS_RECIPE = new RecipeType(new CustomItem(Material.CRAFTING_TABLE, "&eShapeless Recipe", 0, new String[] {"", "&a&oJust a standard Recipe in the Workbench..."})); - public static final RecipeType FURNACE = new RecipeType(new CustomItem(Material.FURNACE, "&eFurnace Recipe", 0, new String[] {"", "&a&oJust smelt it in a regular Furnace"})); + public static final RecipeType SHAPED_RECIPE = new RecipeType(new CustomItem(Material.CRAFTING_TABLE, "&eShaped Recipe", "", "&a&oJust a standard Recipe in the Workbench...")); + public static final RecipeType SHAPELESS_RECIPE = new RecipeType(new CustomItem(Material.CRAFTING_TABLE, "&eShapeless Recipe", "", "&a&oJust a standard Recipe in the Workbench...")); + public static final RecipeType FURNACE = new RecipeType(new CustomItem(Material.FURNACE, "&eFurnace Recipe", "", "&a&oJust smelt it in a regular Furnace")); public static final RecipeType NULL = new RecipeType(null); private ItemStack item; diff --git a/src/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java b/src/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java index a0456b9d1..854c783e2 100644 --- a/src/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java +++ b/src/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java @@ -16,7 +16,9 @@ import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomPotion; import me.mrCookieSlime.CSCoreLibPlugin.general.String.Christmas; import me.mrCookieSlime.CSCoreLibPlugin.general.World.CustomSkull; -public class SlimefunItems { +public final class SlimefunItems { + + private SlimefunItems() {} /* Items */ public static ItemStack PORTABLE_CRAFTER = null; @@ -667,21 +669,21 @@ public class SlimefunItems { ELECTRIC_MOTOR = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOGNiY2EwMTJmNjdlNTRkZTlhZWU3MmZmNDI0ZTA1NmMyYWU1OGRlNWVhY2M5NDlhYjJiY2Q5NjgzY2VjIn19fQ=="), "&cElectric Motor"); CARGO_MOTOR = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOGNiY2EwMTJmNjdlNTRkZTlhZWU3MmZmNDI0ZTA1NmMyYWU1OGRlNWVhY2M5NDlhYjJiY2Q5NjgzY2VjIn19fQ=="), "&3Cargo Motor"); - BACKPACK_SMALL = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNDBjYjFlNjdiNTEyYWIyZDRiZjNkN2FjZTBlYWFmNjFjMzJjZDQ2ODFkZGMzOTg3Y2ViMzI2NzA2YTMzZmEifX19"), "&eSmall Backpack", new String[] {"", "&7Size: &e9", "&7ID: ", "", "&7&eRight Click&7 to open"}); - BACKPACK_MEDIUM = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNDBjYjFlNjdiNTEyYWIyZDRiZjNkN2FjZTBlYWFmNjFjMzJjZDQ2ODFkZGMzOTg3Y2ViMzI2NzA2YTMzZmEifX19"), "&eBackpack", new String[] {"", "&7Size: &e18", "&7ID: ", "", "&7&eRight Click&7 to open"}); - BACKPACK_LARGE = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNDBjYjFlNjdiNTEyYWIyZDRiZjNkN2FjZTBlYWFmNjFjMzJjZDQ2ODFkZGMzOTg3Y2ViMzI2NzA2YTMzZmEifX19"), "&eLarge Backpack", new String[] {"", "&7Size: &e27", "&7ID: ", "", "&7&eRight Click&7 to open"}); - WOVEN_BACKPACK = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNDBjYjFlNjdiNTEyYWIyZDRiZjNkN2FjZTBlYWFmNjFjMzJjZDQ2ODFkZGMzOTg3Y2ViMzI2NzA2YTMzZmEifX19"), "&eWoven Backpack", new String[] {"", "&7Size: &e36", "&7ID: ", "", "&7&eRight Click&7 to open"}); - GILDED_BACKPACK = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNDBjYjFlNjdiNTEyYWIyZDRiZjNkN2FjZTBlYWFmNjFjMzJjZDQ2ODFkZGMzOTg3Y2ViMzI2NzA2YTMzZmEifX19"), "&eGilded Backpack", new String[] {"", "&7Size: &e45", "&7ID: ", "", "&7&eRight Click&7 to open"}); - RADIANT_BACKPACK = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNDBjYjFlNjdiNTEyYWIyZDRiZjNkN2FjZTBlYWFmNjFjMzJjZDQ2ODFkZGMzOTg3Y2ViMzI2NzA2YTMzZmEifX19"), "&eRadiant Backpack", new String[] {"", "&7Size: &e54 (Double chest)", "&7ID: ", "", "&7&eRight Click&7 to open"}); - BOUND_BACKPACK = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMmEzYjM0ODYyYjlhZmI2M2NmOGQ1Nzc5OTY2ZDNmYmE3MGFmODJiMDRlODNmM2VhZjY0NDlhZWJhIn19fQ=="), "&cSoulbound Backpack", new String[] {"", "&7Size: &e36", "&7ID: ", "", "&7&eRight Click&7 to open"}); - COOLER = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZDRjMTU3MjU4NGViNWRlMjI5ZGU5ZjVhNGY3NzlkMGFhY2JhZmZkMzNiY2IzM2ViNDUzNmE2YTJiYzZhMSJ9fX0="), "&bCooler", new String[] {"&rAllows you to store Juices/Smoothies", "&rand automatically consumes them when you are hungry", "&rand you have this in your Inventory", "", "&7Size: &e27", "&7ID: ", "", "&7&eRight Click&7 to open"}); - ENDER_BACKPACK = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMmEzYjM0ODYyYjlhZmI2M2NmOGQ1Nzc5OTY2ZDNmYmE3MGFmODJiMDRlODNmM2VhZjY0NDlhZWJhIn19fQ=="), "&6Ender Backpack", new String[] {"&a&oA portable Ender Chest", "", "&eRight Click&7 to open"}); + BACKPACK_SMALL = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNDBjYjFlNjdiNTEyYWIyZDRiZjNkN2FjZTBlYWFmNjFjMzJjZDQ2ODFkZGMzOTg3Y2ViMzI2NzA2YTMzZmEifX19"), "&eSmall Backpack","", "&7Size: &e9", "&7ID: ", "", "&7&eRight Click&7 to open"); + BACKPACK_MEDIUM = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNDBjYjFlNjdiNTEyYWIyZDRiZjNkN2FjZTBlYWFmNjFjMzJjZDQ2ODFkZGMzOTg3Y2ViMzI2NzA2YTMzZmEifX19"), "&eBackpack","", "&7Size: &e18", "&7ID: ", "", "&7&eRight Click&7 to open"); + BACKPACK_LARGE = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNDBjYjFlNjdiNTEyYWIyZDRiZjNkN2FjZTBlYWFmNjFjMzJjZDQ2ODFkZGMzOTg3Y2ViMzI2NzA2YTMzZmEifX19"), "&eLarge Backpack","", "&7Size: &e27", "&7ID: ", "", "&7&eRight Click&7 to open"); + WOVEN_BACKPACK = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNDBjYjFlNjdiNTEyYWIyZDRiZjNkN2FjZTBlYWFmNjFjMzJjZDQ2ODFkZGMzOTg3Y2ViMzI2NzA2YTMzZmEifX19"), "&eWoven Backpack","", "&7Size: &e36", "&7ID: ", "", "&7&eRight Click&7 to open"); + GILDED_BACKPACK = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNDBjYjFlNjdiNTEyYWIyZDRiZjNkN2FjZTBlYWFmNjFjMzJjZDQ2ODFkZGMzOTg3Y2ViMzI2NzA2YTMzZmEifX19"), "&eGilded Backpack","", "&7Size: &e45", "&7ID: ", "", "&7&eRight Click&7 to open"); + RADIANT_BACKPACK = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNDBjYjFlNjdiNTEyYWIyZDRiZjNkN2FjZTBlYWFmNjFjMzJjZDQ2ODFkZGMzOTg3Y2ViMzI2NzA2YTMzZmEifX19"), "&eRadiant Backpack","", "&7Size: &e54 (Double chest)", "&7ID: ", "", "&7&eRight Click&7 to open"); + BOUND_BACKPACK = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMmEzYjM0ODYyYjlhZmI2M2NmOGQ1Nzc5OTY2ZDNmYmE3MGFmODJiMDRlODNmM2VhZjY0NDlhZWJhIn19fQ=="), "&cSoulbound Backpack","", "&7Size: &e36", "&7ID: ", "", "&7&eRight Click&7 to open"); + COOLER = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZDRjMTU3MjU4NGViNWRlMjI5ZGU5ZjVhNGY3NzlkMGFhY2JhZmZkMzNiY2IzM2ViNDUzNmE2YTJiYzZhMSJ9fX0="), "&bCooler","&rAllows you to store Juices/Smoothies", "&rand automatically consumes them when you are hungry", "&rand you have this in your Inventory", "", "&7Size: &e27", "&7ID: ", "", "&7&eRight Click&7 to open"); + ENDER_BACKPACK = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMmEzYjM0ODYyYjlhZmI2M2NmOGQ1Nzc5OTY2ZDNmYmE3MGFmODJiMDRlODNmM2VhZjY0NDlhZWJhIn19fQ=="), "&6Ender Backpack","&a&oA portable Ender Chest", "", "&eRight Click&7 to open"); - VOIDBAG_SMALL = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMmEzYjM0ODYyYjlhZmI2M2NmOGQ1Nzc5OTY2ZDNmYmE3MGFmODJiMDRlODNmM2VhZjY0NDlhZWJhIn19fQ=="), "&4Small Void Bag", new String[] {"", "&7Size: &e9", "&7ID: ", "", "&7&eLeft Click&7 to suck up nearby Items", "&7&eRight Click&7 to open"}); - VOIDBAG_MEDIUM = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMmEzYjM0ODYyYjlhZmI2M2NmOGQ1Nzc5OTY2ZDNmYmE3MGFmODJiMDRlODNmM2VhZjY0NDlhZWJhIn19fQ=="), "&4Void Bag", new String[] {"", "&7Size: &e18", "&7ID: ", "", "&7&eLeft Click&7 to suck up nearby Items", "&7&eRight Click&7 to open"}); - VOIDBAG_BIG = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMmEzYjM0ODYyYjlhZmI2M2NmOGQ1Nzc5OTY2ZDNmYmE3MGFmODJiMDRlODNmM2VhZjY0NDlhZWJhIn19fQ=="), "&4Big Void Bag", new String[] {"", "&7Size: &e27", "&7ID: ", "", "&7&eLeft Click&7 to suck up nearby Items", "&7&eRight Click&7 to open"}); - VOIDBAG_LARGE = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMmEzYjM0ODYyYjlhZmI2M2NmOGQ1Nzc5OTY2ZDNmYmE3MGFmODJiMDRlODNmM2VhZjY0NDlhZWJhIn19fQ=="), "&4Large Void Bag", new String[] {"", "&7Size: &e36", "&7ID: ", "", "&7&eLeft Click&7 to suck up nearby Items", "&7&eRight Click&7 to open"}); - BOUND_VOIDBAG = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMmEzYjM0ODYyYjlhZmI2M2NmOGQ1Nzc5OTY2ZDNmYmE3MGFmODJiMDRlODNmM2VhZjY0NDlhZWJhIn19fQ=="), "&4Soulbound Void Bag", new String[] {"", "&7Size: &e36", "&7ID: ", "", "&7&eLeft Click&7 to suck up nearby Items", "&7&eRight Click&7 to open"}); + VOIDBAG_SMALL = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMmEzYjM0ODYyYjlhZmI2M2NmOGQ1Nzc5OTY2ZDNmYmE3MGFmODJiMDRlODNmM2VhZjY0NDlhZWJhIn19fQ=="), "&4Small Void Bag","", "&7Size: &e9", "&7ID: ", "", "&7&eLeft Click&7 to suck up nearby Items", "&7&eRight Click&7 to open"); + VOIDBAG_MEDIUM = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMmEzYjM0ODYyYjlhZmI2M2NmOGQ1Nzc5OTY2ZDNmYmE3MGFmODJiMDRlODNmM2VhZjY0NDlhZWJhIn19fQ=="), "&4Void Bag","", "&7Size: &e18", "&7ID: ", "", "&7&eLeft Click&7 to suck up nearby Items", "&7&eRight Click&7 to open"); + VOIDBAG_BIG = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMmEzYjM0ODYyYjlhZmI2M2NmOGQ1Nzc5OTY2ZDNmYmE3MGFmODJiMDRlODNmM2VhZjY0NDlhZWJhIn19fQ=="), "&4Big Void Bag","", "&7Size: &e27", "&7ID: ", "", "&7&eLeft Click&7 to suck up nearby Items", "&7&eRight Click&7 to open"); + VOIDBAG_LARGE = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMmEzYjM0ODYyYjlhZmI2M2NmOGQ1Nzc5OTY2ZDNmYmE3MGFmODJiMDRlODNmM2VhZjY0NDlhZWJhIn19fQ=="), "&4Large Void Bag","", "&7Size: &e36", "&7ID: ", "", "&7&eLeft Click&7 to suck up nearby Items", "&7&eRight Click&7 to open"); + BOUND_VOIDBAG = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMmEzYjM0ODYyYjlhZmI2M2NmOGQ1Nzc5OTY2ZDNmYmE3MGFmODJiMDRlODNmM2VhZjY0NDlhZWJhIn19fQ=="), "&4Soulbound Void Bag","", "&7Size: &e36", "&7ID: ", "", "&7&eLeft Click&7 to suck up nearby Items", "&7&eRight Click&7 to open"); COAL_GENERATOR = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTM0M2NlNThkYTU0Yzc5OTI0YTJjOTMzMWNmYzQxN2ZlOGNjYmJlYTliZTQ1YTdhYzg1ODYwYTZjNzMwIn19fQ=="), "&cCoal Generator", "", "&6Average Generator", "&8\u21E8 &e\u26A1 &764 J Buffer", "&8\u21E8 &e\u26A1 &716 J/s"); LAVA_GENERATOR = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTM0M2NlNThkYTU0Yzc5OTI0YTJjOTMzMWNmYzQxN2ZlOGNjYmJlYTliZTQ1YTdhYzg1ODYwYTZjNzMwIn19fQ=="), "&4Lava Generator", "", "&6Average Generator", "&8\u21E8 &e\u26A1 &7512 J Buffer", "&8\u21E8 &e\u26A1 &720 J/s"); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/Charge.java b/src/me/mrCookieSlime/Slimefun/Objects/Charge.java index b7287aa5d..797f18505 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/Charge.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/Charge.java @@ -2,16 +2,16 @@ package me.mrCookieSlime.Slimefun.Objects; public class Charge { - private double charge; + private double energy; private double capacity; - public Charge(double charge, double capacity) { - this.charge = charge; + public Charge(double energy, double capacity) { + this.energy = energy; this.capacity = capacity; } public double getStoredEnergy() { - return charge; + return energy; } public double getCapacity() { diff --git a/src/me/mrCookieSlime/Slimefun/Objects/Research.java b/src/me/mrCookieSlime/Slimefun/Objects/Research.java index d5465e0c6..80ec340bb 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/Research.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/Research.java @@ -365,7 +365,7 @@ public class Research { Set researched = profile.getResearches(); int levels = researched.stream().mapToInt(r -> r.getCost()).sum(); - String progress = String.valueOf(Math.round(((researched.size() * 100.0f) / list().size()) * 100.0f) / 100.0f); + String progress = String.valueOf(Math.round(((researched.size() * 100.0F) / list().size()) * 100.0F) / 100.0F); if (Float.parseFloat(progress) < 16.0F) progress = "&4" + progress + " &r% "; else if (Float.parseFloat(progress) < 32.0F) progress = "&c" + progress + " &r% "; else if (Float.parseFloat(progress) < 48.0F) progress = "&6" + progress + " &r% "; @@ -393,7 +393,7 @@ public class Research { */ @Deprecated public static String getTitle(Player p, Set researched) { - int index = Math.round(Float.valueOf(String.valueOf(Math.round(((researched.size() * 100.0f) / list().size()) * 100.0f) / 100.0f)) / 100.0F) * titles.size(); + int index = Math.round(Float.valueOf(String.valueOf(Math.round(((researched.size() * 100.0F) / list().size()) * 100.0F) / 100.0F)) / 100.0F) * titles.size(); if (index > 0) index--; return titles.get(index); } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java index 873e25f21..4fe43cb41 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java @@ -16,7 +16,6 @@ import org.bukkit.entity.EntityType; import org.bukkit.inventory.ItemStack; import me.mrCookieSlime.Slimefun.SlimefunStartup; -import me.mrCookieSlime.Slimefun.AncientAltar.AltarRecipe; import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; import me.mrCookieSlime.Slimefun.Objects.Category; @@ -25,6 +24,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.BlockTicker; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.ItemHandler; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; +import me.mrCookieSlime.Slimefun.ancient_altar.AltarRecipe; import me.mrCookieSlime.Slimefun.api.BlockStorage; import me.mrCookieSlime.Slimefun.api.Slimefun; import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock; @@ -512,4 +512,9 @@ public class SlimefunItem { public void addWikipage(String page) { Slimefun.addWikiPage(this.getID(), "https://github.com/TheBusyBiscuit/Slimefun4/wiki/" + page); } + + @Override + public String toString() { + return "SlimefunItem: " + id + " (" + state + ", vanilla=" + !addon + ")"; + } } diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java index bce7859f9..f414ab4d6 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java @@ -66,8 +66,6 @@ import me.mrCookieSlime.CSCoreLibPlugin.general.String.StringUtils; import me.mrCookieSlime.CSCoreLibPlugin.general.World.CustomSkull; import me.mrCookieSlime.Slimefun.SlimefunStartup; import me.mrCookieSlime.Slimefun.Utilities; -import me.mrCookieSlime.Slimefun.Android.AndroidType; -import me.mrCookieSlime.Slimefun.Android.ProgrammableAndroid; import me.mrCookieSlime.Slimefun.GPS.Elevator; import me.mrCookieSlime.Slimefun.GPS.GPSNetwork; import me.mrCookieSlime.Slimefun.GPS.NetworkStatus; @@ -144,6 +142,8 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.TrashCan; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.WitherAssembler; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.XPCollector; import me.mrCookieSlime.Slimefun.Objects.tasks.RainbowTicker; +import me.mrCookieSlime.Slimefun.androids.AndroidType; +import me.mrCookieSlime.Slimefun.androids.ProgrammableAndroid; import me.mrCookieSlime.Slimefun.api.BlockStorage; import me.mrCookieSlime.Slimefun.api.PlayerProfile; import me.mrCookieSlime.Slimefun.api.Slimefun; diff --git a/src/me/mrCookieSlime/Slimefun/Utilities.java b/src/me/mrCookieSlime/Slimefun/Utilities.java index c98047b97..7f84286a3 100644 --- a/src/me/mrCookieSlime/Slimefun/Utilities.java +++ b/src/me/mrCookieSlime/Slimefun/Utilities.java @@ -12,7 +12,7 @@ import org.bukkit.Location; import org.bukkit.entity.Entity; import org.bukkit.inventory.ItemStack; -import me.mrCookieSlime.Slimefun.AncientAltar.AltarRecipe; +import me.mrCookieSlime.Slimefun.ancient_altar.AltarRecipe; import me.mrCookieSlime.Slimefun.hooks.github.GitHubConnector; /** @@ -42,6 +42,7 @@ public final class Utilities { public Map arrows = new HashMap<>(); public Set elevatorUsers = new HashSet<>(); + public Set teleporterUsers = new HashSet<>(); public Set connectors = new HashSet<>(); public Map contributorHeads = new HashMap<>(); diff --git a/src/me/mrCookieSlime/Slimefun/AncientAltar/AltarRecipe.java b/src/me/mrCookieSlime/Slimefun/ancient_altar/AltarRecipe.java similarity index 95% rename from src/me/mrCookieSlime/Slimefun/AncientAltar/AltarRecipe.java rename to src/me/mrCookieSlime/Slimefun/ancient_altar/AltarRecipe.java index bff174af8..1e9b94d50 100644 --- a/src/me/mrCookieSlime/Slimefun/AncientAltar/AltarRecipe.java +++ b/src/me/mrCookieSlime/Slimefun/ancient_altar/AltarRecipe.java @@ -1,4 +1,4 @@ -package me.mrCookieSlime.Slimefun.AncientAltar; +package me.mrCookieSlime.Slimefun.ancient_altar; import java.util.ArrayList; import java.util.List; diff --git a/src/me/mrCookieSlime/Slimefun/AncientAltar/Pedestals.java b/src/me/mrCookieSlime/Slimefun/ancient_altar/Pedestals.java similarity index 79% rename from src/me/mrCookieSlime/Slimefun/AncientAltar/Pedestals.java rename to src/me/mrCookieSlime/Slimefun/ancient_altar/Pedestals.java index 526b36395..66b21b6b1 100644 --- a/src/me/mrCookieSlime/Slimefun/AncientAltar/Pedestals.java +++ b/src/me/mrCookieSlime/Slimefun/ancient_altar/Pedestals.java @@ -1,4 +1,4 @@ -package me.mrCookieSlime.Slimefun.AncientAltar; +package me.mrCookieSlime.Slimefun.ancient_altar; import java.util.ArrayList; import java.util.Arrays; @@ -65,25 +65,21 @@ public final class Pedestals { } private static ItemStack checkRecipe(ItemStack catalyst, List items) { - loop: for (AltarRecipe recipe: SlimefunStartup.instance.getUtilities().altarRecipes) { - if (!SlimefunManager.isItemSimiliar(catalyst, recipe.getCatalyst(), true)) { - continue; + if (SlimefunManager.isItemSimiliar(catalyst, recipe.getCatalyst(), true)) { + for (int i = 0; i < 8; i++) { + if (SlimefunManager.isItemSimiliar(items.get(i), recipe.getInput().get(0), true)) { + for (int j = 1; j < 8; j++) { + if (!SlimefunManager.isItemSimiliar(items.get((i + j) % items.size()), recipe.getInput().get(j), true)) { + break; + } + else if (j == 7) { + return recipe.getOutput(); + } + } + } + } } - - for (int i = 0; i < 8; i++) { - if (!SlimefunManager.isItemSimiliar(items.get(i), recipe.getInput().get(0), true)) { - continue; - } - - for (int j = 1; j < 8; j++) { - if (!SlimefunManager.isItemSimiliar(items.get((i + j) % items.size()), recipe.getInput().get(j), true)) { - continue loop; - } - } - - return recipe.getOutput(); - } } return null; diff --git a/src/me/mrCookieSlime/Slimefun/AncientAltar/RitualAnimation.java b/src/me/mrCookieSlime/Slimefun/ancient_altar/RitualAnimation.java similarity index 98% rename from src/me/mrCookieSlime/Slimefun/AncientAltar/RitualAnimation.java rename to src/me/mrCookieSlime/Slimefun/ancient_altar/RitualAnimation.java index 47e51f3a2..03e9e2803 100644 --- a/src/me/mrCookieSlime/Slimefun/AncientAltar/RitualAnimation.java +++ b/src/me/mrCookieSlime/Slimefun/ancient_altar/RitualAnimation.java @@ -1,4 +1,4 @@ -package me.mrCookieSlime.Slimefun.AncientAltar; +package me.mrCookieSlime.Slimefun.ancient_altar; import java.util.ArrayList; import java.util.HashMap; diff --git a/src/me/mrCookieSlime/Slimefun/Android/AndroidObject.java b/src/me/mrCookieSlime/Slimefun/androids/AndroidObject.java similarity index 88% rename from src/me/mrCookieSlime/Slimefun/Android/AndroidObject.java rename to src/me/mrCookieSlime/Slimefun/androids/AndroidObject.java index 0ce2ca259..150be42a7 100644 --- a/src/me/mrCookieSlime/Slimefun/Android/AndroidObject.java +++ b/src/me/mrCookieSlime/Slimefun/androids/AndroidObject.java @@ -1,4 +1,4 @@ -package me.mrCookieSlime.Slimefun.Android; +package me.mrCookieSlime.Slimefun.androids; import org.bukkit.block.Block; diff --git a/src/me/mrCookieSlime/Slimefun/Android/AndroidType.java b/src/me/mrCookieSlime/Slimefun/androids/AndroidType.java similarity index 85% rename from src/me/mrCookieSlime/Slimefun/Android/AndroidType.java rename to src/me/mrCookieSlime/Slimefun/androids/AndroidType.java index 375d6bf70..fdb72441f 100644 --- a/src/me/mrCookieSlime/Slimefun/Android/AndroidType.java +++ b/src/me/mrCookieSlime/Slimefun/androids/AndroidType.java @@ -1,4 +1,4 @@ -package me.mrCookieSlime.Slimefun.Android; +package me.mrCookieSlime.Slimefun.androids; public enum AndroidType { diff --git a/src/me/mrCookieSlime/Slimefun/Android/ProgrammableAndroid.java b/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java similarity index 96% rename from src/me/mrCookieSlime/Slimefun/Android/ProgrammableAndroid.java rename to src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java index 99771fec1..a3495465f 100644 --- a/src/me/mrCookieSlime/Slimefun/Android/ProgrammableAndroid.java +++ b/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java @@ -1,4 +1,4 @@ -package me.mrCookieSlime.Slimefun.Android; +package me.mrCookieSlime.Slimefun.androids; import java.io.File; import java.util.ArrayList; @@ -48,7 +48,6 @@ import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; import me.mrCookieSlime.CSCoreLibPlugin.general.World.CustomSkull; import me.mrCookieSlime.ExoticGarden.ExoticGarden; import me.mrCookieSlime.Slimefun.SlimefunStartup; -import me.mrCookieSlime.Slimefun.Android.comparators.ScriptReputationSorter; import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; import me.mrCookieSlime.Slimefun.Objects.Category; @@ -59,6 +58,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineFuel; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.BlockTicker; import me.mrCookieSlime.Slimefun.Setup.Messages; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; +import me.mrCookieSlime.Slimefun.androids.comparators.ScriptReputationSorter; import me.mrCookieSlime.Slimefun.api.BlockStorage; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset; @@ -1257,7 +1257,7 @@ public abstract class ProgrammableAndroid extends SlimefunItem { public float getScriptRating(Config script) { int positive = getScriptRating(script, true) + 1; int negative = getScriptRating(script, false); - return Math.round((positive / (double) (positive + negative)) * 100.0f) / 100.0f; + return Math.round((positive / (double) (positive + negative)) * 100.0F) / 100.0F; } private int getScriptRating(Config script, boolean positive) { @@ -1283,29 +1283,28 @@ public abstract class ProgrammableAndroid extends SlimefunItem { final String[] commands = script.split("-"); for (int i = 0; i < 9; i++) { - menu.addItem(i, new CustomItem(new ItemStack(Material.GRAY_STAINED_GLASS_PANE), " "), - (pl, slot, item, action) -> false - ); + menu.addItem(i, new CustomItem(new ItemStack(Material.GRAY_STAINED_GLASS_PANE), " "), (pl, slot, item, action) -> false); } - menu.addItem(9, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMTYxMzlmZDFjNTY1NGU1NmU5ZTRlMmM4YmU3ZWIyYmQ1YjQ5OWQ2MzM2MTY2NjNmZWVlOTliNzQzNTJhZDY0In19fQ=="), "&rDo nothing"), - (pl, slot, item, action) -> { - int i = 0; - StringBuilder builder = new StringBuilder("START-"); - for (String command : commands) { - if (i != index && i > 0 && i < commands.length - 1) builder.append(command + "-"); - i++; - } - builder.append("REPEAT"); - BlockStorage.addBlockInfo(b, "script", builder.toString()); - try { - openScript(p, b, builder.toString()); - } catch (Exception e) { - e.printStackTrace(); - } - return false; - } - ); + menu.addItem(9, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMTYxMzlmZDFjNTY1NGU1NmU5ZTRlMmM4YmU3ZWIyYmQ1YjQ5OWQ2MzM2MTY2NjNmZWVlOTliNzQzNTJhZDY0In19fQ=="), "&rDo nothing"), (pl, slot, item, action) -> { + int i = 0; + StringBuilder builder = new StringBuilder("START-"); + + for (String command : commands) { + if (i != index && i > 0 && i < commands.length - 1) builder.append(command + "-"); + i++; + } + + builder.append("REPEAT"); + BlockStorage.addBlockInfo(b, "script", builder.toString()); + + try { + openScript(p, b, builder.toString()); + } catch (Exception e) { + e.printStackTrace(); + } + return false; + }); int i = 10; for (final ScriptPart part : getAccessibleScriptParts()) { @@ -1340,12 +1339,15 @@ public abstract class ProgrammableAndroid extends SlimefunItem { private Inventory inject(Block b) { int size = BlockStorage.getInventory(b).toInventory().getSize(); Inventory inv = Bukkit.createInventory(null, size); + for (int i = 0; i < size; i++) { inv.setItem(i, new CustomItem(Material.COMMAND_BLOCK, " &4ALL YOUR PLACEHOLDERS ARE BELONG TO US")); } + for (int slot: getOutputSlots()) { inv.setItem(slot, BlockStorage.getInventory(b).getItemInSlot(slot)); } + return inv; } @@ -1393,7 +1395,7 @@ public abstract class ProgrammableAndroid extends SlimefunItem { } public List getUploadedScripts() { - List scripts = new ArrayList(); + List scripts = new ArrayList<>(); File directory = new File("plugins/Slimefun/scripts/" + this.getAndroidType().toString()); if (!directory.exists()) directory.mkdirs(); @@ -1417,7 +1419,7 @@ public abstract class ProgrammableAndroid extends SlimefunItem { } public List getAccessibleScriptParts() { - List list = new ArrayList(); + List list = new ArrayList<>(); for (final ScriptPart part : ScriptPart.values()) { if (!part.equals(ScriptPart.START) && !part.equals(ScriptPart.REPEAT) && getAndroidType().isType(part.getRequiredType())) { diff --git a/src/me/mrCookieSlime/Slimefun/Android/ScriptPart.java b/src/me/mrCookieSlime/Slimefun/androids/ScriptPart.java similarity index 99% rename from src/me/mrCookieSlime/Slimefun/Android/ScriptPart.java rename to src/me/mrCookieSlime/Slimefun/androids/ScriptPart.java index f311e7364..eeb93a022 100644 --- a/src/me/mrCookieSlime/Slimefun/Android/ScriptPart.java +++ b/src/me/mrCookieSlime/Slimefun/androids/ScriptPart.java @@ -1,4 +1,4 @@ -package me.mrCookieSlime.Slimefun.Android; +package me.mrCookieSlime.Slimefun.androids; import org.bukkit.inventory.ItemStack; diff --git a/src/me/mrCookieSlime/Slimefun/Android/comparators/ScriptDownloadSorter.java b/src/me/mrCookieSlime/Slimefun/androids/comparators/ScriptDownloadSorter.java similarity index 64% rename from src/me/mrCookieSlime/Slimefun/Android/comparators/ScriptDownloadSorter.java rename to src/me/mrCookieSlime/Slimefun/androids/comparators/ScriptDownloadSorter.java index a2b133ee0..0163f3b32 100644 --- a/src/me/mrCookieSlime/Slimefun/Android/comparators/ScriptDownloadSorter.java +++ b/src/me/mrCookieSlime/Slimefun/androids/comparators/ScriptDownloadSorter.java @@ -1,4 +1,4 @@ -package me.mrCookieSlime.Slimefun.Android.comparators; +package me.mrCookieSlime.Slimefun.androids.comparators; import java.util.Comparator; @@ -8,7 +8,7 @@ public class ScriptDownloadSorter implements Comparator { @Override public int compare(Config c1, Config c2) { - return (int) (c2.getInt("downloads") - c1.getInt("downloads")); + return c2.getInt("downloads") - c1.getInt("downloads"); } } diff --git a/src/me/mrCookieSlime/Slimefun/Android/comparators/ScriptReputationSorter.java b/src/me/mrCookieSlime/Slimefun/androids/comparators/ScriptReputationSorter.java similarity index 78% rename from src/me/mrCookieSlime/Slimefun/Android/comparators/ScriptReputationSorter.java rename to src/me/mrCookieSlime/Slimefun/androids/comparators/ScriptReputationSorter.java index 082feeb0b..df96e75c4 100644 --- a/src/me/mrCookieSlime/Slimefun/Android/comparators/ScriptReputationSorter.java +++ b/src/me/mrCookieSlime/Slimefun/androids/comparators/ScriptReputationSorter.java @@ -1,9 +1,9 @@ -package me.mrCookieSlime.Slimefun.Android.comparators; +package me.mrCookieSlime.Slimefun.androids.comparators; import java.util.Comparator; import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config; -import me.mrCookieSlime.Slimefun.Android.ProgrammableAndroid; +import me.mrCookieSlime.Slimefun.androids.ProgrammableAndroid; public class ScriptReputationSorter implements Comparator { diff --git a/src/me/mrCookieSlime/Slimefun/api/ErrorReport.java b/src/me/mrCookieSlime/Slimefun/api/ErrorReport.java index ae48ee3a6..3572a5a10 100644 --- a/src/me/mrCookieSlime/Slimefun/api/ErrorReport.java +++ b/src/me/mrCookieSlime/Slimefun/api/ErrorReport.java @@ -5,9 +5,13 @@ import java.io.FileNotFoundException; import java.io.PrintStream; import java.util.ArrayList; import java.util.List; +import java.util.function.Consumer; +import java.util.function.Function; +import java.util.stream.IntStream; import org.bukkit.Bukkit; import org.bukkit.Location; +import org.bukkit.entity.Player; import org.bukkit.plugin.Plugin; import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib; @@ -19,19 +23,17 @@ public class ErrorReport { private File file; - public ErrorReport(TickerTask task, Location l, SlimefunItem item, Exception x) { - int try_count = 1; + public ErrorReport(Throwable throwable, Consumer printer) { file = new File("plugins/Slimefun/error-reports/" + Clock.getFormattedTime() + ".err"); - while (file.exists()) { - try_count += 1; - file = new File("plugins/Slimefun/error-reports/" + Clock.getFormattedTime() + "(" + try_count + ").err"); + if (file.exists()) { + IntStream stream = IntStream.iterate(1, i -> i + 1).filter(i -> !new File("plugins/Slimefun/error-reports/" + Clock.getFormattedTime() + "(" + i + ").err").exists()); + int id = stream.findFirst().getAsInt(); + + file = new File("plugins/Slimefun/error-reports/" + Clock.getFormattedTime() + "(" + id + ").err"); } - PrintStream stream = null; - - try { - stream = new PrintStream(file); + try (PrintStream stream = new PrintStream(file)) { stream.println(); stream.println("Java Environment:"); stream.println(" Operating System: " + System.getProperty("os.name")); @@ -48,6 +50,7 @@ public class ErrorReport { List plugins = new ArrayList<>(); List addons = new ArrayList<>(); + for (Plugin p: Bukkit.getPluginManager().getPlugins()) { if (Bukkit.getPluginManager().isPluginEnabled(p)) { plugins.add(" + " + p.getName() + " " + p.getDescription().getVersion()); @@ -70,6 +73,25 @@ public class ErrorReport { plugins.forEach(stream::println); stream.println(); + + printer.accept(stream); + + stream.println("Stacktrace:"); + stream.println(); + throwable.printStackTrace(stream); + + System.err.println("[Slimefun] Saved as: "); + System.err.println("[Slimefun] /plugins/Slimefun/error-reports/" + file.getName()); + System.err.println("[Slimefun] Please consider sending this File to the developer(s) of Slimefun, this message does not have to be included."); + System.err.println("[Slimefun] You can put the file on Pastebin and then post it here: https://github.com/TheBusyBiscuit/Slimefun4/issues"); + System.err.println("[Slimefun] "); + } catch (FileNotFoundException e) { + e.printStackTrace(); + } + } + + public ErrorReport(Throwable throwable, TickerTask task, Location l, SlimefunItem item) { + this(throwable, stream -> { stream.println("Block Info:"); stream.println(" World: " + l.getWorld().getName()); stream.println(" X: " + l.getBlockX()); @@ -87,18 +109,57 @@ public class ErrorReport { stream.println(" Inventory: " + BlockStorage.getStorage(l.getWorld()).hasInventory(l)); stream.println(" Data: " + BlockStorage.getBlockInfoAsJson(l)); stream.println(); - stream.println("Stacktrace:"); + }); + } + + public ErrorReport(Throwable throwable, Player p) { + this(throwable, stream -> { + stream.println("Player Info:"); + stream.println(" ID: " + p.getUniqueId() + " (" + p.getName() + ")"); + stream.println(" World: " + p.getWorld().getName()); + stream.println(" X: " + p.getLocation().getX()); + stream.println(" Y: " + p.getLocation().getY()); + stream.println(" Z: " + p.getLocation().getZ()); + stream.println(" Profile in RAM? " + PlayerProfile.isLoaded(p.getUniqueId())); stream.println(); - x.printStackTrace(stream); - } catch (FileNotFoundException e) { - e.printStackTrace(); - } finally { - if (stream != null) stream.close(); - } + stream.println("Item in Main Hand:"); + stream.println(p.getInventory().getItemInMainHand()); + stream.println(SlimefunItem.getByItem(p.getInventory().getItemInMainHand())); + stream.println(); + stream.println("Item in Off Hand:"); + stream.println(p.getInventory().getItemInOffHand()); + stream.println(SlimefunItem.getByItem(p.getInventory().getItemInOffHand())); + stream.println(); + stream.println("Helmet:"); + stream.println(p.getInventory().getHelmet()); + stream.println(SlimefunItem.getByItem(p.getInventory().getHelmet())); + stream.println(); + stream.println("Chestplate:"); + stream.println(p.getInventory().getChestplate()); + stream.println(SlimefunItem.getByItem(p.getInventory().getChestplate())); + stream.println(); + stream.println("Leggings:"); + stream.println(p.getInventory().getLeggings()); + stream.println(SlimefunItem.getByItem(p.getInventory().getLeggings())); + stream.println(); + stream.println("Boots:"); + stream.println(p.getInventory().getBoots()); + stream.println(SlimefunItem.getByItem(p.getInventory().getBoots())); + stream.println(); + }); } public File getFile() { return file; } + + public static void tryCatch(Function function, Runnable runnable) { + try { + runnable.run(); + } + catch(Exception x) { + function.apply(x); + } + } } diff --git a/src/me/mrCookieSlime/Slimefun/api/PlayerProfile.java b/src/me/mrCookieSlime/Slimefun/api/PlayerProfile.java index a4e995882..f22f0a9c3 100644 --- a/src/me/mrCookieSlime/Slimefun/api/PlayerProfile.java +++ b/src/me/mrCookieSlime/Slimefun/api/PlayerProfile.java @@ -159,7 +159,7 @@ public class PlayerProfile { } public String getTitle() { - int index = Math.round(Float.valueOf(String.valueOf(Math.round(((researches.size() * 100.0f) / Research.titles.size()))))); + int index = Math.round(Float.valueOf(String.valueOf(Math.round(((researches.size() * 100.0F) / Research.titles.size()))))); if (index > 0) index--; return Research.titles.get(index); } diff --git a/src/me/mrCookieSlime/Slimefun/api/TickerTask.java b/src/me/mrCookieSlime/Slimefun/api/TickerTask.java index 40fbf9c91..73111eb48 100644 --- a/src/me/mrCookieSlime/Slimefun/api/TickerTask.java +++ b/src/me/mrCookieSlime/Slimefun/api/TickerTask.java @@ -105,14 +105,10 @@ public class TickerTask implements Runnable { if (errors == 1) { // Generate a new Error-Report - ErrorReport report = new ErrorReport(this, l, item, x); + new ErrorReport(x, this, l, item); System.err.println("[Slimefun] Exception caught while ticking a Block:" + x.getClass().getName()); System.err.println("[Slimefun] X: " + l.getBlockX() + " Y: " + l.getBlockY() + " Z: " + l.getBlockZ()); - System.err.println("[Slimefun] Saved as: "); - System.err.println("[Slimefun] /plugins/Slimefun/error-reports/" + report.getFile().getName()); - System.err.println("[Slimefun] Please consider sending this File to the developer(s) of Slimefun, sending this Error won't get you any help though."); - System.err.println("[Slimefun] "); bugged_blocks.put(l, errors); } @@ -151,14 +147,10 @@ public class TickerTask implements Runnable { if (errors == 1) { // Generate a new Error-Report - ErrorReport report = new ErrorReport(this, l, item, x); + new ErrorReport(x, this, l, item); System.err.println("[Slimefun] Exception caught while ticking a Block:" + x.getClass().getName()); System.err.println("[Slimefun] X: " + l.getBlockX() + " Y: " + l.getBlockY() + " Z: " + l.getBlockZ()); - System.err.println("[Slimefun] Saved as: "); - System.err.println("[Slimefun] /plugins/Slimefun/error-reports/" + report.getFile().getName()); - System.err.println("[Slimefun] Please consider sending this File to the developer(s) of Slimefun, sending this Error won't get you any help though."); - System.err.println("[Slimefun] "); bugged_blocks.put(l, errors); } diff --git a/src/me/mrCookieSlime/Slimefun/hooks/PlaceholderAPIHook.java b/src/me/mrCookieSlime/Slimefun/hooks/PlaceholderAPIHook.java index c8dc2042b..27ca09aba 100644 --- a/src/me/mrCookieSlime/Slimefun/hooks/PlaceholderAPIHook.java +++ b/src/me/mrCookieSlime/Slimefun/hooks/PlaceholderAPIHook.java @@ -56,7 +56,7 @@ public class PlaceholderAPIHook extends PlaceholderExpansion { if (params.equals("researches_percentage_researches_unlocked")) { Set set = PlayerProfile.fromUUID(p.getUniqueId()).getResearches(); - return String.valueOf(Math.round(((set.size() * 100.0f) / Research.list().size()) * 100.0f) / 100.0f); + return String.valueOf(Math.round(((set.size() * 100.0F) / Research.list().size()) * 100.0F) / 100.0F); } if (params.equals("researches_title")) { diff --git a/src/me/mrCookieSlime/Slimefun/listeners/AncientAltarListener.java b/src/me/mrCookieSlime/Slimefun/listeners/AncientAltarListener.java index 864b7d462..c62997031 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/AncientAltarListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/AncientAltarListener.java @@ -31,10 +31,10 @@ import me.mrCookieSlime.CSCoreLibPlugin.general.Player.PlayerInventory; import me.mrCookieSlime.CSCoreLibPlugin.general.String.StringUtils; import me.mrCookieSlime.Slimefun.SlimefunStartup; import me.mrCookieSlime.Slimefun.Utilities; -import me.mrCookieSlime.Slimefun.AncientAltar.Pedestals; -import me.mrCookieSlime.Slimefun.AncientAltar.RitualAnimation; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Setup.Messages; +import me.mrCookieSlime.Slimefun.ancient_altar.Pedestals; +import me.mrCookieSlime.Slimefun.ancient_altar.RitualAnimation; import me.mrCookieSlime.Slimefun.api.BlockStorage; public class AncientAltarListener implements Listener { diff --git a/src/me/mrCookieSlime/Slimefun/listeners/AndroidKillingListener.java b/src/me/mrCookieSlime/Slimefun/listeners/AndroidKillingListener.java index 46f042e97..1e4e20638 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/AndroidKillingListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/AndroidKillingListener.java @@ -17,7 +17,7 @@ import org.bukkit.inventory.ItemStack; import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib; import me.mrCookieSlime.Slimefun.SlimefunStartup; -import me.mrCookieSlime.Slimefun.Android.AndroidObject; +import me.mrCookieSlime.Slimefun.androids.AndroidObject; public class AndroidKillingListener implements Listener { From f4be2a8d5b00a33b07dd7ee6edd1887126bb7e42 Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Tue, 27 Aug 2019 15:35:56 +0200 Subject: [PATCH 008/169] Fixes #708 --- .../Slimefun/GPS/GPSNetwork.java | 8 ++-- .../Slimefun/Setup/SlimefunSetup.java | 38 +++++++++---------- 2 files changed, 23 insertions(+), 23 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/GPS/GPSNetwork.java b/src/me/mrCookieSlime/Slimefun/GPS/GPSNetwork.java index 63b0c1a0e..9bb981814 100644 --- a/src/me/mrCookieSlime/Slimefun/GPS/GPSNetwork.java +++ b/src/me/mrCookieSlime/Slimefun/GPS/GPSNetwork.java @@ -39,18 +39,18 @@ public class GPSNetwork { private static final int[] teleporter_border = new int[] {0, 1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 26, 27, 35, 36, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53}; private static final int[] teleporter_inventory = new int[] {19, 20, 21, 22, 23, 24, 25, 28, 29, 30, 31, 32, 33, 34, 37, 38, 39, 40, 41, 42, 43}; - public void updateTransmitter(Block b, UUID uuid, NetworkStatus status) { + public void updateTransmitter(Location l, UUID uuid, NetworkStatus status) { Set set = new HashSet<>(); if (transmitters.containsKey(uuid)) set = transmitters.get(uuid); if (status == NetworkStatus.ONLINE) { - if (!set.contains(b.getLocation())) { - set.add(b.getLocation()); + if (!set.contains(l)) { + set.add(l); transmitters.put(uuid, set); } } else { - set.remove(b.getLocation()); + set.remove(l); transmitters.put(uuid, set); } } diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java index f414ab4d6..b4e85ca60 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java @@ -3822,10 +3822,10 @@ public class SlimefunSetup { public void tick(Block b, SlimefunItem item, Config data) { int charge = ChargableBlock.getCharge(b); if (charge > 0) { - Slimefun.getGPSNetwork().updateTransmitter(b, UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner")), NetworkStatus.ONLINE); - ChargableBlock.setCharge(b, charge - 1); + Slimefun.getGPSNetwork().updateTransmitter(b.getLocation(), UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner")), NetworkStatus.ONLINE); + ChargableBlock.setCharge(b.getLocation(), charge - 1); } - else Slimefun.getGPSNetwork().updateTransmitter(b, UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner")), NetworkStatus.OFFLINE); + else Slimefun.getGPSNetwork().updateTransmitter(b.getLocation(), UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner")), NetworkStatus.OFFLINE); } @Override @@ -3847,7 +3847,7 @@ public class SlimefunSetup { @Override public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) { - Slimefun.getGPSNetwork().updateTransmitter(b, UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner")), NetworkStatus.OFFLINE); + Slimefun.getGPSNetwork().updateTransmitter(b.getLocation(), UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner")), NetworkStatus.OFFLINE); return true; } }); @@ -3858,13 +3858,13 @@ public class SlimefunSetup { @Override public void tick(Block b, SlimefunItem item, Config data) { - int charge = ChargableBlock.getCharge(b); + int charge = ChargableBlock.getCharge(b.getLocation()); if (charge > 2) { - Slimefun.getGPSNetwork().updateTransmitter(new Location(b.getWorld(), b.getX(), b.getY() * 4 + 100, b.getZ()).getBlock(), UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner")), NetworkStatus.ONLINE); - ChargableBlock.setCharge(b, charge - 3); + Slimefun.getGPSNetwork().updateTransmitter(new Location(b.getWorld(), b.getX(), b.getY() * 4 + 100, b.getZ()), UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner")), NetworkStatus.ONLINE); + ChargableBlock.setCharge(b.getLocation(), charge - 3); } else { - Slimefun.getGPSNetwork().updateTransmitter(new Location(b.getWorld(), b.getX(), b.getY() * 4 + 100, b.getZ()).getBlock(), UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner")), NetworkStatus.OFFLINE); + Slimefun.getGPSNetwork().updateTransmitter(new Location(b.getWorld(), b.getX(), b.getY() * 4 + 100, b.getZ()), UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner")), NetworkStatus.OFFLINE); } } @@ -3887,7 +3887,7 @@ public class SlimefunSetup { @Override public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) { - Slimefun.getGPSNetwork().updateTransmitter(new Location(b.getWorld(), b.getX(), b.getY() * 4 + 100, b.getZ()).getBlock(), UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner")), NetworkStatus.OFFLINE); + Slimefun.getGPSNetwork().updateTransmitter(new Location(b.getWorld(), b.getX(), b.getY() * 4 + 100, b.getZ()), UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner")), NetworkStatus.OFFLINE); return true; } }); @@ -3898,13 +3898,13 @@ public class SlimefunSetup { @Override public void tick(Block b, SlimefunItem item, Config data) { - int charge = ChargableBlock.getCharge(b); + int charge = ChargableBlock.getCharge(b.getLocation()); if (charge > 10) { - Slimefun.getGPSNetwork().updateTransmitter(new Location(b.getWorld(), b.getX(), b.getY() * 16 + 500, b.getZ()).getBlock(), UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner")), NetworkStatus.ONLINE); - ChargableBlock.setCharge(b, charge - 11); + Slimefun.getGPSNetwork().updateTransmitter(new Location(b.getWorld(), b.getX(), b.getY() * 16 + 500, b.getZ()), UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner")), NetworkStatus.ONLINE); + ChargableBlock.setCharge(b.getLocation(), charge - 11); } else { - Slimefun.getGPSNetwork().updateTransmitter(new Location(b.getWorld(), b.getX(), b.getY() * 16 + 500, b.getZ()).getBlock(), UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner")), NetworkStatus.OFFLINE); + Slimefun.getGPSNetwork().updateTransmitter(new Location(b.getWorld(), b.getX(), b.getY() * 16 + 500, b.getZ()), UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner")), NetworkStatus.OFFLINE); } } @@ -3927,7 +3927,7 @@ public class SlimefunSetup { @Override public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) { - Slimefun.getGPSNetwork().updateTransmitter(new Location(b.getWorld(), b.getX(), b.getY() * 16 + 500, b.getZ()).getBlock(), UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner")), NetworkStatus.OFFLINE); + Slimefun.getGPSNetwork().updateTransmitter(new Location(b.getWorld(), b.getX(), b.getY() * 16 + 500, b.getZ()), UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner")), NetworkStatus.OFFLINE); return true; } }); @@ -3938,13 +3938,13 @@ public class SlimefunSetup { @Override public void tick(Block b, SlimefunItem item, Config data) { - int charge = ChargableBlock.getCharge(b); + int charge = ChargableBlock.getCharge(b.getLocation()); if (charge > 45) { - Slimefun.getGPSNetwork().updateTransmitter(new Location(b.getWorld(), b.getX(), b.getY() * 64 + 800, b.getZ()).getBlock(), UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner")), NetworkStatus.ONLINE); - ChargableBlock.setCharge(b, charge - 46); + Slimefun.getGPSNetwork().updateTransmitter(new Location(b.getWorld(), b.getX(), b.getY() * 64 + 800, b.getZ()), UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner")), NetworkStatus.ONLINE); + ChargableBlock.setCharge(b.getLocation(), charge - 46); } else { - Slimefun.getGPSNetwork().updateTransmitter(new Location(b.getWorld(), b.getX(), b.getY() * 64 + 800, b.getZ()).getBlock(), UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner")), NetworkStatus.OFFLINE); + Slimefun.getGPSNetwork().updateTransmitter(new Location(b.getWorld(), b.getX(), b.getY() * 64 + 800, b.getZ()), UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner")), NetworkStatus.OFFLINE); } } @@ -3967,7 +3967,7 @@ public class SlimefunSetup { @Override public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) { - Slimefun.getGPSNetwork().updateTransmitter(new Location(b.getWorld(), b.getX(), b.getY() * 64 + 800, b.getZ()).getBlock(), UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner")), NetworkStatus.OFFLINE); + Slimefun.getGPSNetwork().updateTransmitter(new Location(b.getWorld(), b.getX(), b.getY() * 64 + 800, b.getZ()), UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner")), NetworkStatus.OFFLINE); return true; } }); From 04444fc2985947396f316e596a5827a43500bf87 Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Tue, 27 Aug 2019 16:26:35 +0200 Subject: [PATCH 009/169] This File gets a Refactoring, that File gets a Refactoring, everybody gets a Refactoring! --- .../Slimefun/Objects/Research.java | 5 +- .../SlimefunItem/abstractItems/AFarm.java | 97 +++++++------- .../machines/ReactorAccessPort.java | 75 +++++------ .../Slimefun/Objects/tasks/MagnetTask.java | 2 +- .../Slimefun/Setup/SlimefunSetup.java | 42 +++--- .../mrCookieSlime/Slimefun/SlimefunGuide.java | 5 +- .../androids/ProgrammableAndroid.java | 25 ++-- .../Slimefun/api/BlockStorage.java | 18 +-- .../Slimefun/api/ErrorReport.java | 7 +- .../Slimefun/api/PlayerProfile.java | 2 +- .../Slimefun/api/SlimefunBackup.java | 123 +++++++++--------- .../Slimefun/api/network/Network.java | 40 +++--- .../hooks/github/GitHubConnector.java | 56 ++++---- .../Slimefun/hooks/github/IntegerFormat.java | 8 +- 14 files changed, 256 insertions(+), 249 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/Objects/Research.java b/src/me/mrCookieSlime/Slimefun/Objects/Research.java index 80ec340bb..a9d522c73 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/Research.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/Research.java @@ -1,6 +1,7 @@ package me.mrCookieSlime.Slimefun.Objects; import java.util.ArrayList; +import java.util.Collection; import java.util.Iterator; import java.util.LinkedList; import java.util.List; @@ -363,7 +364,7 @@ public class Research { public static void sendStats(CommandSender sender, Player p) { PlayerProfile profile = PlayerProfile.fromUUID(p.getUniqueId()); Set researched = profile.getResearches(); - int levels = researched.stream().mapToInt(r -> r.getCost()).sum(); + int levels = researched.stream().mapToInt(Research::getCost).sum(); String progress = String.valueOf(Math.round(((researched.size() * 100.0F) / list().size()) * 100.0F) / 100.0F); if (Float.parseFloat(progress) < 16.0F) progress = "&4" + progress + " &r% "; @@ -392,7 +393,7 @@ public class Research { * @see #sendStats(CommandSender, Player) */ @Deprecated - public static String getTitle(Player p, Set researched) { + public static String getTitle(Player p, Collection researched) { int index = Math.round(Float.valueOf(String.valueOf(Math.round(((researched.size() * 100.0F) / list().size()) * 100.0F) / 100.0F)) / 100.0F) * titles.size(); if (index > 0) index--; return titles.get(index); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AFarm.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AFarm.java index e66b2f00e..190827a0e 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AFarm.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AFarm.java @@ -27,15 +27,15 @@ import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset; import me.mrCookieSlime.Slimefun.api.item_transport.ItemTransportFlow; public abstract class AFarm extends SlimefunItem { - + private static final int[] border = {0, 1, 2, 3, 4, 5, 6, 7, 8, 36, 37, 38, 39, 40, 41, 42, 43, 44}; private static final int[] border_out = {9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35}; public AFarm(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe) { super(category, item, id, recipeType, recipe); - + new BlockMenuPreset(id, getInventoryTitle()) { - + @Override public void init() { constructMenu(this); @@ -43,6 +43,7 @@ public abstract class AFarm extends SlimefunItem { @Override public void newInstance(BlockMenu menu, Block b) { + } @Override @@ -56,13 +57,13 @@ public abstract class AFarm extends SlimefunItem { return new int[0]; } }; - + registerBlockHandler(id, new SlimefunBlockHandler() { - + @Override public void onPlace(Player p, Block b, SlimefunItem item) { } - + @Override public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) { BlockMenu inv = BlockStorage.getInventory(b); @@ -81,9 +82,9 @@ public abstract class AFarm extends SlimefunItem { public AFarm(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe, ItemStack recipeOutput) { super(category, item, id, recipeType, recipe, recipeOutput); - + new BlockMenuPreset(id, getInventoryTitle()) { - + @Override public void init() { constructMenu(this); @@ -104,13 +105,13 @@ public abstract class AFarm extends SlimefunItem { return new int[0]; } }; - + registerBlockHandler(id, new SlimefunBlockHandler() { - + @Override public void onPlace(Player p, Block b, SlimefunItem item) { } - + @Override public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) { BlockMenu inv = BlockStorage.getInventory(b); @@ -126,26 +127,21 @@ public abstract class AFarm extends SlimefunItem { } }); } - + private void constructMenu(BlockMenuPreset preset) { for (int i : border) { - preset.addItem(i, new CustomItem(new ItemStack(Material.GRAY_STAINED_GLASS_PANE), " "), - (p, slot, item, action) -> false - ); + preset.addItem(i, new CustomItem(new ItemStack(Material.GRAY_STAINED_GLASS_PANE), " "), (p, slot, item, action) -> false); } + for (int i : border_out) { - preset.addItem(i, new CustomItem(new ItemStack(Material.ORANGE_STAINED_GLASS_PANE), " "), - (p, slot, item, action) -> false - ); + preset.addItem(i, new CustomItem(new ItemStack(Material.ORANGE_STAINED_GLASS_PANE), " "), (p, slot, item, action) -> false); } - - preset.addItem(22, new CustomItem(new ItemStack(Material.BLACK_STAINED_GLASS_PANE), " "), - (p, slot, item, action) -> false - ); - + + preset.addItem(22, new CustomItem(new ItemStack(Material.BLACK_STAINED_GLASS_PANE), " "), (p, slot, item, action) -> false); + for (int i : getOutputSlots()) { preset.addMenuClickHandler(i, new AdvancedMenuClickHandler() { - + @Override public boolean onClick(Player p, int slot, ItemStack cursor, ClickAction action) { return false; @@ -158,41 +154,46 @@ public abstract class AFarm extends SlimefunItem { }); } } - + public abstract String getInventoryTitle(); public abstract int getEnergyConsumption(); public abstract boolean canHarvest(Block b); public abstract ItemStack harvest(Block b); public abstract int getSize(); - + public int[] getOutputSlots() { return new int[] {19, 20, 21, 22, 23, 24, 25}; } - + protected void tick(Block b) { if (ChargableBlock.isChargable(b)) { if (ChargableBlock.getCharge(b) < getEnergyConsumption()) return; int i = getSize() / 2; - loop: - for (int x = -i; x <= i; x++) { - for (int z = -i; z <= i; z++) { - Block block = new Location(b.getWorld(), b.getX() + x, b.getY() + 2, b.getZ() + z).getBlock(); - if (canHarvest(block)) { - ItemStack item = harvest(block); - if (!fits(block, new ItemStack[] {item})) break loop; - pushItems(b, new ItemStack[] {item}); - ChargableBlock.addCharge(b, -getEnergyConsumption()); - break loop; - } - } - } + + for (int x = -i; x <= i; x++) { + for (int z = -i; z <= i; z++) { + Block block = new Location(b.getWorld(), b.getX() + (double) x, b.getY() + 2.0, b.getZ() + (double) z).getBlock(); + if (canHarvest(block)) { + ItemStack item = harvest(block); + + if (!fits(block, item)) { + return; + } + + pushItems(b, item); + ChargableBlock.addCharge(b, -getEnergyConsumption()); + + return; + } + } + } } } - + @Override public void register(boolean slimefun) { addItemHandler(new BlockTicker() { - + @Override public void tick(Block b, SlimefunItem sf, Config data) { AFarm.this.tick(b); @@ -210,7 +211,7 @@ public abstract class AFarm extends SlimefunItem { super.register(slimefun); } - + private Inventory inject(Block b) { int size = BlockStorage.getInventory(b).toInventory().getSize(); Inventory inv = Bukkit.createInventory(null, size); @@ -222,15 +223,15 @@ public abstract class AFarm extends SlimefunItem { } return inv; } - - protected boolean fits(Block b, ItemStack[] items) { + + protected boolean fits(Block b, ItemStack... items) { return inject(b).addItem(items).isEmpty(); } - - protected void pushItems(Block b, ItemStack[] items) { + + protected void pushItems(Block b, ItemStack... items) { Inventory inv = inject(b); inv.addItem(items); - + for (int slot: getOutputSlots()) { BlockStorage.getInventory(b).replaceExistingItem(slot, inv.getItem(slot)); } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ReactorAccessPort.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ReactorAccessPort.java index 9158a2c1a..5cd2d8761 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ReactorAccessPort.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ReactorAccessPort.java @@ -44,24 +44,29 @@ public class ReactorAccessPort extends SlimefunItem { @Override public void newInstance(BlockMenu menu, Block b) { + } @Override public boolean canOpen(Block b, Player p) { if(p.hasPermission("slimefun.inventory.bypass") || CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(),b,true)) { - - AReactor reactor = getReactor(b.getLocation()); - if(reactor != null) { + if (reactor != null) { boolean empty = true; BlockMenu bm = getReactorMenu(b.getLocation()); - if(bm != null) { - for(int slot:reactor.getCoolantSlots()) - if(bm.getItemInSlot(slot) != null) + + if (bm != null) { + for (int slot: reactor.getCoolantSlots()) { + if (bm.getItemInSlot(slot) != null) { empty = false; - for(int slot:reactor.getFuelSlots()) - if(bm.getItemInSlot(slot) != null) + } + } + + for (int slot: reactor.getFuelSlots()) { + if (bm.getItemInSlot(slot) != null) { empty = false; + } + } if(!empty || !p.isSneaking()) { //reactor is not empty, lets view it's inventory instead. @@ -100,11 +105,13 @@ public class ReactorAccessPort extends SlimefunItem { @Override public void onPlace(Player p, Block b, SlimefunItem item) { + } @Override public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) { BlockMenu inv = BlockStorage.getInventory(b); + if (inv != null) { for (int slot : getFuelSlots()) { if (inv.getItemInSlot(slot) != null) { @@ -112,12 +119,14 @@ public class ReactorAccessPort extends SlimefunItem { inv.replaceExistingItem(slot, null); } } + for (int slot : getCoolantSlots()) { if (inv.getItemInSlot(slot) != null) { b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot)); inv.replaceExistingItem(slot, null); } } + for (int slot : getOutputSlots()) { if (inv.getItemInSlot(slot) != null) { b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot)); @@ -132,44 +141,24 @@ public class ReactorAccessPort extends SlimefunItem { private void constructMenu(BlockMenuPreset preset) { for (int i : border) { - preset.addItem(i, new CustomItem(new ItemStack(Material.GRAY_STAINED_GLASS_PANE), " "), - (p, slot, item, action) -> false - ); + preset.addItem(i, new CustomItem(new ItemStack(Material.GRAY_STAINED_GLASS_PANE), " "), (p, slot, item, action) -> false); } for (int i : border_1) { - preset.addItem(i, new CustomItem(new ItemStack(Material.LIME_STAINED_GLASS_PANE), " "), - (p, slot, item, action) -> false - ); + preset.addItem(i, new CustomItem(new ItemStack(Material.LIME_STAINED_GLASS_PANE), " "), (p, slot, item, action) -> false); } for (int i : border_2) { - preset.addItem(i, new CustomItem(new ItemStack(Material.CYAN_STAINED_GLASS_PANE), " "), - (p, slot, item, action) -> false - ); + preset.addItem(i, new CustomItem(new ItemStack(Material.CYAN_STAINED_GLASS_PANE), " "), (p, slot, item, action) -> false); } for (int i : border_3) { - preset.addItem(i, new CustomItem(new ItemStack(Material.GREEN_STAINED_GLASS_PANE), " "), - (p, slot, item, action) -> false - ); + preset.addItem(i, new CustomItem(new ItemStack(Material.GREEN_STAINED_GLASS_PANE), " "), (p, slot, item, action) -> false); } - preset.addItem(1, new CustomItem(SlimefunItems.URANIUM, "&7Fuel Slot", "", "&rThis Slot accepts radioactive Fuel such as:", "&2Uranium &ror &aNeptunium"), - (p, slot, item, action) -> false - ); - - preset.addItem(22, new CustomItem(SlimefunItems.PLUTONIUM, "&7Byproduct Slot", "", "&rThis Slot contains the Reactor's Byproduct", "&rsuch as &aNeptunium &ror &7Plutonium"), - (p, slot, item, action) -> false - ); - - preset.addItem(7, new CustomItem(SlimefunItems.REACTOR_COOLANT_CELL, "&bCoolant Slot", "", "&rThis Slot accepts Coolant Cells", "&4Without any Coolant Cells, your Reactor", "&4will explode"), - (p, slot, item, action) -> false - ); - - preset.addItem(7, new CustomItem(SlimefunItems.REACTOR_COOLANT_CELL, "&bCoolant Slot", "", "&rThis Slot accepts Coolant Cells", "&4Without any Coolant Cells, your Reactor", "&4will explode"), - (p, slot, item, action) -> false - ); + preset.addItem(1, new CustomItem(SlimefunItems.URANIUM, "&7Fuel Slot", "", "&rThis Slot accepts radioactive Fuel such as:", "&2Uranium &ror &aNeptunium"), (p, slot, item, action) -> false); + preset.addItem(22, new CustomItem(SlimefunItems.PLUTONIUM, "&7Byproduct Slot", "", "&rThis Slot contains the Reactor's Byproduct", "&rsuch as &aNeptunium &ror &7Plutonium"), (p, slot, item, action) -> false); + preset.addItem(7, new CustomItem(SlimefunItems.REACTOR_COOLANT_CELL, "&bCoolant Slot", "", "&rThis Slot accepts Coolant Cells", "&4Without any Coolant Cells, your Reactor", "&4will explode"),(p, slot, item, action) -> false); } public String getInventoryTitle() { @@ -196,8 +185,7 @@ public class ReactorAccessPort extends SlimefunItem { Location reactorL = new Location(l.getWorld(), l.getX(), l.getY() - 3, l.getZ()); SlimefunItem item = BlockStorage.check(reactorL.getBlock()); - if(item instanceof AReactor) - return (AReactor) item; + if (item instanceof AReactor) return (AReactor) item; return null; } @@ -207,8 +195,9 @@ public class ReactorAccessPort extends SlimefunItem { String id = BlockStorage.checkID(reactorL); - if(id.equals("NUCLEAR_REACTOR") || id.equals("NETHERSTAR_REACTOR")) + if(id.equals("NUCLEAR_REACTOR") || id.equals("NETHERSTAR_REACTOR")) { return BlockStorage.getInventory(reactorL); + } return null; } @@ -216,12 +205,15 @@ public class ReactorAccessPort extends SlimefunItem { private static Inventory inject(Location l) { int size = BlockStorage.getInventory(l).toInventory().getSize(); Inventory inv = Bukkit.createInventory(null, size); + for (int i = 0; i < size; i++) { inv.setItem(i, new CustomItem(Material.COMMAND_BLOCK, " &4ALL YOUR PLACEHOLDERS ARE BELONG TO US")); } + for (int slot : getOutputSlots()) { inv.setItem(slot, BlockStorage.getInventory(l).getItemInSlot(slot)); } + return inv; } @@ -232,11 +224,8 @@ public class ReactorAccessPort extends SlimefunItem { for (int slot: getOutputSlots()) { BlockStorage.getInventory(l).replaceExistingItem(slot, inv.getItem(slot)); } - - for (Map.Entry entry: map.entrySet()) { - return entry.getValue(); - } - return null; + + return map.values().stream().findAny().orElse(null); } } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/tasks/MagnetTask.java b/src/me/mrCookieSlime/Slimefun/Objects/tasks/MagnetTask.java index ecf026daf..39570eb02 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/tasks/MagnetTask.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/tasks/MagnetTask.java @@ -27,7 +27,7 @@ public class MagnetTask extends SlimefunTask { @Override protected boolean cancelTask() { - return super.cancelTask() ? true: p.getGameMode() == GameMode.SPECTATOR; + return super.cancelTask() || p.getGameMode() == GameMode.SPECTATOR; } } diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java index b4e85ca60..8d0fe8a1b 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java @@ -720,6 +720,8 @@ public class SlimefunSetup { new ItemStack[] {SlimefunItems.IRON_DUST, new ItemStack(Material.IRON_INGOT)}, Material.NETHER_BRICK_FENCE, new String[] {"chance.fireBreak"}, new Integer[] {34}) .register(true, new MultiBlockInteractionHandler() { + + private final String chamberID = "IGNITION_CHAMBER"; @Override public boolean onInteract(Player p, MultiBlock mb, Block b) { @@ -764,13 +766,17 @@ public class SlimefunSetup { // The chamber methods have been updated to reflect this change. // Maybe this code snippet should be turned into a loop? Hopper chamber = null; - if (BlockStorage.check(dispBlock.getRelative(BlockFace.EAST).getState().getBlock(), "IGNITION_CHAMBER")) { + + if (BlockStorage.check(dispBlock.getRelative(BlockFace.EAST).getState().getBlock(), chamberID)) { chamber = (Hopper) dispBlock.getRelative(BlockFace.EAST).getState(); - } else if (BlockStorage.check(dispBlock.getRelative(BlockFace.WEST).getState().getBlock(), "IGNITION_CHAMBER")) { + } + else if (BlockStorage.check(dispBlock.getRelative(BlockFace.WEST).getState().getBlock(), chamberID)) { chamber = (Hopper) dispBlock.getRelative(BlockFace.WEST).getState(); - } else if (BlockStorage.check(dispBlock.getRelative(BlockFace.NORTH).getState().getBlock(), "IGNITION_CHAMBER")) { + } + else if (BlockStorage.check(dispBlock.getRelative(BlockFace.NORTH).getState().getBlock(), chamberID)) { chamber = (Hopper) dispBlock.getRelative(BlockFace.NORTH).getState(); - } else if (BlockStorage.check(dispBlock.getRelative(BlockFace.SOUTH).getState().getBlock(), "IGNITION_CHAMBER")){ + } + else if (BlockStorage.check(dispBlock.getRelative(BlockFace.SOUTH).getState().getBlock(), chamberID)){ chamber = (Hopper) dispBlock.getRelative(BlockFace.SOUTH).getState(); } @@ -1840,17 +1846,23 @@ public class SlimefunSetup { @Override public boolean onBlockBreak(BlockBreakEvent e, ItemStack item, int fortune, List drops) { if (SlimefunManager.isItemSimiliar(item, SlimefunItems.PICKAXE_OF_CONTAINMENT, true)) { - Block b = e.getBlock(); // Refactored it into this so we don't need to call e.getBlock() all the time. + // Refactored it into this so we don't need to call e.getBlock() all the time. + Block b = e.getBlock(); if (b.getType() != Material.SPAWNER) return true; + // If the spawner's BlockStorage has BlockInfo, then it's not a vanilla spawner and shouldn't give a broken spawner. ItemStack spawner = SlimefunItems.BROKEN_SPAWNER.clone(); - if(BlockStorage.hasBlockInfo(b)) + if (BlockStorage.hasBlockInfo(b)) { spawner = SlimefunItems.REPAIRED_SPAWNER.clone(); + } + ItemMeta im = spawner.getItemMeta(); List lore = im.getLore(); + for (int i = 0; i < lore.size(); i++) { if (lore.get(i).contains("")) lore.set(i, lore.get(i).replace("", StringUtils.format(((CreatureSpawner) b.getState()).getSpawnedType().toString()))); } + im.setLore(lore); spawner.setItemMeta(im); b.getLocation().getWorld().dropItemNaturally(b.getLocation(), spawner); @@ -3860,11 +3872,11 @@ public class SlimefunSetup { public void tick(Block b, SlimefunItem item, Config data) { int charge = ChargableBlock.getCharge(b.getLocation()); if (charge > 2) { - Slimefun.getGPSNetwork().updateTransmitter(new Location(b.getWorld(), b.getX(), b.getY() * 4 + 100, b.getZ()), UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner")), NetworkStatus.ONLINE); + Slimefun.getGPSNetwork().updateTransmitter(new Location(b.getWorld(), b.getX(), b.getY() * 4.0 + 100, b.getZ()), UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner")), NetworkStatus.ONLINE); ChargableBlock.setCharge(b.getLocation(), charge - 3); } else { - Slimefun.getGPSNetwork().updateTransmitter(new Location(b.getWorld(), b.getX(), b.getY() * 4 + 100, b.getZ()), UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner")), NetworkStatus.OFFLINE); + Slimefun.getGPSNetwork().updateTransmitter(new Location(b.getWorld(), b.getX(), b.getY() * 4.0 + 100, b.getZ()), UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner")), NetworkStatus.OFFLINE); } } @@ -3887,7 +3899,7 @@ public class SlimefunSetup { @Override public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) { - Slimefun.getGPSNetwork().updateTransmitter(new Location(b.getWorld(), b.getX(), b.getY() * 4 + 100, b.getZ()), UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner")), NetworkStatus.OFFLINE); + Slimefun.getGPSNetwork().updateTransmitter(new Location(b.getWorld(), b.getX(), b.getY() * 4.0 + 100, b.getZ()), UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner")), NetworkStatus.OFFLINE); return true; } }); @@ -3900,11 +3912,11 @@ public class SlimefunSetup { public void tick(Block b, SlimefunItem item, Config data) { int charge = ChargableBlock.getCharge(b.getLocation()); if (charge > 10) { - Slimefun.getGPSNetwork().updateTransmitter(new Location(b.getWorld(), b.getX(), b.getY() * 16 + 500, b.getZ()), UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner")), NetworkStatus.ONLINE); + Slimefun.getGPSNetwork().updateTransmitter(new Location(b.getWorld(), b.getX(), b.getY() * 16.0 + 500, b.getZ()), UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner")), NetworkStatus.ONLINE); ChargableBlock.setCharge(b.getLocation(), charge - 11); } else { - Slimefun.getGPSNetwork().updateTransmitter(new Location(b.getWorld(), b.getX(), b.getY() * 16 + 500, b.getZ()), UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner")), NetworkStatus.OFFLINE); + Slimefun.getGPSNetwork().updateTransmitter(new Location(b.getWorld(), b.getX(), b.getY() * 16.0 + 500, b.getZ()), UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner")), NetworkStatus.OFFLINE); } } @@ -3927,7 +3939,7 @@ public class SlimefunSetup { @Override public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) { - Slimefun.getGPSNetwork().updateTransmitter(new Location(b.getWorld(), b.getX(), b.getY() * 16 + 500, b.getZ()), UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner")), NetworkStatus.OFFLINE); + Slimefun.getGPSNetwork().updateTransmitter(new Location(b.getWorld(), b.getX(), b.getY() * 16.0 + 500, b.getZ()), UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner")), NetworkStatus.OFFLINE); return true; } }); @@ -3940,11 +3952,11 @@ public class SlimefunSetup { public void tick(Block b, SlimefunItem item, Config data) { int charge = ChargableBlock.getCharge(b.getLocation()); if (charge > 45) { - Slimefun.getGPSNetwork().updateTransmitter(new Location(b.getWorld(), b.getX(), b.getY() * 64 + 800, b.getZ()), UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner")), NetworkStatus.ONLINE); + Slimefun.getGPSNetwork().updateTransmitter(new Location(b.getWorld(), b.getX(), b.getY() * 64.0 + 800, b.getZ()), UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner")), NetworkStatus.ONLINE); ChargableBlock.setCharge(b.getLocation(), charge - 46); } else { - Slimefun.getGPSNetwork().updateTransmitter(new Location(b.getWorld(), b.getX(), b.getY() * 64 + 800, b.getZ()), UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner")), NetworkStatus.OFFLINE); + Slimefun.getGPSNetwork().updateTransmitter(new Location(b.getWorld(), b.getX(), b.getY() * 64.0 + 800, b.getZ()), UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner")), NetworkStatus.OFFLINE); } } @@ -3967,7 +3979,7 @@ public class SlimefunSetup { @Override public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) { - Slimefun.getGPSNetwork().updateTransmitter(new Location(b.getWorld(), b.getX(), b.getY() * 64 + 800, b.getZ()), UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner")), NetworkStatus.OFFLINE); + Slimefun.getGPSNetwork().updateTransmitter(new Location(b.getWorld(), b.getX(), b.getY() * 64.0 + 800, b.getZ()), UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner")), NetworkStatus.OFFLINE); return true; } }); diff --git a/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java b/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java index 479d46b5d..e184d7a5e 100644 --- a/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java +++ b/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java @@ -95,6 +95,7 @@ public class SlimefunGuide { return getItem(book ? BookDesign.BOOK: BookDesign.CHEST); } + @Deprecated public static ItemStack getDeprecatedItem(boolean book) { return new CustomItem(new ItemStack(Material.ENCHANTED_BOOK), "&eSlimefun Guide &7(Right Click)", (book ? "": "&2"), "&rThis is your basic Guide for Slimefun", "&rYou can see all Items added by this Plugin", "&ror its Addons including their Recipes", "&ra bit of information and more"); } @@ -1018,7 +1019,7 @@ public class SlimefunGuide { List lore = new ArrayList<>(); lore.add(ChatColor.translateAlternateColorCodes('&', "&8\u21E8 &7Lasts " + getTimeLeft(fuel.getTicks() / 2))); lore.add(ChatColor.translateAlternateColorCodes('&', "&8\u21E8 &e\u26A1 &7" + (((AGenerator) sfItem).getEnergyProduction() * 2) + " J/s")); - lore.add(ChatColor.translateAlternateColorCodes('&', "&8\u21E8 &e\u26A1 &7" + DoubleHandler.getFancyDouble(fuel.getTicks() * ((AGenerator) sfItem).getEnergyProduction()) + " J in total")); + lore.add(ChatColor.translateAlternateColorCodes('&', "&8\u21E8 &e\u26A1 &7" + DoubleHandler.getFancyDouble((double) fuel.getTicks() * ((AGenerator) sfItem).getEnergyProduction()) + " J in total")); im.setLore(lore); fItem.setItemMeta(im); menu.addItem(slot, fItem); @@ -1037,7 +1038,7 @@ public class SlimefunGuide { List lore = new ArrayList<>(); lore.add(ChatColor.translateAlternateColorCodes('&', "&8\u21E8 &7Lasts " + getTimeLeft(fuel.getTicks() / 2))); lore.add(ChatColor.translateAlternateColorCodes('&', "&8\u21E8 &e\u26A1 &7" + (((AReactor) sfItem).getEnergyProduction() * 2) + " J/s")); - lore.add(ChatColor.translateAlternateColorCodes('&', "&8\u21E8 &e\u26A1 &7" + DoubleHandler.getFancyDouble(fuel.getTicks() * ((AReactor) sfItem).getEnergyProduction()) + " J in total")); + lore.add(ChatColor.translateAlternateColorCodes('&', "&8\u21E8 &e\u26A1 &7" + DoubleHandler.getFancyDouble((double) fuel.getTicks() * ((AReactor) sfItem).getEnergyProduction()) + " J in total")); im.setLore(lore); fItem.setItemMeta(im); menu.addItem(slot, fItem); diff --git a/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java b/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java index a3495465f..39a5ac4f1 100644 --- a/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java +++ b/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java @@ -713,19 +713,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) { - return; - /*if (fits(b, item.getItem())) { - if (SlimefunItem.blockhandler.containsKey(item.getID())) { - if (SlimefunItem.blockhandler.get(item.getID()).onBreak(null, block, item, UnregisterReason.ANDROID_DIG)) { - pushItems(b, BlockStorage.retrieve(block)); - if (SlimefunItem.blockhandler.containsKey(item.getID())) SlimefunItem.blockhandler.get(item.getID()).onBreak(null, block, item, UnregisterReason.ANDROID_DIG); - block.getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, block.getType()); - block.setType(Material.AIR); - } - } - }*/ - } else { + if (item == null) { ItemStack[] items = drops.toArray(new ItemStack[drops.size()]); if (fits(b, items)) { pushItems(b, items); @@ -733,6 +721,17 @@ public abstract class ProgrammableAndroid extends SlimefunItem { block.setType(Material.AIR); } } + /* + else if (fits(b, item.getItem())) { + if (SlimefunItem.blockhandler.containsKey(item.getID())) { + if (SlimefunItem.blockhandler.get(item.getID()).onBreak(null, block, item, UnregisterReason.ANDROID_DIG)) { + pushItems(b, BlockStorage.retrieve(block)); + if (SlimefunItem.blockhandler.containsKey(item.getID())) SlimefunItem.blockhandler.get(item.getID()).onBreak(null, block, item, UnregisterReason.ANDROID_DIG); + block.getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, block.getType()); + block.setType(Material.AIR); + } + } + }*/ } } diff --git a/src/me/mrCookieSlime/Slimefun/api/BlockStorage.java b/src/me/mrCookieSlime/Slimefun/api/BlockStorage.java index 7b91d54a8..de9aea985 100644 --- a/src/me/mrCookieSlime/Slimefun/api/BlockStorage.java +++ b/src/me/mrCookieSlime/Slimefun/api/BlockStorage.java @@ -609,16 +609,18 @@ public class BlockStorage { public void clearInventory(Location l) { BlockMenu menu = getInventory(l); + + if (menu != null) { + for (HumanEntity human : new ArrayList<>(menu.toInventory().getViewers())) { + // Prevents "java.lang.IllegalStateException: Asynchronous entity add!" when closing inventory while holding an item + Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> { + human.closeInventory(); + }); + } - for (HumanEntity human : new ArrayList<>(menu.toInventory().getViewers())) { - // Prevents "java.lang.IllegalStateException: Asynchronous entity add!" when closing inventory while holding an item - Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> { - human.closeInventory(); - }); + inventories.get(l).delete(l); + inventories.remove(l); } - - inventories.get(l).delete(l); - inventories.remove(l); } public boolean hasInventory(Location l) { diff --git a/src/me/mrCookieSlime/Slimefun/api/ErrorReport.java b/src/me/mrCookieSlime/Slimefun/api/ErrorReport.java index 3572a5a10..3624c00be 100644 --- a/src/me/mrCookieSlime/Slimefun/api/ErrorReport.java +++ b/src/me/mrCookieSlime/Slimefun/api/ErrorReport.java @@ -24,13 +24,14 @@ public class ErrorReport { private File file; public ErrorReport(Throwable throwable, Consumer printer) { - file = new File("plugins/Slimefun/error-reports/" + Clock.getFormattedTime() + ".err"); + String path = "plugins/Slimefun/error-reports/" + Clock.getFormattedTime(); + file = new File(path + ".err"); if (file.exists()) { - IntStream stream = IntStream.iterate(1, i -> i + 1).filter(i -> !new File("plugins/Slimefun/error-reports/" + Clock.getFormattedTime() + "(" + i + ").err").exists()); + IntStream stream = IntStream.iterate(1, i -> i + 1).filter(i -> !new File(path + " (" + i + ").err").exists()); int id = stream.findFirst().getAsInt(); - file = new File("plugins/Slimefun/error-reports/" + Clock.getFormattedTime() + "(" + id + ").err"); + file = new File(path + " (" + id + ").err"); } try (PrintStream stream = new PrintStream(file)) { diff --git a/src/me/mrCookieSlime/Slimefun/api/PlayerProfile.java b/src/me/mrCookieSlime/Slimefun/api/PlayerProfile.java index f22f0a9c3..ee058a098 100644 --- a/src/me/mrCookieSlime/Slimefun/api/PlayerProfile.java +++ b/src/me/mrCookieSlime/Slimefun/api/PlayerProfile.java @@ -23,7 +23,7 @@ import me.mrCookieSlime.Slimefun.api.inventory.BackpackInventory; * @author TheBusyBiscuit * */ -public class PlayerProfile { +public final class PlayerProfile { public static Map profiles = new HashMap<>(); diff --git a/src/me/mrCookieSlime/Slimefun/api/SlimefunBackup.java b/src/me/mrCookieSlime/Slimefun/api/SlimefunBackup.java index 170197ce6..c8da97b26 100644 --- a/src/me/mrCookieSlime/Slimefun/api/SlimefunBackup.java +++ b/src/me/mrCookieSlime/Slimefun/api/SlimefunBackup.java @@ -8,7 +8,6 @@ import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Arrays; import java.util.Collections; -import java.util.Comparator; import java.util.Date; import java.util.List; import java.util.zip.ZipEntry; @@ -17,20 +16,17 @@ import java.util.zip.ZipOutputStream; import me.mrCookieSlime.CSCoreLibPlugin.general.Clock; public class SlimefunBackup { - + public static void start() { File folder = new File("data-storage/Slimefun/block-backups"); List backups = Arrays.asList(folder.listFiles()); - if (backups.size() > 20) { - Collections.sort(backups, new Comparator() { - @Override - public int compare(File f1, File f2) { - try { - return (int) (new SimpleDateFormat("yyyy-MM-dd-HH-mm").parse(f1.getName().replace(".zip", "")).getTime() - new SimpleDateFormat("yyyy-MM-dd-HH-mm").parse(f2.getName().replace(".zip", "")).getTime()); - } catch (ParseException e) { - return 0; - } + if (backups.size() > 20) { + Collections.sort(backups, (a, b) -> { + try { + return (int) (new SimpleDateFormat("yyyy-MM-dd-HH-mm").parse(a.getName().replace(".zip", "")).getTime() - new SimpleDateFormat("yyyy-MM-dd-HH-mm").parse(b.getName().replace(".zip", "")).getTime()); + } catch (ParseException e) { + return 0; } }); @@ -49,67 +45,68 @@ public class SlimefunBackup { try { file.createNewFile(); - ZipOutputStream output = new ZipOutputStream(new FileOutputStream(file)); + try (ZipOutputStream output = new ZipOutputStream(new FileOutputStream(file))) { + for (File f1: new File("data-storage/Slimefun/stored-blocks/").listFiles()) { + for (File f: f1.listFiles()) { + ZipEntry entry = new ZipEntry("stored-blocks/" + f1.getName() + "/" + f.getName()); + output.putNextEntry(entry); - for (File f1: new File("data-storage/Slimefun/stored-blocks/").listFiles()) { - for (File f: f1.listFiles()) { - ZipEntry entry = new ZipEntry("stored-blocks/" + f1.getName() + "/" + f.getName()); + try (FileInputStream input = new FileInputStream(f)) { + int length; + while ((length = input.read(buffer)) > 0) { + output.write(buffer, 0, length); + } + } + + output.closeEntry(); + } + } + + for (File f: new File("data-storage/Slimefun/universal-inventories/").listFiles()) { + ZipEntry entry = new ZipEntry("universal-inventories/" + f.getName()); output.putNextEntry(entry); - FileInputStream input = new FileInputStream(f); - int length; - while ((length = input.read(buffer)) > 0) { - output.write(buffer, 0, length); + try (FileInputStream input = new FileInputStream(f)) { + int length; + while ((length = input.read(buffer)) > 0) { + output.write(buffer, 0, length); + } + } + + output.closeEntry(); + } + + for (File f: new File("data-storage/Slimefun/stored-inventories/").listFiles()) { + ZipEntry entry = new ZipEntry("stored-inventories/" + f.getName()); + output.putNextEntry(entry); + + try (FileInputStream input = new FileInputStream(f)) { + int length; + while ((length = input.read(buffer)) > 0) { + output.write(buffer, 0, length); + } + } + + output.closeEntry(); + } + + File chunks = new File("data-storage/Slimefun/stored-chunks/chunks.sfc"); + + if (chunks.exists()) { + ZipEntry entry = new ZipEntry("stored-chunks/chunks.sfc"); + output.putNextEntry(entry); + + try (FileInputStream input = new FileInputStream(chunks)) { + int length; + while ((length = input.read(buffer)) > 0) { + output.write(buffer, 0, length); + } } - input.close(); output.closeEntry(); } } - for (File f: new File("data-storage/Slimefun/universal-inventories/").listFiles()) { - ZipEntry entry = new ZipEntry("universal-inventories/" + f.getName()); - output.putNextEntry(entry); - FileInputStream input = new FileInputStream(f); - - int length; - while ((length = input.read(buffer)) > 0) { - output.write(buffer, 0, length); - } - - input.close(); - output.closeEntry(); - } - - for (File f: new File("data-storage/Slimefun/stored-inventories/").listFiles()) { - ZipEntry entry = new ZipEntry("stored-inventories/" + f.getName()); - output.putNextEntry(entry); - FileInputStream input = new FileInputStream(f); - - int length; - while ((length = input.read(buffer)) > 0) { - output.write(buffer, 0, length); - } - - input.close(); - output.closeEntry(); - } - - if (new File("data-storage/Slimefun/stored-chunks/chunks.sfc").exists()) { - ZipEntry entry = new ZipEntry("stored-chunks/chunks.sfc"); - output.putNextEntry(entry); - FileInputStream input = new FileInputStream(new File("data-storage/Slimefun/stored-chunks/chunks.sfc")); - - int length; - while ((length = input.read(buffer)) > 0) { - output.write(buffer, 0, length); - } - - input.close(); - output.closeEntry(); - } - - output.close(); System.out.println("[Slimefun] Backed up Blocks to " + file.getName()); } catch(IOException e) { e.printStackTrace(); diff --git a/src/me/mrCookieSlime/Slimefun/api/network/Network.java b/src/me/mrCookieSlime/Slimefun/api/network/Network.java index cb192e3e2..b3a84cd24 100644 --- a/src/me/mrCookieSlime/Slimefun/api/network/Network.java +++ b/src/me/mrCookieSlime/Slimefun/api/network/Network.java @@ -97,9 +97,11 @@ public abstract class Network { private Component getCurrentClassification(Location l) { if(regulatorNodes.contains(l)) { return Component.REGULATOR; - } else if(connectorNodes.contains(l)) { + } + else if(connectorNodes.contains(l)) { return Component.CONNECTOR; - } else if(terminusNodes.contains(l)) { + } + else if(terminusNodes.contains(l)) { return Component.TERMINUS; } return null; @@ -107,27 +109,33 @@ public abstract class Network { private void discoverStep() { int steps = 0; - while(nodeQueue.peek() != null) { + while (nodeQueue.peek() != null) { Location l = nodeQueue.poll(); Component currentAssignment = getCurrentClassification(l); Component classification = classifyLocation(l); - if(classification != currentAssignment) { - if(currentAssignment == Component.REGULATOR || currentAssignment == Component.CONNECTOR) { + + if (classification != currentAssignment) { + if (currentAssignment == Component.REGULATOR || currentAssignment == Component.CONNECTOR) { // Requires a complete rebuild of the network, so we just throw the current one away. unregisterNetwork(this); return; - } else if(currentAssignment == Component.TERMINUS) { + } + else if (currentAssignment == Component.TERMINUS) { terminusNodes.remove(l); } - if(classification == Component.REGULATOR) { + + if (classification == Component.REGULATOR) { regulatorNodes.add(l); discoverNeighbors(l); - } else if(classification == Component.CONNECTOR) { + } + else if(classification == Component.CONNECTOR) { connectorNodes.add(l); discoverNeighbors(l); - } else if(classification == Component.TERMINUS) { + } + else if(classification == Component.TERMINUS) { terminusNodes.add(l); } + locationClassificationChange(l, currentAssignment, classification); } steps += 1; @@ -137,7 +145,7 @@ public abstract class Network { } } - private void discoverNeighbors(Location l, int xDiff, int yDiff, int zDiff) { + private void discoverNeighbors(Location l, double xDiff, double yDiff, double zDiff) { for(int i = getRange() + 1; i > 0; i --) { Location new_location = l.clone().add(i * xDiff, i * yDiff, i * zDiff); addLocationToNetwork(new_location); @@ -145,12 +153,12 @@ public abstract class Network { } private void discoverNeighbors(Location l) { - discoverNeighbors(l, 1, 0, 0); - discoverNeighbors(l, -1, 0, 0); - discoverNeighbors(l, 0, 1, 0); - discoverNeighbors(l, 0, -1, 0); - discoverNeighbors(l, 0, 0, 1); - discoverNeighbors(l, 0, 0, -1); + discoverNeighbors(l, 1.0, 0.0, 0.0); + discoverNeighbors(l, -1.0, 0.0, 0.0); + discoverNeighbors(l, 0.0, 1.0, 0.0); + discoverNeighbors(l, 0.0, -1.0, 0.0); + discoverNeighbors(l, 0.0, 0.0, 1.0); + discoverNeighbors(l, 0.0, 0.0, -1.0); } public void display() { diff --git a/src/me/mrCookieSlime/Slimefun/hooks/github/GitHubConnector.java b/src/me/mrCookieSlime/Slimefun/hooks/github/GitHubConnector.java index d43233aab..0cc5f1bee 100644 --- a/src/me/mrCookieSlime/Slimefun/hooks/github/GitHubConnector.java +++ b/src/me/mrCookieSlime/Slimefun/hooks/github/GitHubConnector.java @@ -16,39 +16,40 @@ import com.google.gson.JsonParser; import me.mrCookieSlime.Slimefun.SlimefunStartup; public abstract class GitHubConnector { - + private File file; public GitHubConnector() { this.file = new File("plugins/Slimefun/cache/github/" + this.getFileName() + ".json"); SlimefunStartup.instance.getUtilities().connectors.add(this); } - + public abstract String getFileName(); public abstract String getRepository(); public abstract String getURLSuffix(); public abstract void onSuccess(JsonElement element); public abstract void onFailure(); - + public void pullFile() { if (SlimefunStartup.getCfg().getBoolean("options.print-out-github-data-retrieving")) System.out.println("[Slimefun - GitHub] Retrieving '" + this.getFileName() + ".json' from GitHub..."); - + try { URL website = new URL("https://api.github.com/repos/" + this.getRepository() + this.getURLSuffix()); - + URLConnection connection = website.openConnection(); - connection.setConnectTimeout(3000); - connection.addRequestProperty("User-Agent", "Slimefun 4 GitHub Agent (by TheBusyBiscuit)"); - connection.setDoOutput(true); - - ReadableByteChannel rbc = Channels.newChannel(connection.getInputStream()); - FileOutputStream fos = new FileOutputStream(file); - fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE); - fos.close(); - this.parseData(); + connection.setConnectTimeout(3000); + connection.addRequestProperty("User-Agent", "Slimefun 4 GitHub Agent (by TheBusyBiscuit)"); + connection.setDoOutput(true); + + try (ReadableByteChannel channel = Channels.newChannel(connection.getInputStream())) { + try (FileOutputStream stream = new FileOutputStream(file)) { + stream.getChannel().transferFrom(channel, 0, Long.MAX_VALUE); + this.parseData(); + } + } } catch (IOException e) { if (SlimefunStartup.getCfg().getBoolean("options.print-out-github-data-retrieving")) System.err.println("[Slimefun - GitHub] ERROR - Could not connect to GitHub in time."); - + if (hasData()) { this.parseData(); } @@ -57,31 +58,26 @@ public abstract class GitHubConnector { } } } - + public boolean hasData() { return this.getFile().exists(); } - + public File getFile() { return this.file; } public void parseData() { - try { - BufferedReader reader = new BufferedReader(new FileReader(this.getFile())); - + try (BufferedReader reader = new BufferedReader(new FileReader(this.getFile()))) { String full = ""; - + String line; - while ((line = reader.readLine()) != null) { - full = full + line; - } - - reader.close(); - - JsonElement element = new JsonParser().parse(full); - - this.onSuccess(element); + while ((line = reader.readLine()) != null) { + full = full + line; + } + + JsonElement element = new JsonParser().parse(full); + this.onSuccess(element); } catch (IOException e) { e.printStackTrace(); diff --git a/src/me/mrCookieSlime/Slimefun/hooks/github/IntegerFormat.java b/src/me/mrCookieSlime/Slimefun/hooks/github/IntegerFormat.java index 3b4d1cf82..0579716af 100644 --- a/src/me/mrCookieSlime/Slimefun/hooks/github/IntegerFormat.java +++ b/src/me/mrCookieSlime/Slimefun/hooks/github/IntegerFormat.java @@ -6,17 +6,17 @@ import java.text.SimpleDateFormat; import java.util.Date; import java.util.Locale; -public class IntegerFormat { +public final class IntegerFormat { + + private IntegerFormat() {} - private static final SimpleDateFormat date_format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - public static String formatBigNumber(int i) { return NumberFormat.getNumberInstance(Locale.US).format(i); } public static Date parseGitHubDate(String str) { try { - return date_format.parse(str.replace("T", " ").replace("Z", "")); + return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(str.replace("T", " ").replace("Z", "")); } catch (ParseException e) { e.printStackTrace(); return null; From 3d3f1b6c877c8d926cffb67215088a599b37edbe Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Tue, 27 Aug 2019 17:55:20 +0200 Subject: [PATCH 010/169] Fixed Ignition Chamber Bug --- .../machines/AutomatedCraftingChamber.java | 25 ++++++------- .../Slimefun/Setup/SlimefunSetup.java | 36 ++++++++----------- .../Slimefun/SlimefunStartup.java | 2 +- .../api/item_transport/RecipeSorter.java | 2 +- 4 files changed, 27 insertions(+), 38 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutomatedCraftingChamber.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutomatedCraftingChamber.java index a3f19ea75..618d41d45 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutomatedCraftingChamber.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutomatedCraftingChamber.java @@ -87,7 +87,7 @@ public abstract class AutomatedCraftingChamber extends SlimefunItem { public int[] getSlotsAccessedByItemTransport(BlockMenu menu, ItemTransportFlow flow, ItemStack item) { if (flow.equals(ItemTransportFlow.WITHDRAW)) return getOutputSlots(); - List slots = new ArrayList(); + List slots = new ArrayList<>(); for (int slot : getInputSlots()) { if (menu.getItemInSlot(slot) != null) slots.add(slot); } @@ -134,19 +134,15 @@ public abstract class AutomatedCraftingChamber extends SlimefunItem { protected void constructMenu(BlockMenuPreset preset) { for (int i : border) { - preset.addItem(i, new CustomItem(new ItemStack(Material.GRAY_STAINED_GLASS_PANE), " "), - (p, slot, item, action) -> false - ); + preset.addItem(i, new CustomItem(new ItemStack(Material.GRAY_STAINED_GLASS_PANE), " "), (p, slot, item, action) -> false); } + for (int i : border_in) { - preset.addItem(i, new CustomItem(new ItemStack(Material.BLUE_STAINED_GLASS_PANE), " "), - (p, slot, item, action) -> false - ); + preset.addItem(i, new CustomItem(new ItemStack(Material.BLUE_STAINED_GLASS_PANE), " "), (p, slot, item, action) -> false); } + for (int i : border_out) { - preset.addItem(i, new CustomItem(new ItemStack(Material.ORANGE_STAINED_GLASS_PANE), " "), - (p, slot, item, action) -> false - ); + preset.addItem(i, new CustomItem(new ItemStack(Material.ORANGE_STAINED_GLASS_PANE), " "), (p, slot, item, action) -> false); } for (int i : getOutputSlots()) { @@ -164,9 +160,7 @@ public abstract class AutomatedCraftingChamber extends SlimefunItem { }); } - preset.addItem(2, new CustomItem(new ItemStack(Material.CRAFTING_TABLE), "&eRecipe", "", "&bPut in the Recipe you want to craft", "&4Enhanced Crafting Table Recipes ONLY"), - (p, slot, item, action) -> false - ); + preset.addItem(2, new CustomItem(new ItemStack(Material.CRAFTING_TABLE), "&eRecipe", "", "&bPut in the Recipe you want to craft", "&4Enhanced Crafting Table Recipes ONLY"), (p, slot, item, action) -> false); } public abstract int getEnergyConsumption(); @@ -182,12 +176,15 @@ public abstract class AutomatedCraftingChamber extends SlimefunItem { private Inventory inject(Block b) { int size = BlockStorage.getInventory(b).toInventory().getSize(); Inventory inv = Bukkit.createInventory(null, size); + for (int i = 0; i < size; i++) { inv.setItem(i, new CustomItem(Material.COMMAND_BLOCK, " &4ALL YOUR PLACEHOLDERS ARE BELONG TO US")); } + for (int slot : getOutputSlots()) { inv.setItem(slot, BlockStorage.getInventory(b).getItemInSlot(slot)); } + return inv; } @@ -240,9 +237,7 @@ public abstract class AutomatedCraftingChamber extends SlimefunItem { } ItemStack item = menu.getItemInSlot(getInputSlots()[j]); - if (item != null && item.getAmount() == 1) return; - builder.append(CustomItemSerializer.serialize(item, ItemFlag.MATERIAL, ItemFlag.ITEMMETA_DISPLAY_NAME, ItemFlag.ITEMMETA_LORE)); i++; diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java index 8d0fe8a1b..45995f629 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java @@ -191,8 +191,8 @@ public class SlimefunSetup { .register(true); new SlimefunItem(Categories.MACHINES_1, SlimefunItems.OUTPUT_CHEST, "OUTPUT_CHEST", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.LEAD_INGOT, new ItemStack(Material.HOPPER), SlimefunItems.LEAD_INGOT, SlimefunItems.LEAD_INGOT, new ItemStack(Material.CHEST), SlimefunItems.LEAD_INGOT, null, SlimefunItems.LEAD_INGOT, null}) - .register(true); + new ItemStack[] {SlimefunItems.LEAD_INGOT, new ItemStack(Material.HOPPER), SlimefunItems.LEAD_INGOT, SlimefunItems.LEAD_INGOT, new ItemStack(Material.CHEST), SlimefunItems.LEAD_INGOT, null, SlimefunItems.LEAD_INGOT, null}) + .register(true); new SlimefunMachine(Categories.MACHINES_1, SlimefunItems.ENHANCED_CRAFTING_TABLE, "ENHANCED_CRAFTING_TABLE", new ItemStack[] {null, null, null, null, new ItemStack(Material.CRAFTING_TABLE), null, null, new ItemStack(Material.DISPENSER), null}, @@ -720,8 +720,6 @@ public class SlimefunSetup { new ItemStack[] {SlimefunItems.IRON_DUST, new ItemStack(Material.IRON_INGOT)}, Material.NETHER_BRICK_FENCE, new String[] {"chance.fireBreak"}, new Integer[] {34}) .register(true, new MultiBlockInteractionHandler() { - - private final String chamberID = "IGNITION_CHAMBER"; @Override public boolean onInteract(Player p, MultiBlock mb, Block b) { @@ -761,24 +759,8 @@ public class SlimefunSetup { outputInv.addItem(adding); p.getWorld().playSound(p.getLocation(), Sound.BLOCK_LAVA_POP, 1, 1); p.getWorld().playEffect(b.getLocation(), Effect.MOBSPAWNER_FLAMES, 1); - // Block raw_disp = b.getRelative(BlockFace.DOWN); - // raw_disp has been removed since the outputInv functionality already uses such an object which is declared above as dispBlock. - // The chamber methods have been updated to reflect this change. - // Maybe this code snippet should be turned into a loop? - Hopper chamber = null; - if (BlockStorage.check(dispBlock.getRelative(BlockFace.EAST).getState().getBlock(), chamberID)) { - chamber = (Hopper) dispBlock.getRelative(BlockFace.EAST).getState(); - } - else if (BlockStorage.check(dispBlock.getRelative(BlockFace.WEST).getState().getBlock(), chamberID)) { - chamber = (Hopper) dispBlock.getRelative(BlockFace.WEST).getState(); - } - else if (BlockStorage.check(dispBlock.getRelative(BlockFace.NORTH).getState().getBlock(), chamberID)) { - chamber = (Hopper) dispBlock.getRelative(BlockFace.NORTH).getState(); - } - else if (BlockStorage.check(dispBlock.getRelative(BlockFace.SOUTH).getState().getBlock(), chamberID)){ - chamber = (Hopper) dispBlock.getRelative(BlockFace.SOUTH).getState(); - } + Hopper chamber = findHopper(dispBlock, BlockFace.NORTH, BlockFace.EAST, BlockFace.SOUTH, BlockFace.WEST); if (SlimefunStartup.chance(100, (Integer) Slimefun.getItemValue("SMELTERY", "chance.fireBreak"))) { if (chamber != null) { @@ -787,10 +769,12 @@ public class SlimefunSetup { ItemMeta meta = item.getItemMeta(); ((Damageable) meta).setDamage(((Damageable) meta).getDamage() + 1); item.setItemMeta(meta); + if (((Damageable) item.getItemMeta()).getDamage() >= item.getType().getMaxDurability()) { item.setAmount(0); p.getWorld().playSound(p.getLocation(), Sound.ENTITY_ITEM_BREAK, 1, 1); } + p.getWorld().playSound(p.getLocation(), Sound.ITEM_FLINTANDSTEEL_USE, 1, 1); } else { @@ -820,6 +804,16 @@ public class SlimefunSetup { } else return false; } + + private Hopper findHopper(Block b, BlockFace... faces) { + for (BlockFace face: faces) { + if (b.getRelative(face).getType() == Material.HOPPER && BlockStorage.check(b.getRelative(face), "IGNITION_CHAMBER")) { + return (Hopper) b.getRelative(face).getState(); + } + } + + return null; + } }); diff --git a/src/me/mrCookieSlime/Slimefun/SlimefunStartup.java b/src/me/mrCookieSlime/Slimefun/SlimefunStartup.java index f9e5790a8..8503fd91d 100644 --- a/src/me/mrCookieSlime/Slimefun/SlimefunStartup.java +++ b/src/me/mrCookieSlime/Slimefun/SlimefunStartup.java @@ -98,7 +98,7 @@ public class SlimefunStartup extends JavaPlugin { private boolean clearlag = false; private boolean exoticGarden = false; private boolean coreProtect = false; - + // Supported Versions of Minecraft final String[] supported = {"v1_14_"}; diff --git a/src/me/mrCookieSlime/Slimefun/api/item_transport/RecipeSorter.java b/src/me/mrCookieSlime/Slimefun/api/item_transport/RecipeSorter.java index d4fbf9a7c..c4ed77b11 100644 --- a/src/me/mrCookieSlime/Slimefun/api/item_transport/RecipeSorter.java +++ b/src/me/mrCookieSlime/Slimefun/api/item_transport/RecipeSorter.java @@ -6,7 +6,7 @@ import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu; public class RecipeSorter implements Comparator { - BlockMenu menu; + private BlockMenu menu; public RecipeSorter(BlockMenu menu) { this.menu = menu; From aff264d66cb09e4c9fd21c1550286420f9615de0 Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Tue, 27 Aug 2019 20:37:33 +0200 Subject: [PATCH 011/169] More Refactoring + Code Cleanup (Reduced cognitive load) --- .../Slimefun/Objects/Research.java | 26 +- .../Objects/SlimefunBlockHandler.java | 1 - .../Objects/SlimefunItem/EnderTalisman.java | 11 +- .../Objects/SlimefunItem/SlimefunItem.java | 2 +- .../abstractItems/AContainer.java | 4 +- .../SlimefunItem/abstractItems/ADrill.java | 2 +- .../SlimefunItem/abstractItems/AFarm.java | 2 +- .../abstractItems/AGenerator.java | 91 +--- .../handlers/AutonomousMachineHandler.java | 13 +- .../handlers/AutonomousToolHandler.java | 16 - .../handlers/BlockBreakHandler.java | 8 +- .../handlers/BlockPlaceHandler.java | 8 +- .../SlimefunItem/handlers/BlockTicker.java | 2 +- .../handlers/BowShootHandler.java | 10 +- .../SlimefunItem/handlers/ItemHandler.java | 5 +- .../handlers/ItemInteractionHandler.java | 8 +- .../MultiBlockInteractionHandler.java | 8 +- .../machines/ElectricDustWasher.java | 4 +- .../machines/EnhancedCraftingTable.java | 175 ++++++++ .../SlimefunItem/machines/MagicWorkbench.java | 188 +++++++++ .../SlimefunItem/machines/Smeltery.java | 141 +++++++ .../Slimefun/Setup/SlimefunSetup.java | 394 +----------------- .../Slimefun/SlimefunStartup.java | 2 + .../Slimefun/api/energy/EnergyTicker.java | 2 +- .../listeners/AutonomousToolsListener.java | 20 +- 25 files changed, 598 insertions(+), 545 deletions(-) delete mode 100644 src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/AutonomousToolHandler.java create mode 100644 src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/EnhancedCraftingTable.java create mode 100644 src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/MagicWorkbench.java create mode 100644 src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/Smeltery.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/Research.java b/src/me/mrCookieSlime/Slimefun/Objects/Research.java index a9d522c73..eeb450408 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/Research.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/Research.java @@ -260,15 +260,17 @@ public class Research { ResearchUnlockEvent event = new ResearchUnlockEvent(p, this); Bukkit.getPluginManager().callEvent(event); + Runnable runnable = () -> { + PlayerProfile.fromUUID(p.getUniqueId()).setResearched(this, true); + Messages.local.sendTranslation(p, "messages.unlocked", true, new Variable("%research%", getName())); + + if (SlimefunStartup.getCfg().getBoolean("options.research-unlock-fireworks")) { + FireworkShow.launchRandom(p, 1); + } + }; + if (!event.isCancelled()) { - if (instant) { - PlayerProfile.fromUUID(p.getUniqueId()).setResearched(this, true); - - Messages.local.sendTranslation(p, "messages.unlocked", true, new Variable("%research%", getName())); - if (SlimefunStartup.getCfg().getBoolean("options.research-give-fireworks")) { - FireworkShow.launchRandom(p, 1); - } - } + if (instant) runnable.run(); else if (!SlimefunStartup.instance.getUtilities().researching.contains(p.getUniqueId())){ SlimefunStartup.instance.getUtilities().researching.add(p.getUniqueId()); Messages.local.sendTranslation(p, "messages.research.start", true, new Variable("%research%", getName())); @@ -283,13 +285,7 @@ public class Research { } Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> { - PlayerProfile.fromUUID(p.getUniqueId()).setResearched(this, true); - Messages.local.sendTranslation(p, "messages.unlocked", true, new Variable("%research%", getName())); - - if (SlimefunStartup.getCfg().getBoolean("options.research-unlock-fireworks")) { - FireworkShow.launchRandom(p, 1); - } - + runnable.run(); SlimefunStartup.instance.getUtilities().researching.remove(p.getUniqueId()); }, (research_progress.length + 1) * 20L); } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunBlockHandler.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunBlockHandler.java index d484e38c1..32e45a6f5 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunBlockHandler.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunBlockHandler.java @@ -9,6 +9,5 @@ import org.bukkit.entity.Player; public interface SlimefunBlockHandler { void onPlace(Player p, Block b, SlimefunItem item); - boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason); } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/EnderTalisman.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/EnderTalisman.java index 5e6add098..e7700a3e9 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/EnderTalisman.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/EnderTalisman.java @@ -1,12 +1,13 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem; -import me.mrCookieSlime.Slimefun.Lists.Categories; -import me.mrCookieSlime.Slimefun.Lists.RecipeType; -import me.mrCookieSlime.Slimefun.api.Slimefun; - import org.bukkit.inventory.ItemStack; import org.bukkit.potion.PotionEffect; +import me.mrCookieSlime.Slimefun.Lists.Categories; +import me.mrCookieSlime.Slimefun.Lists.RecipeType; +import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; +import me.mrCookieSlime.Slimefun.api.Slimefun; + /** * @since 4.0 */ @@ -19,7 +20,7 @@ public class EnderTalisman extends SlimefunItem { private int chance; public EnderTalisman(Talisman parent) { - super(Categories.TALISMANS_2, parent.upgrade(), "ENDER_" + parent.getID(), RecipeType.MAGIC_WORKBENCH, new ItemStack[] {SlimefunItem.getItem("ENDER_LUMP_3"), null, SlimefunItem.getItem("ENDER_LUMP_3"), null, parent.getItem(), null, SlimefunItem.getItem("ENDER_LUMP_3"), null, SlimefunItem.getItem("ENDER_LUMP_3")}, parent.upgrade()); + super(Categories.TALISMANS_2, parent.upgrade(), "ENDER_" + parent.getID(), RecipeType.MAGIC_WORKBENCH, new ItemStack[] {SlimefunItems.ENDER_LUMP_3, null, SlimefunItems.ENDER_LUMP_3, null, parent.getItem(), null, SlimefunItems.ENDER_LUMP_3, null, SlimefunItems.ENDER_LUMP_3}, parent.upgrade()); this.consumable = parent.isConsumable(); this.cancel = parent.isEventCancelled(); this.suffix = parent.getSuffix(); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java index 4fe43cb41..92d20a74e 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java @@ -53,7 +53,7 @@ public class SlimefunItem { private Category category; private ItemStack[] recipe; private RecipeType recipeType; - private ItemStack recipeOutput = null; + protected ItemStack recipeOutput = null; private Research research; private int month = -1; private boolean enchantable = true, disenchantable = true; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AContainer.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AContainer.java index 6fc41b9cd..ddff62b43 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AContainer.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AContainer.java @@ -66,7 +66,7 @@ public abstract class AContainer extends SlimefunItem { @Override public int[] getSlotsAccessedByItemTransport(ItemTransportFlow flow) { - if (flow.equals(ItemTransportFlow.INSERT)) return getInputSlots(); + if (flow == ItemTransportFlow.INSERT) return getInputSlots(); else return getOutputSlots(); } }; @@ -124,7 +124,7 @@ public abstract class AContainer extends SlimefunItem { @Override public int[] getSlotsAccessedByItemTransport(ItemTransportFlow flow) { - if (flow.equals(ItemTransportFlow.INSERT)) return getInputSlots(); + if (flow == ItemTransportFlow.INSERT) return getInputSlots(); else return getOutputSlots(); } }; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/ADrill.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/ADrill.java index ac2752ca7..81cc931ca 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/ADrill.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/ADrill.java @@ -96,7 +96,7 @@ public abstract class ADrill extends AContainer { @Override public int[] getSlotsAccessedByItemTransport(ItemTransportFlow flow) { - if (flow.equals(ItemTransportFlow.INSERT)) return getInputSlots(); + if (flow == ItemTransportFlow.INSERT) return getInputSlots(); else return getOutputSlots(); } }; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AFarm.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AFarm.java index 190827a0e..284cd7a0d 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AFarm.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AFarm.java @@ -53,7 +53,7 @@ public abstract class AFarm extends SlimefunItem { @Override public int[] getSlotsAccessedByItemTransport(ItemTransportFlow flow) { - if (flow.equals(ItemTransportFlow.WITHDRAW)) return getOutputSlots(); + if (flow == ItemTransportFlow.WITHDRAW) return getOutputSlots(); return new int[0]; } }; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AGenerator.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AGenerator.java index 00b13c4c8..9519ba084 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AGenerator.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AGenerator.java @@ -40,10 +40,10 @@ import me.mrCookieSlime.Slimefun.api.item_transport.ItemTransportFlow; public abstract class AGenerator extends SlimefunItem { - public static Map processing = new HashMap(); - public static Map progress = new HashMap(); + public static Map processing = new HashMap<>(); + public static Map progress = new HashMap<>(); - private Set recipes = new HashSet(); + private Set recipes = new HashSet<>(); private static final int[] border = {0, 1, 2, 3, 4, 5, 6, 7, 8, 13, 31, 36, 37, 38, 39, 40, 41, 42, 43, 44}; private static final int[] border_in = {9, 10, 11, 12, 18, 21, 27, 28, 29, 30}; @@ -70,7 +70,7 @@ public abstract class AGenerator extends SlimefunItem { @Override public int[] getSlotsAccessedByItemTransport(ItemTransportFlow flow) { - if (flow.equals(ItemTransportFlow.INSERT)) return getInputSlots(); + if (flow == ItemTransportFlow.INSERT) return getInputSlots(); else return getOutputSlots(); } }; @@ -108,78 +108,21 @@ public abstract class AGenerator extends SlimefunItem { } public AGenerator(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe, ItemStack recipeOutput) { - super(category, item, id, recipeType, recipe, recipeOutput); - - new BlockMenuPreset(id, getInventoryTitle()) { - - @Override - public void init() { - constructMenu(this); - } - - @Override - public void newInstance(BlockMenu menu, Block b) { - } - - @Override - public boolean canOpen(Block b, Player p) { - return p.hasPermission("slimefun.inventory.bypass") || CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true); - } - - @Override - public int[] getSlotsAccessedByItemTransport(ItemTransportFlow flow) { - if (flow.equals(ItemTransportFlow.INSERT)) return getInputSlots(); - else return getOutputSlots(); - } - }; - - registerBlockHandler(id, new SlimefunBlockHandler() { - - @Override - public void onPlace(Player p, Block b, SlimefunItem item) { - } - - @Override - public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) { - BlockMenu inv = BlockStorage.getInventory(b); - if (inv != null) { - for (int slot : getInputSlots()) { - if (inv.getItemInSlot(slot) != null) { - b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot)); - inv.replaceExistingItem(slot, null); - } - } - for (int slot : getOutputSlots()) { - if (inv.getItemInSlot(slot) != null) { - b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot)); - inv.replaceExistingItem(slot, null); - } - } - } - progress.remove(b.getLocation()); - processing.remove(b.getLocation()); - return true; - } - }); - - this.registerDefaultRecipes(); + this(category, item, id, recipeType, recipe); + this.recipeOutput = recipeOutput; } private void constructMenu(BlockMenuPreset preset) { for (int i : border) { - preset.addItem(i, new CustomItem(new ItemStack(Material.GRAY_STAINED_GLASS_PANE), " "), - (p, slot, item, action) -> false - ); + preset.addItem(i, new CustomItem(new ItemStack(Material.GRAY_STAINED_GLASS_PANE), " "), (p, slot, item, action) -> false); } + for (int i : border_in) { - preset.addItem(i, new CustomItem(new ItemStack(Material.CYAN_STAINED_GLASS_PANE), " "), - (p, slot, item, action) -> false - ); + preset.addItem(i, new CustomItem(new ItemStack(Material.CYAN_STAINED_GLASS_PANE), " "),(p, slot, item, action) -> false); } + for (int i: border_out) { - preset.addItem(i, new CustomItem(new ItemStack(Material.ORANGE_STAINED_GLASS_PANE), " "), - (p, slot, item, action) -> false - ); + preset.addItem(i, new CustomItem(new ItemStack(Material.ORANGE_STAINED_GLASS_PANE), " "), (p, slot, item, action) -> false); } for (int i: getOutputSlots()) { @@ -197,9 +140,7 @@ public abstract class AGenerator extends SlimefunItem { }); } - preset.addItem(22, new CustomItem(new ItemStack(Material.BLACK_STAINED_GLASS_PANE), " "), - (p, slot, item, action) -> false - ); + preset.addItem(22, new CustomItem(new ItemStack(Material.BLACK_STAINED_GLASS_PANE), " "), (p, slot, item, action) -> false); } public abstract String getInventoryTitle(); @@ -240,7 +181,7 @@ public abstract class AGenerator extends SlimefunItem { ItemMeta im = item.getItemMeta(); ((Damageable) im).setDamage(MachineHelper.getDurability(item, timeleft, processing.get(l).getTicks())); im.setDisplayName(" "); - List lore = new ArrayList(); + List lore = new ArrayList<>(); lore.add(MachineHelper.getProgress(timeleft, processing.get(l).getTicks())); lore.add(""); lore.add(MachineHelper.getTimeLeft(timeleft / 2)); @@ -267,7 +208,7 @@ public abstract class AGenerator extends SlimefunItem { if (SlimefunManager.isItemSimiliar(fuel, new ItemStack(Material.LAVA_BUCKET), true) || SlimefunManager.isItemSimiliar(fuel, SlimefunItems.BUCKET_OF_FUEL, true) || SlimefunManager.isItemSimiliar(fuel, SlimefunItems.BUCKET_OF_OIL, true)) { - pushItems(l, new ItemStack[] {new ItemStack(Material.BUCKET)}); + pushItems(l, new ItemStack(Material.BUCKET)); } BlockStorage.getInventory(l).replaceExistingItem(22, new CustomItem(new ItemStack(Material.BLACK_STAINED_GLASS_PANE), " ")); @@ -278,7 +219,7 @@ public abstract class AGenerator extends SlimefunItem { } else { MachineFuel r = null; - Map found = new HashMap(); + Map found = new HashMap<>(); outer: for (MachineFuel recipe: recipes) { for (int slot: getInputSlots()) { @@ -326,7 +267,7 @@ public abstract class AGenerator extends SlimefunItem { return inv; } - protected void pushItems(Location l, ItemStack[] items) { + protected void pushItems(Location l, ItemStack... items) { Inventory inv = inject(l); inv.addItem(items); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/AutonomousMachineHandler.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/AutonomousMachineHandler.java index 608729ff1..078c674ed 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/AutonomousMachineHandler.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/AutonomousMachineHandler.java @@ -6,13 +6,12 @@ import org.bukkit.block.Block; import org.bukkit.block.Dispenser; import org.bukkit.event.block.BlockDispenseEvent; -public abstract class AutonomousMachineHandler extends ItemHandler { - - @Override - public String toCodename() { +@FunctionalInterface +public interface AutonomousMachineHandler extends ItemHandler { + + boolean onBlockDispense(BlockDispenseEvent e, Block dispenser, Dispenser d, Block block, Block chest, SlimefunItem machine); + + default String toCodename() { return "AutonomousMachineHandler"; } - - public abstract boolean onBlockDispense(BlockDispenseEvent e, Block dispenser, Dispenser d, Block block, Block chest, SlimefunItem machine); - } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/AutonomousToolHandler.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/AutonomousToolHandler.java deleted file mode 100644 index 8c42cecdd..000000000 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/AutonomousToolHandler.java +++ /dev/null @@ -1,16 +0,0 @@ -package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers; - -import org.bukkit.block.Block; -import org.bukkit.block.Dispenser; -import org.bukkit.event.block.BlockDispenseEvent; - -public abstract class AutonomousToolHandler extends ItemHandler { - - @Override - public String toCodename() { - return "AutonomousToolHandler"; - } - - public abstract boolean onBlockDispense(BlockDispenseEvent e, Block dispenser, Dispenser d, Block block, Block chest, int i); - -} diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockBreakHandler.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockBreakHandler.java index 89a79e011..98834145f 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockBreakHandler.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockBreakHandler.java @@ -5,12 +5,12 @@ import java.util.List; import org.bukkit.event.block.BlockBreakEvent; import org.bukkit.inventory.ItemStack; -public abstract class BlockBreakHandler extends ItemHandler { +@FunctionalInterface +public interface BlockBreakHandler extends ItemHandler { - public abstract boolean onBlockBreak(BlockBreakEvent e, ItemStack item, int fortune, List drops); + boolean onBlockBreak(BlockBreakEvent e, ItemStack item, int fortune, List drops); - @Override - public String toCodename() { + default String toCodename() { return "BlockBreakHandler"; } } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockPlaceHandler.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockPlaceHandler.java index 50505b6b4..f43113319 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockPlaceHandler.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockPlaceHandler.java @@ -3,12 +3,12 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers; import org.bukkit.event.block.BlockPlaceEvent; import org.bukkit.inventory.ItemStack; -public abstract class BlockPlaceHandler extends ItemHandler { +@FunctionalInterface +public interface BlockPlaceHandler extends ItemHandler { - public abstract boolean onBlockPlace(BlockPlaceEvent e, ItemStack item); + boolean onBlockPlace(BlockPlaceEvent e, ItemStack item); - @Override - public String toCodename() { + default String toCodename() { return "BlockPlaceHandler"; } } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockTicker.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockTicker.java index 2ebb5b937..91406f144 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockTicker.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockTicker.java @@ -5,7 +5,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import org.bukkit.block.Block; -public abstract class BlockTicker extends ItemHandler { +public abstract class BlockTicker implements ItemHandler { public boolean unique = true; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BowShootHandler.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BowShootHandler.java index 2dc381ccf..36307c73f 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BowShootHandler.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BowShootHandler.java @@ -3,12 +3,12 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers; import org.bukkit.entity.LivingEntity; import org.bukkit.event.entity.EntityDamageByEntityEvent; -public abstract class BowShootHandler extends ItemHandler { +@FunctionalInterface +public interface BowShootHandler extends ItemHandler { - public abstract boolean onHit(EntityDamageByEntityEvent e, LivingEntity n); - - @Override - public String toCodename() { + boolean onHit(EntityDamageByEntityEvent e, LivingEntity n); + + default String toCodename() { return "BowShootHandler"; } } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/ItemHandler.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/ItemHandler.java index ce3bcc077..1786205e4 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/ItemHandler.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/ItemHandler.java @@ -1,6 +1,7 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers; -public abstract class ItemHandler { +@FunctionalInterface +public interface ItemHandler { - public abstract String toCodename(); + String toCodename(); } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/ItemInteractionHandler.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/ItemInteractionHandler.java index 75fb6bb47..bd164e656 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/ItemInteractionHandler.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/ItemInteractionHandler.java @@ -5,12 +5,12 @@ import me.mrCookieSlime.CSCoreLibPlugin.events.ItemUseEvent; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; -public abstract class ItemInteractionHandler extends ItemHandler { +@FunctionalInterface +public interface ItemInteractionHandler extends ItemHandler { - public abstract boolean onRightClick(ItemUseEvent e, Player p, ItemStack item); + boolean onRightClick(ItemUseEvent e, Player p, ItemStack item); - @Override - public String toCodename() { + default String toCodename() { return "ItemInteractionHandler"; } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/MultiBlockInteractionHandler.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/MultiBlockInteractionHandler.java index 2fdc01480..a5ef22571 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/MultiBlockInteractionHandler.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/MultiBlockInteractionHandler.java @@ -5,12 +5,12 @@ import me.mrCookieSlime.Slimefun.Objects.MultiBlock; import org.bukkit.block.Block; import org.bukkit.entity.Player; -public abstract class MultiBlockInteractionHandler extends ItemHandler { +@FunctionalInterface +public interface MultiBlockInteractionHandler extends ItemHandler { - public abstract boolean onInteract(Player p, MultiBlock mb, Block b); + boolean onInteract(Player p, MultiBlock mb, Block b); - @Override - public String toCodename() { + default String toCodename() { return "MultiBlockInteractionHandler"; } } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricDustWasher.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricDustWasher.java index f16e1169b..b60384487 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricDustWasher.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricDustWasher.java @@ -23,7 +23,7 @@ import org.bukkit.inventory.meta.Damageable; import org.bukkit.inventory.meta.ItemMeta; public abstract class ElectricDustWasher extends AContainer { - + public ElectricDustWasher(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) { super(category, item, name, recipeType, recipe); } @@ -92,7 +92,7 @@ public abstract class ElectricDustWasher extends AContainer { } if (!empty_slot) return; } - + ItemStack adding = SlimefunItems.IRON_DUST; if (SlimefunStartup.chance(100, 25)) adding = SlimefunItems.GOLD_DUST; else if (SlimefunStartup.chance(100, 25)) adding = SlimefunItems.ALUMINUM_DUST; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/EnhancedCraftingTable.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/EnhancedCraftingTable.java new file mode 100644 index 000000000..1ee92f680 --- /dev/null +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/EnhancedCraftingTable.java @@ -0,0 +1,175 @@ +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines; + +import java.util.List; +import java.util.UUID; + +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.Sound; +import org.bukkit.block.Block; +import org.bukkit.block.BlockFace; +import org.bukkit.block.Dispenser; +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.general.Inventory.Item.CustomItem; +import me.mrCookieSlime.Slimefun.Lists.Categories; +import me.mrCookieSlime.Slimefun.Lists.RecipeType; +import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunBackpack; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunMachine; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.MultiBlockInteractionHandler; +import me.mrCookieSlime.Slimefun.Setup.Messages; +import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; +import me.mrCookieSlime.Slimefun.api.PlayerProfile; +import me.mrCookieSlime.Slimefun.api.Slimefun; + +public class EnhancedCraftingTable extends SlimefunMachine { + + public EnhancedCraftingTable() { + super( + Categories.MACHINES_1, + SlimefunItems.ENHANCED_CRAFTING_TABLE, + "ENHANCED_CRAFTING_TABLE", + new ItemStack[] {null, null, null, null, new ItemStack(Material.CRAFTING_TABLE), null, null, new ItemStack(Material.DISPENSER), null}, + new ItemStack[0], + Material.CRAFTING_TABLE + ); + } + + @Override + public void register() { + register(true, onInteract()); + } + + private MultiBlockInteractionHandler onInteract() { + return (p, mb, b) -> { + if (mb.isMultiBlock(this)) { + if (CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true)) { + if (Slimefun.hasUnlocked(p, getItem(), true)) { + // Objects dispBlock and disp have been split up, in order to add the output chest functionallity, which is the only functionallity + // that is dependant on the dispenser's block methods. + // the Dispenser disp still remains the same though, and as such doesn't break any existing code which involves said object. + Block dispBlock = b.getRelative(BlockFace.DOWN); + Dispenser disp = (Dispenser) dispBlock.getState(); + Inventory inv = disp.getInventory(); + + List inputs = RecipeType.getRecipeInputList(this); + + for (int i = 0; i < inputs.size(); i++) { + boolean craft = true; + for (int j = 0; j < inv.getContents().length; j++) { + if (!SlimefunManager.isItemSimiliar(inv.getContents()[j], inputs.get(i)[j], true)) { + if (SlimefunItem.getByItem(inputs.get(i)[j]) instanceof SlimefunBackpack) { + if (!SlimefunManager.isItemSimiliar(inv.getContents()[j], inputs.get(i)[j], false)) { + craft = false; + break; + } + } + else { + craft = false; + break; + } + } + } + + if (craft) { + final ItemStack adding = RecipeType.getRecipeOutputList(this, inputs.get(i)).clone(); + if (Slimefun.hasUnlocked(p, adding, true)) { + Inventory inv2 = Bukkit.createInventory(null, 9, "test"); + for (int j = 0; j < inv.getContents().length; j++) { + inv2.setItem(j, inv.getContents()[j] != null ? (inv.getContents()[j].getAmount() > 1 ? new CustomItem(inv.getContents()[j], inv.getContents()[j].getAmount() - 1): null): null); + } + + Inventory outputInv = SlimefunMachine.findValidOutputInv(adding, dispBlock, inv, inv2); + + if (outputInv != null) { + SlimefunItem sfItem = SlimefunItem.getByItem(adding); + if (sfItem instanceof SlimefunBackpack) { + ItemStack backpack = null; + + for (int j = 0; j < 9; j++) { + if (inv.getContents()[j] != null) { + if (inv.getContents()[j].getType() != Material.AIR) { + if (SlimefunItem.getByItem(inv.getContents()[j]) instanceof SlimefunBackpack) { + backpack = inv.getContents()[j]; + break; + } + } + } + } + String id = ""; + int size = ((SlimefunBackpack) sfItem).size; + + if (backpack != null) { + for (String line: backpack.getItemMeta().getLore()) { + if (line.startsWith(ChatColor.translateAlternateColorCodes('&', "&7ID: ")) && line.contains("#")) { + id = line.replace(ChatColor.translateAlternateColorCodes('&', "&7ID: "), ""); + PlayerProfile.fromUUID(UUID.fromString(id.split("#")[0])).getBackpack(Integer.parseInt(id.split("#")[1])).setSize(size); + break; + } + } + } + + if (id.equals("")) { + for (int line = 0; line < adding.getItemMeta().getLore().size(); line++) { + if (adding.getItemMeta().getLore().get(line).equals(ChatColor.translateAlternateColorCodes('&', "&7ID: "))) { + int backpackID = PlayerProfile.fromUUID(p.getUniqueId()).createBackpack(size).getID(); + + ItemMeta im = adding.getItemMeta(); + List lore = im.getLore(); + lore.set(line, lore.get(line).replace("", p.getUniqueId() + "#" + backpackID)); + im.setLore(lore); + adding.setItemMeta(im); + break; + } + } + } + else { + for (int line = 0; line < adding.getItemMeta().getLore().size(); line++) { + if (adding.getItemMeta().getLore().get(line).equals(ChatColor.translateAlternateColorCodes('&', "&7ID: "))) { + ItemMeta im = adding.getItemMeta(); + List lore = im.getLore(); + lore.set(line, lore.get(line).replace("", id)); + im.setLore(lore); + adding.setItemMeta(im); + break; + } + } + } + } + + + for (int j = 0; j < 9; j++) { + if (inv.getContents()[j] != null) { + if (inv.getContents()[j].getType() != Material.AIR) { + if (inv.getContents()[j].getType().toString().endsWith("_BUCKET")) inv.setItem(j, new ItemStack(Material.BUCKET)); + else if (inv.getContents()[j].getAmount() > 1) inv.setItem(j, new CustomItem(inv.getContents()[j], inv.getContents()[j].getAmount() - 1)); + else inv.setItem(j, null); + } + } + } + p.getWorld().playSound(b.getLocation(), Sound.BLOCK_WOODEN_BUTTON_CLICK_ON, 1, 1); + + outputInv.addItem(adding); + + } + else Messages.local.sendTranslation(p, "machines.full-inventory", true); + } + return true; + } + } + Messages.local.sendTranslation(p, "machines.pattern-not-found", true); + } + } + return true; + } + else return false; + }; + } + +} diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/MagicWorkbench.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/MagicWorkbench.java new file mode 100644 index 000000000..54cca6cfc --- /dev/null +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/MagicWorkbench.java @@ -0,0 +1,188 @@ +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines; + +import java.util.List; +import java.util.UUID; + +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.Effect; +import org.bukkit.Material; +import org.bukkit.Sound; +import org.bukkit.block.Block; +import org.bukkit.block.Dispenser; +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.general.Inventory.Item.CustomItem; +import me.mrCookieSlime.Slimefun.SlimefunStartup; +import me.mrCookieSlime.Slimefun.Lists.Categories; +import me.mrCookieSlime.Slimefun.Lists.RecipeType; +import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunBackpack; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunMachine; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.MultiBlockInteractionHandler; +import me.mrCookieSlime.Slimefun.Setup.Messages; +import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; +import me.mrCookieSlime.Slimefun.api.PlayerProfile; +import me.mrCookieSlime.Slimefun.api.Slimefun; + +public class MagicWorkbench extends SlimefunMachine { + + public MagicWorkbench() { + super( + Categories.MACHINES_1, + SlimefunItems.MAGIC_WORKBENCH, + "MAGIC_WORKBENCH", + new ItemStack[] {null, null, null, null, null, null, new ItemStack(Material.BOOKSHELF), new ItemStack(Material.CRAFTING_TABLE), new ItemStack(Material.DISPENSER)}, + new ItemStack[0], + Material.CRAFTING_TABLE + ); + } + + @Override + public void register() { + register(true, onInteract()); + } + + private MultiBlockInteractionHandler onInteract() { + return (p, mb, b) -> { + if (mb.isMultiBlock(this)) { + if (CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true)) { + if (Slimefun.hasUnlocked(p, getItem(), true)) { + Block dispBlock = null; + + // Maybe this could be implemented by instead looping over a BlockFace<> array? + if (b.getRelative(1, 0, 0).getType() == Material.DISPENSER) dispBlock = b.getRelative(1, 0, 0); + else if (b.getRelative(0, 0, 1).getType() == Material.DISPENSER) dispBlock = b.getRelative(0, 0, 1); + else if (b.getRelative(-1, 0, 0).getType() == Material.DISPENSER) dispBlock = b.getRelative(-1, 0, 0); + else if (b.getRelative(0, 0, -1).getType() == Material.DISPENSER) dispBlock = b.getRelative(0, 0, -1); + + Dispenser disp = (Dispenser) dispBlock.getState(); + final Inventory inv = disp.getInventory(); + List inputs = RecipeType.getRecipeInputList(this); + + for (int i = 0; i < inputs.size(); i++) { + boolean craft = true; + for (int j = 0; j < inv.getContents().length; j++) { + if (!SlimefunManager.isItemSimiliar(inv.getContents()[j], inputs.get(i)[j], true)) { + if (SlimefunItem.getByItem(inputs.get(i)[j]) instanceof SlimefunBackpack) { + if (!SlimefunManager.isItemSimiliar(inv.getContents()[j], inputs.get(i)[j], false)) { + craft = false; + break; + } + } + else { + craft = false; + break; + } + } + } + + if (craft) { + final ItemStack adding = RecipeType.getRecipeOutputList(this, inputs.get(i)).clone(); + if (Slimefun.hasUnlocked(p, adding, true)) { + Inventory inv2 = Bukkit.createInventory(null, 9, "test"); + + for (int j = 0; j < inv.getContents().length; j++) { + inv2.setItem(j, inv.getContents()[j] != null ? (inv.getContents()[j].getAmount() > 1 ? new CustomItem(inv.getContents()[j], inv.getContents()[j].getAmount() - 1): null): null); + } + + Inventory outputInv = SlimefunMachine.findValidOutputInv(adding, dispBlock, inv, inv2); + if (outputInv != null) { + SlimefunItem sfItem = SlimefunItem.getByItem(adding); + + if (sfItem instanceof SlimefunBackpack) { + ItemStack backpack = null; + + for (int j = 0; j < 9; j++) { + if (inv.getContents()[j] != null) { + if (inv.getContents()[j].getType() != Material.AIR) { + if (SlimefunItem.getByItem(inv.getContents()[j]) instanceof SlimefunBackpack) { + backpack = inv.getContents()[j]; + break; + } + } + } + } + + String id = ""; + int size = ((SlimefunBackpack) sfItem).size; + + if (backpack != null) { + for (String line: backpack.getItemMeta().getLore()) { + if (line.startsWith(ChatColor.translateAlternateColorCodes('&', "&7ID: ")) && line.contains("#")) { + id = line.replace(ChatColor.translateAlternateColorCodes('&', "&7ID: "), ""); + PlayerProfile.fromUUID(UUID.fromString(id.split("#")[0])).getBackpack(Integer.parseInt(id.split("#")[1])).setSize(size); + break; + } + } + } + + if (id.equals("")) { + for (int line = 0; line < adding.getItemMeta().getLore().size(); line++) { + if (adding.getItemMeta().getLore().get(line).equals(ChatColor.translateAlternateColorCodes('&', "&7ID: "))) { + int backpackID = PlayerProfile.fromUUID(p.getUniqueId()).createBackpack(size).getID(); + + ItemMeta im = adding.getItemMeta(); + List lore = im.getLore(); + lore.set(line, lore.get(line).replace("", p.getUniqueId() + "#" + backpackID)); + im.setLore(lore); + adding.setItemMeta(im); + break; + } + } + } + else { + for (int line = 0; line < adding.getItemMeta().getLore().size(); line++) { + if (adding.getItemMeta().getLore().get(line).equals(ChatColor.translateAlternateColorCodes('&', "&7ID: "))) { + ItemMeta im = adding.getItemMeta(); + List lore = im.getLore(); + lore.set(line, lore.get(line).replace("", id)); + im.setLore(lore); + adding.setItemMeta(im); + break; + } + } + } + } + + for (int j = 0; j < 9; j++) { + if (inv.getContents()[j] != null) { + if (inv.getContents()[j].getType() != Material.AIR) { + if (inv.getContents()[j].getAmount() > 1) inv.setItem(j, new CustomItem(inv.getContents()[j], inv.getContents()[j].getAmount() - 1)); + else inv.setItem(j, null); + } + } + } + for (int j = 0; j < 4; j++) { + int current = j; + Bukkit.getScheduler().runTaskLater(SlimefunStartup.instance, () -> { + 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 { + p.getWorld().playSound(p.getLocation(), Sound.ENTITY_ARROW_HIT_PLAYER, 1F, 1F); + outputInv.addItem(adding); + } + }, j*20L); + } + } + else Messages.local.sendTranslation(p, "machines.full-inventory", true); + } + return true; + } + } + Messages.local.sendTranslation(p, "machines.pattern-not-found", true); + } + } + return true; + } + else return false; + }; + } + +} diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/Smeltery.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/Smeltery.java new file mode 100644 index 000000000..c1c1882ae --- /dev/null +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/Smeltery.java @@ -0,0 +1,141 @@ +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines; + +import java.util.List; + +import org.bukkit.Effect; +import org.bukkit.Material; +import org.bukkit.Sound; +import org.bukkit.block.Block; +import org.bukkit.block.BlockFace; +import org.bukkit.block.Dispenser; +import org.bukkit.block.Hopper; +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.general.Inventory.Item.CustomItem; +import me.mrCookieSlime.Slimefun.SlimefunStartup; +import me.mrCookieSlime.Slimefun.Lists.Categories; +import me.mrCookieSlime.Slimefun.Lists.RecipeType; +import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunMachine; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.MultiBlockInteractionHandler; +import me.mrCookieSlime.Slimefun.Setup.Messages; +import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; +import me.mrCookieSlime.Slimefun.api.BlockStorage; +import me.mrCookieSlime.Slimefun.api.Slimefun; + +public class Smeltery extends SlimefunMachine { + + public Smeltery() { + super( + Categories.MACHINES_1, + SlimefunItems.SMELTERY, + "SMELTERY", + new ItemStack[] {null, new ItemStack(Material.NETHER_BRICK_FENCE), null, new ItemStack(Material.NETHER_BRICKS), new CustomItem(Material.DISPENSER, "Dispencer (Faced up)"), new ItemStack(Material.NETHER_BRICKS), null, new ItemStack(Material.FLINT_AND_STEEL), null}, + new ItemStack[] {SlimefunItems.IRON_DUST, new ItemStack(Material.IRON_INGOT)}, + Material.NETHER_BRICK_FENCE, + new String[] {"chance.fireBreak"}, new Integer[] {34} + ); + } + + @Override + public void register() { + register(true, onInteract()); + } + + private MultiBlockInteractionHandler onInteract() { + return (p, mb, b) -> { + if (mb.isMultiBlock(this)) { + if (CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true)) { + if (Slimefun.hasUnlocked(p, getItem(), true)) { + Block dispBlock = b.getRelative(BlockFace.DOWN); + Dispenser disp = (Dispenser) dispBlock.getState(); + Inventory inv = disp.getInventory(); + List inputs = RecipeType.getRecipeInputList(this); + + for (int i = 0; i < inputs.size(); i++) { + boolean craft = true; + for (ItemStack converting: inputs.get(i)) { + if (converting != null) { + for (int j = 0; j < inv.getContents().length; j++) { + if (j == (inv.getContents().length - 1) && !SlimefunManager.isItemSimiliar(converting, inv.getContents()[j], true)) { + craft = false; + break; + } + else if (SlimefunManager.isItemSimiliar(inv.getContents()[j], converting, true)) break; + } + } + } + + if (craft) { + ItemStack adding = RecipeType.getRecipeOutputList(this, inputs.get(i)).clone(); + if (Slimefun.hasUnlocked(p, adding, true)) { + Inventory outputInv = SlimefunMachine.findValidOutputInv(adding, dispBlock, inv); + if (outputInv != null) { + for (ItemStack removing: inputs.get(i)) { + if (removing != null) inv.removeItem(removing); + } + outputInv.addItem(adding); + p.getWorld().playSound(p.getLocation(), Sound.BLOCK_LAVA_POP, 1, 1); + p.getWorld().playEffect(b.getLocation(), Effect.MOBSPAWNER_FLAMES, 1); + + Hopper chamber = findHopper(dispBlock, BlockFace.NORTH, BlockFace.EAST, BlockFace.SOUTH, BlockFace.WEST); + + if (SlimefunStartup.chance(100, (Integer) Slimefun.getItemValue("SMELTERY", "chance.fireBreak"))) { + if (chamber != null) { + if (chamber.getInventory().contains(Material.FLINT_AND_STEEL)) { + ItemStack item = chamber.getInventory().getItem(chamber.getInventory().first(Material.FLINT_AND_STEEL)); + ItemMeta meta = item.getItemMeta(); + ((Damageable) meta).setDamage(((Damageable) meta).getDamage() + 1); + item.setItemMeta(meta); + + if (((Damageable) item.getItemMeta()).getDamage() >= item.getType().getMaxDurability()) { + item.setAmount(0); + p.getWorld().playSound(p.getLocation(), Sound.ENTITY_ITEM_BREAK, 1, 1); + } + + p.getWorld().playSound(p.getLocation(), Sound.ITEM_FLINTANDSTEEL_USE, 1, 1); + } + else { + Messages.local.sendTranslation(p, "machines.ignition-chamber-no-flint", true); + + Block fire = b.getRelative(BlockFace.DOWN).getRelative(BlockFace.DOWN); + fire.getWorld().playEffect(fire.getLocation(), Effect.STEP_SOUND, fire.getType()); + fire.setType(Material.AIR); + } + } + else { + Block fire = b.getRelative(BlockFace.DOWN).getRelative(BlockFace.DOWN); + fire.getWorld().playEffect(fire.getLocation(), Effect.STEP_SOUND, fire.getType()); + fire.setType(Material.AIR); + } + } + } + else Messages.local.sendTranslation(p, "machines.full-inventory", true); + } + return true; + } + } + Messages.local.sendTranslation(p, "machines.pattern-not-found", true); + } + } + return true; + } + else return false; + }; + } + + private Hopper findHopper(Block b, BlockFace... faces) { + for (BlockFace face: faces) { + if (b.getRelative(face).getType() == Material.HOPPER && BlockStorage.check(b.getRelative(face), "IGNITION_CHAMBER")) { + return (Hopper) b.getRelative(face).getState(); + } + } + + return null; + } + +} diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java index 45995f629..4a1884f16 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java @@ -20,7 +20,6 @@ import org.bukkit.block.BlockFace; import org.bukkit.block.Chest; import org.bukkit.block.CreatureSpawner; import org.bukkit.block.Dispenser; -import org.bukkit.block.Hopper; import org.bukkit.block.data.Ageable; import org.bukkit.block.data.Levelled; import org.bukkit.enchantments.Enchantment; @@ -43,7 +42,6 @@ import org.bukkit.event.entity.EntityDamageEvent.DamageCause; import org.bukkit.event.entity.FoodLevelChangeEvent; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.meta.Damageable; import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.potion.PotionEffect; import org.bukkit.potion.PotionEffectType; @@ -129,15 +127,18 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.ElectricGoldPan; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.ElectricIngotFactory; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.ElectricSmeltery; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.ElectrifiedCrucible; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.EnhancedCraftingTable; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.FluidPump; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.FoodComposter; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.FoodFabricator; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.Freezer; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.HeatedPressureChamber; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.MagicWorkbench; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.NetherDrill; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.OilPump; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.ReactorAccessPort; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.Refinery; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.Smeltery; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.TrashCan; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.WitherAssembler; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.XPCollector; @@ -162,7 +163,7 @@ public class SlimefunSetup { public static boolean legacy_ore_washer = false; - public static void setupItems() throws Exception { + public static void setupItems() { new SlimefunItem(Categories.WEAPONS, SlimefunItems.GRANDMAS_WALKING_STICK, "GRANDMAS_WALKING_STICK", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {null, new ItemStack(Material.OAK_LOG), null, null, new ItemStack(Material.OAK_LOG), null, null, new ItemStack(Material.OAK_LOG), null}) .register(true); @@ -194,139 +195,7 @@ public class SlimefunSetup { new ItemStack[] {SlimefunItems.LEAD_INGOT, new ItemStack(Material.HOPPER), SlimefunItems.LEAD_INGOT, SlimefunItems.LEAD_INGOT, new ItemStack(Material.CHEST), SlimefunItems.LEAD_INGOT, null, SlimefunItems.LEAD_INGOT, null}) .register(true); - new SlimefunMachine(Categories.MACHINES_1, SlimefunItems.ENHANCED_CRAFTING_TABLE, "ENHANCED_CRAFTING_TABLE", - new ItemStack[] {null, null, null, null, new ItemStack(Material.CRAFTING_TABLE), null, null, new ItemStack(Material.DISPENSER), null}, - new ItemStack[0], Material.CRAFTING_TABLE) - .register(true, new MultiBlockInteractionHandler() { - - @Override - public boolean onInteract(Player p, MultiBlock mb, Block b) { - - SlimefunMachine machine = (SlimefunMachine) SlimefunItem.getByID("ENHANCED_CRAFTING_TABLE"); - - if (mb.isMultiBlock(machine)) { - if (CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true)) { - if (Slimefun.hasUnlocked(p, machine.getItem(), true)) { - // Objects dispBlock and disp have been split up, in order to add the output chest functionallity, which is the only functionallity - // that is dependant on the dispenser's block methods. - // the Dispenser disp still remains the same though, and as such doesn't break any existing code which involves said object. - Block dispBlock = b.getRelative(BlockFace.DOWN); - Dispenser disp = (Dispenser) dispBlock.getState(); - Inventory inv = disp.getInventory(); - - List inputs = RecipeType.getRecipeInputList(machine); - - for (int i = 0; i < inputs.size(); i++) { - boolean craft = true; - for (int j = 0; j < inv.getContents().length; j++) { - if (!SlimefunManager.isItemSimiliar(inv.getContents()[j], inputs.get(i)[j], true)) { - if (SlimefunItem.getByItem(inputs.get(i)[j]) instanceof SlimefunBackpack) { - if (!SlimefunManager.isItemSimiliar(inv.getContents()[j], inputs.get(i)[j], false)) { - craft = false; - break; - } - } - else { - craft = false; - break; - } - } - } - - if (craft) { - final ItemStack adding = RecipeType.getRecipeOutputList(machine, inputs.get(i)).clone(); - if (Slimefun.hasUnlocked(p, adding, true)) { - Inventory inv2 = Bukkit.createInventory(null, 9, "test"); - for (int j = 0; j < inv.getContents().length; j++) { - inv2.setItem(j, inv.getContents()[j] != null ? (inv.getContents()[j].getAmount() > 1 ? new CustomItem(inv.getContents()[j], inv.getContents()[j].getAmount() - 1): null): null); - } - - Inventory outputInv = SlimefunMachine.findValidOutputInv(adding, dispBlock, inv, inv2); - - if (outputInv != null) { - SlimefunItem sfItem = SlimefunItem.getByItem(adding); - if (sfItem instanceof SlimefunBackpack) { - ItemStack backpack = null; - - for (int j = 0; j < 9; j++) { - if (inv.getContents()[j] != null) { - if (inv.getContents()[j].getType() != Material.AIR) { - if (SlimefunItem.getByItem(inv.getContents()[j]) instanceof SlimefunBackpack) { - backpack = inv.getContents()[j]; - break; - } - } - } - } - String id = ""; - int size = ((SlimefunBackpack) sfItem).size; - - if (backpack != null) { - for (String line: backpack.getItemMeta().getLore()) { - if (line.startsWith(ChatColor.translateAlternateColorCodes('&', "&7ID: ")) && line.contains("#")) { - id = line.replace(ChatColor.translateAlternateColorCodes('&', "&7ID: "), ""); - PlayerProfile.fromUUID(UUID.fromString(id.split("#")[0])).getBackpack(Integer.parseInt(id.split("#")[1])).setSize(size); - break; - } - } - } - - if (id.equals("")) { - for (int line = 0; line < adding.getItemMeta().getLore().size(); line++) { - if (adding.getItemMeta().getLore().get(line).equals(ChatColor.translateAlternateColorCodes('&', "&7ID: "))) { - int backpackID = PlayerProfile.fromUUID(p.getUniqueId()).createBackpack(size).getID(); - - ItemMeta im = adding.getItemMeta(); - List lore = im.getLore(); - lore.set(line, lore.get(line).replace("", p.getUniqueId() + "#" + backpackID)); - im.setLore(lore); - adding.setItemMeta(im); - break; - } - } - } - else { - for (int line = 0; line < adding.getItemMeta().getLore().size(); line++) { - if (adding.getItemMeta().getLore().get(line).equals(ChatColor.translateAlternateColorCodes('&', "&7ID: "))) { - ItemMeta im = adding.getItemMeta(); - List lore = im.getLore(); - lore.set(line, lore.get(line).replace("", id)); - im.setLore(lore); - adding.setItemMeta(im); - break; - } - } - } - } - - - for (int j = 0; j < 9; j++) { - if (inv.getContents()[j] != null) { - if (inv.getContents()[j].getType() != Material.AIR) { - if (inv.getContents()[j].getType().toString().endsWith("_BUCKET")) inv.setItem(j, new ItemStack(Material.BUCKET)); - else if (inv.getContents()[j].getAmount() > 1) inv.setItem(j, new CustomItem(inv.getContents()[j], inv.getContents()[j].getAmount() - 1)); - else inv.setItem(j, null); - } - } - } - p.getWorld().playSound(b.getLocation(), Sound.BLOCK_WOODEN_BUTTON_CLICK_ON, 1, 1); - - outputInv.addItem(adding); - - } - else Messages.local.sendTranslation(p, "machines.full-inventory", true); - } - return true; - } - } - Messages.local.sendTranslation(p, "machines.pattern-not-found", true); - } - } - return true; - } - else return false; - } - }); + new EnhancedCraftingTable().register(); new SlimefunItem(Categories.PORTABLE, SlimefunItems.PORTABLE_DUSTBIN, "PORTABLE_DUSTBIN", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {new ItemStack(Material.IRON_INGOT), new ItemStack(Material.IRON_INGOT), new ItemStack(Material.IRON_INGOT), new ItemStack(Material.IRON_INGOT), null, new ItemStack(Material.IRON_INGOT), new ItemStack(Material.IRON_INGOT), new ItemStack(Material.IRON_INGOT), new ItemStack(Material.IRON_INGOT)}) @@ -715,107 +584,7 @@ public class SlimefunSetup { new ItemStack[] {new ItemStack(Material.GRAVEL), null, null, null, null, null, null, null, null}) .register(true); - new SlimefunMachine(Categories.MACHINES_1, SlimefunItems.SMELTERY, "SMELTERY", - new ItemStack[] {null, new ItemStack(Material.NETHER_BRICK_FENCE), null, new ItemStack(Material.NETHER_BRICKS), new CustomItem(Material.DISPENSER, "Dispencer (Faced up)"), new ItemStack(Material.NETHER_BRICKS), null, new ItemStack(Material.FLINT_AND_STEEL), null}, - new ItemStack[] {SlimefunItems.IRON_DUST, new ItemStack(Material.IRON_INGOT)}, Material.NETHER_BRICK_FENCE, - new String[] {"chance.fireBreak"}, new Integer[] {34}) - .register(true, new MultiBlockInteractionHandler() { - - @Override - public boolean onInteract(Player p, MultiBlock mb, Block b) { - - SlimefunMachine machine = (SlimefunMachine) SlimefunItem.getByID("SMELTERY"); - - if (mb.isMultiBlock(machine)) { - if (CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true)) { - if (Slimefun.hasUnlocked(p, machine.getItem(), true)) { - Block dispBlock = b.getRelative(BlockFace.DOWN); - Dispenser disp = (Dispenser) dispBlock.getState(); - Inventory inv = disp.getInventory(); - List inputs = RecipeType.getRecipeInputList(machine); - - for (int i = 0; i < inputs.size(); i++) { - boolean craft = true; - for (ItemStack converting: inputs.get(i)) { - if (converting != null) { - for (int j = 0; j < inv.getContents().length; j++) { - if (j == (inv.getContents().length - 1) && !SlimefunManager.isItemSimiliar(converting, inv.getContents()[j], true)) { - craft = false; - break; - } - else if (SlimefunManager.isItemSimiliar(inv.getContents()[j], converting, true)) break; - } - } - } - - if (craft) { - ItemStack adding = RecipeType.getRecipeOutputList(machine, inputs.get(i)).clone(); - if (Slimefun.hasUnlocked(p, adding, true)) { - Inventory outputInv = SlimefunMachine.findValidOutputInv(adding, dispBlock, inv); - if (outputInv != null) { - for (ItemStack removing: inputs.get(i)) { - if (removing != null) inv.removeItem(removing); - } - outputInv.addItem(adding); - p.getWorld().playSound(p.getLocation(), Sound.BLOCK_LAVA_POP, 1, 1); - p.getWorld().playEffect(b.getLocation(), Effect.MOBSPAWNER_FLAMES, 1); - - Hopper chamber = findHopper(dispBlock, BlockFace.NORTH, BlockFace.EAST, BlockFace.SOUTH, BlockFace.WEST); - - if (SlimefunStartup.chance(100, (Integer) Slimefun.getItemValue("SMELTERY", "chance.fireBreak"))) { - if (chamber != null) { - if (chamber.getInventory().contains(Material.FLINT_AND_STEEL)) { - ItemStack item = chamber.getInventory().getItem(chamber.getInventory().first(Material.FLINT_AND_STEEL)); - ItemMeta meta = item.getItemMeta(); - ((Damageable) meta).setDamage(((Damageable) meta).getDamage() + 1); - item.setItemMeta(meta); - - if (((Damageable) item.getItemMeta()).getDamage() >= item.getType().getMaxDurability()) { - item.setAmount(0); - p.getWorld().playSound(p.getLocation(), Sound.ENTITY_ITEM_BREAK, 1, 1); - } - - p.getWorld().playSound(p.getLocation(), Sound.ITEM_FLINTANDSTEEL_USE, 1, 1); - } - else { - Messages.local.sendTranslation(p, "machines.ignition-chamber-no-flint", true); - - Block fire = b.getRelative(BlockFace.DOWN).getRelative(BlockFace.DOWN); - fire.getWorld().playEffect(fire.getLocation(), Effect.STEP_SOUND, fire.getType()); - fire.setType(Material.AIR); - } - } - else { - Block fire = b.getRelative(BlockFace.DOWN).getRelative(BlockFace.DOWN); - fire.getWorld().playEffect(fire.getLocation(), Effect.STEP_SOUND, fire.getType()); - fire.setType(Material.AIR); - } - } - } - else Messages.local.sendTranslation(p, "machines.full-inventory", true); - } - return true; - } - } - Messages.local.sendTranslation(p, "machines.pattern-not-found", true); - } - } - return true; - } - else return false; - } - - private Hopper findHopper(Block b, BlockFace... faces) { - for (BlockFace face: faces) { - if (b.getRelative(face).getType() == Material.HOPPER && BlockStorage.check(b.getRelative(face), "IGNITION_CHAMBER")) { - return (Hopper) b.getRelative(face).getState(); - } - } - - return null; - } - }); - + new Smeltery().register(); new SlimefunItem(Categories.MACHINES_1, SlimefunItems.IGNITION_CHAMBER, "IGNITION_CHAMBER", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {SlimefunItems.STEEL_PLATE, SlimefunItems.BASIC_CIRCUIT_BOARD, SlimefunItems.STEEL_PLATE, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.STEEL_PLATE, SlimefunItems.ELECTRIC_MOTOR, null, new ItemStack(Material.HOPPER), null}) @@ -1146,147 +915,7 @@ public class SlimefunSetup { } }); - new SlimefunMachine(Categories.MACHINES_1, SlimefunItems.MAGIC_WORKBENCH, "MAGIC_WORKBENCH", - new ItemStack[] {null, null, null, null, null, null, new ItemStack(Material.BOOKSHELF), new ItemStack(Material.CRAFTING_TABLE), new ItemStack(Material.DISPENSER)}, - new ItemStack[0], Material.CRAFTING_TABLE) - .register(true, new MultiBlockInteractionHandler() { - - @Override - public boolean onInteract(final Player p, MultiBlock mb, final Block b) { - - SlimefunMachine machine = (SlimefunMachine) SlimefunItem.getByID("MAGIC_WORKBENCH"); - - if (mb.isMultiBlock(machine)) { - if (CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true)) { - if (Slimefun.hasUnlocked(p, machine.getItem(), true)) { - Block dispBlock = null; - // Maybe this could be implemented by instead looping over a BlockFace<> array? - if (b.getRelative(1, 0, 0).getType() == Material.DISPENSER) dispBlock = b.getRelative(1, 0, 0); - else if (b.getRelative(0, 0, 1).getType() == Material.DISPENSER) dispBlock = b.getRelative(0, 0, 1); - else if (b.getRelative(-1, 0, 0).getType() == Material.DISPENSER) dispBlock = b.getRelative(-1, 0, 0); - else if (b.getRelative(0, 0, -1).getType() == Material.DISPENSER) dispBlock = b.getRelative(0, 0, -1); - - Dispenser disp = (Dispenser) dispBlock.getState(); - final Inventory inv = disp.getInventory(); - List inputs = RecipeType.getRecipeInputList(machine); - - for (int i = 0; i < inputs.size(); i++) { - boolean craft = true; - for (int j = 0; j < inv.getContents().length; j++) { - if (!SlimefunManager.isItemSimiliar(inv.getContents()[j], inputs.get(i)[j], true)) { - if (SlimefunItem.getByItem(inputs.get(i)[j]) instanceof SlimefunBackpack) { - if (!SlimefunManager.isItemSimiliar(inv.getContents()[j], inputs.get(i)[j], false)) { - craft = false; - break; - } - } - else { - craft = false; - break; - } - } - } - - if (craft) { - final ItemStack adding = RecipeType.getRecipeOutputList(machine, inputs.get(i)).clone(); - if (Slimefun.hasUnlocked(p, adding, true)) { - Inventory inv2 = Bukkit.createInventory(null, 9, "test"); - for (int j = 0; j < inv.getContents().length; j++) { - inv2.setItem(j, inv.getContents()[j] != null ? (inv.getContents()[j].getAmount() > 1 ? new CustomItem(inv.getContents()[j], inv.getContents()[j].getAmount() - 1): null): null); - } - Inventory outputInv = SlimefunMachine.findValidOutputInv(adding, dispBlock, inv, inv2); - if (outputInv != null) { - SlimefunItem sfItem = SlimefunItem.getByItem(adding); - - if (sfItem instanceof SlimefunBackpack) { - ItemStack backpack = null; - - for (int j = 0; j < 9; j++) { - if (inv.getContents()[j] != null) { - if (inv.getContents()[j].getType() != Material.AIR) { - if (SlimefunItem.getByItem(inv.getContents()[j]) instanceof SlimefunBackpack) { - backpack = inv.getContents()[j]; - break; - } - } - } - } - String id = ""; - int size = ((SlimefunBackpack) sfItem).size; - - if (backpack != null) { - for (String line: backpack.getItemMeta().getLore()) { - if (line.startsWith(ChatColor.translateAlternateColorCodes('&', "&7ID: ")) && line.contains("#")) { - id = line.replace(ChatColor.translateAlternateColorCodes('&', "&7ID: "), ""); - PlayerProfile.fromUUID(UUID.fromString(id.split("#")[0])).getBackpack(Integer.parseInt(id.split("#")[1])).setSize(size); - break; - } - } - } - - if (id.equals("")) { - for (int line = 0; line < adding.getItemMeta().getLore().size(); line++) { - if (adding.getItemMeta().getLore().get(line).equals(ChatColor.translateAlternateColorCodes('&', "&7ID: "))) { - int backpackID = PlayerProfile.fromUUID(p.getUniqueId()).createBackpack(size).getID(); - - ItemMeta im = adding.getItemMeta(); - List lore = im.getLore(); - lore.set(line, lore.get(line).replace("", p.getUniqueId() + "#" + backpackID)); - im.setLore(lore); - adding.setItemMeta(im); - break; - } - } - } - else { - for (int line = 0; line < adding.getItemMeta().getLore().size(); line++) { - if (adding.getItemMeta().getLore().get(line).equals(ChatColor.translateAlternateColorCodes('&', "&7ID: "))) { - ItemMeta im = adding.getItemMeta(); - List lore = im.getLore(); - lore.set(line, lore.get(line).replace("", id)); - im.setLore(lore); - adding.setItemMeta(im); - break; - } - } - } - } - - for (int j = 0; j < 9; j++) { - if (inv.getContents()[j] != null) { - if (inv.getContents()[j].getType() != Material.AIR) { - if (inv.getContents()[j].getAmount() > 1) inv.setItem(j, new CustomItem(inv.getContents()[j], inv.getContents()[j].getAmount() - 1)); - else inv.setItem(j, null); - } - } - } - for (int j = 0; j < 4; j++) { - int current = j; - Bukkit.getScheduler().runTaskLater(SlimefunStartup.instance, () -> { - 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 { - p.getWorld().playSound(p.getLocation(), Sound.ENTITY_ARROW_HIT_PLAYER, 1F, 1F); - outputInv.addItem(adding); - } - }, j*20L); - } - } - else Messages.local.sendTranslation(p, "machines.full-inventory", true); - } - return true; - } - } - Messages.local.sendTranslation(p, "machines.pattern-not-found", true); - } - } - return true; - } - else return false; - } - }); + new MagicWorkbench().register(); new SlimefunItem(Categories.MAGIC, SlimefunItems.STAFF_ELEMENTAL, "STAFF_ELEMENTAL", RecipeType.MAGIC_WORKBENCH, new ItemStack[] {null, SlimefunItems.MAGICAL_BOOK_COVER, SlimefunItems.MAGIC_LUMP_3, null, new ItemStack(Material.STICK), SlimefunItems.MAGICAL_BOOK_COVER, SlimefunItems.MAGIC_LUMP_3, null, null}) @@ -4545,8 +4174,7 @@ public class SlimefunSetup { new Teleporter(Categories.GPS, SlimefunItems.GPS_TELEPORTATION_MATRIX, "GPS_TELEPORTATION_MATRIX", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {SlimefunItems.GPS_TELEPORTER_PYLON, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.GPS_TELEPORTER_PYLON, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.GPS_CONTROL_PANEL, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.GPS_TELEPORTER_PYLON, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.GPS_TELEPORTER_PYLON}) { - - + @Override public void onInteract(final Player p, final Block b) throws Exception { GPSNetwork.openTeleporterGUI(p, UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner")), b, Slimefun.getGPSNetwork().getNetworkComplexity(UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner")))); @@ -4619,16 +4247,20 @@ public class SlimefunSetup { @Override public void uniqueTick() { + } @Override public void tick(Block b, SlimefunItem item, Config data) { if (b.getType() != Material.HOPPER) { // we're no longer a hopper, we were probably destroyed. skipping this tick. + BlockStorage.clearBlockInfo(b); return; } + ArmorStand hologram = InfusedHopper.getArmorStand(b, true); boolean sound = false; + for (Entity n: hologram.getNearbyEntities(3.5D, 3.5D, 3.5D)) { if (n instanceof Item && !n.hasMetadata("no_pickup") && n.getLocation().distance(hologram.getLocation()) > 0.4D) { n.setVelocity(new Vector(0, 0.1, 0)); @@ -4636,6 +4268,7 @@ public class SlimefunSetup { sound = true; } } + if (sound) b.getWorld().playSound(b.getLocation(), Sound.ENTITY_ENDERMAN_TELEPORT, 5F, 2F); } @@ -4655,6 +4288,7 @@ public class SlimefunSetup { @Override public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) { final ArmorStand hologram = InfusedHopper.getArmorStand(b, false); + if (hologram != null) { hologram.remove(); } diff --git a/src/me/mrCookieSlime/Slimefun/SlimefunStartup.java b/src/me/mrCookieSlime/Slimefun/SlimefunStartup.java index 8503fd91d..6b17a89ca 100644 --- a/src/me/mrCookieSlime/Slimefun/SlimefunStartup.java +++ b/src/me/mrCookieSlime/Slimefun/SlimefunStartup.java @@ -473,11 +473,13 @@ public class SlimefunStartup extends JavaPlugin { return whitelist; } + @Deprecated public static int randomize(int max) { if (max < 1) return 0; return CSCoreLib.randomizer().nextInt(max); } + @Deprecated public static boolean chance(int max, int percentage) { if (max < 1) return false; return CSCoreLib.randomizer().nextInt(max) <= percentage; diff --git a/src/me/mrCookieSlime/Slimefun/api/energy/EnergyTicker.java b/src/me/mrCookieSlime/Slimefun/api/energy/EnergyTicker.java index 2f41bd73e..9785745ce 100644 --- a/src/me/mrCookieSlime/Slimefun/api/energy/EnergyTicker.java +++ b/src/me/mrCookieSlime/Slimefun/api/energy/EnergyTicker.java @@ -6,7 +6,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.ItemHandler; import org.bukkit.Location; -public abstract class EnergyTicker extends ItemHandler { +public abstract class EnergyTicker implements ItemHandler { public abstract double generateEnergy(Location l, SlimefunItem item, Config data); public abstract boolean explode(Location l); diff --git a/src/me/mrCookieSlime/Slimefun/listeners/AutonomousToolsListener.java b/src/me/mrCookieSlime/Slimefun/listeners/AutonomousToolsListener.java index a9301e426..022f98d58 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/AutonomousToolsListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/AutonomousToolsListener.java @@ -1,12 +1,5 @@ package me.mrCookieSlime.Slimefun.listeners; -import me.mrCookieSlime.Slimefun.SlimefunStartup; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.AutonomousMachineHandler; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.AutonomousToolHandler; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.ItemHandler; -import me.mrCookieSlime.Slimefun.api.BlockStorage; - import org.bukkit.Material; import org.bukkit.block.Block; import org.bukkit.block.BlockFace; @@ -16,6 +9,12 @@ import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.block.BlockDispenseEvent; +import me.mrCookieSlime.Slimefun.SlimefunStartup; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.AutonomousMachineHandler; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.ItemHandler; +import me.mrCookieSlime.Slimefun.api.BlockStorage; + public class AutonomousToolsListener implements Listener { public AutonomousToolsListener(SlimefunStartup plugin) { @@ -39,13 +38,6 @@ public class AutonomousToolsListener implements Listener { if (((AutonomousMachineHandler) handler).onBlockDispense(e, dispenser, d, block, chest, machine)) break; } } - else { - for (int i = 0; i < d.getInventory().getContents().length; i++) { - for (ItemHandler handler: SlimefunItem.getHandlers("AutonomousToolHandler")) { - if (((AutonomousToolHandler) handler).onBlockDispense(e, dispenser, d, block, chest, i)) break; - } - } - } } } From 31c7c50f64adc050f97b24f7dc75481121cee6d4 Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Tue, 27 Aug 2019 21:43:43 +0200 Subject: [PATCH 012/169] Fixes #1049 --- .../handlers/BlockBreakHandler.java | 13 +++++---- .../handlers/BlockPlaceHandler.java | 13 +++++---- .../SlimefunItem/handlers/BlockTicker.java | 8 +++-- .../handlers/ItemInteractionHandler.java | 16 +++++----- .../MultiBlockInteractionHandler.java | 16 +++++----- .../handlers/AutonomousMachineHandler.java | 2 +- .../Objects/handlers/BlockBreakHandler.java | 16 ++++++++++ .../Objects/handlers/BlockPlaceHandler.java | 14 +++++++++ .../Objects/handlers/BlockTicker.java | 29 +++++++++++++++++++ .../handlers/BowShootHandler.java | 2 +- .../handlers/ItemHandler.java | 2 +- .../handlers/ItemInteractionHandler.java | 17 +++++++++++ .../MultiBlockInteractionHandler.java | 16 ++++++++++ 13 files changed, 134 insertions(+), 30 deletions(-) rename src/me/mrCookieSlime/Slimefun/Objects/{SlimefunItem => }/handlers/AutonomousMachineHandler.java (87%) create mode 100644 src/me/mrCookieSlime/Slimefun/Objects/handlers/BlockBreakHandler.java create mode 100644 src/me/mrCookieSlime/Slimefun/Objects/handlers/BlockPlaceHandler.java create mode 100644 src/me/mrCookieSlime/Slimefun/Objects/handlers/BlockTicker.java rename src/me/mrCookieSlime/Slimefun/Objects/{SlimefunItem => }/handlers/BowShootHandler.java (82%) rename src/me/mrCookieSlime/Slimefun/Objects/{SlimefunItem => }/handlers/ItemHandler.java (54%) create mode 100644 src/me/mrCookieSlime/Slimefun/Objects/handlers/ItemInteractionHandler.java create mode 100644 src/me/mrCookieSlime/Slimefun/Objects/handlers/MultiBlockInteractionHandler.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockBreakHandler.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockBreakHandler.java index 98834145f..276057433 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockBreakHandler.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockBreakHandler.java @@ -5,12 +5,15 @@ import java.util.List; import org.bukkit.event.block.BlockBreakEvent; import org.bukkit.inventory.ItemStack; -@FunctionalInterface -public interface BlockBreakHandler extends ItemHandler { +import me.mrCookieSlime.Slimefun.Objects.handlers.ItemHandler; + +@Deprecated +public abstract class BlockBreakHandler implements ItemHandler { - boolean onBlockBreak(BlockBreakEvent e, ItemStack item, int fortune, List drops); + public abstract boolean onBlockBreak(BlockBreakEvent e, ItemStack item, int fortune, List drops); - default String toCodename() { + @Override + public String toCodename() { return "BlockBreakHandler"; } -} +} \ No newline at end of file diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockPlaceHandler.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockPlaceHandler.java index f43113319..bb635b5e1 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockPlaceHandler.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockPlaceHandler.java @@ -3,12 +3,15 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers; import org.bukkit.event.block.BlockPlaceEvent; import org.bukkit.inventory.ItemStack; -@FunctionalInterface -public interface BlockPlaceHandler extends ItemHandler { +import me.mrCookieSlime.Slimefun.Objects.handlers.ItemHandler; + +@Deprecated +public abstract class BlockPlaceHandler implements ItemHandler { - boolean onBlockPlace(BlockPlaceEvent e, ItemStack item); + public abstract boolean onBlockPlace(BlockPlaceEvent e, ItemStack item); - default String toCodename() { + @Override + public String toCodename() { return "BlockPlaceHandler"; } -} +} \ No newline at end of file diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockTicker.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockTicker.java index 91406f144..348207e45 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockTicker.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockTicker.java @@ -1,10 +1,12 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers; -import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; - import org.bukkit.block.Block; +import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; +import me.mrCookieSlime.Slimefun.Objects.handlers.ItemHandler; + +@Deprecated public abstract class BlockTicker implements ItemHandler { public boolean unique = true; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/ItemInteractionHandler.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/ItemInteractionHandler.java index bd164e656..cd17546bf 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/ItemInteractionHandler.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/ItemInteractionHandler.java @@ -1,17 +1,19 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers; -import me.mrCookieSlime.CSCoreLibPlugin.events.ItemUseEvent; - import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; -@FunctionalInterface -public interface ItemInteractionHandler extends ItemHandler { +import me.mrCookieSlime.CSCoreLibPlugin.events.ItemUseEvent; +import me.mrCookieSlime.Slimefun.Objects.handlers.ItemHandler; + +@Deprecated +public abstract class ItemInteractionHandler implements ItemHandler { - boolean onRightClick(ItemUseEvent e, Player p, ItemStack item); + public abstract boolean onRightClick(ItemUseEvent e, Player p, ItemStack item); - default String toCodename() { + @Override + public String toCodename() { return "ItemInteractionHandler"; } -} +} \ No newline at end of file diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/MultiBlockInteractionHandler.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/MultiBlockInteractionHandler.java index a5ef22571..d594cf746 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/MultiBlockInteractionHandler.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/MultiBlockInteractionHandler.java @@ -1,16 +1,18 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers; -import me.mrCookieSlime.Slimefun.Objects.MultiBlock; - import org.bukkit.block.Block; import org.bukkit.entity.Player; -@FunctionalInterface -public interface MultiBlockInteractionHandler extends ItemHandler { +import me.mrCookieSlime.Slimefun.Objects.MultiBlock; +import me.mrCookieSlime.Slimefun.Objects.handlers.ItemHandler; + +@Deprecated +public abstract class MultiBlockInteractionHandler implements ItemHandler { - boolean onInteract(Player p, MultiBlock mb, Block b); + public abstract boolean onInteract(Player p, MultiBlock mb, Block b); - default String toCodename() { + @Override + public String toCodename() { return "MultiBlockInteractionHandler"; } -} +} \ No newline at end of file diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/AutonomousMachineHandler.java b/src/me/mrCookieSlime/Slimefun/Objects/handlers/AutonomousMachineHandler.java similarity index 87% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/AutonomousMachineHandler.java rename to src/me/mrCookieSlime/Slimefun/Objects/handlers/AutonomousMachineHandler.java index 078c674ed..9e5c26e2f 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/AutonomousMachineHandler.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/handlers/AutonomousMachineHandler.java @@ -1,4 +1,4 @@ -package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers; +package me.mrCookieSlime.Slimefun.Objects.handlers; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/handlers/BlockBreakHandler.java b/src/me/mrCookieSlime/Slimefun/Objects/handlers/BlockBreakHandler.java new file mode 100644 index 000000000..908a5a716 --- /dev/null +++ b/src/me/mrCookieSlime/Slimefun/Objects/handlers/BlockBreakHandler.java @@ -0,0 +1,16 @@ +package me.mrCookieSlime.Slimefun.Objects.handlers; + +import java.util.List; + +import org.bukkit.event.block.BlockBreakEvent; +import org.bukkit.inventory.ItemStack; + +@FunctionalInterface +public interface BlockBreakHandler extends ItemHandler { + + boolean onBlockBreak(BlockBreakEvent e, ItemStack item, int fortune, List drops); + + default String toCodename() { + return "BlockBreakHandler"; + } +} diff --git a/src/me/mrCookieSlime/Slimefun/Objects/handlers/BlockPlaceHandler.java b/src/me/mrCookieSlime/Slimefun/Objects/handlers/BlockPlaceHandler.java new file mode 100644 index 000000000..1602bf63a --- /dev/null +++ b/src/me/mrCookieSlime/Slimefun/Objects/handlers/BlockPlaceHandler.java @@ -0,0 +1,14 @@ +package me.mrCookieSlime.Slimefun.Objects.handlers; + +import org.bukkit.event.block.BlockPlaceEvent; +import org.bukkit.inventory.ItemStack; + +@FunctionalInterface +public interface BlockPlaceHandler extends ItemHandler { + + boolean onBlockPlace(BlockPlaceEvent e, ItemStack item); + + default String toCodename() { + return "BlockPlaceHandler"; + } +} diff --git a/src/me/mrCookieSlime/Slimefun/Objects/handlers/BlockTicker.java b/src/me/mrCookieSlime/Slimefun/Objects/handlers/BlockTicker.java new file mode 100644 index 000000000..da3732d5e --- /dev/null +++ b/src/me/mrCookieSlime/Slimefun/Objects/handlers/BlockTicker.java @@ -0,0 +1,29 @@ +package me.mrCookieSlime.Slimefun.Objects.handlers; + +import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; + +import org.bukkit.block.Block; + +public abstract class BlockTicker implements ItemHandler { + + public boolean unique = true; + + public void update() { + if (unique) { + uniqueTick(); + unique = false; + } + } + + + public abstract boolean isSynchronized(); + public abstract void uniqueTick(); + public abstract void tick(Block b, SlimefunItem item, Config data); + + @Override + public String toCodename() { + return "BlockTicker"; + } + +} diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BowShootHandler.java b/src/me/mrCookieSlime/Slimefun/Objects/handlers/BowShootHandler.java similarity index 82% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BowShootHandler.java rename to src/me/mrCookieSlime/Slimefun/Objects/handlers/BowShootHandler.java index 36307c73f..27df1a474 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BowShootHandler.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/handlers/BowShootHandler.java @@ -1,4 +1,4 @@ -package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers; +package me.mrCookieSlime.Slimefun.Objects.handlers; import org.bukkit.entity.LivingEntity; import org.bukkit.event.entity.EntityDamageByEntityEvent; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/ItemHandler.java b/src/me/mrCookieSlime/Slimefun/Objects/handlers/ItemHandler.java similarity index 54% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/ItemHandler.java rename to src/me/mrCookieSlime/Slimefun/Objects/handlers/ItemHandler.java index 1786205e4..1abe961cf 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/ItemHandler.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/handlers/ItemHandler.java @@ -1,4 +1,4 @@ -package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers; +package me.mrCookieSlime.Slimefun.Objects.handlers; @FunctionalInterface public interface ItemHandler { diff --git a/src/me/mrCookieSlime/Slimefun/Objects/handlers/ItemInteractionHandler.java b/src/me/mrCookieSlime/Slimefun/Objects/handlers/ItemInteractionHandler.java new file mode 100644 index 000000000..f50ded287 --- /dev/null +++ b/src/me/mrCookieSlime/Slimefun/Objects/handlers/ItemInteractionHandler.java @@ -0,0 +1,17 @@ +package me.mrCookieSlime.Slimefun.Objects.handlers; + +import me.mrCookieSlime.CSCoreLibPlugin.events.ItemUseEvent; + +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; + +@FunctionalInterface +public interface ItemInteractionHandler extends ItemHandler { + + boolean onRightClick(ItemUseEvent e, Player p, ItemStack item); + + default String toCodename() { + return "ItemInteractionHandler"; + } + +} diff --git a/src/me/mrCookieSlime/Slimefun/Objects/handlers/MultiBlockInteractionHandler.java b/src/me/mrCookieSlime/Slimefun/Objects/handlers/MultiBlockInteractionHandler.java new file mode 100644 index 000000000..db3d673b7 --- /dev/null +++ b/src/me/mrCookieSlime/Slimefun/Objects/handlers/MultiBlockInteractionHandler.java @@ -0,0 +1,16 @@ +package me.mrCookieSlime.Slimefun.Objects.handlers; + +import me.mrCookieSlime.Slimefun.Objects.MultiBlock; + +import org.bukkit.block.Block; +import org.bukkit.entity.Player; + +@FunctionalInterface +public interface MultiBlockInteractionHandler extends ItemHandler { + + boolean onInteract(Player p, MultiBlock mb, Block b); + + default String toCodename() { + return "MultiBlockInteractionHandler"; + } +} From 87ff5fdbc2f6b473343945957862922f75fd73e3 Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Tue, 27 Aug 2019 21:46:50 +0200 Subject: [PATCH 013/169] Pushing missing files --- .../Slimefun/Objects/Category.java | 1 + .../Objects/SlimefunItem/EnhancedFurnace.java | 2 +- .../Objects/SlimefunItem/SlimefunItem.java | 4 +- .../Objects/SlimefunItem/SoulboundItem.java | 7 + .../Objects/SlimefunItem/Talisman.java | 18 +-- .../abstractItems/AContainer.java | 97 +++---------- .../SlimefunItem/abstractItems/AFarm.java | 2 +- .../abstractItems/MachineFuel.java | 6 +- .../machines/AnimalGrowthAccelerator.java | 2 +- .../SlimefunItem/machines/AutoBreeder.java | 2 +- .../machines/AutomatedCraftingChamber.java | 2 +- .../machines/CropGrowthAccelerator.java | 2 +- .../machines/ElectricDustWasher.java | 27 ++-- .../machines/EnhancedCraftingTable.java | 2 +- .../SlimefunItem/machines/FluidPump.java | 2 +- .../machines/HeatedPressureChamber.java | 2 +- .../SlimefunItem/machines/MagicWorkbench.java | 2 +- .../SlimefunItem/machines/OreWasher.java | 124 +++++++++++++++++ .../SlimefunItem/machines/Smeltery.java | 2 +- .../SlimefunItem/machines/TrashCan.java | 2 +- .../machines/WitherAssembler.java | 2 +- .../SlimefunItem/machines/XPCollector.java | 2 +- .../Slimefun/Objects/tasks/JetBootsTask.java | 4 +- .../Slimefun/Objects/tasks/RainbowTicker.java | 12 +- .../Slimefun/Objects/tasks/SlimefunTask.java | 3 +- .../Slimefun/Setup/SlimefunSetup.java | 131 +++--------------- .../Slimefun/SlimefunStartup.java | 8 +- .../androids/ProgrammableAndroid.java | 2 +- .../Slimefun/api/TickerTask.java | 2 +- .../Slimefun/api/energy/EnergyTicker.java | 2 +- .../api/inventory/BlockMenuPreset.java | 2 +- .../listeners/AutonomousToolsListener.java | 4 +- .../Slimefun/listeners/BlockListener.java | 4 +- .../Slimefun/listeners/BowListener.java | 4 +- .../Slimefun/listeners/ItemListener.java | 4 +- .../Slimefun/listeners/ToolListener.java | 6 +- 36 files changed, 242 insertions(+), 258 deletions(-) create mode 100644 src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/OreWasher.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/Category.java b/src/me/mrCookieSlime/Slimefun/Objects/Category.java index 3c31ed8f6..fa5c5a2c8 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/Category.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/Category.java @@ -79,6 +79,7 @@ public class Category { if (((SeasonCategory) this).isUnlocked()) Slimefun.current_categories.add(this); } else Slimefun.current_categories.add(this); + Collections.sort(Slimefun.current_categories, new CategorySorter()); } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/EnhancedFurnace.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/EnhancedFurnace.java index 324db7244..c5ae45b9e 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/EnhancedFurnace.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/EnhancedFurnace.java @@ -4,7 +4,7 @@ import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config; import me.mrCookieSlime.Slimefun.SlimefunStartup; import me.mrCookieSlime.Slimefun.Lists.Categories; import me.mrCookieSlime.Slimefun.Lists.RecipeType; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.BlockTicker; +import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker; import org.bukkit.block.Block; import org.bukkit.block.Furnace; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java index 92d20a74e..8ad6c802a 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java @@ -21,8 +21,8 @@ import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.Research; import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.BlockTicker; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.ItemHandler; +import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker; +import me.mrCookieSlime.Slimefun.Objects.handlers.ItemHandler; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.ancient_altar.AltarRecipe; import me.mrCookieSlime.Slimefun.api.BlockStorage; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SoulboundItem.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SoulboundItem.java index b850bed87..1dd8bbff6 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SoulboundItem.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SoulboundItem.java @@ -5,11 +5,18 @@ import me.mrCookieSlime.Slimefun.Objects.Category; import org.bukkit.inventory.ItemStack; +/** + * Represents an Item that will not drop on death. + * + * @author TheBusyBiscuit + * + */ public class SoulboundItem extends SlimefunItem { public SoulboundItem(Category category, ItemStack item, String id, ItemStack[] recipe) { super(category, item, id, RecipeType.MAGIC_WORKBENCH, recipe); } + public SoulboundItem(Category category, ItemStack item, String id, RecipeType type, ItemStack[] recipe) { super(category, item, id, type, recipe); } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/Talisman.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/Talisman.java index 78bbfd972..11ec3e485 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/Talisman.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/Talisman.java @@ -2,14 +2,7 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem; import java.util.ArrayList; import java.util.List; - -import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; -import me.mrCookieSlime.Slimefun.SlimefunStartup; -import me.mrCookieSlime.Slimefun.Lists.Categories; -import me.mrCookieSlime.Slimefun.Lists.RecipeType; -import me.mrCookieSlime.Slimefun.Objects.Research; -import me.mrCookieSlime.Slimefun.Setup.Messages; -import me.mrCookieSlime.Slimefun.api.Slimefun; +import java.util.Random; import org.bukkit.ChatColor; import org.bukkit.entity.Player; @@ -23,6 +16,13 @@ import org.bukkit.event.player.PlayerEvent; import org.bukkit.inventory.ItemStack; import org.bukkit.potion.PotionEffect; +import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; +import me.mrCookieSlime.Slimefun.Lists.Categories; +import me.mrCookieSlime.Slimefun.Lists.RecipeType; +import me.mrCookieSlime.Slimefun.Objects.Research; +import me.mrCookieSlime.Slimefun.Setup.Messages; +import me.mrCookieSlime.Slimefun.api.Slimefun; + /** * @since 4.0 */ @@ -84,7 +84,7 @@ public class Talisman extends SlimefunItem { } Talisman talisman = (Talisman) item; - if (!SlimefunStartup.chance(100, talisman.getChance())) { + if (new Random().nextInt(100) < talisman.getChance()) { return false; } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AContainer.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AContainer.java index ddff62b43..0c8a2c612 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AContainer.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AContainer.java @@ -26,7 +26,7 @@ import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.BlockTicker; +import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.api.BlockStorage; import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock; @@ -36,10 +36,10 @@ import me.mrCookieSlime.Slimefun.api.item_transport.ItemTransportFlow; public abstract class AContainer extends SlimefunItem { - public static Map processing = new HashMap(); - public static Map progress = new HashMap(); + public static Map processing = new HashMap<>(); + public static Map progress = new HashMap<>(); - protected List recipes = new ArrayList(); + protected List recipes = new ArrayList<>(); private static final int[] border = {0, 1, 2, 3, 4, 5, 6, 7, 8, 13, 31, 36, 37, 38, 39, 40, 41, 42, 43, 44}; private static final int[] border_in = {9, 10, 11, 12, 18, 21, 27, 28, 29, 30}; @@ -104,84 +104,24 @@ public abstract class AContainer extends SlimefunItem { } public AContainer(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe, ItemStack recipeOutput) { - super(category, item, id, recipeType, recipe, recipeOutput); - - new BlockMenuPreset(id, getInventoryTitle()) { - - @Override - public void init() { - constructMenu(this); - } - - @Override - public void newInstance(BlockMenu menu, Block b) { - } - - @Override - public boolean canOpen(Block b, Player p) { - return p.hasPermission("slimefun.inventory.bypass") || CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true); - } - - @Override - public int[] getSlotsAccessedByItemTransport(ItemTransportFlow flow) { - if (flow == ItemTransportFlow.INSERT) return getInputSlots(); - else return getOutputSlots(); - } - }; - - registerBlockHandler(id, new SlimefunBlockHandler() { - - @Override - public void onPlace(Player p, Block b, SlimefunItem item) { - - } - - @Override - public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) { - BlockMenu inv = BlockStorage.getInventory(b); - if (inv != null) { - for (int slot: getInputSlots()) { - if (inv.getItemInSlot(slot) != null) { - b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot)); - inv.replaceExistingItem(slot, null); - } - } - for (int slot: getOutputSlots()) { - if (inv.getItemInSlot(slot) != null) { - b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot)); - inv.replaceExistingItem(slot, null); - } - } - } - processing.remove(b); - progress.remove(b); - return true; - } - }); - - this.registerDefaultRecipes(); + this(category, item, id, recipeType, recipe); + this.recipeOutput = recipeOutput; } protected void constructMenu(BlockMenuPreset preset) { for (int i : border) { - preset.addItem(i, new CustomItem(new ItemStack(Material.GRAY_STAINED_GLASS_PANE), " "), - (p, slot, item, action) -> false - ); - } - for (int i : border_in) { - preset.addItem(i, new CustomItem(new ItemStack(Material.CYAN_STAINED_GLASS_PANE), " "), - (p, slot, item, action) -> false - ); - } - for (int i : border_out) { - preset.addItem(i, new CustomItem(new ItemStack(Material.ORANGE_STAINED_GLASS_PANE), " "), - (p, slot, item, action) -> false - ); + preset.addItem(i, new CustomItem(new ItemStack(Material.GRAY_STAINED_GLASS_PANE), " "), (p, slot, item, action) -> false); } - preset.addItem(22, new CustomItem(new ItemStack(Material.BLACK_STAINED_GLASS_PANE), " "), - (p, slot, item, action) -> false - ); + for (int i : border_in) { + preset.addItem(i, new CustomItem(new ItemStack(Material.CYAN_STAINED_GLASS_PANE), " "), (p, slot, item, action) -> false); + } + + for (int i : border_out) { + preset.addItem(i, new CustomItem(new ItemStack(Material.ORANGE_STAINED_GLASS_PANE), " "), (p, slot, item, action) -> false); + } + + preset.addItem(22, new CustomItem(new ItemStack(Material.BLACK_STAINED_GLASS_PANE), " "), (p, slot, item, action) -> false); for (int i : getOutputSlots()) { preset.addMenuClickHandler(i, new AdvancedMenuClickHandler() { @@ -234,12 +174,15 @@ public abstract class AContainer extends SlimefunItem { private Inventory inject(Block b) { int size = BlockStorage.getInventory(b).toInventory().getSize(); Inventory inv = Bukkit.createInventory(null, size); + for (int i = 0; i < size; i++) { inv.setItem(i, new CustomItem(Material.COMMAND_BLOCK, " &4ALL YOUR PLACEHOLDERS ARE BELONG TO US")); } + for (int slot : getOutputSlots()) { inv.setItem(slot, BlockStorage.getInventory(b).getItemInSlot(slot)); } + return inv; } @@ -286,7 +229,7 @@ public abstract class AContainer extends SlimefunItem { ItemMeta im = item.getItemMeta(); ((Damageable) im).setDamage(MachineHelper.getDurability(item, timeleft, processing.get(b).getTicks())); im.setDisplayName(" "); - List lore = new ArrayList(); + List lore = new ArrayList<>(); lore.add(MachineHelper.getProgress(timeleft, processing.get(b).getTicks())); lore.add(""); lore.add(MachineHelper.getTimeLeft(timeleft / 2)); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AFarm.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AFarm.java index 284cd7a0d..d99d0232e 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AFarm.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AFarm.java @@ -19,7 +19,7 @@ import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.BlockTicker; +import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker; import me.mrCookieSlime.Slimefun.api.BlockStorage; import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/MachineFuel.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/MachineFuel.java index cff6d77b3..ad14d4ff4 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/MachineFuel.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/MachineFuel.java @@ -4,9 +4,9 @@ import org.bukkit.inventory.ItemStack; public class MachineFuel { - int seconds; - ItemStack fuel; - ItemStack output; + private int seconds; + private ItemStack fuel; + private ItemStack output; public MachineFuel(int seconds, ItemStack fuel) { this.seconds = seconds * 2; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AnimalGrowthAccelerator.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AnimalGrowthAccelerator.java index 87d5378ae..42122e098 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AnimalGrowthAccelerator.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AnimalGrowthAccelerator.java @@ -10,7 +10,7 @@ import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.BlockTicker; +import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.api.BlockStorage; import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoBreeder.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoBreeder.java index 4e14ec93e..38c9a6dc1 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoBreeder.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoBreeder.java @@ -19,7 +19,7 @@ import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.BlockTicker; +import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.api.BlockStorage; import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutomatedCraftingChamber.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutomatedCraftingChamber.java index 618d41d45..2f77795f4 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutomatedCraftingChamber.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutomatedCraftingChamber.java @@ -27,7 +27,7 @@ import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.BlockTicker; +import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker; import me.mrCookieSlime.Slimefun.api.BlockStorage; import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/CropGrowthAccelerator.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/CropGrowthAccelerator.java index 6b8f42246..9c61f8596 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/CropGrowthAccelerator.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/CropGrowthAccelerator.java @@ -20,7 +20,7 @@ import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.BlockTicker; +import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.api.BlockStorage; import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricDustWasher.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricDustWasher.java index b60384487..971e5a3da 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricDustWasher.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricDustWasher.java @@ -2,10 +2,16 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines; 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; -import me.mrCookieSlime.Slimefun.SlimefunStartup; import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; import me.mrCookieSlime.Slimefun.Objects.Category; @@ -16,12 +22,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 ElectricDustWasher extends AContainer { public ElectricDustWasher(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) { @@ -52,7 +52,7 @@ public abstract class ElectricDustWasher extends AContainer { ItemMeta im = item.getItemMeta(); ((Damageable) im).setDamage(MachineHelper.getDurability(item, timeleft, processing.get(b).getTicks())); im.setDisplayName(" "); - List lore = new ArrayList(); + List lore = new ArrayList<>(); lore.add(MachineHelper.getProgress(timeleft, processing.get(b).getTicks())); lore.add(""); lore.add(MachineHelper.getTimeLeft(timeleft / 2)); @@ -93,16 +93,7 @@ public abstract class ElectricDustWasher extends AContainer { if (!empty_slot) return; } - ItemStack adding = SlimefunItems.IRON_DUST; - if (SlimefunStartup.chance(100, 25)) adding = SlimefunItems.GOLD_DUST; - else if (SlimefunStartup.chance(100, 25)) adding = SlimefunItems.ALUMINUM_DUST; - else if (SlimefunStartup.chance(100, 25)) adding = SlimefunItems.COPPER_DUST; - else if (SlimefunStartup.chance(100, 25)) adding = SlimefunItems.ZINC_DUST; - else if (SlimefunStartup.chance(100, 25)) adding = SlimefunItems.TIN_DUST; - else if (SlimefunStartup.chance(100, 25)) adding = SlimefunItems.MAGNESIUM_DUST; - else if (SlimefunStartup.chance(100, 25)) adding = SlimefunItems.LEAD_DUST; - else if (SlimefunStartup.chance(100, 25)) adding = SlimefunItems.SILVER_DUST; - + ItemStack adding = OreWasher.items[new Random().nextInt(OreWasher.items.length)]; MachineRecipe r = new MachineRecipe(4 / getSpeed(), new ItemStack[0], new ItemStack[] {adding}); if (legacy_dust_washer && !fits(b, r.getOutput())) return; BlockStorage.getInventory(b).replaceExistingItem(slot, InvUtils.decreaseItem(BlockStorage.getInventory(b).getItemInSlot(slot), 1)); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/EnhancedCraftingTable.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/EnhancedCraftingTable.java index 1ee92f680..0917b46a5 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/EnhancedCraftingTable.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/EnhancedCraftingTable.java @@ -22,7 +22,7 @@ import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunBackpack; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunMachine; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.MultiBlockInteractionHandler; +import me.mrCookieSlime.Slimefun.Objects.handlers.MultiBlockInteractionHandler; import me.mrCookieSlime.Slimefun.Setup.Messages; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.api.PlayerProfile; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/FluidPump.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/FluidPump.java index 5e07466d2..10a1b803c 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/FluidPump.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/FluidPump.java @@ -26,7 +26,7 @@ import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecipe; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.BlockTicker; +import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.api.BlockStorage; import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/HeatedPressureChamber.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/HeatedPressureChamber.java index 2d0e051e1..d8e47667d 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/HeatedPressureChamber.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/HeatedPressureChamber.java @@ -24,7 +24,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineHelper; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecipe; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.BlockTicker; +import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.api.BlockStorage; import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/MagicWorkbench.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/MagicWorkbench.java index 54cca6cfc..8efcac737 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/MagicWorkbench.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/MagicWorkbench.java @@ -23,7 +23,7 @@ import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunBackpack; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunMachine; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.MultiBlockInteractionHandler; +import me.mrCookieSlime.Slimefun.Objects.handlers.MultiBlockInteractionHandler; import me.mrCookieSlime.Slimefun.Setup.Messages; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.api.PlayerProfile; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/OreWasher.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/OreWasher.java new file mode 100644 index 000000000..7623de0d9 --- /dev/null +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/OreWasher.java @@ -0,0 +1,124 @@ +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines; + +import java.util.Random; + +import org.bukkit.Effect; +import org.bukkit.Material; +import org.bukkit.Sound; +import org.bukkit.block.Block; +import org.bukkit.block.BlockFace; +import org.bukkit.block.Dispenser; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.ItemStack; + +import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib; +import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.InvUtils; +import me.mrCookieSlime.Slimefun.Lists.Categories; +import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunMachine; +import me.mrCookieSlime.Slimefun.Objects.handlers.MultiBlockInteractionHandler; +import me.mrCookieSlime.Slimefun.Setup.Messages; +import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; +import me.mrCookieSlime.Slimefun.api.Slimefun; + +public class OreWasher extends SlimefunMachine { + + public static boolean legacy; + public static ItemStack[] items; + + public OreWasher() { + super( + Categories.MACHINES_1, + SlimefunItems.ORE_WASHER, + "ORE_WASHER", + new ItemStack[] {null, new ItemStack(Material.DISPENSER), null, null, new ItemStack(Material.OAK_FENCE), null, null, new ItemStack(Material.CAULDRON), null}, + new ItemStack[] {SlimefunItems.SIFTED_ORE, SlimefunItems.IRON_DUST, SlimefunItems.SIFTED_ORE, SlimefunItems.GOLD_DUST, SlimefunItems.SIFTED_ORE, SlimefunItems.COPPER_DUST, SlimefunItems.SIFTED_ORE, SlimefunItems.TIN_DUST, SlimefunItems.SIFTED_ORE, SlimefunItems.ZINC_DUST, SlimefunItems.SIFTED_ORE, SlimefunItems.ALUMINUM_DUST, SlimefunItems.SIFTED_ORE, SlimefunItems.MAGNESIUM_DUST, SlimefunItems.SIFTED_ORE, SlimefunItems.LEAD_DUST, SlimefunItems.SIFTED_ORE, SlimefunItems.SILVER_DUST}, + Material.OAK_FENCE + ); + } + + @Override + public void register() { + register(true, onInteract()); + } + + private MultiBlockInteractionHandler onInteract() { + return (p, mb, b) -> { + if (mb.isMultiBlock(this)) { + if (CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true)) { + if (Slimefun.hasUnlocked(p, getItem(), true)) { + Block dispBlock = b.getRelative(BlockFace.UP); + Dispenser disp = (Dispenser) dispBlock.getState(); + Inventory inv = disp.getInventory(); + for (ItemStack current: inv.getContents()) { + if (current != null) { + if (SlimefunManager.isItemSimiliar(current, SlimefunItems.SIFTED_ORE, true)) { + ItemStack adding = items[new Random().nextInt(items.length)]; + Inventory outputInv = null; + + if (!legacy) { + // This is a fancy way of checking if there is empty space in the inv; by checking if an unobtainable item could fit in it. + // However, due to the way the method findValidOutputInv() functions, the dummyAdding will never actually be added to the real inventory, + // so it really doesn't matter what item the ItemStack is made by. SlimefunItems.DEBUG_FISH however, signals that it's + // not supposed to be given to the player. + ItemStack dummyAdding = SlimefunItems.DEBUG_FISH; + outputInv = SlimefunMachine.findValidOutputInv(dummyAdding, dispBlock, inv); + } + else outputInv = SlimefunMachine.findValidOutputInv(adding, dispBlock, inv); + + if (outputInv != null) { + ItemStack removing = current.clone(); + removing.setAmount(1); + inv.removeItem(removing); + outputInv.addItem(adding); + p.getWorld().playSound(b.getLocation(), Sound.ENTITY_PLAYER_SPLASH, 1, 1); + p.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, Material.WATER); + if (InvUtils.fits(outputInv, SlimefunItems.STONE_CHUNK)) outputInv.addItem(SlimefunItems.STONE_CHUNK); + } + else Messages.local.sendTranslation(p, "machines.full-inventory", true); + return true; + } + else if (SlimefunManager.isItemSimiliar(current, new ItemStack(Material.SAND, 4), false)) { + ItemStack adding = SlimefunItems.SALT; + Inventory outputInv = SlimefunMachine.findValidOutputInv(adding, dispBlock, inv); + + if (outputInv != null) { + ItemStack removing = current.clone(); + removing.setAmount(4); + inv.removeItem(removing); + outputInv.addItem(adding); + p.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, Material.WATER); + p.getWorld().playSound(b.getLocation(), Sound.ENTITY_PLAYER_SPLASH, 1, 1); + } + else Messages.local.sendTranslation(p, "machines.full-inventory", true); + + return true; + } + else if (SlimefunManager.isItemSimiliar(current, SlimefunItems.PULVERIZED_ORE, true)) { + ItemStack adding = SlimefunItems.PURE_ORE_CLUSTER; + Inventory outputInv = SlimefunMachine.findValidOutputInv(adding, dispBlock, inv); + + if (outputInv != null) { + ItemStack removing = current.clone(); + removing.setAmount(1); + inv.removeItem(removing); + outputInv.addItem(adding); + p.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, Material.WATER); + p.getWorld().playSound(b.getLocation(), Sound.ENTITY_PLAYER_SPLASH, 1, 1); + } + else Messages.local.sendTranslation(p, "machines.full-inventory", true); + + return true; + } + } + } + Messages.local.sendTranslation(p, "machines.unknown-material", true); + } + } + return true; + } + else return false; + }; + } + +} diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/Smeltery.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/Smeltery.java index c1c1882ae..17d478e72 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/Smeltery.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/Smeltery.java @@ -21,7 +21,7 @@ import me.mrCookieSlime.Slimefun.Lists.Categories; import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunMachine; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.MultiBlockInteractionHandler; +import me.mrCookieSlime.Slimefun.Objects.handlers.MultiBlockInteractionHandler; import me.mrCookieSlime.Slimefun.Setup.Messages; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.api.BlockStorage; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/TrashCan.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/TrashCan.java index cdde1b4d8..aea2b4669 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/TrashCan.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/TrashCan.java @@ -10,7 +10,7 @@ import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.BlockTicker; +import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker; import me.mrCookieSlime.Slimefun.api.BlockStorage; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/WitherAssembler.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/WitherAssembler.java index 828e6decd..4dbb9d338 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/WitherAssembler.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/WitherAssembler.java @@ -19,7 +19,7 @@ import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.BlockTicker; +import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.api.BlockStorage; import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/XPCollector.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/XPCollector.java index adff7cc08..f0232288c 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/XPCollector.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/XPCollector.java @@ -19,7 +19,7 @@ import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.BlockTicker; +import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker; import me.mrCookieSlime.Slimefun.api.BlockStorage; import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/tasks/JetBootsTask.java b/src/me/mrCookieSlime/Slimefun/Objects/tasks/JetBootsTask.java index c303c48e3..58e78c52f 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/tasks/JetBootsTask.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/tasks/JetBootsTask.java @@ -1,6 +1,7 @@ package me.mrCookieSlime.Slimefun.Objects.tasks; import java.text.DecimalFormat; +import java.util.Random; import org.bukkit.Bukkit; import org.bukkit.Effect; @@ -9,7 +10,6 @@ import org.bukkit.entity.Player; import org.bukkit.util.Vector; import me.mrCookieSlime.CSCoreLibPlugin.general.Player.PlayerInventory; -import me.mrCookieSlime.Slimefun.SlimefunStartup; import me.mrCookieSlime.Slimefun.api.energy.ItemEnergy; public class JetBootsTask extends SlimefunTask { @@ -34,7 +34,7 @@ public class JetBootsTask extends SlimefunTask { p.getWorld().playEffect(p.getLocation(), Effect.SMOKE, 1, 1); p.setFallDistance(0.0f); double gravity = 0.04; - double offset = SlimefunStartup.chance(100, 50) ? accuracy: -accuracy; + double offset = new Random().nextInt(2) == 1 ? accuracy: -accuracy; Vector vector = new Vector(p.getEyeLocation().getDirection().getX() * speed + offset, gravity, p.getEyeLocation().getDirection().getZ() * speed - offset); p.setVelocity(vector); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/tasks/RainbowTicker.java b/src/me/mrCookieSlime/Slimefun/Objects/tasks/RainbowTicker.java index 24627a2ce..01d25b2c6 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/tasks/RainbowTicker.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/tasks/RainbowTicker.java @@ -3,7 +3,7 @@ package me.mrCookieSlime.Slimefun.Objects.tasks; import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config; import me.mrCookieSlime.CSCoreLibPlugin.compatibility.MaterialHelper; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.BlockTicker; +import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker; import org.bukkit.block.Block; import org.bukkit.block.data.Waterlogged; @@ -28,17 +28,21 @@ public class RainbowTicker extends BlockTicker { public void tick(Block b, SlimefunItem item, Config data) { if (MaterialHelper.isWool(b.getType())) { b.setType(MaterialHelper.WoolColours[meta], false); - } else if (MaterialHelper.isStainedGlass(b.getType())) { + } + else if (MaterialHelper.isStainedGlass(b.getType())) { b.setType(MaterialHelper.StainedGlassColours[meta], false); - } else if (MaterialHelper.isStainedGlassPane(b.getType())){ + } + else if (MaterialHelper.isStainedGlassPane(b.getType())){ boolean waterlogged = ((Waterlogged) b.getBlockData()).isWaterlogged(); b.setType(MaterialHelper.StainedGlassPaneColours[meta], true); + if (waterlogged) { Waterlogged block = (Waterlogged) b.getBlockData(); block.setWaterlogged(true); b.setBlockData(block); } - } else if (MaterialHelper.isTerracotta(b.getType())){ + } + else if (MaterialHelper.isTerracotta(b.getType())){ b.setType(MaterialHelper.TerracottaColours[meta], false); } } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/tasks/SlimefunTask.java b/src/me/mrCookieSlime/Slimefun/Objects/tasks/SlimefunTask.java index 2a4f157e4..a7ba60ce7 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/tasks/SlimefunTask.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/tasks/SlimefunTask.java @@ -31,10 +31,11 @@ public abstract class SlimefunTask implements Runnable { * @return True if task was cancelled. */ protected boolean cancelTask(){ - if(Bukkit.getPlayer(uuid) == null || Bukkit.getPlayer(uuid).isDead() || !Bukkit.getPlayer(uuid).isSneaking()) { + if (Bukkit.getPlayer(uuid) == null || Bukkit.getPlayer(uuid).isDead() || !Bukkit.getPlayer(uuid).isSneaking()) { Bukkit.getScheduler().cancelTask(id); return true; } + return false; } diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java index 4a1884f16..00332de37 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java @@ -4,6 +4,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.HashSet; import java.util.List; +import java.util.Random; import java.util.Set; import java.util.UUID; @@ -102,13 +103,6 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AGenerator; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AReactor; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineFuel; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.Teleporter; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.AutonomousMachineHandler; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.BlockBreakHandler; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.BlockPlaceHandler; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.BlockTicker; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.BowShootHandler; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.ItemInteractionHandler; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.MultiBlockInteractionHandler; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.AdvancedCargoOutputNode; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.AnimalGrowthAccelerator; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.AutoAnvil; @@ -136,12 +130,20 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.HeatedPressureCha import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.MagicWorkbench; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.NetherDrill; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.OilPump; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.OreWasher; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.ReactorAccessPort; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.Refinery; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.Smeltery; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.TrashCan; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.WitherAssembler; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.XPCollector; +import me.mrCookieSlime.Slimefun.Objects.handlers.AutonomousMachineHandler; +import me.mrCookieSlime.Slimefun.Objects.handlers.BlockBreakHandler; +import me.mrCookieSlime.Slimefun.Objects.handlers.BlockPlaceHandler; +import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker; +import me.mrCookieSlime.Slimefun.Objects.handlers.BowShootHandler; +import me.mrCookieSlime.Slimefun.Objects.handlers.ItemInteractionHandler; +import me.mrCookieSlime.Slimefun.Objects.handlers.MultiBlockInteractionHandler; import me.mrCookieSlime.Slimefun.Objects.tasks.RainbowTicker; import me.mrCookieSlime.Slimefun.androids.AndroidType; import me.mrCookieSlime.Slimefun.androids.ProgrammableAndroid; @@ -161,8 +163,6 @@ import me.mrCookieSlime.Slimefun.listeners.AncientAltarListener; public class SlimefunSetup { - public static boolean legacy_ore_washer = false; - public static void setupItems() { new SlimefunItem(Categories.WEAPONS, SlimefunItems.GRANDMAS_WALKING_STICK, "GRANDMAS_WALKING_STICK", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {null, new ItemStack(Material.OAK_LOG), null, null, new ItemStack(Material.OAK_LOG), null, null, new ItemStack(Material.OAK_LOG), null}) @@ -559,17 +559,18 @@ public class SlimefunSetup { if (SlimefunManager.isItemSimiliar(item, SlimefunItems.GOLD_PAN, true)) { if (e.getClickedBlock() != null && e.getClickedBlock().getType() == Material.GRAVEL) { if (CSCoreLib.getLib().getProtectionManager().canBuild(p.getUniqueId(), e.getClickedBlock(), true)) { - List drops = new ArrayList(); - if (SlimefunStartup.chance(100, (Integer) Slimefun.getItemValue("GOLD_PAN", "chance.SIFTED_ORE"))) drops.add(SlimefunItems.SIFTED_ORE); - else if (SlimefunStartup.chance(100, (Integer) Slimefun.getItemValue("GOLD_PAN", "chance.CLAY"))) drops.add(new ItemStack(Material.CLAY_BALL)); - else if (SlimefunStartup.chance(100, (Integer) Slimefun.getItemValue("GOLD_PAN", "chance.FLINT"))) drops.add(new ItemStack(Material.FLINT)); - - + List drops = new ArrayList<>(); + Random random = new Random(); - e.getClickedBlock().getWorld().playEffect(e.getClickedBlock().getLocation(), Effect.STEP_SOUND, e.getClickedBlock().getType()); - e.getClickedBlock().setType(Material.AIR); - for (ItemStack drop: drops) { - e.getClickedBlock().getWorld().dropItemNaturally(e.getClickedBlock().getLocation(), drop); + if (random.nextInt(100) < (Integer) Slimefun.getItemValue("GOLD_PAN", "chance.SIFTED_ORE")) drops.add(SlimefunItems.SIFTED_ORE); + else if (random.nextInt(100) < (Integer) Slimefun.getItemValue("GOLD_PAN", "chance.CLAY")) drops.add(new ItemStack(Material.CLAY_BALL)); + else if (random.nextInt(100) < (Integer) Slimefun.getItemValue("GOLD_PAN", "chance.FLINT")) drops.add(new ItemStack(Material.FLINT)); + + e.getClickedBlock().getWorld().playEffect(e.getClickedBlock().getLocation(), Effect.STEP_SOUND, e.getClickedBlock().getType()); + e.getClickedBlock().setType(Material.AIR); + + for (ItemStack drop: drops) { + e.getClickedBlock().getWorld().dropItemNaturally(e.getClickedBlock().getLocation(), drop); } } } @@ -998,97 +999,7 @@ public class SlimefunSetup { new String[] {"mode.0.enabled", "mode.0.name", "mode.0.item", "mode.1.enabled", "mode.1.name", "mode.1.item", "mode.2.enabled", "mode.2.name", "mode.2.item", "mode.3.enabled", "mode.3.name", "mode.3.item", "mode.4.enabled", "mode.4.name", "mode.4.item"}, new Object[] {true, "Portable Crafter", "PORTABLE_CRAFTER", true, "Magic Eye of Ender", "MAGIC_EYE_OF_ENDER", true, "Wind Staff", "STAFF_ELEMENTAL_WIND", true, "Grappling Hook", "GRAPPLING_HOOK", true, "Gold Pan", "GOLD_PAN"}) .register(true); - new SlimefunMachine(Categories.MACHINES_1, SlimefunItems.ORE_WASHER, "ORE_WASHER", - new ItemStack[] {null, new ItemStack(Material.DISPENSER), null, null, new ItemStack(Material.OAK_FENCE), null, null, new ItemStack(Material.CAULDRON), null}, - new ItemStack[] {SlimefunItems.SIFTED_ORE, SlimefunItems.IRON_DUST, SlimefunItems.SIFTED_ORE, SlimefunItems.GOLD_DUST, SlimefunItems.SIFTED_ORE, SlimefunItems.COPPER_DUST, SlimefunItems.SIFTED_ORE, SlimefunItems.TIN_DUST, SlimefunItems.SIFTED_ORE, SlimefunItems.ZINC_DUST, SlimefunItems.SIFTED_ORE, SlimefunItems.ALUMINUM_DUST, SlimefunItems.SIFTED_ORE, SlimefunItems.MAGNESIUM_DUST, SlimefunItems.SIFTED_ORE, SlimefunItems.LEAD_DUST, SlimefunItems.SIFTED_ORE, SlimefunItems.SILVER_DUST}, - Material.OAK_FENCE) - .register(true, new MultiBlockInteractionHandler() { - - @Override - public boolean onInteract(Player p, MultiBlock mb, Block b) { - - SlimefunMachine machine = (SlimefunMachine) SlimefunItem.getByID("ORE_WASHER"); - - if (mb.isMultiBlock(machine)) { - if (CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true)) { - if (Slimefun.hasUnlocked(p, machine.getItem(), true)) { - Block dispBlock = b.getRelative(BlockFace.UP); - Dispenser disp = (Dispenser) dispBlock.getState(); - Inventory inv = disp.getInventory(); - for (ItemStack current: inv.getContents()) { - if (current != null) { - if (SlimefunManager.isItemSimiliar(current, SlimefunItems.SIFTED_ORE, true)) { - ItemStack adding = SlimefunItems.IRON_DUST; - if (SlimefunStartup.chance(100, 25)) adding = SlimefunItems.GOLD_DUST; - else if (SlimefunStartup.chance(100, 25)) adding = SlimefunItems.ALUMINUM_DUST; - else if (SlimefunStartup.chance(100, 25)) adding = SlimefunItems.COPPER_DUST; - else if (SlimefunStartup.chance(100, 25)) adding = SlimefunItems.ZINC_DUST; - else if (SlimefunStartup.chance(100, 25)) adding = SlimefunItems.TIN_DUST; - else if (SlimefunStartup.chance(100, 25)) adding = SlimefunItems.MAGNESIUM_DUST; - else if (SlimefunStartup.chance(100, 25)) adding = SlimefunItems.LEAD_DUST; - else if (SlimefunStartup.chance(100, 25)) adding = SlimefunItems.SILVER_DUST; - - Inventory outputInv = null; - - if (!legacy_ore_washer) { - // This is a fancy way of checking if there is empty space in the inv; by checking if an unobtainable item could fit in it. - // However, due to the way the method findValidOutputInv() functions, the dummyAdding will never actually be added to the real inventory, - // so it really doesn't matter what item the ItemStack is made by. SlimefunItems.DEBUG_FISH however, signals that it's - // not supposed to be given to the player. - ItemStack dummyAdding = SlimefunItems.DEBUG_FISH; - outputInv = SlimefunMachine.findValidOutputInv(dummyAdding, dispBlock, inv); - } else outputInv = SlimefunMachine.findValidOutputInv(adding, dispBlock, inv); - - if (outputInv != null) { - ItemStack removing = current.clone(); - removing.setAmount(1); - inv.removeItem(removing); - outputInv.addItem(adding); - p.getWorld().playSound(b.getLocation(), Sound.ENTITY_PLAYER_SPLASH, 1, 1); - p.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, Material.WATER); - if (InvUtils.fits(outputInv, SlimefunItems.STONE_CHUNK)) outputInv.addItem(SlimefunItems.STONE_CHUNK); - } - else Messages.local.sendTranslation(p, "machines.full-inventory", true); - return true; - } - else if (SlimefunManager.isItemSimiliar(current, new ItemStack(Material.SAND, 4), false)) { - ItemStack adding = SlimefunItems.SALT; - Inventory outputInv = SlimefunMachine.findValidOutputInv(adding, dispBlock, inv); - if (outputInv != null) { - ItemStack removing = current.clone(); - removing.setAmount(4); - inv.removeItem(removing); - outputInv.addItem(adding); - p.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, Material.WATER); - p.getWorld().playSound(b.getLocation(), Sound.ENTITY_PLAYER_SPLASH, 1, 1); - } - else Messages.local.sendTranslation(p, "machines.full-inventory", true); - return true; - } - else if (SlimefunManager.isItemSimiliar(current, SlimefunItems.PULVERIZED_ORE, true)) { - ItemStack adding = SlimefunItems.PURE_ORE_CLUSTER; - Inventory outputInv = SlimefunMachine.findValidOutputInv(adding, dispBlock, inv); - if (outputInv != null) { - ItemStack removing = current.clone(); - removing.setAmount(1); - inv.removeItem(removing); - outputInv.addItem(adding); - p.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, Material.WATER); - p.getWorld().playSound(b.getLocation(), Sound.ENTITY_PLAYER_SPLASH, 1, 1); - } - else Messages.local.sendTranslation(p, "machines.full-inventory", true); - return true; - } - } - } - Messages.local.sendTranslation(p, "machines.unknown-material", true); - } - } - return true; - } - else return false; - } - }); + new OreWasher().register(); new SlimefunItem(Categories.RESOURCES, SlimefunItems.GOLD_24K, "GOLD_24K", RecipeType.SMELTERY, new ItemStack[] {SlimefunItems.GOLD_DUST, SlimefunItems.GOLD_22K, null, null, null, null, null, null, null}) diff --git a/src/me/mrCookieSlime/Slimefun/SlimefunStartup.java b/src/me/mrCookieSlime/Slimefun/SlimefunStartup.java index 6b17a89ca..e4b2bce44 100644 --- a/src/me/mrCookieSlime/Slimefun/SlimefunStartup.java +++ b/src/me/mrCookieSlime/Slimefun/SlimefunStartup.java @@ -29,6 +29,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.AutoEnchanter; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.ElectricDustWasher; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.OreWasher; import me.mrCookieSlime.Slimefun.Setup.CSCoreLibLoader; import me.mrCookieSlime.Slimefun.Setup.Files; import me.mrCookieSlime.Slimefun.Setup.Messages; @@ -47,7 +48,6 @@ import me.mrCookieSlime.Slimefun.api.energy.ItemEnergy; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset; import me.mrCookieSlime.Slimefun.api.inventory.UniversalBlockMenu; import me.mrCookieSlime.Slimefun.api.item_transport.CargoNet; -import me.mrCookieSlime.Slimefun.api.item_transport.ChestManipulator; import me.mrCookieSlime.Slimefun.autosave.BlockAutoSaver; import me.mrCookieSlime.Slimefun.autosave.PlayerAutoSaver; import me.mrCookieSlime.Slimefun.commands.SlimefunCommand; @@ -358,7 +358,9 @@ public class SlimefunStartup extends JavaPlugin { AutoEnchanter.max_emerald_enchantments = config.getInt("options.emerald-enchantment-limit"); - SlimefunSetup.legacy_ore_washer = config.getBoolean("options.legacy-ore-washer"); + OreWasher.legacy = config.getBoolean("options.legacy-ore-washer"); + OreWasher.items = new ItemStack[] {SlimefunItems.IRON_DUST, SlimefunItems.GOLD_DUST, SlimefunItems.ALUMINUM_DUST, SlimefunItems.COPPER_DUST, SlimefunItems.ZINC_DUST, SlimefunItems.TIN_DUST, SlimefunItems.LEAD_DUST, SlimefunItems.SILVER_DUST, SlimefunItems.MAGNESIUM_DUST}; + ElectricDustWasher.legacy_dust_washer = config.getBoolean("options.legacy-dust-washer"); // Do not show /sf elevator command in our Log, it could get quite spammy @@ -443,8 +445,8 @@ public class SlimefunStartup extends JavaPlugin { TickerTask.block_timings = null; OreGenSystem.map = null; SlimefunGuide.contributors = null; - ChestManipulator.listeners = null; PlayerProfile.profiles = null; + OreWasher.items = null; for (Player p: Bukkit.getOnlinePlayers()) { p.closeInventory(); diff --git a/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java b/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java index 39a5ac4f1..db17690ce 100644 --- a/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java +++ b/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java @@ -55,7 +55,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineFuel; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.BlockTicker; +import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker; import me.mrCookieSlime.Slimefun.Setup.Messages; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.androids.comparators.ScriptReputationSorter; diff --git a/src/me/mrCookieSlime/Slimefun/api/TickerTask.java b/src/me/mrCookieSlime/Slimefun/api/TickerTask.java index 73111eb48..0d38bc131 100644 --- a/src/me/mrCookieSlime/Slimefun/api/TickerTask.java +++ b/src/me/mrCookieSlime/Slimefun/api/TickerTask.java @@ -19,7 +19,7 @@ import me.mrCookieSlime.CSCoreLibPlugin.general.Chat.TellRawMessage; import me.mrCookieSlime.CSCoreLibPlugin.general.Chat.TellRawMessage.HoverAction; import me.mrCookieSlime.Slimefun.SlimefunStartup; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.BlockTicker; +import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker; public class TickerTask implements Runnable { diff --git a/src/me/mrCookieSlime/Slimefun/api/energy/EnergyTicker.java b/src/me/mrCookieSlime/Slimefun/api/energy/EnergyTicker.java index 9785745ce..0287e0d50 100644 --- a/src/me/mrCookieSlime/Slimefun/api/energy/EnergyTicker.java +++ b/src/me/mrCookieSlime/Slimefun/api/energy/EnergyTicker.java @@ -2,7 +2,7 @@ package me.mrCookieSlime.Slimefun.api.energy; import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.ItemHandler; +import me.mrCookieSlime.Slimefun.Objects.handlers.ItemHandler; import org.bukkit.Location; diff --git a/src/me/mrCookieSlime/Slimefun/api/inventory/BlockMenuPreset.java b/src/me/mrCookieSlime/Slimefun/api/inventory/BlockMenuPreset.java index dd3ddb3ca..6370d6139 100644 --- a/src/me/mrCookieSlime/Slimefun/api/inventory/BlockMenuPreset.java +++ b/src/me/mrCookieSlime/Slimefun/api/inventory/BlockMenuPreset.java @@ -86,7 +86,7 @@ public abstract class BlockMenuPreset extends ChestMenu { } public Set getInventorySlots() { - Set empty = new HashSet(); + Set empty = new HashSet<>(); if (size > -1) { for (int i = 0; i < size; i++) { if (!occupied.contains(i)) empty.add(i); diff --git a/src/me/mrCookieSlime/Slimefun/listeners/AutonomousToolsListener.java b/src/me/mrCookieSlime/Slimefun/listeners/AutonomousToolsListener.java index 022f98d58..b821f28ae 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/AutonomousToolsListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/AutonomousToolsListener.java @@ -11,8 +11,8 @@ import org.bukkit.event.block.BlockDispenseEvent; import me.mrCookieSlime.Slimefun.SlimefunStartup; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.AutonomousMachineHandler; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.ItemHandler; +import me.mrCookieSlime.Slimefun.Objects.handlers.AutonomousMachineHandler; +import me.mrCookieSlime.Slimefun.Objects.handlers.ItemHandler; import me.mrCookieSlime.Slimefun.api.BlockStorage; public class AutonomousToolsListener implements Listener { diff --git a/src/me/mrCookieSlime/Slimefun/listeners/BlockListener.java b/src/me/mrCookieSlime/Slimefun/listeners/BlockListener.java index 7d48511c1..80f858da0 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/BlockListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/BlockListener.java @@ -8,8 +8,8 @@ import me.mrCookieSlime.Slimefun.SlimefunStartup; import me.mrCookieSlime.Slimefun.Events.MultiBlockInteractEvent; import me.mrCookieSlime.Slimefun.Objects.MultiBlock; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.ItemHandler; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.MultiBlockInteractionHandler; +import me.mrCookieSlime.Slimefun.Objects.handlers.ItemHandler; +import me.mrCookieSlime.Slimefun.Objects.handlers.MultiBlockInteractionHandler; import me.mrCookieSlime.Slimefun.api.BlockStorage; import org.bukkit.Bukkit; diff --git a/src/me/mrCookieSlime/Slimefun/listeners/BowListener.java b/src/me/mrCookieSlime/Slimefun/listeners/BowListener.java index 9ce85ba7a..40cebfbb0 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/BowListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/BowListener.java @@ -17,8 +17,8 @@ import org.bukkit.util.Vector; import me.mrCookieSlime.Slimefun.SlimefunStartup; import me.mrCookieSlime.Slimefun.Utilities; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.BowShootHandler; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.ItemHandler; +import me.mrCookieSlime.Slimefun.Objects.handlers.BowShootHandler; +import me.mrCookieSlime.Slimefun.Objects.handlers.ItemHandler; public class BowListener implements Listener { diff --git a/src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java b/src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java index d6ca9180f..b5788539f 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java @@ -48,8 +48,8 @@ import me.mrCookieSlime.Slimefun.Misc.BookDesign; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.Juice; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.MultiTool; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.ItemHandler; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.ItemInteractionHandler; +import me.mrCookieSlime.Slimefun.Objects.handlers.ItemHandler; +import me.mrCookieSlime.Slimefun.Objects.handlers.ItemInteractionHandler; import me.mrCookieSlime.Slimefun.Setup.Messages; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.api.BlockStorage; diff --git a/src/me/mrCookieSlime/Slimefun/listeners/ToolListener.java b/src/me/mrCookieSlime/Slimefun/listeners/ToolListener.java index 566b3aa56..eb0a34c95 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/ToolListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/ToolListener.java @@ -31,9 +31,9 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.HandledBlock; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.Interfaces.NotPlaceable; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.BlockBreakHandler; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.BlockPlaceHandler; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.ItemHandler; +import me.mrCookieSlime.Slimefun.Objects.handlers.BlockBreakHandler; +import me.mrCookieSlime.Slimefun.Objects.handlers.BlockPlaceHandler; +import me.mrCookieSlime.Slimefun.Objects.handlers.ItemHandler; import me.mrCookieSlime.Slimefun.Setup.Messages; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.api.BlockStorage; From 204e61d3a52992bf1ac46c9cc85587f002e106d7 Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Tue, 27 Aug 2019 22:32:26 +0200 Subject: [PATCH 014/169] Fixes #1049 again --- .../Objects/SlimefunItem/ChargableItem.java | 6 ++++-- .../Slimefun/Objects/SlimefunItem/ChargedItem.java | 10 ++++++---- .../Objects/SlimefunItem/EnderTalisman.java | 1 + .../SlimefunItem/handlers/BlockBreakHandler.java | 4 +--- .../SlimefunItem/handlers/BlockPlaceHandler.java | 4 +--- .../Objects/SlimefunItem/handlers/BlockTicker.java | 3 +-- .../Objects/SlimefunItem/handlers/ItemHandler.java | 6 ++++++ .../handlers/ItemInteractionHandler.java | 3 +-- .../handlers/MultiBlockInteractionHandler.java | 3 +-- .../Objects/SlimefunItem/machines/OreWasher.java | 1 + src/me/mrCookieSlime/Slimefun/Utilities.java | 3 +++ .../api/inventory/ItemManipulationEvent.java | 3 ++- .../api/item_transport/CargoTransportEvent.java | 5 +++-- .../api/item_transport/ChestManipulator.java | 13 ++++++------- 14 files changed, 37 insertions(+), 28 deletions(-) create mode 100644 src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/ItemHandler.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/ChargableItem.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/ChargableItem.java index 84cbafa3b..994e15738 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/ChargableItem.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/ChargableItem.java @@ -7,7 +7,7 @@ import org.bukkit.inventory.ItemStack; public class ChargableItem extends SlimefunItem { - String chargeType; + private String chargeType; public ChargableItem(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe, String chargeType) { super(category, item, id, recipeType, recipe); @@ -19,6 +19,8 @@ public class ChargableItem extends SlimefunItem { this.chargeType = chargeType; } - public String getChargeType() { return this.chargeType; } + public String getChargeType() { + return chargeType; + } } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/ChargedItem.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/ChargedItem.java index 255851dd3..3ddd3a129 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/ChargedItem.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/ChargedItem.java @@ -1,13 +1,13 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem; +import org.bukkit.inventory.ItemStack; + import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Objects.Category; -import org.bukkit.inventory.ItemStack; - public class ChargedItem extends SlimefunItem { - String chargeType; + private String chargeType; public ChargedItem(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe, String chargeType) { super(category, item, id, recipeType, recipe); @@ -19,6 +19,8 @@ public class ChargedItem extends SlimefunItem { this.chargeType = chargeType; } - public String getChargeType() { return this.chargeType; } + public String getChargeType() { + return chargeType; + } } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/EnderTalisman.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/EnderTalisman.java index e7700a3e9..b133b19c9 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/EnderTalisman.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/EnderTalisman.java @@ -26,6 +26,7 @@ public class EnderTalisman extends SlimefunItem { this.suffix = parent.getSuffix(); this.effects = parent.getEffects(); this.chance = parent.getChance(); + Slimefun.addHint("ENDER_" + parent.getID(), "&eEnder Talismans have the advantage", "&eof still working while they", "&eare in your Ender Chest"); } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockBreakHandler.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockBreakHandler.java index 276057433..92c5d46b2 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockBreakHandler.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockBreakHandler.java @@ -5,10 +5,8 @@ import java.util.List; import org.bukkit.event.block.BlockBreakEvent; import org.bukkit.inventory.ItemStack; -import me.mrCookieSlime.Slimefun.Objects.handlers.ItemHandler; - @Deprecated -public abstract class BlockBreakHandler implements ItemHandler { +public abstract class BlockBreakHandler extends ItemHandler { public abstract boolean onBlockBreak(BlockBreakEvent e, ItemStack item, int fortune, List drops); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockPlaceHandler.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockPlaceHandler.java index bb635b5e1..16f55ecfb 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockPlaceHandler.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockPlaceHandler.java @@ -3,10 +3,8 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers; import org.bukkit.event.block.BlockPlaceEvent; import org.bukkit.inventory.ItemStack; -import me.mrCookieSlime.Slimefun.Objects.handlers.ItemHandler; - @Deprecated -public abstract class BlockPlaceHandler implements ItemHandler { +public abstract class BlockPlaceHandler extends ItemHandler { public abstract boolean onBlockPlace(BlockPlaceEvent e, ItemStack item); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockTicker.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockTicker.java index 348207e45..b42812a72 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockTicker.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockTicker.java @@ -4,10 +4,9 @@ import org.bukkit.block.Block; import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; -import me.mrCookieSlime.Slimefun.Objects.handlers.ItemHandler; @Deprecated -public abstract class BlockTicker implements ItemHandler { +public abstract class BlockTicker extends ItemHandler { public boolean unique = true; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/ItemHandler.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/ItemHandler.java new file mode 100644 index 000000000..8d9913f5b --- /dev/null +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/ItemHandler.java @@ -0,0 +1,6 @@ +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers; + +@Deprecated +public abstract class ItemHandler implements me.mrCookieSlime.Slimefun.Objects.handlers.ItemHandler { + +} diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/ItemInteractionHandler.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/ItemInteractionHandler.java index cd17546bf..484107a49 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/ItemInteractionHandler.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/ItemInteractionHandler.java @@ -4,10 +4,9 @@ import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; import me.mrCookieSlime.CSCoreLibPlugin.events.ItemUseEvent; -import me.mrCookieSlime.Slimefun.Objects.handlers.ItemHandler; @Deprecated -public abstract class ItemInteractionHandler implements ItemHandler { +public abstract class ItemInteractionHandler extends ItemHandler { public abstract boolean onRightClick(ItemUseEvent e, Player p, ItemStack item); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/MultiBlockInteractionHandler.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/MultiBlockInteractionHandler.java index d594cf746..c2810155e 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/MultiBlockInteractionHandler.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/MultiBlockInteractionHandler.java @@ -4,10 +4,9 @@ import org.bukkit.block.Block; import org.bukkit.entity.Player; import me.mrCookieSlime.Slimefun.Objects.MultiBlock; -import me.mrCookieSlime.Slimefun.Objects.handlers.ItemHandler; @Deprecated -public abstract class MultiBlockInteractionHandler implements ItemHandler { +public abstract class MultiBlockInteractionHandler extends ItemHandler { public abstract boolean onInteract(Player p, MultiBlock mb, Block b); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/OreWasher.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/OreWasher.java index 7623de0d9..d177dd611 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/OreWasher.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/OreWasher.java @@ -50,6 +50,7 @@ public class OreWasher extends SlimefunMachine { Block dispBlock = b.getRelative(BlockFace.UP); Dispenser disp = (Dispenser) dispBlock.getState(); Inventory inv = disp.getInventory(); + for (ItemStack current: inv.getContents()) { if (current != null) { if (SlimefunManager.isItemSimiliar(current, SlimefunItems.SIFTED_ORE, true)) { diff --git a/src/me/mrCookieSlime/Slimefun/Utilities.java b/src/me/mrCookieSlime/Slimefun/Utilities.java index 7f84286a3..888af5e99 100644 --- a/src/me/mrCookieSlime/Slimefun/Utilities.java +++ b/src/me/mrCookieSlime/Slimefun/Utilities.java @@ -13,6 +13,7 @@ import org.bukkit.entity.Entity; import org.bukkit.inventory.ItemStack; import me.mrCookieSlime.Slimefun.ancient_altar.AltarRecipe; +import me.mrCookieSlime.Slimefun.api.item_transport.CargoTransportEvent; import me.mrCookieSlime.Slimefun.hooks.github.GitHubConnector; /** @@ -47,6 +48,8 @@ public final class Utilities { public Set connectors = new HashSet<>(); public Map contributorHeads = new HashMap<>(); + public List cargoTransportEvents = new ArrayList<>(); + /** * Contains all the players (UUIDs) that are currently unlocking a research. * @since 4.0 diff --git a/src/me/mrCookieSlime/Slimefun/api/inventory/ItemManipulationEvent.java b/src/me/mrCookieSlime/Slimefun/api/inventory/ItemManipulationEvent.java index e1be5239e..3f2a17128 100644 --- a/src/me/mrCookieSlime/Slimefun/api/inventory/ItemManipulationEvent.java +++ b/src/me/mrCookieSlime/Slimefun/api/inventory/ItemManipulationEvent.java @@ -2,8 +2,9 @@ package me.mrCookieSlime.Slimefun.api.inventory; import org.bukkit.inventory.ItemStack; +@FunctionalInterface public interface ItemManipulationEvent { - public ItemStack onEvent(int slot, ItemStack previous, ItemStack next); + ItemStack onEvent(int slot, ItemStack previous, ItemStack next); } diff --git a/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoTransportEvent.java b/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoTransportEvent.java index 17905428f..4dbbc2d5b 100644 --- a/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoTransportEvent.java +++ b/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoTransportEvent.java @@ -3,8 +3,9 @@ package me.mrCookieSlime.Slimefun.api.item_transport; import org.bukkit.block.Block; import org.bukkit.inventory.ItemStack; +@FunctionalInterface public interface CargoTransportEvent { - public ItemStack onEvent(Block b, int slot, ItemStack previous, ItemStack next); - + ItemStack onEvent(Block b, int slot, ItemStack previous, ItemStack next); + } diff --git a/src/me/mrCookieSlime/Slimefun/api/item_transport/ChestManipulator.java b/src/me/mrCookieSlime/Slimefun/api/item_transport/ChestManipulator.java index 921b0ab9f..a97d8f244 100644 --- a/src/me/mrCookieSlime/Slimefun/api/item_transport/ChestManipulator.java +++ b/src/me/mrCookieSlime/Slimefun/api/item_transport/ChestManipulator.java @@ -1,21 +1,20 @@ package me.mrCookieSlime.Slimefun.api.item_transport; -import java.util.ArrayList; -import java.util.List; - import org.bukkit.block.Block; import org.bukkit.inventory.ItemStack; -public class ChestManipulator { +import me.mrCookieSlime.Slimefun.SlimefunStartup; - public static List listeners = new ArrayList<>(); +public final class ChestManipulator { + + private ChestManipulator() {} public static void registerListener(CargoTransportEvent listener) { - listeners.add(listener); + SlimefunStartup.instance.getUtilities().cargoTransportEvents.add(listener); } public static ItemStack trigger(Block b, int slot, ItemStack prev, ItemStack next) { - for (CargoTransportEvent listener: listeners) { + for (CargoTransportEvent listener: SlimefunStartup.instance.getUtilities().cargoTransportEvents) { next = listener.onEvent(b, slot, prev, next); } From 3ccf0722b6e725f3aae47ee7ed9f738683825d54 Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Tue, 27 Aug 2019 23:08:13 +0200 Subject: [PATCH 015/169] Reduced technical debt again --- .../Events/MultiBlockInteractEvent.java | 8 +++---- .../Slimefun/Events/ResearchUnlockEvent.java | 6 ++--- .../Slimefun/GEO/OreGenResource.java | 8 +++---- .../Slimefun/GEO/OreGenSystem.java | 11 ++++------ .../Slimefun/Setup/CSCoreLibLoader.java | 8 +++---- .../mrCookieSlime/Slimefun/Setup/Files.java | 4 +++- .../Slimefun/Setup/Messages.java | 4 +++- .../Slimefun/Setup/MiscSetup.java | 4 +++- .../Slimefun/Setup/ResearchSetup.java | 4 +++- .../Slimefun/Setup/SlimefunManager.java | 8 ++++--- .../Slimefun/Setup/SlimefunSetup.java | 7 ++++-- .../Slimefun/Setup/WikiSetup.java | 4 +++- .../mrCookieSlime/Slimefun/SlimefunGuide.java | 11 +++++----- .../Slimefun/SlimefunStartup.java | 6 +---- src/me/mrCookieSlime/Slimefun/Utilities.java | 5 +++++ .../Slimefun/api/energy/EnergyNet.java | 22 ++++++++----------- .../Slimefun/hooks/github/GitHubSetup.java | 20 +++++++++-------- 17 files changed, 76 insertions(+), 64 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/Events/MultiBlockInteractEvent.java b/src/me/mrCookieSlime/Slimefun/Events/MultiBlockInteractEvent.java index 23ab8c688..0737cc11d 100644 --- a/src/me/mrCookieSlime/Slimefun/Events/MultiBlockInteractEvent.java +++ b/src/me/mrCookieSlime/Slimefun/Events/MultiBlockInteractEvent.java @@ -12,10 +12,10 @@ public class MultiBlockInteractEvent extends Event implements Cancellable { private static final HandlerList handlers = new HandlerList(); - Player p; - MultiBlock mb; - Block b; - boolean cancelled; + private Player p; + private MultiBlock mb; + private Block b; + private boolean cancelled; public HandlerList getHandlers() { return handlers; diff --git a/src/me/mrCookieSlime/Slimefun/Events/ResearchUnlockEvent.java b/src/me/mrCookieSlime/Slimefun/Events/ResearchUnlockEvent.java index b4470bb91..9b2ba24aa 100644 --- a/src/me/mrCookieSlime/Slimefun/Events/ResearchUnlockEvent.java +++ b/src/me/mrCookieSlime/Slimefun/Events/ResearchUnlockEvent.java @@ -11,9 +11,9 @@ public class ResearchUnlockEvent extends Event implements Cancellable { private static final HandlerList handlers = new HandlerList(); - Player p; - Research r; - boolean cancelled; + private Player p; + private Research r; + private boolean cancelled; public HandlerList getHandlers() { return handlers; diff --git a/src/me/mrCookieSlime/Slimefun/GEO/OreGenResource.java b/src/me/mrCookieSlime/Slimefun/GEO/OreGenResource.java index 012d1058f..daf92475a 100644 --- a/src/me/mrCookieSlime/Slimefun/GEO/OreGenResource.java +++ b/src/me/mrCookieSlime/Slimefun/GEO/OreGenResource.java @@ -6,15 +6,15 @@ import org.bukkit.inventory.ItemStack; public interface OreGenResource { // Returns the default supply of this resource in that biome - public int getDefaultSupply(Biome biome); + int getDefaultSupply(Biome biome); // Name/ID e.g. "Oil" - public String getName(); + String getName(); // For the GEO-Scanner - public ItemStack getIcon(); + ItemStack getIcon(); // Measurement Unit e.g. "Buckets" - public String getMeasurementUnit(); + String getMeasurementUnit(); } diff --git a/src/me/mrCookieSlime/Slimefun/GEO/OreGenSystem.java b/src/me/mrCookieSlime/Slimefun/GEO/OreGenSystem.java index 40f81902b..1ec6e4ab5 100644 --- a/src/me/mrCookieSlime/Slimefun/GEO/OreGenSystem.java +++ b/src/me/mrCookieSlime/Slimefun/GEO/OreGenSystem.java @@ -1,27 +1,24 @@ package me.mrCookieSlime.Slimefun.GEO; import java.util.Collection; -import java.util.HashMap; -import java.util.Map; import org.bukkit.Chunk; import org.bukkit.block.Biome; import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config; +import me.mrCookieSlime.Slimefun.SlimefunStartup; import me.mrCookieSlime.Slimefun.api.BlockStorage; public final class OreGenSystem { private OreGenSystem() {} - public static Map map = new HashMap<>(); - public static Collection listResources() { - return map.values(); + return SlimefunStartup.instance.getUtilities().resources.values(); } public static void registerResource(OreGenResource resource) { - map.put(resource.getName(), resource); + SlimefunStartup.instance.getUtilities().resources.put(resource.getName(), resource); System.out.println("[Slimefun - GEO] Registering Ore Gen: " + resource.getName()); Config cfg = new Config("plugins/Slimefun/generators/" + resource.getName() + ".cfg"); @@ -32,7 +29,7 @@ public final class OreGenSystem { } public static OreGenResource getResource(String name) { - return map.get(name); + return SlimefunStartup.instance.getUtilities().resources.get(name); } private static int getDefault(OreGenResource resource, Biome biome) { diff --git a/src/me/mrCookieSlime/Slimefun/Setup/CSCoreLibLoader.java b/src/me/mrCookieSlime/Slimefun/Setup/CSCoreLibLoader.java index 280b30c8a..5f084a336 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/CSCoreLibLoader.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/CSCoreLibLoader.java @@ -19,10 +19,10 @@ import com.google.gson.JsonParser; public class CSCoreLibLoader { - Plugin plugin; - URL url; - URL download; - File file; + private Plugin plugin; + private URL url; + private URL download; + private File file; public CSCoreLibLoader(Plugin plugin) { this.plugin = plugin; diff --git a/src/me/mrCookieSlime/Slimefun/Setup/Files.java b/src/me/mrCookieSlime/Slimefun/Setup/Files.java index a56933e90..1bdf6148f 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/Files.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/Files.java @@ -2,7 +2,9 @@ package me.mrCookieSlime.Slimefun.Setup; import java.io.File; -public class Files { +public final class Files { + + private Files() {} public static File RESEARCHES = new File("plugins/Slimefun/Researches.yml"); public static File CONFIG = new File("plugins/Slimefun/config.yml"); diff --git a/src/me/mrCookieSlime/Slimefun/Setup/Messages.java b/src/me/mrCookieSlime/Slimefun/Setup/Messages.java index cf7a9086a..55e1ff22b 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/Messages.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/Messages.java @@ -2,7 +2,9 @@ package me.mrCookieSlime.Slimefun.Setup; import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Localization; -public class Messages { +public final class Messages { + + private Messages() {} public static Localization local; diff --git a/src/me/mrCookieSlime/Slimefun/Setup/MiscSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/MiscSetup.java index c89ced948..230f2ac54 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/MiscSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/MiscSetup.java @@ -27,7 +27,9 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.AutomatedCrafting import me.mrCookieSlime.Slimefun.api.Slimefun; import me.mrCookieSlime.Slimefun.api.SlimefunRecipes; -public class MiscSetup { +public final class MiscSetup { + + private MiscSetup() {} public static List post_handlers = new ArrayList<>(); diff --git a/src/me/mrCookieSlime/Slimefun/Setup/ResearchSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/ResearchSetup.java index b35fed5c4..b76197012 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/ResearchSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/ResearchSetup.java @@ -7,7 +7,9 @@ import me.mrCookieSlime.Slimefun.api.Slimefun; import org.bukkit.Material; import org.bukkit.inventory.ItemStack; -public class ResearchSetup { +public final class ResearchSetup { + + private ResearchSetup() {} public static void setupResearches() { Slimefun.registerResearch(new Research(0, "Walking Sticks", 1), SlimefunItems.GRANDMAS_WALKING_STICK, SlimefunItems.GRANDPAS_WALKING_STICK); diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunManager.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunManager.java index 7a87f9891..01ed29f7e 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunManager.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunManager.java @@ -17,7 +17,9 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunArmorPiece; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.VanillaItem; -public class SlimefunManager { +public final class SlimefunManager { + + private SlimefunManager() {} public static SlimefunStartup plugin; public static String PREFIX; @@ -26,7 +28,7 @@ public class SlimefunManager { public static void registerArmorSet(ItemStack baseComponent, ItemStack[] items, String idSyntax, PotionEffect[][] effects, boolean special, boolean slimefun) { String[] components = new String[] {"_HELMET", "_CHESTPLATE", "_LEGGINGS", "_BOOTS"}; Category cat = special ? Categories.MAGIC_ARMOR: Categories.ARMOR; - List recipes = new ArrayList(); + List recipes = new ArrayList<>(); recipes.add(new ItemStack[] {baseComponent, baseComponent, baseComponent, baseComponent, null, baseComponent, null, null, null}); recipes.add(new ItemStack[] {baseComponent, null, baseComponent, baseComponent, baseComponent, baseComponent, baseComponent, baseComponent, baseComponent}); recipes.add(new ItemStack[] {baseComponent, baseComponent, baseComponent, baseComponent, null, baseComponent, baseComponent, null, baseComponent}); @@ -40,7 +42,7 @@ public class SlimefunManager { public static void registerArmorSet(ItemStack baseComponent, ItemStack[] items, String idSyntax, boolean slimefun, boolean vanilla) { String[] components = new String[] {"_HELMET", "_CHESTPLATE", "_LEGGINGS", "_BOOTS"}; Category cat = Categories.ARMOR; - List recipes = new ArrayList(); + List recipes = new ArrayList<>(); recipes.add(new ItemStack[] {baseComponent, baseComponent, baseComponent, baseComponent, null, baseComponent, null, null, null}); recipes.add(new ItemStack[] {baseComponent, null, baseComponent, baseComponent, baseComponent, baseComponent, baseComponent, baseComponent, baseComponent}); recipes.add(new ItemStack[] {baseComponent, baseComponent, baseComponent, baseComponent, null, baseComponent, baseComponent, null, baseComponent}); diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java index 00332de37..fd2750707 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java @@ -161,7 +161,9 @@ import me.mrCookieSlime.Slimefun.holograms.Projector; import me.mrCookieSlime.Slimefun.holograms.ReactorHologram; import me.mrCookieSlime.Slimefun.listeners.AncientAltarListener; -public class SlimefunSetup { +public final class SlimefunSetup { + + private SlimefunSetup() {} public static void setupItems() { new SlimefunItem(Categories.WEAPONS, SlimefunItems.GRANDMAS_WALKING_STICK, "GRANDMAS_WALKING_STICK", RecipeType.ENHANCED_CRAFTING_TABLE, @@ -554,13 +556,14 @@ public class SlimefunSetup { new String[] {"chance.FLINT", "chance.CLAY", "chance.SIFTED_ORE"}, new Integer[] {47, 28, 15}) .register(true, new ItemInteractionHandler() { + private Random random = new Random(); + @Override public boolean onRightClick(ItemUseEvent e, Player p, ItemStack item) { if (SlimefunManager.isItemSimiliar(item, SlimefunItems.GOLD_PAN, true)) { if (e.getClickedBlock() != null && e.getClickedBlock().getType() == Material.GRAVEL) { if (CSCoreLib.getLib().getProtectionManager().canBuild(p.getUniqueId(), e.getClickedBlock(), true)) { List drops = new ArrayList<>(); - Random random = new Random(); if (random.nextInt(100) < (Integer) Slimefun.getItemValue("GOLD_PAN", "chance.SIFTED_ORE")) drops.add(SlimefunItems.SIFTED_ORE); else if (random.nextInt(100) < (Integer) Slimefun.getItemValue("GOLD_PAN", "chance.CLAY")) drops.add(new ItemStack(Material.CLAY_BALL)); diff --git a/src/me/mrCookieSlime/Slimefun/Setup/WikiSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/WikiSetup.java index a9ac22381..cd1750ce2 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/WikiSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/WikiSetup.java @@ -7,8 +7,10 @@ import me.mrCookieSlime.Slimefun.api.Slimefun; * * @since 4.1.2 */ -public class WikiSetup { +public final class WikiSetup { + private WikiSetup() {} + /** * Setups the official Wiki links. */ diff --git a/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java b/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java index e184d7a5e..77ff40444 100644 --- a/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java +++ b/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java @@ -53,12 +53,13 @@ import me.mrCookieSlime.Slimefun.api.Slimefun; import me.mrCookieSlime.Slimefun.hooks.github.Contributor; import me.mrCookieSlime.Slimefun.hooks.github.IntegerFormat; -public class SlimefunGuide { +public final class SlimefunGuide { + + private SlimefunGuide() {} public static Map> history = new HashMap<>(); public static int month = 0; - public static List contributors = new ArrayList<>(); public static int issues = 0; public static int forks = 0; /** @@ -163,7 +164,7 @@ public class SlimefunGuide { }); } - menu.addItem(1, new CustomItem(new ItemStack(Material.WRITABLE_BOOK), "&aCredits", "", "&7Version: &a" + SlimefunStartup.instance.getDescription().getVersion(), "&7Contributors: &e" + contributors.size(), "", "&7\u21E8 Click to see the people behind this Plugin")); + menu.addItem(1, new CustomItem(new ItemStack(Material.WRITABLE_BOOK), "&aCredits", "", "&7Version: &a" + SlimefunStartup.instance.getDescription().getVersion(), "&7Contributors: &e" + SlimefunStartup.instance.getUtilities().contributors.size(), "", "&7\u21E8 Click to see the people behind this Plugin")); menu.addMenuClickHandler(1, (pl, slot, item, action) -> { openCredits(pl, guide); return false; @@ -221,11 +222,11 @@ public class SlimefunGuide { int index = 9; double total = 0; - for (Contributor contributor : contributors) { + for (Contributor contributor : SlimefunStartup.instance.getUtilities().contributors) { total += contributor.getCommits(); } - for (final Contributor contributor: contributors) { + for (final Contributor contributor: SlimefunStartup.instance.getUtilities().contributors) { ItemStack skull = new ItemStack(Material.PLAYER_HEAD); try { diff --git a/src/me/mrCookieSlime/Slimefun/SlimefunStartup.java b/src/me/mrCookieSlime/Slimefun/SlimefunStartup.java index e4b2bce44..922f9daec 100644 --- a/src/me/mrCookieSlime/Slimefun/SlimefunStartup.java +++ b/src/me/mrCookieSlime/Slimefun/SlimefunStartup.java @@ -436,15 +436,12 @@ public class SlimefunStartup extends JavaPlugin { AContainer.processing = null; AContainer.progress = null; Slimefun.guide_handlers = null; - EnergyNet.listeners = null; EnergyNet.machines_input = null; EnergyNet.machines_output = null; EnergyNet.machines_storage = null; CargoNet.faces = null; BlockStorage.universal_inventories = null; TickerTask.block_timings = null; - OreGenSystem.map = null; - SlimefunGuide.contributors = null; PlayerProfile.profiles = null; OreWasher.items = null; @@ -455,8 +452,7 @@ public class SlimefunStartup extends JavaPlugin { private void createDir(String path) { File file = new File(path); - if (!file.exists()) - file.mkdirs(); + if (!file.exists()) file.mkdirs(); } public static Config getCfg() { diff --git a/src/me/mrCookieSlime/Slimefun/Utilities.java b/src/me/mrCookieSlime/Slimefun/Utilities.java index 888af5e99..4bdcc2222 100644 --- a/src/me/mrCookieSlime/Slimefun/Utilities.java +++ b/src/me/mrCookieSlime/Slimefun/Utilities.java @@ -12,8 +12,10 @@ import org.bukkit.Location; import org.bukkit.entity.Entity; import org.bukkit.inventory.ItemStack; +import me.mrCookieSlime.Slimefun.GEO.OreGenResource; import me.mrCookieSlime.Slimefun.ancient_altar.AltarRecipe; import me.mrCookieSlime.Slimefun.api.item_transport.CargoTransportEvent; +import me.mrCookieSlime.Slimefun.hooks.github.Contributor; import me.mrCookieSlime.Slimefun.hooks.github.GitHubConnector; /** @@ -45,8 +47,11 @@ public final class Utilities { public Set elevatorUsers = new HashSet<>(); public Set teleporterUsers = new HashSet<>(); + public Map resources = new HashMap<>(); + public Set connectors = new HashSet<>(); public Map contributorHeads = new HashMap<>(); + public List contributors = new ArrayList<>(); public List cargoTransportEvents = new ArrayList<>(); diff --git a/src/me/mrCookieSlime/Slimefun/api/energy/EnergyNet.java b/src/me/mrCookieSlime/Slimefun/api/energy/EnergyNet.java index 83117afbd..223afe8e6 100644 --- a/src/me/mrCookieSlime/Slimefun/api/energy/EnergyNet.java +++ b/src/me/mrCookieSlime/Slimefun/api/energy/EnergyNet.java @@ -1,23 +1,21 @@ package me.mrCookieSlime.Slimefun.api.energy; -import java.util.HashMap; import java.util.HashSet; -import java.util.Map; import java.util.Set; -import me.mrCookieSlime.Slimefun.api.network.Network; -import me.mrCookieSlime.CSCoreLibPlugin.general.Math.DoubleHandler; -import me.mrCookieSlime.Slimefun.SlimefunStartup; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; -import me.mrCookieSlime.Slimefun.api.BlockStorage; -import me.mrCookieSlime.Slimefun.api.TickerTask; -import me.mrCookieSlime.Slimefun.holograms.EnergyHologram; - import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.block.Block; +import me.mrCookieSlime.CSCoreLibPlugin.general.Math.DoubleHandler; +import me.mrCookieSlime.Slimefun.SlimefunStartup; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; +import me.mrCookieSlime.Slimefun.api.BlockStorage; +import me.mrCookieSlime.Slimefun.api.TickerTask; +import me.mrCookieSlime.Slimefun.api.network.Network; +import me.mrCookieSlime.Slimefun.holograms.EnergyHologram; + public class EnergyNet extends Network { public enum NetworkComponent { SOURCE, @@ -31,9 +29,7 @@ public class EnergyNet extends Network { public static Set machines_input = new HashSet(); public static Set machines_storage = new HashSet(); public static Set machines_output = new HashSet(); - - public static Map listeners = new HashMap(); - + public static NetworkComponent getComponent(Block b) { return getComponent(b.getLocation()); } diff --git a/src/me/mrCookieSlime/Slimefun/hooks/github/GitHubSetup.java b/src/me/mrCookieSlime/Slimefun/hooks/github/GitHubSetup.java index ed77ccacb..acbcf5a6e 100644 --- a/src/me/mrCookieSlime/Slimefun/hooks/github/GitHubSetup.java +++ b/src/me/mrCookieSlime/Slimefun/hooks/github/GitHubSetup.java @@ -12,14 +12,16 @@ import com.google.gson.JsonParser; import me.mrCookieSlime.Slimefun.SlimefunGuide; import me.mrCookieSlime.Slimefun.SlimefunStartup; -public class GitHubSetup { - +public final class GitHubSetup { + + private GitHubSetup() {} + public static void setup() { new GitHubConnector() { @Override public void onSuccess(JsonElement element) { - SlimefunGuide.contributors.clear(); + SlimefunStartup.instance.getUtilities().contributors.clear(); JsonArray array = element.getAsJsonArray(); for (int i = 0; i < array.size(); i++) { @@ -33,10 +35,10 @@ public class GitHubSetup { if (!name.equals("invalid-email-address")) { Contributor contributor = new Contributor(name, job, commits); contributor.setProfile(profile); - SlimefunGuide.contributors.add(contributor); + SlimefunStartup.instance.getUtilities().contributors.add(contributor); } } - SlimefunGuide.contributors.add(new Contributor("AquaLazuryt", "&6Lead Head Artist", 0)); + SlimefunStartup.instance.getUtilities().contributors.add(new Contributor("AquaLazuryt", "&6Lead Head Artist", 0)); SlimefunStartup.instance.getServer().getScheduler().runTaskAsynchronously(SlimefunStartup.instance, () -> { for (JsonElement e: array) { @@ -87,10 +89,10 @@ public class GitHubSetup { @Override public void onFailure() { - SlimefunGuide.contributors.clear(); - SlimefunGuide.contributors.add(new Contributor("TheBusyBiscuit", "&cAuthor", 3)); - SlimefunGuide.contributors.add(new Contributor("John000708", "&cAuthor", 2)); - SlimefunGuide.contributors.add(new Contributor("AquaLazuryt", "&6Lead Head Artist", 0)); + SlimefunStartup.instance.getUtilities().contributors.clear(); + SlimefunStartup.instance.getUtilities().contributors.add(new Contributor("TheBusyBiscuit", "&cAuthor", 3)); + SlimefunStartup.instance.getUtilities().contributors.add(new Contributor("John000708", "&cAuthor", 2)); + SlimefunStartup.instance.getUtilities().contributors.add(new Contributor("AquaLazuryt", "&6Lead Head Artist", 0)); } @Override From cc3c026b1ce7da5ee966840290d4c06ab475c9f3 Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Tue, 27 Aug 2019 23:14:10 +0200 Subject: [PATCH 016/169] Removed deprecated junk --- .../handlers/BlockBreakHandler.java | 17 ----------- .../handlers/BlockPlaceHandler.java | 15 ---------- .../SlimefunItem/handlers/BlockTicker.java | 30 ------------------- .../SlimefunItem/handlers/ItemHandler.java | 6 ---- .../handlers/ItemInteractionHandler.java | 18 ----------- .../MultiBlockInteractionHandler.java | 17 ----------- .../Slimefun/Setup/SlimefunSetup.java | 4 +-- 7 files changed, 2 insertions(+), 105 deletions(-) delete mode 100644 src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockBreakHandler.java delete mode 100644 src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockPlaceHandler.java delete mode 100644 src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockTicker.java delete mode 100644 src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/ItemHandler.java delete mode 100644 src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/ItemInteractionHandler.java delete mode 100644 src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/MultiBlockInteractionHandler.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockBreakHandler.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockBreakHandler.java deleted file mode 100644 index 92c5d46b2..000000000 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockBreakHandler.java +++ /dev/null @@ -1,17 +0,0 @@ -package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers; - -import java.util.List; - -import org.bukkit.event.block.BlockBreakEvent; -import org.bukkit.inventory.ItemStack; - -@Deprecated -public abstract class BlockBreakHandler extends ItemHandler { - - public abstract boolean onBlockBreak(BlockBreakEvent e, ItemStack item, int fortune, List drops); - - @Override - public String toCodename() { - return "BlockBreakHandler"; - } -} \ No newline at end of file diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockPlaceHandler.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockPlaceHandler.java deleted file mode 100644 index 16f55ecfb..000000000 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockPlaceHandler.java +++ /dev/null @@ -1,15 +0,0 @@ -package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers; - -import org.bukkit.event.block.BlockPlaceEvent; -import org.bukkit.inventory.ItemStack; - -@Deprecated -public abstract class BlockPlaceHandler extends ItemHandler { - - public abstract boolean onBlockPlace(BlockPlaceEvent e, ItemStack item); - - @Override - public String toCodename() { - return "BlockPlaceHandler"; - } -} \ No newline at end of file diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockTicker.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockTicker.java deleted file mode 100644 index b42812a72..000000000 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockTicker.java +++ /dev/null @@ -1,30 +0,0 @@ -package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers; - -import org.bukkit.block.Block; - -import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; - -@Deprecated -public abstract class BlockTicker extends ItemHandler { - - public boolean unique = true; - - public void update() { - if (unique) { - uniqueTick(); - unique = false; - } - } - - - public abstract boolean isSynchronized(); - public abstract void uniqueTick(); - public abstract void tick(Block b, SlimefunItem item, Config data); - - @Override - public String toCodename() { - return "BlockTicker"; - } - -} diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/ItemHandler.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/ItemHandler.java deleted file mode 100644 index 8d9913f5b..000000000 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/ItemHandler.java +++ /dev/null @@ -1,6 +0,0 @@ -package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers; - -@Deprecated -public abstract class ItemHandler implements me.mrCookieSlime.Slimefun.Objects.handlers.ItemHandler { - -} diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/ItemInteractionHandler.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/ItemInteractionHandler.java deleted file mode 100644 index 484107a49..000000000 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/ItemInteractionHandler.java +++ /dev/null @@ -1,18 +0,0 @@ -package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers; - -import org.bukkit.entity.Player; -import org.bukkit.inventory.ItemStack; - -import me.mrCookieSlime.CSCoreLibPlugin.events.ItemUseEvent; - -@Deprecated -public abstract class ItemInteractionHandler extends ItemHandler { - - public abstract boolean onRightClick(ItemUseEvent e, Player p, ItemStack item); - - @Override - public String toCodename() { - return "ItemInteractionHandler"; - } - -} \ No newline at end of file diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/MultiBlockInteractionHandler.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/MultiBlockInteractionHandler.java deleted file mode 100644 index c2810155e..000000000 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/MultiBlockInteractionHandler.java +++ /dev/null @@ -1,17 +0,0 @@ -package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers; - -import org.bukkit.block.Block; -import org.bukkit.entity.Player; - -import me.mrCookieSlime.Slimefun.Objects.MultiBlock; - -@Deprecated -public abstract class MultiBlockInteractionHandler extends ItemHandler { - - public abstract boolean onInteract(Player p, MultiBlock mb, Block b); - - @Override - public String toCodename() { - return "MultiBlockInteractionHandler"; - } -} \ No newline at end of file diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java index fd2750707..578b7d42d 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java @@ -941,7 +941,7 @@ public final class SlimefunSetup { p.setVelocity(p.getEyeLocation().getDirection().multiply(4)); p.getWorld().playSound(p.getLocation(), Sound.ENTITY_TNT_PRIMED, 1, 1); p.getWorld().playEffect(p.getLocation(), Effect.SMOKE, 1); - p.setFallDistance(0.0f); + p.setFallDistance(0F); } else { Messages.local.sendTranslation(p, "messages.hungry", true); @@ -1864,7 +1864,7 @@ public final class SlimefunSetup { } if (e.getPlayer().getInventory().getItemInMainHand().getEnchantments().containsKey(Enchantment.DURABILITY)) { - if (SlimefunStartup.randomize(100) <= (60 + 40 / (e.getPlayer().getInventory().getItemInMainHand().getEnchantmentLevel(Enchantment.DURABILITY) + 1))) PlayerInventory.damageItemInHand(e.getPlayer()); + if (new Random().nextInt(100) <= (60 + 40 / (e.getPlayer().getInventory().getItemInMainHand().getEnchantmentLevel(Enchantment.DURABILITY) + 1))) PlayerInventory.damageItemInHand(e.getPlayer()); } else PlayerInventory.damageItemInHand(e.getPlayer()); From 4875ce12419e7b9dc3bfbbb5956a86a79e9f0ae8 Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Tue, 27 Aug 2019 23:18:58 +0200 Subject: [PATCH 017/169] Revert "Removed deprecated junk" This reverts commit cc3c026b1ce7da5ee966840290d4c06ab475c9f3. --- .../handlers/BlockBreakHandler.java | 17 +++++++++++ .../handlers/BlockPlaceHandler.java | 15 ++++++++++ .../SlimefunItem/handlers/BlockTicker.java | 30 +++++++++++++++++++ .../SlimefunItem/handlers/ItemHandler.java | 6 ++++ .../handlers/ItemInteractionHandler.java | 18 +++++++++++ .../MultiBlockInteractionHandler.java | 17 +++++++++++ .../Slimefun/Setup/SlimefunSetup.java | 4 +-- 7 files changed, 105 insertions(+), 2 deletions(-) create mode 100644 src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockBreakHandler.java create mode 100644 src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockPlaceHandler.java create mode 100644 src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockTicker.java create mode 100644 src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/ItemHandler.java create mode 100644 src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/ItemInteractionHandler.java create mode 100644 src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/MultiBlockInteractionHandler.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockBreakHandler.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockBreakHandler.java new file mode 100644 index 000000000..92c5d46b2 --- /dev/null +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockBreakHandler.java @@ -0,0 +1,17 @@ +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers; + +import java.util.List; + +import org.bukkit.event.block.BlockBreakEvent; +import org.bukkit.inventory.ItemStack; + +@Deprecated +public abstract class BlockBreakHandler extends ItemHandler { + + public abstract boolean onBlockBreak(BlockBreakEvent e, ItemStack item, int fortune, List drops); + + @Override + public String toCodename() { + return "BlockBreakHandler"; + } +} \ No newline at end of file diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockPlaceHandler.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockPlaceHandler.java new file mode 100644 index 000000000..16f55ecfb --- /dev/null +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockPlaceHandler.java @@ -0,0 +1,15 @@ +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers; + +import org.bukkit.event.block.BlockPlaceEvent; +import org.bukkit.inventory.ItemStack; + +@Deprecated +public abstract class BlockPlaceHandler extends ItemHandler { + + public abstract boolean onBlockPlace(BlockPlaceEvent e, ItemStack item); + + @Override + public String toCodename() { + return "BlockPlaceHandler"; + } +} \ No newline at end of file diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockTicker.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockTicker.java new file mode 100644 index 000000000..b42812a72 --- /dev/null +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockTicker.java @@ -0,0 +1,30 @@ +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers; + +import org.bukkit.block.Block; + +import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; + +@Deprecated +public abstract class BlockTicker extends ItemHandler { + + public boolean unique = true; + + public void update() { + if (unique) { + uniqueTick(); + unique = false; + } + } + + + public abstract boolean isSynchronized(); + public abstract void uniqueTick(); + public abstract void tick(Block b, SlimefunItem item, Config data); + + @Override + public String toCodename() { + return "BlockTicker"; + } + +} diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/ItemHandler.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/ItemHandler.java new file mode 100644 index 000000000..8d9913f5b --- /dev/null +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/ItemHandler.java @@ -0,0 +1,6 @@ +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers; + +@Deprecated +public abstract class ItemHandler implements me.mrCookieSlime.Slimefun.Objects.handlers.ItemHandler { + +} diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/ItemInteractionHandler.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/ItemInteractionHandler.java new file mode 100644 index 000000000..484107a49 --- /dev/null +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/ItemInteractionHandler.java @@ -0,0 +1,18 @@ +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers; + +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; + +import me.mrCookieSlime.CSCoreLibPlugin.events.ItemUseEvent; + +@Deprecated +public abstract class ItemInteractionHandler extends ItemHandler { + + public abstract boolean onRightClick(ItemUseEvent e, Player p, ItemStack item); + + @Override + public String toCodename() { + return "ItemInteractionHandler"; + } + +} \ No newline at end of file diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/MultiBlockInteractionHandler.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/MultiBlockInteractionHandler.java new file mode 100644 index 000000000..c2810155e --- /dev/null +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/MultiBlockInteractionHandler.java @@ -0,0 +1,17 @@ +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers; + +import org.bukkit.block.Block; +import org.bukkit.entity.Player; + +import me.mrCookieSlime.Slimefun.Objects.MultiBlock; + +@Deprecated +public abstract class MultiBlockInteractionHandler extends ItemHandler { + + public abstract boolean onInteract(Player p, MultiBlock mb, Block b); + + @Override + public String toCodename() { + return "MultiBlockInteractionHandler"; + } +} \ No newline at end of file diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java index 578b7d42d..fd2750707 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java @@ -941,7 +941,7 @@ public final class SlimefunSetup { p.setVelocity(p.getEyeLocation().getDirection().multiply(4)); p.getWorld().playSound(p.getLocation(), Sound.ENTITY_TNT_PRIMED, 1, 1); p.getWorld().playEffect(p.getLocation(), Effect.SMOKE, 1); - p.setFallDistance(0F); + p.setFallDistance(0.0f); } else { Messages.local.sendTranslation(p, "messages.hungry", true); @@ -1864,7 +1864,7 @@ public final class SlimefunSetup { } if (e.getPlayer().getInventory().getItemInMainHand().getEnchantments().containsKey(Enchantment.DURABILITY)) { - if (new Random().nextInt(100) <= (60 + 40 / (e.getPlayer().getInventory().getItemInMainHand().getEnchantmentLevel(Enchantment.DURABILITY) + 1))) PlayerInventory.damageItemInHand(e.getPlayer()); + if (SlimefunStartup.randomize(100) <= (60 + 40 / (e.getPlayer().getInventory().getItemInMainHand().getEnchantmentLevel(Enchantment.DURABILITY) + 1))) PlayerInventory.damageItemInHand(e.getPlayer()); } else PlayerInventory.damageItemInHand(e.getPlayer()); From 2b09ca5e61f3e734d29862474425ccedc6b645f6 Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Tue, 27 Aug 2019 23:24:43 +0200 Subject: [PATCH 018/169] Stupid backwards compatibility --- .../Slimefun/Objects/SlimefunItem/SlimefunItem.java | 13 ++++++++++++- .../Slimefun/api/energy/EnergyTicker.java | 4 ++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java index 8ad6c802a..346494e5c 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java @@ -61,7 +61,7 @@ public class SlimefunItem { private boolean replacing = false; private boolean addon = false; private String permission = ""; - private Set itemhandlers = new HashSet(); + private Set itemhandlers = new HashSet<>(); private boolean ticking = false; private BlockTicker blockTicker; private EnergyTicker energyTicker; @@ -389,6 +389,11 @@ public class SlimefunItem { public void install() {} public void create() {} + @Deprecated + public void addItemHandler(me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.ItemHandler... handler) { + addItemHandler(handler); + } + public void addItemHandler(ItemHandler... handler) { this.itemhandlers.addAll(Arrays.asList(handler)); @@ -415,6 +420,12 @@ public class SlimefunItem { register(false); } + @Deprecated + public void register(me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.ItemHandler... handlers) { + addItemHandler(handlers); + register(false); + } + public void register(boolean vanilla, SlimefunBlockHandler handler) { blockhandler.put(getID(), handler); register(vanilla); diff --git a/src/me/mrCookieSlime/Slimefun/api/energy/EnergyTicker.java b/src/me/mrCookieSlime/Slimefun/api/energy/EnergyTicker.java index 0287e0d50..83367c69c 100644 --- a/src/me/mrCookieSlime/Slimefun/api/energy/EnergyTicker.java +++ b/src/me/mrCookieSlime/Slimefun/api/energy/EnergyTicker.java @@ -1,11 +1,11 @@ package me.mrCookieSlime.Slimefun.api.energy; +import org.bukkit.Location; + import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Objects.handlers.ItemHandler; -import org.bukkit.Location; - public abstract class EnergyTicker implements ItemHandler { public abstract double generateEnergy(Location l, SlimefunItem item, Config data); From 33266c7c88a9e9da322db05cddfb9990dedc3bf9 Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Tue, 27 Aug 2019 23:48:41 +0200 Subject: [PATCH 019/169] Fixed even more Issues --- .../Slimefun/Objects/SlimefunItem/SlimefunItem.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java index 346494e5c..ae21cab24 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java @@ -391,7 +391,7 @@ public class SlimefunItem { @Deprecated public void addItemHandler(me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.ItemHandler... handler) { - addItemHandler(handler); + addItemHandler((ItemHandler[]) handler); } public void addItemHandler(ItemHandler... handler) { @@ -422,8 +422,7 @@ public class SlimefunItem { @Deprecated public void register(me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.ItemHandler... handlers) { - addItemHandler(handlers); - register(false); + register((ItemHandler[]) handlers); } public void register(boolean vanilla, SlimefunBlockHandler handler) { From 9982292e806acad592f778737b08db2d7ef3c84d Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Wed, 28 Aug 2019 00:09:23 +0200 Subject: [PATCH 020/169] Final fix --- .../Slimefun/Objects/SlimefunItem/SlimefunItem.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java index ae21cab24..3aa41e51b 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java @@ -420,6 +420,12 @@ public class SlimefunItem { register(false); } + @Deprecated + public void register(boolean vanilla, me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.ItemHandler... handlers) { + addItemHandler(handlers); + register(vanilla); + } + @Deprecated public void register(me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.ItemHandler... handlers) { register((ItemHandler[]) handlers); From 1b3c0fcdc2ae91498d3511fe69c58a25709c6353 Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Wed, 28 Aug 2019 00:43:18 +0200 Subject: [PATCH 021/169] Fixed more stupid backwards compatibility --- .../handlers/BlockBreakHandler.java | 13 +---------- .../handlers/BlockPlaceHandler.java | 12 +--------- .../SlimefunItem/handlers/BlockTicker.java | 22 +------------------ .../handlers/ItemInteractionHandler.java | 15 +------------ .../MultiBlockInteractionHandler.java | 14 +----------- .../machines/ElectricSmeltery.java | 8 +++---- .../api/inventory/BlockMenuPreset.java | 4 ++-- 7 files changed, 11 insertions(+), 77 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockBreakHandler.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockBreakHandler.java index 92c5d46b2..b787ddf29 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockBreakHandler.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockBreakHandler.java @@ -1,17 +1,6 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers; -import java.util.List; - -import org.bukkit.event.block.BlockBreakEvent; -import org.bukkit.inventory.ItemStack; - @Deprecated -public abstract class BlockBreakHandler extends ItemHandler { +public abstract class BlockBreakHandler implements me.mrCookieSlime.Slimefun.Objects.handlers.BlockBreakHandler { - public abstract boolean onBlockBreak(BlockBreakEvent e, ItemStack item, int fortune, List drops); - - @Override - public String toCodename() { - return "BlockBreakHandler"; - } } \ No newline at end of file diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockPlaceHandler.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockPlaceHandler.java index 16f55ecfb..c139370b4 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockPlaceHandler.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockPlaceHandler.java @@ -1,15 +1,5 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers; -import org.bukkit.event.block.BlockPlaceEvent; -import org.bukkit.inventory.ItemStack; - @Deprecated -public abstract class BlockPlaceHandler extends ItemHandler { - - public abstract boolean onBlockPlace(BlockPlaceEvent e, ItemStack item); - - @Override - public String toCodename() { - return "BlockPlaceHandler"; - } +public abstract class BlockPlaceHandler implements me.mrCookieSlime.Slimefun.Objects.handlers.BlockPlaceHandler { } \ No newline at end of file diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockTicker.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockTicker.java index b42812a72..745384786 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockTicker.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockTicker.java @@ -6,25 +6,5 @@ import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; @Deprecated -public abstract class BlockTicker extends ItemHandler { - - public boolean unique = true; - - public void update() { - if (unique) { - uniqueTick(); - unique = false; - } - } - - - public abstract boolean isSynchronized(); - public abstract void uniqueTick(); - public abstract void tick(Block b, SlimefunItem item, Config data); - - @Override - public String toCodename() { - return "BlockTicker"; - } - +public abstract class BlockTicker extends me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker { } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/ItemInteractionHandler.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/ItemInteractionHandler.java index 484107a49..3067ec5a5 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/ItemInteractionHandler.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/ItemInteractionHandler.java @@ -1,18 +1,5 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers; -import org.bukkit.entity.Player; -import org.bukkit.inventory.ItemStack; - -import me.mrCookieSlime.CSCoreLibPlugin.events.ItemUseEvent; - @Deprecated -public abstract class ItemInteractionHandler extends ItemHandler { - - public abstract boolean onRightClick(ItemUseEvent e, Player p, ItemStack item); - - @Override - public String toCodename() { - return "ItemInteractionHandler"; - } - +public abstract class ItemInteractionHandler implements me.mrCookieSlime.Slimefun.Objects.handlers.ItemInteractionHandler { } \ No newline at end of file diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/MultiBlockInteractionHandler.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/MultiBlockInteractionHandler.java index c2810155e..8399456ee 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/MultiBlockInteractionHandler.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/MultiBlockInteractionHandler.java @@ -1,17 +1,5 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers; -import org.bukkit.block.Block; -import org.bukkit.entity.Player; - -import me.mrCookieSlime.Slimefun.Objects.MultiBlock; - @Deprecated -public abstract class MultiBlockInteractionHandler extends ItemHandler { - - public abstract boolean onInteract(Player p, MultiBlock mb, Block b); - - @Override - public String toCodename() { - return "MultiBlockInteractionHandler"; - } +public abstract class MultiBlockInteractionHandler implements me.mrCookieSlime.Slimefun.Objects.handlers.MultiBlockInteractionHandler { } \ No newline at end of file diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricSmeltery.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricSmeltery.java index 8d0a6cbea..6855f4f19 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricSmeltery.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricSmeltery.java @@ -32,10 +32,10 @@ import me.mrCookieSlime.Slimefun.api.item_transport.RecipeSorter; public abstract class ElectricSmeltery extends AContainer { - public static Map processing = new HashMap(); - public static Map progress = new HashMap(); + public static Map processing = new HashMap<>(); + public static Map progress = new HashMap<>(); - protected List recipes = new ArrayList(); + protected List recipes = new ArrayList<>(); private static final int[] border = {4, 5, 6, 7, 8, 13, 31, 40, 41, 42, 43, 44}; private static final int[] border_in = {0, 1, 2, 3, 9, 12, 18, 21, 27, 30, 36, 37, 38, 39}; @@ -69,7 +69,7 @@ public abstract class ElectricSmeltery extends AContainer { public int[] getSlotsAccessedByItemTransport(BlockMenu menu, ItemTransportFlow flow, ItemStack item) { if (flow.equals(ItemTransportFlow.WITHDRAW)) return getOutputSlots(); - List slots = new ArrayList(); + List slots = new ArrayList<>(); for (int slot : getInputSlots()) { if (SlimefunManager.isItemSimiliar(menu.getItemInSlot(slot), item, true)) { diff --git a/src/me/mrCookieSlime/Slimefun/api/inventory/BlockMenuPreset.java b/src/me/mrCookieSlime/Slimefun/api/inventory/BlockMenuPreset.java index 6370d6139..4e1da54a6 100644 --- a/src/me/mrCookieSlime/Slimefun/api/inventory/BlockMenuPreset.java +++ b/src/me/mrCookieSlime/Slimefun/api/inventory/BlockMenuPreset.java @@ -17,10 +17,10 @@ import me.mrCookieSlime.Slimefun.api.item_transport.ItemTransportFlow; public abstract class BlockMenuPreset extends ChestMenu { - public static Map presets = new HashMap(); + public static Map presets = new HashMap<>(); private String title; - private Set occupied = new HashSet(); + private Set occupied = new HashSet<>(); private String id; private int size = -1; private boolean universal; From dc1cff31f5194831a994e881549f3e5dea401aab Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Wed, 28 Aug 2019 00:48:39 +0200 Subject: [PATCH 022/169] Connected Interfaces to abstract classes --- .../Objects/SlimefunItem/handlers/BlockBreakHandler.java | 2 +- .../Objects/SlimefunItem/handlers/BlockPlaceHandler.java | 2 +- .../Slimefun/Objects/SlimefunItem/handlers/BlockTicker.java | 5 ----- .../SlimefunItem/handlers/ItemInteractionHandler.java | 2 +- .../SlimefunItem/handlers/MultiBlockInteractionHandler.java | 2 +- 5 files changed, 4 insertions(+), 9 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockBreakHandler.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockBreakHandler.java index b787ddf29..223308deb 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockBreakHandler.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockBreakHandler.java @@ -1,6 +1,6 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers; @Deprecated -public abstract class BlockBreakHandler implements me.mrCookieSlime.Slimefun.Objects.handlers.BlockBreakHandler { +public abstract class BlockBreakHandler extends ItemHandler implements me.mrCookieSlime.Slimefun.Objects.handlers.BlockBreakHandler { } \ No newline at end of file diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockPlaceHandler.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockPlaceHandler.java index c139370b4..9cde2fd85 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockPlaceHandler.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockPlaceHandler.java @@ -1,5 +1,5 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers; @Deprecated -public abstract class BlockPlaceHandler implements me.mrCookieSlime.Slimefun.Objects.handlers.BlockPlaceHandler { +public abstract class BlockPlaceHandler extends ItemHandler implements me.mrCookieSlime.Slimefun.Objects.handlers.BlockPlaceHandler { } \ No newline at end of file diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockTicker.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockTicker.java index 745384786..88a293d2f 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockTicker.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockTicker.java @@ -1,10 +1,5 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers; -import org.bukkit.block.Block; - -import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; - @Deprecated public abstract class BlockTicker extends me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker { } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/ItemInteractionHandler.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/ItemInteractionHandler.java index 3067ec5a5..66c32c8c3 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/ItemInteractionHandler.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/ItemInteractionHandler.java @@ -1,5 +1,5 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers; @Deprecated -public abstract class ItemInteractionHandler implements me.mrCookieSlime.Slimefun.Objects.handlers.ItemInteractionHandler { +public abstract class ItemInteractionHandler extends ItemHandler implements me.mrCookieSlime.Slimefun.Objects.handlers.ItemInteractionHandler { } \ No newline at end of file diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/MultiBlockInteractionHandler.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/MultiBlockInteractionHandler.java index 8399456ee..7bf5b9069 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/MultiBlockInteractionHandler.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/MultiBlockInteractionHandler.java @@ -1,5 +1,5 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers; @Deprecated -public abstract class MultiBlockInteractionHandler implements me.mrCookieSlime.Slimefun.Objects.handlers.MultiBlockInteractionHandler { +public abstract class MultiBlockInteractionHandler extends ItemHandler implements me.mrCookieSlime.Slimefun.Objects.handlers.MultiBlockInteractionHandler { } \ No newline at end of file From e0316453d97775a2481dec217f779bc447328245 Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Wed, 28 Aug 2019 10:59:20 +0200 Subject: [PATCH 023/169] Reduced technical debt --- .../Slimefun/Objects/MultiBlock.java | 4 +- .../SlimefunItem/DamagableChargableItem.java | 6 +- .../Objects/SlimefunItem/EnhancedFurnace.java | 17 +- .../Objects/SlimefunItem/JetBoots.java | 2 +- .../Objects/SlimefunItem/Jetpack.java | 2 +- .../Objects/SlimefunItem/MultiTool.java | 4 +- .../SlimefunItem/SlimefunArmorPiece.java | 6 +- .../Objects/SlimefunItem/SlimefunGadget.java | 15 +- .../Objects/SlimefunItem/SlimefunItem.java | 2 +- .../abstractItems/AContainer.java | 6 +- .../SlimefunItem/abstractItems/ADrill.java | 2 +- .../SlimefunItem/abstractItems/AReactor.java | 10 +- .../abstractItems/MachineRecipe.java | 6 +- .../SlimefunItem/machines/AutoAnvil.java | 2 +- .../machines/AutoDisenchanter.java | 6 +- .../SlimefunItem/machines/AutoEnchanter.java | 6 +- .../machines/AutomatedCraftingChamber.java | 2 +- .../machines/CropGrowthAccelerator.java | 2 +- .../machines/ElectricGoldPan.java | 2 +- .../SlimefunItem/machines/FluidPump.java | 18 +- .../machines/HeatedPressureChamber.java | 14 +- .../SlimefunItem/machines/OilPump.java | 2 +- .../SlimefunItem/machines/Refinery.java | 2 +- .../mrCookieSlime/Slimefun/Setup/Files.java | 9 +- .../Slimefun/Setup/SlimefunSetup.java | 30 +-- .../mrCookieSlime/Slimefun/SlimefunGuide.java | 18 +- .../Slimefun/SlimefunStartup.java | 2 +- .../Slimefun/androids/AndroidObject.java | 4 +- .../androids/ProgrammableAndroid.java | 173 ++++++------------ .../mrCookieSlime/Slimefun/api/Slimefun.java | 6 +- .../Slimefun/api/energy/EnergyNet.java | 12 +- .../api/inventory/UniversalBlockMenu.java | 4 +- .../api/item_transport/CargoManager.java | 2 +- .../Slimefun/api/item_transport/CargoNet.java | 13 +- .../api/item_transport/ItemRequest.java | 8 +- .../commands/SlimefunTabCompleter.java | 2 +- .../Slimefun/listeners/DamageListener.java | 2 +- .../listeners/TeleporterListener.java | 2 +- 38 files changed, 196 insertions(+), 229 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/Objects/MultiBlock.java b/src/me/mrCookieSlime/Slimefun/Objects/MultiBlock.java index a4854f297..cd56f137f 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/MultiBlock.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/MultiBlock.java @@ -13,8 +13,8 @@ public class MultiBlock { public static List list = new ArrayList<>(); - Material[] blocks; - Material trigger; + private Material[] blocks; + private Material trigger; public MultiBlock(Material[] build, Material trigger) { this.blocks = build; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/DamagableChargableItem.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/DamagableChargableItem.java index 6fe190f1e..5281f4db8 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/DamagableChargableItem.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/DamagableChargableItem.java @@ -7,7 +7,7 @@ import org.bukkit.inventory.ItemStack; public class DamagableChargableItem extends SlimefunItem { - String chargeType; + private String chargeType; public DamagableChargableItem(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe, String chargeType) { super(category, item, id, recipeType, recipe); @@ -19,6 +19,8 @@ public class DamagableChargableItem extends SlimefunItem { this.chargeType = chargeType; } - public String getChargeType() { return this.chargeType; } + public String getChargeType() { + return this.chargeType; + } } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/EnhancedFurnace.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/EnhancedFurnace.java index c5ae45b9e..35b8d8b8b 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/EnhancedFurnace.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/EnhancedFurnace.java @@ -1,18 +1,21 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem; -import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config; -import me.mrCookieSlime.Slimefun.SlimefunStartup; -import me.mrCookieSlime.Slimefun.Lists.Categories; -import me.mrCookieSlime.Slimefun.Lists.RecipeType; -import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker; +import java.util.Random; import org.bukkit.block.Block; import org.bukkit.block.Furnace; import org.bukkit.inventory.ItemStack; +import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config; +import me.mrCookieSlime.Slimefun.Lists.Categories; +import me.mrCookieSlime.Slimefun.Lists.RecipeType; +import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker; + public class EnhancedFurnace extends SlimefunItem { - int speed, efficiency, fortune; + private int speed; + private int efficiency; + private int fortune; public EnhancedFurnace(int speed, int efficiency, int fortune, ItemStack item, String id, ItemStack[] recipe) { super(Categories.MACHINES_1, item, id, RecipeType.ENHANCED_CRAFTING_TABLE, recipe); @@ -59,7 +62,7 @@ public class EnhancedFurnace extends SlimefunItem { public int getOutput() { int fortune = this.fortune; - fortune = SlimefunStartup.randomize(fortune + 2) - 1; + fortune = new Random().nextInt(fortune + 2) - 1; if (fortune <= 0) fortune = 0; fortune++; return fortune; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/JetBoots.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/JetBoots.java index 84a47d1d9..f512be3e7 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/JetBoots.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/JetBoots.java @@ -7,7 +7,7 @@ import org.bukkit.inventory.ItemStack; public class JetBoots extends DamagableChargableItem { - double speed; + private double speed; public JetBoots(ItemStack item, String id, ItemStack[] recipe, double speed) { super(Categories.TECH, item, id, RecipeType.ENHANCED_CRAFTING_TABLE, recipe, "Jet Boots"); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/Jetpack.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/Jetpack.java index b7093a53e..a0c2b1cfc 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/Jetpack.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/Jetpack.java @@ -7,7 +7,7 @@ import org.bukkit.inventory.ItemStack; public class Jetpack extends DamagableChargableItem { - double thrust; + private double thrust; public Jetpack(ItemStack item, String id, ItemStack[] recipe, double thrust) { super(Categories.TECH, item, id, RecipeType.ENHANCED_CRAFTING_TABLE, recipe, "Jetpack"); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/MultiTool.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/MultiTool.java index 133847d58..3fcd05ff9 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/MultiTool.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/MultiTool.java @@ -11,7 +11,7 @@ import org.bukkit.inventory.ItemStack; public class MultiTool extends DamagableChargableItem { - List modes; + private List modes; public MultiTool(ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe, String[] keys, Object[] values) { super(Categories.TECH, item, id, recipeType, recipe, "Multi Tool", keys, values); @@ -19,7 +19,7 @@ public class MultiTool extends DamagableChargableItem { @Override public void create() { - List list = new ArrayList(); + List list = new ArrayList<>(); for (int i = 0; i < 50; i++) { if (Slimefun.getItemValue(this.getID(), "mode." + i + ".enabled") != null) { if ((Boolean) Slimefun.getItemValue(this.getID(), "mode." + i + ".enabled")) list.add(i); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunArmorPiece.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunArmorPiece.java index 5ed225ad5..92924744f 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunArmorPiece.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunArmorPiece.java @@ -8,7 +8,7 @@ import org.bukkit.potion.PotionEffect; public class SlimefunArmorPiece extends SlimefunItem { - PotionEffect[] effects; + private PotionEffect[] effects; public SlimefunArmorPiece(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe, PotionEffect[] effects) { super(category, item, id, recipeType, recipe); @@ -20,6 +20,8 @@ public class SlimefunArmorPiece extends SlimefunItem { this.effects = effects; } - public PotionEffect[] getEffects() { return this.effects; } + public PotionEffect[] getEffects() { + return this.effects; + } } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunGadget.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunGadget.java index 678ead229..1da6bd55c 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunGadget.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunGadget.java @@ -10,13 +10,15 @@ import org.bukkit.inventory.ItemStack; public class SlimefunGadget extends SlimefunItem { - List recipes; - List display_recipes; + private List recipes; + private List display_recipes; public SlimefunGadget(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe, ItemStack[] machineRecipes) { super(category, item, id, recipeType, recipe); - this.recipes = new ArrayList(); - this.display_recipes = new ArrayList(); + + this.recipes = new ArrayList<>(); + this.display_recipes = new ArrayList<>(); + for (ItemStack i: machineRecipes) { this.recipes.add(new ItemStack[] {i}); this.display_recipes.add(i); @@ -25,8 +27,9 @@ public class SlimefunGadget extends SlimefunItem { public SlimefunGadget(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe, ItemStack[] machineRecipes, String[] keys, Object[] values) { super(category, item, id, recipeType, recipe, keys, values); - this.recipes = new ArrayList(); - this.display_recipes = new ArrayList(); + this.recipes = new ArrayList<>(); + this.display_recipes = new ArrayList<>(); + for (ItemStack i: machineRecipes) { this.recipes.add(new ItemStack[] {i}); this.display_recipes.add(i); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java index 3aa41e51b..e8db4aad8 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java @@ -349,7 +349,7 @@ public class SlimefunItem { if (recipeType.toItem().isSimilar(RecipeType.MOB_DROP.toItem())) { try { EntityType entity = EntityType.valueOf(ChatColor.stripColor(recipe[4].getItemMeta().getDisplayName()).toUpperCase().replace(" ", "_")); - List dropping = new ArrayList(); + List dropping = new ArrayList<>(); if (SlimefunManager.drops.containsKey(entity)) dropping = SlimefunManager.drops.get(entity); dropping.add(output); SlimefunManager.drops.put(entity, dropping); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AContainer.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AContainer.java index 0c8a2c612..31e2a778b 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AContainer.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AContainer.java @@ -255,8 +255,8 @@ public abstract class AContainer extends SlimefunItem { } else { MachineRecipe r = null; - Map found = new HashMap(); - outer: + Map found = new HashMap<>(); + for (MachineRecipe recipe: recipes) { for (ItemStack input: recipe.getInput()) { slots: @@ -269,7 +269,7 @@ public abstract class AContainer extends SlimefunItem { } if (found.size() == recipe.getInput().length) { r = recipe; - break outer; + break; } else found.clear(); } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/ADrill.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/ADrill.java index 81cc931ca..2fb5449ec 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/ADrill.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/ADrill.java @@ -118,7 +118,7 @@ public abstract class ADrill extends AContainer { ItemMeta im = item.getItemMeta(); ((Damageable) im).setDamage(MachineHelper.getDurability(item, timeleft, processing.get(b).getTicks())); im.setDisplayName(" "); - List lore = new ArrayList(); + List lore = new ArrayList<>(); lore.add(MachineHelper.getProgress(timeleft, processing.get(b).getTicks())); lore.add(""); lore.add(MachineHelper.getTimeLeft(timeleft / 2)); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AReactor.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AReactor.java index f6bb02d69..53cb87baf 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AReactor.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AReactor.java @@ -6,6 +6,7 @@ import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Optional; +import java.util.Random; import java.util.Set; import org.bukkit.Bukkit; @@ -264,7 +265,7 @@ public abstract class AReactor extends SlimefunItem { public void register(boolean slimefun) { addItemHandler(new EnergyTicker() { - Set explode = new HashSet(); + private Set explode = new HashSet<>(); @Override public double generateEnergy(final Location l, SlimefunItem sf, Config data) { @@ -284,13 +285,13 @@ public abstract class AReactor extends SlimefunItem { progress.put(l, timeleft - 1); Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> { - if (!l.getBlock().getRelative(cooling[CSCoreLib.randomizer().nextInt(cooling.length)]).isLiquid()) explode.add(l); + 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(); + List lore = new ArrayList<>(); lore.add(MachineHelper.getProgress(timeleft, processing.get(l).getTicks())); lore.add(MachineHelper.getCoolant(timeleft, processing.get(l).getTicks())); lore.add(""); @@ -353,7 +354,7 @@ public abstract class AReactor extends SlimefunItem { } else { MachineFuel r = null; - Map found = new HashMap(); + Map found = new HashMap<>(); if (port != null) { refill: @@ -384,6 +385,7 @@ public abstract class AReactor extends SlimefunItem { for (Map.Entry entry: found.entrySet()) { BlockStorage.getInventory(l).replaceExistingItem(entry.getKey(), InvUtils.decreaseItem(BlockStorage.getInventory(l).getItemInSlot(entry.getKey()), entry.getValue())); } + processing.put(l, r); progress.put(l, r.getTicks()); } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/MachineRecipe.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/MachineRecipe.java index 9f87a0386..8f8bc18f0 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/MachineRecipe.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/MachineRecipe.java @@ -4,9 +4,9 @@ import org.bukkit.inventory.ItemStack; public class MachineRecipe { - int ticks; - ItemStack[] input; - ItemStack[] output; + private int ticks; + private ItemStack[] input; + private ItemStack[] output; public MachineRecipe(int seconds, ItemStack[] input, ItemStack[] output) { this.ticks = seconds * 2; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoAnvil.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoAnvil.java index 44ac5ecba..a8a069f17 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoAnvil.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoAnvil.java @@ -61,7 +61,7 @@ public abstract class AutoAnvil extends AContainer { ItemMeta im = item.getItemMeta(); ((Damageable) im).setDamage(MachineHelper.getDurability(item, timeleft, processing.get(b).getTicks())); im.setDisplayName(" "); - List lore = new ArrayList(); + List lore = new ArrayList<>(); lore.add(MachineHelper.getProgress(timeleft, processing.get(b).getTicks())); lore.add(""); lore.add(MachineHelper.getTimeLeft(timeleft / 2)); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoDisenchanter.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoDisenchanter.java index f23221ec0..6db9240bd 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoDisenchanter.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoDisenchanter.java @@ -62,7 +62,7 @@ public class AutoDisenchanter extends AContainer { ItemMeta im = item.getItemMeta(); ((Damageable) im).setDamage(MachineHelper.getDurability(item, timeleft, processing.get(b).getTicks())); im.setDisplayName(" "); - List lore = new ArrayList(); + List lore = new ArrayList<>(); lore.add(MachineHelper.getProgress(timeleft, processing.get(b).getTicks())); lore.add(""); lore.add(MachineHelper.getTimeLeft(timeleft / 2)); @@ -88,8 +88,8 @@ public class AutoDisenchanter extends AContainer { } else { MachineRecipe r = null; - Map enchantments = new HashMap(); - Set enchantments2 = new HashSet(); + Map enchantments = new HashMap<>(); + Set enchantments2 = new HashSet<>(); slots: for (int slot: getInputSlots()) { ItemStack target = BlockStorage.getInventory(b).getItemInSlot(slot == getInputSlots()[0] ? getInputSlots()[1]: getInputSlots()[0]); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoEnchanter.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoEnchanter.java index 6febd2a0f..2a3040949 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoEnchanter.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoEnchanter.java @@ -64,7 +64,7 @@ public class AutoEnchanter extends AContainer { ItemMeta im = item.getItemMeta(); ((Damageable) im).setDamage(MachineHelper.getDurability(item, timeleft, processing.get(b).getTicks())); im.setDisplayName(" "); - List lore = new ArrayList(); + List lore = new ArrayList<>(); lore.add(MachineHelper.getProgress(timeleft, processing.get(b).getTicks())); lore.add(""); lore.add(MachineHelper.getTimeLeft(timeleft / 2)); @@ -101,8 +101,8 @@ public class AutoEnchanter extends AContainer { // Enchant if (item != null && item.getType() == Material.ENCHANTED_BOOK && target != null) { - Map enchantments = new HashMap(); - Set enchantments2 = new HashSet(); + Map enchantments = new HashMap<>(); + Set enchantments2 = new HashSet<>(); int amount = 0; int special_amount = 0; EnchantmentStorageMeta meta = (EnchantmentStorageMeta) item.getItemMeta(); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutomatedCraftingChamber.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutomatedCraftingChamber.java index 2f77795f4..4f1ee4edd 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutomatedCraftingChamber.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutomatedCraftingChamber.java @@ -41,7 +41,7 @@ public abstract class AutomatedCraftingChamber extends SlimefunItem { private static final int[] border_in = {9, 10, 11, 12, 13, 18, 22, 27, 31, 36, 40, 45, 46, 47, 48, 49}; private static final int[] border_out = {23, 24, 25, 26, 32, 35, 41, 42, 43, 44}; - public static Map recipes = new HashMap(); + public static Map recipes = new HashMap<>(); public AutomatedCraftingChamber(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) { super(category, item, name, recipeType, recipe); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/CropGrowthAccelerator.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/CropGrowthAccelerator.java index 9c61f8596..a39c601ab 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/CropGrowthAccelerator.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/CropGrowthAccelerator.java @@ -32,7 +32,7 @@ public abstract class CropGrowthAccelerator extends SlimefunItem { private static final int[] border = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26}; - public static final Map crops = new HashMap(); + public static final Map crops = new HashMap<>(); static { crops.put(Material.WHEAT, 7); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricGoldPan.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricGoldPan.java index 3da5401f5..fede481dc 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricGoldPan.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricGoldPan.java @@ -51,7 +51,7 @@ public abstract class ElectricGoldPan extends AContainer { ItemMeta im = item.getItemMeta(); ((Damageable) im).setDamage(MachineHelper.getDurability(item, timeleft, processing.get(b).getTicks())); im.setDisplayName(" "); - List lore = new ArrayList(); + List lore = new ArrayList<>(); lore.add(MachineHelper.getProgress(timeleft, processing.get(b).getTicks())); lore.add(""); lore.add(MachineHelper.getTimeLeft(timeleft / 2)); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/FluidPump.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/FluidPump.java index 10a1b803c..ecaaf723a 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/FluidPump.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/FluidPump.java @@ -36,8 +36,8 @@ import me.mrCookieSlime.Slimefun.api.item_transport.ItemTransportFlow; public class FluidPump extends SlimefunItem{ - public static Map processing = new HashMap(); - public static Map progress = new HashMap(); + public static Map processing = new HashMap<>(); + public static Map progress = new HashMap<>(); private static final int[] border = {0, 1, 2, 3, 4, 5, 6, 7, 8, 13, 31, 36, 37, 38, 39, 40, 41, 42, 43, 44, 22}; private static final int[] border_in = {9, 10, 11, 12, 18, 21, 27, 28, 29, 30}; @@ -124,13 +124,13 @@ public class FluidPump extends SlimefunItem{ ItemStack output = new ItemStack(Material.LAVA_BUCKET); - if (!fits(b, new ItemStack[] {output})) return; + if (!fits(b, output)) return; ChargableBlock.addCharge(b, -getEnergyConsumption()); BlockStorage.getInventory(b).replaceExistingItem(slot, InvUtils.decreaseItem(BlockStorage.getInventory(b).getItemInSlot(slot), 1)); - pushItems(b, new ItemStack[] {output}); + pushItems(b, output); - List list = new ArrayList(); + List list = new ArrayList<>(); list.add(fluid.getLocation()); Vein.calculate(fluid.getLocation(), fluid.getLocation(), list, 64); list.get(list.size() - 1).getBlock().setType(Material.AIR); @@ -146,11 +146,11 @@ public class FluidPump extends SlimefunItem{ ItemStack output = new ItemStack(Material.WATER_BUCKET); - if (!fits(b, new ItemStack[] {output})) return; + if (!fits(b, output)) return; ChargableBlock.addCharge(b, -getEnergyConsumption()); BlockStorage.getInventory(b).replaceExistingItem(slot, InvUtils.decreaseItem(BlockStorage.getInventory(b).getItemInSlot(slot), 1)); - pushItems(b, new ItemStack[] {output}); + pushItems(b, output); fluid.setType(Material.AIR); @@ -198,11 +198,11 @@ public class FluidPump extends SlimefunItem{ return inv; } - protected boolean fits(Block b, ItemStack[] items) { + protected boolean fits(Block b, ItemStack... items) { return inject(b).addItem(items).isEmpty(); } - protected void pushItems(Block b, ItemStack[] items) { + protected void pushItems(Block b, ItemStack... items) { Inventory inv = inject(b); inv.addItem(items); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/HeatedPressureChamber.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/HeatedPressureChamber.java index d8e47667d..8aa717a1d 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/HeatedPressureChamber.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/HeatedPressureChamber.java @@ -63,7 +63,7 @@ public abstract class HeatedPressureChamber extends AContainer { public int[] getSlotsAccessedByItemTransport(BlockMenu menu, ItemTransportFlow flow, ItemStack item) { if (flow.equals(ItemTransportFlow.WITHDRAW)) return getOutputSlots(); - List slots = new ArrayList(); + List slots = new ArrayList<>(); for (int slot: getInputSlots()) { if (SlimefunManager.isItemSimiliar(menu.getItemInSlot(slot), item, true)) { @@ -98,8 +98,8 @@ public abstract class HeatedPressureChamber extends AContainer { registerRecipe(30, new ItemStack[] {SlimefunItems.BLISTERING_INGOT, SlimefunItems.CARBONADO}, new ItemStack[] {SlimefunItems.BLISTERING_INGOT_2}); registerRecipe(60, new ItemStack[] {SlimefunItems.BLISTERING_INGOT_2, new ItemStack(Material.NETHER_STAR)}, new ItemStack[] {SlimefunItems.BLISTERING_INGOT_3}); registerRecipe(90, new ItemStack[] {SlimefunItems.PLUTONIUM, SlimefunItems.URANIUM}, new ItemStack[] {SlimefunItems.BOOSTED_URANIUM}); - registerRecipe(60, new ItemStack[]{SlimefunItems.NETHER_ICE, SlimefunItems.PLUTONIUM}, new ItemStack[]{new CustomItem(SlimefunItems.ENRICHED_NETHER_ICE, 4)}); - registerRecipe(45, new ItemStack[]{SlimefunItems.ENRICHED_NETHER_ICE}, new ItemStack[]{new CustomItem(SlimefunItems.NETHER_ICE_COOLANT_CELL, 8)}); + registerRecipe(60, new ItemStack[] {SlimefunItems.NETHER_ICE, SlimefunItems.PLUTONIUM}, new ItemStack[]{new CustomItem(SlimefunItems.ENRICHED_NETHER_ICE, 4)}); + registerRecipe(45, new ItemStack[] {SlimefunItems.ENRICHED_NETHER_ICE}, new ItemStack[]{new CustomItem(SlimefunItems.NETHER_ICE_COOLANT_CELL, 8)}); } public String getInventoryTitle() { @@ -148,7 +148,7 @@ public abstract class HeatedPressureChamber extends AContainer { ItemMeta im = item.getItemMeta(); im.setDisplayName(" "); ((Damageable) im).setDamage(MachineHelper.getDurability(item, timeleft, processing.get(b).getTicks())); - List lore = new ArrayList(); + List lore = new ArrayList<>(); lore.add(MachineHelper.getProgress(timeleft, processing.get(b).getTicks())); lore.add(""); lore.add(MachineHelper.getTimeLeft(timeleft / 2)); @@ -174,8 +174,8 @@ public abstract class HeatedPressureChamber extends AContainer { } else { MachineRecipe r = null; - Map found = new HashMap(); - outer: + Map found = new HashMap<>(); + for (MachineRecipe recipe: recipes) { for (ItemStack input: recipe.getInput()) { slots: @@ -188,7 +188,7 @@ public abstract class HeatedPressureChamber extends AContainer { } if (found.size() == recipe.getInput().length) { r = recipe; - break outer; + break; } else found.clear(); } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/OilPump.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/OilPump.java index 134c3534a..0dbc0385b 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/OilPump.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/OilPump.java @@ -91,7 +91,7 @@ public abstract class OilPump extends AContainer { ItemMeta im = item.getItemMeta(); ((Damageable) im).setDamage(MachineHelper.getDurability(item, timeleft, processing.get(b).getTicks())); im.setDisplayName(" "); - List lore = new ArrayList(); + List lore = new ArrayList<>(); lore.add(MachineHelper.getProgress(timeleft, processing.get(b).getTicks())); lore.add(""); lore.add(MachineHelper.getTimeLeft(timeleft / 2)); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/Refinery.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/Refinery.java index 1a288e408..f3e08fb1f 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/Refinery.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/Refinery.java @@ -53,7 +53,7 @@ public abstract class Refinery extends AContainer { ItemMeta im = item.getItemMeta(); ((Damageable) im).setDamage(MachineHelper.getDurability(item, timeleft, processing.get(b).getTicks())); im.setDisplayName(" "); - List lore = new ArrayList(); + List lore = new ArrayList<>(); lore.add(MachineHelper.getProgress(timeleft, processing.get(b).getTicks())); lore.add(""); lore.add(MachineHelper.getTimeLeft(timeleft / 2)); diff --git a/src/me/mrCookieSlime/Slimefun/Setup/Files.java b/src/me/mrCookieSlime/Slimefun/Setup/Files.java index 1bdf6148f..ab7527c78 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/Files.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/Files.java @@ -34,19 +34,20 @@ public final class Files { } } - public static void delete(File folder) { + public static boolean delete(File folder) { File[] files = folder.listFiles(); if (files != null) { for (File current: files) { if (current.isDirectory()) { - delete(current); + if (!delete(current)) return false;; } else { - current.delete(); + if (!current.delete()) return false; } } } - folder.delete(); + + return folder.delete(); } } diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java index fd2750707..3370647af 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java @@ -1196,7 +1196,7 @@ public final class SlimefunSetup { public boolean onBlockBreak(BlockBreakEvent e, ItemStack item, int fortune, List drops) { if (SlimefunManager.isItemSimiliar(e.getPlayer().getInventory().getItemInMainHand(), SlimefunItems.LUMBER_AXE, true)) { if (MaterialHelper.isLog( e.getBlock().getType())) { - List logs = new ArrayList(); + List logs = new ArrayList<>(); TreeCalculator.getTree(e.getBlock().getLocation(), e.getBlock().getLocation(), logs); if (logs.contains(e.getBlock().getLocation())) logs.remove(e.getBlock().getLocation()); @@ -1541,9 +1541,10 @@ public final class SlimefunSetup { return false; } - Chest chest = (Chest) chestBlock.getState(); + Chest chest = (Chest) chestBlock.getState(); final Inventory inv = chest.getInventory(); - List ores = new ArrayList(); + List ores = new ArrayList<>(); + for (int x = b.getX() - 4; x <= b.getX() + 4; x++) { for (int z = b.getZ() - 4; z <= b.getZ() + 4; z++) { for (int y = b.getY(); y > 0; y--) { @@ -1599,9 +1600,10 @@ public final class SlimefunSetup { return false; } - Chest chest = (Chest) chestBlock.getState(); + Chest chest = (Chest) chestBlock.getState(); final Inventory inv = chest.getInventory(); - List ores = new ArrayList(); + List ores = new ArrayList<>(); + for (int x = b.getX() - 6; x <= b.getX() + 6; x++) { for (int z = b.getZ() - 6; z <= b.getZ() + 6; z++) { for (int y = b.getY(); y > 0; y--) { @@ -1789,15 +1791,19 @@ public final class SlimefunSetup { new ItemStack[] {new ItemStack(Material.GRAVEL), new ItemStack(Material.FLINT), new ItemStack(Material.GRAVEL), new ItemStack(Material.CLAY_BALL), new ItemStack(Material.GRAVEL), SlimefunItems.SIFTED_ORE}, Material.OAK_TRAPDOOR) .register(true, new MultiBlockInteractionHandler() { + private Random random = new Random(); + @Override public boolean onInteract(final Player p, MultiBlock mb, final Block b) { if (mb.isMultiBlock(SlimefunItem.getByID("AUTOMATED_PANNING_MACHINE"))) { if (CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true)) { final ItemStack input = p.getInventory().getItemInMainHand(); ItemStack output = null; - if (SlimefunStartup.chance(100, (Integer) Slimefun.getItemValue("GOLD_PAN", "chance.SIFTED_ORE"))) output = SlimefunItems.SIFTED_ORE; - else if (SlimefunStartup.chance(100, (Integer) Slimefun.getItemValue("GOLD_PAN", "chance.CLAY"))) output = new ItemStack(Material.CLAY_BALL); - else if (SlimefunStartup.chance(100, (Integer) Slimefun.getItemValue("GOLD_PAN", "chance.FLINT"))) output = new ItemStack(Material.FLINT); + + if (random.nextInt(100) < (Integer) Slimefun.getItemValue("GOLD_PAN", "chance.SIFTED_ORE")) output = SlimefunItems.SIFTED_ORE; + else if (random.nextInt(100) < (Integer) Slimefun.getItemValue("GOLD_PAN", "chance.CLAY")) output = new ItemStack(Material.CLAY_BALL); + else if (random.nextInt(100) < (Integer) Slimefun.getItemValue("GOLD_PAN", "chance.FLINT")) output = new ItemStack(Material.FLINT); + final ItemStack drop = output; if (input != null) { if (input.getType() == Material.GRAVEL) { @@ -1815,6 +1821,7 @@ public final class SlimefunSetup { return true; } } + Messages.local.sendTranslation(p, "machines.wrong-item", true); return true; } @@ -1864,7 +1871,7 @@ public final class SlimefunSetup { } if (e.getPlayer().getInventory().getItemInMainHand().getEnchantments().containsKey(Enchantment.DURABILITY)) { - if (SlimefunStartup.randomize(100) <= (60 + 40 / (e.getPlayer().getInventory().getItemInMainHand().getEnchantmentLevel(Enchantment.DURABILITY) + 1))) PlayerInventory.damageItemInHand(e.getPlayer()); + if (new Random().nextInt(100) <= (60 + 40 / (e.getPlayer().getInventory().getItemInMainHand().getEnchantmentLevel(Enchantment.DURABILITY) + 1))) PlayerInventory.damageItemInHand(e.getPlayer()); } else PlayerInventory.damageItemInHand(e.getPlayer()); @@ -2108,7 +2115,7 @@ public final class SlimefunSetup { public boolean onBlockBreak(BlockBreakEvent e, ItemStack item, int fortune, List drops) { if (SlimefunManager.isItemSimiliar(e.getPlayer().getInventory().getItemInMainHand(), SlimefunItems.PICKAXE_OF_VEIN_MINING, true)) { if (e.getBlock().getType().toString().endsWith("_ORE")) { - List blocks = new ArrayList(); + List blocks = new ArrayList<>(); Vein.calculate(e.getBlock().getLocation(), e.getBlock().getLocation(), blocks, 16); for (Location block: blocks) { Block b = block.getBlock(); @@ -2555,7 +2562,8 @@ public final class SlimefunSetup { PlayerInventory.consumeItemInHand(e.getPlayer()); FireworkShow.launchRandom(e.getPlayer(), 2); - List gifts = new ArrayList(); + List gifts = new ArrayList<>(); + for (int i = 0; i < 2; i++) { gifts.add(new CustomItem(SlimefunItems.EASTER_CARROT_PIE, 4)); gifts.add(new CustomItem(SlimefunItems.CHRISTMAS_APPLE_PIE, 4)); diff --git a/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java b/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java index 77ff40444..63986e386 100644 --- a/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java +++ b/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java @@ -289,10 +289,10 @@ public final class SlimefunGuide { clearHistory(p.getUniqueId()); if (book) { - List pages = new ArrayList(); - List texts = new ArrayList(); - List tooltips = new ArrayList(); - List actions = new ArrayList(); + List pages = new ArrayList<>(); + List texts = new ArrayList<>(); + List tooltips = new ArrayList<>(); + List actions = new ArrayList<>(); int tier = 0; @@ -501,7 +501,7 @@ public final class SlimefunGuide { index++; } else { - List parents = new ArrayList(); + List parents = new ArrayList<>(); parents.add(""); parents.add(ChatColor.translateAlternateColorCodes('&', "&rYou need to unlock all Items")); parents.add(ChatColor.translateAlternateColorCodes('&', "&rfrom the following Categories first:")); @@ -549,10 +549,10 @@ public final class SlimefunGuide { if (category == null) return; if (book && category.getItems().size() < 250) { - List pages = new ArrayList(); - List texts = new ArrayList(); - List tooltips = new ArrayList(); - List actions = new ArrayList(); + List pages = new ArrayList<>(); + List texts = new ArrayList<>(); + List tooltips = new ArrayList<>(); + List actions = new ArrayList<>(); for (final SlimefunItem item: category.getItems()) { if (Slimefun.hasPermission(p, item, false)) { diff --git a/src/me/mrCookieSlime/Slimefun/SlimefunStartup.java b/src/me/mrCookieSlime/Slimefun/SlimefunStartup.java index 922f9daec..9179ad4b7 100644 --- a/src/me/mrCookieSlime/Slimefun/SlimefunStartup.java +++ b/src/me/mrCookieSlime/Slimefun/SlimefunStartup.java @@ -100,7 +100,7 @@ public class SlimefunStartup extends JavaPlugin { private boolean coreProtect = false; // Supported Versions of Minecraft - final String[] supported = {"v1_14_"}; + private final String[] supported = {"v1_14_"}; @Override public void onEnable() { diff --git a/src/me/mrCookieSlime/Slimefun/androids/AndroidObject.java b/src/me/mrCookieSlime/Slimefun/androids/AndroidObject.java index 150be42a7..9f4d60d25 100644 --- a/src/me/mrCookieSlime/Slimefun/androids/AndroidObject.java +++ b/src/me/mrCookieSlime/Slimefun/androids/AndroidObject.java @@ -4,8 +4,8 @@ import org.bukkit.block.Block; public class AndroidObject { - ProgrammableAndroid android; - Block b; + private ProgrammableAndroid android; + private Block b; public AndroidObject(ProgrammableAndroid android, Block b) { this.android = android; diff --git a/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java b/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java index db17690ce..3223523e9 100644 --- a/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java +++ b/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java @@ -273,80 +273,67 @@ public abstract class ProgrammableAndroid extends SlimefunItem { ScriptPart part = ScriptPart.valueOf(script[index]); if (getAndroidType().isType(part.getRequiredType())) { + BlockFace face = BlockFace.valueOf(BlockStorage.getLocationInfo(b.getLocation(), "rotation")); + double damage = getTier() < 2 ? 20D : 4D * getTier(); + switch (part) { - case GO_DOWN: { + case GO_DOWN: try { - BlockFace face = BlockFace.valueOf(BlockStorage.getLocationInfo(b.getLocation(), "rotation")); Block block = b.getRelative(BlockFace.DOWN); move(b, face, block); } catch (Exception e) { e.printStackTrace(); } break; - } - case GO_FORWARD: { + case GO_FORWARD: try { - BlockFace face = BlockFace.valueOf(BlockStorage.getLocationInfo(b.getLocation(), "rotation")); Block block = b.getRelative(face); move(b, face, block); } catch (Exception e) { e.printStackTrace(); } break; - } - case GO_UP: { + case GO_UP: try { - BlockFace face = BlockFace.valueOf(BlockStorage.getLocationInfo(b.getLocation(), "rotation")); Block block = b.getRelative(BlockFace.UP); move(b, face, block); } catch (Exception e) { e.printStackTrace(); } break; - } - case REPEAT: { + case REPEAT: BlockStorage.addBlockInfo(b, "index", String.valueOf(0)); break; - } - case TURN_LEFT: { - int rotIndex = directions.indexOf(BlockFace.valueOf(BlockStorage.getLocationInfo(b.getLocation(), "rotation"))) - 1; - if (rotIndex < 0) rotIndex = directions.size() - 1; - BlockFace dir = directions.get(rotIndex); - Rotatable blockData = (Rotatable) b.getBlockData(); - blockData.setRotation(dir); - b.setBlockData(blockData); - BlockStorage.addBlockInfo(b, "rotation", dir.toString()); + case TURN_LEFT: + int indexLeft = directions.indexOf(BlockFace.valueOf(BlockStorage.getLocationInfo(b.getLocation(), "rotation"))) - 1; + if (indexLeft < 0) indexLeft = directions.size() - 1; + Rotatable rotatableLeft = (Rotatable) b.getBlockData(); + rotatableLeft.setRotation(directions.get(indexLeft)); + b.setBlockData(rotatableLeft); + BlockStorage.addBlockInfo(b, "rotation", directions.get(indexLeft).toString()); break; - } case TURN_RIGHT: { - int rotIndex = directions.indexOf(BlockFace.valueOf(BlockStorage.getLocationInfo(b.getLocation(), "rotation"))) + 1; - if (rotIndex == directions.size()) rotIndex = 0; - BlockFace dir = directions.get(rotIndex); - Rotatable blockData = (Rotatable) b.getBlockData(); - blockData.setRotation(dir); - b.setBlockData(blockData); - BlockStorage.addBlockInfo(b, "rotation", dir.toString()); + int indexRight = directions.indexOf(BlockFace.valueOf(BlockStorage.getLocationInfo(b.getLocation(), "rotation"))) + 1; + if (indexRight == directions.size()) indexRight = 0; + Rotatable rotatableRight = (Rotatable) b.getBlockData(); + rotatableRight.setRotation(directions.get(indexRight)); + b.setBlockData(rotatableRight); + BlockStorage.addBlockInfo(b, "rotation", directions.get(indexRight).toString()); break; } - case DIG_FORWARD: { - Block block = b.getRelative(BlockFace.valueOf(BlockStorage.getLocationInfo(b.getLocation(), "rotation"))); - mine(b, block); + case DIG_FORWARD: + mine(b, b.getRelative(face)); break; - } - case DIG_UP: { - Block block = b.getRelative(BlockFace.UP); - mine(b, block); + case DIG_UP: + mine(b, b.getRelative(BlockFace.UP)); break; - } - case DIG_DOWN: { - Block block = b.getRelative(BlockFace.DOWN); - mine(b, block); + case DIG_DOWN: + mine(b, b.getRelative(BlockFace.DOWN)); break; - } - case CATCH_FISH: { - Block block = b.getRelative(BlockFace.DOWN); - if (block.getType().equals(Material.WATER)) { - block.getWorld().playSound(block.getLocation(), Sound.ENTITY_PLAYER_SPLASH, 1F, 1F); + case CATCH_FISH: + Block water = b.getRelative(BlockFace.DOWN); + if (water.getType().equals(Material.WATER)) { + water.getWorld().playSound(water.getLocation(), Sound.ENTITY_PLAYER_SPLASH, 1F, 1F); if (CSCoreLib.randomizer().nextInt(100) < 10 * getTier()) { ItemStack drop = fish[CSCoreLib.randomizer().nextInt(fish.length)]; if (fits(b, drop)) pushItems(b, drop); @@ -354,30 +341,19 @@ public abstract class ProgrammableAndroid extends SlimefunItem { } break; - } - case MOVE_AND_DIG_FORWARD: { - BlockFace face = BlockFace.valueOf(BlockStorage.getLocationInfo(b.getLocation(), "rotation")); - Block block = b.getRelative(face); - movedig(b, face, block); + case MOVE_AND_DIG_FORWARD: + movedig(b, face, b.getRelative(face)); break; - } case MOVE_AND_DIG_UP: { - BlockFace face = BlockFace.valueOf(BlockStorage.getLocationInfo(b.getLocation(), "rotation")); - Block block = b.getRelative(BlockFace.UP); - movedig(b, face, block); + movedig(b, face, b.getRelative(BlockFace.UP)); break; } - case MOVE_AND_DIG_DOWN: { - BlockFace face = BlockFace.valueOf(BlockStorage.getLocationInfo(b.getLocation(), "rotation")); - Block block = b.getRelative(BlockFace.DOWN); - movedig(b, face, block); + case MOVE_AND_DIG_DOWN: + movedig(b, face, b.getRelative(BlockFace.DOWN)); break; - } - case INTERFACE_ITEMS: { - BlockFace face = BlockFace.valueOf(BlockStorage.getLocationInfo(b.getLocation(), "rotation")); - Block block = b.getRelative(face); - if (BlockStorage.check(block, "ANDROID_INTERFACE_ITEMS") && block.getState() instanceof Dispenser) { - Dispenser d = (Dispenser) block.getState(); + case INTERFACE_ITEMS: + if (BlockStorage.check(b.getRelative(face), "ANDROID_INTERFACE_ITEMS") && b.getRelative(face).getState() instanceof Dispenser) { + Dispenser d = (Dispenser) b.getRelative(face).getState(); for (int slot: getOutputSlots()) { ItemStack stack = BlockStorage.getInventory(b).getItemInSlot(slot); if (stack != null) { @@ -393,12 +369,9 @@ public abstract class ProgrammableAndroid extends SlimefunItem { } } break; - } - case INTERFACE_FUEL: { - BlockFace face = BlockFace.valueOf(BlockStorage.getLocationInfo(b.getLocation(), "rotation")); - Block block = b.getRelative(face); - if (BlockStorage.check(block, "ANDROID_INTERFACE_FUEL") && block.getState() instanceof Dispenser) { - Dispenser d = (Dispenser) block.getState(); + case INTERFACE_FUEL: + if (BlockStorage.check(b.getRelative(face), "ANDROID_INTERFACE_FUEL") && b.getRelative(face).getState() instanceof Dispenser) { + Dispenser d = (Dispenser) b.getRelative(face).getState(); for (int slot = 0; slot < 9; slot++) { ItemStack item = d.getInventory().getItem(slot); if (item != null) { @@ -420,36 +393,23 @@ public abstract class ProgrammableAndroid extends SlimefunItem { } } break; - } - case FARM_FORWARD: { - BlockFace face = BlockFace.valueOf(BlockStorage.getLocationInfo(b.getLocation(), "rotation")); - Block block = b.getRelative(face); - farm(b, block); + case FARM_FORWARD: + farm(b, b.getRelative(face)); break; - } - case FARM_DOWN: { - Block block = b.getRelative(BlockFace.DOWN); - farm(b, block); + case FARM_DOWN: + farm(b, b.getRelative(BlockFace.DOWN)); break; - } - case FARM_EXOTIC_FORWARD: { - BlockFace face = BlockFace.valueOf(BlockStorage.getLocationInfo(b.getLocation(), "rotation")); - Block block = b.getRelative(face); - exoticFarm(b, block); + case FARM_EXOTIC_FORWARD: + exoticFarm(b, b.getRelative(face)); break; - } - case FARM_EXOTIC_DOWN: { - Block block = b.getRelative(BlockFace.DOWN); - exoticFarm(b, block); + case FARM_EXOTIC_DOWN: + exoticFarm(b, b.getRelative(BlockFace.DOWN)); break; - } - case CHOP_TREE: { - BlockFace face = BlockFace.valueOf(BlockStorage.getLocationInfo(b.getLocation(), "rotation")); - Block block = b.getRelative(face); - if (MaterialHelper.isLog( block.getType())) { - List list = new ArrayList(); - list.add(block.getLocation()); - TreeCalculator.getTree(block.getLocation(), block.getLocation(), list); + case CHOP_TREE: + if (MaterialHelper.isLog(b.getRelative(face).getType())) { + List list = new ArrayList<>(); + list.add(b.getRelative(face).getLocation()); + TreeCalculator.getTree(b.getRelative(face).getLocation(), b.getRelative(face).getLocation(), list); if (!list.isEmpty()) { refresh = false; Block log = list.get(list.size() - 1).getBlock(); @@ -460,7 +420,7 @@ public abstract class ProgrammableAndroid extends SlimefunItem { if (fits(b, items)) { pushItems(b, items); log.getWorld().playEffect(log.getLocation(), Effect.STEP_SOUND, log.getType()); - if (log.getY() == block.getY()) { + if (log.getY() == b.getRelative(face).getY()) { log.setType(MaterialHelper.getSaplingFromLog(log.getType())); } else log.setType(Material.AIR); @@ -470,10 +430,7 @@ public abstract class ProgrammableAndroid extends SlimefunItem { } } break; - } - case ATTACK_MOBS_ANIMALS: { - double damage = getTier() < 2 ? 20D : 4D * getTier(); - + case ATTACK_MOBS_ANIMALS: entities: for (Entity n: AndroidStatusHologram.getNearbyEntities(b, 4D + getTier())) { switch (BlockFace.valueOf(BlockStorage.getLocationInfo(b.getLocation(), "rotation"))) { @@ -522,10 +479,7 @@ public abstract class ProgrammableAndroid extends SlimefunItem { } } break; - } - case ATTACK_MOBS: { - double damage = getTier() < 2 ? 20D : 4D * getTier(); - + case ATTACK_MOBS: entities: for (Entity n: AndroidStatusHologram.getNearbyEntities(b, 4D + getTier())) { if (n instanceof Animals) continue; @@ -575,11 +529,7 @@ public abstract class ProgrammableAndroid extends SlimefunItem { } } break; - } - - case ATTACK_ANIMALS: { - double damage = getTier() < 2 ? 20D : 4D * getTier(); - + case ATTACK_ANIMALS: entities: for (Entity n: AndroidStatusHologram.getNearbyEntities(b, 4D + getTier())) { if (n instanceof Monster) continue; @@ -629,11 +579,7 @@ public abstract class ProgrammableAndroid extends SlimefunItem { } } break; - } - - case ATTACK_ANIMALS_ADULT: { - double damage = getTier() < 2 ? 20D : 4D * getTier(); - + case ATTACK_ANIMALS_ADULT: entities: for (Entity n: AndroidStatusHologram.getNearbyEntities(b, 4D + getTier())) { if (n instanceof Monster) continue; @@ -684,7 +630,6 @@ public abstract class ProgrammableAndroid extends SlimefunItem { } } break; - } default: break; } diff --git a/src/me/mrCookieSlime/Slimefun/api/Slimefun.java b/src/me/mrCookieSlime/Slimefun/api/Slimefun.java index b11f58920..7e30f866c 100644 --- a/src/me/mrCookieSlime/Slimefun/api/Slimefun.java +++ b/src/me/mrCookieSlime/Slimefun/api/Slimefun.java @@ -259,7 +259,7 @@ public class Slimefun { * @return the list of all the IDs of the enabled items. */ public static List listIDs() { - List ids = new ArrayList(); + List ids = new ArrayList<>(); for (SlimefunItem item: SlimefunItem.list()) { ids.add(item.getID()); } @@ -273,7 +273,7 @@ public class Slimefun { * @see #current_categories */ public static List listCategories() { - List items = new ArrayList(); + List items = new ArrayList<>(); for (Category c: Category.list()) { items.add(c.getItem()); } @@ -348,6 +348,6 @@ public class Slimefun { } public static List getGuideHandlers(int tier) { - return guide_handlers.containsKey(tier) ? guide_handlers.get(tier): new ArrayList(); + return guide_handlers.containsKey(tier) ? guide_handlers.get(tier): new ArrayList<>(); } } \ No newline at end of file diff --git a/src/me/mrCookieSlime/Slimefun/api/energy/EnergyNet.java b/src/me/mrCookieSlime/Slimefun/api/energy/EnergyNet.java index 223afe8e6..c6fd1e35f 100644 --- a/src/me/mrCookieSlime/Slimefun/api/energy/EnergyNet.java +++ b/src/me/mrCookieSlime/Slimefun/api/energy/EnergyNet.java @@ -26,9 +26,9 @@ public class EnergyNet extends Network { private static final int RANGE = 6; - public static Set machines_input = new HashSet(); - public static Set machines_storage = new HashSet(); - public static Set machines_output = new HashSet(); + public static Set machines_input = new HashSet<>(); + public static Set machines_storage = new HashSet<>(); + public static Set machines_output = new HashSet<>(); public static NetworkComponent getComponent(Block b) { return getComponent(b.getLocation()); @@ -79,9 +79,9 @@ public class EnergyNet extends Network { return energy_network; } - private Set input = new HashSet(); - private Set storage = new HashSet(); - private Set output = new HashSet(); + private Set input = new HashSet<>(); + private Set storage = new HashSet<>(); + private Set output = new HashSet<>(); protected EnergyNet(Location l) { super(l); diff --git a/src/me/mrCookieSlime/Slimefun/api/inventory/UniversalBlockMenu.java b/src/me/mrCookieSlime/Slimefun/api/inventory/UniversalBlockMenu.java index e2a982d9f..5f611d72c 100644 --- a/src/me/mrCookieSlime/Slimefun/api/inventory/UniversalBlockMenu.java +++ b/src/me/mrCookieSlime/Slimefun/api/inventory/UniversalBlockMenu.java @@ -12,8 +12,8 @@ import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config; public class UniversalBlockMenu extends DirtyChestMenu { - BlockMenuPreset preset; - ItemManipulationEvent event; + private BlockMenuPreset preset; + private ItemManipulationEvent event; public UniversalBlockMenu(BlockMenuPreset preset) { super(preset.getTitle()); diff --git a/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoManager.java b/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoManager.java index 9fe206b40..5a67ee143 100644 --- a/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoManager.java +++ b/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoManager.java @@ -202,7 +202,7 @@ public class CargoManager { boolean data = blockInfo.getString("filter-durability").equals("true"); if (blockInfo.getString("filter-type").equals("whitelist")) { - List items = new ArrayList(); + List items = new ArrayList<>(); for (int slot: slots) { ItemStack template = menu.getItemInSlot(slot); if (template != null) items.add(new CustomItem(template, 1)); diff --git a/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoNet.java b/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoNet.java index 72112f786..90d5f172c 100644 --- a/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoNet.java +++ b/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoNet.java @@ -33,6 +33,7 @@ import me.mrCookieSlime.Slimefun.api.network.Network; import me.mrCookieSlime.Slimefun.holograms.CargoHologram; public class CargoNet extends Network { + public static boolean EXTRA_CHANNELS = false; private static final int RANGE = 5; @@ -67,15 +68,15 @@ public class CargoNet extends Network { return getNetworkFromLocation(b.getLocation()) != null; } - private Set inputNodes = new HashSet(); - private Set outputNodes = new HashSet(); - private Set advancedOutputNodes = new HashSet(); + private Set inputNodes = new HashSet<>(); + private Set outputNodes = new HashSet<>(); + private Set advancedOutputNodes = new HashSet<>(); //Chest Terminal Stuff - final Set terminals = new HashSet(); - final Set imports = new HashSet(); - final Set exports = new HashSet(); + private final Set terminals = new HashSet<>(); + private final Set imports = new HashSet<>(); + private final Set exports = new HashSet<>(); protected CargoNet(Location l) { super(l); diff --git a/src/me/mrCookieSlime/Slimefun/api/item_transport/ItemRequest.java b/src/me/mrCookieSlime/Slimefun/api/item_transport/ItemRequest.java index ee6d54199..1ff9215fc 100644 --- a/src/me/mrCookieSlime/Slimefun/api/item_transport/ItemRequest.java +++ b/src/me/mrCookieSlime/Slimefun/api/item_transport/ItemRequest.java @@ -5,10 +5,10 @@ import org.bukkit.inventory.ItemStack; public class ItemRequest { - ItemStack item; - ItemTransportFlow flow; - Location terminal; - int slot; + private ItemStack item; + private ItemTransportFlow flow; + private Location terminal; + private int slot; public ItemRequest(Location terminal, int slot, ItemStack item, ItemTransportFlow flow) { this.terminal = terminal; diff --git a/src/me/mrCookieSlime/Slimefun/commands/SlimefunTabCompleter.java b/src/me/mrCookieSlime/Slimefun/commands/SlimefunTabCompleter.java index ca644427c..2e8601421 100644 --- a/src/me/mrCookieSlime/Slimefun/commands/SlimefunTabCompleter.java +++ b/src/me/mrCookieSlime/Slimefun/commands/SlimefunTabCompleter.java @@ -22,7 +22,7 @@ public class SlimefunTabCompleter implements TabCompleter { return createReturnList(Slimefun.listIDs(), args[2]); } else if (args[0].equalsIgnoreCase("research")) { - List researches = new ArrayList(); + List researches = new ArrayList<>(); for (Research res : Research.list()) { researches.add(res.getName().toUpperCase().replace(" ", "_")); } diff --git a/src/me/mrCookieSlime/Slimefun/listeners/DamageListener.java b/src/me/mrCookieSlime/Slimefun/listeners/DamageListener.java index d2c86fb2c..57b6a1410 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/DamageListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/DamageListener.java @@ -119,7 +119,7 @@ public class DamageListener implements Listener { if (!e.getEntity().getCanPickupItems() && Talisman.checkFor(e, SlimefunItem.getByID("HUNTER_TALISMAN")) && !(e.getEntity() instanceof Player)) { - List newDrops = new ArrayList(); + List newDrops = new ArrayList<>(); for (ItemStack drop : e.getDrops()) { newDrops.add(drop); } diff --git a/src/me/mrCookieSlime/Slimefun/listeners/TeleporterListener.java b/src/me/mrCookieSlime/Slimefun/listeners/TeleporterListener.java index 7cf52335f..29bb56c8b 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/TeleporterListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/TeleporterListener.java @@ -15,7 +15,7 @@ import org.bukkit.event.player.PlayerInteractEvent; public class TeleporterListener implements Listener { - BlockFace[] faces = {BlockFace.NORTH, BlockFace.NORTH_EAST, BlockFace.EAST, BlockFace.SOUTH_EAST, BlockFace.SOUTH, BlockFace.SOUTH_WEST, BlockFace.WEST, BlockFace.NORTH_WEST}; + private final BlockFace[] faces = {BlockFace.NORTH, BlockFace.NORTH_EAST, BlockFace.EAST, BlockFace.SOUTH_EAST, BlockFace.SOUTH, BlockFace.SOUTH_WEST, BlockFace.WEST, BlockFace.NORTH_WEST}; public TeleporterListener(SlimefunStartup plugin) { plugin.getServer().getPluginManager().registerEvents(this, plugin); From d6aff405caa1a653391533d432eb98ac218257c8 Mon Sep 17 00:00:00 2001 From: Sfiguz7 Date: Wed, 28 Aug 2019 23:47:25 +0200 Subject: [PATCH 024/169] Reduced technical debt --- .../Slimefun/Lists/Categories.java | 30 +- .../Slimefun/Lists/SlimefunItems.java | 560 +++++++++--------- 2 files changed, 295 insertions(+), 295 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/Lists/Categories.java b/src/me/mrCookieSlime/Slimefun/Lists/Categories.java index 47ef4b0c7..68423f422 100644 --- a/src/me/mrCookieSlime/Slimefun/Lists/Categories.java +++ b/src/me/mrCookieSlime/Slimefun/Lists/Categories.java @@ -23,28 +23,28 @@ public final class Categories { private Categories() {} - public static Category WEAPONS = new Category(new MenuItem(Material.GOLDEN_SWORD, "&7Weapons", 0, "open"), 1); + public static final Category WEAPONS = new Category(new MenuItem(Material.GOLDEN_SWORD, "&7Weapons", 0, "open"), 1); public static Category PORTABLE = null; - public static Category FOOD = new Category(new MenuItem(Material.APPLE, "&7Food", 0, "open"), 2); + public static final Category FOOD = new Category(new MenuItem(Material.APPLE, "&7Food", 0, "open"), 2); public static Category MACHINES_1 = null; public static LockedCategory ELECTRICITY = null; public static LockedCategory GPS = null; - public static Category ARMOR = new Category(new MenuItem(Material.IRON_CHESTPLATE, "&7Armor", 0, "open"), 2); - public static Category LUMPS_AND_MAGIC = new Category(new MenuItem(Material.FIRE_CHARGE, "&7Magical Items", 0, "open"), 2); - public static Category MAGIC = new Category(new MenuItem(Material.BLAZE_POWDER, "&7Magical Gadgets", 0, "open"), 3); + public static final Category ARMOR = new Category(new MenuItem(Material.IRON_CHESTPLATE, "&7Armor", 0, "open"), 2); + public static final Category LUMPS_AND_MAGIC = new Category(new MenuItem(Material.FIRE_CHARGE, "&7Magical Items", 0, "open"), 2); + public static final Category MAGIC = new Category(new MenuItem(Material.BLAZE_POWDER, "&7Magical Gadgets", 0, "open"), 3); public static Category MISC = null; - public static Category TECH = new Category(new CustomArmor(new MenuItem(Material.LEATHER_CHESTPLATE, "&7Technical Gadgets", 0, "open"), Color.SILVER), 3); + public static final Category TECH = new Category(new CustomArmor(new MenuItem(Material.LEATHER_CHESTPLATE, "&7Technical Gadgets", 0, "open"), Color.SILVER), 3); public static Category RESOURCES = null; public static Category CARGO = null; - public static Category TECH_MISC = new Category(new MenuItem(Material.COMPARATOR, "&7Technical Components", 0, "open"), 2); - public static Category MAGIC_ARMOR = new Category(new MenuItem(Material.GOLDEN_CHESTPLATE, "&7Magical Armor", 0, "open"), 2); - public static Category TALISMANS_1 = new Category(new MenuItem(Material.EMERALD, "&7Talismans - &aTier I", 0, "open"), 2); - public static LockedCategory TALISMANS_2 = new LockedCategory(new MenuItem(Material.EMERALD, "&7Talismans - &aTier II", 0, "open"), 3, TALISMANS_1); - public static Category TOOLS = new Category(new MenuItem(Material.GOLDEN_PICKAXE, "&7Tools", 0, "open"), 1); - public static SeasonCategory CHRISTMAS = new SeasonCategory(12, 1, new MenuItem(Material.NETHER_STAR, "&aC&ch&ar&ci&as&ct&am&ca&as", 0, ChatColor.translateAlternateColorCodes('&', "&chelp &aSanta"))); - public static SeasonCategory VALENTINES_DAY = new SeasonCategory(2, 2, new MenuItem(Material.POPPY, "&dValentine's Day", 0, ChatColor.translateAlternateColorCodes('&', "&dcelebrate Love"))); - public static SeasonCategory EASTER = new SeasonCategory(4, 2, new MenuItem(Material.EGG, "&6Easter", 0, ChatColor.translateAlternateColorCodes('&', "&apaint some Eggs"))); - public static SeasonCategory BIRTHDAY = new SeasonCategory(10, 1, new MenuItem(Material.FIREWORK_ROCKET, "&a&lTheBusyBiscuit's Birthday &7(26th October)", 0, ChatColor.translateAlternateColorCodes('&', "&acelebrate with me"))); + public static final Category TECH_MISC = new Category(new MenuItem(Material.COMPARATOR, "&7Technical Components", 0, "open"), 2); + public static final Category MAGIC_ARMOR = new Category(new MenuItem(Material.GOLDEN_CHESTPLATE, "&7Magical Armor", 0, "open"), 2); + public static final Category TALISMANS_1 = new Category(new MenuItem(Material.EMERALD, "&7Talismans - &aTier I", 0, "open"), 2); + public static final LockedCategory TALISMANS_2 = new LockedCategory(new MenuItem(Material.EMERALD, "&7Talismans - &aTier II", 0, "open"), 3, TALISMANS_1); + public static final Category TOOLS = new Category(new MenuItem(Material.GOLDEN_PICKAXE, "&7Tools", 0, "open"), 1); + public static final SeasonCategory CHRISTMAS = new SeasonCategory(12, 1, new MenuItem(Material.NETHER_STAR, "&aC&ch&ar&ci&as&ct&am&ca&as", 0, ChatColor.translateAlternateColorCodes('&', "&chelp &aSanta"))); + public static final SeasonCategory VALENTINES_DAY = new SeasonCategory(2, 2, new MenuItem(Material.POPPY, "&dValentine's Day", 0, ChatColor.translateAlternateColorCodes('&', "&dcelebrate Love"))); + public static final SeasonCategory EASTER = new SeasonCategory(4, 2, new MenuItem(Material.EGG, "&6Easter", 0, ChatColor.translateAlternateColorCodes('&', "&apaint some Eggs"))); + public static final SeasonCategory BIRTHDAY = new SeasonCategory(10, 1, new MenuItem(Material.FIREWORK_ROCKET, "&a&lTheBusyBiscuit's Birthday &7(26th October)", 0, ChatColor.translateAlternateColorCodes('&', "&acelebrate with me"))); static { try { diff --git a/src/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java b/src/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java index 854c783e2..b25f06ef2 100644 --- a/src/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java +++ b/src/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java @@ -24,27 +24,27 @@ public final class SlimefunItems { public static ItemStack PORTABLE_CRAFTER = null; public static ItemStack PORTABLE_DUSTBIN = null; public static ItemStack ENDER_BACKPACK = null; - public static ItemStack MAGIC_EYE_OF_ENDER = new CustomItem(Material.ENDER_EYE, "&6&lMagic Eye of Ender", "&4&lRequires full Ender Armor", "", "&7&eRight Click&7 to shoot an Ender Pearl"); - public static ItemStack BROKEN_SPAWNER = new CustomItem(Material.SPAWNER, "&cBroken Spawner", "&7Type: &b", "", "&cFractured, must be repaired in an Ancient Altar"); - public static ItemStack REPAIRED_SPAWNER = new CustomItem(Material.SPAWNER, "&bReinforced Spawner", "&7Type: &b"); - public static ItemStack INFERNAL_BONEMEAL = new CustomItem(Material.BONE_MEAL, "&4Infernal Bonemeal", "", "&cSpeeds up the Growth of", "&cNether Warts as well"); + public static final ItemStack MAGIC_EYE_OF_ENDER = new CustomItem(Material.ENDER_EYE, "&6&lMagic Eye of Ender", "&4&lRequires full Ender Armor", "", "&7&eRight Click&7 to shoot an Ender Pearl"); + public static final ItemStack BROKEN_SPAWNER = new CustomItem(Material.SPAWNER, "&cBroken Spawner", "&7Type: &b", "", "&cFractured, must be repaired in an Ancient Altar"); + public static final ItemStack REPAIRED_SPAWNER = new CustomItem(Material.SPAWNER, "&bReinforced Spawner", "&7Type: &b"); + public static final ItemStack INFERNAL_BONEMEAL = new CustomItem(Material.BONE_MEAL, "&4Infernal Bonemeal", "", "&cSpeeds up the Growth of", "&cNether Warts as well"); /* Gadgets */ - public static ItemStack GOLD_PAN = new CustomItem(Material.BOWL, "&6Gold Pan", "&a&oCan get you all kinds of Goodies...", "", "&7&eRight Click&7 to pan various Stuff out of Gravel"); - public static ItemStack PARACHUTE = new CustomArmor(new CustomItem(Material.LEATHER_CHESTPLATE, "&r&lParachute", "", "&7Hold &eShift&7 to use"), Color.WHITE); - public static ItemStack GRAPPLING_HOOK = new CustomItem(Material.LEAD, "&6Grappling Hook", "", "&7&eRight Click&7 to use"); - public static ItemStack SOLAR_HELMET = new CustomItem(Material.IRON_HELMET, "&bSolar Helmet", "", "&a&oCharges held Items and Armor"); - public static ItemStack CLOTH = new CustomItem(Material.PAPER, "&bCloth"); + public static final ItemStack GOLD_PAN = new CustomItem(Material.BOWL, "&6Gold Pan", "&a&oCan get you all kinds of Goodies...", "", "&7&eRight Click&7 to pan various Stuff out of Gravel"); + public static final ItemStack PARACHUTE = new CustomArmor(new CustomItem(Material.LEATHER_CHESTPLATE, "&r&lParachute", "", "&7Hold &eShift&7 to use"), Color.WHITE); + public static final ItemStack GRAPPLING_HOOK = new CustomItem(Material.LEAD, "&6Grappling Hook", "", "&7&eRight Click&7 to use"); + public static final ItemStack SOLAR_HELMET = new CustomItem(Material.IRON_HELMET, "&bSolar Helmet", "", "&a&oCharges held Items and Armor"); + public static final ItemStack CLOTH = new CustomItem(Material.PAPER, "&bCloth"); public static ItemStack CAN = null; - public static ItemStack NIGHT_VISION_GOGGLES = new CustomArmor(new CustomItem(Material.LEATHER_HELMET, "&aNight Vision Goggles", "", "&9+ Night Vision"), Color.BLACK); - public static ItemStack FARMER_SHOES = new CustomArmor(new CustomItem(Material.LEATHER_BOOTS, "&eFarmer Shoes", "", "&6&oPrevents you from trampling your Crops"), Color.YELLOW); + public static final ItemStack NIGHT_VISION_GOGGLES = new CustomArmor(new CustomItem(Material.LEATHER_HELMET, "&aNight Vision Goggles", "", "&9+ Night Vision"), Color.BLACK); + public static final ItemStack FARMER_SHOES = new CustomArmor(new CustomItem(Material.LEATHER_BOOTS, "&eFarmer Shoes", "", "&6&oPrevents you from trampling your Crops"), Color.YELLOW); public static ItemStack INFUSED_MAGNET = null; - public static ItemStack FLASK_OF_KNOWLEDGE = new CustomItem(Material.GLASS_BOTTLE, "&cFlask of Knowledge", "", "&rAllows you to store some of", "&ryour Experience in a Bottle", "&7Cost: &a1 Level"); - public static ItemStack RAG = new CustomItem(Material.PAPER, "&cRag", "", "&aLevel I - Medical Supply", "", "&rRestores 2 Hearts", "&rExtinguishes Fire", "", "&7&eRight Click&7 to use"); - public static ItemStack BANDAGE = new CustomItem(Material.PAPER, "&cBandage", "", "&aLevel II - Medical Supply", "", "&rRestores 4 Hearts", "&rExtinguishes Fire", "", "&7&eRight Click&7 to use"); - public static ItemStack SPLINT = new CustomItem(Material.STICK, "&cSplint", "", "&aLevel I - Medical Supply", "", "&rRestores 2 Hearts", "", "&7&eRight Click&7 to use"); - public static ItemStack VITAMINS = new CustomItem(Material.NETHER_WART, "&cVitamins", "", "&aLevel III - Medical Supply", "", "&rRestores 4 Hearts", "&rExtinguishes Fire", "&rCures Poison/Wither/Radiation", "", "&7&eRight Click&7 to use"); - public static ItemStack MEDICINE = new CustomPotion("&cMedicine", Color.RED, new PotionEffect(PotionEffectType.HEAL, 0, 0), "", "&aLevel III - Medical Supply", "", "&rRestores 4 Hearts", "&rExtinguishes Fire", "&rCures Poison/Wither/Radiation"); + public static final ItemStack FLASK_OF_KNOWLEDGE = new CustomItem(Material.GLASS_BOTTLE, "&cFlask of Knowledge", "", "&rAllows you to store some of", "&ryour Experience in a Bottle", "&7Cost: &a1 Level"); + public static final ItemStack RAG = new CustomItem(Material.PAPER, "&cRag", "", "&aLevel I - Medical Supply", "", "&rRestores 2 Hearts", "&rExtinguishes Fire", "", "&7&eRight Click&7 to use"); + public static final ItemStack BANDAGE = new CustomItem(Material.PAPER, "&cBandage", "", "&aLevel II - Medical Supply", "", "&rRestores 4 Hearts", "&rExtinguishes Fire", "", "&7&eRight Click&7 to use"); + public static final ItemStack SPLINT = new CustomItem(Material.STICK, "&cSplint", "", "&aLevel I - Medical Supply", "", "&rRestores 2 Hearts", "", "&7&eRight Click&7 to use"); + public static final ItemStack VITAMINS = new CustomItem(Material.NETHER_WART, "&cVitamins", "", "&aLevel III - Medical Supply", "", "&rRestores 4 Hearts", "&rExtinguishes Fire", "&rCures Poison/Wither/Radiation", "", "&7&eRight Click&7 to use"); + public static final ItemStack MEDICINE = new CustomPotion("&cMedicine", Color.RED, new PotionEffect(PotionEffectType.HEAL, 0, 0), "", "&aLevel III - Medical Supply", "", "&rRestores 4 Hearts", "&rExtinguishes Fire", "&rCures Poison/Wither/Radiation"); /* Backpacks */ public static ItemStack BACKPACK_SMALL = null; @@ -63,273 +63,273 @@ public final class SlimefunItems { public static ItemStack BOUND_VOIDBAG = null; /* Jetpacks */ - public static ItemStack DURALUMIN_JETPACK = new CustomArmor(new CustomItem(Material.LEATHER_CHESTPLATE, "&9Electric Jetpack &7- &eI", "", "&8\u21E8 &7Material: &bDuralumin", "&c&o&8\u21E8 &e\u26A1 &70 / 20 J", "&8\u21E8 &7Thrust: &c0.35", "", "&7Hold &eShift&7 to use"), Color.SILVER); - public static ItemStack SOLDER_JETPACK = new CustomArmor(new CustomItem(Material.LEATHER_CHESTPLATE, "&9Electric Jetpack &7- &eII", "", "&8\u21E8 &7Material: &bSolder", "&c&o&8\u21E8 &e\u26A1 &70 / 30 J", "&8\u21E8 &7Thrust: &c0.4", "", "&7Hold &eShift&7 to use"), Color.SILVER); - public static ItemStack BILLON_JETPACK = new CustomArmor(new CustomItem(Material.LEATHER_CHESTPLATE, "&9Electric Jetpack &7- &eIII", "", "&8\u21E8 &7Material: &bBillon", "&c&o&8\u21E8 &e\u26A1 &70 / 45 J", "&8\u21E8 &7Thrust: &c0.45", "", "&7Hold &eShift&7 to use"), Color.SILVER); - public static ItemStack STEEL_JETPACK = new CustomArmor(new CustomItem(Material.LEATHER_CHESTPLATE, "&9Electric Jetpack &7- &eIV", "", "&8\u21E8 &7Material: &bSteel", "&c&o&8\u21E8 &e\u26A1 &70 / 60 J", "&8\u21E8 &7Thrust: &c0.5", "", "&7Hold &eShift&7 to use"), Color.SILVER); - public static ItemStack DAMASCUS_STEEL_JETPACK = new CustomArmor(new CustomItem(Material.LEATHER_CHESTPLATE, "&9Electric Jetpack &7- &eV", "", "&8\u21E8 &7Material: &bDamascus Steel", "&c&o&8\u21E8 &e\u26A1 &70 / 75 J", "&8\u21E8 &7Thrust: &c0.55", "", "&7Hold &eShift&7 to use"), Color.SILVER); - public static ItemStack REINFORCED_ALLOY_JETPACK = new CustomArmor(new CustomItem(Material.LEATHER_CHESTPLATE, "&9Electric Jetpack &7- &eVI", "", "&8\u21E8 &7Material: &bReinforced Alloy", "&c&o&8\u21E8 &e\u26A1 &70 / 100 J", "&8\u21E8 &7Thrust: &c0.6", "", "&7Hold &eShift&7 to use"), Color.SILVER); - public static ItemStack CARBONADO_JETPACK = new CustomArmor(new CustomItem(Material.LEATHER_CHESTPLATE, "&9Electric Jetpack &7- &eVII", "", "&8\u21E8 &7Material: &bCarbonado", "&c&o&8\u21E8 &e\u26A1 &70 / 150 J", "&8\u21E8 &7Thrust: &c0.7", "", "&7Hold &eShift&7 to use"), Color.BLACK); - public static ItemStack ARMORED_JETPACK = new CustomItem(Material.IRON_CHESTPLATE, "&9Armored Jetpack", "&8\u21E8 &7Material: &bSteel", "", "&c&o&8\u21E8 &e\u26A1 &70 / 50 J", "&8\u21E8 &7Thrust: &c0.45", "", "&7Hold &eShift&7 to use"); + public static final ItemStack DURALUMIN_JETPACK = new CustomArmor(new CustomItem(Material.LEATHER_CHESTPLATE, "&9Electric Jetpack &7- &eI", "", "&8\u21E8 &7Material: &bDuralumin", "&c&o&8\u21E8 &e\u26A1 &70 / 20 J", "&8\u21E8 &7Thrust: &c0.35", "", "&7Hold &eShift&7 to use"), Color.SILVER); + public static final ItemStack SOLDER_JETPACK = new CustomArmor(new CustomItem(Material.LEATHER_CHESTPLATE, "&9Electric Jetpack &7- &eII", "", "&8\u21E8 &7Material: &bSolder", "&c&o&8\u21E8 &e\u26A1 &70 / 30 J", "&8\u21E8 &7Thrust: &c0.4", "", "&7Hold &eShift&7 to use"), Color.SILVER); + public static final ItemStack BILLON_JETPACK = new CustomArmor(new CustomItem(Material.LEATHER_CHESTPLATE, "&9Electric Jetpack &7- &eIII", "", "&8\u21E8 &7Material: &bBillon", "&c&o&8\u21E8 &e\u26A1 &70 / 45 J", "&8\u21E8 &7Thrust: &c0.45", "", "&7Hold &eShift&7 to use"), Color.SILVER); + public static final ItemStack STEEL_JETPACK = new CustomArmor(new CustomItem(Material.LEATHER_CHESTPLATE, "&9Electric Jetpack &7- &eIV", "", "&8\u21E8 &7Material: &bSteel", "&c&o&8\u21E8 &e\u26A1 &70 / 60 J", "&8\u21E8 &7Thrust: &c0.5", "", "&7Hold &eShift&7 to use"), Color.SILVER); + public static final ItemStack DAMASCUS_STEEL_JETPACK = new CustomArmor(new CustomItem(Material.LEATHER_CHESTPLATE, "&9Electric Jetpack &7- &eV", "", "&8\u21E8 &7Material: &bDamascus Steel", "&c&o&8\u21E8 &e\u26A1 &70 / 75 J", "&8\u21E8 &7Thrust: &c0.55", "", "&7Hold &eShift&7 to use"), Color.SILVER); + public static final ItemStack REINFORCED_ALLOY_JETPACK = new CustomArmor(new CustomItem(Material.LEATHER_CHESTPLATE, "&9Electric Jetpack &7- &eVI", "", "&8\u21E8 &7Material: &bReinforced Alloy", "&c&o&8\u21E8 &e\u26A1 &70 / 100 J", "&8\u21E8 &7Thrust: &c0.6", "", "&7Hold &eShift&7 to use"), Color.SILVER); + public static final ItemStack CARBONADO_JETPACK = new CustomArmor(new CustomItem(Material.LEATHER_CHESTPLATE, "&9Electric Jetpack &7- &eVII", "", "&8\u21E8 &7Material: &bCarbonado", "&c&o&8\u21E8 &e\u26A1 &70 / 150 J", "&8\u21E8 &7Thrust: &c0.7", "", "&7Hold &eShift&7 to use"), Color.BLACK); + public static final ItemStack ARMORED_JETPACK = new CustomItem(Material.IRON_CHESTPLATE, "&9Armored Jetpack", "&8\u21E8 &7Material: &bSteel", "", "&c&o&8\u21E8 &e\u26A1 &70 / 50 J", "&8\u21E8 &7Thrust: &c0.45", "", "&7Hold &eShift&7 to use"); /* Jetboots */ - public static ItemStack DURALUMIN_JETBOOTS = new CustomArmor(new CustomItem(Material.LEATHER_BOOTS, "&9Jet Boots &7- &eI", "", "&8\u21E8 &7Material: &bDuralumin", "&c&o&8\u21E8 &e\u26A1 &70 / 20 J", "&8\u21E8 &7Speed: &a0.35", "&8\u21E8 &7Accuracy: &c50%", "", "&7Hold &eShift&7 to use"), Color.SILVER); - public static ItemStack SOLDER_JETBOOTS = new CustomArmor(new CustomItem(Material.LEATHER_BOOTS, "&9Jet Boots &7- &eII", "", "&8\u21E8 &7Material: &bSolder", "&c&o&8\u21E8 &e\u26A1 &70 / 30 J", "&8\u21E8 &7Speed: &a0.4", "&8\u21E8 &7Accuracy: &660%", "", "&7Hold &eShift&7 to use"), Color.SILVER); - public static ItemStack BILLON_JETBOOTS = new CustomArmor(new CustomItem(Material.LEATHER_BOOTS, "&9Jet Boots &7- &eIII", "", "&8\u21E8 &7Material: &bBillon", "&c&o&8\u21E8 &e\u26A1 &70 / 40 J", "&8\u21E8 &7Speed: &a0.45", "&8\u21E8 &7Accuracy: &665%", "", "&7Hold &eShift&7 to use"), Color.SILVER); - public static ItemStack STEEL_JETBOOTS = new CustomArmor(new CustomItem(Material.LEATHER_BOOTS, "&9Jet Boots &7- &eIV", "", "&8\u21E8 &7Material: &bSteel", "&c&o&8\u21E8 &e\u26A1 &70 / 50 J", "&8\u21E8 &7Speed: &a0.5", "&8\u21E8 &7Accuracy: &e70%", "", "&7Hold &eShift&7 to use"), Color.SILVER); - public static ItemStack DAMASCUS_STEEL_JETBOOTS = new CustomArmor(new CustomItem(Material.LEATHER_BOOTS, "&9Jet Boots &7- &eV", "", "&8\u21E8 &7Material: &bDamascus Steel", "&c&o&8\u21E8 &e\u26A1 &70 / 75 J", "&8\u21E8 &7Speed: &a0.55", "&8\u21E8 &7Accuracy: &a75%", "", "&7Hold &eShift&7 to use"), Color.SILVER); - public static ItemStack REINFORCED_ALLOY_JETBOOTS = new CustomArmor(new CustomItem(Material.LEATHER_BOOTS, "&9Jet Boots &7- &eVI", "", "&8\u21E8 &7Material: &bReinforced Alloy", "&c&o&8\u21E8 &e\u26A1 &70 / 100 J", "&8\u21E8 &7Speed: &a0.6", "&8\u21E8 &7Accuracy: &c80%", "", "&7Hold &eShift&7 to use"), Color.SILVER); - public static ItemStack CARBONADO_JETBOOTS = new CustomArmor(new CustomItem(Material.LEATHER_BOOTS, "&9Jet Boots &7- &eVII", "", "&8\u21E8 &7Material: &bCarbonado", "&c&o&8\u21E8 &e\u26A1 &70 / 125 J", "&8\u21E8 &7Speed: &a0.7", "&8\u21E8 &7Accuracy: &c99.9%", "", "&7Hold &eShift&7 to use"), Color.BLACK); - public static ItemStack ARMORED_JETBOOTS = new CustomItem(Material.IRON_BOOTS, "&9Armored Jet Boots", "", "&8\u21E8 &7Material: &bSteel", "&c&o&8\u21E8 &e\u26A1 &70 / 50 J", "&8\u21E8 &7Speed: &a0.45", "&8\u21E8 &7Accuracy: &e70%", "", "&7Hold &eShift&7 to use"); + public static final ItemStack DURALUMIN_JETBOOTS = new CustomArmor(new CustomItem(Material.LEATHER_BOOTS, "&9Jet Boots &7- &eI", "", "&8\u21E8 &7Material: &bDuralumin", "&c&o&8\u21E8 &e\u26A1 &70 / 20 J", "&8\u21E8 &7Speed: &a0.35", "&8\u21E8 &7Accuracy: &c50%", "", "&7Hold &eShift&7 to use"), Color.SILVER); + public static final ItemStack SOLDER_JETBOOTS = new CustomArmor(new CustomItem(Material.LEATHER_BOOTS, "&9Jet Boots &7- &eII", "", "&8\u21E8 &7Material: &bSolder", "&c&o&8\u21E8 &e\u26A1 &70 / 30 J", "&8\u21E8 &7Speed: &a0.4", "&8\u21E8 &7Accuracy: &660%", "", "&7Hold &eShift&7 to use"), Color.SILVER); + public static final ItemStack BILLON_JETBOOTS = new CustomArmor(new CustomItem(Material.LEATHER_BOOTS, "&9Jet Boots &7- &eIII", "", "&8\u21E8 &7Material: &bBillon", "&c&o&8\u21E8 &e\u26A1 &70 / 40 J", "&8\u21E8 &7Speed: &a0.45", "&8\u21E8 &7Accuracy: &665%", "", "&7Hold &eShift&7 to use"), Color.SILVER); + public static final ItemStack STEEL_JETBOOTS = new CustomArmor(new CustomItem(Material.LEATHER_BOOTS, "&9Jet Boots &7- &eIV", "", "&8\u21E8 &7Material: &bSteel", "&c&o&8\u21E8 &e\u26A1 &70 / 50 J", "&8\u21E8 &7Speed: &a0.5", "&8\u21E8 &7Accuracy: &e70%", "", "&7Hold &eShift&7 to use"), Color.SILVER); + public static final ItemStack DAMASCUS_STEEL_JETBOOTS = new CustomArmor(new CustomItem(Material.LEATHER_BOOTS, "&9Jet Boots &7- &eV", "", "&8\u21E8 &7Material: &bDamascus Steel", "&c&o&8\u21E8 &e\u26A1 &70 / 75 J", "&8\u21E8 &7Speed: &a0.55", "&8\u21E8 &7Accuracy: &a75%", "", "&7Hold &eShift&7 to use"), Color.SILVER); + public static final ItemStack REINFORCED_ALLOY_JETBOOTS = new CustomArmor(new CustomItem(Material.LEATHER_BOOTS, "&9Jet Boots &7- &eVI", "", "&8\u21E8 &7Material: &bReinforced Alloy", "&c&o&8\u21E8 &e\u26A1 &70 / 100 J", "&8\u21E8 &7Speed: &a0.6", "&8\u21E8 &7Accuracy: &c80%", "", "&7Hold &eShift&7 to use"), Color.SILVER); + public static final ItemStack CARBONADO_JETBOOTS = new CustomArmor(new CustomItem(Material.LEATHER_BOOTS, "&9Jet Boots &7- &eVII", "", "&8\u21E8 &7Material: &bCarbonado", "&c&o&8\u21E8 &e\u26A1 &70 / 125 J", "&8\u21E8 &7Speed: &a0.7", "&8\u21E8 &7Accuracy: &c99.9%", "", "&7Hold &eShift&7 to use"), Color.BLACK); + public static final ItemStack ARMORED_JETBOOTS = new CustomItem(Material.IRON_BOOTS, "&9Armored Jet Boots", "", "&8\u21E8 &7Material: &bSteel", "&c&o&8\u21E8 &e\u26A1 &70 / 50 J", "&8\u21E8 &7Speed: &a0.45", "&8\u21E8 &7Accuracy: &e70%", "", "&7Hold &eShift&7 to use"); /* Multi Tools */ - public static ItemStack DURALUMIN_MULTI_TOOL = new CustomItem(Material.SHEARS, "&9Multi Tool &7- &eI", "", "&8\u21E8 &7Material: &bDuralumin", "&c&o&8\u21E8 &e\u26A1 &70 / 20 J", "", "&7&eRight Click&7 to use", "&7Hold &eShift + Right Click&7 to change the Mode"); - public static ItemStack SOLDER_MULTI_TOOL = new CustomItem(Material.SHEARS, "&9Multi Tool &7- &eII", "", "&8\u21E8 &7Material: &bSolder", "&c&o&8\u21E8 &e\u26A1 &70 / 30 J", "", "&7&eRight Click&7 to use", "&7Hold &eShift + Right Click&7 to change the Mode"); - public static ItemStack BILLON_MULTI_TOOL = new CustomItem(Material.SHEARS, "&9Multi Tool &7- &eIII", "", "&8\u21E8 &7Material: &bBillon", "&c&o&8\u21E8 &e\u26A1 &70 / 40 J", "", "&7&eRight Click&7 to use", "&7Hold &eShift + Right Click&7 to change the Mode"); - public static ItemStack STEEL_MULTI_TOOL = new CustomItem(Material.SHEARS, "&9Multi Tool &7- &eIV", "", "&8\u21E8 &7Material: &bSteel", "&c&o&8\u21E8 &e\u26A1 &70 / 50 J", "", "&7&eRight Click&7 to use", "&7Hold &eShift + Right Click&7 to change the Mode"); - public static ItemStack DAMASCUS_STEEL_MULTI_TOOL = new CustomItem(Material.SHEARS, "&9Multi Tool &7- &eV", "", "&8\u21E8 &7Material: &bDamascus Steel", "&c&o&8\u21E8 &e\u26A1 &70 / 60 J", "", "&7&eRight Click&7 to use", "&7Hold &eShift + Right Click&7 to change the Mode"); - public static ItemStack REINFORCED_ALLOY_MULTI_TOOL = new CustomItem(Material.SHEARS, "&9Multi Tool &7- &eVI", "", "&8\u21E8 &7Material: &bReinforced Alloy", "&c&o&8\u21E8 &e\u26A1 &70 / 75 J", "", "&7&eRight Click&7 to use", "&7Hold &eShift + Right Click&7 to change the Mode"); - public static ItemStack CARBONADO_MULTI_TOOL = new CustomItem(Material.SHEARS, "&9Multi Tool &7- &eVII", "", "&8\u21E8 &7Material: &bCarbonado", "&c&o&8\u21E8 &e\u26A1 &70 / 100 J", "", "&7&eRight Click&7 to use", "&7Hold &eShift + Right Click&7 to change the Mode"); + public static final ItemStack DURALUMIN_MULTI_TOOL = new CustomItem(Material.SHEARS, "&9Multi Tool &7- &eI", "", "&8\u21E8 &7Material: &bDuralumin", "&c&o&8\u21E8 &e\u26A1 &70 / 20 J", "", "&7&eRight Click&7 to use", "&7Hold &eShift + Right Click&7 to change the Mode"); + public static final ItemStack SOLDER_MULTI_TOOL = new CustomItem(Material.SHEARS, "&9Multi Tool &7- &eII", "", "&8\u21E8 &7Material: &bSolder", "&c&o&8\u21E8 &e\u26A1 &70 / 30 J", "", "&7&eRight Click&7 to use", "&7Hold &eShift + Right Click&7 to change the Mode"); + public static final ItemStack BILLON_MULTI_TOOL = new CustomItem(Material.SHEARS, "&9Multi Tool &7- &eIII", "", "&8\u21E8 &7Material: &bBillon", "&c&o&8\u21E8 &e\u26A1 &70 / 40 J", "", "&7&eRight Click&7 to use", "&7Hold &eShift + Right Click&7 to change the Mode"); + public static final ItemStack STEEL_MULTI_TOOL = new CustomItem(Material.SHEARS, "&9Multi Tool &7- &eIV", "", "&8\u21E8 &7Material: &bSteel", "&c&o&8\u21E8 &e\u26A1 &70 / 50 J", "", "&7&eRight Click&7 to use", "&7Hold &eShift + Right Click&7 to change the Mode"); + public static final ItemStack DAMASCUS_STEEL_MULTI_TOOL = new CustomItem(Material.SHEARS, "&9Multi Tool &7- &eV", "", "&8\u21E8 &7Material: &bDamascus Steel", "&c&o&8\u21E8 &e\u26A1 &70 / 60 J", "", "&7&eRight Click&7 to use", "&7Hold &eShift + Right Click&7 to change the Mode"); + public static final ItemStack REINFORCED_ALLOY_MULTI_TOOL = new CustomItem(Material.SHEARS, "&9Multi Tool &7- &eVI", "", "&8\u21E8 &7Material: &bReinforced Alloy", "&c&o&8\u21E8 &e\u26A1 &70 / 75 J", "", "&7&eRight Click&7 to use", "&7Hold &eShift + Right Click&7 to change the Mode"); + public static final ItemStack CARBONADO_MULTI_TOOL = new CustomItem(Material.SHEARS, "&9Multi Tool &7- &eVII", "", "&8\u21E8 &7Material: &bCarbonado", "&c&o&8\u21E8 &e\u26A1 &70 / 100 J", "", "&7&eRight Click&7 to use", "&7Hold &eShift + Right Click&7 to change the Mode"); /* Food */ - public static ItemStack FORTUNE_COOKIE = new CustomItem(Material.COOKIE, "&6Fortune Cookie", "", "&a&oTells you stuff about your Future :o"); - public static ItemStack BEEF_JERKY = new CustomItem(Material.COOKED_BEEF, "&6Beef Jerky", "", "&a&oSaturating"); - public static ItemStack MAGIC_SUGAR = new CustomItem(Material.SUGAR, "&6Magic Sugar", "", "&a&oFeel the Power of Hermes!"); - public static ItemStack MONSTER_JERKY = new CustomItem(Material.ROTTEN_FLESH, "&6Monster Jerky", "", "&a&oNo longer hungry"); - public static ItemStack APPLE_JUICE = new CustomPotion("&cApple Juice", Color.RED, new PotionEffect(PotionEffectType.SATURATION, 6, 0), "", "&7&oRestores &b&o" + "3.0" + " &7&oHunger"); - public static ItemStack MELON_JUICE = new CustomPotion("&cMelon Juice", Color.RED, new PotionEffect(PotionEffectType.SATURATION, 6, 0), "", "&7&oRestores &b&o" + "3.0" + " &7&oHunger"); - public static ItemStack CARROT_JUICE = new CustomPotion("&6Carrot Juice", Color.ORANGE, new PotionEffect(PotionEffectType.SATURATION, 6, 0), "", "&7&oRestores &b&o" + "3.0" + " &7&oHunger"); - public static ItemStack PUMPKIN_JUICE = new CustomPotion("&6Pumpkin Juice", Color.ORANGE, new PotionEffect(PotionEffectType.SATURATION, 6, 0), "", "&7&oRestores &b&o" + "3.0" + " &7&oHunger"); - public static ItemStack GOLDEN_APPLE_JUICE = new CustomPotion("&bGolden Apple Juice", Color.YELLOW, new PotionEffect(PotionEffectType.ABSORPTION, 20 * 20, 0)); + public static final ItemStack FORTUNE_COOKIE = new CustomItem(Material.COOKIE, "&6Fortune Cookie", "", "&a&oTells you stuff about your Future :o"); + public static final ItemStack BEEF_JERKY = new CustomItem(Material.COOKED_BEEF, "&6Beef Jerky", "", "&a&oSaturating"); + public static final ItemStack MAGIC_SUGAR = new CustomItem(Material.SUGAR, "&6Magic Sugar", "", "&a&oFeel the Power of Hermes!"); + public static final ItemStack MONSTER_JERKY = new CustomItem(Material.ROTTEN_FLESH, "&6Monster Jerky", "", "&a&oNo longer hungry"); + public static final ItemStack APPLE_JUICE = new CustomPotion("&cApple Juice", Color.RED, new PotionEffect(PotionEffectType.SATURATION, 6, 0), "", "&7&oRestores &b&o" + "3.0" + " &7&oHunger"); + public static final ItemStack MELON_JUICE = new CustomPotion("&cMelon Juice", Color.RED, new PotionEffect(PotionEffectType.SATURATION, 6, 0), "", "&7&oRestores &b&o" + "3.0" + " &7&oHunger"); + public static final ItemStack CARROT_JUICE = new CustomPotion("&6Carrot Juice", Color.ORANGE, new PotionEffect(PotionEffectType.SATURATION, 6, 0), "", "&7&oRestores &b&o" + "3.0" + " &7&oHunger"); + public static final ItemStack PUMPKIN_JUICE = new CustomPotion("&6Pumpkin Juice", Color.ORANGE, new PotionEffect(PotionEffectType.SATURATION, 6, 0), "", "&7&oRestores &b&o" + "3.0" + " &7&oHunger"); + public static final ItemStack GOLDEN_APPLE_JUICE = new CustomPotion("&bGolden Apple Juice", Color.YELLOW, new PotionEffect(PotionEffectType.ABSORPTION, 20 * 20, 0)); /* Christmas */ - public static ItemStack CHRISTMAS_MILK = new CustomPotion("&6Glass of Milk", Color.WHITE, new PotionEffect(PotionEffectType.SATURATION, 5, 0), "", "&7&oRestores &b&o" + "2.5" + " &7&oHunger"); - public static ItemStack CHRISTMAS_CHOCOLATE_MILK = new CustomPotion("&6Chocolate Milk", Color.MAROON, new PotionEffect(PotionEffectType.SATURATION, 12, 0), "", "&7&oRestores &b&o" + "6.0" + " &7&oHunger"); - public static ItemStack CHRISTMAS_EGG_NOG = new CustomPotion("&aEgg Nog", Color.GRAY, new PotionEffect(PotionEffectType.SATURATION, 7, 0), "", "&7&oRestores &b&o" + "3.5" + " &7&oHunger"); - public static ItemStack CHRISTMAS_APPLE_CIDER = new CustomPotion("&cApple Cider", Color.RED, new PotionEffect(PotionEffectType.SATURATION, 14, 0), "", "&7&oRestores &b&o" + "7.0" + " &7&oHunger"); - public static ItemStack CHRISTMAS_COOKIE = new CustomItem(Material.COOKIE, Christmas.color("Christmas Cookie")); - public static ItemStack CHRISTMAS_FRUIT_CAKE = new CustomItem(Material.PUMPKIN_PIE, Christmas.color("Fruit Cake")); - public static ItemStack CHRISTMAS_APPLE_PIE = new CustomItem(Material.PUMPKIN_PIE, "&rApple Pie"); - public static ItemStack CHRISTMAS_HOT_CHOCOLATE = new CustomPotion("&6Hot Chocolate", Color.MAROON, new PotionEffect(PotionEffectType.SATURATION, 14, 0), "", "&7&oRestores &b&o" + "7.0" + " &7&oHunger"); - public static ItemStack CHRISTMAS_CAKE = new CustomItem(Material.PUMPKIN_PIE, Christmas.color("Christmas Cake")); - public static ItemStack CHRISTMAS_CARAMEL = new CustomItem(Material.BRICKS, "&6Caramel"); - public static ItemStack CHRISTMAS_CARAMEL_APPLE = new CustomItem(Material.APPLE, "&6Caramel Apple"); - public static ItemStack CHRISTMAS_CHOCOLATE_APPLE = new CustomItem(Material.APPLE, "&6Chocolate Apple"); - public static ItemStack CHRISTMAS_PRESENT = new CustomItem(Material.CHEST, Christmas.color("Christmas Present"), "&7From: &emrCookieSlime", "&7To: &eYou", "", "&eRight Click&7 to open"); + public static final ItemStack CHRISTMAS_MILK = new CustomPotion("&6Glass of Milk", Color.WHITE, new PotionEffect(PotionEffectType.SATURATION, 5, 0), "", "&7&oRestores &b&o" + "2.5" + " &7&oHunger"); + public static final ItemStack CHRISTMAS_CHOCOLATE_MILK = new CustomPotion("&6Chocolate Milk", Color.MAROON, new PotionEffect(PotionEffectType.SATURATION, 12, 0), "", "&7&oRestores &b&o" + "6.0" + " &7&oHunger"); + public static final ItemStack CHRISTMAS_EGG_NOG = new CustomPotion("&aEgg Nog", Color.GRAY, new PotionEffect(PotionEffectType.SATURATION, 7, 0), "", "&7&oRestores &b&o" + "3.5" + " &7&oHunger"); + public static final ItemStack CHRISTMAS_APPLE_CIDER = new CustomPotion("&cApple Cider", Color.RED, new PotionEffect(PotionEffectType.SATURATION, 14, 0), "", "&7&oRestores &b&o" + "7.0" + " &7&oHunger"); + public static final ItemStack CHRISTMAS_COOKIE = new CustomItem(Material.COOKIE, Christmas.color("Christmas Cookie")); + public static final ItemStack CHRISTMAS_FRUIT_CAKE = new CustomItem(Material.PUMPKIN_PIE, Christmas.color("Fruit Cake")); + public static final ItemStack CHRISTMAS_APPLE_PIE = new CustomItem(Material.PUMPKIN_PIE, "&rApple Pie"); + public static final ItemStack CHRISTMAS_HOT_CHOCOLATE = new CustomPotion("&6Hot Chocolate", Color.MAROON, new PotionEffect(PotionEffectType.SATURATION, 14, 0), "", "&7&oRestores &b&o" + "7.0" + " &7&oHunger"); + public static final ItemStack CHRISTMAS_CAKE = new CustomItem(Material.PUMPKIN_PIE, Christmas.color("Christmas Cake")); + public static final ItemStack CHRISTMAS_CARAMEL = new CustomItem(Material.BRICKS, "&6Caramel"); + public static final ItemStack CHRISTMAS_CARAMEL_APPLE = new CustomItem(Material.APPLE, "&6Caramel Apple"); + public static final ItemStack CHRISTMAS_CHOCOLATE_APPLE = new CustomItem(Material.APPLE, "&6Chocolate Apple"); + public static final ItemStack CHRISTMAS_PRESENT = new CustomItem(Material.CHEST, Christmas.color("Christmas Present"), "&7From: &emrCookieSlime", "&7To: &eYou", "", "&eRight Click&7 to open"); /* Easter */ - public static ItemStack EASTER_EGG = new CustomItem(Material.EGG, "&rEaster Egg", "&bSurprise! Surprise!"); - public static ItemStack EASTER_CARROT_PIE = new CustomItem(Material.PUMPKIN_PIE, "&6Carrot Pie"); + public static final ItemStack EASTER_EGG = new CustomItem(Material.EGG, "&rEaster Egg", "&bSurprise! Surprise!"); + public static final ItemStack EASTER_CARROT_PIE = new CustomItem(Material.PUMPKIN_PIE, "&6Carrot Pie"); /* Weapons */ - public static ItemStack GRANDMAS_WALKING_STICK = new CustomItem(Material.STICK, "&7Grandmas Walking Stick", 0, new String[0], new String[] {"KNOCKBACK-2"}); - public static ItemStack GRANDPAS_WALKING_STICK = new CustomItem(Material.STICK, "&7Grandpas Walking Stick", 0, new String[0], new String[] {"KNOCKBACK-5"}); - public static ItemStack SWORD_OF_BEHEADING = new CustomItem(Material.IRON_SWORD, "&6Sword of Beheading", "&7Beheading II", "", "&rHas a chance to behead Mobs", "&r(even a higher chance for Wither Skeletons)"); - public static ItemStack BLADE_OF_VAMPIRES = new CustomItem(Material.GOLDEN_SWORD, "&cBlade of Vampires", 0, new String[] {"&7Life Steal I", "", "&rEverytime you attack something", "&ryou have a 45% chance to", "&rrecover 2 Hearts of your Health"}, new String[] {"FIRE_ASPECT-2", "DURABILITY-4", "DAMAGE_ALL-2"}); - public static ItemStack SEISMIC_AXE = new CustomItem(Material.IRON_AXE, "&aSeismic Axe", "", "&7&oA portable Earthquake...", "", "&7&eRight Click&7 to use"); + public static final ItemStack GRANDMAS_WALKING_STICK = new CustomItem(Material.STICK, "&7Grandmas Walking Stick", 0, new String[0], new String[] {"KNOCKBACK-2"}); + public static final ItemStack GRANDPAS_WALKING_STICK = new CustomItem(Material.STICK, "&7Grandpas Walking Stick", 0, new String[0], new String[] {"KNOCKBACK-5"}); + public static final ItemStack SWORD_OF_BEHEADING = new CustomItem(Material.IRON_SWORD, "&6Sword of Beheading", "&7Beheading II", "", "&rHas a chance to behead Mobs", "&r(even a higher chance for Wither Skeletons)"); + public static final ItemStack BLADE_OF_VAMPIRES = new CustomItem(Material.GOLDEN_SWORD, "&cBlade of Vampires", 0, new String[] {"&7Life Steal I", "", "&rEverytime you attack something", "&ryou have a 45% chance to", "&rrecover 2 Hearts of your Health"}, new String[] {"FIRE_ASPECT-2", "DURABILITY-4", "DAMAGE_ALL-2"}); + public static final ItemStack SEISMIC_AXE = new CustomItem(Material.IRON_AXE, "&aSeismic Axe", "", "&7&oA portable Earthquake...", "", "&7&eRight Click&7 to use"); /* Bows */ - public static ItemStack EXPLOSIVE_BOW = new CustomItem(Material.BOW, "&cExplosive Bow", "&rAny Arrows fired using this Bow", "&rwill launch hit enemys into the air"); - public static ItemStack ICY_BOW = new CustomItem(Material.BOW, "&bIcy Bow", "&rAny Arrows fired using this Bow", "&rwill prevent hit enemys from moving", "&rfor 2 seconds"); + public static final ItemStack EXPLOSIVE_BOW = new CustomItem(Material.BOW, "&cExplosive Bow", "&rAny Arrows fired using this Bow", "&rwill launch hit enemys into the air"); + public static final ItemStack ICY_BOW = new CustomItem(Material.BOW, "&bIcy Bow", "&rAny Arrows fired using this Bow", "&rwill prevent hit enemys from moving", "&rfor 2 seconds"); /* Tools */ - public static ItemStack AUTO_SMELT_PICKAXE = new CustomItem(Material.DIAMOND_PICKAXE, "&6Smelter's Pickaxe", "&c&lAuto-Smelting", "", "&9Works with Fortune"); - public static ItemStack LUMBER_AXE = new CustomItem(Material.DIAMOND_AXE, "&6Lumber Axe", "&a&oCuts down the whole Tree..."); - public static ItemStack PICKAXE_OF_CONTAINMENT = new CustomItem(Material.IRON_PICKAXE, "&cPickaxe of Containment", "", "&9Can pickup Spawners"); - public static ItemStack HERCULES_PICKAXE = new CustomItem(Material.IRON_PICKAXE, "&9Hercules' Pickaxe", 0, new String[] {"", "&rSo powerful that it", "&rcrushes all mined Ores", "&rinto Dust..."}, new String[] {"DURABILITY-2", "DIG_SPEED-4"}); - public static ItemStack EXPLOSIVE_PICKAXE = new CustomItem(Material.DIAMOND_PICKAXE, "&eExplosive Pickaxe", "", "&rAllows you to mine a good bit", "&rof Blocks at once...", "", "&9Works with Fortune"); - public static ItemStack PICKAXE_OF_THE_SEEKER = new CustomItem(Material.DIAMOND_PICKAXE, "&aPickaxe of the Seeker", "&rWill always point you to the nearest Ore", "&rbut might get damaged when doing it", "", "&7&eRight Click&7 to be pointed to the nearest Ore"); - public static ItemStack COBALT_PICKAXE = new CustomItem(Material.IRON_PICKAXE, "&9Cobalt Pickaxe", 0, new String[0], new String[] {"DURABILITY-3", "DIG_SPEED-6"}); - public static ItemStack PICKAXE_OF_VEIN_MINING = new CustomItem(Material.DIAMOND_PICKAXE, "&ePickaxe of Vein Mining", "", "&rThis Pickaxe will dig out", "&rwhole Veins of Ores..."); + public static final ItemStack AUTO_SMELT_PICKAXE = new CustomItem(Material.DIAMOND_PICKAXE, "&6Smelter's Pickaxe", "&c&lAuto-Smelting", "", "&9Works with Fortune"); + public static final ItemStack LUMBER_AXE = new CustomItem(Material.DIAMOND_AXE, "&6Lumber Axe", "&a&oCuts down the whole Tree..."); + public static final ItemStack PICKAXE_OF_CONTAINMENT = new CustomItem(Material.IRON_PICKAXE, "&cPickaxe of Containment", "", "&9Can pickup Spawners"); + public static final ItemStack HERCULES_PICKAXE = new CustomItem(Material.IRON_PICKAXE, "&9Hercules' Pickaxe", 0, new String[] {"", "&rSo powerful that it", "&rcrushes all mined Ores", "&rinto Dust..."}, new String[] {"DURABILITY-2", "DIG_SPEED-4"}); + public static final ItemStack EXPLOSIVE_PICKAXE = new CustomItem(Material.DIAMOND_PICKAXE, "&eExplosive Pickaxe", "", "&rAllows you to mine a good bit", "&rof Blocks at once...", "", "&9Works with Fortune"); + public static final ItemStack PICKAXE_OF_THE_SEEKER = new CustomItem(Material.DIAMOND_PICKAXE, "&aPickaxe of the Seeker", "&rWill always point you to the nearest Ore", "&rbut might get damaged when doing it", "", "&7&eRight Click&7 to be pointed to the nearest Ore"); + public static final ItemStack COBALT_PICKAXE = new CustomItem(Material.IRON_PICKAXE, "&9Cobalt Pickaxe", 0, new String[0], new String[] {"DURABILITY-3", "DIG_SPEED-6"}); + public static final ItemStack PICKAXE_OF_VEIN_MINING = new CustomItem(Material.DIAMOND_PICKAXE, "&ePickaxe of Vein Mining", "", "&rThis Pickaxe will dig out", "&rwhole Veins of Ores..."); /* Armor */ - public static ItemStack GLOWSTONE_HELMET = new CustomArmor(new CustomItem(Material.LEATHER_HELMET, "&e&lGlowstone Helmet", "", "&a&oShining like the sun!", "", "&9+ Night Vision"), Color.YELLOW); - public static ItemStack GLOWSTONE_CHESTPLATE = new CustomArmor(new CustomItem(Material.LEATHER_CHESTPLATE, "&e&lGlowstone Chestplate", "", "&a&oShining like the sun!", "", "&9+ Night Vision"), Color.YELLOW); - public static ItemStack GLOWSTONE_LEGGINGS = new CustomArmor(new CustomItem(Material.LEATHER_LEGGINGS, "&e&lGlowstone Leggings", "", "&a&oShining like the sun!", "", "&9+ Night Vision"), Color.YELLOW); - public static ItemStack GLOWSTONE_BOOTS = new CustomArmor(new CustomItem(Material.LEATHER_BOOTS, "&e&lGlowstone Boots", "", "&a&oShining like the sun!", "", "&9+ Night Vision"), Color.YELLOW); - public static ItemStack ENDER_HELMET = new CustomArmor(new CustomItem(Material.LEATHER_HELMET, "&5&lEnder Helmet", "", "&a&oSometimes its here, sometimes there!"), Color.fromRGB(28, 25, 112)); - public static ItemStack ENDER_CHESTPLATE = new CustomArmor(new CustomItem(Material.LEATHER_CHESTPLATE, "&5&lEnder Chestplate", "", "&a&oSometimes its here, sometimes there!"), Color.fromRGB(28, 25, 112)); - public static ItemStack ENDER_LEGGINGS = new CustomArmor(new CustomItem(Material.LEATHER_LEGGINGS, "&5&lEnder Leggings", "", "&a&oSometimes its here, sometimes there!"), Color.fromRGB(28, 25, 112)); - public static ItemStack ENDER_BOOTS = new CustomArmor(new CustomItem(Material.LEATHER_BOOTS, "&5&lEnder Boots", "", "&a&oSometimes its here, sometimes there!", "" , "&9+ No Enderpearl Damage"), Color.fromRGB(28, 25, 112)); - public static ItemStack SLIME_HELMET = new CustomArmor(new CustomItem(Material.LEATHER_HELMET, "&a&lSlime Helmet", "", "&a&oBouncy Feeling"), Color.LIME); - public static ItemStack SLIME_CHESTPLATE = new CustomArmor(new CustomItem(Material.LEATHER_CHESTPLATE, "&a&lSlime Chestplate", "", "&a&oBouncy Feeling"), Color.LIME); - public static ItemStack SLIME_LEGGINGS = new CustomArmor(new CustomItem(Material.LEATHER_LEGGINGS, "&a&lSlime Leggings", "", "&a&oBouncy Feeling", "", "&9+ Speed"), Color.LIME); - public static ItemStack SLIME_BOOTS = new CustomArmor(new CustomItem(Material.LEATHER_BOOTS, "&a&lSlime Boots", "", "&a&oBouncy Feeling", "", "&9+ Jump Boost", "&9+ No Fall Damage"), Color.LIME); - public static ItemStack CACTUS_HELMET = new CustomArmor(new CustomItem(Material.LEATHER_HELMET, "&2Cactus Helmet", 0, new String[0], new String[] {"THORNS-3", "DURABILITY-5"}), Color.GREEN); - public static ItemStack CACTUS_CHESTPLATE = new CustomArmor(new CustomItem(Material.LEATHER_CHESTPLATE, "&2Cactus Chestplate", 0, new String[0], new String[] {"THORNS-3", "DURABILITY-5"}), Color.GREEN); - public static ItemStack CACTUS_LEGGINGS = new CustomArmor(new CustomItem(Material.LEATHER_LEGGINGS, "&2Cactus Leggings", 0, new String[0], new String[] {"THORNS-3", "DURABILITY-5"}), Color.GREEN); - public static ItemStack CACTUS_BOOTS = new CustomArmor(new CustomItem(Material.LEATHER_BOOTS, "&2Cactus Boots", 0, new String[0], new String[] {"THORNS-3", "DURABILITY-5"}), Color.GREEN); - public static ItemStack DAMASCUS_STEEL_HELMET = new CustomItem(Material.IRON_HELMET, "&7Damascus Steel Helmet", new String[] {"DURABILITY-4", "PROTECTION_ENVIRONMENTAL-4"}, 0); - public static ItemStack DAMASCUS_STEEL_CHESTPLATE = new CustomItem(Material.IRON_CHESTPLATE, "&7Damascus Steel Chestplate", new String[] {"DURABILITY-4", "PROTECTION_ENVIRONMENTAL-4"}, 0); - public static ItemStack DAMASCUS_STEEL_LEGGINGS = new CustomItem(Material.IRON_LEGGINGS, "&7Damascus Steel Leggings", new String[] {"DURABILITY-4", "PROTECTION_ENVIRONMENTAL-4"}, 0); - public static ItemStack DAMASCUS_STEEL_BOOTS = new CustomItem(Material.IRON_BOOTS, "&7Damascus Steel Boots", new String[] {"DURABILITY-4", "PROTECTION_ENVIRONMENTAL-4"}, 0); - public static ItemStack REINFORCED_ALLOY_HELMET = new CustomItem(Material.IRON_HELMET, "&bReinforced Helmet", new String[] {"DURABILITY-9", "PROTECTION_ENVIRONMENTAL-9"}, 0); - public static ItemStack REINFORCED_ALLOY_CHESTPLATE = new CustomItem(Material.IRON_CHESTPLATE, "&bReinforced Chestplate", new String[] {"DURABILITY-9", "PROTECTION_ENVIRONMENTAL-9"}, 0); - public static ItemStack REINFORCED_ALLOY_LEGGINGS = new CustomItem(Material.IRON_LEGGINGS, "&bReinforced Leggings", new String[] {"DURABILITY-9", "PROTECTION_ENVIRONMENTAL-9"}, 0); - public static ItemStack REINFORCED_ALLOY_BOOTS = new CustomItem(Material.IRON_BOOTS, "&bReinforced Boots", new String[] {"DURABILITY-9", "PROTECTION_ENVIRONMENTAL-9"}, 0); - public static ItemStack SCUBA_HELMET = new CustomArmor(new CustomItem(Material.LEATHER_HELMET, "&cScuba Helmet", "", "&bAllows you to breathe Underwater", "&4&oPart of Hazmat Suit"), Color.ORANGE); - public static ItemStack HAZMATSUIT_CHESTPLATE = new CustomArmor(new CustomItem(Material.LEATHER_CHESTPLATE, "&cHazmat Suit", "", "&bAllows you to walk through Fire", "&4&oPart of Hazmat Suit"), Color.ORANGE); - public static ItemStack HAZMATSUIT_LEGGINGS = new CustomArmor(new CustomItem(Material.LEATHER_LEGGINGS, "&cHazmat Suit Leggings", "", "&4&oPart of Hazmat Suit"), Color.ORANGE); - public static ItemStack RUBBER_BOOTS = new CustomArmor(new CustomItem(Material.LEATHER_BOOTS, "&cRubber Boots", "", "&4&oPart of Hazmat Suit"), Color.BLACK); - public static ItemStack GILDED_IRON_HELMET = new CustomItem(Material.GOLDEN_HELMET, "&6Gilded Iron Helmet", new String[] {"DURABILITY-6", "PROTECTION_ENVIRONMENTAL-8"}, 0); - public static ItemStack GILDED_IRON_CHESTPLATE = new CustomItem(Material.GOLDEN_CHESTPLATE, "&6Gilded Iron Chestplate", new String[] {"DURABILITY-6", "PROTECTION_ENVIRONMENTAL-8"}, 0); - public static ItemStack GILDED_IRON_LEGGINGS = new CustomItem(Material.GOLDEN_LEGGINGS, "&6Gilded Iron Leggings", new String[] {"DURABILITY-6", "PROTECTION_ENVIRONMENTAL-8"}, 0); - public static ItemStack GILDED_IRON_BOOTS = new CustomItem(Material.GOLDEN_BOOTS, "&6Gilded Iron Boots", new String[] {"DURABILITY-6", "PROTECTION_ENVIRONMENTAL-8"}, 0); - public static ItemStack GOLD_HELMET = new CustomItem(Material.GOLDEN_HELMET, "&6Gold Helmet", 0, new String[] {"&912-Carat"}, new String[] {"DURABILITY-10"}); - public static ItemStack GOLD_CHESTPLATE = new CustomItem(Material.GOLDEN_CHESTPLATE, "&6Gold Chestplate", 0, new String[] {"&912-Carat"}, new String[] {"DURABILITY-10"}); - public static ItemStack GOLD_LEGGINGS = new CustomItem(Material.GOLDEN_LEGGINGS, "&6Gold Leggings", 0, new String[] {"&912-Carat"}, new String[] {"DURABILITY-10"}); - public static ItemStack GOLD_BOOTS = new CustomItem(Material.GOLDEN_BOOTS, "&6Gold Boots", 0, new String[] {"&912-Carat"}, new String[] {"DURABILITY-10"}); - public static ItemStack SLIME_HELMET_STEEL = new CustomItem(Material.IRON_HELMET, "&a&lSlime Helmet", 0, new String[] {"&7&oReinforced", "", "&a&oBouncy Feeling"}, new String[] {"DURABILITY-4", "PROTECTION_ENVIRONMENTAL-2"}); - public static ItemStack SLIME_CHESTPLATE_STEEL = new CustomItem(Material.IRON_CHESTPLATE, "&a&lSlime Chestplate", 0, new String[] {"&7&oReinforced", "", "&a&oBouncy Feeling"}, new String[] {"DURABILITY-4", "PROTECTION_ENVIRONMENTAL-2"}); - public static ItemStack SLIME_LEGGINGS_STEEL = new CustomItem(Material.IRON_LEGGINGS, "&a&lSlime Leggings", 0, new String[] {"&7&oReinforced", "", "&a&oBouncy Feeling", "", "&9+ Speed"}, new String[] {"DURABILITY-4", "PROTECTION_ENVIRONMENTAL-2"}); - public static ItemStack SLIME_BOOTS_STEEL = new CustomItem(Material.IRON_BOOTS, "&a&lSlime Boots", 0, new String[] {"&7&oReinforced", "", "&a&oBouncy Feeling", "", "&9+ Jump Boost", "&9+ No Fall Damage"}, new String[] {"DURABILITY-4", "PROTECTION_ENVIRONMENTAL-2"}); - public static ItemStack BOOTS_OF_THE_STOMPER = new CustomArmor(new CustomItem(Material.LEATHER_BOOTS, "&bBoots of the Stomper", "", "&9All Fall Damage you receive", "&9will be applied to nearby Mobs/Players", "", "&9+ No Fall Damage"), Color.AQUA); - public static ItemStack HEAVY_METAL_HELMET = new CustomItem(Material.IRON_HELMET, "&cHeavy Helmet", 0, new String[] {"", "&9+ Strength", "&9+ Slowness"}, new String[] {"DURABILITY-10", "PROTECTION_ENVIRONMENTAL-10"}); - public static ItemStack HEAVY_METAL_CHESTPLATE = new CustomItem(Material.IRON_CHESTPLATE, "&cHeavy Chestplate", 0, new String[] {"", "&9+ Strength", "&9+ Slowness"}, new String[] {"DURABILITY-10", "PROTECTION_ENVIRONMENTAL-10"}); - public static ItemStack HEAVY_METAL_LEGGINGS = new CustomItem(Material.IRON_LEGGINGS, "&cHeavy Leggings", 0, new String[] {"", "&9+ Strength", "&9+ Slowness"}, new String[] {"DURABILITY-10", "PROTECTION_ENVIRONMENTAL-10"}); - public static ItemStack HEAVY_METAL_BOOTS = new CustomItem(Material.IRON_BOOTS, "&cHeavy Boots", 0, new String[] {"", "&9+ Strength", "&9+ Slowness"}, new String[] {"DURABILITY-10", "PROTECTION_ENVIRONMENTAL-10"}); + public static final ItemStack GLOWSTONE_HELMET = new CustomArmor(new CustomItem(Material.LEATHER_HELMET, "&e&lGlowstone Helmet", "", "&a&oShining like the sun!", "", "&9+ Night Vision"), Color.YELLOW); + public static final ItemStack GLOWSTONE_CHESTPLATE = new CustomArmor(new CustomItem(Material.LEATHER_CHESTPLATE, "&e&lGlowstone Chestplate", "", "&a&oShining like the sun!", "", "&9+ Night Vision"), Color.YELLOW); + public static final ItemStack GLOWSTONE_LEGGINGS = new CustomArmor(new CustomItem(Material.LEATHER_LEGGINGS, "&e&lGlowstone Leggings", "", "&a&oShining like the sun!", "", "&9+ Night Vision"), Color.YELLOW); + public static final ItemStack GLOWSTONE_BOOTS = new CustomArmor(new CustomItem(Material.LEATHER_BOOTS, "&e&lGlowstone Boots", "", "&a&oShining like the sun!", "", "&9+ Night Vision"), Color.YELLOW); + public static final ItemStack ENDER_HELMET = new CustomArmor(new CustomItem(Material.LEATHER_HELMET, "&5&lEnder Helmet", "", "&a&oSometimes its here, sometimes there!"), Color.fromRGB(28, 25, 112)); + public static final ItemStack ENDER_CHESTPLATE = new CustomArmor(new CustomItem(Material.LEATHER_CHESTPLATE, "&5&lEnder Chestplate", "", "&a&oSometimes its here, sometimes there!"), Color.fromRGB(28, 25, 112)); + public static final ItemStack ENDER_LEGGINGS = new CustomArmor(new CustomItem(Material.LEATHER_LEGGINGS, "&5&lEnder Leggings", "", "&a&oSometimes its here, sometimes there!"), Color.fromRGB(28, 25, 112)); + public static final ItemStack ENDER_BOOTS = new CustomArmor(new CustomItem(Material.LEATHER_BOOTS, "&5&lEnder Boots", "", "&a&oSometimes its here, sometimes there!", "" , "&9+ No Enderpearl Damage"), Color.fromRGB(28, 25, 112)); + public static final ItemStack SLIME_HELMET = new CustomArmor(new CustomItem(Material.LEATHER_HELMET, "&a&lSlime Helmet", "", "&a&oBouncy Feeling"), Color.LIME); + public static final ItemStack SLIME_CHESTPLATE = new CustomArmor(new CustomItem(Material.LEATHER_CHESTPLATE, "&a&lSlime Chestplate", "", "&a&oBouncy Feeling"), Color.LIME); + public static final ItemStack SLIME_LEGGINGS = new CustomArmor(new CustomItem(Material.LEATHER_LEGGINGS, "&a&lSlime Leggings", "", "&a&oBouncy Feeling", "", "&9+ Speed"), Color.LIME); + public static final ItemStack SLIME_BOOTS = new CustomArmor(new CustomItem(Material.LEATHER_BOOTS, "&a&lSlime Boots", "", "&a&oBouncy Feeling", "", "&9+ Jump Boost", "&9+ No Fall Damage"), Color.LIME); + public static final ItemStack CACTUS_HELMET = new CustomArmor(new CustomItem(Material.LEATHER_HELMET, "&2Cactus Helmet", 0, new String[0], new String[] {"THORNS-3", "DURABILITY-5"}), Color.GREEN); + public static final ItemStack CACTUS_CHESTPLATE = new CustomArmor(new CustomItem(Material.LEATHER_CHESTPLATE, "&2Cactus Chestplate", 0, new String[0], new String[] {"THORNS-3", "DURABILITY-5"}), Color.GREEN); + public static final ItemStack CACTUS_LEGGINGS = new CustomArmor(new CustomItem(Material.LEATHER_LEGGINGS, "&2Cactus Leggings", 0, new String[0], new String[] {"THORNS-3", "DURABILITY-5"}), Color.GREEN); + public static final ItemStack CACTUS_BOOTS = new CustomArmor(new CustomItem(Material.LEATHER_BOOTS, "&2Cactus Boots", 0, new String[0], new String[] {"THORNS-3", "DURABILITY-5"}), Color.GREEN); + public static final ItemStack DAMASCUS_STEEL_HELMET = new CustomItem(Material.IRON_HELMET, "&7Damascus Steel Helmet", new String[] {"DURABILITY-4", "PROTECTION_ENVIRONMENTAL-4"}, 0); + public static final ItemStack DAMASCUS_STEEL_CHESTPLATE = new CustomItem(Material.IRON_CHESTPLATE, "&7Damascus Steel Chestplate", new String[] {"DURABILITY-4", "PROTECTION_ENVIRONMENTAL-4"}, 0); + public static final ItemStack DAMASCUS_STEEL_LEGGINGS = new CustomItem(Material.IRON_LEGGINGS, "&7Damascus Steel Leggings", new String[] {"DURABILITY-4", "PROTECTION_ENVIRONMENTAL-4"}, 0); + public static final ItemStack DAMASCUS_STEEL_BOOTS = new CustomItem(Material.IRON_BOOTS, "&7Damascus Steel Boots", new String[] {"DURABILITY-4", "PROTECTION_ENVIRONMENTAL-4"}, 0); + public static final ItemStack REINFORCED_ALLOY_HELMET = new CustomItem(Material.IRON_HELMET, "&bReinforced Helmet", new String[] {"DURABILITY-9", "PROTECTION_ENVIRONMENTAL-9"}, 0); + public static final ItemStack REINFORCED_ALLOY_CHESTPLATE = new CustomItem(Material.IRON_CHESTPLATE, "&bReinforced Chestplate", new String[] {"DURABILITY-9", "PROTECTION_ENVIRONMENTAL-9"}, 0); + public static final ItemStack REINFORCED_ALLOY_LEGGINGS = new CustomItem(Material.IRON_LEGGINGS, "&bReinforced Leggings", new String[] {"DURABILITY-9", "PROTECTION_ENVIRONMENTAL-9"}, 0); + public static final ItemStack REINFORCED_ALLOY_BOOTS = new CustomItem(Material.IRON_BOOTS, "&bReinforced Boots", new String[] {"DURABILITY-9", "PROTECTION_ENVIRONMENTAL-9"}, 0); + public static final ItemStack SCUBA_HELMET = new CustomArmor(new CustomItem(Material.LEATHER_HELMET, "&cScuba Helmet", "", "&bAllows you to breathe Underwater", "&4&oPart of Hazmat Suit"), Color.ORANGE); + public static final ItemStack HAZMATSUIT_CHESTPLATE = new CustomArmor(new CustomItem(Material.LEATHER_CHESTPLATE, "&cHazmat Suit", "", "&bAllows you to walk through Fire", "&4&oPart of Hazmat Suit"), Color.ORANGE); + public static final ItemStack HAZMATSUIT_LEGGINGS = new CustomArmor(new CustomItem(Material.LEATHER_LEGGINGS, "&cHazmat Suit Leggings", "", "&4&oPart of Hazmat Suit"), Color.ORANGE); + public static final ItemStack RUBBER_BOOTS = new CustomArmor(new CustomItem(Material.LEATHER_BOOTS, "&cRubber Boots", "", "&4&oPart of Hazmat Suit"), Color.BLACK); + public static final ItemStack GILDED_IRON_HELMET = new CustomItem(Material.GOLDEN_HELMET, "&6Gilded Iron Helmet", new String[] {"DURABILITY-6", "PROTECTION_ENVIRONMENTAL-8"}, 0); + public static final ItemStack GILDED_IRON_CHESTPLATE = new CustomItem(Material.GOLDEN_CHESTPLATE, "&6Gilded Iron Chestplate", new String[] {"DURABILITY-6", "PROTECTION_ENVIRONMENTAL-8"}, 0); + public static final ItemStack GILDED_IRON_LEGGINGS = new CustomItem(Material.GOLDEN_LEGGINGS, "&6Gilded Iron Leggings", new String[] {"DURABILITY-6", "PROTECTION_ENVIRONMENTAL-8"}, 0); + public static final ItemStack GILDED_IRON_BOOTS = new CustomItem(Material.GOLDEN_BOOTS, "&6Gilded Iron Boots", new String[] {"DURABILITY-6", "PROTECTION_ENVIRONMENTAL-8"}, 0); + public static final ItemStack GOLD_HELMET = new CustomItem(Material.GOLDEN_HELMET, "&6Gold Helmet", 0, new String[] {"&912-Carat"}, new String[] {"DURABILITY-10"}); + public static final ItemStack GOLD_CHESTPLATE = new CustomItem(Material.GOLDEN_CHESTPLATE, "&6Gold Chestplate", 0, new String[] {"&912-Carat"}, new String[] {"DURABILITY-10"}); + public static final ItemStack GOLD_LEGGINGS = new CustomItem(Material.GOLDEN_LEGGINGS, "&6Gold Leggings", 0, new String[] {"&912-Carat"}, new String[] {"DURABILITY-10"}); + public static final ItemStack GOLD_BOOTS = new CustomItem(Material.GOLDEN_BOOTS, "&6Gold Boots", 0, new String[] {"&912-Carat"}, new String[] {"DURABILITY-10"}); + public static final ItemStack SLIME_HELMET_STEEL = new CustomItem(Material.IRON_HELMET, "&a&lSlime Helmet", 0, new String[] {"&7&oReinforced", "", "&a&oBouncy Feeling"}, new String[] {"DURABILITY-4", "PROTECTION_ENVIRONMENTAL-2"}); + public static final ItemStack SLIME_CHESTPLATE_STEEL = new CustomItem(Material.IRON_CHESTPLATE, "&a&lSlime Chestplate", 0, new String[] {"&7&oReinforced", "", "&a&oBouncy Feeling"}, new String[] {"DURABILITY-4", "PROTECTION_ENVIRONMENTAL-2"}); + public static final ItemStack SLIME_LEGGINGS_STEEL = new CustomItem(Material.IRON_LEGGINGS, "&a&lSlime Leggings", 0, new String[] {"&7&oReinforced", "", "&a&oBouncy Feeling", "", "&9+ Speed"}, new String[] {"DURABILITY-4", "PROTECTION_ENVIRONMENTAL-2"}); + public static final ItemStack SLIME_BOOTS_STEEL = new CustomItem(Material.IRON_BOOTS, "&a&lSlime Boots", 0, new String[] {"&7&oReinforced", "", "&a&oBouncy Feeling", "", "&9+ Jump Boost", "&9+ No Fall Damage"}, new String[] {"DURABILITY-4", "PROTECTION_ENVIRONMENTAL-2"}); + public static final ItemStack BOOTS_OF_THE_STOMPER = new CustomArmor(new CustomItem(Material.LEATHER_BOOTS, "&bBoots of the Stomper", "", "&9All Fall Damage you receive", "&9will be applied to nearby Mobs/Players", "", "&9+ No Fall Damage"), Color.AQUA); + public static final ItemStack HEAVY_METAL_HELMET = new CustomItem(Material.IRON_HELMET, "&cHeavy Helmet", 0, new String[] {"", "&9+ Strength", "&9+ Slowness"}, new String[] {"DURABILITY-10", "PROTECTION_ENVIRONMENTAL-10"}); + public static final ItemStack HEAVY_METAL_CHESTPLATE = new CustomItem(Material.IRON_CHESTPLATE, "&cHeavy Chestplate", 0, new String[] {"", "&9+ Strength", "&9+ Slowness"}, new String[] {"DURABILITY-10", "PROTECTION_ENVIRONMENTAL-10"}); + public static final ItemStack HEAVY_METAL_LEGGINGS = new CustomItem(Material.IRON_LEGGINGS, "&cHeavy Leggings", 0, new String[] {"", "&9+ Strength", "&9+ Slowness"}, new String[] {"DURABILITY-10", "PROTECTION_ENVIRONMENTAL-10"}); + public static final ItemStack HEAVY_METAL_BOOTS = new CustomItem(Material.IRON_BOOTS, "&cHeavy Boots", 0, new String[] {"", "&9+ Strength", "&9+ Slowness"}, new String[] {"DURABILITY-10", "PROTECTION_ENVIRONMENTAL-10"}); /* Misc */ - public static ItemStack MAGIC_LUMP_1 = new CustomItem(Material.GOLD_NUGGET, "&6Magical Lump &7- &eI", "", "&c&oTier: I"); - public static ItemStack MAGIC_LUMP_2 = new CustomItem(Material.GOLD_NUGGET, "&6Magical Lump &7- &eII", "", "&c&oTier: II"); - public static ItemStack MAGIC_LUMP_3 = new CustomItem(Material.GOLD_NUGGET, "&6Magical Lump &7- &eIII", "", "&c&oTier: III"); - public static ItemStack ENDER_LUMP_1 = new CustomItem(Material.GOLD_NUGGET, "&5Ender Lump &7- &eI", "", "&c&oTier: I"); - public static ItemStack ENDER_LUMP_2 = new CustomItem(Material.GOLD_NUGGET, "&5Ender Lump &7- &eII", "", "&c&oTier: II"); - public static ItemStack ENDER_LUMP_3 = new CustomItem(Material.GOLD_NUGGET, "&5Ender Lump &7- &eIII", "", "&c&oTier: III"); - public static ItemStack MAGICAL_BOOK_COVER = new CustomItem(Material.PAPER, "&6Magical Book Cover", "", "&a&oUsed for various Magic Books"); - public static ItemStack BASIC_CIRCUIT_BOARD = new CustomItem(Material.ACTIVATOR_RAIL, "&bBasic Circuit Board"); - public static ItemStack ADVANCED_CIRCUIT_BOARD = new CustomItem(Material.POWERED_RAIL, "&bAdvanced Circuit Board"); - public static ItemStack WHEAT_FLOUR = new CustomItem(Material.SUGAR, "&rWheat Flour"); - public static ItemStack STEEL_PLATE = new CustomItem(Material.PAPER, "&7&lSteel Plate"); + public static final ItemStack MAGIC_LUMP_1 = new CustomItem(Material.GOLD_NUGGET, "&6Magical Lump &7- &eI", "", "&c&oTier: I"); + public static final ItemStack MAGIC_LUMP_2 = new CustomItem(Material.GOLD_NUGGET, "&6Magical Lump &7- &eII", "", "&c&oTier: II"); + public static final ItemStack MAGIC_LUMP_3 = new CustomItem(Material.GOLD_NUGGET, "&6Magical Lump &7- &eIII", "", "&c&oTier: III"); + public static final ItemStack ENDER_LUMP_1 = new CustomItem(Material.GOLD_NUGGET, "&5Ender Lump &7- &eI", "", "&c&oTier: I"); + public static final ItemStack ENDER_LUMP_2 = new CustomItem(Material.GOLD_NUGGET, "&5Ender Lump &7- &eII", "", "&c&oTier: II"); + public static final ItemStack ENDER_LUMP_3 = new CustomItem(Material.GOLD_NUGGET, "&5Ender Lump &7- &eIII", "", "&c&oTier: III"); + public static final ItemStack MAGICAL_BOOK_COVER = new CustomItem(Material.PAPER, "&6Magical Book Cover", "", "&a&oUsed for various Magic Books"); + public static final ItemStack BASIC_CIRCUIT_BOARD = new CustomItem(Material.ACTIVATOR_RAIL, "&bBasic Circuit Board"); + public static final ItemStack ADVANCED_CIRCUIT_BOARD = new CustomItem(Material.POWERED_RAIL, "&bAdvanced Circuit Board"); + public static final ItemStack WHEAT_FLOUR = new CustomItem(Material.SUGAR, "&rWheat Flour"); + public static final ItemStack STEEL_PLATE = new CustomItem(Material.PAPER, "&7&lSteel Plate"); public static ItemStack COMPRESSED_CARBON = null; public static ItemStack BATTERY = null; public static ItemStack CARBON_CHUNK = null; - public static ItemStack STEEL_THRUSTER = new CustomItem(Material.BUCKET, "&7&lSteel Thruster"); + public static final ItemStack STEEL_THRUSTER = new CustomItem(Material.BUCKET, "&7&lSteel Thruster"); public static ItemStack POWER_CRYSTAL = null; - public static ItemStack CHAIN = new CustomItem(Material.STRING, "&bChain"); - public static ItemStack HOOK = new CustomItem(Material.FLINT, "&bHook"); - public static ItemStack SIFTED_ORE = new CustomItem(Material.GUNPOWDER, "&6Sifted Ore"); + public static final ItemStack CHAIN = new CustomItem(Material.STRING, "&bChain"); + public static final ItemStack HOOK = new CustomItem(Material.FLINT, "&bHook"); + public static final ItemStack SIFTED_ORE = new CustomItem(Material.GUNPOWDER, "&6Sifted Ore"); public static ItemStack STONE_CHUNK = null; public static ItemStack LAVA_CRYSTAL = null; - public static ItemStack SALT = new CustomItem(Material.SUGAR, "&rSalt"); + public static final ItemStack SALT = new CustomItem(Material.SUGAR, "&rSalt"); public static ItemStack BUTTER = null; public static ItemStack CHEESE = null; - public static ItemStack HEAVY_CREAM = new CustomItem(Material.SNOWBALL, "&rHeavy Cream"); - public static ItemStack CRUSHED_ORE = new CustomItem(Material.GUNPOWDER, "&6Crushed Ore"); - public static ItemStack PULVERIZED_ORE = new CustomItem(Material.GUNPOWDER, "&6Pulverized Ore"); - public static ItemStack PURE_ORE_CLUSTER = new CustomItem(Material.GUNPOWDER, "&6Pure Ore Cluster"); + public static final ItemStack HEAVY_CREAM = new CustomItem(Material.SNOWBALL, "&rHeavy Cream"); + public static final ItemStack CRUSHED_ORE = new CustomItem(Material.GUNPOWDER, "&6Crushed Ore"); + public static final ItemStack PULVERIZED_ORE = new CustomItem(Material.GUNPOWDER, "&6Pulverized Ore"); + public static final ItemStack PURE_ORE_CLUSTER = new CustomItem(Material.GUNPOWDER, "&6Pure Ore Cluster"); public static ItemStack TINY_URANIUM = null; public static ItemStack SMALL_URANIUM = null; public static ItemStack MAGNET = null; - public static ItemStack NECROTIC_SKULL = new CustomItem(Material.WITHER_SKELETON_SKULL, "&cNecrotic Skull"); - public static ItemStack ESSENCE_OF_AFTERLIFE = new CustomItem(Material.GUNPOWDER, "&4Essence of Afterlife"); + public static final ItemStack NECROTIC_SKULL = new CustomItem(Material.WITHER_SKELETON_SKULL, "&cNecrotic Skull"); + public static final ItemStack ESSENCE_OF_AFTERLIFE = new CustomItem(Material.GUNPOWDER, "&4Essence of Afterlife"); public static ItemStack ELECTRO_MAGNET = null; public static ItemStack HEATING_COIL = null; public static ItemStack COOLING_UNIT = null; public static ItemStack ELECTRIC_MOTOR = null; public static ItemStack CARGO_MOTOR = null; - public static ItemStack SCROLL_OF_DIMENSIONAL_TELEPOSITION = new CustomItem(Material.PAPER, "&6Scroll of Dimensional Teleposition", "", "&cThis Scroll is capable of creating", "&ca temporary black Hole which pulls", "&cnearby Entities into itself and sends", "&cthem into another Dimension where", "&ceverything is turned around", "", "&rIn other words: Makes Entities turn by 180 Degrees"); - public static ItemStack TOME_OF_KNOWLEDGE_SHARING = new CustomItem(Material.BOOK, "&6Tome of Knowledge Sharing", "&7Owner: &bNone", "", "&eRight Click&7 to bind this Tome to yourself", "", "", "&eRight Click&7 to obtain all Researches by", "&7the previously assigned Owner"); - public static ItemStack HARDENED_GLASS = new CustomItem(Material.LIGHT_GRAY_STAINED_GLASS, "&7Hardened Glass", "", "&rWithstands Explosions"); - public static ItemStack WITHER_PROOF_OBSIDIAN = new CustomItem(Material.OBSIDIAN, "&5Wither-Proof Obsidian", "", "&rWithstands Explosions", "&rWithstands Wither Bosses"); - public static ItemStack WITHER_PROOF_GLASS = new CustomItem(Material.PURPLE_STAINED_GLASS, "&5Wither-Proof Glass", "", "&rWithstands Explosions", "&rWithstands Wither Bosses"); - public static ItemStack REINFORCED_PLATE = new CustomItem(Material.PAPER, "&7Reinforced Plate"); - public static ItemStack ANCIENT_PEDESTAL = new CustomItem(Material.DISPENSER, "&dAncient Pedestal", "", "&5Part of the Ancient Altar"); - public static ItemStack ANCIENT_ALTAR = new CustomItem(Material.ENCHANTING_TABLE, "&dAncient Altar", "", "&5Multi-Block Altar for", "&5magical Crafting Processes"); + public static final ItemStack SCROLL_OF_DIMENSIONAL_TELEPOSITION = new CustomItem(Material.PAPER, "&6Scroll of Dimensional Teleposition", "", "&cThis Scroll is capable of creating", "&ca temporary black Hole which pulls", "&cnearby Entities into itself and sends", "&cthem into another Dimension where", "&ceverything is turned around", "", "&rIn other words: Makes Entities turn by 180 Degrees"); + public static final ItemStack TOME_OF_KNOWLEDGE_SHARING = new CustomItem(Material.BOOK, "&6Tome of Knowledge Sharing", "&7Owner: &bNone", "", "&eRight Click&7 to bind this Tome to yourself", "", "", "&eRight Click&7 to obtain all Researches by", "&7the previously assigned Owner"); + public static final ItemStack HARDENED_GLASS = new CustomItem(Material.LIGHT_GRAY_STAINED_GLASS, "&7Hardened Glass", "", "&rWithstands Explosions"); + public static final ItemStack WITHER_PROOF_OBSIDIAN = new CustomItem(Material.OBSIDIAN, "&5Wither-Proof Obsidian", "", "&rWithstands Explosions", "&rWithstands Wither Bosses"); + public static final ItemStack WITHER_PROOF_GLASS = new CustomItem(Material.PURPLE_STAINED_GLASS, "&5Wither-Proof Glass", "", "&rWithstands Explosions", "&rWithstands Wither Bosses"); + public static final ItemStack REINFORCED_PLATE = new CustomItem(Material.PAPER, "&7Reinforced Plate"); + public static final ItemStack ANCIENT_PEDESTAL = new CustomItem(Material.DISPENSER, "&dAncient Pedestal", "", "&5Part of the Ancient Altar"); + public static final ItemStack ANCIENT_ALTAR = new CustomItem(Material.ENCHANTING_TABLE, "&dAncient Altar", "", "&5Multi-Block Altar for", "&5magical Crafting Processes"); public static ItemStack DUCT_TAPE = null; - public static ItemStack COPPER_WIRE = new CustomItem(Material.STRING, "&6Copper Wire", "", "&6Crucial component in electric modules"); + public static final ItemStack COPPER_WIRE = new CustomItem(Material.STRING, "&6Copper Wire", "", "&6Crucial component in electric modules"); - public static ItemStack RAINBOW_WOOL = new CustomItem(Material.WHITE_WOOL, "&5Rainbow Wool", "", "&dCycles through all Colors of the Rainbow!"); - public static ItemStack RAINBOW_GLASS = new CustomItem(Material.WHITE_STAINED_GLASS, "&5Rainbow Glass", "", "&dCycles through all Colors of the Rainbow!"); - public static ItemStack RAINBOW_CLAY = new CustomItem(Material.WHITE_TERRACOTTA, "&5Rainbow Clay", "", "&dCycles through all Colors of the Rainbow!"); - public static ItemStack RAINBOW_GLASS_PANE = new CustomItem(Material.WHITE_STAINED_GLASS_PANE, "&5Rainbow Glass Pane", "", "&dCycles through all Colors of the Rainbow!"); + public static final ItemStack RAINBOW_WOOL = new CustomItem(Material.WHITE_WOOL, "&5Rainbow Wool", "", "&dCycles through all Colors of the Rainbow!"); + public static final ItemStack RAINBOW_GLASS = new CustomItem(Material.WHITE_STAINED_GLASS, "&5Rainbow Glass", "", "&dCycles through all Colors of the Rainbow!"); + public static final ItemStack RAINBOW_CLAY = new CustomItem(Material.WHITE_TERRACOTTA, "&5Rainbow Clay", "", "&dCycles through all Colors of the Rainbow!"); + public static final ItemStack RAINBOW_GLASS_PANE = new CustomItem(Material.WHITE_STAINED_GLASS_PANE, "&5Rainbow Glass Pane", "", "&dCycles through all Colors of the Rainbow!"); - public static ItemStack RAINBOW_WOOL_XMAS = new CustomItem(Material.WHITE_WOOL, "&5Rainbow Wool &7(Christmas)", "", Christmas.color("< Christmas Edition >")); - public static ItemStack RAINBOW_GLASS_XMAS = new CustomItem(Material.WHITE_STAINED_GLASS, "&5Rainbow Glass &7(Christmas)", "", Christmas.color("< Christmas Edition >")); - public static ItemStack RAINBOW_CLAY_XMAS = new CustomItem(Material.WHITE_TERRACOTTA, "&5Rainbow Clay &7(Christmas)", "", Christmas.color("< Christmas Edition >")); - public static ItemStack RAINBOW_GLASS_PANE_XMAS = new CustomItem(Material.WHITE_STAINED_GLASS_PANE, "&5Rainbow Glass Pane &7(Christmas)", "", Christmas.color("< Christmas Edition >")); + public static final ItemStack RAINBOW_WOOL_XMAS = new CustomItem(Material.WHITE_WOOL, "&5Rainbow Wool &7(Christmas)", "", Christmas.color("< Christmas Edition >")); + public static final ItemStack RAINBOW_GLASS_XMAS = new CustomItem(Material.WHITE_STAINED_GLASS, "&5Rainbow Glass &7(Christmas)", "", Christmas.color("< Christmas Edition >")); + public static final ItemStack RAINBOW_CLAY_XMAS = new CustomItem(Material.WHITE_TERRACOTTA, "&5Rainbow Clay &7(Christmas)", "", Christmas.color("< Christmas Edition >")); + public static final ItemStack RAINBOW_GLASS_PANE_XMAS = new CustomItem(Material.WHITE_STAINED_GLASS_PANE, "&5Rainbow Glass Pane &7(Christmas)", "", Christmas.color("< Christmas Edition >")); - public static ItemStack RAINBOW_WOOL_VALENTINE = new CustomItem(Material.PINK_WOOL, "&5Rainbow Wool &7(Valentine's Day)", "", "&d< Valentine's Day Edition >"); - public static ItemStack RAINBOW_GLASS_VALENTINE = new CustomItem(Material.PINK_STAINED_GLASS, "&5Rainbow Glass &7(Valentine's Day)", "", "&d< Valentine's Day Edition >"); - public static ItemStack RAINBOW_CLAY_VALENTINE = new CustomItem(Material.PINK_TERRACOTTA, "&5Rainbow Clay &7(Valentine's Day)", "", "&d< Valentine's Day Edition >"); - public static ItemStack RAINBOW_GLASS_PANE_VALENTINE = new CustomItem(Material.PINK_STAINED_GLASS_PANE, "&5Rainbow Glass Pane &7(Valentine's Day)", "", "&d< Valentine's Day Edition >"); + public static final ItemStack RAINBOW_WOOL_VALENTINE = new CustomItem(Material.PINK_WOOL, "&5Rainbow Wool &7(Valentine's Day)", "", "&d< Valentine's Day Edition >"); + public static final ItemStack RAINBOW_GLASS_VALENTINE = new CustomItem(Material.PINK_STAINED_GLASS, "&5Rainbow Glass &7(Valentine's Day)", "", "&d< Valentine's Day Edition >"); + public static final ItemStack RAINBOW_CLAY_VALENTINE = new CustomItem(Material.PINK_TERRACOTTA, "&5Rainbow Clay &7(Valentine's Day)", "", "&d< Valentine's Day Edition >"); + public static final ItemStack RAINBOW_GLASS_PANE_VALENTINE = new CustomItem(Material.PINK_STAINED_GLASS_PANE, "&5Rainbow Glass Pane &7(Valentine's Day)", "", "&d< Valentine's Day Edition >"); /* Ingots */ - public static ItemStack COPPER_INGOT = new CustomItem(Material.BRICK, "&bCopper Ingot"); - public static ItemStack TIN_INGOT = new CustomItem(Material.IRON_INGOT, "&bTin Ingot"); - public static ItemStack SILVER_INGOT = new CustomItem(Material.IRON_INGOT, "&bSilver Ingot"); - public static ItemStack ALUMINUM_INGOT = new CustomItem(Material.IRON_INGOT, "&bAluminum Ingot"); - public static ItemStack LEAD_INGOT = new CustomItem(Material.IRON_INGOT, "&bLead Ingot"); - public static ItemStack ZINC_INGOT = new CustomItem(Material.IRON_INGOT, "&bZinc Ingot"); - public static ItemStack MAGNESIUM_INGOT = new CustomItem(Material.IRON_INGOT, "&bMagnesium Ingot"); + public static final ItemStack COPPER_INGOT = new CustomItem(Material.BRICK, "&bCopper Ingot"); + public static final ItemStack TIN_INGOT = new CustomItem(Material.IRON_INGOT, "&bTin Ingot"); + public static final ItemStack SILVER_INGOT = new CustomItem(Material.IRON_INGOT, "&bSilver Ingot"); + public static final ItemStack ALUMINUM_INGOT = new CustomItem(Material.IRON_INGOT, "&bAluminum Ingot"); + public static final ItemStack LEAD_INGOT = new CustomItem(Material.IRON_INGOT, "&bLead Ingot"); + public static final ItemStack ZINC_INGOT = new CustomItem(Material.IRON_INGOT, "&bZinc Ingot"); + public static final ItemStack MAGNESIUM_INGOT = new CustomItem(Material.IRON_INGOT, "&bMagnesium Ingot"); /* Alloy (Carbon + Iron) */ - public static ItemStack STEEL_INGOT = new CustomItem(Material.IRON_INGOT, "&bSteel Ingot"); + public static final ItemStack STEEL_INGOT = new CustomItem(Material.IRON_INGOT, "&bSteel Ingot"); /* Alloy (Copper + Tin) */ - public static ItemStack BRONZE_INGOT = new CustomItem(Material.BRICK, "&bBronze Ingot"); + public static final ItemStack BRONZE_INGOT = new CustomItem(Material.BRICK, "&bBronze Ingot"); /* Alloy (Copper + Aluminum) */ - public static ItemStack DURALUMIN_INGOT = new CustomItem(Material.IRON_INGOT, "&bDuralumin Ingot"); + public static final ItemStack DURALUMIN_INGOT = new CustomItem(Material.IRON_INGOT, "&bDuralumin Ingot"); /* Alloy (Copper + Silver) */ - public static ItemStack BILLON_INGOT = new CustomItem(Material.IRON_INGOT, "&bBillon Ingot"); + public static final ItemStack BILLON_INGOT = new CustomItem(Material.IRON_INGOT, "&bBillon Ingot"); /* Alloy (Copper + Zinc) */ - public static ItemStack BRASS_INGOT = new CustomItem(Material.GOLD_INGOT, "&bBrass Ingot"); + public static final ItemStack BRASS_INGOT = new CustomItem(Material.GOLD_INGOT, "&bBrass Ingot"); /* Alloy (Aluminum + Brass) */ - public static ItemStack ALUMINUM_BRASS_INGOT = new CustomItem(Material.GOLD_INGOT, "&bAluminum Brass Ingot"); + public static final ItemStack ALUMINUM_BRASS_INGOT = new CustomItem(Material.GOLD_INGOT, "&bAluminum Brass Ingot"); /* Alloy (Aluminum + Bronze) */ - public static ItemStack ALUMINUM_BRONZE_INGOT = new CustomItem(Material.GOLD_INGOT, "&bAluminum Bronze Ingot"); + public static final ItemStack ALUMINUM_BRONZE_INGOT = new CustomItem(Material.GOLD_INGOT, "&bAluminum Bronze Ingot"); /* Alloy (Gold + Silver + Copper) */ - public static ItemStack CORINTHIAN_BRONZE_INGOT = new CustomItem(Material.GOLD_INGOT, "&bCorinthian Bronze Ingot"); + public static final ItemStack CORINTHIAN_BRONZE_INGOT = new CustomItem(Material.GOLD_INGOT, "&bCorinthian Bronze Ingot"); /* Alloy (Lead + Tin) */ - public static ItemStack SOLDER_INGOT = new CustomItem(Material.IRON_INGOT, "&bSolder Ingot"); + public static final ItemStack SOLDER_INGOT = new CustomItem(Material.IRON_INGOT, "&bSolder Ingot"); /* Alloy (Steel + Iron + Carbon) */ - public static ItemStack DAMASCUS_STEEL_INGOT = new CustomItem(Material.IRON_INGOT, "&bDamascus Steel Ingot"); + public static final ItemStack DAMASCUS_STEEL_INGOT = new CustomItem(Material.IRON_INGOT, "&bDamascus Steel Ingot"); /* Alloy (Damascus Steel + Duralumin + Compressed Carbon + Aluminium Bronze) */ - public static ItemStack HARDENED_METAL_INGOT = new CustomItem(Material.IRON_INGOT, "&b&lHardened Metal"); + public static final ItemStack HARDENED_METAL_INGOT = new CustomItem(Material.IRON_INGOT, "&b&lHardened Metal"); /* Alloy (Hardened Metal + Corinthian Bronze + Solder + Billon + Damascus Steel) */ - public static ItemStack REINFORCED_ALLOY_INGOT = new CustomItem(Material.IRON_INGOT, "&b&lReinforced Alloy Ingot"); + public static final ItemStack REINFORCED_ALLOY_INGOT = new CustomItem(Material.IRON_INGOT, "&b&lReinforced Alloy Ingot"); /* Alloy (Iron + Silicon) */ - public static ItemStack FERROSILICON = new CustomItem(Material.IRON_INGOT, "&bFerrosilicon"); + public static final ItemStack FERROSILICON = new CustomItem(Material.IRON_INGOT, "&bFerrosilicon"); /* Alloy (Iron + Gold) */ - public static ItemStack GILDED_IRON = new CustomItem(Material.GOLD_INGOT, "&6&lGilded Iron"); + public static final ItemStack GILDED_IRON = new CustomItem(Material.GOLD_INGOT, "&6&lGilded Iron"); /* Alloy (Redston + Ferrosilicon) */ - public static ItemStack REDSTONE_ALLOY = new CustomItem(Material.BRICK, "&cRedstone Alloy Ingot"); + public static final ItemStack REDSTONE_ALLOY = new CustomItem(Material.BRICK, "&cRedstone Alloy Ingot"); /* Alloy (Iron + Copper) */ - public static ItemStack NICKEL_INGOT = new CustomItem(Material.IRON_INGOT, "&bNickel Ingot"); + public static final ItemStack NICKEL_INGOT = new CustomItem(Material.IRON_INGOT, "&bNickel Ingot"); /* Alloy (Nickel + Iron + Copper) */ - public static ItemStack COBALT_INGOT = new CustomItem(Material.IRON_INGOT, "&9Cobalt Ingot"); + public static final ItemStack COBALT_INGOT = new CustomItem(Material.IRON_INGOT, "&9Cobalt Ingot"); /* Gold */ - public static ItemStack GOLD_4K = new CustomItem(Material.GOLD_INGOT, "&rGold Ingot &7(4-Carat)"); - public static ItemStack GOLD_6K = new CustomItem(Material.GOLD_INGOT, "&rGold Ingot &7(6-Carat)"); - public static ItemStack GOLD_8K = new CustomItem(Material.GOLD_INGOT, "&rGold Ingot &7(8-Carat)"); - public static ItemStack GOLD_10K = new CustomItem(Material.GOLD_INGOT, "&rGold Ingot &7(10-Carat)"); - public static ItemStack GOLD_12K = new CustomItem(Material.GOLD_INGOT, "&rGold Ingot &7(12-Carat)"); - public static ItemStack GOLD_14K = new CustomItem(Material.GOLD_INGOT, "&rGold Ingot &7(14-Carat)"); - public static ItemStack GOLD_16K = new CustomItem(Material.GOLD_INGOT, "&rGold Ingot &7(16-Carat)"); - public static ItemStack GOLD_18K = new CustomItem(Material.GOLD_INGOT, "&rGold Ingot &7(18-Carat)"); - public static ItemStack GOLD_20K = new CustomItem(Material.GOLD_INGOT, "&rGold Ingot &7(20-Carat)"); - public static ItemStack GOLD_22K = new CustomItem(Material.GOLD_INGOT, "&rGold Ingot &7(22-Carat)"); - public static ItemStack GOLD_24K = new CustomItem(Material.GOLD_INGOT, "&rGold Ingot &7(24-Carat)"); + public static final ItemStack GOLD_4K = new CustomItem(Material.GOLD_INGOT, "&rGold Ingot &7(4-Carat)"); + public static final ItemStack GOLD_6K = new CustomItem(Material.GOLD_INGOT, "&rGold Ingot &7(6-Carat)"); + public static final ItemStack GOLD_8K = new CustomItem(Material.GOLD_INGOT, "&rGold Ingot &7(8-Carat)"); + public static final ItemStack GOLD_10K = new CustomItem(Material.GOLD_INGOT, "&rGold Ingot &7(10-Carat)"); + public static final ItemStack GOLD_12K = new CustomItem(Material.GOLD_INGOT, "&rGold Ingot &7(12-Carat)"); + public static final ItemStack GOLD_14K = new CustomItem(Material.GOLD_INGOT, "&rGold Ingot &7(14-Carat)"); + public static final ItemStack GOLD_16K = new CustomItem(Material.GOLD_INGOT, "&rGold Ingot &7(16-Carat)"); + public static final ItemStack GOLD_18K = new CustomItem(Material.GOLD_INGOT, "&rGold Ingot &7(18-Carat)"); + public static final ItemStack GOLD_20K = new CustomItem(Material.GOLD_INGOT, "&rGold Ingot &7(20-Carat)"); + public static final ItemStack GOLD_22K = new CustomItem(Material.GOLD_INGOT, "&rGold Ingot &7(22-Carat)"); + public static final ItemStack GOLD_24K = new CustomItem(Material.GOLD_INGOT, "&rGold Ingot &7(24-Carat)"); /* Dusts */ - public static ItemStack IRON_DUST = new CustomItem(Material.GUNPOWDER, "&6Iron Dust"); - public static ItemStack GOLD_DUST = new CustomItem(Material.GLOWSTONE_DUST, "&6Gold Dust"); - public static ItemStack TIN_DUST = new CustomItem(Material.SUGAR, "&6Tin Dust"); - public static ItemStack COPPER_DUST = new CustomItem(Material.GLOWSTONE_DUST, "&6Copper Dust"); - public static ItemStack SILVER_DUST = new CustomItem(Material.SUGAR, "&6Silver Dust"); - public static ItemStack ALUMINUM_DUST = new CustomItem(Material.SUGAR, "&6Aluminum Dust"); - public static ItemStack LEAD_DUST = new CustomItem(Material.GUNPOWDER, "&6Lead Dust"); - public static ItemStack SULFATE = new CustomItem(Material.GLOWSTONE_DUST, "&6Sulfate"); - public static ItemStack ZINC_DUST = new CustomItem(Material.SUGAR, "&6Zinc Dust"); - public static ItemStack MAGNESIUM_DUST = new CustomItem(Material.SUGAR, "&6Magnesium"); + public static final ItemStack IRON_DUST = new CustomItem(Material.GUNPOWDER, "&6Iron Dust"); + public static final ItemStack GOLD_DUST = new CustomItem(Material.GLOWSTONE_DUST, "&6Gold Dust"); + public static final ItemStack TIN_DUST = new CustomItem(Material.SUGAR, "&6Tin Dust"); + public static final ItemStack COPPER_DUST = new CustomItem(Material.GLOWSTONE_DUST, "&6Copper Dust"); + public static final ItemStack SILVER_DUST = new CustomItem(Material.SUGAR, "&6Silver Dust"); + public static final ItemStack ALUMINUM_DUST = new CustomItem(Material.SUGAR, "&6Aluminum Dust"); + public static final ItemStack LEAD_DUST = new CustomItem(Material.GUNPOWDER, "&6Lead Dust"); + public static final ItemStack SULFATE = new CustomItem(Material.GLOWSTONE_DUST, "&6Sulfate"); + public static final ItemStack ZINC_DUST = new CustomItem(Material.SUGAR, "&6Zinc Dust"); + public static final ItemStack MAGNESIUM_DUST = new CustomItem(Material.SUGAR, "&6Magnesium"); public static ItemStack CARBON = null; - public static ItemStack SILICON = new CustomItem(Material.FIREWORK_STAR, "&6Silicon"); - public static ItemStack GOLD_24K_BLOCK = new CustomItem(Material.GOLD_BLOCK, "&rGold Block &7(24-Carat)"); + public static final ItemStack SILICON = new CustomItem(Material.FIREWORK_STAR, "&6Silicon"); + public static final ItemStack GOLD_24K_BLOCK = new CustomItem(Material.GOLD_BLOCK, "&rGold Block &7(24-Carat)"); /* Gems */ - public static ItemStack SYNTHETIC_DIAMOND = new CustomItem(Material.DIAMOND, "&bSynthetic Diamond"); - public static ItemStack SYNTHETIC_EMERALD = new CustomItem(Material.EMERALD, "&bSynthetic Emerald"); + public static final ItemStack SYNTHETIC_DIAMOND = new CustomItem(Material.DIAMOND, "&bSynthetic Diamond"); + public static final ItemStack SYNTHETIC_EMERALD = new CustomItem(Material.EMERALD, "&bSynthetic Emerald"); public static ItemStack SYNTHETIC_SAPPHIRE = null; public static ItemStack CARBONADO = null; public static ItemStack RAW_CARBONADO = null; @@ -339,81 +339,81 @@ public final class SlimefunItems { public static ItemStack BOOSTED_URANIUM = null; /* Talisman */ - public static ItemStack TALISMAN = new CustomItem(Material.EMERALD, "&6Common Talisman"); - public static ItemStack TALISMAN_ANVIL = new CustomItem(Material.EMERALD, "&aTalisman of the Anvil", "", "&rEach Talisman can prevent", "&r1 Tool from breaking, but will then", "&rbe consumed", "", "&4&lWARNING:", "&4This Talisman does not work on", "&4Tools which are too powerful", "&4due to their complexity"); - public static ItemStack TALISMAN_MINER = new CustomItem(Material.EMERALD, "&aTalisman of the Miner", "", "&rWhile you have this Talisman", "&rin your Inventory it has", "&ra 20% chance of doubling", "&rall Ores you mine"); - public static ItemStack TALISMAN_HUNTER = new CustomItem(Material.EMERALD, "&aTalisman of the Hunter", "", "&rWhile you have this Talisman", "&rin your Inventory it has", "&ra 20% chance of doubling", "&rall Drops from Mobs you kill"); - public static ItemStack TALISMAN_LAVA = new CustomItem(Material.EMERALD, "&aTalisman of the Lava Walker", "", "&rWhile you have this Talisman", "&rin your Inventory it will", "&rgive you Fire Resistance", "&ras soon as you touch Lava", "&rbut will then be consumed"); - public static ItemStack TALISMAN_WATER = new CustomItem(Material.EMERALD, "&aTalisman of the Water Breather", "", "&rWhile you have this Talisman", "&rin your Inventory it will", "&rgive you the ability", "&rto breath underwater as", "&rsoon as you start drowning", "&rbut will then be consumed"); - public static ItemStack TALISMAN_ANGEL = new CustomItem(Material.EMERALD, "&aTalisman of the Angel", "", "&rWhile you have this Talisman", "&rin your Inventory it has a", "&r75% chance to prevent you", "&rfrom taking Fall Damage"); - public static ItemStack TALISMAN_FIRE = new CustomItem(Material.EMERALD, "&aTalisman of the Firefighter", "", "&rWhile you have this Talisman", "&rin your Inventory it will", "&rgive you Fire Resistance", "&ras soon as you start burning", "&rbut will then be consumed"); - public static ItemStack TALISMAN_MAGICIAN = new CustomItem(Material.EMERALD, "&aTalisman of the Magician", "", "&rWhile you have this Talisman", "&rin your Inventory it gives", "&ryou a 80% Luck Bonus on Enchanting", "&rYou will sometimes get an Extra Enchantment"); - public static ItemStack TALISMAN_TRAVELLER = new CustomItem(Material.EMERALD, "&aTalisman of the Traveller", "", "&rWhile you have this Talisman", "&rin your Inventory it gives", "&ryou a 60% Chance for a decent", "&rSpeed Buff when you start sprinting"); - public static ItemStack TALISMAN_WARRIOR = new CustomItem(Material.EMERALD, "&aTalisman of the Warrior", "", "&rWhile you have this Talisman", "&rin your Inventory it gives", "&ryou Strength III whenever you get hit", "&rbut will then be consumed"); - public static ItemStack TALISMAN_KNIGHT = new CustomItem(Material.EMERALD, "&aTalisman of the Knight", "", "&rWhile you have this Talisman", "&rin your Inventory it gives", "&ryou a 30% Chance for 5 Seconds of Regeneration", "&rwhenever You get hit", "&rbut will then be consumed"); - public static ItemStack TALISMAN_WHIRLWIND = new CustomItem(Material.EMERALD, "&aTalisman of the Whirlwind", "", "&rWhile you have this Talisman", "&rin your Inventory it will reflect", "&r60% of all Projectiles fired at you"); - public static ItemStack TALISMAN_WIZARD = new CustomItem(Material.EMERALD, "&aTalisman of the Wizard", "", "&rWhile you have this Talisman", "&rin your Inventory it allows you to", "&robtain Fortune Level 4/5 however", "&rit also has a chance to lower the", "&rLevel of some Enchantments on your Item"); + public static final ItemStack TALISMAN = new CustomItem(Material.EMERALD, "&6Common Talisman"); + public static final ItemStack TALISMAN_ANVIL = new CustomItem(Material.EMERALD, "&aTalisman of the Anvil", "", "&rEach Talisman can prevent", "&r1 Tool from breaking, but will then", "&rbe consumed", "", "&4&lWARNING:", "&4This Talisman does not work on", "&4Tools which are too powerful", "&4due to their complexity"); + public static final ItemStack TALISMAN_MINER = new CustomItem(Material.EMERALD, "&aTalisman of the Miner", "", "&rWhile you have this Talisman", "&rin your Inventory it has", "&ra 20% chance of doubling", "&rall Ores you mine"); + public static final ItemStack TALISMAN_HUNTER = new CustomItem(Material.EMERALD, "&aTalisman of the Hunter", "", "&rWhile you have this Talisman", "&rin your Inventory it has", "&ra 20% chance of doubling", "&rall Drops from Mobs you kill"); + public static final ItemStack TALISMAN_LAVA = new CustomItem(Material.EMERALD, "&aTalisman of the Lava Walker", "", "&rWhile you have this Talisman", "&rin your Inventory it will", "&rgive you Fire Resistance", "&ras soon as you touch Lava", "&rbut will then be consumed"); + public static final ItemStack TALISMAN_WATER = new CustomItem(Material.EMERALD, "&aTalisman of the Water Breather", "", "&rWhile you have this Talisman", "&rin your Inventory it will", "&rgive you the ability", "&rto breath underwater as", "&rsoon as you start drowning", "&rbut will then be consumed"); + public static final ItemStack TALISMAN_ANGEL = new CustomItem(Material.EMERALD, "&aTalisman of the Angel", "", "&rWhile you have this Talisman", "&rin your Inventory it has a", "&r75% chance to prevent you", "&rfrom taking Fall Damage"); + public static final ItemStack TALISMAN_FIRE = new CustomItem(Material.EMERALD, "&aTalisman of the Firefighter", "", "&rWhile you have this Talisman", "&rin your Inventory it will", "&rgive you Fire Resistance", "&ras soon as you start burning", "&rbut will then be consumed"); + public static final ItemStack TALISMAN_MAGICIAN = new CustomItem(Material.EMERALD, "&aTalisman of the Magician", "", "&rWhile you have this Talisman", "&rin your Inventory it gives", "&ryou a 80% Luck Bonus on Enchanting", "&rYou will sometimes get an Extra Enchantment"); + public static final ItemStack TALISMAN_TRAVELLER = new CustomItem(Material.EMERALD, "&aTalisman of the Traveller", "", "&rWhile you have this Talisman", "&rin your Inventory it gives", "&ryou a 60% Chance for a decent", "&rSpeed Buff when you start sprinting"); + public static final ItemStack TALISMAN_WARRIOR = new CustomItem(Material.EMERALD, "&aTalisman of the Warrior", "", "&rWhile you have this Talisman", "&rin your Inventory it gives", "&ryou Strength III whenever you get hit", "&rbut will then be consumed"); + public static final ItemStack TALISMAN_KNIGHT = new CustomItem(Material.EMERALD, "&aTalisman of the Knight", "", "&rWhile you have this Talisman", "&rin your Inventory it gives", "&ryou a 30% Chance for 5 Seconds of Regeneration", "&rwhenever You get hit", "&rbut will then be consumed"); + public static final ItemStack TALISMAN_WHIRLWIND = new CustomItem(Material.EMERALD, "&aTalisman of the Whirlwind", "", "&rWhile you have this Talisman", "&rin your Inventory it will reflect", "&r60% of all Projectiles fired at you"); + public static final ItemStack TALISMAN_WIZARD = new CustomItem(Material.EMERALD, "&aTalisman of the Wizard", "", "&rWhile you have this Talisman", "&rin your Inventory it allows you to", "&robtain Fortune Level 4/5 however", "&rit also has a chance to lower the", "&rLevel of some Enchantments on your Item"); /* Staves */ - public static ItemStack STAFF_ELEMENTAL = new CustomItem(Material.STICK, "&6Elemental Staff"); - public static ItemStack STAFF_WIND = new CustomItem(Material.STICK, "&6Elemental Staff &7- &b&oWind", 0, new String[] {"", "&7Element: &b&oWind", "", "&7&eRight Click&7 to launch yourself forward"}, new String[] {"LUCK-1"}); - public static ItemStack STAFF_FIRE = new CustomItem(Material.STICK, "&6Elemental Staff &7- &c&oFire", 0, new String[] {"", "&7Element: &c&oFire"}, new String[] {"FIRE_ASPECT-5"}); - public static ItemStack STAFF_WATER = new CustomItem(Material.STICK, "&6Elemental Staff &7- &1&oWater", 0, new String[] {"", "&7Element: &1&oWater", "", "&7&eRight Click&7 to extinguish yourself"}, new String[] {"WATER_WORKER-1"}); + public static final ItemStack STAFF_ELEMENTAL = new CustomItem(Material.STICK, "&6Elemental Staff"); + public static final ItemStack STAFF_WIND = new CustomItem(Material.STICK, "&6Elemental Staff &7- &b&oWind", 0, new String[] {"", "&7Element: &b&oWind", "", "&7&eRight Click&7 to launch yourself forward"}, new String[] {"LUCK-1"}); + public static final ItemStack STAFF_FIRE = new CustomItem(Material.STICK, "&6Elemental Staff &7- &c&oFire", 0, new String[] {"", "&7Element: &c&oFire"}, new String[] {"FIRE_ASPECT-5"}); + public static final ItemStack STAFF_WATER = new CustomItem(Material.STICK, "&6Elemental Staff &7- &1&oWater", 0, new String[] {"", "&7Element: &1&oWater", "", "&7&eRight Click&7 to extinguish yourself"}, new String[] {"WATER_WORKER-1"}); /* Machines */ - public static ItemStack GRIND_STONE = new CustomItem(Material.DISPENSER, "&bGrind Stone", "", "&a&oGrinds Items for more Efficiency"); - public static ItemStack ARMOR_FORGE = new CustomItem(Material.ANVIL, "&6Armor Forge", "", "&a&oGives you the Ability to create powerful Armor"); - public static ItemStack SMELTERY = new CustomItem(Material.FURNACE, "&6Smeltery", "", "&a&oActs as a high-temperature Furnace for Metals"); - public static ItemStack IGNITION_CHAMBER = new CustomItem(Material.HOPPER, "&4Automatic Ignition Chamber", "&rPrevents the Smeltery from using up fire.", "&rRequires Flint and Steel", "&rMust be placed adjacent to the Smeltery's dispenser"); - public static ItemStack ORE_CRUSHER = new CustomItem(Material.DISPENSER, "&bOre Crusher", "", "&a&oCrushes Ores to double them"); - public static ItemStack COMPRESSOR = new CustomItem(Material.PISTON, "&bCompressor", "", "&a&oCompresses Items"); - public static ItemStack PRESSURE_CHAMBER = new CustomItem(Material.GLASS, "&bPressure Chamber", "", "&a&oCompresses Items even more"); - public static ItemStack MAGIC_WORKBENCH = new CustomItem(Material.CRAFTING_TABLE, "&6Magic Workbench", "Infuses Items with magical Energy"); - public static ItemStack ORE_WASHER = new CustomItem(Material.CAULDRON, "&6Ore Washer", "", "&a&oWashes Sifted Ore to filter Ores", "&a&oand gives you small Stone Chunks"); - public static ItemStack TABLE_SAW = new CustomItem(Material.STONECUTTER, "&6Table Saw", "", "&a&oAllows you get 8 planks from 1 Log", "&a&o(Works with all log types)"); - public static ItemStack SAW_MILL = new CustomItem(Material.BARRIER, "&6Saw Mill", "", "&cObsolete! Use the Table Saw instead"); - public static ItemStack COMPOSTER = new CustomItem(Material.CAULDRON, "&aComposter", "", "&a&oCan convert various Materials over Time..."); - public static ItemStack ENHANCED_CRAFTING_TABLE = new CustomItem(Material.CRAFTING_TABLE, "&eEnhanced Crafting Table", "", "&a&oA regular Crafting Table cannot", "&a&ohold this massive Amount of Power..."); - public static ItemStack CRUCIBLE = new CustomItem(Material.CAULDRON, "&cCrucible", "", "&a&oUsed to smelt Items into Liquids"); - public static ItemStack JUICER = new CustomItem(Material.GLASS_BOTTLE, "&aJuicer", "", "&a&oAllows you to create delicious Juice"); + public static final ItemStack GRIND_STONE = new CustomItem(Material.DISPENSER, "&bGrind Stone", "", "&a&oGrinds Items for more Efficiency"); + public static final ItemStack ARMOR_FORGE = new CustomItem(Material.ANVIL, "&6Armor Forge", "", "&a&oGives you the Ability to create powerful Armor"); + public static final ItemStack SMELTERY = new CustomItem(Material.FURNACE, "&6Smeltery", "", "&a&oActs as a high-temperature Furnace for Metals"); + public static final ItemStack IGNITION_CHAMBER = new CustomItem(Material.HOPPER, "&4Automatic Ignition Chamber", "&rPrevents the Smeltery from using up fire.", "&rRequires Flint and Steel", "&rMust be placed adjacent to the Smeltery's dispenser"); + public static final ItemStack ORE_CRUSHER = new CustomItem(Material.DISPENSER, "&bOre Crusher", "", "&a&oCrushes Ores to double them"); + public static final ItemStack COMPRESSOR = new CustomItem(Material.PISTON, "&bCompressor", "", "&a&oCompresses Items"); + public static final ItemStack PRESSURE_CHAMBER = new CustomItem(Material.GLASS, "&bPressure Chamber", "", "&a&oCompresses Items even more"); + public static final ItemStack MAGIC_WORKBENCH = new CustomItem(Material.CRAFTING_TABLE, "&6Magic Workbench", "Infuses Items with magical Energy"); + public static final ItemStack ORE_WASHER = new CustomItem(Material.CAULDRON, "&6Ore Washer", "", "&a&oWashes Sifted Ore to filter Ores", "&a&oand gives you small Stone Chunks"); + public static final ItemStack TABLE_SAW = new CustomItem(Material.STONECUTTER, "&6Table Saw", "", "&a&oAllows you get 8 planks from 1 Log", "&a&o(Works with all log types)"); + public static final ItemStack SAW_MILL = new CustomItem(Material.BARRIER, "&6Saw Mill", "", "&cObsolete! Use the Table Saw instead"); + public static final ItemStack COMPOSTER = new CustomItem(Material.CAULDRON, "&aComposter", "", "&a&oCan convert various Materials over Time..."); + public static final ItemStack ENHANCED_CRAFTING_TABLE = new CustomItem(Material.CRAFTING_TABLE, "&eEnhanced Crafting Table", "", "&a&oA regular Crafting Table cannot", "&a&ohold this massive Amount of Power..."); + public static final ItemStack CRUCIBLE = new CustomItem(Material.CAULDRON, "&cCrucible", "", "&a&oUsed to smelt Items into Liquids"); + public static final ItemStack JUICER = new CustomItem(Material.GLASS_BOTTLE, "&aJuicer", "", "&a&oAllows you to create delicious Juice"); - public static ItemStack SOLAR_PANEL = new CustomItem(Material.DAYLIGHT_DETECTOR, "&bSolar Panel", "", "&a&oTransforms Sunlight to Energy"); - public static ItemStack SOLAR_ARRAY = new CustomItem(Material.DAYLIGHT_DETECTOR, "&bSolar Array", "", "&a&oTransforms Sunlight to Energy"); - public static ItemStack DIGITAL_MINER = new CustomItem(Material.IRON_PICKAXE, "&bDigital Miner", "", "&a&oDigs out everything!"); - public static ItemStack ADVANCED_DIGITAL_MINER = new CustomItem(Material.DIAMOND_PICKAXE, "&6Advanced Digital Miner", "", "&a&oDigs out everything!", "&a&oAutomatically crushes your Ores"); - public static ItemStack AUTOMATED_PANNING_MACHINE = new CustomItem(Material.BOWL, "&aAutomated Panning Machine", "", "&a&oA MultiBlock Version of the Gold Pan"); - public static ItemStack OUTPUT_CHEST = new CustomItem(Material.CHEST, "&4Output Chest", "", "&c&oA basic machine will try to put", "&c&oitems in this chest if it's placed", "&c&oadjacent to the dispenser."); - public static ItemStack HOLOGRAM_PROJECTOR = new CustomItem(Material.QUARTZ_SLAB, "&bHologram Projector", "", "&rProjects an Editable Hologram"); + public static final ItemStack SOLAR_PANEL = new CustomItem(Material.DAYLIGHT_DETECTOR, "&bSolar Panel", "", "&a&oTransforms Sunlight to Energy"); + public static final ItemStack SOLAR_ARRAY = new CustomItem(Material.DAYLIGHT_DETECTOR, "&bSolar Array", "", "&a&oTransforms Sunlight to Energy"); + public static final ItemStack DIGITAL_MINER = new CustomItem(Material.IRON_PICKAXE, "&bDigital Miner", "", "&a&oDigs out everything!"); + public static final ItemStack ADVANCED_DIGITAL_MINER = new CustomItem(Material.DIAMOND_PICKAXE, "&6Advanced Digital Miner", "", "&a&oDigs out everything!", "&a&oAutomatically crushes your Ores"); + public static final ItemStack AUTOMATED_PANNING_MACHINE = new CustomItem(Material.BOWL, "&aAutomated Panning Machine", "", "&a&oA MultiBlock Version of the Gold Pan"); + public static final ItemStack OUTPUT_CHEST = new CustomItem(Material.CHEST, "&4Output Chest", "", "&c&oA basic machine will try to put", "&c&oitems in this chest if it's placed", "&c&oadjacent to the dispenser."); + public static final ItemStack HOLOGRAM_PROJECTOR = new CustomItem(Material.QUARTZ_SLAB, "&bHologram Projector", "", "&rProjects an Editable Hologram"); /* Enhanced Furnaces */ - public static ItemStack ENHANCED_FURNACE = new CustomItem(Material.FURNACE, "&7Enhanced Furnace - &eI", "", "&7Processing Speed: &e1x", "&7Fuel Efficiency: &e1x", "&7Luck Multiplier: &e1x"); - public static ItemStack ENHANCED_FURNACE_2 = new CustomItem(Material.FURNACE, "&7Enhanced Furnace - &eII", "", "&7Processing Speed: &e2x", "&7Fuel Efficiency: &e1x", "&7Luck Multiplier: &e1x"); - public static ItemStack ENHANCED_FURNACE_3 = new CustomItem(Material.FURNACE, "&7Enhanced Furnace - &eIII", "", "&7Processing Speed: &e2x", "&7Fuel Efficiency: &e2x", "&7Luck Multiplier: &e1x"); - public static ItemStack ENHANCED_FURNACE_4 = new CustomItem(Material.FURNACE, "&7Enhanced Furnace - &eIV", "", "&7Processing Speed: &e3x", "&7Fuel Efficiency: &e2x", "&7Luck Multiplier: &e1x"); - public static ItemStack ENHANCED_FURNACE_5 = new CustomItem(Material.FURNACE, "&7Enhanced Furnace - &eV", "", "&7Processing Speed: &e3x", "&7Fuel Efficiency: &e2x", "&7Luck Multiplier: &e2x"); - public static ItemStack ENHANCED_FURNACE_6 = new CustomItem(Material.FURNACE, "&7Enhanced Furnace - &eVI", "", "&7Processing Speed: &e3x", "&7Fuel Efficiency: &e3x", "&7Luck Multiplier: &e2x"); - public static ItemStack ENHANCED_FURNACE_7 = new CustomItem(Material.FURNACE, "&7Enhanced Furnace - &eVII", "", "&7Processing Speed: &e4x", "&7Fuel Efficiency: &e3x", "&7Luck Multiplier: &e2x"); - public static ItemStack ENHANCED_FURNACE_8 = new CustomItem(Material.FURNACE, "&7Enhanced Furnace - &eVIII", "", "&7Processing Speed: &e4x", "&7Fuel Efficiency: &e4x", "&7Luck Multiplier: &e2x"); - public static ItemStack ENHANCED_FURNACE_9 = new CustomItem(Material.FURNACE, "&7Enhanced Furnace - &eIX", "", "&7Processing Speed: &e5x", "&7Fuel Efficiency: &e4x", "&7Luck Multiplier: &e2x"); - public static ItemStack ENHANCED_FURNACE_10 = new CustomItem(Material.FURNACE, "&7Enhanced Furnace - &eX", "", "&7Processing Speed: &e5x", "&7Fuel Efficiency: &e5x", "&7Luck Multiplier: &e2x"); - public static ItemStack ENHANCED_FURNACE_11 = new CustomItem(Material.FURNACE, "&7Enhanced Furnace - &eXI", "", "&7Processing Speed: &e5x", "&7Fuel Efficiency: &e5x", "&7Luck Multiplier: &e3x"); - public static ItemStack REINFORCED_FURNACE = new CustomItem(Material.FURNACE, "&7Reinforced Furnace", "", "&7Processing Speed: &e10x", "&7Fuel Efficiency: &e10x", "&7Luck Multiplier: &e3x"); - public static ItemStack CARBONADO_EDGED_FURNACE = new CustomItem(Material.FURNACE, "&7Carbonado Edged Furnace", "", "&7Processing Speed: &e20x", "&7Fuel Efficiency: &e10x", "&7Luck Multiplier: &e3x"); + public static final ItemStack ENHANCED_FURNACE = new CustomItem(Material.FURNACE, "&7Enhanced Furnace - &eI", "", "&7Processing Speed: &e1x", "&7Fuel Efficiency: &e1x", "&7Luck Multiplier: &e1x"); + public static final ItemStack ENHANCED_FURNACE_2 = new CustomItem(Material.FURNACE, "&7Enhanced Furnace - &eII", "", "&7Processing Speed: &e2x", "&7Fuel Efficiency: &e1x", "&7Luck Multiplier: &e1x"); + public static final ItemStack ENHANCED_FURNACE_3 = new CustomItem(Material.FURNACE, "&7Enhanced Furnace - &eIII", "", "&7Processing Speed: &e2x", "&7Fuel Efficiency: &e2x", "&7Luck Multiplier: &e1x"); + public static final ItemStack ENHANCED_FURNACE_4 = new CustomItem(Material.FURNACE, "&7Enhanced Furnace - &eIV", "", "&7Processing Speed: &e3x", "&7Fuel Efficiency: &e2x", "&7Luck Multiplier: &e1x"); + public static final ItemStack ENHANCED_FURNACE_5 = new CustomItem(Material.FURNACE, "&7Enhanced Furnace - &eV", "", "&7Processing Speed: &e3x", "&7Fuel Efficiency: &e2x", "&7Luck Multiplier: &e2x"); + public static final ItemStack ENHANCED_FURNACE_6 = new CustomItem(Material.FURNACE, "&7Enhanced Furnace - &eVI", "", "&7Processing Speed: &e3x", "&7Fuel Efficiency: &e3x", "&7Luck Multiplier: &e2x"); + public static final ItemStack ENHANCED_FURNACE_7 = new CustomItem(Material.FURNACE, "&7Enhanced Furnace - &eVII", "", "&7Processing Speed: &e4x", "&7Fuel Efficiency: &e3x", "&7Luck Multiplier: &e2x"); + public static final ItemStack ENHANCED_FURNACE_8 = new CustomItem(Material.FURNACE, "&7Enhanced Furnace - &eVIII", "", "&7Processing Speed: &e4x", "&7Fuel Efficiency: &e4x", "&7Luck Multiplier: &e2x"); + public static final ItemStack ENHANCED_FURNACE_9 = new CustomItem(Material.FURNACE, "&7Enhanced Furnace - &eIX", "", "&7Processing Speed: &e5x", "&7Fuel Efficiency: &e4x", "&7Luck Multiplier: &e2x"); + public static final ItemStack ENHANCED_FURNACE_10 = new CustomItem(Material.FURNACE, "&7Enhanced Furnace - &eX", "", "&7Processing Speed: &e5x", "&7Fuel Efficiency: &e5x", "&7Luck Multiplier: &e2x"); + public static final ItemStack ENHANCED_FURNACE_11 = new CustomItem(Material.FURNACE, "&7Enhanced Furnace - &eXI", "", "&7Processing Speed: &e5x", "&7Fuel Efficiency: &e5x", "&7Luck Multiplier: &e3x"); + public static final ItemStack REINFORCED_FURNACE = new CustomItem(Material.FURNACE, "&7Reinforced Furnace", "", "&7Processing Speed: &e10x", "&7Fuel Efficiency: &e10x", "&7Luck Multiplier: &e3x"); + public static final ItemStack CARBONADO_EDGED_FURNACE = new CustomItem(Material.FURNACE, "&7Carbonado Edged Furnace", "", "&7Processing Speed: &e20x", "&7Fuel Efficiency: &e10x", "&7Luck Multiplier: &e3x"); - public static ItemStack BLOCK_PLACER = new CustomItem(Material.DISPENSER, "&aBlock Placer", "", "&rAll Blocks in this Dispenser", "&rwill automatically get placed"); + public static final ItemStack BLOCK_PLACER = new CustomItem(Material.DISPENSER, "&aBlock Placer", "", "&rAll Blocks in this Dispenser", "&rwill automatically get placed"); /* Soulbound Items */ - public static ItemStack SOULBOUND_SWORD = new CustomItem(Material.DIAMOND_SWORD, "&cSoulbound Sword"); - public static ItemStack SOULBOUND_BOW = new CustomItem(Material.BOW, "&cSoulbound Bow"); - public static ItemStack SOULBOUND_PICKAXE = new CustomItem(Material.DIAMOND_PICKAXE, "&cSoulbound Pickaxe"); - public static ItemStack SOULBOUND_AXE = new CustomItem(Material.DIAMOND_AXE, "&cSoulbound Axe"); - public static ItemStack SOULBOUND_SHOVEL = new CustomItem(Material.DIAMOND_SHOVEL, "&cSoulbound Shovel"); - public static ItemStack SOULBOUND_HOE = new CustomItem(Material.DIAMOND_HOE, "&cSoulbound Hoe"); + public static final ItemStack SOULBOUND_SWORD = new CustomItem(Material.DIAMOND_SWORD, "&cSoulbound Sword"); + public static final ItemStack SOULBOUND_BOW = new CustomItem(Material.BOW, "&cSoulbound Bow"); + public static final ItemStack SOULBOUND_PICKAXE = new CustomItem(Material.DIAMOND_PICKAXE, "&cSoulbound Pickaxe"); + public static final ItemStack SOULBOUND_AXE = new CustomItem(Material.DIAMOND_AXE, "&cSoulbound Axe"); + public static final ItemStack SOULBOUND_SHOVEL = new CustomItem(Material.DIAMOND_SHOVEL, "&cSoulbound Shovel"); + public static final ItemStack SOULBOUND_HOE = new CustomItem(Material.DIAMOND_HOE, "&cSoulbound Hoe"); - public static ItemStack SOULBOUND_HELMET = new CustomItem(Material.DIAMOND_HELMET, "&cSoulbound Helmet"); - public static ItemStack SOULBOUND_CHESTPLATE = new CustomItem(Material.DIAMOND_CHESTPLATE, "&cSoulbound Chestplate"); - public static ItemStack SOULBOUND_LEGGINGS = new CustomItem(Material.DIAMOND_LEGGINGS, "&cSoulbound Leggings"); - public static ItemStack SOULBOUND_BOOTS = new CustomItem(Material.DIAMOND_BOOTS, "&cSoulbound Boots"); + public static final ItemStack SOULBOUND_HELMET = new CustomItem(Material.DIAMOND_HELMET, "&cSoulbound Helmet"); + public static final ItemStack SOULBOUND_CHESTPLATE = new CustomItem(Material.DIAMOND_CHESTPLATE, "&cSoulbound Chestplate"); + public static final ItemStack SOULBOUND_LEGGINGS = new CustomItem(Material.DIAMOND_LEGGINGS, "&cSoulbound Leggings"); + public static final ItemStack SOULBOUND_BOOTS = new CustomItem(Material.DIAMOND_BOOTS, "&cSoulbound Boots"); /* Runes */ public static ItemStack BLANK_RUNE = null; From 99cd14fa5f8471d7c506eacbaaee1ea2ba7c91fb Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Thu, 29 Aug 2019 10:26:36 +0200 Subject: [PATCH 025/169] Added "legacy-ore-grinder" config option for old Ore Grinder Behaviour. --- src/config.yml | 1 + .../Slimefun/Objects/Research.java | 16 ++------- .../SlimefunItem/machines/AutoEnchanter.java | 21 ++++++----- .../machines/ElectricDustWasher.java | 6 ++-- .../SlimefunItem/machines/OreWasher.java | 4 +-- .../Slimefun/Setup/MiscSetup.java | 15 ++++++-- .../Slimefun/Setup/SlimefunSetup.java | 2 +- .../mrCookieSlime/Slimefun/SlimefunGuide.java | 11 +++--- .../Slimefun/SlimefunStartup.java | 30 ++++++++-------- .../ancient_altar/RitualAnimation.java | 2 +- .../Slimefun/api/BlockStorage.java | 4 +-- .../listeners/AncientAltarListener.java | 2 +- .../Slimefun/listeners/BackpackListener.java | 2 +- .../Slimefun/listeners/BowListener.java | 2 +- .../Slimefun/listeners/DamageListener.java | 2 +- .../Slimefun/listeners/ItemListener.java | 2 +- .../Slimefun/listeners/ToolListener.java | 2 +- .../Slimefun/utils/Settings.java | 36 +++++++++++++++++++ .../Slimefun/{ => utils}/Utilities.java | 2 +- 19 files changed, 95 insertions(+), 67 deletions(-) create mode 100644 src/me/mrCookieSlime/Slimefun/utils/Settings.java rename src/me/mrCookieSlime/Slimefun/{ => utils}/Utilities.java (98%) diff --git a/src/config.yml b/src/config.yml index 7b2c23711..2947200d6 100644 --- a/src/config.yml +++ b/src/config.yml @@ -14,6 +14,7 @@ options: research-give-fireworks: true legacy-ore-washer: false legacy-dust-washer: false + legacy-ore-grinder: false guide: default-view-book: false URID: diff --git a/src/me/mrCookieSlime/Slimefun/Objects/Research.java b/src/me/mrCookieSlime/Slimefun/Objects/Research.java index eeb450408..23e088209 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/Research.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/Research.java @@ -39,12 +39,6 @@ import me.mrCookieSlime.Slimefun.api.Slimefun; public class Research { private static final int[] research_progress = {23, 44, 57, 92}; - - /** - * Whether researching is enabled or not; - * @since 4.0 - */ - public static boolean enableResearching; /** * Contains all the registered researches; @@ -57,12 +51,6 @@ public class Research { * Contains all Research Titles */ public static List titles; - - /** - * Whether researching in creative is free. - * @since 4.0 - */ - public static boolean creative_research = true; private int id; private String name; @@ -97,7 +85,7 @@ public class Research { } public boolean isEnabled() { - return enableResearching && enabled; + return SlimefunStartup.instance.getSettings().RESEARCHES_ENABLED && enabled; } /** @@ -231,7 +219,7 @@ public class Research { */ public boolean canUnlock(Player p) { if (!isEnabled()) return true; - return (p.getGameMode() == GameMode.CREATIVE && creative_research) || p.getLevel() >= this.cost; + return (p.getGameMode() == GameMode.CREATIVE && SlimefunStartup.instance.getSettings().RESEARCHES_FREE_IN_CREATIVE) || p.getLevel() >= this.cost; } /** diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoEnchanter.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoEnchanter.java index 2a3040949..7b3bfd390 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoEnchanter.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoEnchanter.java @@ -7,10 +7,19 @@ import java.util.List; import java.util.Map; import java.util.Set; +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; import me.mrCookieSlime.EmeraldEnchants.EmeraldEnchants; import me.mrCookieSlime.EmeraldEnchants.ItemEnchantment; +import me.mrCookieSlime.Slimefun.SlimefunStartup; import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; @@ -21,18 +30,8 @@ import me.mrCookieSlime.Slimefun.api.BlockStorage; import me.mrCookieSlime.Slimefun.api.Slimefun; import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock; -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; - public class AutoEnchanter extends AContainer { - public static int max_emerald_enchantments = 2; - public AutoEnchanter(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) { super(category, item, name, recipeType, recipe); } @@ -122,7 +121,7 @@ public class AutoEnchanter extends AContainer { } special_amount += EmeraldEnchants.getInstance().getRegistry().getEnchantments(target).size(); } - if (amount > 0 && special_amount <= max_emerald_enchantments) { + if (amount > 0 && special_amount <= SlimefunStartup.instance.getSettings().EMERALD_ENCHANTS_LIMIT) { ItemStack newItem = target.clone(); for (Map.Entry e: enchantments.entrySet()) { newItem.addUnsafeEnchantment(e.getKey(), e.getValue()); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricDustWasher.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricDustWasher.java index 971e5a3da..1cd1463aa 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricDustWasher.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricDustWasher.java @@ -12,6 +12,7 @@ import org.bukkit.inventory.meta.ItemMeta; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.InvUtils; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; +import me.mrCookieSlime.Slimefun.SlimefunStartup; import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; import me.mrCookieSlime.Slimefun.Objects.Category; @@ -42,7 +43,6 @@ public abstract class ElectricDustWasher extends AContainer { public void registerDefaultRecipes() {} public abstract int getSpeed(); - public static boolean legacy_dust_washer = false; protected void tick(Block b) { if (isProcessing(b)) { @@ -82,7 +82,7 @@ public abstract class ElectricDustWasher extends AContainer { else { for (int slot: getInputSlots()) { if (SlimefunManager.isItemSimiliar(BlockStorage.getInventory(b).getItemInSlot(slot), SlimefunItems.SIFTED_ORE, true)) { - if (!legacy_dust_washer) { + if (!SlimefunStartup.instance.getSettings().DUST_WASHER_LEGACY) { boolean empty_slot = false; for (int output_slot: getOutputSlots()) { if (BlockStorage.getInventory(b).getItemInSlot(output_slot) == null) { @@ -95,7 +95,7 @@ public abstract class ElectricDustWasher extends AContainer { ItemStack adding = OreWasher.items[new Random().nextInt(OreWasher.items.length)]; MachineRecipe r = new MachineRecipe(4 / getSpeed(), new ItemStack[0], new ItemStack[] {adding}); - if (legacy_dust_washer && !fits(b, r.getOutput())) return; + if (SlimefunStartup.instance.getSettings().DUST_WASHER_LEGACY && !fits(b, r.getOutput())) return; BlockStorage.getInventory(b).replaceExistingItem(slot, InvUtils.decreaseItem(BlockStorage.getInventory(b).getItemInSlot(slot), 1)); processing.put(b, r); progress.put(b, r.getTicks()); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/OreWasher.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/OreWasher.java index d177dd611..145843996 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/OreWasher.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/OreWasher.java @@ -13,6 +13,7 @@ import org.bukkit.inventory.ItemStack; import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.InvUtils; +import me.mrCookieSlime.Slimefun.SlimefunStartup; import me.mrCookieSlime.Slimefun.Lists.Categories; import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunMachine; @@ -23,7 +24,6 @@ import me.mrCookieSlime.Slimefun.api.Slimefun; public class OreWasher extends SlimefunMachine { - public static boolean legacy; public static ItemStack[] items; public OreWasher() { @@ -57,7 +57,7 @@ public class OreWasher extends SlimefunMachine { ItemStack adding = items[new Random().nextInt(items.length)]; Inventory outputInv = null; - if (!legacy) { + if (!SlimefunStartup.instance.getSettings().ORE_WASHER_LEGACY) { // This is a fancy way of checking if there is empty space in the inv; by checking if an unobtainable item could fit in it. // However, due to the way the method findValidOutputInv() functions, the dummyAdding will never actually be added to the real inventory, // so it really doesn't matter what item the ItemStack is made by. SlimefunItems.DEBUG_FISH however, signals that it's diff --git a/src/me/mrCookieSlime/Slimefun/Setup/MiscSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/MiscSetup.java index 230f2ac54..bd6d38783 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/MiscSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/MiscSetup.java @@ -3,6 +3,7 @@ package me.mrCookieSlime.Slimefun.Setup; import java.util.ArrayList; import java.util.Iterator; import java.util.List; +import java.util.stream.Stream; import org.bukkit.Bukkit; import org.bukkit.ChatColor; @@ -26,6 +27,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunMachine; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.AutomatedCraftingChamber; import me.mrCookieSlime.Slimefun.api.Slimefun; import me.mrCookieSlime.Slimefun.api.SlimefunRecipes; +import me.mrCookieSlime.Slimefun.utils.Settings; public final class MiscSetup { @@ -37,6 +39,7 @@ public final class MiscSetup { if (SlimefunItem.getByID("COMMON_TALISMAN") != null && (Boolean) Slimefun.getItemValue("COMMON_TALISMAN", "recipe-requires-nether-stars")) { SlimefunItem.getByID("COMMON_TALISMAN").setRecipe(new ItemStack[] {SlimefunItems.MAGIC_LUMP_2, SlimefunItems.GOLD_8K, SlimefunItems.MAGIC_LUMP_2, null, new ItemStack(Material.NETHER_STAR), null, SlimefunItems.MAGIC_LUMP_2, SlimefunItems.GOLD_8K, SlimefunItems.MAGIC_LUMP_2}); } + SlimefunItem.setRadioactive(SlimefunItems.URANIUM); SlimefunItem.setRadioactive(SlimefunItems.SMALL_URANIUM); SlimefunItem.setRadioactive(SlimefunItems.BLISTERING_INGOT); @@ -46,7 +49,7 @@ public final class MiscSetup { SlimefunItem.setRadioactive(SlimefunItems.ENRICHED_NETHER_ICE); } - public static void loadItems() { + public static void loadItems(Settings settings) { Iterator iterator = SlimefunItem.items.iterator(); while (iterator.hasNext()) { SlimefunItem item = iterator.next(); @@ -154,8 +157,14 @@ public final class MiscSetup { } // Favour 8 Cobblestone -> 1 Sand Recipe over 1 Cobblestone -> 1 Gravel Recipe - grinder_recipes.stream().sorted((a, b) -> Integer.compare(b[0].getAmount(), a[0].getAmount())).forEach(recipe -> SlimefunRecipes.registerMachineRecipe("ELECTRIC_ORE_GRINDER", 4, new ItemStack[] {recipe[0]}, new ItemStack[] {recipe[1]})); - + Stream stream = grinder_recipes.stream(); + + if (!settings.ORE_GRINDER_LEGACY) { + stream = stream.sorted((a, b) -> Integer.compare(b[0].getAmount(), a[0].getAmount())); + } + + stream.forEach(recipe -> SlimefunRecipes.registerMachineRecipe("ELECTRIC_ORE_GRINDER", 4, new ItemStack[] {recipe[0]}, new ItemStack[] {recipe[1]})); + SlimefunItem smeltery = SlimefunItem.getByID("SMELTERY"); if (smeltery != null) { ItemStack[] input = null; diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java index 3370647af..c448fa270 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java @@ -64,7 +64,6 @@ import me.mrCookieSlime.CSCoreLibPlugin.general.Recipe.RecipeCalculator; import me.mrCookieSlime.CSCoreLibPlugin.general.String.StringUtils; import me.mrCookieSlime.CSCoreLibPlugin.general.World.CustomSkull; import me.mrCookieSlime.Slimefun.SlimefunStartup; -import me.mrCookieSlime.Slimefun.Utilities; import me.mrCookieSlime.Slimefun.GPS.Elevator; import me.mrCookieSlime.Slimefun.GPS.GPSNetwork; import me.mrCookieSlime.Slimefun.GPS.NetworkStatus; @@ -160,6 +159,7 @@ import me.mrCookieSlime.Slimefun.holograms.InfusedHopper; import me.mrCookieSlime.Slimefun.holograms.Projector; import me.mrCookieSlime.Slimefun.holograms.ReactorHologram; import me.mrCookieSlime.Slimefun.listeners.AncientAltarListener; +import me.mrCookieSlime.Slimefun.utils.Utilities; public final class SlimefunSetup { diff --git a/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java b/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java index 63986e386..b6fadfd87 100644 --- a/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java +++ b/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java @@ -69,8 +69,7 @@ public final class SlimefunGuide { public static int stars = 0; public static int code_bytes = 0; public static Date last_update = new Date(); - - protected static boolean all_recipes = true; + private static final int category_size = 36; @Deprecated @@ -574,7 +573,7 @@ public final class SlimefunGuide { openCategory(p, category, true, selected_page, book); } else { - if (!(p.getGameMode() == GameMode.CREATIVE && Research.creative_research)) { + if (!(p.getGameMode() == GameMode.CREATIVE && SlimefunStartup.instance.getSettings().RESEARCHES_FREE_IN_CREATIVE)) { p.setLevel(p.getLevel() - research.getCost()); } @@ -727,12 +726,12 @@ public final class SlimefunGuide { openCategory(p, category, true, selected_page, book); } else { - if (!(pl.getGameMode() == GameMode.CREATIVE && Research.creative_research)) { + if (!(pl.getGameMode() == GameMode.CREATIVE && SlimefunStartup.instance.getSettings().RESEARCHES_FREE_IN_CREATIVE)) { pl.setLevel(pl.getLevel() - research.getCost()); } if (pl.getGameMode() == GameMode.CREATIVE) { - research.unlock(pl, Research.creative_research); + research.unlock(pl, SlimefunStartup.instance.getSettings().RESEARCHES_FREE_IN_CREATIVE); openCategory(pl, category, survival, selected_page, book); } else { @@ -802,7 +801,7 @@ public final class SlimefunGuide { final SlimefunItem sfItem = SlimefunItem.getByItem(item); if (sfItem == null) { - if (!all_recipes) return; + if (!SlimefunStartup.instance.getSettings().GUIDE_SHOW_VANILLA_RECIPES) return; } ItemStack[] recipe = new ItemStack[9]; diff --git a/src/me/mrCookieSlime/Slimefun/SlimefunStartup.java b/src/me/mrCookieSlime/Slimefun/SlimefunStartup.java index 9179ad4b7..b17ffd27c 100644 --- a/src/me/mrCookieSlime/Slimefun/SlimefunStartup.java +++ b/src/me/mrCookieSlime/Slimefun/SlimefunStartup.java @@ -27,8 +27,6 @@ import me.mrCookieSlime.Slimefun.Objects.Research; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunArmorPiece; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.AutoEnchanter; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.ElectricDustWasher; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.OreWasher; import me.mrCookieSlime.Slimefun.Setup.CSCoreLibLoader; import me.mrCookieSlime.Slimefun.Setup.Files; @@ -77,6 +75,8 @@ import me.mrCookieSlime.Slimefun.listeners.TalismanListener; import me.mrCookieSlime.Slimefun.listeners.TeleporterListener; import me.mrCookieSlime.Slimefun.listeners.ToolListener; import me.mrCookieSlime.Slimefun.listeners.WorldListener; +import me.mrCookieSlime.Slimefun.utils.Settings; +import me.mrCookieSlime.Slimefun.utils.Utilities; import net.coreprotect.CoreProtect; import net.coreprotect.CoreProtectAPI; @@ -93,7 +93,9 @@ public class SlimefunStartup extends JavaPlugin { public static TickerTask ticker; private CoreProtectAPI coreProtectAPI; + private Utilities utilities = new Utilities(); + private Settings settings; private boolean clearlag = false; private boolean exoticGarden = false; @@ -162,6 +164,8 @@ public class SlimefunStartup extends JavaPlugin { config = utils.getConfig(); Messages.local = utils.getLocalization(); Messages.setup(); + + settings = new Settings(config); // Setting up bStats new Metrics(this); @@ -199,13 +203,11 @@ public class SlimefunStartup extends JavaPlugin { MiscSetup.loadDescriptions(); System.out.println("[Slimefun] Loading Researches..."); - Research.enableResearching = getResearchCfg().getBoolean("enable-researching"); + settings.RESEARCHES_ENABLED = getResearchCfg().getBoolean("enable-researching"); ResearchSetup.setupResearches(); MiscSetup.setupMisc(); - BlockStorage.info_delay = config.getInt("URID.info-delay"); - System.out.println("[Slimefun] Loading World Generators..."); // Generating Oil as an OreGenResource (its a cool API) @@ -248,8 +250,7 @@ public class SlimefunStartup extends JavaPlugin { // Initiating various Stuff and all Items with a slightly delay (0ms after the Server finished loading) getServer().getScheduler().scheduleSyncDelayedTask(this, () -> { Slimefun.emeraldenchants = getServer().getPluginManager().isPluginEnabled("EmeraldEnchants"); - SlimefunGuide.all_recipes = config.getBoolean("options.show-vanilla-recipes-in-guide"); - MiscSetup.loadItems(); + MiscSetup.loadItems(settings); for (World world: Bukkit.getWorlds()) { new BlockStorage(world); @@ -315,10 +316,10 @@ public class SlimefunStartup extends JavaPlugin { ticker = new TickerTask(); - getServer().getScheduler().runTaskTimer(this, new PlayerAutoSaver(), 2000L, config.getInt("options.auto-save-delay-in-minutes") * 60L * 20L); + getServer().getScheduler().runTaskTimer(this, new PlayerAutoSaver(), 2000L, settings.BLOCK_AUTO_SAVE_DELAY * 60L * 20L); // Starting all ASYNC Tasks - getServer().getScheduler().runTaskTimerAsynchronously(this, new BlockAutoSaver(), 2000L, config.getInt("options.auto-save-delay-in-minutes") * 60L * 20L); + getServer().getScheduler().runTaskTimerAsynchronously(this, new BlockAutoSaver(), 2000L, settings.BLOCK_AUTO_SAVE_DELAY * 60L * 20L); getServer().getScheduler().runTaskTimerAsynchronously(this, ticker, 100L, config.getInt("URID.custom-ticker-delay")); getServer().getScheduler().runTaskTimerAsynchronously(this, () -> utilities.connectors.forEach(GitHubConnector::pullFile), 80L, 60 * 60 * 20L); @@ -353,15 +354,8 @@ public class SlimefunStartup extends JavaPlugin { new PlaceholderAPIHook().register(); } - Research.creative_research = config.getBoolean("options.allow-free-creative-research"); Research.titles = config.getStringList("research-ranks"); - - AutoEnchanter.max_emerald_enchantments = config.getInt("options.emerald-enchantment-limit"); - - OreWasher.legacy = config.getBoolean("options.legacy-ore-washer"); OreWasher.items = new ItemStack[] {SlimefunItems.IRON_DUST, SlimefunItems.GOLD_DUST, SlimefunItems.ALUMINUM_DUST, SlimefunItems.COPPER_DUST, SlimefunItems.ZINC_DUST, SlimefunItems.TIN_DUST, SlimefunItems.LEAD_DUST, SlimefunItems.SILVER_DUST, SlimefunItems.MAGNESIUM_DUST}; - - ElectricDustWasher.legacy_dust_washer = config.getBoolean("options.legacy-dust-washer"); // Do not show /sf elevator command in our Log, it could get quite spammy CSCoreLib.getLib().filterLog("([A-Za-z0-9_]{3,16}) issued server command: /sf elevator (.{0,})"); @@ -502,5 +496,9 @@ public class SlimefunStartup extends JavaPlugin { public Utilities getUtilities() { return utilities; } + + public Settings getSettings() { + return settings; + } } diff --git a/src/me/mrCookieSlime/Slimefun/ancient_altar/RitualAnimation.java b/src/me/mrCookieSlime/Slimefun/ancient_altar/RitualAnimation.java index 03e9e2803..4fb5e476e 100644 --- a/src/me/mrCookieSlime/Slimefun/ancient_altar/RitualAnimation.java +++ b/src/me/mrCookieSlime/Slimefun/ancient_altar/RitualAnimation.java @@ -7,7 +7,7 @@ import java.util.Map; import me.mrCookieSlime.Slimefun.SlimefunStartup; import me.mrCookieSlime.Slimefun.listeners.AncientAltarListener; -import me.mrCookieSlime.Slimefun.Utilities; +import me.mrCookieSlime.Slimefun.utils.Utilities; import org.bukkit.Effect; import org.bukkit.Location; diff --git a/src/me/mrCookieSlime/Slimefun/api/BlockStorage.java b/src/me/mrCookieSlime/Slimefun/api/BlockStorage.java index de9aea985..29f1286e5 100644 --- a/src/me/mrCookieSlime/Slimefun/api/BlockStorage.java +++ b/src/me/mrCookieSlime/Slimefun/api/BlockStorage.java @@ -52,8 +52,6 @@ public class BlockStorage { private Map cache_blocks = new HashMap<>(); - public static int info_delay; - public static BlockStorage getStorage(World world) { return worlds.get(world.getName()); } @@ -102,7 +100,7 @@ public class BlockStorage { System.err.println("[Slimefun] should probably look into it!"); } else if (file.getName().endsWith(".sfb")) { - if (timestamp + info_delay < System.currentTimeMillis()) { + if (timestamp + SlimefunStartup.instance.getSettings().BLOCK_LOADING_INFO_DELAY < System.currentTimeMillis()) { System.out.println("[Slimefun] Loading Blocks... " + Math.round((((done * 100.0f) / total) * 100.0f) / 100.0f) + "% done (\"" + w.getName() + "\")"); timestamp = System.currentTimeMillis(); } diff --git a/src/me/mrCookieSlime/Slimefun/listeners/AncientAltarListener.java b/src/me/mrCookieSlime/Slimefun/listeners/AncientAltarListener.java index c62997031..148afeb8b 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/AncientAltarListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/AncientAltarListener.java @@ -30,12 +30,12 @@ import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; import me.mrCookieSlime.CSCoreLibPlugin.general.Player.PlayerInventory; import me.mrCookieSlime.CSCoreLibPlugin.general.String.StringUtils; import me.mrCookieSlime.Slimefun.SlimefunStartup; -import me.mrCookieSlime.Slimefun.Utilities; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Setup.Messages; import me.mrCookieSlime.Slimefun.ancient_altar.Pedestals; import me.mrCookieSlime.Slimefun.ancient_altar.RitualAnimation; import me.mrCookieSlime.Slimefun.api.BlockStorage; +import me.mrCookieSlime.Slimefun.utils.Utilities; public class AncientAltarListener implements Listener { diff --git a/src/me/mrCookieSlime/Slimefun/listeners/BackpackListener.java b/src/me/mrCookieSlime/Slimefun/listeners/BackpackListener.java index c957119b2..cbeacd7af 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/BackpackListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/BackpackListener.java @@ -18,7 +18,6 @@ import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; import me.mrCookieSlime.Slimefun.SlimefunStartup; -import me.mrCookieSlime.Slimefun.Utilities; import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.Juice; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunBackpack; @@ -28,6 +27,7 @@ import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.api.PlayerProfile; import me.mrCookieSlime.Slimefun.api.Slimefun; import me.mrCookieSlime.Slimefun.api.inventory.BackpackInventory; +import me.mrCookieSlime.Slimefun.utils.Utilities; public class BackpackListener implements Listener { diff --git a/src/me/mrCookieSlime/Slimefun/listeners/BowListener.java b/src/me/mrCookieSlime/Slimefun/listeners/BowListener.java index 40cebfbb0..4aa226708 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/BowListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/BowListener.java @@ -15,10 +15,10 @@ import org.bukkit.event.entity.ProjectileHitEvent; import org.bukkit.util.Vector; import me.mrCookieSlime.Slimefun.SlimefunStartup; -import me.mrCookieSlime.Slimefun.Utilities; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Objects.handlers.BowShootHandler; import me.mrCookieSlime.Slimefun.Objects.handlers.ItemHandler; +import me.mrCookieSlime.Slimefun.utils.Utilities; public class BowListener implements Listener { diff --git a/src/me/mrCookieSlime/Slimefun/listeners/DamageListener.java b/src/me/mrCookieSlime/Slimefun/listeners/DamageListener.java index 57b6a1410..3421f9c07 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/DamageListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/DamageListener.java @@ -27,7 +27,6 @@ import org.bukkit.inventory.meta.SkullMeta; import me.mrCookieSlime.EmeraldEnchants.EmeraldEnchants; import me.mrCookieSlime.EmeraldEnchants.ItemEnchantment; import me.mrCookieSlime.Slimefun.SlimefunStartup; -import me.mrCookieSlime.Slimefun.Utilities; import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SoulboundItem; @@ -35,6 +34,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.Talisman; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.api.Slimefun; import me.mrCookieSlime.Slimefun.api.Soul; +import me.mrCookieSlime.Slimefun.utils.Utilities; public class DamageListener implements Listener { diff --git a/src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java b/src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java index b5788539f..2c208fc76 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java @@ -42,7 +42,6 @@ import me.mrCookieSlime.CSCoreLibPlugin.general.Player.PlayerInventory; import me.mrCookieSlime.CSCoreLibPlugin.general.World.CustomSkull; import me.mrCookieSlime.Slimefun.SlimefunGuide; import me.mrCookieSlime.Slimefun.SlimefunStartup; -import me.mrCookieSlime.Slimefun.Utilities; import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; import me.mrCookieSlime.Slimefun.Misc.BookDesign; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.Juice; @@ -59,6 +58,7 @@ import me.mrCookieSlime.Slimefun.api.energy.ItemEnergy; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset; import me.mrCookieSlime.Slimefun.api.inventory.UniversalBlockMenu; +import me.mrCookieSlime.Slimefun.utils.Utilities; public class ItemListener implements Listener { diff --git a/src/me/mrCookieSlime/Slimefun/listeners/ToolListener.java b/src/me/mrCookieSlime/Slimefun/listeners/ToolListener.java index eb0a34c95..a6799ca32 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/ToolListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/ToolListener.java @@ -25,7 +25,6 @@ import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.SkullItem; import me.mrCookieSlime.CSCoreLibPlugin.general.Particles.FireworkShow; import me.mrCookieSlime.CSCoreLibPlugin.general.Player.PlayerInventory; import me.mrCookieSlime.Slimefun.SlimefunStartup; -import me.mrCookieSlime.Slimefun.Utilities; import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.HandledBlock; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; @@ -38,6 +37,7 @@ import me.mrCookieSlime.Slimefun.Setup.Messages; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.api.BlockStorage; import me.mrCookieSlime.Slimefun.api.Slimefun; +import me.mrCookieSlime.Slimefun.utils.Utilities; public class ToolListener implements Listener { diff --git a/src/me/mrCookieSlime/Slimefun/utils/Settings.java b/src/me/mrCookieSlime/Slimefun/utils/Settings.java new file mode 100644 index 000000000..51bab8818 --- /dev/null +++ b/src/me/mrCookieSlime/Slimefun/utils/Settings.java @@ -0,0 +1,36 @@ +package me.mrCookieSlime.Slimefun.utils; + +import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config; + +public final class Settings { + + public boolean RESEARCHES_ENABLED; + public boolean RESEARCHES_FREE_IN_CREATIVE; + + public int BLOCK_LOADING_INFO_DELAY; + public int BLOCK_AUTO_SAVE_DELAY; + + public boolean GUIDE_SHOW_VANILLA_RECIPES; + + public int EMERALD_ENCHANTS_LIMIT; + + public boolean DUST_WASHER_LEGACY; + public boolean ORE_GRINDER_LEGACY; + public boolean ORE_WASHER_LEGACY; + + public Settings(Config cfg) { + RESEARCHES_FREE_IN_CREATIVE = cfg.getBoolean("options.allow-free-creative-research"); + + BLOCK_LOADING_INFO_DELAY = cfg.getInt("URID.info-delay"); + BLOCK_AUTO_SAVE_DELAY = cfg.getInt("options.auto-save-delay-in-minutes"); + + GUIDE_SHOW_VANILLA_RECIPES = cfg.getBoolean("options.show-vanilla-recipes-in-guide"); + + EMERALD_ENCHANTS_LIMIT = cfg.getInt("options.emerald-enchantment-limit"); + + DUST_WASHER_LEGACY = cfg.getBoolean("options.legacy-dust-washer"); + ORE_WASHER_LEGACY = cfg.getBoolean("options.legacy-ore-washer"); + ORE_GRINDER_LEGACY = cfg.getBoolean("options.legacy-ore-grinder"); + } + +} diff --git a/src/me/mrCookieSlime/Slimefun/Utilities.java b/src/me/mrCookieSlime/Slimefun/utils/Utilities.java similarity index 98% rename from src/me/mrCookieSlime/Slimefun/Utilities.java rename to src/me/mrCookieSlime/Slimefun/utils/Utilities.java index 4bdcc2222..af735b14c 100644 --- a/src/me/mrCookieSlime/Slimefun/Utilities.java +++ b/src/me/mrCookieSlime/Slimefun/utils/Utilities.java @@ -1,4 +1,4 @@ -package me.mrCookieSlime.Slimefun; +package me.mrCookieSlime.Slimefun.utils; import java.util.ArrayList; import java.util.HashMap; From 405e2f651b47d38dd5734f053580630f7fedecec Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Thu, 29 Aug 2019 11:05:58 +0200 Subject: [PATCH 026/169] Finalized #1053 --- src/config.yml | 2 +- .../Slimefun/Lists/Categories.java | 65 +-- .../Slimefun/Lists/SlimefunItems.java | 523 +++++++----------- 3 files changed, 229 insertions(+), 361 deletions(-) diff --git a/src/config.yml b/src/config.yml index 2947200d6..2dec0165d 100644 --- a/src/config.yml +++ b/src/config.yml @@ -14,7 +14,7 @@ options: research-give-fireworks: true legacy-ore-washer: false legacy-dust-washer: false - legacy-ore-grinder: false + legacy-ore-grinder: true guide: default-view-book: false URID: diff --git a/src/me/mrCookieSlime/Slimefun/Lists/Categories.java b/src/me/mrCookieSlime/Slimefun/Lists/Categories.java index 68423f422..3f770f8ee 100644 --- a/src/me/mrCookieSlime/Slimefun/Lists/Categories.java +++ b/src/me/mrCookieSlime/Slimefun/Lists/Categories.java @@ -1,13 +1,11 @@ package me.mrCookieSlime.Slimefun.Lists; -import org.bukkit.ChatColor; import org.bukkit.Color; import org.bukkit.Material; +import org.bukkit.inventory.ItemStack; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomArmor; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; -import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.MenuItem; -import me.mrCookieSlime.CSCoreLibPlugin.general.World.CustomSkull; import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.LockedCategory; import me.mrCookieSlime.Slimefun.Objects.SeasonCategory; @@ -23,40 +21,37 @@ public final class Categories { private Categories() {} - public static final Category WEAPONS = new Category(new MenuItem(Material.GOLDEN_SWORD, "&7Weapons", 0, "open"), 1); - public static Category PORTABLE = null; - public static final Category FOOD = new Category(new MenuItem(Material.APPLE, "&7Food", 0, "open"), 2); - public static Category MACHINES_1 = null; - public static LockedCategory ELECTRICITY = null; - public static LockedCategory GPS = null; - public static final Category ARMOR = new Category(new MenuItem(Material.IRON_CHESTPLATE, "&7Armor", 0, "open"), 2); - public static final Category LUMPS_AND_MAGIC = new Category(new MenuItem(Material.FIRE_CHARGE, "&7Magical Items", 0, "open"), 2); - public static final Category MAGIC = new Category(new MenuItem(Material.BLAZE_POWDER, "&7Magical Gadgets", 0, "open"), 3); - public static Category MISC = null; - public static final Category TECH = new Category(new CustomArmor(new MenuItem(Material.LEATHER_CHESTPLATE, "&7Technical Gadgets", 0, "open"), Color.SILVER), 3); - public static Category RESOURCES = null; - public static Category CARGO = null; - public static final Category TECH_MISC = new Category(new MenuItem(Material.COMPARATOR, "&7Technical Components", 0, "open"), 2); - public static final Category MAGIC_ARMOR = new Category(new MenuItem(Material.GOLDEN_CHESTPLATE, "&7Magical Armor", 0, "open"), 2); - public static final Category TALISMANS_1 = new Category(new MenuItem(Material.EMERALD, "&7Talismans - &aTier I", 0, "open"), 2); - public static final LockedCategory TALISMANS_2 = new LockedCategory(new MenuItem(Material.EMERALD, "&7Talismans - &aTier II", 0, "open"), 3, TALISMANS_1); - public static final Category TOOLS = new Category(new MenuItem(Material.GOLDEN_PICKAXE, "&7Tools", 0, "open"), 1); - public static final SeasonCategory CHRISTMAS = new SeasonCategory(12, 1, new MenuItem(Material.NETHER_STAR, "&aC&ch&ar&ci&as&ct&am&ca&as", 0, ChatColor.translateAlternateColorCodes('&', "&chelp &aSanta"))); - public static final SeasonCategory VALENTINES_DAY = new SeasonCategory(2, 2, new MenuItem(Material.POPPY, "&dValentine's Day", 0, ChatColor.translateAlternateColorCodes('&', "&dcelebrate Love"))); - public static final SeasonCategory EASTER = new SeasonCategory(4, 2, new MenuItem(Material.EGG, "&6Easter", 0, ChatColor.translateAlternateColorCodes('&', "&apaint some Eggs"))); - public static final SeasonCategory BIRTHDAY = new SeasonCategory(10, 1, new MenuItem(Material.FIREWORK_ROCKET, "&a&lTheBusyBiscuit's Birthday &7(26th October)", 0, ChatColor.translateAlternateColorCodes('&', "&acelebrate with me"))); + public static final Category WEAPONS = new Category(new CustomItem(Material.GOLDEN_SWORD, "&7Weapons", "", "&a> Click to open"), 1); + public static final Category PORTABLE = new Category(new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNDBjYjFlNjdiNTEyYWIyZDRiZjNkN2FjZTBlYWFmNjFjMzJjZDQ2ODFkZGMzOTg3Y2ViMzI2NzA2YTMzZmEifX19"), "&7Items", "", "&a> Click to open"), 1);; + public static final Category FOOD = new Category(new CustomItem(Material.APPLE, "&7Food", "", "&a> Click to open"), 2); + public static final Category MACHINES_1 = new Category(new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTM0M2NlNThkYTU0Yzc5OTI0YTJjOTMzMWNmYzQxN2ZlOGNjYmJlYTliZTQ1YTdhYzg1ODYwYTZjNzMwIn19fQ=="), "&7Basic Machines", "", "&a> Click to open"), 1);; + public static final LockedCategory ELECTRICITY = new LockedCategory(new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNTU4NDQzMmFmNmYzODIxNjcxMjAyNThkMWVlZThjODdjNmU3NWQ5ZTQ3OWU3YjBkNGM3YjZhZDQ4Y2ZlZWYifX19"), "&bEnergy and Electricity", "", "&a> Click to open"), 4, MACHINES_1); + public static final LockedCategory GPS = new LockedCategory(new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjBjOWMxYTAyMmY0MGI3M2YxNGI0Y2JhMzdjNzE4YzZhNTMzZjNhMjg2NGI2NTM2ZDVmNDU2OTM0Y2MxZiJ9fX0="), "&bGPS-based Machines", "", "&a> Click to open"), 4, MACHINES_1); + public static final Category ARMOR = new Category(new CustomItem(Material.IRON_CHESTPLATE, "&7Armor", "", "&a> Click to open"), 2); + public static final Category LUMPS_AND_MAGIC = new Category(new CustomItem(Material.FIRE_CHARGE, "&7Magical Items", "", "&a> Click to open"), 2); + public static final Category MAGIC = new Category(new CustomItem(Material.BLAZE_POWDER, "&7Magical Gadgets", "", "&a> Click to open"), 3); + public static final Category MISC = new Category(new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTRkYTk3ZjA4MGUzOTViODQyYzRjYzgyYTg0MDgyM2Q0ZGJkOGNhNjg4YTIwNjg1M2U1NzgzZTRiZmRjMDEyIn19fQ=="), "&7Miscellaneous", "", "&a> Click to open"), 2);; + public static final Category TECH = new Category(new CustomArmor(new CustomItem(Material.LEATHER_CHESTPLATE, "&7Technical Gadgets", "", "&a> Click to open"), Color.SILVER), 3); + public static final Category RESOURCES = new Category(new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvY2U4ZjVhZGIxNGQ2YzlmNmI4MTBkMDI3NTQzZjFhOGMxZjQxN2UyZmVkOTkzYzk3YmNkODljNzRmNWUyZTgifX19"), "&7Resources", "", "&a> Click to open"), 1); + public static final Category CARGO = new LockedCategory(new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZTUxMGJjODUzNjJhMTMwYTZmZjlkOTFmZjExZDZmYTQ2ZDdkMTkxMmEzNDMxZjc1MTU1OGVmM2M0ZDljMiJ9fX0="), "&cCargo Management", "", "&a> Click to open"), 4, MACHINES_1); + public static final Category TECH_MISC = new Category(new CustomItem(Material.COMPARATOR, "&7Technical Components", "", "&a> Click to open"), 2); + public static final Category MAGIC_ARMOR = new Category(new CustomItem(Material.GOLDEN_CHESTPLATE, "&7Magical Armor", "", "&a> Click to open"), 2); + public static final Category TALISMANS_1 = new Category(new CustomItem(Material.EMERALD, "&7Talismans - &aTier I", "", "&a> Click to open"), 2); + public static final LockedCategory TALISMANS_2 = new LockedCategory(new CustomItem(Material.EMERALD, "&7Talismans - &aTier II", "", "&a> Click to open"), 3, TALISMANS_1); + public static final Category TOOLS = new Category(new CustomItem(Material.GOLDEN_PICKAXE, "&7Tools", "", "&a> Click to open"), 1); + public static final SeasonCategory CHRISTMAS = new SeasonCategory(12, 1, new CustomItem(Material.NETHER_STAR, "&aC&ch&ar&ci&as&ct&am&ca&as", "", "&c> Click to help &aSanta")); + public static final SeasonCategory VALENTINES_DAY = new SeasonCategory(2, 2, new CustomItem(Material.POPPY, "&dValentine's Day", "", "&d> Click to celebrate Love")); + public static final SeasonCategory EASTER = new SeasonCategory(4, 2, new CustomItem(Material.EGG, "&6Easter", "", "&a> Click to paint some Eggs")); + public static final SeasonCategory BIRTHDAY = new SeasonCategory(10, 1, new CustomItem(Material.FIREWORK_ROCKET, "&a&lTheBusyBiscuit's Birthday &7(26th October)", "", "&a> Click to celebrate with me")); - static { + private static ItemStack getSkull(String texture) { try { - MISC = new Category(new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTRkYTk3ZjA4MGUzOTViODQyYzRjYzgyYTg0MDgyM2Q0ZGJkOGNhNjg4YTIwNjg1M2U1NzgzZTRiZmRjMDEyIn19fQ=="), "&7Miscellaneous", "", "&a> Click to open"), 2); - PORTABLE = new Category(new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNDBjYjFlNjdiNTEyYWIyZDRiZjNkN2FjZTBlYWFmNjFjMzJjZDQ2ODFkZGMzOTg3Y2ViMzI2NzA2YTMzZmEifX19"), "&7Items", "", "&a> Click to open"), 1); - MACHINES_1 = new Category(new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTM0M2NlNThkYTU0Yzc5OTI0YTJjOTMzMWNmYzQxN2ZlOGNjYmJlYTliZTQ1YTdhYzg1ODYwYTZjNzMwIn19fQ=="), "&7Basic Machines", "", "&a> Click to open"), 1); - ELECTRICITY = new LockedCategory(new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNTU4NDQzMmFmNmYzODIxNjcxMjAyNThkMWVlZThjODdjNmU3NWQ5ZTQ3OWU3YjBkNGM3YjZhZDQ4Y2ZlZWYifX19"), "&bEnergy and Electricity", "", "&a> Click to open"), 4, MACHINES_1); - GPS = new LockedCategory(new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjBjOWMxYTAyMmY0MGI3M2YxNGI0Y2JhMzdjNzE4YzZhNTMzZjNhMjg2NGI2NTM2ZDVmNDU2OTM0Y2MxZiJ9fX0="), "&bGPS-based Machines", "", "&a> Click to open"), 4, MACHINES_1); - RESOURCES = new Category(new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvY2U4ZjVhZGIxNGQ2YzlmNmI4MTBkMDI3NTQzZjFhOGMxZjQxN2UyZmVkOTkzYzk3YmNkODljNzRmNWUyZTgifX19"), "&7Resources", "", "&a> Click to open"), 1); - CARGO = new LockedCategory(new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZTUxMGJjODUzNjJhMTMwYTZmZjlkOTFmZjExZDZmYTQ2ZDdkMTkxMmEzNDMxZjc1MTU1OGVmM2M0ZDljMiJ9fX0="), "&cCargo Management", "", "&a> Click to open"), 4, MACHINES_1); - } catch (Exception e) { - e.printStackTrace(); + return getSkull(texture); + } + catch(Exception x) { + x.printStackTrace(); + + return new ItemStack(Material.PLAYER_HEAD); } } } diff --git a/src/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java b/src/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java index b25f06ef2..654550a32 100644 --- a/src/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java +++ b/src/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java @@ -14,16 +14,15 @@ import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomArmor; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomPotion; import me.mrCookieSlime.CSCoreLibPlugin.general.String.Christmas; -import me.mrCookieSlime.CSCoreLibPlugin.general.World.CustomSkull; public final class SlimefunItems { private SlimefunItems() {} /* Items */ - public static ItemStack PORTABLE_CRAFTER = null; - public static ItemStack PORTABLE_DUSTBIN = null; - public static ItemStack ENDER_BACKPACK = null; + public static final ItemStack PORTABLE_CRAFTER = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNzJlYzRhNGJkOGE1OGY4MzYxZjhhMDMwM2UyMTk5ZDMzZDYyNGVhNWY5MmY3Y2IzNDE0ZmVlOTVlMmQ4NjEifX19"), "&6Portable Crafter", "&a&oA portable Crafting Table", "", "&eRight Click&7 to open"); + public static final ItemStack PORTABLE_DUSTBIN = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMzJkNDEwNDJjZTk5MTQ3Y2MzOGNhYzllNDY3NDE1NzZlN2VlNzkxMjgzZTZmYWM4ZDMyOTJjYWUyOTM1ZjFmIn19fQ=="), "&6Portable Dustbin", "&rYour portable Item-Destroyer", "", "&eRight Click&7 to open"); + public static final ItemStack ENDER_BACKPACK = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMmEzYjM0ODYyYjlhZmI2M2NmOGQ1Nzc5OTY2ZDNmYmE3MGFmODJiMDRlODNmM2VhZjY0NDlhZWJhIn19fQ=="), "&6Ender Backpack","&a&oA portable Ender Chest", "", "&eRight Click&7 to open"); public static final ItemStack MAGIC_EYE_OF_ENDER = new CustomItem(Material.ENDER_EYE, "&6&lMagic Eye of Ender", "&4&lRequires full Ender Armor", "", "&7&eRight Click&7 to shoot an Ender Pearl"); public static final ItemStack BROKEN_SPAWNER = new CustomItem(Material.SPAWNER, "&cBroken Spawner", "&7Type: &b", "", "&cFractured, must be repaired in an Ancient Altar"); public static final ItemStack REPAIRED_SPAWNER = new CustomItem(Material.SPAWNER, "&bReinforced Spawner", "&7Type: &b"); @@ -35,10 +34,10 @@ public final class SlimefunItems { public static final ItemStack GRAPPLING_HOOK = new CustomItem(Material.LEAD, "&6Grappling Hook", "", "&7&eRight Click&7 to use"); public static final ItemStack SOLAR_HELMET = new CustomItem(Material.IRON_HELMET, "&bSolar Helmet", "", "&a&oCharges held Items and Armor"); public static final ItemStack CLOTH = new CustomItem(Material.PAPER, "&bCloth"); - public static ItemStack CAN = null; + public static final ItemStack CAN = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTRkYTk3ZjA4MGUzOTViODQyYzRjYzgyYTg0MDgyM2Q0ZGJkOGNhNjg4YTIwNjg1M2U1NzgzZTRiZmRjMDEyIn19fQ=="), "&rTin Can"); public static final ItemStack NIGHT_VISION_GOGGLES = new CustomArmor(new CustomItem(Material.LEATHER_HELMET, "&aNight Vision Goggles", "", "&9+ Night Vision"), Color.BLACK); public static final ItemStack FARMER_SHOES = new CustomArmor(new CustomItem(Material.LEATHER_BOOTS, "&eFarmer Shoes", "", "&6&oPrevents you from trampling your Crops"), Color.YELLOW); - public static ItemStack INFUSED_MAGNET = null; + public static final ItemStack INFUSED_MAGNET = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYWJhOGViYzRjNmE4MTczMDk0NzQ5OWJmN2UxZDVlNzNmZWQ2YzFiYjJjMDUxZTk2ZDM1ZWIxNmQyNDYxMGU3In19fQ=="), "&aInfused Magnet" , "", "&rMagical infused Magnets", "&rattract nearby Items", "&ras long as it is somewhere in", "&ryour Inventory", "", "&7Hold &eShift&7 to pick up nearby Items"); public static final ItemStack FLASK_OF_KNOWLEDGE = new CustomItem(Material.GLASS_BOTTLE, "&cFlask of Knowledge", "", "&rAllows you to store some of", "&ryour Experience in a Bottle", "&7Cost: &a1 Level"); public static final ItemStack RAG = new CustomItem(Material.PAPER, "&cRag", "", "&aLevel I - Medical Supply", "", "&rRestores 2 Hearts", "&rExtinguishes Fire", "", "&7&eRight Click&7 to use"); public static final ItemStack BANDAGE = new CustomItem(Material.PAPER, "&cBandage", "", "&aLevel II - Medical Supply", "", "&rRestores 4 Hearts", "&rExtinguishes Fire", "", "&7&eRight Click&7 to use"); @@ -47,20 +46,21 @@ public final class SlimefunItems { public static final ItemStack MEDICINE = new CustomPotion("&cMedicine", Color.RED, new PotionEffect(PotionEffectType.HEAL, 0, 0), "", "&aLevel III - Medical Supply", "", "&rRestores 4 Hearts", "&rExtinguishes Fire", "&rCures Poison/Wither/Radiation"); /* Backpacks */ - public static ItemStack BACKPACK_SMALL = null; - public static ItemStack BACKPACK_MEDIUM = null; - public static ItemStack BACKPACK_LARGE = null; - public static ItemStack WOVEN_BACKPACK = null; - public static ItemStack GILDED_BACKPACK = null; - public static ItemStack RADIANT_BACKPACK = null; - public static ItemStack BOUND_BACKPACK = null; - public static ItemStack COOLER = null; + public static final ItemStack BACKPACK_SMALL = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNDBjYjFlNjdiNTEyYWIyZDRiZjNkN2FjZTBlYWFmNjFjMzJjZDQ2ODFkZGMzOTg3Y2ViMzI2NzA2YTMzZmEifX19"), "&eSmall Backpack","", "&7Size: &e9", "&7ID: ", "", "&7&eRight Click&7 to open"); + public static final ItemStack BACKPACK_MEDIUM = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNDBjYjFlNjdiNTEyYWIyZDRiZjNkN2FjZTBlYWFmNjFjMzJjZDQ2ODFkZGMzOTg3Y2ViMzI2NzA2YTMzZmEifX19"), "&eBackpack","", "&7Size: &e18", "&7ID: ", "", "&7&eRight Click&7 to open"); + public static final ItemStack BACKPACK_LARGE = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNDBjYjFlNjdiNTEyYWIyZDRiZjNkN2FjZTBlYWFmNjFjMzJjZDQ2ODFkZGMzOTg3Y2ViMzI2NzA2YTMzZmEifX19"), "&eLarge Backpack","", "&7Size: &e27", "&7ID: ", "", "&7&eRight Click&7 to open"); + public static final ItemStack WOVEN_BACKPACK = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNDBjYjFlNjdiNTEyYWIyZDRiZjNkN2FjZTBlYWFmNjFjMzJjZDQ2ODFkZGMzOTg3Y2ViMzI2NzA2YTMzZmEifX19"), "&eWoven Backpack","", "&7Size: &e36", "&7ID: ", "", "&7&eRight Click&7 to open"); + public static final ItemStack GILDED_BACKPACK = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNDBjYjFlNjdiNTEyYWIyZDRiZjNkN2FjZTBlYWFmNjFjMzJjZDQ2ODFkZGMzOTg3Y2ViMzI2NzA2YTMzZmEifX19"), "&eGilded Backpack","", "&7Size: &e45", "&7ID: ", "", "&7&eRight Click&7 to open"); + public static final ItemStack RADIANT_BACKPACK = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNDBjYjFlNjdiNTEyYWIyZDRiZjNkN2FjZTBlYWFmNjFjMzJjZDQ2ODFkZGMzOTg3Y2ViMzI2NzA2YTMzZmEifX19"), "&eRadiant Backpack","", "&7Size: &e54 (Double chest)", "&7ID: ", "", "&7&eRight Click&7 to open"); + public static final ItemStack BOUND_BACKPACK = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMmEzYjM0ODYyYjlhZmI2M2NmOGQ1Nzc5OTY2ZDNmYmE3MGFmODJiMDRlODNmM2VhZjY0NDlhZWJhIn19fQ=="), "&cSoulbound Backpack","", "&7Size: &e36", "&7ID: ", "", "&7&eRight Click&7 to open"); + public static final ItemStack COOLER = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZDRjMTU3MjU4NGViNWRlMjI5ZGU5ZjVhNGY3NzlkMGFhY2JhZmZkMzNiY2IzM2ViNDUzNmE2YTJiYzZhMSJ9fX0="), "&bCooler","&rAllows you to store Juices/Smoothies", "&rand automatically consumes them when you are hungry", "&rand you have this in your Inventory", "", "&7Size: &e27", "&7ID: ", "", "&7&eRight Click&7 to open"); + + public static final ItemStack VOIDBAG_SMALL = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMmEzYjM0ODYyYjlhZmI2M2NmOGQ1Nzc5OTY2ZDNmYmE3MGFmODJiMDRlODNmM2VhZjY0NDlhZWJhIn19fQ=="), "&4Small Void Bag","", "&7Size: &e9", "&7ID: ", "", "&7&eLeft Click&7 to suck up nearby Items", "&7&eRight Click&7 to open"); + public static final ItemStack VOIDBAG_MEDIUM = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMmEzYjM0ODYyYjlhZmI2M2NmOGQ1Nzc5OTY2ZDNmYmE3MGFmODJiMDRlODNmM2VhZjY0NDlhZWJhIn19fQ=="), "&4Void Bag","", "&7Size: &e18", "&7ID: ", "", "&7&eLeft Click&7 to suck up nearby Items", "&7&eRight Click&7 to open"); + public static final ItemStack VOIDBAG_BIG = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMmEzYjM0ODYyYjlhZmI2M2NmOGQ1Nzc5OTY2ZDNmYmE3MGFmODJiMDRlODNmM2VhZjY0NDlhZWJhIn19fQ=="), "&4Big Void Bag","", "&7Size: &e27", "&7ID: ", "", "&7&eLeft Click&7 to suck up nearby Items", "&7&eRight Click&7 to open"); + public static final ItemStack VOIDBAG_LARGE = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMmEzYjM0ODYyYjlhZmI2M2NmOGQ1Nzc5OTY2ZDNmYmE3MGFmODJiMDRlODNmM2VhZjY0NDlhZWJhIn19fQ=="), "&4Large Void Bag","", "&7Size: &e36", "&7ID: ", "", "&7&eLeft Click&7 to suck up nearby Items", "&7&eRight Click&7 to open"); + public static final ItemStack BOUND_VOIDBAG = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMmEzYjM0ODYyYjlhZmI2M2NmOGQ1Nzc5OTY2ZDNmYmE3MGFmODJiMDRlODNmM2VhZjY0NDlhZWJhIn19fQ=="), "&4Soulbound Void Bag","", "&7Size: &e36", "&7ID: ", "", "&7&eLeft Click&7 to suck up nearby Items", "&7&eRight Click&7 to open"); - public static ItemStack VOIDBAG_SMALL = null; - public static ItemStack VOIDBAG_MEDIUM = null; - public static ItemStack VOIDBAG_BIG = null; - public static ItemStack VOIDBAG_LARGE = null; - public static ItemStack BOUND_VOIDBAG = null; /* Jetpacks */ public static final ItemStack DURALUMIN_JETPACK = new CustomArmor(new CustomItem(Material.LEATHER_CHESTPLATE, "&9Electric Jetpack &7- &eI", "", "&8\u21E8 &7Material: &bDuralumin", "&c&o&8\u21E8 &e\u26A1 &70 / 20 J", "&8\u21E8 &7Thrust: &c0.35", "", "&7Hold &eShift&7 to use"), Color.SILVER); @@ -201,33 +201,36 @@ public final class SlimefunItems { public static final ItemStack ADVANCED_CIRCUIT_BOARD = new CustomItem(Material.POWERED_RAIL, "&bAdvanced Circuit Board"); public static final ItemStack WHEAT_FLOUR = new CustomItem(Material.SUGAR, "&rWheat Flour"); public static final ItemStack STEEL_PLATE = new CustomItem(Material.PAPER, "&7&lSteel Plate"); - public static ItemStack COMPRESSED_CARBON = null; - public static ItemStack BATTERY = null; - public static ItemStack CARBON_CHUNK = null; + public static final ItemStack BATTERY = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNmUyZGRhNmVmNjE4NWQ0ZGQ2ZWE4Njg0ZTk3ZDM5YmE4YWIwMzdlMjVmNzVjZGVhNmJkMjlkZjhlYjM0ZWUifX19"), "&6Battery"); + public static final ItemStack CARBON = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOGIzYTA5NWI2YjgxZTZiOTg1M2ExOTMyNGVlZGYwYmI5MzQ5NDE3MjU4ZGQxNzNiOGVmZjg3YTA4N2FhIn19fQ=="), "&eCarbon"); + public static final ItemStack COMPRESSED_CARBON = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMzIxZDQ5NTE2NTc0OGQzMTE2Zjk5ZDZiNWJkNWQ0MmViOGJhNTkyYmNkZmFkMzdmZDk1ZjliNmMwNGEzYiJ9fX0="), "&cCompressed Carbon"); + public static final ItemStack CARBON_CHUNK = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMzIxZDQ5NTE2NTc0OGQzMTE2Zjk5ZDZiNWJkNWQ0MmViOGJhNTkyYmNkZmFkMzdmZDk1ZjliNmMwNGEzYiJ9fX0="), "&4Carbon Chunk"); public static final ItemStack STEEL_THRUSTER = new CustomItem(Material.BUCKET, "&7&lSteel Thruster"); - public static ItemStack POWER_CRYSTAL = null; + public static final ItemStack POWER_CRYSTAL = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNTNjMWIwMzZiNmUwMzUxN2IyODVhODExYmQ4NWU3M2Y1YWJmZGFjYzFkZGY5MGRmZjk2MmUxODA5MzRlMyJ9fX0="), "&c&lPower Crystal"); public static final ItemStack CHAIN = new CustomItem(Material.STRING, "&bChain"); public static final ItemStack HOOK = new CustomItem(Material.FLINT, "&bHook"); public static final ItemStack SIFTED_ORE = new CustomItem(Material.GUNPOWDER, "&6Sifted Ore"); - public static ItemStack STONE_CHUNK = null; - public static ItemStack LAVA_CRYSTAL = null; + public static final ItemStack STONE_CHUNK = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvY2U4ZjVhZGIxNGQ2YzlmNmI4MTBkMDI3NTQzZjFhOGMxZjQxN2UyZmVkOTkzYzk3YmNkODljNzRmNWUyZTgifX19"), "&6Stone Chunk"); + public static final ItemStack LAVA_CRYSTAL = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYTNhZDhlZTg0OWVkZjA0ZWQ5YTI2Y2EzMzQxZjYwMzNiZDc2ZGNjNDIzMWVkMWVhNjNiNzU2NTc1MWIyN2FjIn19fQ=="), "&4Lava Crystal"); public static final ItemStack SALT = new CustomItem(Material.SUGAR, "&rSalt"); - public static ItemStack BUTTER = null; - public static ItemStack CHEESE = null; + public static final ItemStack CHEESE = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMzRmZWJiYzE1ZDFkNGNjNjJiZWRjNWQ3YTJiNmYwZjQ2Y2Q1YjA2OTZhODg0ZGU3NWUyODllMzVjYmI1M2EwIn19fQ=="), "&rCheese"); + public static final ItemStack BUTTER = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjY2YjE5ZjdkNjM1ZDAzNDczODkxZGYzMzAxN2M1NDkzNjMyMDlhOGY2MzI4YTg1NDJjMjEzZDA4NTI1ZSJ9fX0="), "&rButter"); + public static final ItemStack DUCT_TAPE = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjJmYWFjZWFiNjM4NGZmZjVlZDI0YmI0NGE0YWYyZjU4NGViMTM4MjcyOWVjZDkzYTUzNjlhY2ZkNjY1NCJ9fX0="), "&8Duct Tape", "", "&rYou can repair Items using this", "&rin an Auto-Anvil"); public static final ItemStack HEAVY_CREAM = new CustomItem(Material.SNOWBALL, "&rHeavy Cream"); public static final ItemStack CRUSHED_ORE = new CustomItem(Material.GUNPOWDER, "&6Crushed Ore"); public static final ItemStack PULVERIZED_ORE = new CustomItem(Material.GUNPOWDER, "&6Pulverized Ore"); public static final ItemStack PURE_ORE_CLUSTER = new CustomItem(Material.GUNPOWDER, "&6Pure Ore Cluster"); - public static ItemStack TINY_URANIUM = null; - public static ItemStack SMALL_URANIUM = null; - public static ItemStack MAGNET = null; + public static final ItemStack SMALL_URANIUM = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYzhiMjlhZmE2ZDZkYzkyM2UyZTEzMjRiZjgxOTI3NTBmN2JkYmRkYzY4OTYzMmEyYjZjMThkOWZlN2E1ZSJ9fX0="), "&cSmall Chunk of Uranium", "", "&eRadiation Level: MODERATE", "&4&oHazmat Suit required"); + public static final ItemStack TINY_URANIUM = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYzhiMjlhZmE2ZDZkYzkyM2UyZTEzMjRiZjgxOTI3NTBmN2JkYmRkYzY4OTYzMmEyYjZjMThkOWZlN2E1ZSJ9fX0="), "&cTiny Pile of Uranium", "", "&cRadiation Level: LOW", "&4&oNo Hazmat Suit required"); + + public static final ItemStack MAGNET = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYWJhOGViYzRjNmE4MTczMDk0NzQ5OWJmN2UxZDVlNzNmZWQ2YzFiYjJjMDUxZTk2ZDM1ZWIxNmQyNDYxMGU3In19fQ=="), "&cMagnet"); public static final ItemStack NECROTIC_SKULL = new CustomItem(Material.WITHER_SKELETON_SKULL, "&cNecrotic Skull"); public static final ItemStack ESSENCE_OF_AFTERLIFE = new CustomItem(Material.GUNPOWDER, "&4Essence of Afterlife"); - public static ItemStack ELECTRO_MAGNET = null; - public static ItemStack HEATING_COIL = null; - public static ItemStack COOLING_UNIT = null; - public static ItemStack ELECTRIC_MOTOR = null; - public static ItemStack CARGO_MOTOR = null; + public static final ItemStack ELECTRO_MAGNET = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYWJhOGViYzRjNmE4MTczMDk0NzQ5OWJmN2UxZDVlNzNmZWQ2YzFiYjJjMDUxZTk2ZDM1ZWIxNmQyNDYxMGU3In19fQ=="), "&cElectromagnet"); + public static final ItemStack HEATING_COIL = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvN2UzYmM0ODkzYmE0MWEzZjczZWUyODE3NGNkZjRmZWY2YjE0NWU0MWZlNmM4MmNiN2JlOGQ4ZTk3NzFhNSJ9fX0="), "&cHeating Coil"); + public static final ItemStack COOLING_UNIT = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNzU0YmFkODZjOTlkZjc4MGM4ODlhMTA5OGY3NzY0OGVhZDczODVjYzFkZGIwOTNkYTVhN2Q4YzRjMmFlNTRkIn19fQ=="), "&bCooling Unit"); + public static final ItemStack ELECTRIC_MOTOR = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOGNiY2EwMTJmNjdlNTRkZTlhZWU3MmZmNDI0ZTA1NmMyYWU1OGRlNWVhY2M5NDlhYjJiY2Q5NjgzY2VjIn19fQ=="), "&cElectric Motor"); + public static final ItemStack CARGO_MOTOR = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOGNiY2EwMTJmNjdlNTRkZTlhZWU3MmZmNDI0ZTA1NmMyYWU1OGRlNWVhY2M5NDlhYjJiY2Q5NjgzY2VjIn19fQ=="), "&3Cargo Motor"); public static final ItemStack SCROLL_OF_DIMENSIONAL_TELEPOSITION = new CustomItem(Material.PAPER, "&6Scroll of Dimensional Teleposition", "", "&cThis Scroll is capable of creating", "&ca temporary black Hole which pulls", "&cnearby Entities into itself and sends", "&cthem into another Dimension where", "&ceverything is turned around", "", "&rIn other words: Makes Entities turn by 180 Degrees"); public static final ItemStack TOME_OF_KNOWLEDGE_SHARING = new CustomItem(Material.BOOK, "&6Tome of Knowledge Sharing", "&7Owner: &bNone", "", "&eRight Click&7 to bind this Tome to yourself", "", "", "&eRight Click&7 to obtain all Researches by", "&7the previously assigned Owner"); public static final ItemStack HARDENED_GLASS = new CustomItem(Material.LIGHT_GRAY_STAINED_GLASS, "&7Hardened Glass", "", "&rWithstands Explosions"); @@ -236,9 +239,7 @@ public final class SlimefunItems { public static final ItemStack REINFORCED_PLATE = new CustomItem(Material.PAPER, "&7Reinforced Plate"); public static final ItemStack ANCIENT_PEDESTAL = new CustomItem(Material.DISPENSER, "&dAncient Pedestal", "", "&5Part of the Ancient Altar"); public static final ItemStack ANCIENT_ALTAR = new CustomItem(Material.ENCHANTING_TABLE, "&dAncient Altar", "", "&5Multi-Block Altar for", "&5magical Crafting Processes"); - public static ItemStack DUCT_TAPE = null; public static final ItemStack COPPER_WIRE = new CustomItem(Material.STRING, "&6Copper Wire", "", "&6Crucial component in electric modules"); - public static final ItemStack RAINBOW_WOOL = new CustomItem(Material.WHITE_WOOL, "&5Rainbow Wool", "", "&dCycles through all Colors of the Rainbow!"); public static final ItemStack RAINBOW_GLASS = new CustomItem(Material.WHITE_STAINED_GLASS, "&5Rainbow Glass", "", "&dCycles through all Colors of the Rainbow!"); @@ -323,20 +324,20 @@ public final class SlimefunItems { public static final ItemStack SULFATE = new CustomItem(Material.GLOWSTONE_DUST, "&6Sulfate"); public static final ItemStack ZINC_DUST = new CustomItem(Material.SUGAR, "&6Zinc Dust"); public static final ItemStack MAGNESIUM_DUST = new CustomItem(Material.SUGAR, "&6Magnesium"); - public static ItemStack CARBON = null; public static final ItemStack SILICON = new CustomItem(Material.FIREWORK_STAR, "&6Silicon"); public static final ItemStack GOLD_24K_BLOCK = new CustomItem(Material.GOLD_BLOCK, "&rGold Block &7(24-Carat)"); /* Gems */ public static final ItemStack SYNTHETIC_DIAMOND = new CustomItem(Material.DIAMOND, "&bSynthetic Diamond"); public static final ItemStack SYNTHETIC_EMERALD = new CustomItem(Material.EMERALD, "&bSynthetic Emerald"); - public static ItemStack SYNTHETIC_SAPPHIRE = null; - public static ItemStack CARBONADO = null; - public static ItemStack RAW_CARBONADO = null; - public static ItemStack URANIUM = null; - public static ItemStack NEPTUNIUM = null; - public static ItemStack PLUTONIUM = null; - public static ItemStack BOOSTED_URANIUM = null; + public static final ItemStack SYNTHETIC_SAPPHIRE = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZTM1MDMyZjRkN2QwMWRlOGVjOTlkODlmODcyMzAxMmQ0ZTc0ZmE3MzAyMmM0ZmFjZjFiNTdjN2ZmNmZmMCJ9fX0="), "&bSynthetic Sapphire"); + public static final ItemStack CARBONADO = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMTJmNGIxNTc3ZjUxNjBjNjg5MzE3MjU3MWM0YTcxZDhiMzIxY2RjZWFhMDMyYzZlMGUzYjYwZTBiMzI4ZmEifX19"), "&b&lCarbonado", "", "&7&o\"Black Diamond\""); + public static final ItemStack RAW_CARBONADO = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZWI0OWU2ZWMxMDc3MWU4OTkyMjVhZWE3M2NkOGNmMDM2ODRmNDExZDE0MTVjNzMyM2M5M2NiOTQ3NjIzMCJ9fX0="), "&bRaw Carbonado"); + + public static final ItemStack URANIUM = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYzhiMjlhZmE2ZDZkYzkyM2UyZTEzMjRiZjgxOTI3NTBmN2JkYmRkYzY4OTYzMmEyYjZjMThkOWZlN2E1ZSJ9fX0="), "&4Uranium", "", "&2Radiation Level: HIGH", "&4&oHazmat Suit required"); + public static final ItemStack NEPTUNIUM = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNGVkZWE2YmZkMzdlNDlkZTQzZjE1NGZlNmZjYTYxN2Q0MTI5ZTYxYjk1NzU5YTNkNDlhMTU5MzVhMWMyZGNmMCJ9fX0="), "&aNeptunium", "", "&2Radiation Level: HIGH", "&4&oHazmat Suit required"); + public static final ItemStack PLUTONIUM = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMjVjZjkxYjczODg2NjVhNmQ3YzFiNjAyNmJkYjIzMjJjNmQyNzg5OTdhNDQ0Nzg2NzdjYmNjMTVmNzYxMjRmIn19fQ=="), "&7Plutonium", "", "&2Radiation Level: HIGH", "&4&oHazmat Suit required"); + public static final ItemStack BOOSTED_URANIUM = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNjgzN2NhMTJmMjIyZjQ3ODcxOTZhMTdiOGFiNjU2OTg1Zjg0MDRjNTA3NjdhZGJjYjZlN2YxNDI1NGZlZSJ9fX0="), "&2Boosted Uranium", "", "&2Radiation Level: HIGH", "&4&oHazmat Suit required"); /* Talisman */ public static final ItemStack TALISMAN = new CustomItem(Material.EMERALD, "&6Common Talisman"); @@ -416,13 +417,13 @@ public final class SlimefunItems { public static final ItemStack SOULBOUND_BOOTS = new CustomItem(Material.DIAMOND_BOOTS, "&cSoulbound Boots"); /* Runes */ - public static ItemStack BLANK_RUNE = null; - public static ItemStack RUNE_AIR = null; - public static ItemStack RUNE_WATER = null; - public static ItemStack RUNE_FIRE = null; - public static ItemStack RUNE_EARTH = null; - public static ItemStack RUNE_ENDER = null; - public static ItemStack RUNE_RAINBOW = null; + public static final ItemStack BLANK_RUNE; + public static final ItemStack RUNE_AIR; + public static final ItemStack RUNE_WATER; + public static final ItemStack RUNE_FIRE; + public static final ItemStack RUNE_EARTH; + public static final ItemStack RUNE_ENDER; + public static final ItemStack RUNE_RAINBOW; static { ItemStack itemB = new ItemStack(Material.FIREWORK_STAR); @@ -476,324 +477,196 @@ public final class SlimefunItems { } /* Electricity */ - public static ItemStack SOLAR_GENERATOR = new CustomItem(Material.DAYLIGHT_DETECTOR, "&bSolar Generator", "", "&eBasic Generator", "&8\u21E8 &e\u26A1 &70 J Buffer", "&8\u21E8 &e\u26A1 &74 J/s"); - public static ItemStack SOLAR_GENERATOR_2 = new CustomItem(Material.DAYLIGHT_DETECTOR, "&cAdvanced Solar Generator", "", "&aMedium Generator", "&8\u21E8 &e\u26A1 &70 J Buffer", "&8\u21E8 &e\u26A1 &716 J/s"); - public static ItemStack SOLAR_GENERATOR_3 = new CustomItem(Material.DAYLIGHT_DETECTOR, "&4Carbonado Solar Generator", "", "&4End-Game Generator", "&8\u21E8 &e\u26A1 &70 J Buffer", "&8\u21E8 &e\u26A1 &764 J/s"); - public static ItemStack SOLAR_GENERATOR_4 = new CustomItem(Material.DAYLIGHT_DETECTOR, "&eEnergized Solar Generator", "", "&9Works at Night", "", "&4End-Game Generator", "&8\u21E8 &e\u26A1 &70 J Buffer", "&8\u21E8 &e\u26A1 &7256 J/s (Day)", "&8\u21E8 &e\u26A1 &7128 J/s (Night)"); + public static final ItemStack SOLAR_GENERATOR = new CustomItem(Material.DAYLIGHT_DETECTOR, "&bSolar Generator", "", "&eBasic Generator", "&8\u21E8 &e\u26A1 &70 J Buffer", "&8\u21E8 &e\u26A1 &74 J/s"); + public static final ItemStack SOLAR_GENERATOR_2 = new CustomItem(Material.DAYLIGHT_DETECTOR, "&cAdvanced Solar Generator", "", "&aMedium Generator", "&8\u21E8 &e\u26A1 &70 J Buffer", "&8\u21E8 &e\u26A1 &716 J/s"); + public static final ItemStack SOLAR_GENERATOR_3 = new CustomItem(Material.DAYLIGHT_DETECTOR, "&4Carbonado Solar Generator", "", "&4End-Game Generator", "&8\u21E8 &e\u26A1 &70 J Buffer", "&8\u21E8 &e\u26A1 &764 J/s"); + public static final ItemStack SOLAR_GENERATOR_4 = new CustomItem(Material.DAYLIGHT_DETECTOR, "&eEnergized Solar Generator", "", "&9Works at Night", "", "&4End-Game Generator", "&8\u21E8 &e\u26A1 &70 J Buffer", "&8\u21E8 &e\u26A1 &7256 J/s (Day)", "&8\u21E8 &e\u26A1 &7128 J/s (Night)"); - public static ItemStack COAL_GENERATOR = null; - public static ItemStack LAVA_GENERATOR = null; + public static final ItemStack COAL_GENERATOR = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTM0M2NlNThkYTU0Yzc5OTI0YTJjOTMzMWNmYzQxN2ZlOGNjYmJlYTliZTQ1YTdhYzg1ODYwYTZjNzMwIn19fQ=="), "&cCoal Generator", "", "&6Average Generator", "&8\u21E8 &e\u26A1 &764 J Buffer", "&8\u21E8 &e\u26A1 &716 J/s"); + public static final ItemStack LAVA_GENERATOR = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTM0M2NlNThkYTU0Yzc5OTI0YTJjOTMzMWNmYzQxN2ZlOGNjYmJlYTliZTQ1YTdhYzg1ODYwYTZjNzMwIn19fQ=="), "&4Lava Generator", "", "&6Average Generator", "&8\u21E8 &e\u26A1 &7512 J Buffer", "&8\u21E8 &e\u26A1 &720 J/s"); - public static ItemStack ELECTRIC_FURNACE = new CustomItem(Material.FURNACE, "&cElectric Furnace", "", "&eBasic Machine", "&8\u21E8 &7Speed: 1x", "&8\u21E8 &e\u26A1 &74 J/s"); - public static ItemStack ELECTRIC_FURNACE_2 = new CustomItem(Material.FURNACE, "&cElectric Furnace &7- &eII", "", "&aMedium Machine", "&8\u21E8 &7Speed: 2x", "&8\u21E8 &e\u26A1 &76 J/s"); - public static ItemStack ELECTRIC_FURNACE_3 = new CustomItem(Material.FURNACE, "&cElectric Furnace &7- &eIII", "", "&aMedium Machine", "&8\u21E8 &7Speed: 4x", "&8\u21E8 &e\u26A1 &710 J/s"); + public static final ItemStack ELECTRIC_FURNACE = new CustomItem(Material.FURNACE, "&cElectric Furnace", "", "&eBasic Machine", "&8\u21E8 &7Speed: 1x", "&8\u21E8 &e\u26A1 &74 J/s"); + public static final ItemStack ELECTRIC_FURNACE_2 = new CustomItem(Material.FURNACE, "&cElectric Furnace &7- &eII", "", "&aMedium Machine", "&8\u21E8 &7Speed: 2x", "&8\u21E8 &e\u26A1 &76 J/s"); + public static final ItemStack ELECTRIC_FURNACE_3 = new CustomItem(Material.FURNACE, "&cElectric Furnace &7- &eIII", "", "&aMedium Machine", "&8\u21E8 &7Speed: 4x", "&8\u21E8 &e\u26A1 &710 J/s"); - public static ItemStack ELECTRIC_ORE_GRINDER = new CustomItem(Material.FURNACE, "&cElectric Ore Grinder", "","&rWorks as an Ore Crusher and Grind Stone", "", "&6Advanced Machine", "&8\u21E8 &7Speed: 1x", "&8\u21E8 &e\u26A1 &712 J/s"); - public static ItemStack ELECTRIC_ORE_GRINDER_2 = new CustomItem(Material.FURNACE, "&cElectric Ore Grinder &7(&eII&7)", "","&rWorks as an Ore Crusher and Grind Stone", "", "&4End-Game Machine", "&8\u21E8 &7Speed: 4x", "&8\u21E8 &e\u26A1 &730 J/s"); - public static ItemStack ELECTRIC_INGOT_PULVERIZER = new CustomItem(Material.FURNACE, "&cElectric Ingot Pulverizer", "", "&rPulverizes Ingots into Dust", "", "&aMedium Machine", "&8\u21E8 &7Speed: 1x", "&8\u21E8 &e\u26A1 &714 J/s"); - public static ItemStack AUTO_ENCHANTER = new CustomItem(Material.ENCHANTING_TABLE, "&5Auto Enchanter", "", "&aMedium Machine", "&8\u21E8 &7Speed: 1x", "&8\u21E8 &e\u26A1 &718 J/s"); - public static ItemStack AUTO_DISENCHANTER = new CustomItem(Material.ENCHANTING_TABLE, "&5Auto Disenchanter", "", "&aMedium Machine", "&8\u21E8 &7Speed: 1x", "&8\u21E8 &e\u26A1 &718 J/s"); - public static ItemStack AUTO_ANVIL = new CustomItem(Material.IRON_BLOCK, "&7Auto Anvil", "", "&6Advanced Machine", "&8\u21E8 &7Repair Factor: 10%", "&8\u21E8 &e\u26A1 &724 J/s"); - public static ItemStack AUTO_ANVIL_2 = new CustomItem(Material.IRON_BLOCK, "&7Auto Anvil Mk.II", "", "&4End-Game Machine", "&8\u21E8 &7Repair Factor: 25%", "&8\u21E8 &e\u26A1 &732 J/s"); + public static final ItemStack ELECTRIC_ORE_GRINDER = new CustomItem(Material.FURNACE, "&cElectric Ore Grinder", "","&rWorks as an Ore Crusher and Grind Stone", "", "&6Advanced Machine", "&8\u21E8 &7Speed: 1x", "&8\u21E8 &e\u26A1 &712 J/s"); + public static final ItemStack ELECTRIC_ORE_GRINDER_2 = new CustomItem(Material.FURNACE, "&cElectric Ore Grinder &7(&eII&7)", "","&rWorks as an Ore Crusher and Grind Stone", "", "&4End-Game Machine", "&8\u21E8 &7Speed: 4x", "&8\u21E8 &e\u26A1 &730 J/s"); + public static final ItemStack ELECTRIC_INGOT_PULVERIZER = new CustomItem(Material.FURNACE, "&cElectric Ingot Pulverizer", "", "&rPulverizes Ingots into Dust", "", "&aMedium Machine", "&8\u21E8 &7Speed: 1x", "&8\u21E8 &e\u26A1 &714 J/s"); + public static final ItemStack AUTO_ENCHANTER = new CustomItem(Material.ENCHANTING_TABLE, "&5Auto Enchanter", "", "&aMedium Machine", "&8\u21E8 &7Speed: 1x", "&8\u21E8 &e\u26A1 &718 J/s"); + public static final ItemStack AUTO_DISENCHANTER = new CustomItem(Material.ENCHANTING_TABLE, "&5Auto Disenchanter", "", "&aMedium Machine", "&8\u21E8 &7Speed: 1x", "&8\u21E8 &e\u26A1 &718 J/s"); + public static final ItemStack AUTO_ANVIL = new CustomItem(Material.IRON_BLOCK, "&7Auto Anvil", "", "&6Advanced Machine", "&8\u21E8 &7Repair Factor: 10%", "&8\u21E8 &e\u26A1 &724 J/s"); + public static final ItemStack AUTO_ANVIL_2 = new CustomItem(Material.IRON_BLOCK, "&7Auto Anvil Mk.II", "", "&4End-Game Machine", "&8\u21E8 &7Repair Factor: 25%", "&8\u21E8 &e\u26A1 &732 J/s"); - public static ItemStack BIO_REACTOR = new CustomItem(Material.LIME_TERRACOTTA, "&2Bio Reactor", "", "&6Average Generator", "&8\u21E8 &e\u26A1 &7128 J Buffer", "&8\u21E8 &e\u26A1 &78 J/s"); - public static ItemStack MULTIMETER = new CustomItem(Material.CLOCK, "&eMultimeter", "", "&rMeasures the Amount of stored", "&rEnergy in a Block"); - public static ItemStack SMALL_CAPACITOR = null, MEDIUM_CAPACITOR = null, BIG_CAPACITOR = null, LARGE_CAPACITOR = null, CARBONADO_EDGED_CAPACITOR = null; + public static final ItemStack BIO_REACTOR = new CustomItem(Material.LIME_TERRACOTTA, "&2Bio Reactor", "", "&6Average Generator", "&8\u21E8 &e\u26A1 &7128 J Buffer", "&8\u21E8 &e\u26A1 &78 J/s"); + public static final ItemStack MULTIMETER = new CustomItem(Material.CLOCK, "&eMultimeter", "", "&rMeasures the Amount of stored", "&rEnergy in a Block"); + + public static final ItemStack SMALL_CAPACITOR = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTEzNjFlNTc2YjQ5M2NiZmRmYWUzMjg2NjFjZWRkMWFkZDU1ZmFiNGU1ZWI0MThiOTJjZWJmNjI3NWY4YmI0In19fQ=="), "&aSmall Energy Capacitor", "", "&eBasic Capacitor", "&8\u21E8 &e\u26A1 &7128 J Capacity"); + public static final ItemStack MEDIUM_CAPACITOR = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTEzNjFlNTc2YjQ5M2NiZmRmYWUzMjg2NjFjZWRkMWFkZDU1ZmFiNGU1ZWI0MThiOTJjZWJmNjI3NWY4YmI0In19fQ=="), "&aMedium Energy Capacitor", "", "&6Average Capacitor", "&8\u21E8 &e\u26A1 &7512 J Capacity"); + public static final ItemStack BIG_CAPACITOR = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTEzNjFlNTc2YjQ5M2NiZmRmYWUzMjg2NjFjZWRkMWFkZDU1ZmFiNGU1ZWI0MThiOTJjZWJmNjI3NWY4YmI0In19fQ=="), "&aBig Energy Capacitor", "", "&aMedium Capacitor", "&8\u21E8 &e\u26A1 &71024 J Capacity"); + public static final ItemStack LARGE_CAPACITOR = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTEzNjFlNTc2YjQ5M2NiZmRmYWUzMjg2NjFjZWRkMWFkZDU1ZmFiNGU1ZWI0MThiOTJjZWJmNjI3NWY4YmI0In19fQ=="), "&aLarge Energy Capacitor", "", "&2Good Capacitor", "&8\u21E8 &e\u26A1 &78192 J Capacity"); + public static final ItemStack CARBONADO_EDGED_CAPACITOR = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTEzNjFlNTc2YjQ5M2NiZmRmYWUzMjg2NjFjZWRkMWFkZDU1ZmFiNGU1ZWI0MThiOTJjZWJmNjI3NWY4YmI0In19fQ=="), "&aCarbonado Edged Energy Capacitor", "", "&4End-Game Capacitor", "&8\u21E8 &e\u26A1 &765536 J Capacity"); /* Robots */ - public static ItemStack PROGRAMMABLE_ANDROID = null; - public static ItemStack PROGRAMMABLE_ANDROID_MINER = null; - public static ItemStack PROGRAMMABLE_ANDROID_BUTCHER = null; - public static ItemStack PROGRAMMABLE_ANDROID_FARMER = null; - public static ItemStack PROGRAMMABLE_ANDROID_WOODCUTTER = null; - public static ItemStack PROGRAMMABLE_ANDROID_FISHERMAN = null; + public static final ItemStack PROGRAMMABLE_ANDROID = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMzUwM2NiN2VkODQ1ZTdhNTA3ZjU2OWFmYzY0N2M0N2FjNDgzNzcxNDY1YzlhNjc5YTU0NTk0Yzc2YWZiYSJ9fX0="), "&cProgrammable Android &7(Normal)", "", "&8\u21E8 &7Function: None", "&8\u21E8 &7Fuel Efficiency: 1.0x"); + public static final ItemStack PROGRAMMABLE_ANDROID_FARMER = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZjlkMzMzNTdlODQxODgyM2JmNzgzZGU5MmRlODAyOTFiNGViZDM5MmFlYzg3MDY2OThlMDY4OTZkNDk4ZjYifX19"), "&cProgrammable Android &7(Farmer)", "", "&8\u21E8 &7Function: Farming", "&8\u21E8 &7Fuel Efficiency: 1.0x"); + public static final ItemStack PROGRAMMABLE_ANDROID_MINER = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZTYzOGEyODU0MWFiM2FlMGE3MjNkNTU3ODczOGUwODc1ODM4OGVjNGMzMzI0N2JkNGNhMTM0ODJhZWYzMzQifX19"), "&cProgrammable Android &7(Miner)", "", "&8\u21E8 &7Function: Mining", "&8\u21E8 &7Fuel Efficiency: 1.0x"); + public static final ItemStack PROGRAMMABLE_ANDROID_WOODCUTTER = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZDMyYTgxNDUxMDE0MjIwNTE2OWExYWQzMmYwYTc0NWYxOGU5Y2I2YzY2ZWU2NGVjYTJlNjViYWJkZWY5ZmYifX19"), "&cProgrammable Android &7(Woodcutter)", "", "&8\u21E8 &7Function: Woodcutting", "&8\u21E8 &7Fuel Efficiency: 1.0x"); + public static final ItemStack PROGRAMMABLE_ANDROID_BUTCHER = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvM2I0NzJkZjBhZDlhM2JlODhmMmU1ZDVkNDIyZDAyYjExNmQ2NGQ4ZGYxNDc1ZWQzMmU1NDZhZmM4NGIzMSJ9fX0="), "&cProgrammable Android &7(Butcher)", "", "&8\u21E8 &7Function: Slaughtering", "&8\u21E8 &7Damage: 4", "&8\u21E8 &7Fuel Efficiency: 1.0x"); + public static final ItemStack PROGRAMMABLE_ANDROID_FISHERMAN = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMzQ1ZTg3MzNhNzMxMTQzMzNiOThiMzYwMTc1MTI0MTcyMmY0NzEzZTFhMWE1ZDM2ZmJiMTMyNDkzZjFjNyJ9fX0="), "&cProgrammable Android &7(Fisherman)", "", "&8\u21E8 &7Function: Fishing", "&8\u21E8 &7Success Rate: 10%", "&8\u21E8 &7Fuel Efficiency: 1.0x"); + + public static final ItemStack PROGRAMMABLE_ANDROID_2 = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMzUwM2NiN2VkODQ1ZTdhNTA3ZjU2OWFmYzY0N2M0N2FjNDgzNzcxNDY1YzlhNjc5YTU0NTk0Yzc2YWZiYSJ9fX0="), "&cAdvanced Programmable Android &7(Normal)", "", "&8\u21E8 &7Function: None", "&8\u21E8 &7Fuel Efficiency: 1.5x"); + public static final ItemStack PROGRAMMABLE_ANDROID_2_FISHERMAN = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMzQ1ZTg3MzNhNzMxMTQzMzNiOThiMzYwMTc1MTI0MTcyMmY0NzEzZTFhMWE1ZDM2ZmJiMTMyNDkzZjFjNyJ9fX0="), "&cAdvanced Programmable Android &7(Fisherman)", "", "&8\u21E8 &7Function: Fishing", "&8\u21E8 &7Success Rate: 20%", "&8\u21E8 &7Fuel Efficiency: 1.5x"); + public static final ItemStack PROGRAMMABLE_ANDROID_2_FARMER = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZjlkMzMzNTdlODQxODgyM2JmNzgzZGU5MmRlODAyOTFiNGViZDM5MmFlYzg3MDY2OThlMDY4OTZkNDk4ZjYifX19"), "&cAdvanced Programmable Android &7(Farmer)", "", "&8\u21E8 &7Function: Farming", "&8\u21E8 &7Fuel Efficiency: 1.5x", "&8\u21E8 &7Can also harvest Plants from ExoticGarden"); + public static final ItemStack PROGRAMMABLE_ANDROID_2_BUTCHER = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvM2I0NzJkZjBhZDlhM2JlODhmMmU1ZDVkNDIyZDAyYjExNmQ2NGQ4ZGYxNDc1ZWQzMmU1NDZhZmM4NGIzMSJ9fX0="), "&cAdvanced Programmable Android &7(Butcher)", "", "&8\u21E8 &7Function: Slaughtering", "&8\u21E8 &7Damage: 8", "&8\u21E8 &7Fuel Efficiency: 1.5x"); - public static ItemStack PROGRAMMABLE_ANDROID_2 = null; - public static ItemStack PROGRAMMABLE_ANDROID_2_FISHERMAN = null; - public static ItemStack PROGRAMMABLE_ANDROID_2_FARMER = null; - public static ItemStack PROGRAMMABLE_ANDROID_2_BUTCHER = null; - - public static ItemStack PROGRAMMABLE_ANDROID_3 = null; - public static ItemStack PROGRAMMABLE_ANDROID_3_FISHERMAN = null; - public static ItemStack PROGRAMMABLE_ANDROID_3_BUTCHER = null; + public static final ItemStack PROGRAMMABLE_ANDROID_3 = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMzUwM2NiN2VkODQ1ZTdhNTA3ZjU2OWFmYzY0N2M0N2FjNDgzNzcxNDY1YzlhNjc5YTU0NTk0Yzc2YWZiYSJ9fX0="), "&eEmpowered Programmable Android &7(Normal)", "", "&8\u21E8 &7Function: None", "&8\u21E8 &7Fuel Efficiency: 3.0x"); + public static final ItemStack PROGRAMMABLE_ANDROID_3_FISHERMAN = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMzQ1ZTg3MzNhNzMxMTQzMzNiOThiMzYwMTc1MTI0MTcyMmY0NzEzZTFhMWE1ZDM2ZmJiMTMyNDkzZjFjNyJ9fX0="), "&eEmpowered Programmable Android &7(Fisherman)", "", "&8\u21E8 &7Function: Fishing", "&8\u21E8 &7Success Rate: 30%", "&8\u21E8 &7Fuel Efficiency: 8.0x"); + public static final ItemStack PROGRAMMABLE_ANDROID_3_BUTCHER = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvM2I0NzJkZjBhZDlhM2JlODhmMmU1ZDVkNDIyZDAyYjExNmQ2NGQ4ZGYxNDc1ZWQzMmU1NDZhZmM4NGIzMSJ9fX0="), "&eEmpowered Programmable Android &7(Butcher)", "", "&8\u21E8 &7Function: Slaughtering", "&8\u21E8 &7Damage: 20", "&8\u21E8 &7Fuel Efficiency: 8.0x"); /* GPS */ - public static ItemStack GPS_TRANSMITTER = null; - public static ItemStack GPS_TRANSMITTER_2 = null; - public static ItemStack GPS_TRANSMITTER_3 = null; - public static ItemStack GPS_TRANSMITTER_4 = null; + public static final ItemStack GPS_TRANSMITTER = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjBjOWMxYTAyMmY0MGI3M2YxNGI0Y2JhMzdjNzE4YzZhNTMzZjNhMjg2NGI2NTM2ZDVmNDU2OTM0Y2MxZiJ9fX0="), "&bGPS Transmitter", "", "&8\u21E8 &e\u26A1 &716 J Buffer", "&8\u21E8 &e\u26A1 &72 J/s"); + public static final ItemStack GPS_TRANSMITTER_2 = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjBjOWMxYTAyMmY0MGI3M2YxNGI0Y2JhMzdjNzE4YzZhNTMzZjNhMjg2NGI2NTM2ZDVmNDU2OTM0Y2MxZiJ9fX0="), "&cAdvanced GPS Transmitter", "", "&8\u21E8 &e\u26A1 &764 J Buffer", "&8\u21E8 &e\u26A1 &76 J/s"); + public static final ItemStack GPS_TRANSMITTER_3 = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjBjOWMxYTAyMmY0MGI3M2YxNGI0Y2JhMzdjNzE4YzZhNTMzZjNhMjg2NGI2NTM2ZDVmNDU2OTM0Y2MxZiJ9fX0="), "&4Carbonado GPS Transmitter", "", "&8\u21E8 &e\u26A1 &7256 J Buffer", "&8\u21E8 &e\u26A1 &722 J/s"); + public static final ItemStack GPS_TRANSMITTER_4 = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjBjOWMxYTAyMmY0MGI3M2YxNGI0Y2JhMzdjNzE4YzZhNTMzZjNhMjg2NGI2NTM2ZDVmNDU2OTM0Y2MxZiJ9fX0="), "&eEnergized GPS Transmitter", "", "&8\u21E8 &e\u26A1 &71024 J Buffer", "&8\u21E8 &e\u26A1 &792 J/s"); - public static ItemStack GPS_CONTROL_PANEL = null; - public static ItemStack GPS_MARKER_TOOL = new CustomItem(Material.REDSTONE_TORCH, "&bGPS Marker Tool", "", "&rAllows you to set a Waypoint at", "&rthe Location you place this"); - public static ItemStack GPS_EMERGENCY_TRANSMITTER = null; - public static ItemStack GPS_GEO_SCANNER = null; + public static final ItemStack GPS_MARKER_TOOL = new CustomItem(Material.REDSTONE_TORCH, "&bGPS Marker Tool", "", "&rAllows you to set a Waypoint at", "&rthe Location you place this"); + public static final ItemStack GPS_CONTROL_PANEL = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZGRjZmJhNThmYWYxZjY0ODQ3ODg0MTExODIyYjY0YWZhMjFkN2ZjNjJkNDQ4MWYxNGYzZjNiY2I2MzMwIn19fQ=="), "&bGPS Control Panel", "", "&rAllows you to trach your Satellites", "&rand manage your Waypoints"); + public static final ItemStack GPS_EMERGENCY_TRANSMITTER = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjBjOWMxYTAyMmY0MGI3M2YxNGI0Y2JhMzdjNzE4YzZhNTMzZjNhMjg2NGI2NTM2ZDVmNDU2OTM0Y2MxZiJ9fX0="), "&cGPS Emergency Transmitter", "", "&rCarrying this in your Inventory", "&rautomatically sets a Waypoint", "&rat your Location when you die."); - public static ItemStack ANDROID_INTERFACE_FUEL = new CustomItem(Material.DISPENSER, "&7Android Interface &c(Fuel)", "", "&rItems stored in this Interface", "&rwill be inserted into an Android's Fuel Slot", "&rwhen its Script tells them to do so"); - public static ItemStack ANDROID_INTERFACE_ITEMS = new CustomItem(Material.DISPENSER, "&7Android Interface &9(Items)", "", "&rItems stored in an Android's Inventory", "&rwill be inserted into this Interface", "&rwhen its Script tells them to do so"); + public static final ItemStack ANDROID_INTERFACE_FUEL = new CustomItem(Material.DISPENSER, "&7Android Interface &c(Fuel)", "", "&rItems stored in this Interface", "&rwill be inserted into an Android's Fuel Slot", "&rwhen its Script tells them to do so"); + public static final ItemStack ANDROID_INTERFACE_ITEMS = new CustomItem(Material.DISPENSER, "&7Android Interface &9(Items)", "", "&rItems stored in an Android's Inventory", "&rwill be inserted into this Interface", "&rwhen its Script tells them to do so"); + + public static final ItemStack GPS_GEO_SCANNER = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMmFkOGNmZWIzODdhNTZlM2U1YmNmODUzNDVkNmE0MTdiMjQyMjkzODg3ZGIzY2UzYmE5MWZhNDA5YjI1NGI4NiJ9fX0="), "&bGPS Geo-Scanner", "", "&rScans a Chunk for natural Resources", "&rsuch as &8Oil"); + public static final ItemStack OIL_PUMP = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYWZlMWEwNDBhNDI1ZTMxYTQ2ZDRmOWE5Yjk4MDZmYTJmMGM0N2VlODQ3MTFjYzE5MzJmZDhhYjMyYjJkMDM4In19fQ=="), "&rOil Pump", "", "&7Pumps up Oil and fills it into Buckets", "", "&c&l! &cMake sure to Geo-Scan the Chunk first"); + public static final ItemStack BUCKET_OF_OIL = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNmNlMDRiNDFkMTllYzc5MjdmOTgyYTYzYTk0YTNkNzlmNzhlY2VjMzMzNjMwNTFmZGUwODMxYmZhYmRiZCJ9fX0="), "&rBucket of Oil"); + public static final ItemStack BUCKET_OF_FUEL = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYTg0ZGRjYTc2NjcyNWI4Yjk3NDEzZjI1OWMzZjc2NjgwNzBmNmFlNTU0ODNhOTBjOGU1NTI1Mzk0ZjljMDk5In19fQ=="), "&rBucket of Fuel"); - public static ItemStack BUCKET_OF_OIL = null; - public static ItemStack BUCKET_OF_FUEL = null; - public static ItemStack OIL_PUMP = null; - - public static ItemStack REFINERY = new CustomItem(Material.PISTON, "&cRefinery", "", "&rRefines Oil to create Fuel"); - public static ItemStack COMBUSTION_REACTOR = null; - public static ItemStack ANDROID_MEMORY_CORE = null; + public static final ItemStack REFINERY = new CustomItem(Material.PISTON, "&cRefinery", "", "&rRefines Oil to create Fuel"); + public static final ItemStack COMBUSTION_REACTOR = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTM0M2NlNThkYTU0Yzc5OTI0YTJjOTMzMWNmYzQxN2ZlOGNjYmJlYTliZTQ1YTdhYzg1ODYwYTZjNzMwIn19fQ=="), "&cCombustion Reactor", "", "&6Advanced Generator", "&8\u21E8 &e\u26A1 &7256 J Buffer", "&8\u21E8 &e\u26A1 &724 J/s"); + public static final ItemStack ANDROID_MEMORY_CORE = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZDc4ZjJiN2U1ZTc1NjM5ZWE3ZmI3OTZjMzVkMzY0YzRkZjI4YjQyNDNlNjZiNzYyNzdhYWRjZDYyNjEzMzcifX19"), "&bAndroid Memory Core"); - public static ItemStack GPS_TELEPORTER_PYLON = new CustomItem(Material.PURPLE_STAINED_GLASS, "&5GPS Teleporter Pylon", "", "&7Teleporter Component"); - public static ItemStack GPS_TELEPORTATION_MATRIX = new CustomItem(Material.IRON_BLOCK, "&bGPS Teleporter Matrix", "", "&rThis is your Teleporter's Main Component", "&rThis Matrix allows Players to choose from all", "&rWaypoints made by the Player who has placed", "&rthis Device."); - public static ItemStack GPS_ACTIVATION_DEVICE_SHARED = new CustomItem(Material.STONE_PRESSURE_PLATE, "&rGPS Activation Device &3(Shared)", "", "&rPlace this onto a Teleportation Matrix", "&rand step onto this Plate to activate", "&rthe Teleportation Process"); - public static ItemStack GPS_ACTIVATION_DEVICE_PERSONAL = new CustomItem(Material.STONE_PRESSURE_PLATE, "&rGPS Activation Device &a(Personal)", "", "&rPlace this onto a Teleportation Matrix", "&rand step onto this Plate to activate", "&rthe Teleportation Process", "", "&rThis Version only allows the Person who", "&rplaced this Device to use it"); + public static final ItemStack GPS_TELEPORTER_PYLON = new CustomItem(Material.PURPLE_STAINED_GLASS, "&5GPS Teleporter Pylon", "", "&7Teleporter Component"); + public static final ItemStack GPS_TELEPORTATION_MATRIX = new CustomItem(Material.IRON_BLOCK, "&bGPS Teleporter Matrix", "", "&rThis is your Teleporter's Main Component", "&rThis Matrix allows Players to choose from all", "&rWaypoints made by the Player who has placed", "&rthis Device."); + public static final ItemStack GPS_ACTIVATION_DEVICE_SHARED = new CustomItem(Material.STONE_PRESSURE_PLATE, "&rGPS Activation Device &3(Shared)", "", "&rPlace this onto a Teleportation Matrix", "&rand step onto this Plate to activate", "&rthe Teleportation Process"); + public static final ItemStack GPS_ACTIVATION_DEVICE_PERSONAL = new CustomItem(Material.STONE_PRESSURE_PLATE, "&rGPS Activation Device &a(Personal)", "", "&rPlace this onto a Teleportation Matrix", "&rand step onto this Plate to activate", "&rthe Teleportation Process", "", "&rThis Version only allows the Person who", "&rplaced this Device to use it"); - public static ItemStack ELEVATOR = new CustomItem(Material.STONE_PRESSURE_PLATE, "&bElevator Plate", "", "&rPlace an Elevator Plate on every floor", "&rand you will be able to teleport between them.", "", "&eRight Click this Block &7to name it"); + public static final ItemStack ELEVATOR = new CustomItem(Material.STONE_PRESSURE_PLATE, "&bElevator Plate", "", "&rPlace an Elevator Plate on every floor", "&rand you will be able to teleport between them.", "", "&eRight Click this Block &7to name it"); - public static ItemStack INFUSED_HOPPER = new CustomItem(Material.HOPPER, "&5Infused Hopper", "", "&rAutomatically picks up nearby Items in a 7x7x7", "&rRadius when placed."); + public static final ItemStack INFUSED_HOPPER = new CustomItem(Material.HOPPER, "&5Infused Hopper", "", "&rAutomatically picks up nearby Items in a 7x7x7", "&rRadius when placed."); - public static ItemStack PLASTIC_SHEET = new CustomItem(Material.PAPER, "&rPlastic Sheet"); - public static ItemStack HEATED_PRESSURE_CHAMBER = new CustomItem(Material.LIGHT_GRAY_STAINED_GLASS, "&cHeated Pressure Chamber", "", "&4End-Game Machine", "&8\u21E8 &7Speed: 1x", "&8\u21E8 &e\u26A1 &710 J/s"); - public static ItemStack HEATED_PRESSURE_CHAMBER_2 = new CustomItem(Material.LIGHT_GRAY_STAINED_GLASS, "&cHeated Pressure Chamber &7- &eII", "", "&4End-Game Machine", "&8\u21E8 &7Speed: 5x", "&8\u21E8 &e\u26A1 &744 J/s"); + public static final ItemStack PLASTIC_SHEET = new CustomItem(Material.PAPER, "&rPlastic Sheet"); + public static final ItemStack HEATED_PRESSURE_CHAMBER = new CustomItem(Material.LIGHT_GRAY_STAINED_GLASS, "&cHeated Pressure Chamber", "", "&4End-Game Machine", "&8\u21E8 &7Speed: 1x", "&8\u21E8 &e\u26A1 &710 J/s"); + public static final ItemStack HEATED_PRESSURE_CHAMBER_2 = new CustomItem(Material.LIGHT_GRAY_STAINED_GLASS, "&cHeated Pressure Chamber &7- &eII", "", "&4End-Game Machine", "&8\u21E8 &7Speed: 5x", "&8\u21E8 &e\u26A1 &744 J/s"); - public static ItemStack ELECTRIC_SMELTERY = new CustomItem(Material.FURNACE, "&cElectric Smeltery", "", "&4Alloys-Only, doesn't smelt Dust into Ingots", "", "&4End-Game Machine", "&8\u21E8 &7Speed: 1x", "&8\u21E8 &e\u26A1 &720 J/s"); - public static ItemStack ELECTRIC_SMELTERY_2 = new CustomItem(Material.FURNACE, "&cElectric Smeltery &7- &eII", "", "&4Alloys-Only, doesn't smelt Dust into Ingots", "", "&4End-Game Machine", "&8\u21E8 &7Speed: 3x", "&8\u21E8 &e\u26A1 &740 J/s"); + public static final ItemStack ELECTRIC_SMELTERY = new CustomItem(Material.FURNACE, "&cElectric Smeltery", "", "&4Alloys-Only, doesn't smelt Dust into Ingots", "", "&4End-Game Machine", "&8\u21E8 &7Speed: 1x", "&8\u21E8 &e\u26A1 &720 J/s"); + public static final ItemStack ELECTRIC_SMELTERY_2 = new CustomItem(Material.FURNACE, "&cElectric Smeltery &7- &eII", "", "&4Alloys-Only, doesn't smelt Dust into Ingots", "", "&4End-Game Machine", "&8\u21E8 &7Speed: 3x", "&8\u21E8 &e\u26A1 &740 J/s"); - public static ItemStack ELECTRIFIED_CRUCIBLE = new CustomItem(Material.RED_TERRACOTTA, "&cElectrified Crucible", "", "&4End-Game Machine", "&8\u21E8 &7Speed: 1x", "&8\u21E8 &e\u26A1 &748 J/s"); - public static ItemStack ELECTRIFIED_CRUCIBLE_2 = new CustomItem(Material.RED_TERRACOTTA, "&cElectrified Crucible &7- &eII", "", "&4End-Game Machine", "&8\u21E8 &7Speed: 2x", "&8\u21E8 &e\u26A1 &780 J/s"); - public static ItemStack ELECTRIFIED_CRUCIBLE_3 = new CustomItem(Material.RED_TERRACOTTA, "&cElectrified Crucible &7- &eIII", "", "&4End-Game Machine", "&8\u21E8 &7Speed: 4x", "&8\u21E8 &e\u26A1 &7120 J/s"); + public static final ItemStack ELECTRIFIED_CRUCIBLE = new CustomItem(Material.RED_TERRACOTTA, "&cElectrified Crucible", "", "&4End-Game Machine", "&8\u21E8 &7Speed: 1x", "&8\u21E8 &e\u26A1 &748 J/s"); + public static final ItemStack ELECTRIFIED_CRUCIBLE_2 = new CustomItem(Material.RED_TERRACOTTA, "&cElectrified Crucible &7- &eII", "", "&4End-Game Machine", "&8\u21E8 &7Speed: 2x", "&8\u21E8 &e\u26A1 &780 J/s"); + public static final ItemStack ELECTRIFIED_CRUCIBLE_3 = new CustomItem(Material.RED_TERRACOTTA, "&cElectrified Crucible &7- &eIII", "", "&4End-Game Machine", "&8\u21E8 &7Speed: 4x", "&8\u21E8 &e\u26A1 &7120 J/s"); - public static ItemStack CARBON_PRESS = new CustomItem(Material.BLACK_STAINED_GLASS, "&cCarbon Press", "", "&4End-Game Machine", "&8\u21E8 &7Speed: 1x", "&8\u21E8 &e\u26A1 &720 J/s"); - public static ItemStack CARBON_PRESS_2 = new CustomItem(Material.BLACK_STAINED_GLASS, "&cCarbon Press &7- &eII", "", "&4End-Game Machine", "&8\u21E8 &7Speed: 3x", "&8\u21E8 &e\u26A1 &750 J/s"); - public static ItemStack CARBON_PRESS_3 = new CustomItem(Material.BLACK_STAINED_GLASS, "&cCarbon Press &7- &eIII", "", "&4End-Game Machine", "&8\u21E8 &7Speed: 15x", "&8\u21E8 &e\u26A1 &7180 J/s"); + public static final ItemStack CARBON_PRESS = new CustomItem(Material.BLACK_STAINED_GLASS, "&cCarbon Press", "", "&4End-Game Machine", "&8\u21E8 &7Speed: 1x", "&8\u21E8 &e\u26A1 &720 J/s"); + public static final ItemStack CARBON_PRESS_2 = new CustomItem(Material.BLACK_STAINED_GLASS, "&cCarbon Press &7- &eII", "", "&4End-Game Machine", "&8\u21E8 &7Speed: 3x", "&8\u21E8 &e\u26A1 &750 J/s"); + public static final ItemStack CARBON_PRESS_3 = new CustomItem(Material.BLACK_STAINED_GLASS, "&cCarbon Press &7- &eIII", "", "&4End-Game Machine", "&8\u21E8 &7Speed: 15x", "&8\u21E8 &e\u26A1 &7180 J/s"); - public static ItemStack BLISTERING_INGOT = new CustomItem(Material.GOLD_INGOT, "&6Blistering Ingot &7(33%)", "", "&2Radiation Level: HIGH", "&4&oHazmat Suit required"); - public static ItemStack BLISTERING_INGOT_2 = new CustomItem(Material.GOLD_INGOT, "&6Blistering Ingot &7(66%)", "", "&2Radiation Level: HIGH", "&4&oHazmat Suit required"); - public static ItemStack BLISTERING_INGOT_3 = new CustomItem(Material.GOLD_INGOT, "&6Blistering Ingot", "", "&2Radiation Level: HIGH", "&4&oHazmat Suit required"); + public static final ItemStack BLISTERING_INGOT = new CustomItem(Material.GOLD_INGOT, "&6Blistering Ingot &7(33%)", "", "&2Radiation Level: HIGH", "&4&oHazmat Suit required"); + public static final ItemStack BLISTERING_INGOT_2 = new CustomItem(Material.GOLD_INGOT, "&6Blistering Ingot &7(66%)", "", "&2Radiation Level: HIGH", "&4&oHazmat Suit required"); + public static final ItemStack BLISTERING_INGOT_3 = new CustomItem(Material.GOLD_INGOT, "&6Blistering Ingot", "", "&2Radiation Level: HIGH", "&4&oHazmat Suit required"); - public static ItemStack ENERGY_REGULATOR = null; - public static ItemStack DEBUG_FISH = new CustomItem(Material.PUFFERFISH, "&3How much is the Fish?", "", "&eRight Click &rany Block to view it's BlockData", "&eLeft Click &rto break a Block", "&eShift + Left Click &rany Block to erase it's BlockData", "&eShift + Right Click &rto place a Placeholder Block"); - - - public static ItemStack NETHER_ICE = null; - public static ItemStack ENRICHED_NETHER_ICE = null; - public static ItemStack NETHER_ICE_COOLANT_CELL = null; - public static ItemStack NETHER_DRILL = new CustomItem(Material.RED_TERRACOTTA, "&4Nether Drill", "", "&rAllows you to mine Nether Ice", "", "&4End-Game Machine", "&8\u21E8 &7Speed: 1x", "&8\u21E8 &e\u26A1 &7102 J/s", "", "&c&l! &cCan only be used in the Nether!", "&c&l! &cMake sure to Geo-Scan the Chunk first"); + public static final ItemStack ENERGY_REGULATOR = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZDc4ZjJiN2U1ZTc1NjM5ZWE3ZmI3OTZjMzVkMzY0YzRkZjI4YjQyNDNlNjZiNzYyNzdhYWRjZDYyNjEzMzcifX19"), "&6Energy Regulator", "", "&rCore Component of an Energy Network"); + public static final ItemStack DEBUG_FISH = new CustomItem(Material.PUFFERFISH, "&3How much is the Fish?", "", "&eRight Click &rany Block to view it's BlockData", "&eLeft Click &rto break a Block", "&eShift + Left Click &rany Block to erase it's BlockData", "&eShift + Right Click &rto place a Placeholder Block"); + + public static final ItemStack NETHER_ICE = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvM2NlMmRhZDliYWY3ZWFiYTdlODBkNGQwZjlmYWMwYWFiMDFhNzZiMTJmYjcxYzNkMmFmMmExNmZkZDRjNzM4MyJ9fX0="), "&eNether Ice", "", "&eRadiation Level: MODERATE", "&4&oHazmat Suit required"); + public static final ItemStack ENRICHED_NETHER_ICE = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvN2M4MThhYTEzYWFiYzcyOTQ4MzhkMjFjYWFjMDU3ZTk3YmQ4Yzg5NjQxYTBjMGY4YTU1NDQyZmY0ZTI3In19fQ=="), "&eEnriched Nether Ice", "", "&2Radiation Level: EXTREMELY HIGH", "&4&oHazmat Suit required"); + public static final ItemStack NETHER_ICE_COOLANT_CELL = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOGQzY2Q0MTI1NTVmODk3MDE2MjEzZTVkNmM3NDMxYjQ0OGI5ZTU2NDRlMWIxOWVjNTFiNTMxNmYzNTg0MGUwIn19fQ=="), "&6Nether Ice Coolant Cell"); + public static final ItemStack NETHER_DRILL = new CustomItem(Material.RED_TERRACOTTA, "&4Nether Drill", "", "&rAllows you to mine Nether Ice", "", "&4End-Game Machine", "&8\u21E8 &7Speed: 1x", "&8\u21E8 &e\u26A1 &7102 J/s", "", "&c&l! &cCan only be used in the Nether!", "&c&l! &cMake sure to Geo-Scan the Chunk first"); // Cargo - public static ItemStack CARGO_MANAGER = null; - public static ItemStack CARGO_NODE = null; - public static ItemStack CARGO_INPUT = null; - public static ItemStack CARGO_OUTPUT = null; - public static ItemStack CARGO_OUTPUT_ADVANCED = null; + public static final ItemStack CARGO_MANAGER = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZTUxMGJjODUzNjJhMTMwYTZmZjlkOTFmZjExZDZmYTQ2ZDdkMTkxMmEzNDMxZjc1MTU1OGVmM2M0ZDljMiJ9fX0="), "&6Cargo Manager", "", "&rCore Component of an Item Transport Network"); + public static final ItemStack CARGO_NODE = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMDdiN2VmNmZkNzg2NDg2NWMzMWMxZGM4N2JlZDI0YWI1OTczNTc5ZjVjNjYzOGZlY2I4ZGVkZWI0NDNmZjAifX19"), "&7Cargo Node &c(Connector)", "", "&rCargo Connector Pipe"); + public static final ItemStack CARGO_INPUT = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMTZkMWMxYTY5YTNkZTlmZWM5NjJhNzdiZjNiMmUzNzZkZDI1Yzg3M2EzZDhmMTRmMWRkMzQ1ZGFlNGM0In19fQ=="), "&7Cargo Node &c(Input)", "", "&rCargo Input Pipe"); + public static final ItemStack CARGO_OUTPUT = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNTViMjFmZDQ4MGMxYzQzYmYzYjlmODQyYzg2OWJkYzNiYzVhY2MyNTk5YmYyZWI2YjhhMWM5NWRjZTk3OGYifX19"), "&7Cargo Node &c(Output)", "", "&rCargo Output Pipe"); + public static final ItemStack CARGO_OUTPUT_ADVANCED = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNTViMjFmZDQ4MGMxYzQzYmYzYjlmODQyYzg2OWJkYzNiYzVhY2MyNTk5YmYyZWI2YjhhMWM5NWRjZTk3OGYifX19"), "&6Advanced Cargo Node &c(Output)", "", "&rCargo Output Pipe"); - public static ItemStack AUTO_BREEDER = new CustomItem(Material.HAY_BLOCK, "&eAuto-Breeder", "", "&rRuns on &aOrganic Food", "", "&4End-Game Machine", "&8\u21E8 &e\u26A1 &71024 J Buffer", "&8\u21E8 &e\u26A1 &760 J/Animal");; + public static final ItemStack AUTO_BREEDER = new CustomItem(Material.HAY_BLOCK, "&eAuto-Breeder", "", "&rRuns on &aOrganic Food", "", "&4End-Game Machine", "&8\u21E8 &e\u26A1 &71024 J Buffer", "&8\u21E8 &e\u26A1 &760 J/Animal");; - public static ItemStack ORGANIC_FOOD = null; - public static ItemStack WHEAT_ORGANIC_FOOD = null; - public static ItemStack CARROT_ORGANIC_FOOD = null; - public static ItemStack POTATO_ORGANIC_FOOD = null; - public static ItemStack SEEDS_ORGANIC_FOOD = null; - public static ItemStack BEETROOT_ORGANIC_FOOD = null; - public static ItemStack MELON_ORGANIC_FOOD = null; - public static ItemStack APPLE_ORGANIC_FOOD = null; + public static final ItemStack ORGANIC_FOOD = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjQzOWUzZjVhY2JlZTliZTRjNDI1OTI4OWQ2ZDlmMzVjNjM1ZmZhNjYxMTE0Njg3YjNlYTZkZGE4Yzc5In19fQ=="), "&aOrganic Food", "&7Content: &9X"); + public static final ItemStack WHEAT_ORGANIC_FOOD = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjQzOWUzZjVhY2JlZTliZTRjNDI1OTI4OWQ2ZDlmMzVjNjM1ZmZhNjYxMTE0Njg3YjNlYTZkZGE4Yzc5In19fQ=="), "&aOrganic Food", "&7Content: &9Wheat"); + public static final ItemStack CARROT_ORGANIC_FOOD = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjQzOWUzZjVhY2JlZTliZTRjNDI1OTI4OWQ2ZDlmMzVjNjM1ZmZhNjYxMTE0Njg3YjNlYTZkZGE4Yzc5In19fQ=="), "&aOrganic Food", "&7Content: &9Carrots"); + public static final ItemStack POTATO_ORGANIC_FOOD = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjQzOWUzZjVhY2JlZTliZTRjNDI1OTI4OWQ2ZDlmMzVjNjM1ZmZhNjYxMTE0Njg3YjNlYTZkZGE4Yzc5In19fQ=="), "&aOrganic Food", "&7Content: &9Potatoes"); + public static final ItemStack SEEDS_ORGANIC_FOOD = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjQzOWUzZjVhY2JlZTliZTRjNDI1OTI4OWQ2ZDlmMzVjNjM1ZmZhNjYxMTE0Njg3YjNlYTZkZGE4Yzc5In19fQ=="), "&aOrganic Food", "&7Content: &9Seeds"); + public static final ItemStack BEETROOT_ORGANIC_FOOD = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjQzOWUzZjVhY2JlZTliZTRjNDI1OTI4OWQ2ZDlmMzVjNjM1ZmZhNjYxMTE0Njg3YjNlYTZkZGE4Yzc5In19fQ=="), "&aOrganic Food", "&7Content: &9Beetroot"); + public static final ItemStack MELON_ORGANIC_FOOD = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjQzOWUzZjVhY2JlZTliZTRjNDI1OTI4OWQ2ZDlmMzVjNjM1ZmZhNjYxMTE0Njg3YjNlYTZkZGE4Yzc5In19fQ=="), "&aOrganic Food", "&7Content: &9Melon"); + public static final ItemStack APPLE_ORGANIC_FOOD = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjQzOWUzZjVhY2JlZTliZTRjNDI1OTI4OWQ2ZDlmMzVjNjM1ZmZhNjYxMTE0Njg3YjNlYTZkZGE4Yzc5In19fQ=="), "&aOrganic Food", "&7Content: &9Apple"); - public static ItemStack FERTILIZER = null; - public static ItemStack WHEAT_FERTILIZER = null; - public static ItemStack CARROT_FERTILIZER = null; - public static ItemStack POTATO_FERTILIZER = null; - public static ItemStack SEEDS_FERTILIZER = null; - public static ItemStack BEETROOT_FERTILIZER = null; - public static ItemStack MELON_FERTILIZER = null; - public static ItemStack APPLE_FERTILIZER = null; + public static final ItemStack FERTILIZER = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjQzOWUzZjVhY2JlZTliZTRjNDI1OTI4OWQ2ZDlmMzVjNjM1ZmZhNjYxMTE0Njg3YjNlYTZkZGE4Yzc5In19fQ=="), "&aOrganic Fertilizer", "&7Content: &9X"); + public static final ItemStack WHEAT_FERTILIZER = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjQzOWUzZjVhY2JlZTliZTRjNDI1OTI4OWQ2ZDlmMzVjNjM1ZmZhNjYxMTE0Njg3YjNlYTZkZGE4Yzc5In19fQ=="), "&aOrganic Fertilizer", "&7Content: &9Wheat"); + public static final ItemStack CARROT_FERTILIZER = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjQzOWUzZjVhY2JlZTliZTRjNDI1OTI4OWQ2ZDlmMzVjNjM1ZmZhNjYxMTE0Njg3YjNlYTZkZGE4Yzc5In19fQ=="), "&aOrganic Fertilizer", "&7Content: &9Carrots"); + public static final ItemStack POTATO_FERTILIZER = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjQzOWUzZjVhY2JlZTliZTRjNDI1OTI4OWQ2ZDlmMzVjNjM1ZmZhNjYxMTE0Njg3YjNlYTZkZGE4Yzc5In19fQ=="), "&aOrganic Fertilizer", "&7Content: &9Potatoes"); + public static final ItemStack SEEDS_FERTILIZER = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjQzOWUzZjVhY2JlZTliZTRjNDI1OTI4OWQ2ZDlmMzVjNjM1ZmZhNjYxMTE0Njg3YjNlYTZkZGE4Yzc5In19fQ=="), "&aOrganic Fertilizer", "&7Content: &9Seeds"); + public static final ItemStack BEETROOT_FERTILIZER = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjQzOWUzZjVhY2JlZTliZTRjNDI1OTI4OWQ2ZDlmMzVjNjM1ZmZhNjYxMTE0Njg3YjNlYTZkZGE4Yzc5In19fQ=="), "&aOrganic Fertilizer", "&7Content: &9Beetroot"); + public static final ItemStack MELON_FERTILIZER = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjQzOWUzZjVhY2JlZTliZTRjNDI1OTI4OWQ2ZDlmMzVjNjM1ZmZhNjYxMTE0Njg3YjNlYTZkZGE4Yzc5In19fQ=="), "&aOrganic Fertilizer", "&7Content: &9Melon"); + public static final ItemStack APPLE_FERTILIZER = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjQzOWUzZjVhY2JlZTliZTRjNDI1OTI4OWQ2ZDlmMzVjNjM1ZmZhNjYxMTE0Njg3YjNlYTZkZGE4Yzc5In19fQ=="), "&aOrganic Fertilizer", "&7Content: &9Apple"); - public static ItemStack ANIMAL_GROWTH_ACCELERATOR = new CustomItem(Material.HAY_BLOCK, "&bAnimal Growth Accelerator", "", "&rRuns on &aOrganic Food", "", "&4End-Game Machine", "&8\u21E8 &e\u26A1 &71024 J Buffer", "&8\u21E8 &e\u26A1 &728 J/s");; - public static ItemStack CROP_GROWTH_ACCELERATOR = new CustomItem(Material.LIME_TERRACOTTA, "&aCrop Growth Accelerator", "", "&rRuns on &aOrganic Fertilizer", "", "&4End-Game Machine", "&8\u21E8 &7Radius: 7x7", "&8\u21E8 &7Speed: &a3/time", "&8\u21E8 &e\u26A1 &71024 J Buffer", "&8\u21E8 &e\u26A1 &750 J/s"); - public static ItemStack CROP_GROWTH_ACCELERATOR_2 = new CustomItem(Material.LIME_TERRACOTTA, "&aCrop Growth Accelerator &7(&eII&7)", "", "&rRuns on &aOrganic Fertilizer", "", "&4End-Game Machine", "&8\u21E8 &7Radius: 9x9", "&8\u21E8 &7Speed: &a4/time", "&8\u21E8 &e\u26A1 &71024 J Buffer", "&8\u21E8 &e\u26A1 &760 J/s"); + public static final ItemStack ANIMAL_GROWTH_ACCELERATOR = new CustomItem(Material.HAY_BLOCK, "&bAnimal Growth Accelerator", "", "&rRuns on &aOrganic Food", "", "&4End-Game Machine", "&8\u21E8 &e\u26A1 &71024 J Buffer", "&8\u21E8 &e\u26A1 &728 J/s");; + public static final ItemStack CROP_GROWTH_ACCELERATOR = new CustomItem(Material.LIME_TERRACOTTA, "&aCrop Growth Accelerator", "", "&rRuns on &aOrganic Fertilizer", "", "&4End-Game Machine", "&8\u21E8 &7Radius: 7x7", "&8\u21E8 &7Speed: &a3/time", "&8\u21E8 &e\u26A1 &71024 J Buffer", "&8\u21E8 &e\u26A1 &750 J/s"); + public static final ItemStack CROP_GROWTH_ACCELERATOR_2 = new CustomItem(Material.LIME_TERRACOTTA, "&aCrop Growth Accelerator &7(&eII&7)", "", "&rRuns on &aOrganic Fertilizer", "", "&4End-Game Machine", "&8\u21E8 &7Radius: 9x9", "&8\u21E8 &7Speed: &a4/time", "&8\u21E8 &e\u26A1 &71024 J Buffer", "&8\u21E8 &e\u26A1 &760 J/s"); - public static ItemStack FOOD_FABRICATOR = new CustomItem(Material.GREEN_STAINED_GLASS, "&cFood Fabricator", "", "&rProduces &aOrganic Food", "", "&6Advanced Machine", "&8\u21E8 &7Speed: 1x", "&8\u21E8 &e\u26A1 &7256 J Buffer", "&8\u21E8 &e\u26A1 &714 J/s"); - public static ItemStack FOOD_FABRICATOR_2 = new CustomItem(Material.GREEN_STAINED_GLASS, "&cFood Fabricator &7(&eII&7)", "", "&rProduces &aOrganic Food", "", "&4End-Game Machine", "&8\u21E8 &7Speed: 6x", "&8\u21E8 &e\u26A1 &7512 J Buffer", "&8\u21E8 &e\u26A1 &748 J/s"); + public static final ItemStack FOOD_FABRICATOR = new CustomItem(Material.GREEN_STAINED_GLASS, "&cFood Fabricator", "", "&rProduces &aOrganic Food", "", "&6Advanced Machine", "&8\u21E8 &7Speed: 1x", "&8\u21E8 &e\u26A1 &7256 J Buffer", "&8\u21E8 &e\u26A1 &714 J/s"); + public static final ItemStack FOOD_FABRICATOR_2 = new CustomItem(Material.GREEN_STAINED_GLASS, "&cFood Fabricator &7(&eII&7)", "", "&rProduces &aOrganic Food", "", "&4End-Game Machine", "&8\u21E8 &7Speed: 6x", "&8\u21E8 &e\u26A1 &7512 J Buffer", "&8\u21E8 &e\u26A1 &748 J/s"); - public static ItemStack FOOD_COMPOSTER = new CustomItem(Material.GREEN_TERRACOTTA, "&cFood Composter", "", "&rProduces &aOrganic Fertilizer", "", "&6Advanced Machine", "&8\u21E8 &7Speed: 1x", "&8\u21E8 &e\u26A1 &7256 J Buffer", "&8\u21E8 &e\u26A1 &716 J/s"); - public static ItemStack FOOD_COMPOSTER_2 = new CustomItem(Material.GREEN_TERRACOTTA, "&cFood Composter &7(&eII&7)", "", "&rProduces &aOrganic Fertilizer", "", "&4End-Game Machine", "&8\u21E8 &7Speed: 10x", "&8\u21E8 &e\u26A1 &7512 J Buffer", "&8\u21E8 &e\u26A1 &752 J/s"); + public static final ItemStack FOOD_COMPOSTER = new CustomItem(Material.GREEN_TERRACOTTA, "&cFood Composter", "", "&rProduces &aOrganic Fertilizer", "", "&6Advanced Machine", "&8\u21E8 &7Speed: 1x", "&8\u21E8 &e\u26A1 &7256 J Buffer", "&8\u21E8 &e\u26A1 &716 J/s"); + public static final ItemStack FOOD_COMPOSTER_2 = new CustomItem(Material.GREEN_TERRACOTTA, "&cFood Composter &7(&eII&7)", "", "&rProduces &aOrganic Fertilizer", "", "&4End-Game Machine", "&8\u21E8 &7Speed: 10x", "&8\u21E8 &e\u26A1 &7512 J Buffer", "&8\u21E8 &e\u26A1 &752 J/s"); - public static ItemStack XP_COLLECTOR = null; - public static ItemStack REACTOR_COOLANT_CELL = null; + public static final ItemStack XP_COLLECTOR = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMTc2MmExNWIwNDY5MmEyZTRiM2ZiMzY2M2JkNGI3ODQzNGRjZTE3MzJiOGViMWM3YTlmN2MwZmJmNmYifX19"), "&aEXP Collector", "", "&rCollects nearby Exp and stores it", "", "&4End-Game Machine", "&8\u21E8 &e\u26A1 &71024 J Buffer", "&8\u21E8 &e\u26A1 &720 J/s"); + public static final ItemStack REACTOR_COOLANT_CELL = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZGU0MDczYmU0MGNiM2RlYjMxMGEwYmU5NTliNGNhYzY4ZTgyNTM3MjcyOGZhZmI2YzI5NzNlNGU3YzMzIn19fQ=="), "&bReactor Coolant Cell"); - public static ItemStack NUCLEAR_REACTOR = null; - public static ItemStack NETHERSTAR_REACTOR = null; - public static ItemStack REACTOR_ACCESS_PORT = new CustomItem(Material.CYAN_TERRACOTTA, "&2Reactor Access Port", "", "&rAllows you to interact with a Reactor", "&rvia Cargo Nodes, can also be used", "&ras a Buffer", "", "&8\u21E8 &eMust be placed &a3 Blocks &eabove the Reactor"); + public static final ItemStack NUCLEAR_REACTOR = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTM0M2NlNThkYTU0Yzc5OTI0YTJjOTMzMWNmYzQxN2ZlOGNjYmJlYTliZTQ1YTdhYzg1ODYwYTZjNzMwIn19fQ=="), "&2Nuclear Reactor", "", "&rRequires Cooling!", "&8\u21E8 &bMust be surrounded by Water", "&8\u21E8 &bMust be supplied with Reactor Coolant Cells", "", "&4End-Game Generator", "&8\u21E8 &e\u26A1 &716384 J Buffer", "&8\u21E8 &e\u26A1 &7500 J/s"); + public static final ItemStack NETHERSTAR_REACTOR = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTM0M2NlNThkYTU0Yzc5OTI0YTJjOTMzMWNmYzQxN2ZlOGNjYmJlYTliZTQ1YTdhYzg1ODYwYTZjNzMwIn19fQ=="), "&fNether Star Reactor", "", "&fRuns on Nether Stars", "&8\u21E8 &bMust be surrounded by Water", "&8\u21E8 &bMust be supplied with Nether Ice Coolant Cells", "", "&4End-Game Generator", "&8\u21E8 &e\u26A1 &732768 J Buffer", "&8\u21E8 &e\u26A1 &71024 J/s", "&8\u21E8 &4Causes nearby Entities to get Withered"); + public static final ItemStack REACTOR_ACCESS_PORT = new CustomItem(Material.CYAN_TERRACOTTA, "&2Reactor Access Port", "", "&rAllows you to interact with a Reactor", "&rvia Cargo Nodes, can also be used", "&ras a Buffer", "", "&8\u21E8 &eMust be placed &a3 Blocks &eabove the Reactor"); - public static ItemStack FREEZER = new CustomItem(Material.LIGHT_BLUE_STAINED_GLASS, "&bFreezer", "", "&6Advanced Machine", "&8\u21E8 &7Speed: 1x", "&8\u21E8 &e\u26A1 &7256 J Buffer", "&8\u21E8 &e\u26A1 &718 J/s");; - public static ItemStack FREEZER_2 = new CustomItem(Material.LIGHT_BLUE_STAINED_GLASS, "&bFreezer &7(&eII&7)", "", "&4End-Game Machine", "&8\u21E8 &7Speed: 2x", "&8\u21E8 &e\u26A1 &7256 J Buffer", "&8\u21E8 &e\u26A1 &730 J/s");; + public static final ItemStack FREEZER = new CustomItem(Material.LIGHT_BLUE_STAINED_GLASS, "&bFreezer", "", "&6Advanced Machine", "&8\u21E8 &7Speed: 1x", "&8\u21E8 &e\u26A1 &7256 J Buffer", "&8\u21E8 &e\u26A1 &718 J/s");; + public static final ItemStack FREEZER_2 = new CustomItem(Material.LIGHT_BLUE_STAINED_GLASS, "&bFreezer &7(&eII&7)", "", "&4End-Game Machine", "&8\u21E8 &7Speed: 2x", "&8\u21E8 &e\u26A1 &7256 J Buffer", "&8\u21E8 &e\u26A1 &730 J/s");; - public static ItemStack ELECTRIC_GOLD_PAN = new CustomItem(Material.BROWN_TERRACOTTA, "&6Electric Gold Pan", "", "&eBasic Machine", "&8\u21E8 &7Speed: 1x", "&8\u21E8 &e\u26A1 &72 J/s"); - public static ItemStack ELECTRIC_GOLD_PAN_2 = new CustomItem(Material.BROWN_TERRACOTTA, "&6Electric Gold Pan &7(&eII&7)", "", "&eBasic Machine", "&8\u21E8 &7Speed: 3x", "&8\u21E8 &e\u26A1 &74 J/s"); - public static ItemStack ELECTRIC_GOLD_PAN_3 = new CustomItem(Material.BROWN_TERRACOTTA, "&6Electric Gold Pan &7(&eIII&7)", "", "&4End-Game Machine", "&8\u21E8 &7Speed: 10x", "&8\u21E8 &e\u26A1 &714 J/s"); + public static final ItemStack ELECTRIC_GOLD_PAN = new CustomItem(Material.BROWN_TERRACOTTA, "&6Electric Gold Pan", "", "&eBasic Machine", "&8\u21E8 &7Speed: 1x", "&8\u21E8 &e\u26A1 &72 J/s"); + public static final ItemStack ELECTRIC_GOLD_PAN_2 = new CustomItem(Material.BROWN_TERRACOTTA, "&6Electric Gold Pan &7(&eII&7)", "", "&eBasic Machine", "&8\u21E8 &7Speed: 3x", "&8\u21E8 &e\u26A1 &74 J/s"); + public static final ItemStack ELECTRIC_GOLD_PAN_3 = new CustomItem(Material.BROWN_TERRACOTTA, "&6Electric Gold Pan &7(&eIII&7)", "", "&4End-Game Machine", "&8\u21E8 &7Speed: 10x", "&8\u21E8 &e\u26A1 &714 J/s"); - public static ItemStack ELECTRIC_DUST_WASHER = new CustomItem(Material.BLUE_STAINED_GLASS, "&3Electric Dust Washer", "", "&eBasic Machine", "&8\u21E8 &7Speed: 1x", "&8\u21E8 &e\u26A1 &76 J/s"); - public static ItemStack ELECTRIC_DUST_WASHER_2 = new CustomItem(Material.BLUE_STAINED_GLASS, "&3Electric Dust Washer &7(&eII&7)", "", "&eBasic Machine", "&8\u21E8 &7Speed: 2x", "&8\u21E8 &e\u26A1 &710 J/s"); - public static ItemStack ELECTRIC_DUST_WASHER_3 = new CustomItem(Material.BLUE_STAINED_GLASS, "&3Electric Dust Washer &7(&eIII&7)", "", "&4End-Game Machine", "&8\u21E8 &7Speed: 10x", "&8\u21E8 &e\u26A1 &730 J/s"); + public static final ItemStack ELECTRIC_DUST_WASHER = new CustomItem(Material.BLUE_STAINED_GLASS, "&3Electric Dust Washer", "", "&eBasic Machine", "&8\u21E8 &7Speed: 1x", "&8\u21E8 &e\u26A1 &76 J/s"); + public static final ItemStack ELECTRIC_DUST_WASHER_2 = new CustomItem(Material.BLUE_STAINED_GLASS, "&3Electric Dust Washer &7(&eII&7)", "", "&eBasic Machine", "&8\u21E8 &7Speed: 2x", "&8\u21E8 &e\u26A1 &710 J/s"); + public static final ItemStack ELECTRIC_DUST_WASHER_3 = new CustomItem(Material.BLUE_STAINED_GLASS, "&3Electric Dust Washer &7(&eIII&7)", "", "&4End-Game Machine", "&8\u21E8 &7Speed: 10x", "&8\u21E8 &e\u26A1 &730 J/s"); - public static ItemStack ELECTRIC_INGOT_FACTORY = new CustomItem(Material.RED_TERRACOTTA, "&cElectric Ingot Factory", "", "&eBasic Machine", "&8\u21E8 &7Speed: 1x", "&8\u21E8 &e\u26A1 &78 J/s"); - public static ItemStack ELECTRIC_INGOT_FACTORY_2 = new CustomItem(Material.RED_TERRACOTTA, "&cElectric Ingot Factory &7(&eII&7)", "", "&eBasic Machine", "&8\u21E8 &7Speed: 2x", "&8\u21E8 &e\u26A1 &714 J/s"); - public static ItemStack ELECTRIC_INGOT_FACTORY_3 = new CustomItem(Material.RED_TERRACOTTA, "&cElectric Ingot Factory &7(&eIII&7)", "", "&4End-Game Machine", "&8\u21E8 &7Speed: 8x", "&8\u21E8 &e\u26A1 &740 J/s"); + public static final ItemStack ELECTRIC_INGOT_FACTORY = new CustomItem(Material.RED_TERRACOTTA, "&cElectric Ingot Factory", "", "&eBasic Machine", "&8\u21E8 &7Speed: 1x", "&8\u21E8 &e\u26A1 &78 J/s"); + public static final ItemStack ELECTRIC_INGOT_FACTORY_2 = new CustomItem(Material.RED_TERRACOTTA, "&cElectric Ingot Factory &7(&eII&7)", "", "&eBasic Machine", "&8\u21E8 &7Speed: 2x", "&8\u21E8 &e\u26A1 &714 J/s"); + public static final ItemStack ELECTRIC_INGOT_FACTORY_3 = new CustomItem(Material.RED_TERRACOTTA, "&cElectric Ingot Factory &7(&eIII&7)", "", "&4End-Game Machine", "&8\u21E8 &7Speed: 8x", "&8\u21E8 &e\u26A1 &740 J/s"); - public static ItemStack AUTOMATED_CRAFTING_CHAMBER = new CustomItem(Material.CRAFTING_TABLE, "&6Automated Crafting Chamber", "", "&6Advanced Machine", "&8\u21E8 &e\u26A1 &710 J/Item"); - public static ItemStack FLUID_PUMP = new CustomItem(Material.BLUE_TERRACOTTA, "&9Fluid Pump", "", "&6Advanced Machine", "&8\u21E8 &e\u26A1 &732 J/Block"); - public static ItemStack CHARGING_BENCH = new CustomItem(Material.CRAFTING_TABLE, "&6Charging Bench", "", "&rCharges Items such as Jetpacks", "", "&eBasic Machine", "&8\u21E8 &e\u26A1 &7128 J Buffer", "&8\u21E8 &e\u26A1 &7Energy Loss: &c50%"); + public static final ItemStack AUTOMATED_CRAFTING_CHAMBER = new CustomItem(Material.CRAFTING_TABLE, "&6Automated Crafting Chamber", "", "&6Advanced Machine", "&8\u21E8 &e\u26A1 &710 J/Item"); + public static final ItemStack FLUID_PUMP = new CustomItem(Material.BLUE_TERRACOTTA, "&9Fluid Pump", "", "&6Advanced Machine", "&8\u21E8 &e\u26A1 &732 J/Block"); + public static final ItemStack CHARGING_BENCH = new CustomItem(Material.CRAFTING_TABLE, "&6Charging Bench", "", "&rCharges Items such as Jetpacks", "", "&eBasic Machine", "&8\u21E8 &e\u26A1 &7128 J Buffer", "&8\u21E8 &e\u26A1 &7Energy Loss: &c50%"); - public static ItemStack WITHER_ASSEMBLER = new CustomItem(Material.OBSIDIAN, "&5Wither Assembler", "", "&4End-Game Machine", "&8\u21E8 &7Cooldown: &b30 Seconds", "&8\u21E8 &e\u26A1 &74096 J Buffer", "&8\u21E8 &e\u26A1 &74096 J/Wither"); + public static final ItemStack WITHER_ASSEMBLER = new CustomItem(Material.OBSIDIAN, "&5Wither Assembler", "", "&4End-Game Machine", "&8\u21E8 &7Cooldown: &b30 Seconds", "&8\u21E8 &e\u26A1 &74096 J Buffer", "&8\u21E8 &e\u26A1 &74096 J/Wither"); - public static ItemStack TRASH_CAN = null; + public static final ItemStack TRASH_CAN = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMzJkNDEwNDJjZTk5MTQ3Y2MzOGNhYzllNDY3NDE1NzZlN2VlNzkxMjgzZTZmYWM4ZDMyOTJjYWUyOTM1ZjFmIn19fQ=="), "&3Trash Can", "", "&rWill destroy all Items put into it"); - public static ItemStack ELYTRA = new ItemStack(Material.ELYTRA); - public static ItemStack ELYTRA_SCALE = new CustomItem(Material.FEATHER, "&bEyltra Scale"); - public static ItemStack INFUSED_ELYTRA = new CustomItem(new CustomItem(ELYTRA, "&5Infused Elytra"), new String[] {"MENDING-1"}); - public static ItemStack SOULBOUND_ELYTRA = new CustomItem(ELYTRA, "&cSoulbound Elytra"); + public static final ItemStack ELYTRA = new ItemStack(Material.ELYTRA); + public static final ItemStack ELYTRA_SCALE = new CustomItem(Material.FEATHER, "&bEyltra Scale"); + public static final ItemStack INFUSED_ELYTRA = new CustomItem(new CustomItem(ELYTRA, "&5Infused Elytra"), new String[] {"MENDING-1"}); + public static final ItemStack SOULBOUND_ELYTRA = new CustomItem(ELYTRA, "&cSoulbound Elytra"); // ChestTerminal Addon - public static ItemStack CHEST_TERMINAL = null; - public static ItemStack CT_IMPORT_BUS = null; - public static ItemStack CT_EXPORT_BUS = null; + public static final ItemStack CHEST_TERMINAL = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvN2E0NGZmM2E1ZjQ5YzY5Y2FiNjc2YmFkOGQ5OGEwNjNmYTc4Y2ZhNjE5MTZmZGVmM2UyNjc1NTdmZWMxODI4MyJ9fX0="), "&3CT Access Terminal", "&7If this Block is connected to a", "&7Cargo Network, it will allow you to remotely", "&7interact with any Items supplied by", "&7Nodes tuned into the ChestTerminal Channel"); + public static final ItemStack CT_IMPORT_BUS = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMTEzZGIyZTdlNzJlYTQ0MzJlZWZiZDZlNThhODVlYWEyNDIzZjgzZTY0MmNhNDFhYmM2YTkzMTc3NTdiODg5In19fQ=="), "&3CT Import Bus", "&7If this Block is connected to a", "&7Cargo Network, it will pull any Items from", "&7the Inventory it is attached to and place it", "&7into the CT Network Channel"); + public static final ItemStack CT_EXPORT_BUS = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMTEzZGIyZTdlNzJlYTQ0MzJlZWZiZDZlNThhODVlYWEyNDIzZjgzZTY0MmNhNDFhYmM2YTkzMTc3NTdiODg5In19fQ=="), "&3CT Export Bus", "&7If this Block is connected to a", "&7Cargo Network, it will pull any Items from", "&7the CT Network Channel and place these", "&7into the Inventory it is attached to"); - static { + private static ItemStack getSkull(String texture) { try { - PORTABLE_CRAFTER = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNzJlYzRhNGJkOGE1OGY4MzYxZjhhMDMwM2UyMTk5ZDMzZDYyNGVhNWY5MmY3Y2IzNDE0ZmVlOTVlMmQ4NjEifX19"), "&6Portable Crafter", "&a&oA portable Crafting Table", "", "&eRight Click&7 to open"); - PORTABLE_DUSTBIN = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMzJkNDEwNDJjZTk5MTQ3Y2MzOGNhYzllNDY3NDE1NzZlN2VlNzkxMjgzZTZmYWM4ZDMyOTJjYWUyOTM1ZjFmIn19fQ=="), "&6Portable Dustbin", "&rYour portable Item-Destroyer", "", "&eRight Click&7 to open"); - TRASH_CAN = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMzJkNDEwNDJjZTk5MTQ3Y2MzOGNhYzllNDY3NDE1NzZlN2VlNzkxMjgzZTZmYWM4ZDMyOTJjYWUyOTM1ZjFmIn19fQ=="), "&3Trash Can", "", "&rWill destroy all Items put into it"); - CAN = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTRkYTk3ZjA4MGUzOTViODQyYzRjYzgyYTg0MDgyM2Q0ZGJkOGNhNjg4YTIwNjg1M2U1NzgzZTRiZmRjMDEyIn19fQ=="), "&rTin Can"); + return getSkull(texture); + } + catch(Exception x) { + x.printStackTrace(); - STONE_CHUNK = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvY2U4ZjVhZGIxNGQ2YzlmNmI4MTBkMDI3NTQzZjFhOGMxZjQxN2UyZmVkOTkzYzk3YmNkODljNzRmNWUyZTgifX19"), "&6Stone Chunk"); - - INFUSED_MAGNET = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYWJhOGViYzRjNmE4MTczMDk0NzQ5OWJmN2UxZDVlNzNmZWQ2YzFiYjJjMDUxZTk2ZDM1ZWIxNmQyNDYxMGU3In19fQ=="), "&aInfused Magnet" , "", "&rMagical infused Magnets", "&rattract nearby Items", "&ras long as it is somewhere in", "&ryour Inventory", "", "&7Hold &eShift&7 to pick up nearby Items"); - MAGNET = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYWJhOGViYzRjNmE4MTczMDk0NzQ5OWJmN2UxZDVlNzNmZWQ2YzFiYjJjMDUxZTk2ZDM1ZWIxNmQyNDYxMGU3In19fQ=="), "&cMagnet"); - ELECTRO_MAGNET = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYWJhOGViYzRjNmE4MTczMDk0NzQ5OWJmN2UxZDVlNzNmZWQ2YzFiYjJjMDUxZTk2ZDM1ZWIxNmQyNDYxMGU3In19fQ=="), "&cElectromagnet"); - ELECTRIC_MOTOR = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOGNiY2EwMTJmNjdlNTRkZTlhZWU3MmZmNDI0ZTA1NmMyYWU1OGRlNWVhY2M5NDlhYjJiY2Q5NjgzY2VjIn19fQ=="), "&cElectric Motor"); - CARGO_MOTOR = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOGNiY2EwMTJmNjdlNTRkZTlhZWU3MmZmNDI0ZTA1NmMyYWU1OGRlNWVhY2M5NDlhYjJiY2Q5NjgzY2VjIn19fQ=="), "&3Cargo Motor"); - - BACKPACK_SMALL = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNDBjYjFlNjdiNTEyYWIyZDRiZjNkN2FjZTBlYWFmNjFjMzJjZDQ2ODFkZGMzOTg3Y2ViMzI2NzA2YTMzZmEifX19"), "&eSmall Backpack","", "&7Size: &e9", "&7ID: ", "", "&7&eRight Click&7 to open"); - BACKPACK_MEDIUM = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNDBjYjFlNjdiNTEyYWIyZDRiZjNkN2FjZTBlYWFmNjFjMzJjZDQ2ODFkZGMzOTg3Y2ViMzI2NzA2YTMzZmEifX19"), "&eBackpack","", "&7Size: &e18", "&7ID: ", "", "&7&eRight Click&7 to open"); - BACKPACK_LARGE = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNDBjYjFlNjdiNTEyYWIyZDRiZjNkN2FjZTBlYWFmNjFjMzJjZDQ2ODFkZGMzOTg3Y2ViMzI2NzA2YTMzZmEifX19"), "&eLarge Backpack","", "&7Size: &e27", "&7ID: ", "", "&7&eRight Click&7 to open"); - WOVEN_BACKPACK = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNDBjYjFlNjdiNTEyYWIyZDRiZjNkN2FjZTBlYWFmNjFjMzJjZDQ2ODFkZGMzOTg3Y2ViMzI2NzA2YTMzZmEifX19"), "&eWoven Backpack","", "&7Size: &e36", "&7ID: ", "", "&7&eRight Click&7 to open"); - GILDED_BACKPACK = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNDBjYjFlNjdiNTEyYWIyZDRiZjNkN2FjZTBlYWFmNjFjMzJjZDQ2ODFkZGMzOTg3Y2ViMzI2NzA2YTMzZmEifX19"), "&eGilded Backpack","", "&7Size: &e45", "&7ID: ", "", "&7&eRight Click&7 to open"); - RADIANT_BACKPACK = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNDBjYjFlNjdiNTEyYWIyZDRiZjNkN2FjZTBlYWFmNjFjMzJjZDQ2ODFkZGMzOTg3Y2ViMzI2NzA2YTMzZmEifX19"), "&eRadiant Backpack","", "&7Size: &e54 (Double chest)", "&7ID: ", "", "&7&eRight Click&7 to open"); - BOUND_BACKPACK = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMmEzYjM0ODYyYjlhZmI2M2NmOGQ1Nzc5OTY2ZDNmYmE3MGFmODJiMDRlODNmM2VhZjY0NDlhZWJhIn19fQ=="), "&cSoulbound Backpack","", "&7Size: &e36", "&7ID: ", "", "&7&eRight Click&7 to open"); - COOLER = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZDRjMTU3MjU4NGViNWRlMjI5ZGU5ZjVhNGY3NzlkMGFhY2JhZmZkMzNiY2IzM2ViNDUzNmE2YTJiYzZhMSJ9fX0="), "&bCooler","&rAllows you to store Juices/Smoothies", "&rand automatically consumes them when you are hungry", "&rand you have this in your Inventory", "", "&7Size: &e27", "&7ID: ", "", "&7&eRight Click&7 to open"); - ENDER_BACKPACK = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMmEzYjM0ODYyYjlhZmI2M2NmOGQ1Nzc5OTY2ZDNmYmE3MGFmODJiMDRlODNmM2VhZjY0NDlhZWJhIn19fQ=="), "&6Ender Backpack","&a&oA portable Ender Chest", "", "&eRight Click&7 to open"); - - VOIDBAG_SMALL = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMmEzYjM0ODYyYjlhZmI2M2NmOGQ1Nzc5OTY2ZDNmYmE3MGFmODJiMDRlODNmM2VhZjY0NDlhZWJhIn19fQ=="), "&4Small Void Bag","", "&7Size: &e9", "&7ID: ", "", "&7&eLeft Click&7 to suck up nearby Items", "&7&eRight Click&7 to open"); - VOIDBAG_MEDIUM = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMmEzYjM0ODYyYjlhZmI2M2NmOGQ1Nzc5OTY2ZDNmYmE3MGFmODJiMDRlODNmM2VhZjY0NDlhZWJhIn19fQ=="), "&4Void Bag","", "&7Size: &e18", "&7ID: ", "", "&7&eLeft Click&7 to suck up nearby Items", "&7&eRight Click&7 to open"); - VOIDBAG_BIG = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMmEzYjM0ODYyYjlhZmI2M2NmOGQ1Nzc5OTY2ZDNmYmE3MGFmODJiMDRlODNmM2VhZjY0NDlhZWJhIn19fQ=="), "&4Big Void Bag","", "&7Size: &e27", "&7ID: ", "", "&7&eLeft Click&7 to suck up nearby Items", "&7&eRight Click&7 to open"); - VOIDBAG_LARGE = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMmEzYjM0ODYyYjlhZmI2M2NmOGQ1Nzc5OTY2ZDNmYmE3MGFmODJiMDRlODNmM2VhZjY0NDlhZWJhIn19fQ=="), "&4Large Void Bag","", "&7Size: &e36", "&7ID: ", "", "&7&eLeft Click&7 to suck up nearby Items", "&7&eRight Click&7 to open"); - BOUND_VOIDBAG = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMmEzYjM0ODYyYjlhZmI2M2NmOGQ1Nzc5OTY2ZDNmYmE3MGFmODJiMDRlODNmM2VhZjY0NDlhZWJhIn19fQ=="), "&4Soulbound Void Bag","", "&7Size: &e36", "&7ID: ", "", "&7&eLeft Click&7 to suck up nearby Items", "&7&eRight Click&7 to open"); - - COAL_GENERATOR = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTM0M2NlNThkYTU0Yzc5OTI0YTJjOTMzMWNmYzQxN2ZlOGNjYmJlYTliZTQ1YTdhYzg1ODYwYTZjNzMwIn19fQ=="), "&cCoal Generator", "", "&6Average Generator", "&8\u21E8 &e\u26A1 &764 J Buffer", "&8\u21E8 &e\u26A1 &716 J/s"); - LAVA_GENERATOR = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTM0M2NlNThkYTU0Yzc5OTI0YTJjOTMzMWNmYzQxN2ZlOGNjYmJlYTliZTQ1YTdhYzg1ODYwYTZjNzMwIn19fQ=="), "&4Lava Generator", "", "&6Average Generator", "&8\u21E8 &e\u26A1 &7512 J Buffer", "&8\u21E8 &e\u26A1 &720 J/s"); - COMBUSTION_REACTOR = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTM0M2NlNThkYTU0Yzc5OTI0YTJjOTMzMWNmYzQxN2ZlOGNjYmJlYTliZTQ1YTdhYzg1ODYwYTZjNzMwIn19fQ=="), "&cCombustion Reactor", "", "&6Advanced Generator", "&8\u21E8 &e\u26A1 &7256 J Buffer", "&8\u21E8 &e\u26A1 &724 J/s"); - - NUCLEAR_REACTOR = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTM0M2NlNThkYTU0Yzc5OTI0YTJjOTMzMWNmYzQxN2ZlOGNjYmJlYTliZTQ1YTdhYzg1ODYwYTZjNzMwIn19fQ=="), "&2Nuclear Reactor", "", "&rRequires Cooling!", "&8\u21E8 &bMust be surrounded by Water", "&8\u21E8 &bMust be supplied with Reactor Coolant Cells", "", "&4End-Game Generator", "&8\u21E8 &e\u26A1 &716384 J Buffer", "&8\u21E8 &e\u26A1 &7500 J/s"); - NETHERSTAR_REACTOR = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTM0M2NlNThkYTU0Yzc5OTI0YTJjOTMzMWNmYzQxN2ZlOGNjYmJlYTliZTQ1YTdhYzg1ODYwYTZjNzMwIn19fQ=="), "&fNether Star Reactor", "", "&fRuns on Nether Stars", "&8\u21E8 &bMust be surrounded by Water", "&8\u21E8 &bMust be supplied with Nether Ice Coolant Cells", "", "&4End-Game Generator", "&8\u21E8 &e\u26A1 &732768 J Buffer", "&8\u21E8 &e\u26A1 &71024 J/s", "&8\u21E8 &4Causes nearby Entities to get Withered"); - - SMALL_CAPACITOR = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTEzNjFlNTc2YjQ5M2NiZmRmYWUzMjg2NjFjZWRkMWFkZDU1ZmFiNGU1ZWI0MThiOTJjZWJmNjI3NWY4YmI0In19fQ=="), "&aSmall Energy Capacitor", "", "&eBasic Capacitor", "&8\u21E8 &e\u26A1 &7128 J Capacity"); - MEDIUM_CAPACITOR = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTEzNjFlNTc2YjQ5M2NiZmRmYWUzMjg2NjFjZWRkMWFkZDU1ZmFiNGU1ZWI0MThiOTJjZWJmNjI3NWY4YmI0In19fQ=="), "&aMedium Energy Capacitor", "", "&6Average Capacitor", "&8\u21E8 &e\u26A1 &7512 J Capacity"); - BIG_CAPACITOR = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTEzNjFlNTc2YjQ5M2NiZmRmYWUzMjg2NjFjZWRkMWFkZDU1ZmFiNGU1ZWI0MThiOTJjZWJmNjI3NWY4YmI0In19fQ=="), "&aBig Energy Capacitor", "", "&aMedium Capacitor", "&8\u21E8 &e\u26A1 &71024 J Capacity"); - LARGE_CAPACITOR = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTEzNjFlNTc2YjQ5M2NiZmRmYWUzMjg2NjFjZWRkMWFkZDU1ZmFiNGU1ZWI0MThiOTJjZWJmNjI3NWY4YmI0In19fQ=="), "&aLarge Energy Capacitor", "", "&2Good Capacitor", "&8\u21E8 &e\u26A1 &78192 J Capacity"); - CARBONADO_EDGED_CAPACITOR = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTEzNjFlNTc2YjQ5M2NiZmRmYWUzMjg2NjFjZWRkMWFkZDU1ZmFiNGU1ZWI0MThiOTJjZWJmNjI3NWY4YmI0In19fQ=="), "&aCarbonado Edged Energy Capacitor", "", "&4End-Game Capacitor", "&8\u21E8 &e\u26A1 &765536 J Capacity"); - CHEESE = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMzRmZWJiYzE1ZDFkNGNjNjJiZWRjNWQ3YTJiNmYwZjQ2Y2Q1YjA2OTZhODg0ZGU3NWUyODllMzVjYmI1M2EwIn19fQ=="), "&rCheese"); - BUTTER = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjY2YjE5ZjdkNjM1ZDAzNDczODkxZGYzMzAxN2M1NDkzNjMyMDlhOGY2MzI4YTg1NDJjMjEzZDA4NTI1ZSJ9fX0="), "&rButter"); - DUCT_TAPE = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjJmYWFjZWFiNjM4NGZmZjVlZDI0YmI0NGE0YWYyZjU4NGViMTM4MjcyOWVjZDkzYTUzNjlhY2ZkNjY1NCJ9fX0="), "&8Duct Tape", "", "&rYou can repair Items using this", "&rin an Auto-Anvil"); - - URANIUM = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYzhiMjlhZmE2ZDZkYzkyM2UyZTEzMjRiZjgxOTI3NTBmN2JkYmRkYzY4OTYzMmEyYjZjMThkOWZlN2E1ZSJ9fX0="), "&4Uranium", "", "&2Radiation Level: HIGH", "&4&oHazmat Suit required"); - SMALL_URANIUM = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYzhiMjlhZmE2ZDZkYzkyM2UyZTEzMjRiZjgxOTI3NTBmN2JkYmRkYzY4OTYzMmEyYjZjMThkOWZlN2E1ZSJ9fX0="), "&cSmall Chunk of Uranium", "", "&eRadiation Level: MODERATE", "&4&oHazmat Suit required"); - TINY_URANIUM = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYzhiMjlhZmE2ZDZkYzkyM2UyZTEzMjRiZjgxOTI3NTBmN2JkYmRkYzY4OTYzMmEyYjZjMThkOWZlN2E1ZSJ9fX0="), "&cTiny Pile of Uranium", "", "&cRadiation Level: LOW", "&4&oNo Hazmat Suit required"); - - NEPTUNIUM = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNGVkZWE2YmZkMzdlNDlkZTQzZjE1NGZlNmZjYTYxN2Q0MTI5ZTYxYjk1NzU5YTNkNDlhMTU5MzVhMWMyZGNmMCJ9fX0="), "&aNeptunium", "", "&2Radiation Level: HIGH", "&4&oHazmat Suit required"); - PLUTONIUM = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMjVjZjkxYjczODg2NjVhNmQ3YzFiNjAyNmJkYjIzMjJjNmQyNzg5OTdhNDQ0Nzg2NzdjYmNjMTVmNzYxMjRmIn19fQ=="), "&7Plutonium", "", "&2Radiation Level: HIGH", "&4&oHazmat Suit required"); - BOOSTED_URANIUM = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNjgzN2NhMTJmMjIyZjQ3ODcxOTZhMTdiOGFiNjU2OTg1Zjg0MDRjNTA3NjdhZGJjYjZlN2YxNDI1NGZlZSJ9fX0="), "&2Boosted Uranium", "", "&2Radiation Level: HIGH", "&4&oHazmat Suit required"); - - PROGRAMMABLE_ANDROID = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMzUwM2NiN2VkODQ1ZTdhNTA3ZjU2OWFmYzY0N2M0N2FjNDgzNzcxNDY1YzlhNjc5YTU0NTk0Yzc2YWZiYSJ9fX0="), "&cProgrammable Android &7(Normal)", "", "&8\u21E8 &7Function: None", "&8\u21E8 &7Fuel Efficiency: 1.0x"); - PROGRAMMABLE_ANDROID_FARMER = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZjlkMzMzNTdlODQxODgyM2JmNzgzZGU5MmRlODAyOTFiNGViZDM5MmFlYzg3MDY2OThlMDY4OTZkNDk4ZjYifX19"), "&cProgrammable Android &7(Farmer)", "", "&8\u21E8 &7Function: Farming", "&8\u21E8 &7Fuel Efficiency: 1.0x"); - PROGRAMMABLE_ANDROID_MINER = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZTYzOGEyODU0MWFiM2FlMGE3MjNkNTU3ODczOGUwODc1ODM4OGVjNGMzMzI0N2JkNGNhMTM0ODJhZWYzMzQifX19"), "&cProgrammable Android &7(Miner)", "", "&8\u21E8 &7Function: Mining", "&8\u21E8 &7Fuel Efficiency: 1.0x"); - PROGRAMMABLE_ANDROID_WOODCUTTER = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZDMyYTgxNDUxMDE0MjIwNTE2OWExYWQzMmYwYTc0NWYxOGU5Y2I2YzY2ZWU2NGVjYTJlNjViYWJkZWY5ZmYifX19"), "&cProgrammable Android &7(Woodcutter)", "", "&8\u21E8 &7Function: Woodcutting", "&8\u21E8 &7Fuel Efficiency: 1.0x"); - PROGRAMMABLE_ANDROID_BUTCHER = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvM2I0NzJkZjBhZDlhM2JlODhmMmU1ZDVkNDIyZDAyYjExNmQ2NGQ4ZGYxNDc1ZWQzMmU1NDZhZmM4NGIzMSJ9fX0="), "&cProgrammable Android &7(Butcher)", "", "&8\u21E8 &7Function: Slaughtering", "&8\u21E8 &7Damage: 4", "&8\u21E8 &7Fuel Efficiency: 1.0x"); - PROGRAMMABLE_ANDROID_FISHERMAN = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMzQ1ZTg3MzNhNzMxMTQzMzNiOThiMzYwMTc1MTI0MTcyMmY0NzEzZTFhMWE1ZDM2ZmJiMTMyNDkzZjFjNyJ9fX0="), "&cProgrammable Android &7(Fisherman)", "", "&8\u21E8 &7Function: Fishing", "&8\u21E8 &7Success Rate: 10%", "&8\u21E8 &7Fuel Efficiency: 1.0x"); - - PROGRAMMABLE_ANDROID_2 = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMzUwM2NiN2VkODQ1ZTdhNTA3ZjU2OWFmYzY0N2M0N2FjNDgzNzcxNDY1YzlhNjc5YTU0NTk0Yzc2YWZiYSJ9fX0="), "&cAdvanced Programmable Android &7(Normal)", "", "&8\u21E8 &7Function: None", "&8\u21E8 &7Fuel Efficiency: 1.5x"); - PROGRAMMABLE_ANDROID_2_FISHERMAN = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMzQ1ZTg3MzNhNzMxMTQzMzNiOThiMzYwMTc1MTI0MTcyMmY0NzEzZTFhMWE1ZDM2ZmJiMTMyNDkzZjFjNyJ9fX0="), "&cAdvanced Programmable Android &7(Fisherman)", "", "&8\u21E8 &7Function: Fishing", "&8\u21E8 &7Success Rate: 20%", "&8\u21E8 &7Fuel Efficiency: 1.5x"); - PROGRAMMABLE_ANDROID_2_FARMER = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZjlkMzMzNTdlODQxODgyM2JmNzgzZGU5MmRlODAyOTFiNGViZDM5MmFlYzg3MDY2OThlMDY4OTZkNDk4ZjYifX19"), "&cAdvanced Programmable Android &7(Farmer)", "", "&8\u21E8 &7Function: Farming", "&8\u21E8 &7Fuel Efficiency: 1.5x", "&8\u21E8 &7Can also harvest Plants from ExoticGarden"); - PROGRAMMABLE_ANDROID_2_BUTCHER = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvM2I0NzJkZjBhZDlhM2JlODhmMmU1ZDVkNDIyZDAyYjExNmQ2NGQ4ZGYxNDc1ZWQzMmU1NDZhZmM4NGIzMSJ9fX0="), "&cAdvanced Programmable Android &7(Butcher)", "", "&8\u21E8 &7Function: Slaughtering", "&8\u21E8 &7Damage: 8", "&8\u21E8 &7Fuel Efficiency: 1.5x"); - - PROGRAMMABLE_ANDROID_3 = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMzUwM2NiN2VkODQ1ZTdhNTA3ZjU2OWFmYzY0N2M0N2FjNDgzNzcxNDY1YzlhNjc5YTU0NTk0Yzc2YWZiYSJ9fX0="), "&eEmpowered Programmable Android &7(Normal)", "", "&8\u21E8 &7Function: None", "&8\u21E8 &7Fuel Efficiency: 3.0x"); - PROGRAMMABLE_ANDROID_3_FISHERMAN = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMzQ1ZTg3MzNhNzMxMTQzMzNiOThiMzYwMTc1MTI0MTcyMmY0NzEzZTFhMWE1ZDM2ZmJiMTMyNDkzZjFjNyJ9fX0="), "&eEmpowered Programmable Android &7(Fisherman)", "", "&8\u21E8 &7Function: Fishing", "&8\u21E8 &7Success Rate: 30%", "&8\u21E8 &7Fuel Efficiency: 8.0x"); - PROGRAMMABLE_ANDROID_3_BUTCHER = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvM2I0NzJkZjBhZDlhM2JlODhmMmU1ZDVkNDIyZDAyYjExNmQ2NGQ4ZGYxNDc1ZWQzMmU1NDZhZmM4NGIzMSJ9fX0="), "&eEmpowered Programmable Android &7(Butcher)", "", "&8\u21E8 &7Function: Slaughtering", "&8\u21E8 &7Damage: 20", "&8\u21E8 &7Fuel Efficiency: 8.0x"); - - GPS_TRANSMITTER = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjBjOWMxYTAyMmY0MGI3M2YxNGI0Y2JhMzdjNzE4YzZhNTMzZjNhMjg2NGI2NTM2ZDVmNDU2OTM0Y2MxZiJ9fX0="), "&bGPS Transmitter", "", "&8\u21E8 &e\u26A1 &716 J Buffer", "&8\u21E8 &e\u26A1 &72 J/s"); - GPS_TRANSMITTER_2 = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjBjOWMxYTAyMmY0MGI3M2YxNGI0Y2JhMzdjNzE4YzZhNTMzZjNhMjg2NGI2NTM2ZDVmNDU2OTM0Y2MxZiJ9fX0="), "&cAdvanced GPS Transmitter", "", "&8\u21E8 &e\u26A1 &764 J Buffer", "&8\u21E8 &e\u26A1 &76 J/s"); - GPS_TRANSMITTER_3 = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjBjOWMxYTAyMmY0MGI3M2YxNGI0Y2JhMzdjNzE4YzZhNTMzZjNhMjg2NGI2NTM2ZDVmNDU2OTM0Y2MxZiJ9fX0="), "&4Carbonado GPS Transmitter", "", "&8\u21E8 &e\u26A1 &7256 J Buffer", "&8\u21E8 &e\u26A1 &722 J/s"); - GPS_TRANSMITTER_4 = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjBjOWMxYTAyMmY0MGI3M2YxNGI0Y2JhMzdjNzE4YzZhNTMzZjNhMjg2NGI2NTM2ZDVmNDU2OTM0Y2MxZiJ9fX0="), "&eEnergized GPS Transmitter", "", "&8\u21E8 &e\u26A1 &71024 J Buffer", "&8\u21E8 &e\u26A1 &792 J/s"); - - GPS_CONTROL_PANEL = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZGRjZmJhNThmYWYxZjY0ODQ3ODg0MTExODIyYjY0YWZhMjFkN2ZjNjJkNDQ4MWYxNGYzZjNiY2I2MzMwIn19fQ=="), "&bGPS Control Panel", "", "&rAllows you to trach your Satellites", "&rand manage your Waypoints"); - GPS_EMERGENCY_TRANSMITTER = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjBjOWMxYTAyMmY0MGI3M2YxNGI0Y2JhMzdjNzE4YzZhNTMzZjNhMjg2NGI2NTM2ZDVmNDU2OTM0Y2MxZiJ9fX0="), "&cGPS Emergency Transmitter", "", "&rCarrying this in your Inventory", "&rautomatically sets a Waypoint", "&rat your Location when you die."); - - GPS_GEO_SCANNER = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMmFkOGNmZWIzODdhNTZlM2U1YmNmODUzNDVkNmE0MTdiMjQyMjkzODg3ZGIzY2UzYmE5MWZhNDA5YjI1NGI4NiJ9fX0="), "&bGPS Geo-Scanner", "", "&rScans a Chunk for natural Resources", "&rsuch as &8Oil"); - OIL_PUMP = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYWZlMWEwNDBhNDI1ZTMxYTQ2ZDRmOWE5Yjk4MDZmYTJmMGM0N2VlODQ3MTFjYzE5MzJmZDhhYjMyYjJkMDM4In19fQ=="), "&rOil Pump", "", "&7Pumps up Oil and fills it into Buckets", "", "&c&l! &cMake sure to Geo-Scan the Chunk first"); - BUCKET_OF_OIL = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNmNlMDRiNDFkMTllYzc5MjdmOTgyYTYzYTk0YTNkNzlmNzhlY2VjMzMzNjMwNTFmZGUwODMxYmZhYmRiZCJ9fX0="), "&rBucket of Oil"); - BUCKET_OF_FUEL = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYTg0ZGRjYTc2NjcyNWI4Yjk3NDEzZjI1OWMzZjc2NjgwNzBmNmFlNTU0ODNhOTBjOGU1NTI1Mzk0ZjljMDk5In19fQ=="), "&rBucket of Fuel"); - - NETHER_ICE = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvM2NlMmRhZDliYWY3ZWFiYTdlODBkNGQwZjlmYWMwYWFiMDFhNzZiMTJmYjcxYzNkMmFmMmExNmZkZDRjNzM4MyJ9fX0="), "&eNether Ice", "", "&eRadiation Level: MODERATE", "&4&oHazmat Suit required"); - ENRICHED_NETHER_ICE = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvN2M4MThhYTEzYWFiYzcyOTQ4MzhkMjFjYWFjMDU3ZTk3YmQ4Yzg5NjQxYTBjMGY4YTU1NDQyZmY0ZTI3In19fQ=="), "&eEnriched Nether Ice", "", "&2Radiation Level: EXTREMELY HIGH", "&4&oHazmat Suit required"); - - LAVA_CRYSTAL = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYTNhZDhlZTg0OWVkZjA0ZWQ5YTI2Y2EzMzQxZjYwMzNiZDc2ZGNjNDIzMWVkMWVhNjNiNzU2NTc1MWIyN2FjIn19fQ=="), "&4Lava Crystal"); - ANDROID_MEMORY_CORE = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZDc4ZjJiN2U1ZTc1NjM5ZWE3ZmI3OTZjMzVkMzY0YzRkZjI4YjQyNDNlNjZiNzYyNzdhYWRjZDYyNjEzMzcifX19"), "&bAndroid Memory Core"); - - CARBON = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOGIzYTA5NWI2YjgxZTZiOTg1M2ExOTMyNGVlZGYwYmI5MzQ5NDE3MjU4ZGQxNzNiOGVmZjg3YTA4N2FhIn19fQ=="), "&eCarbon"); - COMPRESSED_CARBON = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMzIxZDQ5NTE2NTc0OGQzMTE2Zjk5ZDZiNWJkNWQ0MmViOGJhNTkyYmNkZmFkMzdmZDk1ZjliNmMwNGEzYiJ9fX0="), "&cCompressed Carbon"); - CARBON_CHUNK = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMzIxZDQ5NTE2NTc0OGQzMTE2Zjk5ZDZiNWJkNWQ0MmViOGJhNTkyYmNkZmFkMzdmZDk1ZjliNmMwNGEzYiJ9fX0="), "&4Carbon Chunk"); - - SYNTHETIC_SAPPHIRE = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZTM1MDMyZjRkN2QwMWRlOGVjOTlkODlmODcyMzAxMmQ0ZTc0ZmE3MzAyMmM0ZmFjZjFiNTdjN2ZmNmZmMCJ9fX0="), "&bSynthetic Sapphire"); - CARBONADO = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMTJmNGIxNTc3ZjUxNjBjNjg5MzE3MjU3MWM0YTcxZDhiMzIxY2RjZWFhMDMyYzZlMGUzYjYwZTBiMzI4ZmEifX19"), "&b&lCarbonado", "", "&7&o\"Black Diamond\""); - RAW_CARBONADO = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZWI0OWU2ZWMxMDc3MWU4OTkyMjVhZWE3M2NkOGNmMDM2ODRmNDExZDE0MTVjNzMyM2M5M2NiOTQ3NjIzMCJ9fX0="), "&bRaw Carbonado"); - - ENERGY_REGULATOR = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZDc4ZjJiN2U1ZTc1NjM5ZWE3ZmI3OTZjMzVkMzY0YzRkZjI4YjQyNDNlNjZiNzYyNzdhYWRjZDYyNjEzMzcifX19"), "&6Energy Regulator", "", "&rCore Component of an Energy Network"); - - CARGO_MANAGER = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZTUxMGJjODUzNjJhMTMwYTZmZjlkOTFmZjExZDZmYTQ2ZDdkMTkxMmEzNDMxZjc1MTU1OGVmM2M0ZDljMiJ9fX0="), "&6Cargo Manager", "", "&rCore Component of an Item Transport Network"); - CARGO_NODE = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMDdiN2VmNmZkNzg2NDg2NWMzMWMxZGM4N2JlZDI0YWI1OTczNTc5ZjVjNjYzOGZlY2I4ZGVkZWI0NDNmZjAifX19"), "&7Cargo Node &c(Connector)", "", "&rCargo Connector Pipe"); - CARGO_INPUT = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMTZkMWMxYTY5YTNkZTlmZWM5NjJhNzdiZjNiMmUzNzZkZDI1Yzg3M2EzZDhmMTRmMWRkMzQ1ZGFlNGM0In19fQ=="), "&7Cargo Node &c(Input)", "", "&rCargo Input Pipe"); - CARGO_OUTPUT = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNTViMjFmZDQ4MGMxYzQzYmYzYjlmODQyYzg2OWJkYzNiYzVhY2MyNTk5YmYyZWI2YjhhMWM5NWRjZTk3OGYifX19"), "&7Cargo Node &c(Output)", "", "&rCargo Output Pipe"); - CARGO_OUTPUT_ADVANCED = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNTViMjFmZDQ4MGMxYzQzYmYzYjlmODQyYzg2OWJkYzNiYzVhY2MyNTk5YmYyZWI2YjhhMWM5NWRjZTk3OGYifX19"), "&6Advanced Cargo Node &c(Output)", "", "&rCargo Output Pipe"); - - XP_COLLECTOR = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMTc2MmExNWIwNDY5MmEyZTRiM2ZiMzY2M2JkNGI3ODQzNGRjZTE3MzJiOGViMWM3YTlmN2MwZmJmNmYifX19"), "&aEXP Collector", "", "&rCollects nearby Exp and stores it", "", "&4End-Game Machine", "&8\u21E8 &e\u26A1 &71024 J Buffer", "&8\u21E8 &e\u26A1 &720 J/s"); - - ORGANIC_FOOD = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjQzOWUzZjVhY2JlZTliZTRjNDI1OTI4OWQ2ZDlmMzVjNjM1ZmZhNjYxMTE0Njg3YjNlYTZkZGE4Yzc5In19fQ=="), "&aOrganic Food", "&7Content: &9X"); - WHEAT_ORGANIC_FOOD = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjQzOWUzZjVhY2JlZTliZTRjNDI1OTI4OWQ2ZDlmMzVjNjM1ZmZhNjYxMTE0Njg3YjNlYTZkZGE4Yzc5In19fQ=="), "&aOrganic Food", "&7Content: &9Wheat"); - CARROT_ORGANIC_FOOD = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjQzOWUzZjVhY2JlZTliZTRjNDI1OTI4OWQ2ZDlmMzVjNjM1ZmZhNjYxMTE0Njg3YjNlYTZkZGE4Yzc5In19fQ=="), "&aOrganic Food", "&7Content: &9Carrots"); - POTATO_ORGANIC_FOOD = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjQzOWUzZjVhY2JlZTliZTRjNDI1OTI4OWQ2ZDlmMzVjNjM1ZmZhNjYxMTE0Njg3YjNlYTZkZGE4Yzc5In19fQ=="), "&aOrganic Food", "&7Content: &9Potatoes"); - SEEDS_ORGANIC_FOOD = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjQzOWUzZjVhY2JlZTliZTRjNDI1OTI4OWQ2ZDlmMzVjNjM1ZmZhNjYxMTE0Njg3YjNlYTZkZGE4Yzc5In19fQ=="), "&aOrganic Food", "&7Content: &9Seeds"); - BEETROOT_ORGANIC_FOOD = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjQzOWUzZjVhY2JlZTliZTRjNDI1OTI4OWQ2ZDlmMzVjNjM1ZmZhNjYxMTE0Njg3YjNlYTZkZGE4Yzc5In19fQ=="), "&aOrganic Food", "&7Content: &9Beetroot"); - MELON_ORGANIC_FOOD = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjQzOWUzZjVhY2JlZTliZTRjNDI1OTI4OWQ2ZDlmMzVjNjM1ZmZhNjYxMTE0Njg3YjNlYTZkZGE4Yzc5In19fQ=="), "&aOrganic Food", "&7Content: &9Melon"); - APPLE_ORGANIC_FOOD = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjQzOWUzZjVhY2JlZTliZTRjNDI1OTI4OWQ2ZDlmMzVjNjM1ZmZhNjYxMTE0Njg3YjNlYTZkZGE4Yzc5In19fQ=="), "&aOrganic Food", "&7Content: &9Apple"); - - FERTILIZER = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjQzOWUzZjVhY2JlZTliZTRjNDI1OTI4OWQ2ZDlmMzVjNjM1ZmZhNjYxMTE0Njg3YjNlYTZkZGE4Yzc5In19fQ=="), "&aOrganic Fertilizer", "&7Content: &9X"); - WHEAT_FERTILIZER = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjQzOWUzZjVhY2JlZTliZTRjNDI1OTI4OWQ2ZDlmMzVjNjM1ZmZhNjYxMTE0Njg3YjNlYTZkZGE4Yzc5In19fQ=="), "&aOrganic Fertilizer", "&7Content: &9Wheat"); - CARROT_FERTILIZER = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjQzOWUzZjVhY2JlZTliZTRjNDI1OTI4OWQ2ZDlmMzVjNjM1ZmZhNjYxMTE0Njg3YjNlYTZkZGE4Yzc5In19fQ=="), "&aOrganic Fertilizer", "&7Content: &9Carrots"); - POTATO_FERTILIZER = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjQzOWUzZjVhY2JlZTliZTRjNDI1OTI4OWQ2ZDlmMzVjNjM1ZmZhNjYxMTE0Njg3YjNlYTZkZGE4Yzc5In19fQ=="), "&aOrganic Fertilizer", "&7Content: &9Potatoes"); - SEEDS_FERTILIZER = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjQzOWUzZjVhY2JlZTliZTRjNDI1OTI4OWQ2ZDlmMzVjNjM1ZmZhNjYxMTE0Njg3YjNlYTZkZGE4Yzc5In19fQ=="), "&aOrganic Fertilizer", "&7Content: &9Seeds"); - BEETROOT_FERTILIZER = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjQzOWUzZjVhY2JlZTliZTRjNDI1OTI4OWQ2ZDlmMzVjNjM1ZmZhNjYxMTE0Njg3YjNlYTZkZGE4Yzc5In19fQ=="), "&aOrganic Fertilizer", "&7Content: &9Beetroot"); - MELON_FERTILIZER = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjQzOWUzZjVhY2JlZTliZTRjNDI1OTI4OWQ2ZDlmMzVjNjM1ZmZhNjYxMTE0Njg3YjNlYTZkZGE4Yzc5In19fQ=="), "&aOrganic Fertilizer", "&7Content: &9Melon"); - APPLE_FERTILIZER = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjQzOWUzZjVhY2JlZTliZTRjNDI1OTI4OWQ2ZDlmMzVjNjM1ZmZhNjYxMTE0Njg3YjNlYTZkZGE4Yzc5In19fQ=="), "&aOrganic Fertilizer", "&7Content: &9Apple"); - - NETHER_ICE_COOLANT_CELL = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOGQzY2Q0MTI1NTVmODk3MDE2MjEzZTVkNmM3NDMxYjQ0OGI5ZTU2NDRlMWIxOWVjNTFiNTMxNmYzNTg0MGUwIn19fQ=="), "&6Nether Ice Coolant Cell"); - REACTOR_COOLANT_CELL = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZGU0MDczYmU0MGNiM2RlYjMxMGEwYmU5NTliNGNhYzY4ZTgyNTM3MjcyOGZhZmI2YzI5NzNlNGU3YzMzIn19fQ=="), "&bReactor Coolant Cell"); - - CHEST_TERMINAL = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvN2E0NGZmM2E1ZjQ5YzY5Y2FiNjc2YmFkOGQ5OGEwNjNmYTc4Y2ZhNjE5MTZmZGVmM2UyNjc1NTdmZWMxODI4MyJ9fX0="), "&3CT Access Terminal", "&7If this Block is connected to a", "&7Cargo Network, it will allow you to remotely", "&7interact with any Items supplied by", "&7Nodes tuned into the ChestTerminal Channel"); - CT_IMPORT_BUS = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMTEzZGIyZTdlNzJlYTQ0MzJlZWZiZDZlNThhODVlYWEyNDIzZjgzZTY0MmNhNDFhYmM2YTkzMTc3NTdiODg5In19fQ=="), "&3CT Import Bus", "&7If this Block is connected to a", "&7Cargo Network, it will pull any Items from", "&7the Inventory it is attached to and place it", "&7into the CT Network Channel"); - CT_EXPORT_BUS = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMTEzZGIyZTdlNzJlYTQ0MzJlZWZiZDZlNThhODVlYWEyNDIzZjgzZTY0MmNhNDFhYmM2YTkzMTc3NTdiODg5In19fQ=="), "&3CT Export Bus", "&7If this Block is connected to a", "&7Cargo Network, it will pull any Items from", "&7the CT Network Channel and place these", "&7into the Inventory it is attached to"); - - BATTERY = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNmUyZGRhNmVmNjE4NWQ0ZGQ2ZWE4Njg0ZTk3ZDM5YmE4YWIwMzdlMjVmNzVjZGVhNmJkMjlkZjhlYjM0ZWUifX19"), "&6Battery"); - - HEATING_COIL = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvN2UzYmM0ODkzYmE0MWEzZjczZWUyODE3NGNkZjRmZWY2YjE0NWU0MWZlNmM4MmNiN2JlOGQ4ZTk3NzFhNSJ9fX0="), "&cHeating Coil"); - COOLING_UNIT = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNzU0YmFkODZjOTlkZjc4MGM4ODlhMTA5OGY3NzY0OGVhZDczODVjYzFkZGIwOTNkYTVhN2Q4YzRjMmFlNTRkIn19fQ=="), "&bCooling Unit"); - POWER_CRYSTAL = new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNTNjMWIwMzZiNmUwMzUxN2IyODVhODExYmQ4NWU3M2Y1YWJmZGFjYzFkZGY5MGRmZjk2MmUxODA5MzRlMyJ9fX0="), "&c&lPower Crystal"); - } catch (Exception e) { - e.printStackTrace(); + return new ItemStack(Material.PLAYER_HEAD); } } From ee30e8b73d2a94f9e2a9f6abc8f8dd4946827c22 Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Thu, 29 Aug 2019 13:59:33 +0200 Subject: [PATCH 027/169] Fixed StackOverflow --- src/me/mrCookieSlime/Slimefun/Lists/Categories.java | 3 ++- src/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/Lists/Categories.java b/src/me/mrCookieSlime/Slimefun/Lists/Categories.java index 3f770f8ee..7f1e444f5 100644 --- a/src/me/mrCookieSlime/Slimefun/Lists/Categories.java +++ b/src/me/mrCookieSlime/Slimefun/Lists/Categories.java @@ -6,6 +6,7 @@ import org.bukkit.inventory.ItemStack; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomArmor; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; +import me.mrCookieSlime.CSCoreLibPlugin.general.World.CustomSkull; import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.LockedCategory; import me.mrCookieSlime.Slimefun.Objects.SeasonCategory; @@ -46,7 +47,7 @@ public final class Categories { private static ItemStack getSkull(String texture) { try { - return getSkull(texture); + return CustomSkull.getItem(texture); } catch(Exception x) { x.printStackTrace(); diff --git a/src/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java b/src/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java index 654550a32..5bb6ebb79 100644 --- a/src/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java +++ b/src/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java @@ -14,6 +14,7 @@ import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomArmor; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomPotion; import me.mrCookieSlime.CSCoreLibPlugin.general.String.Christmas; +import me.mrCookieSlime.CSCoreLibPlugin.general.World.CustomSkull; public final class SlimefunItems { @@ -661,7 +662,7 @@ public final class SlimefunItems { private static ItemStack getSkull(String texture) { try { - return getSkull(texture); + return CustomSkull.getItem(texture); } catch(Exception x) { x.printStackTrace(); From 388873d6a22c206d093d1de97a562c6c02bf8cf7 Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Thu, 29 Aug 2019 15:13:40 +0200 Subject: [PATCH 028/169] Reduced technical debt --- .../Slimefun/Lists/SlimefunItems.java | 8 +- .../Slimefun/Objects/Research.java | 9 +- .../SlimefunItem/SlimefunBackpack.java | 6 +- .../Objects/SlimefunItem/SlimefunItem.java | 2 +- .../Objects/SlimefunItem/SlimefunMachine.java | 1 + .../SlimefunItem/abstractItems/AReactor.java | 4 +- .../machines/EnhancedCraftingTable.java | 2 +- .../SlimefunItem/machines/MagicWorkbench.java | 2 +- .../SlimefunItem/machines/Smeltery.java | 3 +- .../machines/WitherAssembler.java | 4 +- .../Objects/handlers/BlockTicker.java | 6 +- .../Slimefun/Objects/tasks/RainbowTicker.java | 6 +- .../Slimefun/Setup/SlimefunSetup.java | 2 +- .../Slimefun/SlimefunStartup.java | 18 ++-- .../androids/ProgrammableAndroid.java | 4 +- .../Slimefun/api/PlayerProfile.java | 8 +- .../Slimefun/api/TickerTask.java | 83 ++++++++++--------- .../api/item_transport/CargoManager.java | 10 +-- .../listeners/AncientAltarListener.java | 12 +-- .../listeners/AndroidKillingListener.java | 10 +-- .../Slimefun/listeners/DamageListener.java | 16 ++-- .../Slimefun/listeners/ToolListener.java | 4 +- .../Slimefun/utils/Settings.java | 6 ++ 23 files changed, 119 insertions(+), 107 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java b/src/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java index 5bb6ebb79..312e8331b 100644 --- a/src/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java +++ b/src/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java @@ -589,7 +589,7 @@ public final class SlimefunItems { public static final ItemStack CARGO_OUTPUT = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNTViMjFmZDQ4MGMxYzQzYmYzYjlmODQyYzg2OWJkYzNiYzVhY2MyNTk5YmYyZWI2YjhhMWM5NWRjZTk3OGYifX19"), "&7Cargo Node &c(Output)", "", "&rCargo Output Pipe"); public static final ItemStack CARGO_OUTPUT_ADVANCED = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNTViMjFmZDQ4MGMxYzQzYmYzYjlmODQyYzg2OWJkYzNiYzVhY2MyNTk5YmYyZWI2YjhhMWM5NWRjZTk3OGYifX19"), "&6Advanced Cargo Node &c(Output)", "", "&rCargo Output Pipe"); - public static final ItemStack AUTO_BREEDER = new CustomItem(Material.HAY_BLOCK, "&eAuto-Breeder", "", "&rRuns on &aOrganic Food", "", "&4End-Game Machine", "&8\u21E8 &e\u26A1 &71024 J Buffer", "&8\u21E8 &e\u26A1 &760 J/Animal");; + public static final ItemStack AUTO_BREEDER = new CustomItem(Material.HAY_BLOCK, "&eAuto-Breeder", "", "&rRuns on &aOrganic Food", "", "&4End-Game Machine", "&8\u21E8 &e\u26A1 &71024 J Buffer", "&8\u21E8 &e\u26A1 &760 J/Animal"); public static final ItemStack ORGANIC_FOOD = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjQzOWUzZjVhY2JlZTliZTRjNDI1OTI4OWQ2ZDlmMzVjNjM1ZmZhNjYxMTE0Njg3YjNlYTZkZGE4Yzc5In19fQ=="), "&aOrganic Food", "&7Content: &9X"); public static final ItemStack WHEAT_ORGANIC_FOOD = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjQzOWUzZjVhY2JlZTliZTRjNDI1OTI4OWQ2ZDlmMzVjNjM1ZmZhNjYxMTE0Njg3YjNlYTZkZGE4Yzc5In19fQ=="), "&aOrganic Food", "&7Content: &9Wheat"); @@ -609,7 +609,7 @@ public final class SlimefunItems { public static final ItemStack MELON_FERTILIZER = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjQzOWUzZjVhY2JlZTliZTRjNDI1OTI4OWQ2ZDlmMzVjNjM1ZmZhNjYxMTE0Njg3YjNlYTZkZGE4Yzc5In19fQ=="), "&aOrganic Fertilizer", "&7Content: &9Melon"); public static final ItemStack APPLE_FERTILIZER = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjQzOWUzZjVhY2JlZTliZTRjNDI1OTI4OWQ2ZDlmMzVjNjM1ZmZhNjYxMTE0Njg3YjNlYTZkZGE4Yzc5In19fQ=="), "&aOrganic Fertilizer", "&7Content: &9Apple"); - public static final ItemStack ANIMAL_GROWTH_ACCELERATOR = new CustomItem(Material.HAY_BLOCK, "&bAnimal Growth Accelerator", "", "&rRuns on &aOrganic Food", "", "&4End-Game Machine", "&8\u21E8 &e\u26A1 &71024 J Buffer", "&8\u21E8 &e\u26A1 &728 J/s");; + public static final ItemStack ANIMAL_GROWTH_ACCELERATOR = new CustomItem(Material.HAY_BLOCK, "&bAnimal Growth Accelerator", "", "&rRuns on &aOrganic Food", "", "&4End-Game Machine", "&8\u21E8 &e\u26A1 &71024 J Buffer", "&8\u21E8 &e\u26A1 &728 J/s"); public static final ItemStack CROP_GROWTH_ACCELERATOR = new CustomItem(Material.LIME_TERRACOTTA, "&aCrop Growth Accelerator", "", "&rRuns on &aOrganic Fertilizer", "", "&4End-Game Machine", "&8\u21E8 &7Radius: 7x7", "&8\u21E8 &7Speed: &a3/time", "&8\u21E8 &e\u26A1 &71024 J Buffer", "&8\u21E8 &e\u26A1 &750 J/s"); public static final ItemStack CROP_GROWTH_ACCELERATOR_2 = new CustomItem(Material.LIME_TERRACOTTA, "&aCrop Growth Accelerator &7(&eII&7)", "", "&rRuns on &aOrganic Fertilizer", "", "&4End-Game Machine", "&8\u21E8 &7Radius: 9x9", "&8\u21E8 &7Speed: &a4/time", "&8\u21E8 &e\u26A1 &71024 J Buffer", "&8\u21E8 &e\u26A1 &760 J/s"); @@ -626,8 +626,8 @@ public final class SlimefunItems { public static final ItemStack NETHERSTAR_REACTOR = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTM0M2NlNThkYTU0Yzc5OTI0YTJjOTMzMWNmYzQxN2ZlOGNjYmJlYTliZTQ1YTdhYzg1ODYwYTZjNzMwIn19fQ=="), "&fNether Star Reactor", "", "&fRuns on Nether Stars", "&8\u21E8 &bMust be surrounded by Water", "&8\u21E8 &bMust be supplied with Nether Ice Coolant Cells", "", "&4End-Game Generator", "&8\u21E8 &e\u26A1 &732768 J Buffer", "&8\u21E8 &e\u26A1 &71024 J/s", "&8\u21E8 &4Causes nearby Entities to get Withered"); public static final ItemStack REACTOR_ACCESS_PORT = new CustomItem(Material.CYAN_TERRACOTTA, "&2Reactor Access Port", "", "&rAllows you to interact with a Reactor", "&rvia Cargo Nodes, can also be used", "&ras a Buffer", "", "&8\u21E8 &eMust be placed &a3 Blocks &eabove the Reactor"); - public static final ItemStack FREEZER = new CustomItem(Material.LIGHT_BLUE_STAINED_GLASS, "&bFreezer", "", "&6Advanced Machine", "&8\u21E8 &7Speed: 1x", "&8\u21E8 &e\u26A1 &7256 J Buffer", "&8\u21E8 &e\u26A1 &718 J/s");; - public static final ItemStack FREEZER_2 = new CustomItem(Material.LIGHT_BLUE_STAINED_GLASS, "&bFreezer &7(&eII&7)", "", "&4End-Game Machine", "&8\u21E8 &7Speed: 2x", "&8\u21E8 &e\u26A1 &7256 J Buffer", "&8\u21E8 &e\u26A1 &730 J/s");; + public static final ItemStack FREEZER = new CustomItem(Material.LIGHT_BLUE_STAINED_GLASS, "&bFreezer", "", "&6Advanced Machine", "&8\u21E8 &7Speed: 1x", "&8\u21E8 &e\u26A1 &7256 J Buffer", "&8\u21E8 &e\u26A1 &718 J/s"); + public static final ItemStack FREEZER_2 = new CustomItem(Material.LIGHT_BLUE_STAINED_GLASS, "&bFreezer &7(&eII&7)", "", "&4End-Game Machine", "&8\u21E8 &7Speed: 2x", "&8\u21E8 &e\u26A1 &7256 J Buffer", "&8\u21E8 &e\u26A1 &730 J/s"); public static final ItemStack ELECTRIC_GOLD_PAN = new CustomItem(Material.BROWN_TERRACOTTA, "&6Electric Gold Pan", "", "&eBasic Machine", "&8\u21E8 &7Speed: 1x", "&8\u21E8 &e\u26A1 &72 J/s"); public static final ItemStack ELECTRIC_GOLD_PAN_2 = new CustomItem(Material.BROWN_TERRACOTTA, "&6Electric Gold Pan &7(&eII&7)", "", "&eBasic Machine", "&8\u21E8 &7Speed: 3x", "&8\u21E8 &e\u26A1 &74 J/s"); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/Research.java b/src/me/mrCookieSlime/Slimefun/Objects/Research.java index 23e088209..c832015d7 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/Research.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/Research.java @@ -46,11 +46,6 @@ public class Research { * @see ResearchSetup */ public static List list = new LinkedList<>(); - - /** - * Contains all Research Titles - */ - public static List titles; private int id; private String name; @@ -378,9 +373,7 @@ public class Research { */ @Deprecated public static String getTitle(Player p, Collection researched) { - int index = Math.round(Float.valueOf(String.valueOf(Math.round(((researched.size() * 100.0F) / list().size()) * 100.0F) / 100.0F)) / 100.0F) * titles.size(); - if (index > 0) index--; - return titles.get(index); + return PlayerProfile.fromUUID(p.getUniqueId()).getTitle(); } /** diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunBackpack.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunBackpack.java index 787845be8..17502c1a7 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunBackpack.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunBackpack.java @@ -7,12 +7,16 @@ import me.mrCookieSlime.Slimefun.Objects.Category; public class SlimefunBackpack extends SlimefunItem { - public int size; + private int size; public SlimefunBackpack(int size, Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe) { super(category, item, id, recipeType, recipe); this.size = size; } + + public int getSize() { + return size; + } } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java index e8db4aad8..83caf7bae 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java @@ -73,7 +73,7 @@ public class SlimefunItem { * * @since 4.1.10 */ - public enum State { + public static enum State { /** * This SlimefunItem is enabled. */ diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunMachine.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunMachine.java index 62a388806..efe4a8a5b 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunMachine.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunMachine.java @@ -20,6 +20,7 @@ public class SlimefunMachine extends SlimefunItem { private List recipes; private List shownRecipes; private Material trigger; + //Adjacent blockfaces for iterative output chest checks private static final BlockFace[] outputFaces = { BlockFace.UP, diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AReactor.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AReactor.java index 53cb87baf..69ccdfe70 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AReactor.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AReactor.java @@ -399,9 +399,7 @@ public abstract class AReactor extends SlimefunItem { if (explosion) { BlockStorage.getInventory(l).close(); - Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> { - ReactorHologram.remove(l); - }, 0); + Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> ReactorHologram.remove(l), 0); explode.remove(l); processing.remove(l); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/EnhancedCraftingTable.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/EnhancedCraftingTable.java index 0917b46a5..c653456d4 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/EnhancedCraftingTable.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/EnhancedCraftingTable.java @@ -103,7 +103,7 @@ public class EnhancedCraftingTable extends SlimefunMachine { } } String id = ""; - int size = ((SlimefunBackpack) sfItem).size; + int size = ((SlimefunBackpack) sfItem).getSize(); if (backpack != null) { for (String line: backpack.getItemMeta().getLore()) { diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/MagicWorkbench.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/MagicWorkbench.java index 8efcac737..d65086bd2 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/MagicWorkbench.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/MagicWorkbench.java @@ -109,7 +109,7 @@ public class MagicWorkbench extends SlimefunMachine { } String id = ""; - int size = ((SlimefunBackpack) sfItem).size; + int size = ((SlimefunBackpack) sfItem).getSize(); if (backpack != null) { for (String line: backpack.getItemMeta().getLore()) { diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/Smeltery.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/Smeltery.java index 17d478e72..15f51ad01 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/Smeltery.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/Smeltery.java @@ -1,6 +1,7 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines; import java.util.List; +import java.util.Random; import org.bukkit.Effect; import org.bukkit.Material; @@ -84,7 +85,7 @@ public class Smeltery extends SlimefunMachine { Hopper chamber = findHopper(dispBlock, BlockFace.NORTH, BlockFace.EAST, BlockFace.SOUTH, BlockFace.WEST); - if (SlimefunStartup.chance(100, (Integer) Slimefun.getItemValue("SMELTERY", "chance.fireBreak"))) { + if (new Random().nextInt(100) < SlimefunStartup.instance.getSettings().SMELTERY_FIRE_BREAK_CHANCE) { if (chamber != null) { if (chamber.getInventory().contains(Material.FLINT_AND_STEEL)) { ItemStack item = chamber.getInventory().getItem(chamber.getInventory().first(Material.FLINT_AND_STEEL)); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/WitherAssembler.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/WitherAssembler.java index 4dbb9d338..c6400a13d 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/WitherAssembler.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/WitherAssembler.java @@ -245,9 +245,7 @@ public class WitherAssembler extends SlimefunItem { final double offset = Double.parseDouble(BlockStorage.getLocationInfo(b.getLocation(), "offset")); - Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> { - b.getWorld().spawnEntity(new Location(b.getWorld(), b.getX() + 0.5D, b.getY() + offset, b.getZ() + 0.5D), EntityType.WITHER); - }); + Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> b.getWorld().spawnEntity(new Location(b.getWorld(), b.getX() + 0.5D, b.getY() + offset, b.getZ() + 0.5D), EntityType.WITHER)); return; } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/handlers/BlockTicker.java b/src/me/mrCookieSlime/Slimefun/Objects/handlers/BlockTicker.java index da3732d5e..dbc6e2f81 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/handlers/BlockTicker.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/handlers/BlockTicker.java @@ -7,7 +7,7 @@ import org.bukkit.block.Block; public abstract class BlockTicker implements ItemHandler { - public boolean unique = true; + protected boolean unique = true; public void update() { if (unique) { @@ -25,5 +25,9 @@ public abstract class BlockTicker implements ItemHandler { public String toCodename() { return "BlockTicker"; } + + public void startNewTick() { + unique = true; + } } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/tasks/RainbowTicker.java b/src/me/mrCookieSlime/Slimefun/Objects/tasks/RainbowTicker.java index 01d25b2c6..cab0bf760 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/tasks/RainbowTicker.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/tasks/RainbowTicker.java @@ -10,9 +10,9 @@ import org.bukkit.block.data.Waterlogged; public class RainbowTicker extends BlockTicker { - public int meta; - public int index; - public int[] queue; + private int meta; + private int index; + private int[] queue; public RainbowTicker() { this(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15); diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java index c448fa270..42c4fff78 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java @@ -2461,7 +2461,7 @@ public final class SlimefunSetup { else if (SlimefunManager.isItemSimiliar(item, SlimefunItems.TOME_OF_KNOWLEDGE_SHARING, false)) { PlayerProfile profile = PlayerProfile.fromUUID(p.getUniqueId()); Set researches = PlayerProfile.fromUUID(UUID.fromString(ChatColor.stripColor(item.getItemMeta().getLore().get(1)))).getResearches(); - researches.forEach((research) -> profile.setResearched(research, true)); + researches.forEach(research -> profile.setResearched(research, true)); PlayerInventory.consumeItemInHand(p); return true; diff --git a/src/me/mrCookieSlime/Slimefun/SlimefunStartup.java b/src/me/mrCookieSlime/Slimefun/SlimefunStartup.java index b17ffd27c..3517f397b 100644 --- a/src/me/mrCookieSlime/Slimefun/SlimefunStartup.java +++ b/src/me/mrCookieSlime/Slimefun/SlimefunStartup.java @@ -80,15 +80,15 @@ import me.mrCookieSlime.Slimefun.utils.Utilities; import net.coreprotect.CoreProtect; import net.coreprotect.CoreProtectAPI; -public class SlimefunStartup extends JavaPlugin { +public final class SlimefunStartup extends JavaPlugin { public static SlimefunStartup instance; - static PluginUtils utils; - static Config researches; - static Config items; - static Config whitelist; - static Config config; + private static PluginUtils utils; + private static Config researches; + private static Config items; + private static Config whitelist; + private static Config config; public static TickerTask ticker; @@ -166,6 +166,8 @@ public class SlimefunStartup extends JavaPlugin { Messages.setup(); settings = new Settings(config); + settings.RESEARCHES_ENABLED = getResearchCfg().getBoolean("enable-researching"); + settings.SMELTERY_FIRE_BREAK_CHANCE = (Integer) Slimefun.getItemValue("SMELTERY", "chance.fireBreak"); // Setting up bStats new Metrics(this); @@ -203,7 +205,6 @@ public class SlimefunStartup extends JavaPlugin { MiscSetup.loadDescriptions(); System.out.println("[Slimefun] Loading Researches..."); - settings.RESEARCHES_ENABLED = getResearchCfg().getBoolean("enable-researching"); ResearchSetup.setupResearches(); MiscSetup.setupMisc(); @@ -354,7 +355,6 @@ public class SlimefunStartup extends JavaPlugin { new PlaceholderAPIHook().register(); } - Research.titles = config.getStringList("research-ranks"); OreWasher.items = new ItemStack[] {SlimefunItems.IRON_DUST, SlimefunItems.GOLD_DUST, SlimefunItems.ALUMINUM_DUST, SlimefunItems.COPPER_DUST, SlimefunItems.ZINC_DUST, SlimefunItems.TIN_DUST, SlimefunItems.LEAD_DUST, SlimefunItems.SILVER_DUST, SlimefunItems.MAGNESIUM_DUST}; // Do not show /sf elevator command in our Log, it could get quite spammy @@ -372,7 +372,7 @@ public class SlimefunStartup extends JavaPlugin { ticker.run(); } - PlayerProfile.iterator().forEachRemaining((profile) -> { + PlayerProfile.iterator().forEachRemaining(profile -> { if (profile.isDirty()) profile.save(); }); diff --git a/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java b/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java index 3223523e9..84dbe0c21 100644 --- a/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java +++ b/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java @@ -1019,9 +1019,7 @@ public abstract class ProgrammableAndroid extends SlimefunItem { private void openScriptDownloader(final Player p, final Block b, final int page) throws Exception { final ChestMenu menu = new ChestMenu("Android Scripts"); - menu.addMenuOpeningHandler( - (pl) -> pl.playSound(pl.getLocation(), Sound.BLOCK_NOTE_BLOCK_HAT, 0.7F, 0.7F) - ); + menu.addMenuOpeningHandler(pl -> pl.playSound(pl.getLocation(), Sound.BLOCK_NOTE_BLOCK_HAT, 0.7F, 0.7F)); List scripts = getUploadedScripts(); diff --git a/src/me/mrCookieSlime/Slimefun/api/PlayerProfile.java b/src/me/mrCookieSlime/Slimefun/api/PlayerProfile.java index ee058a098..3680dd35d 100644 --- a/src/me/mrCookieSlime/Slimefun/api/PlayerProfile.java +++ b/src/me/mrCookieSlime/Slimefun/api/PlayerProfile.java @@ -4,6 +4,7 @@ import java.io.File; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; +import java.util.List; import java.util.Map; import java.util.Optional; import java.util.Set; @@ -14,6 +15,7 @@ import org.bukkit.ChatColor; import org.bukkit.inventory.ItemStack; import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config; +import me.mrCookieSlime.Slimefun.SlimefunStartup; import me.mrCookieSlime.Slimefun.Objects.Research; import me.mrCookieSlime.Slimefun.api.inventory.BackpackInventory; @@ -159,9 +161,11 @@ public final class PlayerProfile { } public String getTitle() { - int index = Math.round(Float.valueOf(String.valueOf(Math.round(((researches.size() * 100.0F) / Research.titles.size()))))); + List titles = SlimefunStartup.instance.getSettings().RESEARCHES_TITLES; + + int index = Math.round(Float.valueOf(String.valueOf(Math.round(((researches.size() * 100.0F) / titles.size()))))); if (index > 0) index--; - return Research.titles.get(index); + return titles.get(index); } public static PlayerProfile fromUUID(UUID uuid) { diff --git a/src/me/mrCookieSlime/Slimefun/api/TickerTask.java b/src/me/mrCookieSlime/Slimefun/api/TickerTask.java index 0d38bc131..4feaeac66 100644 --- a/src/me/mrCookieSlime/Slimefun/api/TickerTask.java +++ b/src/me/mrCookieSlime/Slimefun/api/TickerTask.java @@ -192,7 +192,7 @@ public class TickerTask implements Runnable { Iterator iterator = tickers.iterator(); while (iterator.hasNext()) { - iterator.next().unique = true; + iterator.next().startNewTick(); iterator.remove(); } @@ -219,41 +219,13 @@ public class TickerTask implements Runnable { tellraw.addText(" &7&oHover for more Info"); StringBuilder hover = new StringBuilder(); int hidden = 0; - for (String item: map_machine.keySet()) { - if (map_machinetime.get(item) > 0) hover.append("\n&c" + item + " - " + map_machine.get(item) + "x &7(" + map_machinetime.get(item) + "ms)"); + + for (Map.Entry entry: map_machine.entrySet()) { + long timings = map_machinetime.get(entry.getKey()); + if (timings > 0) hover.append("\n&c" + entry.getKey() + " - " + entry.getValue()+ "x &7(" + timings + "ms)"); else hidden++; } - hover.append("\n\n&c+ &4" + hidden + " Hidden"); - tellraw.addHoverEvent(HoverAction.SHOW_TEXT, hover.toString()); - try { - tellraw.send((Player) sender); - } catch (Exception e) { - e.printStackTrace(); - } - } - else { - int hidden = 0; - for (String item: map_machine.keySet()) { - if (map_machinetime.get(item) > 0) sender.sendMessage(ChatColor.translateAlternateColorCodes('&', " &e" + item + " - " + map_machine.get(item) + "x &7(" + map_machinetime.get(item) + "ms)")); - else hidden++; - } - sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&c+ &4" + hidden + " Hidden")); - } - - sender.sendMessage(""); - sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&6Ticking Chunks:")); - - if (sender instanceof Player) { - TellRawMessage tellraw = new TellRawMessage(); - tellraw.addText(" &7&oHover for more Info"); - StringBuilder hover = new StringBuilder(); - int hidden = 0; - for (String c: map_chunktime.keySet()) { - if (!skipped_chunks.contains(c)) { - if (map_chunktime.get(c) > 0) hover.append("\n&c" + c.replace("CraftChunk", "") + " - " + (map_chunk.containsKey(c) ? map_chunk.get(c): 0) + "x &7(" + map_chunktime.get(c) + "ms)"); - else hidden++; - } - } + hover.append("\n\n&c+ &4" + hidden + " Hidden"); tellraw.addHoverEvent(HoverAction.SHOW_TEXT, hover.toString()); @@ -265,9 +237,46 @@ public class TickerTask implements Runnable { } else { int hidden = 0; - for (String c: map_chunktime.keySet()) { - if (!skipped_chunks.contains(c)) { - if (map_chunktime.get(c) > 0) sender.sendMessage(" &c" + c.replace("CraftChunk", "") + " - " + (map_chunk.containsKey(c) ? map_chunk.get(c): 0) + "x &7(" + map_chunktime.get(c) + "ms)"); + + for (Map.Entry entry: map_machine.entrySet()) { + long timings = map_machinetime.get(entry.getKey()); + if (timings > 0) sender.sendMessage(ChatColor.translateAlternateColorCodes('&', " &e" + entry.getKey() + " - " + entry.getValue()+ "x &7(" + timings + "ms)")); + else hidden++; + } + + sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&c+ &4" + hidden + " Hidden")); + } + + sender.sendMessage(""); + sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&6Ticking Chunks:")); + + if (sender instanceof Player) { + TellRawMessage tellraw = new TellRawMessage(); + tellraw.addText(" &7&oHover for more Info"); + StringBuilder hover = new StringBuilder(); + int hidden = 0; + + for (Map.Entry entry: map_chunktime.entrySet()) { + if (!skipped_chunks.contains(entry.getKey())) { + if (entry.getValue() > 0) hover.append("\n&c" + entry.getKey().replace("CraftChunk", "") + " - " + (map_chunk.containsKey(entry.getKey()) ? map_chunk.get(entry.getKey()): 0) + "x &7(" + entry.getValue() + "ms)"); + else hidden++; + } + } + + hover.append("\n\n&c+ &4" + hidden + " Hidden"); + tellraw.addHoverEvent(HoverAction.SHOW_TEXT, hover.toString()); + + try { + tellraw.send((Player) sender); + } catch (Exception e) { + e.printStackTrace(); + } + } + else { + int hidden = 0; + for (Map.Entry entry: map_chunktime.entrySet()) { + if (!skipped_chunks.contains(entry.getKey())) { + if (entry.getValue() > 0) sender.sendMessage(" &c" + entry.getKey().replace("CraftChunk", "") + " - " + (map_chunk.containsKey(entry.getKey()) ? map_chunk.get(entry.getKey()): 0) + "x &7(" + entry.getValue() + "ms)"); else hidden++; } } diff --git a/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoManager.java b/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoManager.java index 5a67ee143..8a5a159d7 100644 --- a/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoManager.java +++ b/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoManager.java @@ -3,6 +3,11 @@ package me.mrCookieSlime.Slimefun.api.item_transport; import java.util.ArrayList; import java.util.List; +import org.bukkit.block.Block; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.InventoryHolder; +import org.bukkit.inventory.ItemStack; + import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; @@ -11,11 +16,6 @@ import me.mrCookieSlime.Slimefun.api.BlockStorage; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu; import me.mrCookieSlime.Slimefun.api.inventory.UniversalBlockMenu; -import org.bukkit.block.Block; -import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.InventoryHolder; -import org.bukkit.inventory.ItemStack; - public class CargoManager { public static ItemStack withdraw(Block node, BlockStorage storage, Block target, ItemStack template) { diff --git a/src/me/mrCookieSlime/Slimefun/listeners/AncientAltarListener.java b/src/me/mrCookieSlime/Slimefun/listeners/AncientAltarListener.java index 148afeb8b..fa6463fbf 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/AncientAltarListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/AncientAltarListener.java @@ -100,9 +100,7 @@ public class AncientAltarListener implements Listener { if (!altars.contains(e.getClickedBlock())) { altars.add(e.getClickedBlock()); if (pedestals.size() == 8) { - pedestals.forEach((pblock)->{ - utilities.altarinuse.add(pblock.getLocation()); - }); + pedestals.forEach(block -> utilities.altarinuse.add(block.getLocation())); if (catalyst != null && !catalyst.getType().equals(Material.AIR)) { List input = new ArrayList<>(); @@ -122,9 +120,7 @@ public class AncientAltarListener implements Listener { altars.remove(e.getClickedBlock()); Messages.local.sendTranslation(e.getPlayer(), "machines.ANCIENT_ALTAR.unknown-recipe", true); - pedestals.forEach((pblock)->{ - utilities.altarinuse.remove(pblock.getLocation()); - }); + pedestals.forEach(block -> utilities.altarinuse.remove(block.getLocation())); utilities.altarinuse.remove(b.getLocation()); // bad recipe, no longer in use. } @@ -133,9 +129,7 @@ public class AncientAltarListener implements Listener { altars.remove(e.getClickedBlock()); Messages.local.sendTranslation(e.getPlayer(), "machines.ANCIENT_ALTAR.unknown-catalyst", true); - pedestals.forEach((pblock)->{ - utilities.altarinuse.remove(pblock.getLocation()); - }); + pedestals.forEach(block -> utilities.altarinuse.remove(block.getLocation())); utilities.altarinuse.remove(b.getLocation()); // unkown catalyst, no longer in use } diff --git a/src/me/mrCookieSlime/Slimefun/listeners/AndroidKillingListener.java b/src/me/mrCookieSlime/Slimefun/listeners/AndroidKillingListener.java index 1e4e20638..77444e6dc 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/AndroidKillingListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/AndroidKillingListener.java @@ -32,6 +32,7 @@ public class AndroidKillingListener implements Listener { Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> { List items = new ArrayList<>(); + for (Entity n : e.getEntity().getNearbyEntities(0.5D, 0.5D, 0.5D)) { if (n instanceof Item && !n.hasMetadata("no_pickup")) { items.add(((Item) n).getItemStack()); @@ -40,18 +41,15 @@ public class AndroidKillingListener implements Listener { } switch (e.getEntityType()) { - case BLAZE: { + case BLAZE: items.add(new ItemStack(Material.BLAZE_ROD, 1 + CSCoreLib.randomizer().nextInt(2))); break; - } - case PIG_ZOMBIE: { + case PIG_ZOMBIE: items.add(new ItemStack(Material.GOLD_NUGGET, 1 + CSCoreLib.randomizer().nextInt(3))); break; - } - case WITHER_SKELETON: { + case WITHER_SKELETON: if (CSCoreLib.randomizer().nextInt(250) < 2) items.add(new ItemStack(Material.WITHER_SKELETON_SKULL)); break; - } default: break; } diff --git a/src/me/mrCookieSlime/Slimefun/listeners/DamageListener.java b/src/me/mrCookieSlime/Slimefun/listeners/DamageListener.java index 3421f9c07..f3e75a38a 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/DamageListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/DamageListener.java @@ -5,6 +5,7 @@ import java.util.ArrayList; import java.util.Date; import java.util.Iterator; import java.util.List; +import java.util.Random; import org.bukkit.Material; import org.bukkit.enchantments.Enchantment; @@ -40,6 +41,7 @@ public class DamageListener implements Listener { private SimpleDateFormat format = new SimpleDateFormat("(MMM d, yyyy @ hh:mm)"); private Utilities utilities; + private Random random = new Random(); public DamageListener(SlimefunStartup plugin) { plugin.getServer().getPluginManager().registerEvents(this, plugin); @@ -53,6 +55,7 @@ public class DamageListener implements Listener { if (p.getInventory().containsAtLeast(SlimefunItems.GPS_EMERGENCY_TRANSMITTER, 1)) { Slimefun.getGPSNetwork().addWaypoint(p, "&4Deathpoint &7" + format.format(new Date()), p.getLocation().getBlock().getLocation()); } + Iterator drops = e.getDrops().iterator(); while (drops.hasNext()) { ItemStack item = drops.next(); @@ -60,7 +63,8 @@ public class DamageListener implements Listener { if (SlimefunManager.isItemSimiliar(item, SlimefunItems.BOUND_BACKPACK, false)) { Soul.storeItem(e.getEntity().getUniqueId(), item); drops.remove(); - } else if (SlimefunItem.getByItem(removeEnchantments(item)) != null) { + } + else if (SlimefunItem.getByItem(removeEnchantments(item)) != null) { if (SlimefunItem.getByItem(removeEnchantments(item)) instanceof SoulboundItem) { Soul.storeItem(e.getEntity().getUniqueId(), item); drops.remove(); @@ -86,25 +90,25 @@ public class DamageListener implements Listener { if (Slimefun.hasUnlocked(p, item, true)) { if (SlimefunManager.isItemSimiliar(item, SlimefunItem.getItem("SWORD_OF_BEHEADING"), true)) { if (e.getEntity() instanceof Zombie) { - if (SlimefunStartup.chance(100, (Integer) Slimefun.getItemValue("SWORD_OF_BEHEADING", "chance.ZOMBIE"))) { + if (random.nextInt(100) < (Integer) Slimefun.getItemValue("SWORD_OF_BEHEADING", "chance.ZOMBIE")) { e.getDrops().add(new ItemStack(Material.ZOMBIE_HEAD)); } } else if (e.getEntity() instanceof WitherSkeleton) { - if (SlimefunStartup.chance(100, (Integer) Slimefun.getItemValue("SWORD_OF_BEHEADING", "chance.WITHER_SKELETON"))) + if (random.nextInt(100) < (Integer) Slimefun.getItemValue("SWORD_OF_BEHEADING", "chance.WITHER_SKELETON")) e.getDrops().add(new ItemStack(Material.WITHER_SKELETON_SKULL)); } else if (e.getEntity() instanceof Skeleton) { - if (SlimefunStartup.chance(100, (Integer) Slimefun.getItemValue("SWORD_OF_BEHEADING", "chance.SKELETON"))) + if (random.nextInt(100) < (Integer) Slimefun.getItemValue("SWORD_OF_BEHEADING", "chance.SKELETON")) e.getDrops().add(new ItemStack(Material.SKELETON_SKULL)); } else if (e.getEntity() instanceof Creeper) { - if (SlimefunStartup.chance(100, (Integer) Slimefun.getItemValue("SWORD_OF_BEHEADING", "chance.CREEPER"))) { + if (random.nextInt(100) < (Integer) Slimefun.getItemValue("SWORD_OF_BEHEADING", "chance.CREEPER")) { e.getDrops().add(new ItemStack(Material.CREEPER_HEAD)); } } else if (e.getEntity() instanceof Player) { - if (SlimefunStartup.chance(100, (Integer) Slimefun.getItemValue("SWORD_OF_BEHEADING", "chance.PLAYER"))) { + if (random.nextInt(100) < (Integer) Slimefun.getItemValue("SWORD_OF_BEHEADING", "chance.PLAYER")) { ItemStack skull = new ItemStack(Material.PLAYER_HEAD); ItemMeta meta = skull.getItemMeta(); ((SkullMeta) meta).setOwningPlayer((Player) e.getEntity()); diff --git a/src/me/mrCookieSlime/Slimefun/listeners/ToolListener.java b/src/me/mrCookieSlime/Slimefun/listeners/ToolListener.java index a6799ca32..706321d38 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/ToolListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/ToolListener.java @@ -52,8 +52,8 @@ public class ToolListener implements Listener { sensitiveMaterials.add(Material.STONE_PRESSURE_PLATE); sensitiveMaterials.add(Material.LIGHT_WEIGHTED_PRESSURE_PLATE); sensitiveMaterials.add(Material.HEAVY_WEIGHTED_PRESSURE_PLATE); - Tag.SAPLINGS.getValues().forEach((mat) -> sensitiveMaterials.add(mat)); - Tag.WOODEN_PRESSURE_PLATES.getValues().forEach((mat) -> sensitiveMaterials.add(mat)); + Tag.SAPLINGS.getValues().forEach(mat -> sensitiveMaterials.add(mat)); + Tag.WOODEN_PRESSURE_PLATES.getValues().forEach(mat -> sensitiveMaterials.add(mat)); } @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) diff --git a/src/me/mrCookieSlime/Slimefun/utils/Settings.java b/src/me/mrCookieSlime/Slimefun/utils/Settings.java index 51bab8818..76081b083 100644 --- a/src/me/mrCookieSlime/Slimefun/utils/Settings.java +++ b/src/me/mrCookieSlime/Slimefun/utils/Settings.java @@ -1,11 +1,14 @@ package me.mrCookieSlime.Slimefun.utils; +import java.util.List; + import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config; public final class Settings { public boolean RESEARCHES_ENABLED; public boolean RESEARCHES_FREE_IN_CREATIVE; + public List RESEARCHES_TITLES; public int BLOCK_LOADING_INFO_DELAY; public int BLOCK_AUTO_SAVE_DELAY; @@ -18,8 +21,11 @@ public final class Settings { public boolean ORE_GRINDER_LEGACY; public boolean ORE_WASHER_LEGACY; + public int SMELTERY_FIRE_BREAK_CHANCE; + public Settings(Config cfg) { RESEARCHES_FREE_IN_CREATIVE = cfg.getBoolean("options.allow-free-creative-research"); + RESEARCHES_TITLES = cfg.getStringList("research-ranks"); BLOCK_LOADING_INFO_DELAY = cfg.getInt("URID.info-delay"); BLOCK_AUTO_SAVE_DELAY = cfg.getInt("options.auto-save-delay-in-minutes"); From 8188c1986cb8f1fcedd37282e1e83b6f234ad37c Mon Sep 17 00:00:00 2001 From: ajan-12 <36973731+ajan-12@users.noreply.github.com> Date: Thu, 29 Aug 2019 16:53:08 +0300 Subject: [PATCH 029/169] Adding a new electric machine Auto Drier. - Made in Enhanced Crafting Table with 2 heating coils, 1 smoker and 1 campfire. - Dries items. - Removes the water from water bucket. - Removes the liquids in potions. - Produces sticks from leaves and saplings. - Dries wet sponges to sponges. - Produces leathers from rotten flesh --- .../Slimefun/Lists/SlimefunItems.java | 1 + .../Slimefun/Setup/ResearchSetup.java | 1 + .../Slimefun/Setup/SlimefunSetup.java | 39 +++---------------- 3 files changed, 7 insertions(+), 34 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java b/src/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java index 312e8331b..be516e224 100644 --- a/src/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java +++ b/src/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java @@ -493,6 +493,7 @@ public final class SlimefunItems { public static final ItemStack ELECTRIC_ORE_GRINDER = new CustomItem(Material.FURNACE, "&cElectric Ore Grinder", "","&rWorks as an Ore Crusher and Grind Stone", "", "&6Advanced Machine", "&8\u21E8 &7Speed: 1x", "&8\u21E8 &e\u26A1 &712 J/s"); public static final ItemStack ELECTRIC_ORE_GRINDER_2 = new CustomItem(Material.FURNACE, "&cElectric Ore Grinder &7(&eII&7)", "","&rWorks as an Ore Crusher and Grind Stone", "", "&4End-Game Machine", "&8\u21E8 &7Speed: 4x", "&8\u21E8 &e\u26A1 &730 J/s"); public static final ItemStack ELECTRIC_INGOT_PULVERIZER = new CustomItem(Material.FURNACE, "&cElectric Ingot Pulverizer", "", "&rPulverizes Ingots into Dust", "", "&aMedium Machine", "&8\u21E8 &7Speed: 1x", "&8\u21E8 &e\u26A1 &714 J/s"); + public static final ItemStack AUTO_DRIER = new CustomItem(Material.SMOKER, "&eAuto Drier", "", "&aMedium Machine", "&8\u21E8 &7Speed: 1x", "&8\u21E8 &e\u26A1 &710 J/s"); public static final ItemStack AUTO_ENCHANTER = new CustomItem(Material.ENCHANTING_TABLE, "&5Auto Enchanter", "", "&aMedium Machine", "&8\u21E8 &7Speed: 1x", "&8\u21E8 &e\u26A1 &718 J/s"); public static final ItemStack AUTO_DISENCHANTER = new CustomItem(Material.ENCHANTING_TABLE, "&5Auto Disenchanter", "", "&aMedium Machine", "&8\u21E8 &7Speed: 1x", "&8\u21E8 &e\u26A1 &718 J/s"); public static final ItemStack AUTO_ANVIL = new CustomItem(Material.IRON_BLOCK, "&7Auto Anvil", "", "&6Advanced Machine", "&8\u21E8 &7Repair Factor: 10%", "&8\u21E8 &e\u26A1 &724 J/s"); diff --git a/src/me/mrCookieSlime/Slimefun/Setup/ResearchSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/ResearchSetup.java index b76197012..d347bcd79 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/ResearchSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/ResearchSetup.java @@ -240,5 +240,6 @@ public final class ResearchSetup { Slimefun.registerResearch(new Research(240, "Basic machinery output chest", 20), SlimefunItems.OUTPUT_CHEST); Slimefun.registerResearch(new Research(241, "Thinned-down Conductivity", 15), SlimefunItems.COPPER_WIRE); Slimefun.registerResearch(new Research(242, "Radiant Backpack", 25), SlimefunItems.RADIANT_BACKPACK); + Slimefun.registerResearch(new Research(243, "A Dry Day", 15), SlimefunItems.AUTO_DRIER); } } diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java index 42c4fff78..f3fe97e9d 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java @@ -8,6 +8,7 @@ import java.util.Random; import java.util.Set; import java.util.UUID; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.*; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.Effect; @@ -102,40 +103,6 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AGenerator; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AReactor; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineFuel; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.Teleporter; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.AdvancedCargoOutputNode; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.AnimalGrowthAccelerator; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.AutoAnvil; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.AutoBreeder; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.AutoDisenchanter; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.AutoEnchanter; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.AutomatedCraftingChamber; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.CarbonPress; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.CargoInputNode; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.CargoOutputNode; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.ChargingBench; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.CropGrowthAccelerator; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.ElectricDustWasher; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.ElectricFurnace; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.ElectricGoldPan; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.ElectricIngotFactory; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.ElectricSmeltery; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.ElectrifiedCrucible; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.EnhancedCraftingTable; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.FluidPump; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.FoodComposter; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.FoodFabricator; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.Freezer; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.HeatedPressureChamber; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.MagicWorkbench; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.NetherDrill; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.OilPump; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.OreWasher; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.ReactorAccessPort; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.Refinery; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.Smeltery; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.TrashCan; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.WitherAssembler; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.XPCollector; import me.mrCookieSlime.Slimefun.Objects.handlers.AutonomousMachineHandler; import me.mrCookieSlime.Slimefun.Objects.handlers.BlockBreakHandler; import me.mrCookieSlime.Slimefun.Objects.handlers.BlockPlaceHandler; @@ -3305,6 +3272,10 @@ public final class SlimefunSetup { }.registerUnrechargeableBlock(true, 128); + new AutoDrier(Categories.ELECTRICITY, SlimefunItems.AUTO_DRIER, "AUTO_DRIER", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {null, null, null, SlimefunItems.HEATING_COIL, new ItemStack(Material.SMOKER), SlimefunItems.HEATING_COIL, null, new ItemStack(Material.CAMPFIRE), null}) + .registerChargeableBlock(true, 128); + new AutoEnchanter(Categories.ELECTRICITY, SlimefunItems.AUTO_ENCHANTER, "AUTO_ENCHANTER", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {null, new ItemStack(Material.ENCHANTING_TABLE), null, SlimefunItems.CARBONADO, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.CARBONADO, SlimefunItems.WITHER_PROOF_OBSIDIAN, SlimefunItems.WITHER_PROOF_OBSIDIAN, SlimefunItems.WITHER_PROOF_OBSIDIAN}) .registerChargeableBlock(true, 128); From 4e152ca180bada343c02eba3bcfcf7ad5bb786ad Mon Sep 17 00:00:00 2001 From: LinoxGH <54643600+LinoxGH@users.noreply.github.com> Date: Thu, 29 Aug 2019 16:56:18 +0300 Subject: [PATCH 030/169] Adding the file of the Auto Drier machine itself. --- .../SlimefunItem/machines/AutoDrier.java | 132 ++++++++++++++++++ 1 file changed, 132 insertions(+) create mode 100644 src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoDrier.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoDrier.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoDrier.java new file mode 100644 index 000000000..7e204efc0 --- /dev/null +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoDrier.java @@ -0,0 +1,132 @@ +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines; + +import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.InvUtils; +import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; +import me.mrCookieSlime.Slimefun.Lists.RecipeType; +import me.mrCookieSlime.Slimefun.Objects.Category; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineHelper; +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 { + + public AutoDrier(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe) { + super(category, item, id, recipeType, recipe); + } + + @Override + public String getInventoryTitle() { + return "&eAuto Drier"; + } + + @Override + public ItemStack getProgressBar() { + return new ItemStack(Material.CAMPFIRE); + } + + @Override + public void registerDefaultRecipes() { } + + @Override + protected void tick(Block b) { + 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); + + if (ChargableBlock.isChargable(b)) { + if (ChargableBlock.getCharge(b) < getEnergyConsumption()) return; + ChargableBlock.addCharge(b, -getEnergyConsumption()); + progress.put(b, timeleft - 1); + } + else progress.put(b, timeleft - 1); + } + else { + BlockStorage.getInventory(b).replaceExistingItem(22, new CustomItem(new ItemStack(Material.BLACK_STAINED_GLASS_PANE), " ")); + pushItems(b, processing.get(b).getOutput()); + + progress.remove(b); + processing.remove(b); + } + } + else { + MachineRecipe r = null; + for (int slot: getInputSlots()) { + ItemStack item = BlockStorage.getInventory(b).getItemInSlot(slot); + if (item == null) continue; + + // Check if dryable + Material mat = item.getType(); + boolean dryable = mat == Material.ROTTEN_FLESH || mat == Material.WATER_BUCKET || mat == Material.WET_SPONGE || Tag.SAPLINGS.isTagged(mat) || Tag.LEAVES.isTagged(mat) || mat.name().contains("POTION"); + if (!dryable) continue; + + // Dry + ItemStack output; + if (mat == Material.ROTTEN_FLESH) { + output = new ItemStack(Material.LEATHER); + } + else if (mat == Material.WATER_BUCKET) { + output = new ItemStack(Material.BUCKET); + } + else if (mat == Material.WET_SPONGE) { + output = new ItemStack(Material.SPONGE); + } + else if (Tag.SAPLINGS.isTagged(mat) || Tag.LEAVES.isTagged(mat)) { + output = new ItemStack(Material.STICK); + } + else if (mat.name().contains("POTION")) { + output = new ItemStack(Material.GLASS_BOTTLE); + } + else continue; + + r = new MachineRecipe(5, new ItemStack[] {item}, new ItemStack[] {output}); + } + + if (r != null) { + if (!fits(b, r.getOutput())) return; + for (int slot: getInputSlots()) { + BlockStorage.getInventory(b).replaceExistingItem(slot, InvUtils.decreaseItem(BlockStorage.getInventory(b).getItemInSlot(slot), 1)); + } + processing.put(b, r); + progress.put(b, r.getTicks()); + } + } + } + + @Override + public int getEnergyConsumption() { + return 5; + } + + @Override + public int getSpeed() { + return 1; + } + + @Override + public String getMachineIdentifier() { + return "AUTO_DRIER"; + } +} From 6f09eaa1e4f715a9da340a0bd55d563d37e0736b Mon Sep 17 00:00:00 2001 From: LinoxGH <54643600+LinoxGH@users.noreply.github.com> Date: Thu, 29 Aug 2019 17:16:39 +0300 Subject: [PATCH 031/169] Fixing the auto drier using multiple inputs. --- .../Slimefun/Objects/SlimefunItem/machines/AutoDrier.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoDrier.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoDrier.java index 7e204efc0..1490d0c37 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoDrier.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoDrier.java @@ -73,6 +73,7 @@ public class AutoDrier extends AContainer { } else { MachineRecipe r = null; + int inputSlot = -1; for (int slot: getInputSlots()) { ItemStack item = BlockStorage.getInventory(b).getItemInSlot(slot); if (item == null) continue; @@ -102,13 +103,14 @@ public class AutoDrier extends AContainer { else continue; r = new MachineRecipe(5, new ItemStack[] {item}, new ItemStack[] {output}); + inputSlot = slot; + break; } if (r != null) { + if (inputSlot == -1) return; if (!fits(b, r.getOutput())) return; - for (int slot: getInputSlots()) { - BlockStorage.getInventory(b).replaceExistingItem(slot, InvUtils.decreaseItem(BlockStorage.getInventory(b).getItemInSlot(slot), 1)); - } + BlockStorage.getInventory(b).replaceExistingItem(inputSlot, InvUtils.decreaseItem(BlockStorage.getInventory(b).getItemInSlot(inputSlot), 1)); processing.put(b, r); progress.put(b, r.getTicks()); } From bbf0bfd006d799a473d5fda4456c19d3ebb8cec5 Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Thu, 29 Aug 2019 16:19:23 +0200 Subject: [PATCH 032/169] Refactoring --- .../Slimefun/Lists/SlimefunItems.java | 7 +- .../Slimefun/Setup/SlimefunManager.java | 30 ++++---- .../Slimefun/Setup/SlimefunSetup.java | 15 ++-- .../Slimefun/SlimefunStartup.java | 57 ++------------ .../androids/ProgrammableAndroid.java | 2 +- .../api/item_transport/CargoManager.java | 8 +- .../Slimefun/commands/SlimefunCommand.java | 12 ++- .../ClearLagHook.java} | 6 +- .../Slimefun/hooks/SlimefunHooks.java | 74 +++++++++++++++++++ .../Slimefun/listeners/ItemListener.java | 16 ---- .../Slimefun/listeners/TalismanListener.java | 15 ++-- .../Slimefun/listeners/ToolListener.java | 20 +++-- src/plugin.yml | 2 +- 13 files changed, 146 insertions(+), 118 deletions(-) rename src/me/mrCookieSlime/Slimefun/{listeners/ClearLaggIntegration.java => hooks/ClearLagHook.java} (80%) create mode 100644 src/me/mrCookieSlime/Slimefun/hooks/SlimefunHooks.java diff --git a/src/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java b/src/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java index 312e8331b..75c3af5c9 100644 --- a/src/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java +++ b/src/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java @@ -4,6 +4,7 @@ import org.bukkit.ChatColor; import org.bukkit.Color; import org.bukkit.FireworkEffect; import org.bukkit.FireworkEffect.Type; +import org.bukkit.enchantments.Enchantment; import org.bukkit.Material; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.FireworkEffectMeta; @@ -651,9 +652,13 @@ public final class SlimefunItems { public static final ItemStack ELYTRA = new ItemStack(Material.ELYTRA); public static final ItemStack ELYTRA_SCALE = new CustomItem(Material.FEATHER, "&bEyltra Scale"); - public static final ItemStack INFUSED_ELYTRA = new CustomItem(new CustomItem(ELYTRA, "&5Infused Elytra"), new String[] {"MENDING-1"}); + public static final ItemStack INFUSED_ELYTRA = new CustomItem(ELYTRA, "&5Infused Elytra"); public static final ItemStack SOULBOUND_ELYTRA = new CustomItem(ELYTRA, "&cSoulbound Elytra"); + static { + INFUSED_ELYTRA.addEnchantment(Enchantment.MENDING, 1); + } + // ChestTerminal Addon public static final ItemStack CHEST_TERMINAL = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvN2E0NGZmM2E1ZjQ5YzY5Y2FiNjc2YmFkOGQ5OGEwNjNmYTc4Y2ZhNjE5MTZmZGVmM2UyNjc1NTdmZWMxODI4MyJ9fX0="), "&3CT Access Terminal", "&7If this Block is connected to a", "&7Cargo Network, it will allow you to remotely", "&7interact with any Items supplied by", "&7Nodes tuned into the ChestTerminal Channel"); diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunManager.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunManager.java index 01ed29f7e..4bce0e3b9 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunManager.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunManager.java @@ -68,21 +68,6 @@ public final class SlimefunManager { // Material.COAL, Material.SKULL_ITEM, Material.RAW_FISH, Material.COOKED_FISH); public static boolean isItemSimiliar(ItemStack item, ItemStack SFitem, boolean lore) { - return isItemSimiliar(item, SFitem, lore, DataType.IF_COLORED); - } - - - @Deprecated - public static enum DataType { - - ALWAYS, - NEVER, - IF_COLORED; - - } - - @Deprecated - public static boolean isItemSimiliar(ItemStack item, ItemStack SFitem, boolean lore, DataType data) { if (item == null) return SFitem == null; if (SFitem == null) return false; @@ -116,6 +101,21 @@ public final class SlimefunManager { else return false; } + + @Deprecated + public static enum DataType { + + ALWAYS, + NEVER, + IF_COLORED; + + } + + @Deprecated + public static boolean isItemSimiliar(ItemStack item, ItemStack SFitem, boolean lore, DataType data) { + return isItemSimiliar(item, SFitem, lore); + } + private static boolean equalsLore(List lore, List lore2) { String string1 = "", string2 = ""; for (String string: lore) { diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java index 42c4fff78..fc877db3e 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java @@ -166,6 +166,8 @@ public final class SlimefunSetup { private SlimefunSetup() {} public static void setupItems() { + Random random = new Random(); + new SlimefunItem(Categories.WEAPONS, SlimefunItems.GRANDMAS_WALKING_STICK, "GRANDMAS_WALKING_STICK", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {null, new ItemStack(Material.OAK_LOG), null, null, new ItemStack(Material.OAK_LOG), null, null, new ItemStack(Material.OAK_LOG), null}) .register(true); @@ -556,8 +558,6 @@ public final class SlimefunSetup { new String[] {"chance.FLINT", "chance.CLAY", "chance.SIFTED_ORE"}, new Integer[] {47, 28, 15}) .register(true, new ItemInteractionHandler() { - private Random random = new Random(); - @Override public boolean onRightClick(ItemUseEvent e, Player p, ItemStack item) { if (SlimefunManager.isItemSimiliar(item, SlimefunItems.GOLD_PAN, true)) { @@ -1744,7 +1744,10 @@ public final class SlimefunSetup { Block b = e.getBlock().getRelative(x, y, z); if (b.getType() != Material.AIR && !b.isLiquid() && !StringUtils.equals(b.getType().toString(), explosiveblacklist)) { if (CSCoreLib.getLib().getProtectionManager().canBuild(e.getPlayer().getUniqueId(), b)) { - if (SlimefunStartup.instance.isCoreProtectInstalled()) SlimefunStartup.instance.getCoreProtectAPI().logRemoval(e.getPlayer().getName(), b.getLocation(), b.getType(), b.getBlockData()); + if (SlimefunStartup.instance.getHooks().isCoreProtectInstalled()) { + SlimefunStartup.instance.getHooks().getCoreProtectAPI().logRemoval(e.getPlayer().getName(), b.getLocation(), b.getType(), b.getBlockData()); + } + b.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, b.getType()); SlimefunItem sfItem = BlockStorage.check(b); boolean allow = false; @@ -1769,7 +1772,7 @@ public final class SlimefunSetup { b.setType(Material.AIR); } if (damageOnUse) { - if (!item.getEnchantments().containsKey(Enchantment.DURABILITY) || SlimefunStartup.randomize(100) <= (60 + 40 / (item.getEnchantmentLevel(Enchantment.DURABILITY) + 1))) { + if (!item.getEnchantments().containsKey(Enchantment.DURABILITY) || random.nextInt(100) <= (60 + 40 / (item.getEnchantmentLevel(Enchantment.DURABILITY) + 1))) { PlayerInventory.damageItemInHand(e.getPlayer()); } } @@ -2096,7 +2099,7 @@ public final class SlimefunSetup { for (int i = 0; i < 4; i++) { if (e.getPlayer().getInventory().getItemInMainHand() != null) { if (e.getPlayer().getInventory().getItemInMainHand().getEnchantments().containsKey(Enchantment.DURABILITY)) { - if (SlimefunStartup.randomize(100) <= (60 + 40 / (e.getPlayer().getInventory().getItemInMainHand().getEnchantmentLevel(Enchantment.DURABILITY) + 1))) PlayerInventory.damageItemInHand(e.getPlayer()); + if (random.nextInt(100) <= (60 + 40 / (e.getPlayer().getInventory().getItemInMainHand().getEnchantmentLevel(Enchantment.DURABILITY) + 1))) PlayerInventory.damageItemInHand(e.getPlayer()); } else PlayerInventory.damageItemInHand(e.getPlayer()); } @@ -2570,7 +2573,7 @@ public final class SlimefunSetup { gifts.add(new CustomItem(SlimefunItems.CARROT_JUICE, 1)); } - gifts.add(new SkullItem("mrCookieSlime")); + gifts.add(new SkullItem("TheBusyBiscuit")); gifts.add(new SkullItem("timtower")); gifts.add(new SkullItem("bwfcwalshy")); gifts.add(new SkullItem("jadedcat")); diff --git a/src/me/mrCookieSlime/Slimefun/SlimefunStartup.java b/src/me/mrCookieSlime/Slimefun/SlimefunStartup.java index 3517f397b..3a27f4066 100644 --- a/src/me/mrCookieSlime/Slimefun/SlimefunStartup.java +++ b/src/me/mrCookieSlime/Slimefun/SlimefunStartup.java @@ -50,8 +50,7 @@ import me.mrCookieSlime.Slimefun.autosave.BlockAutoSaver; import me.mrCookieSlime.Slimefun.autosave.PlayerAutoSaver; import me.mrCookieSlime.Slimefun.commands.SlimefunCommand; import me.mrCookieSlime.Slimefun.commands.SlimefunTabCompleter; -import me.mrCookieSlime.Slimefun.hooks.PlaceholderAPIHook; -import me.mrCookieSlime.Slimefun.hooks.WorldEditHook; +import me.mrCookieSlime.Slimefun.hooks.SlimefunHooks; import me.mrCookieSlime.Slimefun.hooks.github.GitHubConnector; import me.mrCookieSlime.Slimefun.hooks.github.GitHubSetup; import me.mrCookieSlime.Slimefun.listeners.AncientAltarListener; @@ -61,7 +60,6 @@ import me.mrCookieSlime.Slimefun.listeners.AutonomousToolsListener; import me.mrCookieSlime.Slimefun.listeners.BackpackListener; import me.mrCookieSlime.Slimefun.listeners.BlockListener; import me.mrCookieSlime.Slimefun.listeners.BowListener; -import me.mrCookieSlime.Slimefun.listeners.ClearLaggIntegration; import me.mrCookieSlime.Slimefun.listeners.CoolerListener; import me.mrCookieSlime.Slimefun.listeners.DamageListener; import me.mrCookieSlime.Slimefun.listeners.FurnaceListener; @@ -77,8 +75,6 @@ import me.mrCookieSlime.Slimefun.listeners.ToolListener; import me.mrCookieSlime.Slimefun.listeners.WorldListener; import me.mrCookieSlime.Slimefun.utils.Settings; import me.mrCookieSlime.Slimefun.utils.Utilities; -import net.coreprotect.CoreProtect; -import net.coreprotect.CoreProtectAPI; public final class SlimefunStartup extends JavaPlugin { @@ -91,15 +87,10 @@ public final class SlimefunStartup extends JavaPlugin { private static Config config; public static TickerTask ticker; - - private CoreProtectAPI coreProtectAPI; private Utilities utilities = new Utilities(); private Settings settings; - - private boolean clearlag = false; - private boolean exoticGarden = false; - private boolean coreProtect = false; + private SlimefunHooks hooks; // Supported Versions of Minecraft private final String[] supported = {"v1_14_"}; @@ -327,33 +318,7 @@ public final class SlimefunStartup extends JavaPlugin { // Hooray! System.out.println("[Slimefun] Finished!"); - - clearlag = getServer().getPluginManager().isPluginEnabled("ClearLag"); - coreProtect = getServer().getPluginManager().isPluginEnabled("CoreProtect"); - - getServer().getScheduler().runTaskLater(this, () -> { - exoticGarden = getServer().getPluginManager().isPluginEnabled("ExoticGarden"); // Had to do it this way, otherwise it seems disabled. - }, 0); - - if (clearlag) new ClearLaggIntegration(this); - if (coreProtect) coreProtectAPI = ((CoreProtect) getServer().getPluginManager().getPlugin("CoreProtect")).getAPI(); - - - // WorldEdit Hook to clear Slimefun Data upon //set 0 //cut or any other equivalent - if (getServer().getPluginManager().isPluginEnabled("WorldEdit")) { - try { - Class.forName("com.sk89q.worldedit.extent.Extent"); - new WorldEditHook(); - System.out.println("[Slimefun] Successfully hooked into WorldEdit!"); - } catch (Exception x) { - System.err.println("[Slimefun] Failed to hook into WorldEdit!"); - System.err.println("[Slimefun] Maybe consider updating WorldEdit or Slimefun?"); - } - } - - if (getServer().getPluginManager().isPluginEnabled("PlaceholderAPI")) { - new PlaceholderAPIHook().register(); - } + hooks = new SlimefunHooks(this); OreWasher.items = new ItemStack[] {SlimefunItems.IRON_DUST, SlimefunItems.GOLD_DUST, SlimefunItems.ALUMINUM_DUST, SlimefunItems.COPPER_DUST, SlimefunItems.ZINC_DUST, SlimefunItems.TIN_DUST, SlimefunItems.LEAD_DUST, SlimefunItems.SILVER_DUST, SlimefunItems.MAGNESIUM_DUST}; @@ -477,20 +442,8 @@ public final class SlimefunStartup extends JavaPlugin { return CSCoreLib.randomizer().nextInt(max) <= percentage; } - public boolean isClearLagInstalled() { - return clearlag; - } - - public boolean isExoticGardenInstalled () { - return exoticGarden; - } - - public boolean isCoreProtectInstalled() { - return coreProtect; - } - - public CoreProtectAPI getCoreProtectAPI() { - return coreProtectAPI; + public SlimefunHooks getHooks() { + return hooks; } public Utilities getUtilities() { diff --git a/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java b/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java index 84dbe0c21..6bfb6276f 100644 --- a/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java +++ b/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java @@ -822,7 +822,7 @@ public abstract class ProgrammableAndroid extends SlimefunItem { private void exoticFarm(Block b, Block block) { farm(b, block); - if (SlimefunStartup.instance.isExoticGardenInstalled()) { + if (SlimefunStartup.instance.getHooks().isExoticGardenInstalled()) { ItemStack drop = ExoticGarden.harvestPlant(block); if (drop != null && fits(b, drop)) { pushItems(b, drop); diff --git a/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoManager.java b/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoManager.java index 8a5a159d7..90292c647 100644 --- a/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoManager.java +++ b/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoManager.java @@ -11,7 +11,6 @@ import org.bukkit.inventory.ItemStack; import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; -import me.mrCookieSlime.Slimefun.Setup.SlimefunManager.DataType; import me.mrCookieSlime.Slimefun.api.BlockStorage; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu; import me.mrCookieSlime.Slimefun.api.inventory.UniversalBlockMenu; @@ -199,7 +198,6 @@ public class CargoManager { BlockMenu menu = BlockStorage.getInventory(block.getLocation()); boolean lore = blockInfo.getString("filter-lore").equals("true"); - boolean data = blockInfo.getString("filter-durability").equals("true"); if (blockInfo.getString("filter-type").equals("whitelist")) { List items = new ArrayList<>(); @@ -218,18 +216,18 @@ public class CargoManager { BlockStorage.addBlockInfo(block, "index", String.valueOf(index)); - return SlimefunManager.isItemSimiliar(item, items.get(index), lore, data ? DataType.ALWAYS: DataType.NEVER); + return SlimefunManager.isItemSimiliar(item, items.get(index), lore); } else { for (ItemStack stack: items) { - if (SlimefunManager.isItemSimiliar(item, stack, lore, data ? DataType.ALWAYS: DataType.NEVER)) return true; + if (SlimefunManager.isItemSimiliar(item, stack, lore)) return true; } return false; } } else { for (int slot: slots) { - if (menu.getItemInSlot(slot) != null && SlimefunManager.isItemSimiliar(item, new CustomItem(menu.getItemInSlot(slot), 1), lore, data ? DataType.ALWAYS: DataType.NEVER)) { + if (menu.getItemInSlot(slot) != null && SlimefunManager.isItemSimiliar(item, new CustomItem(menu.getItemInSlot(slot), 1), lore)) { return false; } } diff --git a/src/me/mrCookieSlime/Slimefun/commands/SlimefunCommand.java b/src/me/mrCookieSlime/Slimefun/commands/SlimefunCommand.java index a6a39337f..5a9efbfd0 100644 --- a/src/me/mrCookieSlime/Slimefun/commands/SlimefunCommand.java +++ b/src/me/mrCookieSlime/Slimefun/commands/SlimefunCommand.java @@ -35,6 +35,7 @@ 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.PlayerProfile; import me.mrCookieSlime.Slimefun.api.Slimefun; public class SlimefunCommand implements CommandExecutor, Listener { @@ -200,8 +201,9 @@ public class SlimefunCommand implements CommandExecutor, Listener { if (args.length == 3) { if (Players.isOnline(args[1])) { if (Slimefun.listIDs().contains(args[2].toUpperCase())) { - Messages.local.sendTranslation(Bukkit.getPlayer(args[1]), "messages.given-item", true, new Variable("%item%", SlimefunItem.getByID(args[2].toUpperCase()).getItem().getItemMeta().getDisplayName()), new Variable("%amount%", "1")); - Bukkit.getPlayer(args[1]).getInventory().addItem(SlimefunItem.getByID(args[2].toUpperCase()).getItem()); + Player p = Bukkit.getPlayer(args[1]); + Messages.local.sendTranslation(p, "messages.given-item", true, new Variable("%item%", SlimefunItem.getByID(args[2].toUpperCase()).getItem().getItemMeta().getDisplayName()), new Variable("%amount%", "1")); + p.getInventory().addItem(SlimefunItem.getByID(args[2].toUpperCase()).getItem()); Messages.local.sendTranslation(sender, "messages.give-item", true, new Variable("%player%", args[1]), new Variable("%item%", SlimefunItem.getByID(args[2].toUpperCase()).getItem().getItemMeta().getDisplayName()), new Variable("%amount%", "1")); } else Messages.local.sendTranslation(sender, "messages.not-valid-item", true, new Variable("%item%", args[2])); @@ -254,15 +256,17 @@ public class SlimefunCommand implements CommandExecutor, Listener { if (sender.hasPermission("slimefun.cheat.researches") || !(sender instanceof Player)) { if (Players.isOnline(args[1])) { Player p = Bukkit.getPlayer(args[1]); + PlayerProfile profile = PlayerProfile.fromUUID(p.getUniqueId()); + if (args[2].equalsIgnoreCase("all")) { for (Research res : Research.list()) { - if (!res.hasUnlocked(p)) Messages.local.sendTranslation(sender, "messages.give-research", true, new Variable("%player%", p.getName()), new Variable("%research%", res.getName())); + if (!profile.hasUnlocked(res)) Messages.local.sendTranslation(sender, "messages.give-research", true, new Variable("%player%", p.getName()), new Variable("%research%", res.getName())); res.unlock(p, true); } } else if (args[2].equalsIgnoreCase("reset")) { for (Research res : Research.list()) { - res.lock(p); + profile.setResearched(res, false); } Messages.local.sendTranslation(p, "commands.research.reset", true, new Variable("%player%", args[1])); } diff --git a/src/me/mrCookieSlime/Slimefun/listeners/ClearLaggIntegration.java b/src/me/mrCookieSlime/Slimefun/hooks/ClearLagHook.java similarity index 80% rename from src/me/mrCookieSlime/Slimefun/listeners/ClearLaggIntegration.java rename to src/me/mrCookieSlime/Slimefun/hooks/ClearLagHook.java index 0ebea10e0..6965367b2 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/ClearLaggIntegration.java +++ b/src/me/mrCookieSlime/Slimefun/hooks/ClearLagHook.java @@ -1,4 +1,4 @@ -package me.mrCookieSlime.Slimefun.listeners; +package me.mrCookieSlime.Slimefun.hooks; import java.util.Iterator; @@ -10,9 +10,9 @@ import org.bukkit.entity.Item; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; -public class ClearLaggIntegration implements Listener { +public class ClearLagHook implements Listener { - public ClearLaggIntegration(SlimefunStartup plugin) { + public ClearLagHook(SlimefunStartup plugin) { plugin.getServer().getPluginManager().registerEvents(this, plugin); } diff --git a/src/me/mrCookieSlime/Slimefun/hooks/SlimefunHooks.java b/src/me/mrCookieSlime/Slimefun/hooks/SlimefunHooks.java new file mode 100644 index 000000000..b3147e044 --- /dev/null +++ b/src/me/mrCookieSlime/Slimefun/hooks/SlimefunHooks.java @@ -0,0 +1,74 @@ +package me.mrCookieSlime.Slimefun.hooks; + +import me.mrCookieSlime.Slimefun.SlimefunStartup; +import net.coreprotect.CoreProtect; +import net.coreprotect.CoreProtectAPI; + +public final class SlimefunHooks { + + private boolean exoticGarden = false; + private boolean coreProtect = false; + private boolean clearLag = false; + private boolean worldEdit = false; + private boolean placeHolderAPI = false; + + private CoreProtectAPI coreProtectAPI; + + public SlimefunHooks(SlimefunStartup plugin) { + if (plugin.getServer().getPluginManager().isPluginEnabled("PlaceholderAPI")) { + placeHolderAPI = true; + new PlaceholderAPIHook().register(); + } + + plugin.getServer().getScheduler().scheduleSyncDelayedTask(plugin, () -> { + if (plugin.getServer().getPluginManager().isPluginEnabled("ClearLag")) { + clearLag = true; + new ClearLagHook(plugin); + } + + exoticGarden = plugin.getServer().getPluginManager().isPluginEnabled("ExoticGarden"); // Had to do it this way, otherwise it seems disabled. + + if (plugin.getServer().getPluginManager().isPluginEnabled("CoreProtect")) { + coreProtectAPI = ((CoreProtect) plugin.getServer().getPluginManager().getPlugin("CoreProtect")).getAPI(); + } + + // WorldEdit Hook to clear Slimefun Data upon //set 0 //cut or any other equivalent + if (plugin.getServer().getPluginManager().isPluginEnabled("WorldEdit")) { + try { + Class.forName("com.sk89q.worldedit.extent.Extent"); + worldEdit = true; + new WorldEditHook(); + System.out.println("[Slimefun] Successfully hooked into WorldEdit!"); + } catch (Exception x) { + System.err.println("[Slimefun] Failed to hook into WorldEdit!"); + System.err.println("[Slimefun] Maybe consider updating WorldEdit or Slimefun?"); + } + } + }); + } + + public boolean isExoticGardenInstalled() { + return exoticGarden; + } + + public boolean isCoreProtectInstalled() { + return coreProtect; + } + + public boolean isClearLagInstalled() { + return clearLag; + } + + public boolean isWorldEditInstalled() { + return worldEdit; + } + + public boolean isPlaceholderAPIInstalled() { + return placeHolderAPI; + } + + public CoreProtectAPI getCoreProtectAPI() { + return coreProtectAPI; + } + +} diff --git a/src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java b/src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java index 2c208fc76..9415eda34 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java @@ -225,22 +225,6 @@ public class ItemListener implements Listener { if (p.isSneaking()) SlimefunGuide.openSettings(p, item); else p.chat("/sf cheat"); } - else if (SlimefunManager.isItemSimiliar(item, SlimefunGuide.getDeprecatedItem(true), true)) { - item = SlimefunGuide.getItem(BookDesign.BOOK); - p.getInventory().setItemInMainHand(item); - PlayerInventory.update(p); - - if (p.isSneaking()) SlimefunGuide.openSettings(p, item); - else SlimefunGuide.openGuide(p, true); - } - else if (SlimefunManager.isItemSimiliar(item, SlimefunGuide.getDeprecatedItem(false), true)) { - item = SlimefunGuide.getItem(BookDesign.CHEST); - p.getInventory().setItemInMainHand(item); - PlayerInventory.update(p); - - if (p.isSneaking()) SlimefunGuide.openSettings(p, item); - else SlimefunGuide.openGuide(p, false); - } else if (SlimefunManager.isItemSimiliar(e.getPlayer().getInventory().getItemInMainHand(), SlimefunItems.DEBUG_FISH, true) || SlimefunManager.isItemSimiliar(e.getPlayer().getInventory().getItemInOffHand(), SlimefunItems.DEBUG_FISH, true)) { } else if (Slimefun.hasUnlocked(p, item, true)) { diff --git a/src/me/mrCookieSlime/Slimefun/listeners/TalismanListener.java b/src/me/mrCookieSlime/Slimefun/listeners/TalismanListener.java index 77dcf7c00..6beb60e9c 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/TalismanListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/TalismanListener.java @@ -2,6 +2,7 @@ package me.mrCookieSlime.Slimefun.listeners; import java.util.ArrayList; import java.util.List; +import java.util.Random; import java.util.Set; import org.bukkit.Material; @@ -38,6 +39,8 @@ import me.mrCookieSlime.Slimefun.api.Slimefun; public class TalismanListener implements Listener { + private Random random; + public TalismanListener(SlimefunStartup plugin) { plugin.getServer().getPluginManager().registerEvents(this, plugin); } @@ -46,7 +49,7 @@ public class TalismanListener implements Listener { public void onDamageGet(EntityDamageEvent e) { if (!e.isCancelled()) { if (e instanceof EntityDamageByEntityEvent) { - if (((EntityDamageByEntityEvent) e).getDamager() instanceof Player && SlimefunStartup.chance(100, 45)) { + if (((EntityDamageByEntityEvent) e).getDamager() instanceof Player && random.nextInt(100) < 45) { if (SlimefunManager.isItemSimiliar(((Player) ((EntityDamageByEntityEvent) e).getDamager()).getInventory().getItemInMainHand(), SlimefunItem.getItem("BLADE_OF_VAMPIRES"), true)) { ((Player) ((EntityDamageByEntityEvent) e).getDamager()).playSound(((EntityDamageByEntityEvent) e).getDamager().getLocation(), Sound.ENTITY_ARROW_HIT_PLAYER, 0.7F, 0.7F); ((Player) ((EntityDamageByEntityEvent) e).getDamager()).addPotionEffect(new PotionEffect(PotionEffectType.HEAL, 1, 1)); @@ -124,7 +127,7 @@ public class TalismanListener implements Listener { if ((Boolean) Slimefun.getItemValue("MAGICIAN_TALISMAN", "allow-enchantments." + en.getKey().getKey() + ".level." + i) && en.canEnchantItem(e.getItem())) enchantments.add(en.getKey().getKey() + "-" + i); } } - String enchant = enchantments.get(SlimefunStartup.randomize(enchantments.size())); + String enchant = enchantments.get(random.nextInt(enchantments.size())); e.getEnchantsToAdd().put(Enchantment.getByKey(NamespacedKey.minecraft(enchant.split("-")[0])), Integer.parseInt(enchant.split("-")[1])); } if (!e.getEnchantsToAdd().containsKey(Enchantment.SILK_TOUCH) && Enchantment.LOOT_BONUS_BLOCKS.canEnchantItem(e.getItem())) { @@ -132,9 +135,9 @@ public class TalismanListener implements Listener { if (e.getEnchantsToAdd().containsKey(Enchantment.LOOT_BONUS_BLOCKS)) e.getEnchantsToAdd().remove(Enchantment.LOOT_BONUS_BLOCKS); Set enchantments = e.getEnchantsToAdd().keySet(); for (Enchantment en : enchantments) { - if (SlimefunStartup.chance(100, 40)) e.getEnchantsToAdd().put(en, SlimefunStartup.randomize(3) + 1); + if (random.nextInt(100) < 40) e.getEnchantsToAdd().put(en, random.nextInt(3) + 1); } - e.getItem().addUnsafeEnchantment(Enchantment.LOOT_BONUS_BLOCKS, SlimefunStartup.randomize(3) + 3); + e.getItem().addUnsafeEnchantment(Enchantment.LOOT_BONUS_BLOCKS, random.nextInt(3) + 3); } } } @@ -152,9 +155,9 @@ public class TalismanListener implements Listener { if (item != null) { if (item.getEnchantments().containsKey(Enchantment.LOOT_BONUS_BLOCKS) && !item.getEnchantments().containsKey(Enchantment.SILK_TOUCH)) { - fortune = SlimefunStartup.randomize(item.getEnchantmentLevel(Enchantment.LOOT_BONUS_BLOCKS) + 2) - 1; + fortune =random.nextInt(item.getEnchantmentLevel(Enchantment.LOOT_BONUS_BLOCKS) + 2) - 1; if (fortune <= 0) fortune = 1; - fortune = (e.getBlock().getType() == Material.LAPIS_ORE ? 4 + SlimefunStartup.randomize(5) : 1) * (fortune + 1); + fortune = (e.getBlock().getType() == Material.LAPIS_ORE ? 4 + random.nextInt(5) : 1) * (fortune + 1); } if (!item.getEnchantments().containsKey(Enchantment.SILK_TOUCH) && e.getBlock().getType().toString().endsWith("_ORE")) { diff --git a/src/me/mrCookieSlime/Slimefun/listeners/ToolListener.java b/src/me/mrCookieSlime/Slimefun/listeners/ToolListener.java index 706321d38..f4a75ef85 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/ToolListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/ToolListener.java @@ -4,6 +4,7 @@ import java.util.ArrayList; import java.util.HashSet; import java.util.Iterator; import java.util.List; +import java.util.Random; import java.util.Set; import org.bukkit.Material; @@ -42,7 +43,8 @@ import me.mrCookieSlime.Slimefun.utils.Utilities; public class ToolListener implements Listener { // Materials that require a Block under it, e.g. Pressure Plates - private final Set sensitiveMaterials = new HashSet<>(); + private Set sensitiveMaterials = new HashSet<>(); + private Random random = new Random(); private Utilities utilities; public ToolListener(SlimefunStartup plugin) { @@ -145,7 +147,7 @@ public class ToolListener implements Listener { gifts.add(new CustomItem(SlimefunItems.CHRISTMAS_FRUIT_CAKE, 4)); gifts.add(new CustomItem(SlimefunItems.CHRISTMAS_APPLE_PIE, 4)); } - gifts.add(new SkullItem("mrCookieSlime")); + gifts.add(new SkullItem("TheBusyBiscuit")); gifts.add(new SkullItem("timtower")); gifts.add(new SkullItem("bwfcwalshy")); gifts.add(new SkullItem("jadedcat")); @@ -163,7 +165,7 @@ public class ToolListener implements Listener { "" + "- mrCookieSlime" ); - e.getBlockPlaced().getWorld().dropItemNaturally(e.getBlockPlaced().getLocation(), gifts.get(SlimefunStartup.randomize(gifts.size()))); + e.getBlockPlaced().getWorld().dropItemNaturally(e.getBlockPlaced().getLocation(), gifts.get(random.nextInt(gifts.size()))); } else if (SlimefunManager.isItemSimiliar(item, SlimefunItems.CARGO_INPUT, false)) { if (e.getBlock().getY() != e.getBlockAgainst().getY()) { @@ -240,9 +242,9 @@ public class ToolListener implements Listener { } else if (item != null) { if (item.getEnchantments().containsKey(Enchantment.LOOT_BONUS_BLOCKS) && !item.getEnchantments().containsKey(Enchantment.SILK_TOUCH)) { - fortune = SlimefunStartup.randomize(item.getEnchantmentLevel(Enchantment.LOOT_BONUS_BLOCKS) + 2) - 1; + fortune = random.nextInt(item.getEnchantmentLevel(Enchantment.LOOT_BONUS_BLOCKS) + 2) - 1; if (fortune <= 0) fortune = 1; - fortune = (e.getBlock().getType() == Material.LAPIS_ORE ? 4 + SlimefunStartup.randomize(5) : 1) * (fortune + 1); + fortune = (e.getBlock().getType() == Material.LAPIS_ORE ? 4 + random.nextInt(5) : 1) * (fortune + 1); } for (ItemHandler handler : SlimefunItem.getHandlers("BlockBreakHandler")) { @@ -252,11 +254,13 @@ public class ToolListener implements Listener { if (!drops.isEmpty()) { e.getBlock().setType(Material.AIR); - if(e.isDropItems()) + + if (e.isDropItems()) { for (ItemStack drop : drops) { - if (drop != null) + if (drop != null) { e.getBlock().getWorld().dropItemNaturally(e.getBlock().getLocation(), drop); - + } + } } } } diff --git a/src/plugin.yml b/src/plugin.yml index 4ed59644c..7509adc2c 100644 --- a/src/plugin.yml +++ b/src/plugin.yml @@ -5,7 +5,7 @@ description: Slimefun basically turns your entire Server into a FTB modpack with website: http://TheBusyBiscuit.github.io/ main: me.mrCookieSlime.Slimefun.SlimefunStartup -softdepend: [CS-CoreLib, ClearLag, WorldEdit, PlaceholderAPI] +softdepend: [CS-CoreLib, PlaceholderAPI] api-version: 1.14 From 12fa69ac4299bd503e35c6cfc219039654f9f25a Mon Sep 17 00:00:00 2001 From: LinoxGH <54643600+LinoxGH@users.noreply.github.com> Date: Thu, 29 Aug 2019 17:30:30 +0300 Subject: [PATCH 033/169] Changing the progress bar and removing redundant checks. Implementing the changes requested in the PR to original Slimefun4 repo. --- .../Slimefun/Objects/SlimefunItem/machines/AutoDrier.java | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoDrier.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoDrier.java index 1490d0c37..a28129d4a 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoDrier.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoDrier.java @@ -32,7 +32,7 @@ public class AutoDrier extends AContainer { @Override public ItemStack getProgressBar() { - return new ItemStack(Material.CAMPFIRE); + return new ItemStack(Material.FLINT_AND_STEEL); } @Override @@ -78,12 +78,8 @@ public class AutoDrier extends AContainer { ItemStack item = BlockStorage.getInventory(b).getItemInSlot(slot); if (item == null) continue; - // Check if dryable + // Checking if dryable Material mat = item.getType(); - boolean dryable = mat == Material.ROTTEN_FLESH || mat == Material.WATER_BUCKET || mat == Material.WET_SPONGE || Tag.SAPLINGS.isTagged(mat) || Tag.LEAVES.isTagged(mat) || mat.name().contains("POTION"); - if (!dryable) continue; - - // Dry ItemStack output; if (mat == Material.ROTTEN_FLESH) { output = new ItemStack(Material.LEATHER); From ac7d1608e60d7874a42da35da58b4cc5ab3eb7bc Mon Sep 17 00:00:00 2001 From: ajan-12 <36973731+ajan-12@users.noreply.github.com> Date: Thu, 29 Aug 2019 19:36:16 +0300 Subject: [PATCH 034/169] Adding Explosive Shovel. - Renamed the Research "Explosive Pickaxe" to "Maximum Explosivity" and added Explosive Shovel to it. - Added a new recipe to Magic Workbench for Explosive Shovel. - Explosive Shovel is made by 1 Ferrosilicon, 1 TNT and 1 Synthetic Diamond. - Made the Explosive Shovel so that it can only break dirt-like, sand and its variations, gravel, clay and snow blocks. - This adds the shovel the benefit of fast landscaping but still adds a reason to use Explosive Pickaxe. --- .../Slimefun/Lists/SlimefunItems.java | 2 +- .../Slimefun/Setup/ResearchSetup.java | 2 +- .../Slimefun/Setup/SlimefunSetup.java | 51 +++++++++++++++++++ 3 files changed, 53 insertions(+), 2 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java b/src/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java index f6c7cf350..a12350866 100644 --- a/src/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java +++ b/src/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java @@ -62,7 +62,6 @@ public final class SlimefunItems { public static final ItemStack VOIDBAG_BIG = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMmEzYjM0ODYyYjlhZmI2M2NmOGQ1Nzc5OTY2ZDNmYmE3MGFmODJiMDRlODNmM2VhZjY0NDlhZWJhIn19fQ=="), "&4Big Void Bag","", "&7Size: &e27", "&7ID: ", "", "&7&eLeft Click&7 to suck up nearby Items", "&7&eRight Click&7 to open"); public static final ItemStack VOIDBAG_LARGE = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMmEzYjM0ODYyYjlhZmI2M2NmOGQ1Nzc5OTY2ZDNmYmE3MGFmODJiMDRlODNmM2VhZjY0NDlhZWJhIn19fQ=="), "&4Large Void Bag","", "&7Size: &e36", "&7ID: ", "", "&7&eLeft Click&7 to suck up nearby Items", "&7&eRight Click&7 to open"); public static final ItemStack BOUND_VOIDBAG = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMmEzYjM0ODYyYjlhZmI2M2NmOGQ1Nzc5OTY2ZDNmYmE3MGFmODJiMDRlODNmM2VhZjY0NDlhZWJhIn19fQ=="), "&4Soulbound Void Bag","", "&7Size: &e36", "&7ID: ", "", "&7&eLeft Click&7 to suck up nearby Items", "&7&eRight Click&7 to open"); - /* Jetpacks */ public static final ItemStack DURALUMIN_JETPACK = new CustomArmor(new CustomItem(Material.LEATHER_CHESTPLATE, "&9Electric Jetpack &7- &eI", "", "&8\u21E8 &7Material: &bDuralumin", "&c&o&8\u21E8 &e\u26A1 &70 / 20 J", "&8\u21E8 &7Thrust: &c0.35", "", "&7Hold &eShift&7 to use"), Color.SILVER); @@ -140,6 +139,7 @@ public final class SlimefunItems { public static final ItemStack PICKAXE_OF_CONTAINMENT = new CustomItem(Material.IRON_PICKAXE, "&cPickaxe of Containment", "", "&9Can pickup Spawners"); public static final ItemStack HERCULES_PICKAXE = new CustomItem(Material.IRON_PICKAXE, "&9Hercules' Pickaxe", 0, new String[] {"", "&rSo powerful that it", "&rcrushes all mined Ores", "&rinto Dust..."}, new String[] {"DURABILITY-2", "DIG_SPEED-4"}); public static final ItemStack EXPLOSIVE_PICKAXE = new CustomItem(Material.DIAMOND_PICKAXE, "&eExplosive Pickaxe", "", "&rAllows you to mine a good bit", "&rof Blocks at once...", "", "&9Works with Fortune"); + public static final ItemStack EXPLOSIVE_SHOVEL = new CustomItem(Material.DIAMOND_SHOVEL, "&eExplosive Shovel", "", "&rAllows you to mine a good bit", "&rof diggable Blocks at once..."); public static final ItemStack PICKAXE_OF_THE_SEEKER = new CustomItem(Material.DIAMOND_PICKAXE, "&aPickaxe of the Seeker", "&rWill always point you to the nearest Ore", "&rbut might get damaged when doing it", "", "&7&eRight Click&7 to be pointed to the nearest Ore"); public static final ItemStack COBALT_PICKAXE = new CustomItem(Material.IRON_PICKAXE, "&9Cobalt Pickaxe", 0, new String[0], new String[] {"DURABILITY-3", "DIG_SPEED-6"}); public static final ItemStack PICKAXE_OF_VEIN_MINING = new CustomItem(Material.DIAMOND_PICKAXE, "&ePickaxe of Vein Mining", "", "&rThis Pickaxe will dig out", "&rwhole Veins of Ores..."); diff --git a/src/me/mrCookieSlime/Slimefun/Setup/ResearchSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/ResearchSetup.java index d347bcd79..38d3aeb66 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/ResearchSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/ResearchSetup.java @@ -105,7 +105,7 @@ public final class ResearchSetup { Slimefun.registerResearch(new Research(98, "Advanced Mining 101", 42), SlimefunItems.ADVANCED_DIGITAL_MINER); Slimefun.registerResearch(new Research(99, "Composting Dirt", 3), SlimefunItems.COMPOSTER); Slimefun.registerResearch(new Research(100, "Farmer Shoes", 4), SlimefunItems.FARMER_SHOES); - Slimefun.registerResearch(new Research(101, "Explosive Pickaxe", 28), SlimefunItems.EXPLOSIVE_PICKAXE); + Slimefun.registerResearch(new Research(101, "Maximum Explosivity", 30), SlimefunItems.EXPLOSIVE_PICKAXE, SlimefunItems.EXPLOSIVE_SHOVEL); Slimefun.registerResearch(new Research(102, "Automated Gold Pan", 17), SlimefunItems.AUTOMATED_PANNING_MACHINE); Slimefun.registerResearch(new Research(103, "Boots of the Stomper", 19), SlimefunItems.BOOTS_OF_THE_STOMPER); Slimefun.registerResearch(new Research(104, "Pickaxe of the Seeker", 19), SlimefunItems.PICKAXE_OF_THE_SEEKER); diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java index 72bcbf7ea..6fb3da8f4 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java @@ -8,6 +8,7 @@ import java.util.Random; import java.util.Set; import java.util.UUID; +import io.github.thebusybiscuit.cscorelib2.materials.MaterialCollections; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.*; import org.bukkit.Bukkit; import org.bukkit.ChatColor; @@ -1756,6 +1757,56 @@ public final class SlimefunSetup { } }); + new SlimefunItem(Categories.TOOLS, SlimefunItems.EXPLOSIVE_SHOVEL, "EXPLOSIVE_SHOVEL", RecipeType.MAGIC_WORKBENCH, + new ItemStack[] {null, SlimefunItems.SYNTHETIC_DIAMOND, null, null, new ItemStack(Material.TNT), null, null, SlimefunItems.FERROSILICON, null}, + new String[] {"damage-on-use"}, new Object[] {Boolean.FALSE }) + .register(true, new BlockBreakHandler() { + + @Override + public boolean onBlockBreak(BlockBreakEvent e, ItemStack item, int fortune, List drops) { + if (SlimefunManager.isItemSimiliar(item, SlimefunItems.EXPLOSIVE_SHOVEL, true)) { + e.getBlock().getWorld().createExplosion(e.getBlock().getLocation(), 0.0F); + e.getBlock().getWorld().playSound(e.getBlock().getLocation(), Sound.ENTITY_GENERIC_EXPLODE, 1F, 1F); + for (int x = -1; x <= 1; x++) { + for (int y = -1; y <= 1; y++) { + for (int z = -1; z <= 1; z++) { + Block b = e.getBlock().getRelative(x, y, z); + boolean correctType = false; + for (Material mat : MaterialCollections.getAllFishItems()) { + if (b.getType() == mat) { + correctType = true; + break; + } + } + if (correctType) { + if (CSCoreLib.getLib().getProtectionManager().canBuild(e.getPlayer().getUniqueId(), b)) { + if (SlimefunStartup.instance.getHooks().isCoreProtectInstalled()) { + SlimefunStartup.instance.getHooks().getCoreProtectAPI().logRemoval(e.getPlayer().getName(), b.getLocation(), b.getType(), b.getBlockData()); + } + + b.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, b.getType()); + for (ItemStack drop: b.getDrops()) { + b.getWorld().dropItemNaturally(b.getLocation(), drop); + } + b.setType(Material.AIR); + if (damageOnUse) { + if (!item.getEnchantments().containsKey(Enchantment.DURABILITY) || random.nextInt(100) <= (60 + 40 / (item.getEnchantmentLevel(Enchantment.DURABILITY) + 1))) { + PlayerInventory.damageItemInHand(e.getPlayer()); + } + } + } + } + } + } + } + + PlayerInventory.update(e.getPlayer()); + return true; + } + else return false; + } + }); + new SlimefunMachine(Categories.MACHINES_1, SlimefunItems.AUTOMATED_PANNING_MACHINE, "AUTOMATED_PANNING_MACHINE", new ItemStack[] {null, null, null, null, new ItemStack(Material.OAK_TRAPDOOR), null, null, new ItemStack(Material.CAULDRON), null}, new ItemStack[] {new ItemStack(Material.GRAVEL), new ItemStack(Material.FLINT), new ItemStack(Material.GRAVEL), new ItemStack(Material.CLAY_BALL), new ItemStack(Material.GRAVEL), SlimefunItems.SIFTED_ORE}, Material.OAK_TRAPDOOR) From f38323a2b4612b46f6080cd12a3c07d0e6affe8c Mon Sep 17 00:00:00 2001 From: ajan-12 <36973731+ajan-12@users.noreply.github.com> Date: Thu, 29 Aug 2019 20:00:26 +0300 Subject: [PATCH 035/169] Moved the Hologram Projector location for guide to look better. --- .../Slimefun/Setup/SlimefunSetup.java | 74 +++++++++---------- 1 file changed, 37 insertions(+), 37 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java index 6fb3da8f4..9a69e9361 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java @@ -842,6 +842,43 @@ public final class SlimefunSetup { new ItemStack[] {SlimefunItems.CLOTH, SlimefunItems.CLOTH, SlimefunItems.CLOTH, SlimefunItems.CHAIN, null, SlimefunItems.CHAIN, null, null, null}) .register(true); + new SlimefunItem(Categories.TECH, SlimefunItems.HOLOGRAM_PROJECTOR, "HOLOGRAM_PROJECTOR", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {null, SlimefunItems.POWER_CRYSTAL, null, SlimefunItems.ALUMINUM_BRASS_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.ALUMINUM_BRASS_INGOT, null, SlimefunItems.ALUMINUM_BRASS_INGOT, null}, new CustomItem(SlimefunItems.HOLOGRAM_PROJECTOR, 3)) + .register(true, new ItemInteractionHandler() { + + @Override + public boolean onRightClick(ItemUseEvent e, Player p, ItemStack stack) { + if (e.getClickedBlock() == null) return false; + SlimefunItem item = BlockStorage.check(e.getClickedBlock()); + if (item == null || !item.getID().equals("HOLOGRAM_PROJECTOR")) return false; + e.setCancelled(true); + + if (BlockStorage.getLocationInfo(e.getClickedBlock().getLocation(), "owner").equals(p.getUniqueId().toString())) { + Projector.openEditor(p, e.getClickedBlock()); + } + + return true; + } + }); + + SlimefunItem.registerBlockHandler("HOLOGRAM_PROJECTOR", new SlimefunBlockHandler() { + + @Override + public void onPlace(Player p, Block b, SlimefunItem item) { + BlockStorage.addBlockInfo(b, "text", "&bHi, I am a Hologram, &3configure me using the Projector"); + BlockStorage.addBlockInfo(b, "offset", "-0.5"); + BlockStorage.addBlockInfo(b, "owner", p.getUniqueId().toString()); + + Projector.getArmorStand(b); + } + + @Override + public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) { + Projector.getArmorStand(b).remove(); + return true; + } + }); + new SlimefunItem(Categories.MISC, SlimefunItems.CHAIN, "CHAIN", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {null, null, SlimefunItems.STEEL_INGOT, null, SlimefunItems.STEEL_INGOT, null, SlimefunItems.STEEL_INGOT, null, null}, new CustomItem(SlimefunItems.CHAIN, 8)) .register(true); @@ -4151,43 +4188,6 @@ public final class SlimefunSetup { } }); - new SlimefunItem(Categories.TECH, SlimefunItems.HOLOGRAM_PROJECTOR, "HOLOGRAM_PROJECTOR", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {null, SlimefunItems.POWER_CRYSTAL, null, SlimefunItems.ALUMINUM_BRASS_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.ALUMINUM_BRASS_INGOT, null, SlimefunItems.ALUMINUM_BRASS_INGOT, null}, new CustomItem(SlimefunItems.HOLOGRAM_PROJECTOR, 3)) - .register(true, new ItemInteractionHandler() { - - @Override - public boolean onRightClick(ItemUseEvent e, Player p, ItemStack stack) { - if (e.getClickedBlock() == null) return false; - SlimefunItem item = BlockStorage.check(e.getClickedBlock()); - if (item == null || !item.getID().equals("HOLOGRAM_PROJECTOR")) return false; - e.setCancelled(true); - - if (BlockStorage.getLocationInfo(e.getClickedBlock().getLocation(), "owner").equals(p.getUniqueId().toString())) { - Projector.openEditor(p, e.getClickedBlock()); - } - - return true; - } - }); - - SlimefunItem.registerBlockHandler("HOLOGRAM_PROJECTOR", new SlimefunBlockHandler() { - - @Override - public void onPlace(Player p, Block b, SlimefunItem item) { - BlockStorage.addBlockInfo(b, "text", "&bHi, I am a Hologram, &3configure me using the Projector"); - BlockStorage.addBlockInfo(b, "offset", "-0.5"); - BlockStorage.addBlockInfo(b, "owner", p.getUniqueId().toString()); - - Projector.getArmorStand(b); - } - - @Override - public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) { - Projector.getArmorStand(b).remove(); - return true; - } - }); - new SlimefunItem(Categories.MAGIC, SlimefunItems.INFUSED_HOPPER, "INFUSED_HOPPER", RecipeType.ANCIENT_ALTAR, new ItemStack[] {new ItemStack(Material.OBSIDIAN), SlimefunItems.RUNE_EARTH, new ItemStack(Material.HOPPER), SlimefunItems.RUNE_ENDER, SlimefunItems.INFUSED_MAGNET, SlimefunItems.RUNE_ENDER, new ItemStack(Material.HOPPER), SlimefunItems.RUNE_EARTH, new ItemStack(Material.OBSIDIAN)}) .register(true, new BlockTicker() { From c23b0e438b89ae58fb5dbb1561b28c06419e7cdb Mon Sep 17 00:00:00 2001 From: Sfiguz7 Date: Thu, 29 Aug 2019 19:12:53 +0200 Subject: [PATCH 036/169] Code cleaning --- .../Slimefun/Lists/Categories.java | 6 +++--- .../SlimefunItem/abstractItems/AFarm.java | 2 +- .../machines/AnimalGrowthAccelerator.java | 2 +- .../SlimefunItem/machines/AutoBreeder.java | 2 +- .../machines/AutomatedCraftingChamber.java | 2 +- .../SlimefunItem/machines/ChargingBench.java | 2 +- .../machines/CropGrowthAccelerator.java | 2 +- .../machines/ElectricSmeltery.java | 2 +- .../SlimefunItem/machines/FluidPump.java | 6 +++--- .../machines/HeatedPressureChamber.java | 2 +- .../Objects/SlimefunItem/machines/OilPump.java | 2 +- .../machines/ReactorAccessPort.java | 4 ++-- .../SlimefunItem/machines/TrashCan.java | 2 +- .../SlimefunItem/machines/WitherAssembler.java | 6 +++--- .../SlimefunItem/machines/XPCollector.java | 2 +- src/me/mrCookieSlime/Slimefun/Setup/Files.java | 2 +- .../Slimefun/Setup/SlimefunSetup.java | 18 +++++++++--------- .../Slimefun/androids/ProgrammableAndroid.java | 8 ++++---- .../Slimefun/api/energy/ItemEnergy.java | 6 +++--- .../listeners/AncientAltarListener.java | 4 ++-- .../Slimefun/listeners/BlockListener.java | 6 +++--- .../Slimefun/listeners/ItemListener.java | 6 +++--- .../Slimefun/listeners/TeleporterListener.java | 2 +- 23 files changed, 48 insertions(+), 48 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/Lists/Categories.java b/src/me/mrCookieSlime/Slimefun/Lists/Categories.java index 7f1e444f5..979965bb7 100644 --- a/src/me/mrCookieSlime/Slimefun/Lists/Categories.java +++ b/src/me/mrCookieSlime/Slimefun/Lists/Categories.java @@ -23,15 +23,15 @@ public final class Categories { private Categories() {} public static final Category WEAPONS = new Category(new CustomItem(Material.GOLDEN_SWORD, "&7Weapons", "", "&a> Click to open"), 1); - public static final Category PORTABLE = new Category(new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNDBjYjFlNjdiNTEyYWIyZDRiZjNkN2FjZTBlYWFmNjFjMzJjZDQ2ODFkZGMzOTg3Y2ViMzI2NzA2YTMzZmEifX19"), "&7Items", "", "&a> Click to open"), 1);; + public static final Category PORTABLE = new Category(new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNDBjYjFlNjdiNTEyYWIyZDRiZjNkN2FjZTBlYWFmNjFjMzJjZDQ2ODFkZGMzOTg3Y2ViMzI2NzA2YTMzZmEifX19"), "&7Items", "", "&a> Click to open"), 1); public static final Category FOOD = new Category(new CustomItem(Material.APPLE, "&7Food", "", "&a> Click to open"), 2); - public static final Category MACHINES_1 = new Category(new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTM0M2NlNThkYTU0Yzc5OTI0YTJjOTMzMWNmYzQxN2ZlOGNjYmJlYTliZTQ1YTdhYzg1ODYwYTZjNzMwIn19fQ=="), "&7Basic Machines", "", "&a> Click to open"), 1);; + public static final Category MACHINES_1 = new Category(new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTM0M2NlNThkYTU0Yzc5OTI0YTJjOTMzMWNmYzQxN2ZlOGNjYmJlYTliZTQ1YTdhYzg1ODYwYTZjNzMwIn19fQ=="), "&7Basic Machines", "", "&a> Click to open"), 1); public static final LockedCategory ELECTRICITY = new LockedCategory(new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNTU4NDQzMmFmNmYzODIxNjcxMjAyNThkMWVlZThjODdjNmU3NWQ5ZTQ3OWU3YjBkNGM3YjZhZDQ4Y2ZlZWYifX19"), "&bEnergy and Electricity", "", "&a> Click to open"), 4, MACHINES_1); public static final LockedCategory GPS = new LockedCategory(new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjBjOWMxYTAyMmY0MGI3M2YxNGI0Y2JhMzdjNzE4YzZhNTMzZjNhMjg2NGI2NTM2ZDVmNDU2OTM0Y2MxZiJ9fX0="), "&bGPS-based Machines", "", "&a> Click to open"), 4, MACHINES_1); public static final Category ARMOR = new Category(new CustomItem(Material.IRON_CHESTPLATE, "&7Armor", "", "&a> Click to open"), 2); public static final Category LUMPS_AND_MAGIC = new Category(new CustomItem(Material.FIRE_CHARGE, "&7Magical Items", "", "&a> Click to open"), 2); public static final Category MAGIC = new Category(new CustomItem(Material.BLAZE_POWDER, "&7Magical Gadgets", "", "&a> Click to open"), 3); - public static final Category MISC = new Category(new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTRkYTk3ZjA4MGUzOTViODQyYzRjYzgyYTg0MDgyM2Q0ZGJkOGNhNjg4YTIwNjg1M2U1NzgzZTRiZmRjMDEyIn19fQ=="), "&7Miscellaneous", "", "&a> Click to open"), 2);; + public static final Category MISC = new Category(new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTRkYTk3ZjA4MGUzOTViODQyYzRjYzgyYTg0MDgyM2Q0ZGJkOGNhNjg4YTIwNjg1M2U1NzgzZTRiZmRjMDEyIn19fQ=="), "&7Miscellaneous", "", "&a> Click to open"), 2); public static final Category TECH = new Category(new CustomArmor(new CustomItem(Material.LEATHER_CHESTPLATE, "&7Technical Gadgets", "", "&a> Click to open"), Color.SILVER), 3); public static final Category RESOURCES = new Category(new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvY2U4ZjVhZGIxNGQ2YzlmNmI4MTBkMDI3NTQzZjFhOGMxZjQxN2UyZmVkOTkzYzk3YmNkODljNzRmNWUyZTgifX19"), "&7Resources", "", "&a> Click to open"), 1); public static final Category CARGO = new LockedCategory(new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZTUxMGJjODUzNjJhMTMwYTZmZjlkOTFmZjExZDZmYTQ2ZDdkMTkxMmEzNDMxZjc1MTU1OGVmM2M0ZDljMiJ9fX0="), "&cCargo Management", "", "&a> Click to open"), 4, MACHINES_1); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AFarm.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AFarm.java index d99d0232e..282acf5bd 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AFarm.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AFarm.java @@ -101,7 +101,7 @@ public abstract class AFarm extends SlimefunItem { @Override public int[] getSlotsAccessedByItemTransport(ItemTransportFlow flow) { - if (flow.equals(ItemTransportFlow.WITHDRAW)) return getOutputSlots(); + if (flow == ItemTransportFlow.WITHDRAW) return getOutputSlots(); return new int[0]; } }; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AnimalGrowthAccelerator.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AnimalGrowthAccelerator.java index 42122e098..48640e0ab 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AnimalGrowthAccelerator.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AnimalGrowthAccelerator.java @@ -52,7 +52,7 @@ public class AnimalGrowthAccelerator extends SlimefunItem { @Override public int[] getSlotsAccessedByItemTransport(ItemTransportFlow flow) { - if (flow.equals(ItemTransportFlow.INSERT)) return getInputSlots(); + if (flow == ItemTransportFlow.INSERT) return getInputSlots(); return new int[0]; } }; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoBreeder.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoBreeder.java index 38c9a6dc1..5a1d4a01a 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoBreeder.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoBreeder.java @@ -52,7 +52,7 @@ public class AutoBreeder extends SlimefunItem { @Override public int[] getSlotsAccessedByItemTransport(ItemTransportFlow flow) { - if (flow.equals(ItemTransportFlow.INSERT)) return getInputSlots(); + if (flow == ItemTransportFlow.INSERT) return getInputSlots(); return new int[0]; } }; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutomatedCraftingChamber.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutomatedCraftingChamber.java index 4f1ee4edd..d108a8c14 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutomatedCraftingChamber.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutomatedCraftingChamber.java @@ -85,7 +85,7 @@ public abstract class AutomatedCraftingChamber extends SlimefunItem { @Override public int[] getSlotsAccessedByItemTransport(BlockMenu menu, ItemTransportFlow flow, ItemStack item) { - if (flow.equals(ItemTransportFlow.WITHDRAW)) return getOutputSlots(); + if (flow == ItemTransportFlow.WITHDRAW) return getOutputSlots(); List slots = new ArrayList<>(); for (int slot : getInputSlots()) { diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ChargingBench.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ChargingBench.java index 7098faf85..7e7872fc8 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ChargingBench.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ChargingBench.java @@ -39,7 +39,7 @@ public class ChargingBench extends AContainer { @Override public int[] getSlotsAccessedByItemTransport(ItemTransportFlow flow) { - if (flow.equals(ItemTransportFlow.INSERT)) return getInputSlots(); + if (flow == ItemTransportFlow.INSERT) return getInputSlots(); else return getOutputSlots(); } }; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/CropGrowthAccelerator.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/CropGrowthAccelerator.java index a39c601ab..253b77690 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/CropGrowthAccelerator.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/CropGrowthAccelerator.java @@ -64,7 +64,7 @@ public abstract class CropGrowthAccelerator extends SlimefunItem { @Override public int[] getSlotsAccessedByItemTransport(ItemTransportFlow flow) { - if (flow.equals(ItemTransportFlow.INSERT)) return getInputSlots(); + if (flow == ItemTransportFlow.INSERT) return getInputSlots(); return new int[0]; } }; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricSmeltery.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricSmeltery.java index 6855f4f19..6cc7c98bf 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricSmeltery.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricSmeltery.java @@ -67,7 +67,7 @@ public abstract class ElectricSmeltery extends AContainer { @Override public int[] getSlotsAccessedByItemTransport(BlockMenu menu, ItemTransportFlow flow, ItemStack item) { - if (flow.equals(ItemTransportFlow.WITHDRAW)) return getOutputSlots(); + if (flow == ItemTransportFlow.WITHDRAW) return getOutputSlots(); List slots = new ArrayList<>(); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/FluidPump.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/FluidPump.java index ecaaf723a..44b46c28e 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/FluidPump.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/FluidPump.java @@ -64,7 +64,7 @@ public class FluidPump extends SlimefunItem{ @Override public int[] getSlotsAccessedByItemTransport(ItemTransportFlow flow) { - if (flow.equals(ItemTransportFlow.INSERT)) return getInputSlots(); + if (flow == ItemTransportFlow.INSERT) return getInputSlots(); else return getOutputSlots(); } }; @@ -117,7 +117,7 @@ public class FluidPump extends SlimefunItem{ protected void tick(Block b) { Block fluid = b.getRelative(BlockFace.DOWN); - if (fluid.getType().equals(Material.LAVA)) { + if (fluid.getType() == Material.LAVA) { for (int slot : getInputSlots()) { if (SlimefunManager.isItemSimiliar(BlockStorage.getInventory(b).getItemInSlot(slot), new ItemStack(Material.BUCKET), true)) { if (ChargableBlock.getCharge(b) < getEnergyConsumption()) return; @@ -139,7 +139,7 @@ public class FluidPump extends SlimefunItem{ } } } - else if (fluid.getType().equals(Material.WATER)) { + else if (fluid.getType() == Material.WATER) { for (int slot : getInputSlots()) { if (SlimefunManager.isItemSimiliar(BlockStorage.getInventory(b).getItemInSlot(slot), new ItemStack(Material.BUCKET), true)) { if (ChargableBlock.getCharge(b) < getEnergyConsumption()) return; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/HeatedPressureChamber.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/HeatedPressureChamber.java index 8aa717a1d..17de16fb5 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/HeatedPressureChamber.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/HeatedPressureChamber.java @@ -61,7 +61,7 @@ public abstract class HeatedPressureChamber extends AContainer { @Override public int[] getSlotsAccessedByItemTransport(BlockMenu menu, ItemTransportFlow flow, ItemStack item) { - if (flow.equals(ItemTransportFlow.WITHDRAW)) return getOutputSlots(); + if (flow == ItemTransportFlow.WITHDRAW) return getOutputSlots(); List slots = new ArrayList<>(); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/OilPump.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/OilPump.java index 0dbc0385b..a2a2e1841 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/OilPump.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/OilPump.java @@ -59,7 +59,7 @@ public abstract class OilPump extends AContainer { @Override public int[] getSlotsAccessedByItemTransport(ItemTransportFlow flow) { - if (flow.equals(ItemTransportFlow.INSERT)) return getInputSlots(); + if (flow == ItemTransportFlow.INSERT) return getInputSlots(); else return getOutputSlots(); } }; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ReactorAccessPort.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ReactorAccessPort.java index 5cd2d8761..2439cfaa1 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ReactorAccessPort.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ReactorAccessPort.java @@ -86,13 +86,13 @@ public class ReactorAccessPort extends SlimefunItem { @Override public int[] getSlotsAccessedByItemTransport(ItemTransportFlow flow) { - if (flow.equals(ItemTransportFlow.INSERT)) return getInputSlots(); + if (flow == ItemTransportFlow.INSERT) return getInputSlots(); else return getOutputSlots(); } @Override public int[] getSlotsAccessedByItemTransport(BlockMenu menu, ItemTransportFlow flow, ItemStack item) { - if (flow.equals(ItemTransportFlow.INSERT)) { + if (flow == ItemTransportFlow.INSERT) { if (SlimefunManager.isItemSimiliar(item, SlimefunItems.REACTOR_COOLANT_CELL, true)) return getCoolantSlots(); else if (SlimefunManager.isItemSimiliar(item, SlimefunItems.NETHER_ICE_COOLANT_CELL, true)) return getCoolantSlots(); else return getFuelSlots(); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/TrashCan.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/TrashCan.java index aea2b4669..18a107aa4 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/TrashCan.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/TrashCan.java @@ -41,7 +41,7 @@ public class TrashCan extends SlimefunItem { @Override public int[] getSlotsAccessedByItemTransport(ItemTransportFlow flow) { - if (flow.equals(ItemTransportFlow.INSERT)) return getInputSlots(); + if (flow == ItemTransportFlow.INSERT) return getInputSlots(); return new int[0]; } }; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/WitherAssembler.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/WitherAssembler.java index c6400a13d..0b284a7a3 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/WitherAssembler.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/WitherAssembler.java @@ -86,13 +86,13 @@ public class WitherAssembler extends SlimefunItem { @Override public int[] getSlotsAccessedByItemTransport(ItemTransportFlow flow) { - if (flow.equals(ItemTransportFlow.INSERT)) return getInputSlots(); + if (flow == ItemTransportFlow.INSERT) return getInputSlots(); else return new int[0]; } @Override public int[] getSlotsAccessedByItemTransport(BlockMenu menu, ItemTransportFlow flow, ItemStack item) { - if (flow.equals(ItemTransportFlow.INSERT)) { + if (flow == ItemTransportFlow.INSERT) { if (SlimefunManager.isItemSimiliar(item, new ItemStack(Material.SOUL_SAND), true)) return getSoulSandSlots(); else return getWitherSkullSlots(); } @@ -110,7 +110,7 @@ public class WitherAssembler extends SlimefunItem { @Override public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) { - if (reason.equals(UnregisterReason.EXPLODE)) return false; + if (reason == UnregisterReason.EXPLODE) return false; BlockMenu inv = BlockStorage.getInventory(b); if (inv != null) { for (int slot: getSoulSandSlots()) { diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/XPCollector.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/XPCollector.java index f0232288c..9c198266e 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/XPCollector.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/XPCollector.java @@ -51,7 +51,7 @@ public class XPCollector extends SlimefunItem { @Override public int[] getSlotsAccessedByItemTransport(ItemTransportFlow flow) { - if (flow.equals(ItemTransportFlow.WITHDRAW)) return getOutputSlots(); + if (flow == ItemTransportFlow.WITHDRAW) return getOutputSlots(); return new int[0]; } }; diff --git a/src/me/mrCookieSlime/Slimefun/Setup/Files.java b/src/me/mrCookieSlime/Slimefun/Setup/Files.java index ab7527c78..82d9beb62 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/Files.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/Files.java @@ -39,7 +39,7 @@ public final class Files { if (files != null) { for (File current: files) { if (current.isDirectory()) { - if (!delete(current)) return false;; + if (!delete(current)) return false; } else { if (!current.delete()) return false; diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java index 72bcbf7ea..626048c61 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java @@ -860,7 +860,7 @@ public final class SlimefunSetup { if (SlimefunManager.isItemSimiliar(item, SlimefunItems.GRAPPLING_HOOK, true)) { if (e.getClickedBlock() == null && !variables.jumpState.containsKey(p.getUniqueId())) { e.setCancelled(true); - if (p.getInventory().getItemInOffHand().getType().equals(Material.BOW)) { + if (p.getInventory().getItemInOffHand().getType() == Material.BOW) { // Cancel, to fix dupe #740 return false; } @@ -1048,7 +1048,7 @@ public final class SlimefunSetup { public boolean onBlockBreak(BlockBreakEvent e, ItemStack item, int fortune, List drops) { if (SlimefunManager.isItemSimiliar(item, SlimefunItems.AUTO_SMELT_PICKAXE, true)) { if (BlockStorage.hasBlockInfo(e.getBlock())) return true; - if (e.getBlock().getType().equals(Material.PLAYER_HEAD)) return true; + if (e.getBlock().getType() == Material.PLAYER_HEAD) return true; int j = -1; List dropsList = (List) e.getBlock().getDrops(); @@ -1726,7 +1726,7 @@ public final class SlimefunSetup { drops.add(BlockStorage.retrieve(e.getBlock())); } } - else if (b.getType().equals(Material.PLAYER_HEAD)) { + else if (b.getType() == Material.PLAYER_HEAD) { b.breakNaturally(); } else if (b.getType().name().endsWith("_SHULKER_BOX")) { @@ -1734,7 +1734,7 @@ public final class SlimefunSetup { } else { for (ItemStack drop: b.getDrops()) { - b.getWorld().dropItemNaturally(b.getLocation(), (b.getType().toString().endsWith("_ORE") && !b.getType().equals(Material.IRON_ORE) && !b.getType().equals(Material.GOLD_ORE)) ? new CustomItem(drop, fortune): drop); + b.getWorld().dropItemNaturally(b.getLocation(), (b.getType().toString().endsWith("_ORE") && b.getType() != Material.IRON_ORE && b.getType() != Material.GOLD_ORE) ? new CustomItem(drop, fortune): drop); } b.setType(Material.AIR); } @@ -3848,7 +3848,7 @@ public final class SlimefunSetup { @Override public boolean onRightClick(ItemUseEvent e, Player p, ItemStack item) { if (SlimefunManager.isItemSimiliar(e.getItem(), SlimefunItems.INFERNAL_BONEMEAL, true)) { - if (e.getClickedBlock() != null && e.getClickedBlock().getType().equals(Material.NETHER_WART)) { + if (e.getClickedBlock() != null && e.getClickedBlock().getType() == Material.NETHER_WART) { Ageable ageable = (Ageable)e.getClickedBlock().getBlockData(); if (ageable.getAge() < ageable.getMaximumAge()) { ageable.setAge(ageable.getMaximumAge()); @@ -3969,7 +3969,7 @@ public final class SlimefunSetup { @Override public int getSpeed() { return 1; - }; + } }.registerChargeableBlock(true, 200); @@ -4009,7 +4009,7 @@ public final class SlimefunSetup { @Override public int getSpeed() { return 1; - }; + } }.registerChargeableBlock(true, 256); @@ -4260,7 +4260,7 @@ public final class SlimefunSetup { @Override public int getSpeed() { return 1; - }; + } }.registerChargeableBlock(true, 256); @@ -4285,7 +4285,7 @@ public final class SlimefunSetup { @Override public int getSpeed() { return 6; - }; + } }.registerChargeableBlock(true, 512); diff --git a/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java b/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java index 6bfb6276f..9d9aab3d7 100644 --- a/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java +++ b/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java @@ -214,7 +214,7 @@ public abstract class ProgrammableAndroid extends SlimefunItem { @Override public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) { - boolean allow = reason.equals(UnregisterReason.PLAYER_BREAK) && (BlockStorage.getLocationInfo(b.getLocation(), "owner").equals(p.getUniqueId().toString()) || p.hasPermission("slimefun.android.bypass")); + boolean allow = reason == UnregisterReason.PLAYER_BREAK && (BlockStorage.getLocationInfo(b.getLocation(), "owner").equals(p.getUniqueId().toString()) || p.hasPermission("slimefun.android.bypass")); if (allow) { BlockMenu inv = BlockStorage.getInventory(b); @@ -332,7 +332,7 @@ public abstract class ProgrammableAndroid extends SlimefunItem { break; case CATCH_FISH: Block water = b.getRelative(BlockFace.DOWN); - if (water.getType().equals(Material.WATER)) { + if (water.getType() == Material.WATER) { water.getWorld().playSound(water.getLocation(), Sound.ENTITY_PLAYER_SPLASH, 1F, 1F); if (CSCoreLib.randomizer().nextInt(100) < 10 * getTier()) { ItemStack drop = fish[CSCoreLib.randomizer().nextInt(fish.length)]; @@ -1346,7 +1346,7 @@ public abstract class ProgrammableAndroid extends SlimefunItem { if (script.getName().endsWith("sfs")) scripts.add(new Config(script)); } - if (!this.getAndroidType().equals(AndroidType.NONE)) { + if (this.getAndroidType() != AndroidType.NONE) { File directory2 = new File("plugins/Slimefun/scripts/NONE"); if (!directory2.exists()) directory2.mkdirs(); @@ -1364,7 +1364,7 @@ public abstract class ProgrammableAndroid extends SlimefunItem { List list = new ArrayList<>(); for (final ScriptPart part : ScriptPart.values()) { - if (!part.equals(ScriptPart.START) && !part.equals(ScriptPart.REPEAT) && getAndroidType().isType(part.getRequiredType())) { + if (part != ScriptPart.START && part != ScriptPart.REPEAT && getAndroidType().isType(part.getRequiredType())) { list.add(part); } } diff --git a/src/me/mrCookieSlime/Slimefun/api/energy/ItemEnergy.java b/src/me/mrCookieSlime/Slimefun/api/energy/ItemEnergy.java index b00ddd62d..55eceabc5 100644 --- a/src/me/mrCookieSlime/Slimefun/api/energy/ItemEnergy.java +++ b/src/me/mrCookieSlime/Slimefun/api/energy/ItemEnergy.java @@ -16,7 +16,7 @@ public class ItemEnergy { // "&c&o&8\u21E8 &e\u26A1 &70 / 50 J" public static float getStoredEnergy(ItemStack item) { - if (item == null || item.getType() == null || item.getType().equals(Material.AIR)) return 0F; + if (item == null || item.getType() == null || item.getType() == Material.AIR) return 0F; if (!item.hasItemMeta() || !item.getItemMeta().hasLore()) return 0F; for (String line: item.getItemMeta().getLore()) { @@ -29,7 +29,7 @@ public class ItemEnergy { } public static float getMaxEnergy(ItemStack item) { - if (item == null || item.getType() == null || item.getType().equals(Material.AIR)) return 0F; + if (item == null || item.getType() == null || item.getType() == Material.AIR) return 0F; if (!item.hasItemMeta() || !item.getItemMeta().hasLore()) return 0F; for (String line: item.getItemMeta().getLore()) { @@ -42,7 +42,7 @@ public class ItemEnergy { } public static float addStoredEnergy(ItemStack item, float energy) { - if (item == null || item.getType() == null || item.getType().equals(Material.AIR)) return 0F; + if (item == null || item.getType() == null || item.getType() == Material.AIR) return 0F; if (!item.hasItemMeta() || !item.getItemMeta().hasLore()) return 0F; float rest = 0F; diff --git a/src/me/mrCookieSlime/Slimefun/listeners/AncientAltarListener.java b/src/me/mrCookieSlime/Slimefun/listeners/AncientAltarListener.java index fa6463fbf..395793199 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/AncientAltarListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/AncientAltarListener.java @@ -64,7 +64,7 @@ public class AncientAltarListener implements Listener { e.setCancelled(true); Item stack = findItem(b); if (stack == null) { - if(e.getPlayer().getInventory().getItemInMainHand().getType().equals(Material.AIR)) return; + if(e.getPlayer().getInventory().getItemInMainHand().getType() == Material.AIR) return; if(b.getRelative(0, 1, 0).getType() != Material.AIR) { Messages.local.sendTranslation(e.getPlayer(), "machines.ANCIENT_PEDESTAL.obstructed", true); return; @@ -102,7 +102,7 @@ public class AncientAltarListener implements Listener { if (pedestals.size() == 8) { pedestals.forEach(block -> utilities.altarinuse.add(block.getLocation())); - if (catalyst != null && !catalyst.getType().equals(Material.AIR)) { + if (catalyst != null && catalyst.getType() != Material.AIR) { List input = new ArrayList<>(); for (Block pedestal: pedestals) { Item stack = findItem(pedestal); diff --git a/src/me/mrCookieSlime/Slimefun/listeners/BlockListener.java b/src/me/mrCookieSlime/Slimefun/listeners/BlockListener.java index 80f858da0..d949cc5ed 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/BlockListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/BlockListener.java @@ -80,7 +80,7 @@ public class BlockListener implements Listener { @EventHandler public void onRightClick(PlayerInteractEvent e) { if (e.getAction() == Action.RIGHT_CLICK_BLOCK) { - if (!e.getHand().equals(EquipmentSlot.HAND)) return; + if (e.getHand() != EquipmentSlot.HAND) return; Player p = e.getPlayer(); Block b = e.getClickedBlock(); List multiblocks = new ArrayList<>(); @@ -119,7 +119,7 @@ public class BlockListener implements Listener { if (blocks[0] != null && blocks[0] == blocks[2] && !BlockAdjacents.hasMaterialOnBothSides(b.getRelative(0, 1, 0), blocks[0])); else if (blocks[3] != null && blocks[3] == blocks[5] && !BlockAdjacents.hasMaterialOnBothSides(b.getRelative(0, 0, 0), blocks[5])); else if (blocks[6] != null && blocks[6] == blocks[8] && !BlockAdjacents.hasMaterialOnBothSides(b.getRelative(0, -1, 0), blocks[8])); - else multiblocks.add(mb);; + else multiblocks.add(mb); } } else if (mb.getTriggerBlock() == blocks[7]) { @@ -136,7 +136,7 @@ public class BlockListener implements Listener { if (blocks[0] != null && blocks[0] == blocks[2] && !BlockAdjacents.hasMaterialOnBothSides(b.getRelative(0, 2, 0), blocks[0])); else if (blocks[3] != null && blocks[3] == blocks[5] && !BlockAdjacents.hasMaterialOnBothSides(b.getRelative(0, 1, 0), blocks[5])); else if (blocks[6] != null && blocks[6] == blocks[8] && !BlockAdjacents.hasMaterialOnBothSides(b.getRelative(0, 0, 0), blocks[8])); - else multiblocks.add(mb);; + else multiblocks.add(mb); } } } diff --git a/src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java b/src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java index 9415eda34..934060229 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java @@ -117,7 +117,7 @@ public class ItemListener implements Listener { } @EventHandler public void debug(PlayerInteractEvent e) { - if (e.getAction().equals(Action.PHYSICAL) || !e.getHand().equals(EquipmentSlot.HAND)) return; + if (e.getAction() == Action.PHYSICAL || e.getHand() != EquipmentSlot.HAND) return; Player p = e.getPlayer(); @@ -196,7 +196,7 @@ public class ItemListener implements Listener { @EventHandler(priority = EventPriority.NORMAL) public void onRightClick(ItemUseEvent e) { - if (e.getParentEvent() != null && !e.getParentEvent().getHand().equals(EquipmentSlot.HAND)) { + if (e.getParentEvent() != null && e.getParentEvent().getHand() != EquipmentSlot.HAND) { return; } @@ -297,7 +297,7 @@ public class ItemListener implements Listener { } private boolean canPlaceBlock(Player p, Block relative) { - return p.isSneaking() && relative.getType().equals(Material.AIR); + return p.isSneaking() && relative.getType() == Material.AIR; } @EventHandler diff --git a/src/me/mrCookieSlime/Slimefun/listeners/TeleporterListener.java b/src/me/mrCookieSlime/Slimefun/listeners/TeleporterListener.java index 29bb56c8b..b71114d5d 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/TeleporterListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/TeleporterListener.java @@ -23,7 +23,7 @@ public class TeleporterListener implements Listener { @EventHandler(priority=EventPriority.HIGHEST,ignoreCancelled=true) public void onStarve(PlayerInteractEvent e) { - if (!e.getAction().equals(Action.PHYSICAL)) return; + if (e.getAction() != Action.PHYSICAL) return; if (e.getClickedBlock() == null) return; SlimefunItem item = BlockStorage.check(e.getClickedBlock()); From 0868f47fc4764832ff94eaa6dba6d031a8945ff2 Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Thu, 29 Aug 2019 20:30:58 +0200 Subject: [PATCH 037/169] Fixed Smeltery Fire-Breaking chance not loading --- src/me/mrCookieSlime/Slimefun/SlimefunStartup.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/SlimefunStartup.java b/src/me/mrCookieSlime/Slimefun/SlimefunStartup.java index 3a27f4066..7b3fbff43 100644 --- a/src/me/mrCookieSlime/Slimefun/SlimefunStartup.java +++ b/src/me/mrCookieSlime/Slimefun/SlimefunStartup.java @@ -156,10 +156,6 @@ public final class SlimefunStartup extends JavaPlugin { Messages.local = utils.getLocalization(); Messages.setup(); - settings = new Settings(config); - settings.RESEARCHES_ENABLED = getResearchCfg().getBoolean("enable-researching"); - settings.SMELTERY_FIRE_BREAK_CHANCE = (Integer) Slimefun.getItemValue("SMELTERY", "chance.fireBreak"); - // Setting up bStats new Metrics(this); @@ -190,10 +186,14 @@ public final class SlimefunStartup extends JavaPlugin { try { SlimefunSetup.setupItems(); - } catch (Exception e1) { - e1.printStackTrace(); + } catch (Exception x) { + x.printStackTrace(); } MiscSetup.loadDescriptions(); + + settings = new Settings(config); + settings.RESEARCHES_ENABLED = getResearchCfg().getBoolean("enable-researching"); + settings.SMELTERY_FIRE_BREAK_CHANCE = (Integer) Slimefun.getItemValue("SMELTERY", "chance.fireBreak"); System.out.println("[Slimefun] Loading Researches..."); ResearchSetup.setupResearches(); From 972505a8bb95e9d254a042f79ffa0f1cafb63c0c Mon Sep 17 00:00:00 2001 From: ajan-12 <36973731+ajan-12@users.noreply.github.com> Date: Thu, 29 Aug 2019 22:23:31 +0300 Subject: [PATCH 038/169] Updating CS-CoreLib2 dependency. --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 6274bb7e6..6d3704d1e 100644 --- a/pom.xml +++ b/pom.xml @@ -122,7 +122,7 @@ com.github.thebusybiscuit CS-CoreLib2 - 0.3.7 + 0.3.8 compile From 388ca2decdabe3c12dbba589f140ab12cbbc6179 Mon Sep 17 00:00:00 2001 From: ajan-12 <36973731+ajan-12@users.noreply.github.com> Date: Thu, 29 Aug 2019 22:24:19 +0300 Subject: [PATCH 039/169] Renaming "Maximum Explosivity" to "Explosive Tools". --- src/me/mrCookieSlime/Slimefun/Setup/ResearchSetup.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/me/mrCookieSlime/Slimefun/Setup/ResearchSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/ResearchSetup.java index 38d3aeb66..d792c1377 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/ResearchSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/ResearchSetup.java @@ -105,7 +105,7 @@ public final class ResearchSetup { Slimefun.registerResearch(new Research(98, "Advanced Mining 101", 42), SlimefunItems.ADVANCED_DIGITAL_MINER); Slimefun.registerResearch(new Research(99, "Composting Dirt", 3), SlimefunItems.COMPOSTER); Slimefun.registerResearch(new Research(100, "Farmer Shoes", 4), SlimefunItems.FARMER_SHOES); - Slimefun.registerResearch(new Research(101, "Maximum Explosivity", 30), SlimefunItems.EXPLOSIVE_PICKAXE, SlimefunItems.EXPLOSIVE_SHOVEL); + Slimefun.registerResearch(new Research(101, "Explosive Tools", 30), SlimefunItems.EXPLOSIVE_PICKAXE, SlimefunItems.EXPLOSIVE_SHOVEL); Slimefun.registerResearch(new Research(102, "Automated Gold Pan", 17), SlimefunItems.AUTOMATED_PANNING_MACHINE); Slimefun.registerResearch(new Research(103, "Boots of the Stomper", 19), SlimefunItems.BOOTS_OF_THE_STOMPER); Slimefun.registerResearch(new Research(104, "Pickaxe of the Seeker", 19), SlimefunItems.PICKAXE_OF_THE_SEEKER); From 4b60ddf8e76917895e2090efd5091f2194c14ec6 Mon Sep 17 00:00:00 2001 From: ajan-12 <36973731+ajan-12@users.noreply.github.com> Date: Thu, 29 Aug 2019 22:24:52 +0300 Subject: [PATCH 040/169] Fixing the placeholder method. --- src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java index 9a69e9361..4edac1611 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java @@ -8,7 +8,7 @@ import java.util.Random; import java.util.Set; import java.util.UUID; -import io.github.thebusybiscuit.cscorelib2.materials.MaterialCollections; +import io.github.thebusybiscuit.cscorelib2.materials.MaterialTools; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.*; import org.bukkit.Bukkit; import org.bukkit.ChatColor; @@ -1809,7 +1809,7 @@ public final class SlimefunSetup { for (int z = -1; z <= 1; z++) { Block b = e.getBlock().getRelative(x, y, z); boolean correctType = false; - for (Material mat : MaterialCollections.getAllFishItems()) { + for (Material mat : MaterialTools.getShovelItems()) { if (b.getType() == mat) { correctType = true; break; From 15ffaae7e12886f2062b5901b9d0cec17cde187c Mon Sep 17 00:00:00 2001 From: ajan-12 <36973731+ajan-12@users.noreply.github.com> Date: Thu, 29 Aug 2019 22:38:53 +0300 Subject: [PATCH 041/169] Adding the materials package to the "maven-shade-plugin" section of the pom.xml --- pom.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/pom.xml b/pom.xml index 6d3704d1e..148713f1b 100644 --- a/pom.xml +++ b/pom.xml @@ -67,6 +67,7 @@ com.github.thebusybiscuit:CS-CoreLib2 **/cscorelib2/updater/** + **/cscorelib2/materials/** From 4370a76fe81fd37778735aadb94a385f6c98d380 Mon Sep 17 00:00:00 2001 From: ajan-12 <36973731+ajan-12@users.noreply.github.com> Date: Thu, 29 Aug 2019 22:40:32 +0300 Subject: [PATCH 042/169] Fixing the typo --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 148713f1b..5c108d1e9 100644 --- a/pom.xml +++ b/pom.xml @@ -67,7 +67,7 @@ com.github.thebusybiscuit:CS-CoreLib2 **/cscorelib2/updater/** - **/cscorelib2/materials/** + **/cscorelib2/materials/** From f86e362e2f5e80b2bd6057e33b7202869c70ca1a Mon Sep 17 00:00:00 2001 From: Sfiguz7 Date: Thu, 29 Aug 2019 22:04:31 +0200 Subject: [PATCH 043/169] Bigger code cleaning --- .../Slimefun/Objects/LockedCategory.java | 6 +- .../Objects/SlimefunItem/EnhancedFurnace.java | 14 +- .../Objects/SlimefunItem/MultiTool.java | 4 +- .../SlimefunItem/abstractItems/AReactor.java | 8 +- .../SlimefunItem/machines/AutoAnvil.java | 22 +- .../machines/CropGrowthAccelerator.java | 28 +- .../machines/EnhancedCraftingTable.java | 206 +++--- .../SlimefunItem/machines/MagicWorkbench.java | 230 +++--- .../SlimefunItem/machines/OreWasher.java | 126 ++-- .../SlimefunItem/machines/Smeltery.java | 108 ++- .../Slimefun/Objects/tasks/MagnetTask.java | 8 +- .../Slimefun/Setup/SlimefunSetup.java | 686 +++++++++--------- .../mrCookieSlime/Slimefun/SlimefunGuide.java | 4 +- .../Slimefun/SlimefunStartup.java | 22 +- .../androids/ProgrammableAndroid.java | 24 +- .../Slimefun/api/SlimefunRecipes.java | 6 +- .../Slimefun/api/inventory/BlockMenu.java | 4 +- .../api/inventory/UniversalBlockMenu.java | 4 +- .../holograms/AndroidStatusHologram.java | 4 +- .../holograms/AnimalGrowthAccelerator.java | 4 +- .../Slimefun/holograms/AutoBreeder.java | 4 +- .../Slimefun/holograms/CargoHologram.java | 4 +- .../Slimefun/holograms/EnergyHologram.java | 4 +- .../Slimefun/holograms/InfusedHopper.java | 4 +- .../Slimefun/holograms/Projector.java | 4 +- .../Slimefun/holograms/ReactorHologram.java | 4 +- .../Slimefun/holograms/XPCollector.java | 4 +- .../Slimefun/hooks/ClearLagHook.java | 4 +- .../listeners/AncientAltarListener.java | 4 +- .../Slimefun/listeners/ArmorListener.java | 12 +- .../Slimefun/listeners/BlockListener.java | 72 +- .../Slimefun/listeners/BowListener.java | 88 ++- .../Slimefun/listeners/DamageListener.java | 72 +- .../Slimefun/listeners/FurnaceListener.java | 5 +- .../Slimefun/listeners/GearListener.java | 20 +- .../Slimefun/listeners/ItemListener.java | 10 +- .../Slimefun/listeners/TalismanListener.java | 64 +- .../Slimefun/listeners/ToolListener.java | 8 +- 38 files changed, 870 insertions(+), 1035 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/Objects/LockedCategory.java b/src/me/mrCookieSlime/Slimefun/Objects/LockedCategory.java index 2e2703c52..cd6c86ead 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/LockedCategory.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/LockedCategory.java @@ -116,11 +116,7 @@ public class LockedCategory extends Category { for (Category category: parents) { for (SlimefunItem item: category.getItems()) { - if (Slimefun.isEnabled(p, item.getItem(), false) && Slimefun.hasPermission(p, item, false)) { - if (item.getResearch() != null) { - if (!profile.hasUnlocked(item.getResearch())) return false; - } - } + if (Slimefun.isEnabled(p, item.getItem(), false) && Slimefun.hasPermission(p, item, false) && item.getResearch() != null && !profile.hasUnlocked(item.getResearch())) return false; } } return true; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/EnhancedFurnace.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/EnhancedFurnace.java index 35b8d8b8b..5aa3301de 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/EnhancedFurnace.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/EnhancedFurnace.java @@ -27,17 +27,15 @@ public class EnhancedFurnace extends SlimefunItem { addItemHandler(new BlockTicker() { @Override public void tick(Block b, SlimefunItem item, Config data) { - if (b.getState() instanceof Furnace) { - if (((Furnace) b.getState()).getCookTime() > 0) { - Furnace furnace = (Furnace) b.getState(); + if (b.getState() instanceof Furnace && ((Furnace) b.getState()).getCookTime() > 0) { + Furnace furnace = (Furnace) b.getState(); - int newCookTime = furnace.getCookTime() + getSpeed() * 10; + int newCookTime = furnace.getCookTime() + getSpeed() * 10; - if (newCookTime > 200) furnace.setCookTime((short) 188); - else furnace.setCookTime((short) newCookTime); + if (newCookTime > 200) furnace.setCookTime((short) 188); + else furnace.setCookTime((short) newCookTime); - furnace.update(true, false); - } + furnace.update(true, false); } } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/MultiTool.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/MultiTool.java index 3fcd05ff9..d26bb4271 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/MultiTool.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/MultiTool.java @@ -21,9 +21,7 @@ public class MultiTool extends DamagableChargableItem { public void create() { List list = new ArrayList<>(); for (int i = 0; i < 50; i++) { - if (Slimefun.getItemValue(this.getID(), "mode." + i + ".enabled") != null) { - if ((Boolean) Slimefun.getItemValue(this.getID(), "mode." + i + ".enabled")) list.add(i); - } + if (Slimefun.getItemValue(this.getID(), "mode." + i + ".enabled") != null && (Boolean) Slimefun.getItemValue(this.getID(), "mode." + i + ".enabled")) list.add(i); } this.modes = list; } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AReactor.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AReactor.java index 69ccdfe70..3d4ae3c0f 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AReactor.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AReactor.java @@ -360,11 +360,9 @@ public abstract class AReactor extends SlimefunItem { refill: for (int slot: getFuelSlots()) { for (MachineFuel recipe: recipes) { - if (SlimefunManager.isItemSimiliar(port.getItemInSlot(slot), recipe.getInput(), true)) { - if (pushItems(l, new CustomItem(port.getItemInSlot(slot), 1), getFuelSlots()) == null) { - port.replaceExistingItem(slot, InvUtils.decreaseItem(port.getItemInSlot(slot), 1)); - break refill; - } + if (SlimefunManager.isItemSimiliar(port.getItemInSlot(slot), recipe.getInput(), true) && pushItems(l, new CustomItem(port.getItemInSlot(slot), 1), getFuelSlots()) == null) { + port.replaceExistingItem(slot, InvUtils.decreaseItem(port.getItemInSlot(slot), 1)); + break refill; } } } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoAnvil.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoAnvil.java index a8a069f17..9d74f863e 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoAnvil.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoAnvil.java @@ -91,19 +91,17 @@ public abstract class AutoAnvil extends AContainer { for (int slot: getInputSlots()) { ItemStack target = BlockStorage.getInventory(b).getItemInSlot(slot == getInputSlots()[0] ? getInputSlots()[1]: getInputSlots()[0]); ItemStack item = BlockStorage.getInventory(b).getItemInSlot(slot); - if (item != null) { - if (item.getType().getMaxDurability() > 0 && ((Damageable) item.getItemMeta()).getDamage() > 0) { - if (SlimefunManager.isItemSimiliar(target, SlimefunItems.DUCT_TAPE, true)) { - ItemStack newItem = item.clone(); - short durability = (short) (((Damageable) newItem.getItemMeta()).getDamage() - (item.getType().getMaxDurability() / getRepairFactor())); - if (durability < 0) durability = 0; - ItemMeta meta = newItem.getItemMeta(); - ((Damageable) meta).setDamage(durability); - newItem.setItemMeta(meta); - r = new MachineRecipe(30, new ItemStack[] {target, item}, new ItemStack[] {newItem}); - } - break slots; + if (item != null && item.getType().getMaxDurability() > 0 && ((Damageable) item.getItemMeta()).getDamage() > 0) { + if (SlimefunManager.isItemSimiliar(target, SlimefunItems.DUCT_TAPE, true)) { + ItemStack newItem = item.clone(); + short durability = (short) (((Damageable) newItem.getItemMeta()).getDamage() - (item.getType().getMaxDurability() / getRepairFactor())); + if (durability < 0) durability = 0; + ItemMeta meta = newItem.getItemMeta(); + ((Damageable) meta).setDamage(durability); + newItem.setItemMeta(meta); + r = new MachineRecipe(30, new ItemStack[] {target, item}, new ItemStack[] {newItem}); } + break slots; } } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/CropGrowthAccelerator.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/CropGrowthAccelerator.java index 253b77690..27c71c2f9 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/CropGrowthAccelerator.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/CropGrowthAccelerator.java @@ -139,22 +139,20 @@ public abstract class CropGrowthAccelerator extends SlimefunItem { for (int x = -getRadius(); x <= getRadius(); x++) { for (int z = -getRadius(); z <= getRadius(); z++) { Block block = b.getRelative(x, 0, z); - if (crops.containsKey(block.getType())) { - if (((Ageable) block.getBlockData()).getAge() < crops.get(block.getType())) { - for (int slot : getInputSlots()) { - if (SlimefunManager.isItemSimiliar(BlockStorage.getInventory(b).getItemInSlot(slot), SlimefunItems.FERTILIZER, false)) { - if (work > (getSpeed() - 1)) break master; - if (ChargableBlock.getCharge(b) < getEnergyConsumption()) break master; - ChargableBlock.addCharge(b, -getEnergyConsumption()); - - Ageable ageable = (Ageable) block.getBlockData(); - ageable.setAge(ageable.getAge() + 1); - block.setBlockData(ageable); + if (crops.containsKey(block.getType()) && ((Ageable) block.getBlockData()).getAge() < crops.get(block.getType())) { + for (int slot : getInputSlots()) { + if (SlimefunManager.isItemSimiliar(BlockStorage.getInventory(b).getItemInSlot(slot), SlimefunItems.FERTILIZER, false)) { + if (work > (getSpeed() - 1)) break master; + if (ChargableBlock.getCharge(b) < getEnergyConsumption()) break master; + ChargableBlock.addCharge(b, -getEnergyConsumption()); - block.getWorld().spawnParticle(Particle.VILLAGER_HAPPY, block.getLocation().add(0.5D, 0.5D, 0.5D), 4, 0.1F, 0.1F, 0.1F); - work++; - break; - } + Ageable ageable = (Ageable) block.getBlockData(); + ageable.setAge(ageable.getAge() + 1); + block.setBlockData(ageable); + + block.getWorld().spawnParticle(Particle.VILLAGER_HAPPY, block.getLocation().add(0.5D, 0.5D, 0.5D), 4, 0.1F, 0.1F, 0.1F); + work++; + break; } } } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/EnhancedCraftingTable.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/EnhancedCraftingTable.java index c653456d4..4ae5f88c1 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/EnhancedCraftingTable.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/EnhancedCraftingTable.java @@ -49,122 +49,114 @@ public class EnhancedCraftingTable extends SlimefunMachine { private MultiBlockInteractionHandler onInteract() { return (p, mb, b) -> { if (mb.isMultiBlock(this)) { - if (CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true)) { - if (Slimefun.hasUnlocked(p, getItem(), true)) { - // Objects dispBlock and disp have been split up, in order to add the output chest functionallity, which is the only functionallity - // that is dependant on the dispenser's block methods. - // the Dispenser disp still remains the same though, and as such doesn't break any existing code which involves said object. - Block dispBlock = b.getRelative(BlockFace.DOWN); - Dispenser disp = (Dispenser) dispBlock.getState(); - Inventory inv = disp.getInventory(); - - List inputs = RecipeType.getRecipeInputList(this); + if (CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true) && Slimefun.hasUnlocked(p, getItem(), true)) { + // Objects dispBlock and disp have been split up, in order to add the output chest functionallity, which is the only functionallity + // that is dependant on the dispenser's block methods. + // the Dispenser disp still remains the same though, and as such doesn't break any existing code which involves said object. + Block dispBlock = b.getRelative(BlockFace.DOWN); + Dispenser disp = (Dispenser) dispBlock.getState(); + Inventory inv = disp.getInventory(); - for (int i = 0; i < inputs.size(); i++) { - boolean craft = true; - for (int j = 0; j < inv.getContents().length; j++) { - if (!SlimefunManager.isItemSimiliar(inv.getContents()[j], inputs.get(i)[j], true)) { - if (SlimefunItem.getByItem(inputs.get(i)[j]) instanceof SlimefunBackpack) { - if (!SlimefunManager.isItemSimiliar(inv.getContents()[j], inputs.get(i)[j], false)) { - craft = false; - break; - } - } - else { + List inputs = RecipeType.getRecipeInputList(this); + + for (int i = 0; i < inputs.size(); i++) { + boolean craft = true; + for (int j = 0; j < inv.getContents().length; j++) { + if (!SlimefunManager.isItemSimiliar(inv.getContents()[j], inputs.get(i)[j], true)) { + if (SlimefunItem.getByItem(inputs.get(i)[j]) instanceof SlimefunBackpack) { + if (!SlimefunManager.isItemSimiliar(inv.getContents()[j], inputs.get(i)[j], false)) { craft = false; break; } } - } - - if (craft) { - final ItemStack adding = RecipeType.getRecipeOutputList(this, inputs.get(i)).clone(); - if (Slimefun.hasUnlocked(p, adding, true)) { - Inventory inv2 = Bukkit.createInventory(null, 9, "test"); - for (int j = 0; j < inv.getContents().length; j++) { - inv2.setItem(j, inv.getContents()[j] != null ? (inv.getContents()[j].getAmount() > 1 ? new CustomItem(inv.getContents()[j], inv.getContents()[j].getAmount() - 1): null): null); - } - - Inventory outputInv = SlimefunMachine.findValidOutputInv(adding, dispBlock, inv, inv2); - - if (outputInv != null) { - SlimefunItem sfItem = SlimefunItem.getByItem(adding); - if (sfItem instanceof SlimefunBackpack) { - ItemStack backpack = null; - - for (int j = 0; j < 9; j++) { - if (inv.getContents()[j] != null) { - if (inv.getContents()[j].getType() != Material.AIR) { - if (SlimefunItem.getByItem(inv.getContents()[j]) instanceof SlimefunBackpack) { - backpack = inv.getContents()[j]; - break; - } - } - } - } - String id = ""; - int size = ((SlimefunBackpack) sfItem).getSize(); - - if (backpack != null) { - for (String line: backpack.getItemMeta().getLore()) { - if (line.startsWith(ChatColor.translateAlternateColorCodes('&', "&7ID: ")) && line.contains("#")) { - id = line.replace(ChatColor.translateAlternateColorCodes('&', "&7ID: "), ""); - PlayerProfile.fromUUID(UUID.fromString(id.split("#")[0])).getBackpack(Integer.parseInt(id.split("#")[1])).setSize(size); - break; - } - } - } - - if (id.equals("")) { - for (int line = 0; line < adding.getItemMeta().getLore().size(); line++) { - if (adding.getItemMeta().getLore().get(line).equals(ChatColor.translateAlternateColorCodes('&', "&7ID: "))) { - int backpackID = PlayerProfile.fromUUID(p.getUniqueId()).createBackpack(size).getID(); - - ItemMeta im = adding.getItemMeta(); - List lore = im.getLore(); - lore.set(line, lore.get(line).replace("", p.getUniqueId() + "#" + backpackID)); - im.setLore(lore); - adding.setItemMeta(im); - break; - } - } - } - else { - for (int line = 0; line < adding.getItemMeta().getLore().size(); line++) { - if (adding.getItemMeta().getLore().get(line).equals(ChatColor.translateAlternateColorCodes('&', "&7ID: "))) { - ItemMeta im = adding.getItemMeta(); - List lore = im.getLore(); - lore.set(line, lore.get(line).replace("", id)); - im.setLore(lore); - adding.setItemMeta(im); - break; - } - } - } - } - - - for (int j = 0; j < 9; j++) { - if (inv.getContents()[j] != null) { - if (inv.getContents()[j].getType() != Material.AIR) { - if (inv.getContents()[j].getType().toString().endsWith("_BUCKET")) inv.setItem(j, new ItemStack(Material.BUCKET)); - else if (inv.getContents()[j].getAmount() > 1) inv.setItem(j, new CustomItem(inv.getContents()[j], inv.getContents()[j].getAmount() - 1)); - else inv.setItem(j, null); - } - } - } - p.getWorld().playSound(b.getLocation(), Sound.BLOCK_WOODEN_BUTTON_CLICK_ON, 1, 1); - - outputInv.addItem(adding); - - } - else Messages.local.sendTranslation(p, "machines.full-inventory", true); + else { + craft = false; + break; } - return true; } } - Messages.local.sendTranslation(p, "machines.pattern-not-found", true); + + if (craft) { + final ItemStack adding = RecipeType.getRecipeOutputList(this, inputs.get(i)).clone(); + if (Slimefun.hasUnlocked(p, adding, true)) { + Inventory inv2 = Bukkit.createInventory(null, 9, "test"); + for (int j = 0; j < inv.getContents().length; j++) { + inv2.setItem(j, inv.getContents()[j] != null ? (inv.getContents()[j].getAmount() > 1 ? new CustomItem(inv.getContents()[j], inv.getContents()[j].getAmount() - 1): null): null); + } + + Inventory outputInv = SlimefunMachine.findValidOutputInv(adding, dispBlock, inv, inv2); + + if (outputInv != null) { + SlimefunItem sfItem = SlimefunItem.getByItem(adding); + if (sfItem instanceof SlimefunBackpack) { + ItemStack backpack = null; + + for (int j = 0; j < 9; j++) { + if (inv.getContents()[j] != null && inv.getContents()[j].getType() != Material.AIR && SlimefunItem.getByItem(inv.getContents()[j]) instanceof SlimefunBackpack) { + backpack = inv.getContents()[j]; + break; + } + } + String id = ""; + int size = ((SlimefunBackpack) sfItem).getSize(); + + if (backpack != null) { + for (String line: backpack.getItemMeta().getLore()) { + if (line.startsWith(ChatColor.translateAlternateColorCodes('&', "&7ID: ")) && line.contains("#")) { + id = line.replace(ChatColor.translateAlternateColorCodes('&', "&7ID: "), ""); + PlayerProfile.fromUUID(UUID.fromString(id.split("#")[0])).getBackpack(Integer.parseInt(id.split("#")[1])).setSize(size); + break; + } + } + } + + if (id.equals("")) { + for (int line = 0; line < adding.getItemMeta().getLore().size(); line++) { + if (adding.getItemMeta().getLore().get(line).equals(ChatColor.translateAlternateColorCodes('&', "&7ID: "))) { + int backpackID = PlayerProfile.fromUUID(p.getUniqueId()).createBackpack(size).getID(); + + ItemMeta im = adding.getItemMeta(); + List lore = im.getLore(); + lore.set(line, lore.get(line).replace("", p.getUniqueId() + "#" + backpackID)); + im.setLore(lore); + adding.setItemMeta(im); + break; + } + } + } + else { + for (int line = 0; line < adding.getItemMeta().getLore().size(); line++) { + if (adding.getItemMeta().getLore().get(line).equals(ChatColor.translateAlternateColorCodes('&', "&7ID: "))) { + ItemMeta im = adding.getItemMeta(); + List lore = im.getLore(); + lore.set(line, lore.get(line).replace("", id)); + im.setLore(lore); + adding.setItemMeta(im); + break; + } + } + } + } + + + for (int j = 0; j < 9; j++) { + if (inv.getContents()[j] != null && inv.getContents()[j].getType() != Material.AIR) { + if (inv.getContents()[j].getType().toString().endsWith("_BUCKET")) inv.setItem(j, new ItemStack(Material.BUCKET)); + else if (inv.getContents()[j].getAmount() > 1) inv.setItem(j, new CustomItem(inv.getContents()[j], inv.getContents()[j].getAmount() - 1)); + else inv.setItem(j, null); + } + } + p.getWorld().playSound(b.getLocation(), Sound.BLOCK_WOODEN_BUTTON_CLICK_ON, 1, 1); + + outputInv.addItem(adding); + + } + else Messages.local.sendTranslation(p, "machines.full-inventory", true); + } + return true; + } } + Messages.local.sendTranslation(p, "machines.pattern-not-found", true); } return true; } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/MagicWorkbench.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/MagicWorkbench.java index d65086bd2..cdef16870 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/MagicWorkbench.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/MagicWorkbench.java @@ -50,134 +50,126 @@ public class MagicWorkbench extends SlimefunMachine { private MultiBlockInteractionHandler onInteract() { return (p, mb, b) -> { if (mb.isMultiBlock(this)) { - if (CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true)) { - if (Slimefun.hasUnlocked(p, getItem(), true)) { - Block dispBlock = null; - - // Maybe this could be implemented by instead looping over a BlockFace<> array? - if (b.getRelative(1, 0, 0).getType() == Material.DISPENSER) dispBlock = b.getRelative(1, 0, 0); - else if (b.getRelative(0, 0, 1).getType() == Material.DISPENSER) dispBlock = b.getRelative(0, 0, 1); - else if (b.getRelative(-1, 0, 0).getType() == Material.DISPENSER) dispBlock = b.getRelative(-1, 0, 0); - else if (b.getRelative(0, 0, -1).getType() == Material.DISPENSER) dispBlock = b.getRelative(0, 0, -1); - - Dispenser disp = (Dispenser) dispBlock.getState(); - final Inventory inv = disp.getInventory(); - List inputs = RecipeType.getRecipeInputList(this); + if (CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true) && Slimefun.hasUnlocked(p, getItem(), true)) { + Block dispBlock = null; - for (int i = 0; i < inputs.size(); i++) { - boolean craft = true; - for (int j = 0; j < inv.getContents().length; j++) { - if (!SlimefunManager.isItemSimiliar(inv.getContents()[j], inputs.get(i)[j], true)) { - if (SlimefunItem.getByItem(inputs.get(i)[j]) instanceof SlimefunBackpack) { - if (!SlimefunManager.isItemSimiliar(inv.getContents()[j], inputs.get(i)[j], false)) { - craft = false; - break; - } - } - else { + // Maybe this could be implemented by instead looping over a BlockFace<> array? + if (b.getRelative(1, 0, 0).getType() == Material.DISPENSER) dispBlock = b.getRelative(1, 0, 0); + else if (b.getRelative(0, 0, 1).getType() == Material.DISPENSER) dispBlock = b.getRelative(0, 0, 1); + else if (b.getRelative(-1, 0, 0).getType() == Material.DISPENSER) dispBlock = b.getRelative(-1, 0, 0); + else if (b.getRelative(0, 0, -1).getType() == Material.DISPENSER) dispBlock = b.getRelative(0, 0, -1); + + Dispenser disp = (Dispenser) dispBlock.getState(); + final Inventory inv = disp.getInventory(); + List inputs = RecipeType.getRecipeInputList(this); + + for (int i = 0; i < inputs.size(); i++) { + boolean craft = true; + for (int j = 0; j < inv.getContents().length; j++) { + if (!SlimefunManager.isItemSimiliar(inv.getContents()[j], inputs.get(i)[j], true)) { + if (SlimefunItem.getByItem(inputs.get(i)[j]) instanceof SlimefunBackpack) { + if (!SlimefunManager.isItemSimiliar(inv.getContents()[j], inputs.get(i)[j], false)) { craft = false; break; } } - } - - if (craft) { - final ItemStack adding = RecipeType.getRecipeOutputList(this, inputs.get(i)).clone(); - if (Slimefun.hasUnlocked(p, adding, true)) { - Inventory inv2 = Bukkit.createInventory(null, 9, "test"); - - for (int j = 0; j < inv.getContents().length; j++) { - inv2.setItem(j, inv.getContents()[j] != null ? (inv.getContents()[j].getAmount() > 1 ? new CustomItem(inv.getContents()[j], inv.getContents()[j].getAmount() - 1): null): null); - } - - Inventory outputInv = SlimefunMachine.findValidOutputInv(adding, dispBlock, inv, inv2); - if (outputInv != null) { - SlimefunItem sfItem = SlimefunItem.getByItem(adding); - - if (sfItem instanceof SlimefunBackpack) { - ItemStack backpack = null; - - for (int j = 0; j < 9; j++) { - if (inv.getContents()[j] != null) { - if (inv.getContents()[j].getType() != Material.AIR) { - if (SlimefunItem.getByItem(inv.getContents()[j]) instanceof SlimefunBackpack) { - backpack = inv.getContents()[j]; - break; - } - } - } - } - - String id = ""; - int size = ((SlimefunBackpack) sfItem).getSize(); - - if (backpack != null) { - for (String line: backpack.getItemMeta().getLore()) { - if (line.startsWith(ChatColor.translateAlternateColorCodes('&', "&7ID: ")) && line.contains("#")) { - id = line.replace(ChatColor.translateAlternateColorCodes('&', "&7ID: "), ""); - PlayerProfile.fromUUID(UUID.fromString(id.split("#")[0])).getBackpack(Integer.parseInt(id.split("#")[1])).setSize(size); - break; - } - } - } - - if (id.equals("")) { - for (int line = 0; line < adding.getItemMeta().getLore().size(); line++) { - if (adding.getItemMeta().getLore().get(line).equals(ChatColor.translateAlternateColorCodes('&', "&7ID: "))) { - int backpackID = PlayerProfile.fromUUID(p.getUniqueId()).createBackpack(size).getID(); - - ItemMeta im = adding.getItemMeta(); - List lore = im.getLore(); - lore.set(line, lore.get(line).replace("", p.getUniqueId() + "#" + backpackID)); - im.setLore(lore); - adding.setItemMeta(im); - break; - } - } - } - else { - for (int line = 0; line < adding.getItemMeta().getLore().size(); line++) { - if (adding.getItemMeta().getLore().get(line).equals(ChatColor.translateAlternateColorCodes('&', "&7ID: "))) { - ItemMeta im = adding.getItemMeta(); - List lore = im.getLore(); - lore.set(line, lore.get(line).replace("", id)); - im.setLore(lore); - adding.setItemMeta(im); - break; - } - } - } - } - - for (int j = 0; j < 9; j++) { - if (inv.getContents()[j] != null) { - if (inv.getContents()[j].getType() != Material.AIR) { - if (inv.getContents()[j].getAmount() > 1) inv.setItem(j, new CustomItem(inv.getContents()[j], inv.getContents()[j].getAmount() - 1)); - else inv.setItem(j, null); - } - } - } - for (int j = 0; j < 4; j++) { - int current = j; - Bukkit.getScheduler().runTaskLater(SlimefunStartup.instance, () -> { - 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 { - p.getWorld().playSound(p.getLocation(), Sound.ENTITY_ARROW_HIT_PLAYER, 1F, 1F); - outputInv.addItem(adding); - } - }, j*20L); - } - } - else Messages.local.sendTranslation(p, "machines.full-inventory", true); + else { + craft = false; + break; } - return true; } } - Messages.local.sendTranslation(p, "machines.pattern-not-found", true); + + if (craft) { + final ItemStack adding = RecipeType.getRecipeOutputList(this, inputs.get(i)).clone(); + if (Slimefun.hasUnlocked(p, adding, true)) { + Inventory inv2 = Bukkit.createInventory(null, 9, "test"); + + for (int j = 0; j < inv.getContents().length; j++) { + inv2.setItem(j, inv.getContents()[j] != null ? (inv.getContents()[j].getAmount() > 1 ? new CustomItem(inv.getContents()[j], inv.getContents()[j].getAmount() - 1): null): null); + } + + Inventory outputInv = SlimefunMachine.findValidOutputInv(adding, dispBlock, inv, inv2); + if (outputInv != null) { + SlimefunItem sfItem = SlimefunItem.getByItem(adding); + + if (sfItem instanceof SlimefunBackpack) { + ItemStack backpack = null; + + for (int j = 0; j < 9; j++) { + if (inv.getContents()[j] != null && inv.getContents()[j].getType() != Material.AIR && SlimefunItem.getByItem(inv.getContents()[j]) instanceof SlimefunBackpack) { + backpack = inv.getContents()[j]; + break; + } + } + + String id = ""; + int size = ((SlimefunBackpack) sfItem).getSize(); + + if (backpack != null) { + for (String line: backpack.getItemMeta().getLore()) { + if (line.startsWith(ChatColor.translateAlternateColorCodes('&', "&7ID: ")) && line.contains("#")) { + id = line.replace(ChatColor.translateAlternateColorCodes('&', "&7ID: "), ""); + PlayerProfile.fromUUID(UUID.fromString(id.split("#")[0])).getBackpack(Integer.parseInt(id.split("#")[1])).setSize(size); + break; + } + } + } + + if (id.equals("")) { + for (int line = 0; line < adding.getItemMeta().getLore().size(); line++) { + if (adding.getItemMeta().getLore().get(line).equals(ChatColor.translateAlternateColorCodes('&', "&7ID: "))) { + int backpackID = PlayerProfile.fromUUID(p.getUniqueId()).createBackpack(size).getID(); + + ItemMeta im = adding.getItemMeta(); + List lore = im.getLore(); + lore.set(line, lore.get(line).replace("", p.getUniqueId() + "#" + backpackID)); + im.setLore(lore); + adding.setItemMeta(im); + break; + } + } + } + else { + for (int line = 0; line < adding.getItemMeta().getLore().size(); line++) { + if (adding.getItemMeta().getLore().get(line).equals(ChatColor.translateAlternateColorCodes('&', "&7ID: "))) { + ItemMeta im = adding.getItemMeta(); + List lore = im.getLore(); + lore.set(line, lore.get(line).replace("", id)); + im.setLore(lore); + adding.setItemMeta(im); + break; + } + } + } + } + + for (int j = 0; j < 9; j++) { + if (inv.getContents()[j] != null && inv.getContents()[j].getType() != Material.AIR) { + if (inv.getContents()[j].getAmount() > 1) inv.setItem(j, new CustomItem(inv.getContents()[j], inv.getContents()[j].getAmount() - 1)); + else inv.setItem(j, null); + } + } + for (int j = 0; j < 4; j++) { + int current = j; + Bukkit.getScheduler().runTaskLater(SlimefunStartup.instance, () -> { + 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 { + p.getWorld().playSound(p.getLocation(), Sound.ENTITY_ARROW_HIT_PLAYER, 1F, 1F); + outputInv.addItem(adding); + } + }, j*20L); + } + } + else Messages.local.sendTranslation(p, "machines.full-inventory", true); + } + return true; + } } + Messages.local.sendTranslation(p, "machines.pattern-not-found", true); } return true; } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/OreWasher.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/OreWasher.java index 145843996..7a90427f0 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/OreWasher.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/OreWasher.java @@ -45,76 +45,74 @@ public class OreWasher extends SlimefunMachine { private MultiBlockInteractionHandler onInteract() { return (p, mb, b) -> { if (mb.isMultiBlock(this)) { - if (CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true)) { - if (Slimefun.hasUnlocked(p, getItem(), true)) { - Block dispBlock = b.getRelative(BlockFace.UP); - Dispenser disp = (Dispenser) dispBlock.getState(); - Inventory inv = disp.getInventory(); - - for (ItemStack current: inv.getContents()) { - if (current != null) { - if (SlimefunManager.isItemSimiliar(current, SlimefunItems.SIFTED_ORE, true)) { - ItemStack adding = items[new Random().nextInt(items.length)]; - Inventory outputInv = null; - - if (!SlimefunStartup.instance.getSettings().ORE_WASHER_LEGACY) { - // This is a fancy way of checking if there is empty space in the inv; by checking if an unobtainable item could fit in it. - // However, due to the way the method findValidOutputInv() functions, the dummyAdding will never actually be added to the real inventory, - // so it really doesn't matter what item the ItemStack is made by. SlimefunItems.DEBUG_FISH however, signals that it's - // not supposed to be given to the player. - ItemStack dummyAdding = SlimefunItems.DEBUG_FISH; - outputInv = SlimefunMachine.findValidOutputInv(dummyAdding, dispBlock, inv); - } - else outputInv = SlimefunMachine.findValidOutputInv(adding, dispBlock, inv); - - if (outputInv != null) { - ItemStack removing = current.clone(); - removing.setAmount(1); - inv.removeItem(removing); - outputInv.addItem(adding); - p.getWorld().playSound(b.getLocation(), Sound.ENTITY_PLAYER_SPLASH, 1, 1); - p.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, Material.WATER); - if (InvUtils.fits(outputInv, SlimefunItems.STONE_CHUNK)) outputInv.addItem(SlimefunItems.STONE_CHUNK); - } - else Messages.local.sendTranslation(p, "machines.full-inventory", true); - return true; + if (CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true) && Slimefun.hasUnlocked(p, getItem(), true)) { + Block dispBlock = b.getRelative(BlockFace.UP); + Dispenser disp = (Dispenser) dispBlock.getState(); + Inventory inv = disp.getInventory(); + + for (ItemStack current: inv.getContents()) { + if (current != null) { + if (SlimefunManager.isItemSimiliar(current, SlimefunItems.SIFTED_ORE, true)) { + ItemStack adding = items[new Random().nextInt(items.length)]; + Inventory outputInv = null; + + if (!SlimefunStartup.instance.getSettings().ORE_WASHER_LEGACY) { + // This is a fancy way of checking if there is empty space in the inv; by checking if an unobtainable item could fit in it. + // However, due to the way the method findValidOutputInv() functions, the dummyAdding will never actually be added to the real inventory, + // so it really doesn't matter what item the ItemStack is made by. SlimefunItems.DEBUG_FISH however, signals that it's + // not supposed to be given to the player. + ItemStack dummyAdding = SlimefunItems.DEBUG_FISH; + outputInv = SlimefunMachine.findValidOutputInv(dummyAdding, dispBlock, inv); } - else if (SlimefunManager.isItemSimiliar(current, new ItemStack(Material.SAND, 4), false)) { - ItemStack adding = SlimefunItems.SALT; - Inventory outputInv = SlimefunMachine.findValidOutputInv(adding, dispBlock, inv); - - if (outputInv != null) { - ItemStack removing = current.clone(); - removing.setAmount(4); - inv.removeItem(removing); - outputInv.addItem(adding); - p.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, Material.WATER); - p.getWorld().playSound(b.getLocation(), Sound.ENTITY_PLAYER_SPLASH, 1, 1); - } - else Messages.local.sendTranslation(p, "machines.full-inventory", true); - - return true; + else outputInv = SlimefunMachine.findValidOutputInv(adding, dispBlock, inv); + + if (outputInv != null) { + ItemStack removing = current.clone(); + removing.setAmount(1); + inv.removeItem(removing); + outputInv.addItem(adding); + p.getWorld().playSound(b.getLocation(), Sound.ENTITY_PLAYER_SPLASH, 1, 1); + p.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, Material.WATER); + if (InvUtils.fits(outputInv, SlimefunItems.STONE_CHUNK)) outputInv.addItem(SlimefunItems.STONE_CHUNK); } - else if (SlimefunManager.isItemSimiliar(current, SlimefunItems.PULVERIZED_ORE, true)) { - ItemStack adding = SlimefunItems.PURE_ORE_CLUSTER; - Inventory outputInv = SlimefunMachine.findValidOutputInv(adding, dispBlock, inv); - - if (outputInv != null) { - ItemStack removing = current.clone(); - removing.setAmount(1); - inv.removeItem(removing); - outputInv.addItem(adding); - p.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, Material.WATER); - p.getWorld().playSound(b.getLocation(), Sound.ENTITY_PLAYER_SPLASH, 1, 1); - } - else Messages.local.sendTranslation(p, "machines.full-inventory", true); - - return true; + else Messages.local.sendTranslation(p, "machines.full-inventory", true); + return true; + } + else if (SlimefunManager.isItemSimiliar(current, new ItemStack(Material.SAND, 4), false)) { + ItemStack adding = SlimefunItems.SALT; + Inventory outputInv = SlimefunMachine.findValidOutputInv(adding, dispBlock, inv); + + if (outputInv != null) { + ItemStack removing = current.clone(); + removing.setAmount(4); + inv.removeItem(removing); + outputInv.addItem(adding); + p.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, Material.WATER); + p.getWorld().playSound(b.getLocation(), Sound.ENTITY_PLAYER_SPLASH, 1, 1); } + else Messages.local.sendTranslation(p, "machines.full-inventory", true); + + return true; + } + else if (SlimefunManager.isItemSimiliar(current, SlimefunItems.PULVERIZED_ORE, true)) { + ItemStack adding = SlimefunItems.PURE_ORE_CLUSTER; + Inventory outputInv = SlimefunMachine.findValidOutputInv(adding, dispBlock, inv); + + if (outputInv != null) { + ItemStack removing = current.clone(); + removing.setAmount(1); + inv.removeItem(removing); + outputInv.addItem(adding); + p.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, Material.WATER); + p.getWorld().playSound(b.getLocation(), Sound.ENTITY_PLAYER_SPLASH, 1, 1); + } + else Messages.local.sendTranslation(p, "machines.full-inventory", true); + + return true; } } - Messages.local.sendTranslation(p, "machines.unknown-material", true); } + Messages.local.sendTranslation(p, "machines.unknown-material", true); } return true; } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/Smeltery.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/Smeltery.java index 15f51ad01..43f1fff23 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/Smeltery.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/Smeltery.java @@ -50,78 +50,76 @@ public class Smeltery extends SlimefunMachine { private MultiBlockInteractionHandler onInteract() { return (p, mb, b) -> { if (mb.isMultiBlock(this)) { - if (CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true)) { - if (Slimefun.hasUnlocked(p, getItem(), true)) { - Block dispBlock = b.getRelative(BlockFace.DOWN); - Dispenser disp = (Dispenser) dispBlock.getState(); - Inventory inv = disp.getInventory(); - List inputs = RecipeType.getRecipeInputList(this); + if (CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true) && Slimefun.hasUnlocked(p, getItem(), true)) { + Block dispBlock = b.getRelative(BlockFace.DOWN); + Dispenser disp = (Dispenser) dispBlock.getState(); + Inventory inv = disp.getInventory(); + List inputs = RecipeType.getRecipeInputList(this); - for (int i = 0; i < inputs.size(); i++) { - boolean craft = true; - for (ItemStack converting: inputs.get(i)) { - if (converting != null) { - for (int j = 0; j < inv.getContents().length; j++) { - if (j == (inv.getContents().length - 1) && !SlimefunManager.isItemSimiliar(converting, inv.getContents()[j], true)) { - craft = false; - break; - } - else if (SlimefunManager.isItemSimiliar(inv.getContents()[j], converting, true)) break; + for (int i = 0; i < inputs.size(); i++) { + boolean craft = true; + for (ItemStack converting: inputs.get(i)) { + if (converting != null) { + for (int j = 0; j < inv.getContents().length; j++) { + if (j == (inv.getContents().length - 1) && !SlimefunManager.isItemSimiliar(converting, inv.getContents()[j], true)) { + craft = false; + break; } + else if (SlimefunManager.isItemSimiliar(inv.getContents()[j], converting, true)) break; } } + } - if (craft) { - ItemStack adding = RecipeType.getRecipeOutputList(this, inputs.get(i)).clone(); - if (Slimefun.hasUnlocked(p, adding, true)) { - Inventory outputInv = SlimefunMachine.findValidOutputInv(adding, dispBlock, inv); - if (outputInv != null) { - for (ItemStack removing: inputs.get(i)) { - if (removing != null) inv.removeItem(removing); - } - outputInv.addItem(adding); - p.getWorld().playSound(p.getLocation(), Sound.BLOCK_LAVA_POP, 1, 1); - p.getWorld().playEffect(b.getLocation(), Effect.MOBSPAWNER_FLAMES, 1); - - Hopper chamber = findHopper(dispBlock, BlockFace.NORTH, BlockFace.EAST, BlockFace.SOUTH, BlockFace.WEST); - - if (new Random().nextInt(100) < SlimefunStartup.instance.getSettings().SMELTERY_FIRE_BREAK_CHANCE) { - if (chamber != null) { - if (chamber.getInventory().contains(Material.FLINT_AND_STEEL)) { - ItemStack item = chamber.getInventory().getItem(chamber.getInventory().first(Material.FLINT_AND_STEEL)); - ItemMeta meta = item.getItemMeta(); - ((Damageable) meta).setDamage(((Damageable) meta).getDamage() + 1); - item.setItemMeta(meta); - - if (((Damageable) item.getItemMeta()).getDamage() >= item.getType().getMaxDurability()) { - item.setAmount(0); - p.getWorld().playSound(p.getLocation(), Sound.ENTITY_ITEM_BREAK, 1, 1); - } - - p.getWorld().playSound(p.getLocation(), Sound.ITEM_FLINTANDSTEEL_USE, 1, 1); - } - else { - Messages.local.sendTranslation(p, "machines.ignition-chamber-no-flint", true); - - Block fire = b.getRelative(BlockFace.DOWN).getRelative(BlockFace.DOWN); - fire.getWorld().playEffect(fire.getLocation(), Effect.STEP_SOUND, fire.getType()); - fire.setType(Material.AIR); + if (craft) { + ItemStack adding = RecipeType.getRecipeOutputList(this, inputs.get(i)).clone(); + if (Slimefun.hasUnlocked(p, adding, true)) { + Inventory outputInv = SlimefunMachine.findValidOutputInv(adding, dispBlock, inv); + if (outputInv != null) { + for (ItemStack removing: inputs.get(i)) { + if (removing != null) inv.removeItem(removing); + } + outputInv.addItem(adding); + p.getWorld().playSound(p.getLocation(), Sound.BLOCK_LAVA_POP, 1, 1); + p.getWorld().playEffect(b.getLocation(), Effect.MOBSPAWNER_FLAMES, 1); + + Hopper chamber = findHopper(dispBlock, BlockFace.NORTH, BlockFace.EAST, BlockFace.SOUTH, BlockFace.WEST); + + if (new Random().nextInt(100) < SlimefunStartup.instance.getSettings().SMELTERY_FIRE_BREAK_CHANCE) { + if (chamber != null) { + if (chamber.getInventory().contains(Material.FLINT_AND_STEEL)) { + ItemStack item = chamber.getInventory().getItem(chamber.getInventory().first(Material.FLINT_AND_STEEL)); + ItemMeta meta = item.getItemMeta(); + ((Damageable) meta).setDamage(((Damageable) meta).getDamage() + 1); + item.setItemMeta(meta); + + if (((Damageable) item.getItemMeta()).getDamage() >= item.getType().getMaxDurability()) { + item.setAmount(0); + p.getWorld().playSound(p.getLocation(), Sound.ENTITY_ITEM_BREAK, 1, 1); } - } + + p.getWorld().playSound(p.getLocation(), Sound.ITEM_FLINTANDSTEEL_USE, 1, 1); + } else { + Messages.local.sendTranslation(p, "machines.ignition-chamber-no-flint", true); + Block fire = b.getRelative(BlockFace.DOWN).getRelative(BlockFace.DOWN); fire.getWorld().playEffect(fire.getLocation(), Effect.STEP_SOUND, fire.getType()); fire.setType(Material.AIR); } } + else { + Block fire = b.getRelative(BlockFace.DOWN).getRelative(BlockFace.DOWN); + fire.getWorld().playEffect(fire.getLocation(), Effect.STEP_SOUND, fire.getType()); + fire.setType(Material.AIR); + } } - else Messages.local.sendTranslation(p, "machines.full-inventory", true); } - return true; + else Messages.local.sendTranslation(p, "machines.full-inventory", true); } + return true; } - Messages.local.sendTranslation(p, "machines.pattern-not-found", true); } + Messages.local.sendTranslation(p, "machines.pattern-not-found", true); } return true; } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/tasks/MagnetTask.java b/src/me/mrCookieSlime/Slimefun/Objects/tasks/MagnetTask.java index 39570eb02..0853a018d 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/tasks/MagnetTask.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/tasks/MagnetTask.java @@ -16,11 +16,9 @@ public class MagnetTask extends SlimefunTask { @Override void executeTask() { for (Entity item: Bukkit.getPlayer(uuid).getNearbyEntities(6D, 6D, 6D)) { - if (item instanceof Item) { - if (!item.hasMetadata("no_pickup") && ((Item) item).getPickupDelay() <= 0) { - item.teleport(Bukkit.getPlayer(uuid).getEyeLocation()); - Bukkit.getPlayer(uuid).getWorld().playSound(Bukkit.getPlayer(uuid).getEyeLocation(), Sound.ENTITY_ENDERMAN_TELEPORT, 5L, 2L); - } + if (item instanceof Item && !item.hasMetadata("no_pickup") && ((Item) item).getPickupDelay() <= 0) { + item.teleport(Bukkit.getPlayer(uuid).getEyeLocation()); + Bukkit.getPlayer(uuid).getWorld().playSound(Bukkit.getPlayer(uuid).getEyeLocation(), Sound.ENTITY_ENDERMAN_TELEPORT, 5L, 2L); } } } diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java index 626048c61..2248b5d95 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java @@ -200,30 +200,28 @@ public final class SlimefunSetup { SlimefunMachine machine = (SlimefunMachine) SlimefunItem.getByID("GRIND_STONE"); if (mb.isMultiBlock(machine)) { - if (CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true)) { - if (Slimefun.hasUnlocked(p, machine.getItem(), true)) { - Block dispBlock = b.getRelative(BlockFace.DOWN); - Dispenser disp = (Dispenser) dispBlock.getState(); - Inventory inv = disp.getInventory(); - for (ItemStack current: inv.getContents()) { - for (ItemStack convert: RecipeType.getRecipeInputs(machine)) { - if (convert != null && SlimefunManager.isItemSimiliar(current, convert, true)) { - ItemStack output = RecipeType.getRecipeOutput(machine, convert); - Inventory outputInv = SlimefunMachine.findValidOutputInv(output, dispBlock, inv); - if (outputInv != null) { - ItemStack removing = current.clone(); - removing.setAmount(1); - inv.removeItem(removing); - outputInv.addItem(output); - p.getWorld().playSound(p.getLocation(), Sound.BLOCK_WOODEN_BUTTON_CLICK_ON, 1, 1); - } - else Messages.local.sendTranslation(p, "machines.full-inventory", true); - return true; + if (CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true) && Slimefun.hasUnlocked(p, machine.getItem(), true)) { + Block dispBlock = b.getRelative(BlockFace.DOWN); + Dispenser disp = (Dispenser) dispBlock.getState(); + Inventory inv = disp.getInventory(); + for (ItemStack current: inv.getContents()) { + for (ItemStack convert: RecipeType.getRecipeInputs(machine)) { + if (convert != null && SlimefunManager.isItemSimiliar(current, convert, true)) { + ItemStack output = RecipeType.getRecipeOutput(machine, convert); + Inventory outputInv = SlimefunMachine.findValidOutputInv(output, dispBlock, inv); + if (outputInv != null) { + ItemStack removing = current.clone(); + removing.setAmount(1); + inv.removeItem(removing); + outputInv.addItem(output); + p.getWorld().playSound(p.getLocation(), Sound.BLOCK_WOODEN_BUTTON_CLICK_ON, 1, 1); } + else Messages.local.sendTranslation(p, "machines.full-inventory", true); + return true; } } - Messages.local.sendTranslation(p, "machines.unknown-material", true); } + Messages.local.sendTranslation(p, "machines.unknown-material", true); } return true; } @@ -243,49 +241,47 @@ public final class SlimefunSetup { SlimefunMachine machine = (SlimefunMachine) SlimefunItem.getByID("ARMOR_FORGE"); if (mb.isMultiBlock(machine)) { - if (CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true)) { - if (Slimefun.hasUnlocked(p, machine.getItem(), true)) { - Block dispBlock = b.getRelative(BlockFace.DOWN); - Dispenser disp = (Dispenser) dispBlock.getState(); - Inventory inv = disp.getInventory(); - List inputs = RecipeType.getRecipeInputList(machine); + if (CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true) && Slimefun.hasUnlocked(p, machine.getItem(), true)) { + Block dispBlock = b.getRelative(BlockFace.DOWN); + Dispenser disp = (Dispenser) dispBlock.getState(); + Inventory inv = disp.getInventory(); + List inputs = RecipeType.getRecipeInputList(machine); - for (int i = 0; i < inputs.size(); i++) { - boolean craft = true; - for (int j = 0; j < inv.getContents().length; j++) { - if (!SlimefunManager.isItemSimiliar(inv.getContents()[j], inputs.get(i)[j], true)) { - craft = false; - break; - } - } - - if (craft) { - final ItemStack adding = RecipeType.getRecipeOutputList(machine, inputs.get(i)).clone(); - if (Slimefun.hasUnlocked(p, adding, true)) { - Inventory outputInv = SlimefunMachine.findValidOutputInv(adding, dispBlock, inv); - if (outputInv != null) { - for (ItemStack removing: inputs.get(i)) { - if (removing != null) inv.removeItem(removing); - } - for (int j = 0; j < 4; j++) { - int current = j; - Bukkit.getScheduler().runTaskLater(SlimefunStartup.instance, () -> { - if (current < 3) { - p.getWorld().playSound(p.getLocation(), Sound.BLOCK_ANVIL_USE, 1F, 2F); - } else { - p.getWorld().playSound(p.getLocation(), Sound.ENTITY_ARROW_HIT_PLAYER, 1F, 1F); - outputInv.addItem(adding); - } - }, j*20L); - } - } - else Messages.local.sendTranslation(p, "machines.full-inventory", true); - } - return true; + for (int i = 0; i < inputs.size(); i++) { + boolean craft = true; + for (int j = 0; j < inv.getContents().length; j++) { + if (!SlimefunManager.isItemSimiliar(inv.getContents()[j], inputs.get(i)[j], true)) { + craft = false; + break; } } - Messages.local.sendTranslation(p, "machines.pattern-not-found", true); + + if (craft) { + final ItemStack adding = RecipeType.getRecipeOutputList(machine, inputs.get(i)).clone(); + if (Slimefun.hasUnlocked(p, adding, true)) { + Inventory outputInv = SlimefunMachine.findValidOutputInv(adding, dispBlock, inv); + if (outputInv != null) { + for (ItemStack removing: inputs.get(i)) { + if (removing != null) inv.removeItem(removing); + } + for (int j = 0; j < 4; j++) { + int current = j; + Bukkit.getScheduler().runTaskLater(SlimefunStartup.instance, () -> { + if (current < 3) { + p.getWorld().playSound(p.getLocation(), Sound.BLOCK_ANVIL_USE, 1F, 2F); + } else { + p.getWorld().playSound(p.getLocation(), Sound.ENTITY_ARROW_HIT_PLAYER, 1F, 1F); + outputInv.addItem(adding); + } + }, j*20L); + } + } + else Messages.local.sendTranslation(p, "machines.full-inventory", true); + } + return true; + } } + Messages.local.sendTranslation(p, "machines.pattern-not-found", true); } return true; } @@ -305,30 +301,28 @@ public final class SlimefunSetup { SlimefunMachine machine = (SlimefunMachine) SlimefunItem.getByID("ORE_CRUSHER"); if (mb.isMultiBlock(machine)) { - if (CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true)) { - if (Slimefun.hasUnlocked(p, machine.getItem(), true)) { - Block dispBlock = b.getRelative(BlockFace.DOWN); - Dispenser disp = (Dispenser) dispBlock.getState(); - Inventory inv = disp.getInventory(); - for (ItemStack current: inv.getContents()) { - for (ItemStack convert: RecipeType.getRecipeInputs(machine)) { - if (convert != null && SlimefunManager.isItemSimiliar(current, convert, true)) { - ItemStack adding = RecipeType.getRecipeOutput(machine, convert); - Inventory outputInv = SlimefunMachine.findValidOutputInv(adding, dispBlock, inv); - if (outputInv != null) { - ItemStack removing = current.clone(); - removing.setAmount(convert.getAmount()); - inv.removeItem(removing); - outputInv.addItem(adding); - p.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, 1); - } - else Messages.local.sendTranslation(p, "machines.full-inventory", true); - return true; + if (CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true) && Slimefun.hasUnlocked(p, machine.getItem(), true)) { + Block dispBlock = b.getRelative(BlockFace.DOWN); + Dispenser disp = (Dispenser) dispBlock.getState(); + Inventory inv = disp.getInventory(); + for (ItemStack current: inv.getContents()) { + for (ItemStack convert: RecipeType.getRecipeInputs(machine)) { + if (convert != null && SlimefunManager.isItemSimiliar(current, convert, true)) { + ItemStack adding = RecipeType.getRecipeOutput(machine, convert); + Inventory outputInv = SlimefunMachine.findValidOutputInv(adding, dispBlock, inv); + if (outputInv != null) { + ItemStack removing = current.clone(); + removing.setAmount(convert.getAmount()); + inv.removeItem(removing); + outputInv.addItem(adding); + p.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, 1); } + else Messages.local.sendTranslation(p, "machines.full-inventory", true); + return true; } } - Messages.local.sendTranslation(p, "machines.unknown-material", true); } + Messages.local.sendTranslation(p, "machines.unknown-material", true); } return true; } @@ -348,39 +342,37 @@ public final class SlimefunSetup { SlimefunMachine machine = (SlimefunMachine) SlimefunItem.getByID("COMPRESSOR"); if (mb.isMultiBlock(machine)) { - if (CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true)) { - if (Slimefun.hasUnlocked(p, machine.getItem(), true)) { - Block dispBlock = b.getRelative(BlockFace.DOWN); - Dispenser disp = (Dispenser) dispBlock.getState(); - Inventory inv = disp.getInventory(); - for (ItemStack current: inv.getContents()) { - for (ItemStack convert: RecipeType.getRecipeInputs(machine)) { - if (convert != null && SlimefunManager.isItemSimiliar(current, convert, true)) { - final ItemStack adding = RecipeType.getRecipeOutput(machine, convert); - Inventory outputInv = SlimefunMachine.findValidOutputInv(adding, dispBlock, inv); - if (outputInv != null) { - ItemStack removing = current.clone(); - removing.setAmount(convert.getAmount()); - inv.removeItem(removing); - for (int i = 0; i < 4; i++) { - int j = i; - Bukkit.getScheduler().runTaskLater(SlimefunStartup.instance, () -> { - if (j < 3) { - p.getWorld().playSound(p.getLocation(), j == 1 ? Sound.BLOCK_PISTON_CONTRACT : Sound.BLOCK_PISTON_EXTEND, 1F, j == 0 ? 1F : 2F); - } else { - p.getWorld().playSound(p.getLocation(), Sound.ENTITY_ARROW_HIT_PLAYER, 1F, 1F); - outputInv.addItem(adding); - } - }, i*20L); - } + if (CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true) && Slimefun.hasUnlocked(p, machine.getItem(), true)) { + Block dispBlock = b.getRelative(BlockFace.DOWN); + Dispenser disp = (Dispenser) dispBlock.getState(); + Inventory inv = disp.getInventory(); + for (ItemStack current: inv.getContents()) { + for (ItemStack convert: RecipeType.getRecipeInputs(machine)) { + if (convert != null && SlimefunManager.isItemSimiliar(current, convert, true)) { + final ItemStack adding = RecipeType.getRecipeOutput(machine, convert); + Inventory outputInv = SlimefunMachine.findValidOutputInv(adding, dispBlock, inv); + if (outputInv != null) { + ItemStack removing = current.clone(); + removing.setAmount(convert.getAmount()); + inv.removeItem(removing); + for (int i = 0; i < 4; i++) { + int j = i; + Bukkit.getScheduler().runTaskLater(SlimefunStartup.instance, () -> { + if (j < 3) { + p.getWorld().playSound(p.getLocation(), j == 1 ? Sound.BLOCK_PISTON_CONTRACT : Sound.BLOCK_PISTON_EXTEND, 1F, j == 0 ? 1F : 2F); + } else { + p.getWorld().playSound(p.getLocation(), Sound.ENTITY_ARROW_HIT_PLAYER, 1F, 1F); + outputInv.addItem(adding); + } + }, i*20L); } - else Messages.local.sendTranslation(p, "machines.full-inventory", true); - return true; } + else Messages.local.sendTranslation(p, "machines.full-inventory", true); + return true; } } - Messages.local.sendTranslation(p, "machines.unknown-material", true); } + Messages.local.sendTranslation(p, "machines.unknown-material", true); } return true; } @@ -453,11 +445,9 @@ public final class SlimefunSetup { if (SlimefunManager.isItemSimiliar(item, SlimefunItems.MAGIC_EYE_OF_ENDER, true)) { e.getParentEvent().setCancelled(true); PlayerInventory.update(p); - if (p.getInventory().getHelmet() != null && p.getInventory().getChestplate() != null && p.getInventory().getLeggings() != null && p.getInventory().getBoots() != null) { - if (SlimefunManager.isItemSimiliar(p.getInventory().getHelmet(), SlimefunItems.ENDER_HELMET, true) && SlimefunManager.isItemSimiliar(p.getInventory().getChestplate(), SlimefunItems.ENDER_CHESTPLATE, true) && SlimefunManager.isItemSimiliar(p.getInventory().getLeggings(), SlimefunItems.ENDER_LEGGINGS, true) && SlimefunManager.isItemSimiliar(p.getInventory().getBoots(), SlimefunItems.ENDER_BOOTS, true)) { - p.launchProjectile(EnderPearl.class); - p.getWorld().playSound(p.getLocation(), Sound.ENTITY_ENDERMAN_TELEPORT, 1, 1); - } + if (p.getInventory().getHelmet() != null && p.getInventory().getChestplate() != null && p.getInventory().getLeggings() != null && p.getInventory().getBoots() != null && SlimefunManager.isItemSimiliar(p.getInventory().getHelmet(), SlimefunItems.ENDER_HELMET, true) && SlimefunManager.isItemSimiliar(p.getInventory().getChestplate(), SlimefunItems.ENDER_CHESTPLATE, true) && SlimefunManager.isItemSimiliar(p.getInventory().getLeggings(), SlimefunItems.ENDER_LEGGINGS, true) && SlimefunManager.isItemSimiliar(p.getInventory().getBoots(), SlimefunItems.ENDER_BOOTS, true)) { + p.launchProjectile(EnderPearl.class); + p.getWorld().playSound(p.getLocation(), Sound.ENTITY_ENDERMAN_TELEPORT, 1, 1); } return true; } @@ -528,20 +518,18 @@ public final class SlimefunSetup { @Override public boolean onRightClick(ItemUseEvent e, Player p, ItemStack item) { if (SlimefunManager.isItemSimiliar(item, SlimefunItems.GOLD_PAN, true)) { - if (e.getClickedBlock() != null && e.getClickedBlock().getType() == Material.GRAVEL) { - if (CSCoreLib.getLib().getProtectionManager().canBuild(p.getUniqueId(), e.getClickedBlock(), true)) { - List drops = new ArrayList<>(); - - if (random.nextInt(100) < (Integer) Slimefun.getItemValue("GOLD_PAN", "chance.SIFTED_ORE")) drops.add(SlimefunItems.SIFTED_ORE); - else if (random.nextInt(100) < (Integer) Slimefun.getItemValue("GOLD_PAN", "chance.CLAY")) drops.add(new ItemStack(Material.CLAY_BALL)); - else if (random.nextInt(100) < (Integer) Slimefun.getItemValue("GOLD_PAN", "chance.FLINT")) drops.add(new ItemStack(Material.FLINT)); - - e.getClickedBlock().getWorld().playEffect(e.getClickedBlock().getLocation(), Effect.STEP_SOUND, e.getClickedBlock().getType()); - e.getClickedBlock().setType(Material.AIR); - - for (ItemStack drop: drops) { - e.getClickedBlock().getWorld().dropItemNaturally(e.getClickedBlock().getLocation(), drop); - } + if (e.getClickedBlock() != null && e.getClickedBlock().getType() == Material.GRAVEL && CSCoreLib.getLib().getProtectionManager().canBuild(p.getUniqueId(), e.getClickedBlock(), true)) { + List drops = new ArrayList<>(); + + if (random.nextInt(100) < (Integer) Slimefun.getItemValue("GOLD_PAN", "chance.SIFTED_ORE")) drops.add(SlimefunItems.SIFTED_ORE); + else if (random.nextInt(100) < (Integer) Slimefun.getItemValue("GOLD_PAN", "chance.CLAY")) drops.add(new ItemStack(Material.CLAY_BALL)); + else if (random.nextInt(100) < (Integer) Slimefun.getItemValue("GOLD_PAN", "chance.FLINT")) drops.add(new ItemStack(Material.FLINT)); + + e.getClickedBlock().getWorld().playEffect(e.getClickedBlock().getLocation(), Effect.STEP_SOUND, e.getClickedBlock().getType()); + e.getClickedBlock().setType(Material.AIR); + + for (ItemStack drop: drops) { + e.getClickedBlock().getWorld().dropItemNaturally(e.getClickedBlock().getLocation(), drop); } } e.setCancelled(true); @@ -573,43 +561,41 @@ public final class SlimefunSetup { SlimefunMachine machine = (SlimefunMachine) SlimefunItem.getByID("PRESSURE_CHAMBER"); if (mb.isMultiBlock(machine)) { - if (CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true)) { - if (Slimefun.hasUnlocked(p, machine.getItem(), true)) { - Block dispBlock = b.getRelative(BlockFace.UP).getRelative(BlockFace.UP); - Dispenser disp = (Dispenser) dispBlock.getState(); - final Inventory inv = disp.getInventory(); - for (ItemStack current: inv.getContents()) { - for (ItemStack convert: RecipeType.getRecipeInputs(machine)) { - if (convert != null && SlimefunManager.isItemSimiliar(current, convert, true)) { - final ItemStack adding = RecipeType.getRecipeOutput(machine, convert); - Inventory outputInv = SlimefunMachine.findValidOutputInv(adding, dispBlock, inv); - if (outputInv != null) { - ItemStack removing = current.clone(); - removing.setAmount(convert.getAmount()); - inv.removeItem(removing); - for (int i = 0; i < 4; i++) { - int j = i; - Bukkit.getScheduler().runTaskLater(SlimefunStartup.instance, () -> { - p.getWorld().playSound(b.getLocation(), Sound.ENTITY_TNT_PRIMED, 1, 1); - p.getWorld().playEffect(b.getRelative(BlockFace.UP).getLocation(), Effect.SMOKE, 4); - p.getWorld().playEffect(b.getRelative(BlockFace.UP).getLocation(), Effect.SMOKE, 4); - p.getWorld().playEffect(b.getRelative(BlockFace.UP).getLocation(), Effect.SMOKE, 4); - if (j < 3) { - p.getWorld().playSound(b.getLocation(), Sound.ENTITY_TNT_PRIMED, 1F, 1F); - } else { - p.getWorld().playSound(p.getLocation(), Sound.ENTITY_ARROW_HIT_PLAYER, 1F, 1F); - outputInv.addItem(adding); - } - }, i*20L); - } + if (CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true) && Slimefun.hasUnlocked(p, machine.getItem(), true)) { + Block dispBlock = b.getRelative(BlockFace.UP).getRelative(BlockFace.UP); + Dispenser disp = (Dispenser) dispBlock.getState(); + final Inventory inv = disp.getInventory(); + for (ItemStack current: inv.getContents()) { + for (ItemStack convert: RecipeType.getRecipeInputs(machine)) { + if (convert != null && SlimefunManager.isItemSimiliar(current, convert, true)) { + final ItemStack adding = RecipeType.getRecipeOutput(machine, convert); + Inventory outputInv = SlimefunMachine.findValidOutputInv(adding, dispBlock, inv); + if (outputInv != null) { + ItemStack removing = current.clone(); + removing.setAmount(convert.getAmount()); + inv.removeItem(removing); + for (int i = 0; i < 4; i++) { + int j = i; + Bukkit.getScheduler().runTaskLater(SlimefunStartup.instance, () -> { + p.getWorld().playSound(b.getLocation(), Sound.ENTITY_TNT_PRIMED, 1, 1); + p.getWorld().playEffect(b.getRelative(BlockFace.UP).getLocation(), Effect.SMOKE, 4); + p.getWorld().playEffect(b.getRelative(BlockFace.UP).getLocation(), Effect.SMOKE, 4); + p.getWorld().playEffect(b.getRelative(BlockFace.UP).getLocation(), Effect.SMOKE, 4); + if (j < 3) { + p.getWorld().playSound(b.getLocation(), Sound.ENTITY_TNT_PRIMED, 1F, 1F); + } else { + p.getWorld().playSound(p.getLocation(), Sound.ENTITY_ARROW_HIT_PLAYER, 1F, 1F); + outputInv.addItem(adding); + } + }, i*20L); } - else Messages.local.sendTranslation(p, "machines.full-inventory", true); - return true; } + else Messages.local.sendTranslation(p, "machines.full-inventory", true); + return true; } } - Messages.local.sendTranslation(p, "machines.unknown-material", true); } + Messages.local.sendTranslation(p, "machines.unknown-material", true); } return true; } @@ -1409,24 +1395,20 @@ public final class SlimefunSetup { @Override public boolean onInteract(Player p, MultiBlock mb, Block b) { if (mb.isMultiBlock(SlimefunItem.getByID("TABLE_SAW"))) { - if (CSCoreLib.getLib().getProtectionManager().canBuild(p.getUniqueId(), b.getRelative(BlockFace.UP), true)) { - if (Slimefun.hasUnlocked(p, SlimefunItems.TABLE_SAW, true)) { - if(p.getInventory().getItemInMainHand() != null && Tag.LOGS.getValues().contains(p.getInventory().getItemInMainHand().getType())) { - ItemStack log = p.getInventory().getItemInMainHand(); - - ItemStack item = new ItemStack(MaterialHelper.getWoodFromLog(log.getType()), 8); - if(item == null || item.getType() == Material.AIR) { - return false; - } - b.getWorld().dropItemNaturally(b.getLocation(), item); - b.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, log.getType()); - log.setAmount(log.getAmount() -1); - if(log.getAmount() <= 0) - p.getInventory().setItemInMainHand(new ItemStack(Material.AIR)); - - - } + if (CSCoreLib.getLib().getProtectionManager().canBuild(p.getUniqueId(), b.getRelative(BlockFace.UP), true) && Slimefun.hasUnlocked(p, SlimefunItems.TABLE_SAW, true) && p.getInventory().getItemInMainHand() != null && Tag.LOGS.getValues().contains(p.getInventory().getItemInMainHand().getType())) { + ItemStack log = p.getInventory().getItemInMainHand(); + + ItemStack item = new ItemStack(MaterialHelper.getWoodFromLog(log.getType()), 8); + if(item == null || item.getType() == Material.AIR) { + return false; } + b.getWorld().dropItemNaturally(b.getLocation(), item); + b.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, log.getType()); + log.setAmount(log.getAmount() -1); + if(log.getAmount() <= 0) + p.getInventory().setItemInMainHand(new ItemStack(Material.AIR)); + + } return true; } @@ -1450,17 +1432,13 @@ public final class SlimefunSetup { @Override public boolean onInteract(Player p, MultiBlock mb, Block b) { if (mb.isMultiBlock(SlimefunItem.getByID("SAW_MILL"))) { - if (CSCoreLib.getLib().getProtectionManager().canBuild(p.getUniqueId(), b.getRelative(BlockFace.UP), true)) { - if (Slimefun.hasUnlocked(p, SlimefunItems.SAW_MILL, true)) { - if (MaterialHelper.isLog(b.getRelative(BlockFace.UP).getType())) { - Block log = b.getRelative(BlockFace.UP); - if (!BlockStorage.hasBlockInfo(log)) { - ItemStack item = new ItemStack(MaterialHelper.getWoodFromLog(log.getType()), 8); - log.getWorld().dropItemNaturally(log.getLocation(), item); - log.getWorld().playEffect(log.getLocation(), Effect.STEP_SOUND, log.getType()); - log.setType(Material.AIR); - } - } + if (CSCoreLib.getLib().getProtectionManager().canBuild(p.getUniqueId(), b.getRelative(BlockFace.UP), true) && Slimefun.hasUnlocked(p, SlimefunItems.SAW_MILL, true) && MaterialHelper.isLog(b.getRelative(BlockFace.UP).getType())) { + Block log = b.getRelative(BlockFace.UP); + if (!BlockStorage.hasBlockInfo(log)) { + ItemStack item = new ItemStack(MaterialHelper.getWoodFromLog(log.getType()), 8); + log.getWorld().dropItemNaturally(log.getLocation(), item); + log.getWorld().playEffect(log.getLocation(), Effect.STEP_SOUND, log.getType()); + log.setType(Material.AIR); } } return true; @@ -1499,50 +1477,48 @@ public final class SlimefunSetup { @Override public boolean onInteract(final Player p, MultiBlock mb, final Block b) { if (mb.isMultiBlock(SlimefunItem.getByID("DIGITAL_MINER"))) { - if (CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true)) { - if (Slimefun.hasUnlocked(p, SlimefunItems.DIGITAL_MINER, true)) { - Block chestBlock = b.getRelative(BlockFace.UP); + if (CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true) && Slimefun.hasUnlocked(p, SlimefunItems.DIGITAL_MINER, true)) { + Block chestBlock = b.getRelative(BlockFace.UP); - if(!(BlockStorage.check(chestBlock.getRelative(BlockFace.WEST), "SOLAR_PANEL") && BlockStorage.check(chestBlock.getRelative(BlockFace.EAST), "SOLAR_PANEL")) && + if(!(BlockStorage.check(chestBlock.getRelative(BlockFace.WEST), "SOLAR_PANEL") && BlockStorage.check(chestBlock.getRelative(BlockFace.EAST), "SOLAR_PANEL")) && !(BlockStorage.check(chestBlock.getRelative(BlockFace.NORTH), "SOLAR_PANEL") && BlockStorage.check(chestBlock.getRelative(BlockFace.SOUTH), "SOLAR_PANEL"))) { - return false; - } - - Chest chest = (Chest) chestBlock.getState(); - final Inventory inv = chest.getInventory(); - List ores = new ArrayList<>(); - - for (int x = b.getX() - 4; x <= b.getX() + 4; x++) { - for (int z = b.getZ() - 4; z <= b.getZ() + 4; z++) { - for (int y = b.getY(); y > 0; y--) { - if (b.getWorld().getBlockAt(x, y, z).getType().toString().endsWith("_ORE")) { - ores.add(b.getWorld().getBlockAt(x, y, z).getLocation()); - } - } - } - } - if (!ores.isEmpty()) { - final Material ore = ores.get(0).getBlock().getType(); - final ItemStack adding = new ItemStack(ore); - ores.get(0).getBlock().setType(Material.AIR); - ores.clear(); - if (InvUtils.fits(inv, adding)) { - for (int i = 0; i < 4; i++) { - int j = i; - Bukkit.getScheduler().runTaskLater(SlimefunStartup.instance, () -> { - if (j < 3) { - b.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, ore); - } else { - p.getWorld().playSound(p.getLocation(), Sound.ENTITY_ARROW_HIT_PLAYER, 1F, 1F); - inv.addItem(adding); - } - }, i*20L); - } - } - else Messages.local.sendTranslation(p, "machines.full-inventory", true); - } - else Messages.local.sendTranslation(p, "miner.no-ores", true); + return false; } + + Chest chest = (Chest) chestBlock.getState(); + final Inventory inv = chest.getInventory(); + List ores = new ArrayList<>(); + + for (int x = b.getX() - 4; x <= b.getX() + 4; x++) { + for (int z = b.getZ() - 4; z <= b.getZ() + 4; z++) { + for (int y = b.getY(); y > 0; y--) { + if (b.getWorld().getBlockAt(x, y, z).getType().toString().endsWith("_ORE")) { + ores.add(b.getWorld().getBlockAt(x, y, z).getLocation()); + } + } + } + } + if (!ores.isEmpty()) { + final Material ore = ores.get(0).getBlock().getType(); + final ItemStack adding = new ItemStack(ore); + ores.get(0).getBlock().setType(Material.AIR); + ores.clear(); + if (InvUtils.fits(inv, adding)) { + for (int i = 0; i < 4; i++) { + int j = i; + Bukkit.getScheduler().runTaskLater(SlimefunStartup.instance, () -> { + if (j < 3) { + b.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, ore); + } else { + p.getWorld().playSound(p.getLocation(), Sound.ENTITY_ARROW_HIT_PLAYER, 1F, 1F); + inv.addItem(adding); + } + }, i*20L); + } + } + else Messages.local.sendTranslation(p, "machines.full-inventory", true); + } + else Messages.local.sendTranslation(p, "miner.no-ores", true); } return true; } @@ -1558,62 +1534,60 @@ public final class SlimefunSetup { @Override public boolean onInteract(final Player p, MultiBlock mb, final Block b) { if (mb.isMultiBlock(SlimefunItem.getByID("ADVANCED_DIGITAL_MINER"))) { - if (CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true)) { - if (Slimefun.hasUnlocked(p, SlimefunItems.ADVANCED_DIGITAL_MINER, true)) { - Block chestBlock = b.getRelative(BlockFace.UP); + if (CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true) && Slimefun.hasUnlocked(p, SlimefunItems.ADVANCED_DIGITAL_MINER, true)) { + Block chestBlock = b.getRelative(BlockFace.UP); - if(!(BlockStorage.check(chestBlock.getRelative(BlockFace.WEST), "SOLAR_PANEL") && BlockStorage.check(chestBlock.getRelative(BlockFace.EAST), "SOLAR_PANEL")) && + if(!(BlockStorage.check(chestBlock.getRelative(BlockFace.WEST), "SOLAR_PANEL") && BlockStorage.check(chestBlock.getRelative(BlockFace.EAST), "SOLAR_PANEL")) && !(BlockStorage.check(chestBlock.getRelative(BlockFace.NORTH), "SOLAR_PANEL") && BlockStorage.check(chestBlock.getRelative(BlockFace.SOUTH), "SOLAR_PANEL"))) { - return false; - } - - Chest chest = (Chest) chestBlock.getState(); - final Inventory inv = chest.getInventory(); - List ores = new ArrayList<>(); - - for (int x = b.getX() - 6; x <= b.getX() + 6; x++) { - for (int z = b.getZ() - 6; z <= b.getZ() + 6; z++) { - for (int y = b.getY(); y > 0; y--) { - if (b.getWorld().getBlockAt(x, y, z).getType().toString().endsWith("_ORE")) { - ores.add(b.getWorld().getBlockAt(x, y, z).getLocation()); - } - } - } - } - if (!ores.isEmpty()) { - final Material ore = ores.get(0).getBlock().getType(); - ItemStack drop = new ItemStack(ore); - if (ore == Material.COAL_ORE) drop = new ItemStack(Material.COAL, 4); - else if (ore == Material.IRON_ORE) drop = new CustomItem(SlimefunItems.IRON_DUST, 2); - else if (ore == Material.GOLD_ORE) drop = new CustomItem(SlimefunItems.GOLD_DUST, 2); - else if (ore == Material.REDSTONE_ORE) drop = new ItemStack(Material.REDSTONE, 8); - else if (ore == Material.NETHER_QUARTZ_ORE) drop = new ItemStack(Material.QUARTZ, 4); - else if (ore == Material.LAPIS_ORE) drop = new ItemStack(Material.LAPIS_LAZULI, 12); - else { - for (ItemStack drops: ores.get(0).getBlock().getDrops()) { - if (!drops.getType().isBlock()) drop = new CustomItem(drops, 2); - } - } - final ItemStack adding = drop; - ores.get(0).getBlock().setType(Material.AIR); - ores.clear(); - if (InvUtils.fits(inv, adding)) { - for (int i = 0; i < 4; i++) { - int j = i; - Bukkit.getScheduler().runTaskLater(SlimefunStartup.instance, () -> { - if (j < 3) { - b.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, ore); - } else { - p.getWorld().playSound(p.getLocation(), Sound.ENTITY_ARROW_HIT_PLAYER, 1F, 1F); - inv.addItem(adding); - } - }, i*20L); - } - } - else Messages.local.sendTranslation(p, "machines.full-inventory", true); - } - else Messages.local.sendTranslation(p, "miner.no-ores", true); + return false; } + + Chest chest = (Chest) chestBlock.getState(); + final Inventory inv = chest.getInventory(); + List ores = new ArrayList<>(); + + for (int x = b.getX() - 6; x <= b.getX() + 6; x++) { + for (int z = b.getZ() - 6; z <= b.getZ() + 6; z++) { + for (int y = b.getY(); y > 0; y--) { + if (b.getWorld().getBlockAt(x, y, z).getType().toString().endsWith("_ORE")) { + ores.add(b.getWorld().getBlockAt(x, y, z).getLocation()); + } + } + } + } + if (!ores.isEmpty()) { + final Material ore = ores.get(0).getBlock().getType(); + ItemStack drop = new ItemStack(ore); + if (ore == Material.COAL_ORE) drop = new ItemStack(Material.COAL, 4); + else if (ore == Material.IRON_ORE) drop = new CustomItem(SlimefunItems.IRON_DUST, 2); + else if (ore == Material.GOLD_ORE) drop = new CustomItem(SlimefunItems.GOLD_DUST, 2); + else if (ore == Material.REDSTONE_ORE) drop = new ItemStack(Material.REDSTONE, 8); + else if (ore == Material.NETHER_QUARTZ_ORE) drop = new ItemStack(Material.QUARTZ, 4); + else if (ore == Material.LAPIS_ORE) drop = new ItemStack(Material.LAPIS_LAZULI, 12); + else { + for (ItemStack drops: ores.get(0).getBlock().getDrops()) { + if (!drops.getType().isBlock()) drop = new CustomItem(drops, 2); + } + } + final ItemStack adding = drop; + ores.get(0).getBlock().setType(Material.AIR); + ores.clear(); + if (InvUtils.fits(inv, adding)) { + for (int i = 0; i < 4; i++) { + int j = i; + Bukkit.getScheduler().runTaskLater(SlimefunStartup.instance, () -> { + if (j < 3) { + b.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, ore); + } else { + p.getWorld().playSound(p.getLocation(), Sound.ENTITY_ARROW_HIT_PLAYER, 1F, 1F); + inv.addItem(adding); + } + }, i*20L); + } + } + else Messages.local.sendTranslation(p, "machines.full-inventory", true); + } + else Messages.local.sendTranslation(p, "miner.no-ores", true); } return true; } @@ -1709,40 +1683,36 @@ public final class SlimefunSetup { for (int y = -1; y <= 1; y++) { for (int z = -1; z <= 1; z++) { Block b = e.getBlock().getRelative(x, y, z); - if (b.getType() != Material.AIR && !b.isLiquid() && !StringUtils.equals(b.getType().toString(), explosiveblacklist)) { - if (CSCoreLib.getLib().getProtectionManager().canBuild(e.getPlayer().getUniqueId(), b)) { - if (SlimefunStartup.instance.getHooks().isCoreProtectInstalled()) { - SlimefunStartup.instance.getHooks().getCoreProtectAPI().logRemoval(e.getPlayer().getName(), b.getLocation(), b.getType(), b.getBlockData()); + if (b.getType() != Material.AIR && !b.isLiquid() && !StringUtils.equals(b.getType().toString(), explosiveblacklist) && CSCoreLib.getLib().getProtectionManager().canBuild(e.getPlayer().getUniqueId(), b)) { + if (SlimefunStartup.instance.getHooks().isCoreProtectInstalled()) { + SlimefunStartup.instance.getHooks().getCoreProtectAPI().logRemoval(e.getPlayer().getName(), b.getLocation(), b.getType(), b.getBlockData()); + } + + 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); } - - 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 (allow) { - drops.add(BlockStorage.retrieve(e.getBlock())); - } + if (allow) { + drops.add(BlockStorage.retrieve(e.getBlock())); } - else if (b.getType() == Material.PLAYER_HEAD) { - b.breakNaturally(); - } - else if (b.getType().name().endsWith("_SHULKER_BOX")) { - b.breakNaturally(); - } - else { - for (ItemStack drop: b.getDrops()) { - b.getWorld().dropItemNaturally(b.getLocation(), (b.getType().toString().endsWith("_ORE") && b.getType() != Material.IRON_ORE && b.getType() != Material.GOLD_ORE) ? new CustomItem(drop, fortune): drop); - } - b.setType(Material.AIR); - } - if (damageOnUse) { - if (!item.getEnchantments().containsKey(Enchantment.DURABILITY) || random.nextInt(100) <= (60 + 40 / (item.getEnchantmentLevel(Enchantment.DURABILITY) + 1))) { - PlayerInventory.damageItemInHand(e.getPlayer()); - } + } + else if (b.getType() == Material.PLAYER_HEAD) { + b.breakNaturally(); + } + else if (b.getType().name().endsWith("_SHULKER_BOX")) { + b.breakNaturally(); + } + else { + for (ItemStack drop: b.getDrops()) { + b.getWorld().dropItemNaturally(b.getLocation(), (b.getType().toString().endsWith("_ORE") && b.getType() != Material.IRON_ORE && b.getType() != Material.GOLD_ORE) ? new CustomItem(drop, fortune): drop); } + b.setType(Material.AIR); + } + if (damageOnUse && !item.getEnchantments().containsKey(Enchantment.DURABILITY) || random.nextInt(100) <= (60 + 40 / (item.getEnchantmentLevel(Enchantment.DURABILITY) + 1))) { + PlayerInventory.damageItemInHand(e.getPlayer()); } } } @@ -1775,21 +1745,19 @@ public final class SlimefunSetup { else if (random.nextInt(100) < (Integer) Slimefun.getItemValue("GOLD_PAN", "chance.FLINT")) output = new ItemStack(Material.FLINT); final ItemStack drop = output; - if (input != null) { - if (input.getType() == Material.GRAVEL) { - PlayerInventory.consumeItemInHand(p); - for (int i = 1; i < 7; i++) { - int j = i; - Bukkit.getScheduler().runTaskLater(SlimefunStartup.instance, () -> { - b.getWorld().playEffect(b.getRelative(BlockFace.DOWN).getLocation(), Effect.STEP_SOUND, Material.GRAVEL); - if (j == 6) { - if (drop != null) b.getWorld().dropItemNaturally(b.getLocation(), drop); - p.getWorld().playSound(p.getLocation(), Sound.ENTITY_ARROW_HIT_PLAYER, 1F, 1F); - } - }, i*30L); - } - return true; + if (input != null && input.getType() == Material.GRAVEL) { + PlayerInventory.consumeItemInHand(p); + for (int i = 1; i < 7; i++) { + int j = i; + Bukkit.getScheduler().runTaskLater(SlimefunStartup.instance, () -> { + b.getWorld().playEffect(b.getRelative(BlockFace.DOWN).getLocation(), Effect.STEP_SOUND, Material.GRAVEL); + if (j == 6) { + if (drop != null) b.getWorld().dropItemNaturally(b.getLocation(), drop); + p.getWorld().playSound(p.getLocation(), Sound.ENTITY_ARROW_HIT_PLAYER, 1F, 1F); + } + }, i*30L); } + return true; } Messages.local.sendTranslation(p, "machines.wrong-item", true); @@ -2030,13 +1998,9 @@ public final class SlimefunSetup { Location ground = b.getLocation(); if (b.getType() == null || b.getType() == Material.AIR) { for (int y = ground.getBlockY(); y > 0; y--) { - if (b.getWorld().getBlockAt(b.getX(), y, b.getZ()) != null) { - if (b.getWorld().getBlockAt(b.getX(), y, b.getZ()).getType() != null) { - if (b.getWorld().getBlockAt(b.getX(), y, b.getZ()).getType() != Material.AIR) { - ground = new Location(b.getWorld(), b.getX(), y, b.getZ()); - break; - } - } + if (b.getWorld().getBlockAt(b.getX(), y, b.getZ()) != null && b.getWorld().getBlockAt(b.getX(), y, b.getZ()).getType() != null && b.getWorld().getBlockAt(b.getX(), y, b.getZ()).getType() != Material.AIR) { + ground = new Location(b.getWorld(), b.getX(), y, b.getZ()); + break; } } } @@ -2048,16 +2012,14 @@ public final class SlimefunSetup { SlimefunStartup.instance.getUtilities().blocks.add(block.getUniqueId()); } for (Entity n: ground.getChunk().getEntities()) { - if (n instanceof LivingEntity) { - if (n.getLocation().distance(ground) <= 2.0D && n.getUniqueId() != p.getUniqueId()) { - Vector vector = n.getLocation().toVector().subtract(p.getLocation().toVector()).normalize().multiply(1.4); - vector.setY(0.9); - n.setVelocity(vector); - if (p.getWorld().getPVP()) { - EntityDamageByEntityEvent event = new EntityDamageByEntityEvent(p, n, DamageCause.ENTITY_ATTACK, 6D); - Bukkit.getPluginManager().callEvent(event); - if (!event.isCancelled()) ((LivingEntity) n).damage(6D); - } + if (n instanceof LivingEntity && n.getLocation().distance(ground) <= 2.0D && n.getUniqueId() != p.getUniqueId()) { + Vector vector = n.getLocation().toVector().subtract(p.getLocation().toVector()).normalize().multiply(1.4); + vector.setY(0.9); + n.setVelocity(vector); + if (p.getWorld().getPVP()) { + EntityDamageByEntityEvent event = new EntityDamageByEntityEvent(p, n, DamageCause.ENTITY_ATTACK, 6D); + Bukkit.getPluginManager().callEvent(event); + if (!event.isCancelled()) ((LivingEntity) n).damage(6D); } } } @@ -2157,31 +2119,29 @@ public final class SlimefunSetup { SlimefunMachine machine = (SlimefunMachine) SlimefunItem.getByID("JUICER"); if (mb.isMultiBlock(machine)) { - if (CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true)) { - if (Slimefun.hasUnlocked(p, SlimefunItems.JUICER, true)) { - Block dispBlock = b.getRelative(BlockFace.DOWN); - Dispenser disp = (Dispenser) dispBlock.getState(); - Inventory inv = disp.getInventory(); - for (ItemStack current: inv.getContents()) { - for (ItemStack convert: RecipeType.getRecipeInputs(machine)) { - if (convert != null && SlimefunManager.isItemSimiliar(current, convert, true)) { - ItemStack adding = RecipeType.getRecipeOutput(machine, convert); - Inventory outputInv = SlimefunMachine.findValidOutputInv(adding, dispBlock, inv); - if (outputInv != null) { - ItemStack removing = current.clone(); - removing.setAmount(1); - inv.removeItem(removing); - outputInv.addItem(adding); - p.getWorld().playSound(b.getLocation(), Sound.ENTITY_PLAYER_SPLASH, 1F, 1F); - p.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, Material.HAY_BLOCK); - } - else Messages.local.sendTranslation(p, "machines.full-inventory", true); - return true; + if (CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true) && Slimefun.hasUnlocked(p, SlimefunItems.JUICER, true)) { + Block dispBlock = b.getRelative(BlockFace.DOWN); + Dispenser disp = (Dispenser) dispBlock.getState(); + Inventory inv = disp.getInventory(); + for (ItemStack current: inv.getContents()) { + for (ItemStack convert: RecipeType.getRecipeInputs(machine)) { + if (convert != null && SlimefunManager.isItemSimiliar(current, convert, true)) { + ItemStack adding = RecipeType.getRecipeOutput(machine, convert); + Inventory outputInv = SlimefunMachine.findValidOutputInv(adding, dispBlock, inv); + if (outputInv != null) { + ItemStack removing = current.clone(); + removing.setAmount(1); + inv.removeItem(removing); + outputInv.addItem(adding); + p.getWorld().playSound(b.getLocation(), Sound.ENTITY_PLAYER_SPLASH, 1F, 1F); + p.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, Material.HAY_BLOCK); } + else Messages.local.sendTranslation(p, "machines.full-inventory", true); + return true; } } - Messages.local.sendTranslation(p, "machines.unknown-material", true); } + Messages.local.sendTranslation(p, "machines.unknown-material", true); } return true; } diff --git a/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java b/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java index b6fadfd87..7b2692428 100644 --- a/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java +++ b/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java @@ -800,9 +800,7 @@ public final class SlimefunGuide { final SlimefunItem sfItem = SlimefunItem.getByItem(item); - if (sfItem == null) { - if (!SlimefunStartup.instance.getSettings().GUIDE_SHOW_VANILLA_RECIPES) return; - } + if (sfItem == null && !SlimefunStartup.instance.getSettings().GUIDE_SHOW_VANILLA_RECIPES) return; ItemStack[] recipe = new ItemStack[9]; ItemStack recipeType = null; diff --git a/src/me/mrCookieSlime/Slimefun/SlimefunStartup.java b/src/me/mrCookieSlime/Slimefun/SlimefunStartup.java index 3a27f4066..560121034 100644 --- a/src/me/mrCookieSlime/Slimefun/SlimefunStartup.java +++ b/src/me/mrCookieSlime/Slimefun/SlimefunStartup.java @@ -259,22 +259,16 @@ public final class SlimefunStartup extends JavaPlugin { getServer().getScheduler().runTaskTimer(this, () -> { for (Player p: Bukkit.getOnlinePlayers()) { for (ItemStack armor: p.getInventory().getArmorContents()) { - if (armor != null) { - if (Slimefun.hasUnlocked(p, armor, true)) { - if (SlimefunItem.getByItem(armor) instanceof SlimefunArmorPiece) { - for (PotionEffect effect: ((SlimefunArmorPiece) SlimefunItem.getByItem(armor)).getEffects()) { - p.removePotionEffect(effect.getType()); - p.addPotionEffect(effect); - } - } - if (SlimefunManager.isItemSimiliar(armor, SlimefunItem.getItem("SOLAR_HELMET"), false)) { - if (p.getWorld().getTime() < 12300 || p.getWorld().getTime() > 23850) { - if (p.getEyeLocation().getBlock().getLightFromSky() == 15) { - ItemEnergy.chargeInventory(p, Float.valueOf(String.valueOf(Slimefun.getItemValue("SOLAR_HELMET", "charge-amount")))); - } - } + if (armor != null && Slimefun.hasUnlocked(p, armor, true)) { + if (SlimefunItem.getByItem(armor) instanceof SlimefunArmorPiece) { + for (PotionEffect effect: ((SlimefunArmorPiece) SlimefunItem.getByItem(armor)).getEffects()) { + p.removePotionEffect(effect.getType()); + p.addPotionEffect(effect); } } + if (SlimefunManager.isItemSimiliar(armor, SlimefunItem.getItem("SOLAR_HELMET"), false) && p.getWorld().getTime() < 12300 || p.getWorld().getTime() > 23850 && p.getEyeLocation().getBlock().getLightFromSky() == 15) { + ItemEnergy.chargeInventory(p, Float.valueOf(String.valueOf(Slimefun.getItemValue("SOLAR_HELMET", "charge-amount")))); + } } } diff --git a/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java b/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java index 9d9aab3d7..d20f3e504 100644 --- a/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java +++ b/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java @@ -687,20 +687,16 @@ public abstract class ProgrammableAndroid extends SlimefunItem { try { SlimefunItem item = BlockStorage.check(block); if (item != null) { - if (fits(b, item.getItem())) { - if (SlimefunItem.blockhandler.containsKey(item.getID())) { - if (SlimefunItem.blockhandler.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); - Rotatable blockData = (Rotatable) block.getBlockData(); - blockData.setRotation(face.getOppositeFace()); - block.setBlockData(blockData); - CustomSkull.setSkull(block, CustomSkull.getTexture(getItem())); - b.setType(Material.AIR); - BlockStorage.moveBlockInfo(b.getLocation(), block.getLocation()); - } - } + if (fits(b, item.getItem()) && SlimefunItem.blockhandler.containsKey(item.getID()) && SlimefunItem.blockhandler.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); + Rotatable blockData = (Rotatable) block.getBlockData(); + blockData.setRotation(face.getOppositeFace()); + block.setBlockData(blockData); + CustomSkull.setSkull(block, CustomSkull.getTexture(getItem())); + b.setType(Material.AIR); + BlockStorage.moveBlockInfo(b.getLocation(), block.getLocation()); } } else { diff --git a/src/me/mrCookieSlime/Slimefun/api/SlimefunRecipes.java b/src/me/mrCookieSlime/Slimefun/api/SlimefunRecipes.java index de9cc2392..f2d9a056d 100644 --- a/src/me/mrCookieSlime/Slimefun/api/SlimefunRecipes.java +++ b/src/me/mrCookieSlime/Slimefun/api/SlimefunRecipes.java @@ -9,10 +9,8 @@ public class SlimefunRecipes { public static void registerMachineRecipe(String machine, int seconds, ItemStack[] input, ItemStack[] output) { for (SlimefunItem item: SlimefunItem.all) { - if (item instanceof AContainer) { - if (((AContainer) item).getMachineIdentifier().equals(machine)) { - ((AContainer) item).registerRecipe(seconds, input, output); - } + if (item instanceof AContainer && ((AContainer) item).getMachineIdentifier().equals(machine)) { + ((AContainer) item).registerRecipe(seconds, input, output); } } } diff --git a/src/me/mrCookieSlime/Slimefun/api/inventory/BlockMenu.java b/src/me/mrCookieSlime/Slimefun/api/inventory/BlockMenu.java index 471b42150..255e4523b 100644 --- a/src/me/mrCookieSlime/Slimefun/api/inventory/BlockMenu.java +++ b/src/me/mrCookieSlime/Slimefun/api/inventory/BlockMenu.java @@ -44,9 +44,7 @@ public class BlockMenu extends DirtyChestMenu { preset.clone(this); - if (preset.getSize() > -1 && !preset.getPresetSlots().contains(preset.getSize() - 1)) { - if (cfg.contains(String.valueOf(preset.getSize() - 1))) addItem(preset.getSize() - 1, cfg.getItem(String.valueOf(preset.getSize() - 1))); - } + if (preset.getSize() > -1 && !preset.getPresetSlots().contains(preset.getSize() - 1) && cfg.contains(String.valueOf(preset.getSize() - 1))) addItem(preset.getSize() - 1, cfg.getItem(String.valueOf(preset.getSize() - 1))); this.getContents(); } diff --git a/src/me/mrCookieSlime/Slimefun/api/inventory/UniversalBlockMenu.java b/src/me/mrCookieSlime/Slimefun/api/inventory/UniversalBlockMenu.java index 5f611d72c..7576dcae1 100644 --- a/src/me/mrCookieSlime/Slimefun/api/inventory/UniversalBlockMenu.java +++ b/src/me/mrCookieSlime/Slimefun/api/inventory/UniversalBlockMenu.java @@ -35,9 +35,7 @@ public class UniversalBlockMenu extends DirtyChestMenu { preset.clone(this); - if (preset.getSize() > -1 && !preset.getPresetSlots().contains(preset.getSize() - 1)) { - if (cfg.contains(String.valueOf(preset.getSize() - 1))) addItem(preset.getSize() - 1, cfg.getItem(String.valueOf(preset.getSize() - 1))); - } + if (preset.getSize() > -1 && !preset.getPresetSlots().contains(preset.getSize() - 1) && cfg.contains(String.valueOf(preset.getSize() - 1))) addItem(preset.getSize() - 1, cfg.getItem(String.valueOf(preset.getSize() - 1))); this.getContents(); } diff --git a/src/me/mrCookieSlime/Slimefun/holograms/AndroidStatusHologram.java b/src/me/mrCookieSlime/Slimefun/holograms/AndroidStatusHologram.java index eb970868c..a4404da96 100644 --- a/src/me/mrCookieSlime/Slimefun/holograms/AndroidStatusHologram.java +++ b/src/me/mrCookieSlime/Slimefun/holograms/AndroidStatusHologram.java @@ -37,9 +37,7 @@ public class AndroidStatusHologram { Location l = new Location(b.getWorld(), b.getX() + 0.5, b.getY() + offset, b.getZ() + 0.5); for (Entity n: l.getChunk().getEntities()) { - if (n instanceof ArmorStand) { - if (n.getCustomName() == null && l.distanceSquared(n.getLocation()) < 0.4D) return (ArmorStand) n; - } + if (n instanceof ArmorStand && n.getCustomName() == null && l.distanceSquared(n.getLocation()) < 0.4D) return (ArmorStand) n; } ArmorStand hologram = ArmorStandFactory.createHidden(l); diff --git a/src/me/mrCookieSlime/Slimefun/holograms/AnimalGrowthAccelerator.java b/src/me/mrCookieSlime/Slimefun/holograms/AnimalGrowthAccelerator.java index c420fc62e..020662d97 100644 --- a/src/me/mrCookieSlime/Slimefun/holograms/AnimalGrowthAccelerator.java +++ b/src/me/mrCookieSlime/Slimefun/holograms/AnimalGrowthAccelerator.java @@ -15,9 +15,7 @@ public class AnimalGrowthAccelerator { Location l = new Location(hopper.getWorld(), hopper.getX() + 0.5, hopper.getY() + offset, hopper.getZ() + 0.5); for (Entity n: l.getChunk().getEntities()) { - if (n instanceof ArmorStand) { - if (n.getCustomName() == null && l.distanceSquared(n.getLocation()) < 0.4D) return (ArmorStand) n; - } + if (n instanceof ArmorStand && n.getCustomName() == null && l.distanceSquared(n.getLocation()) < 0.4D) return (ArmorStand) n; } ArmorStand hologram = ArmorStandFactory.createHidden(l); diff --git a/src/me/mrCookieSlime/Slimefun/holograms/AutoBreeder.java b/src/me/mrCookieSlime/Slimefun/holograms/AutoBreeder.java index dc88d7b97..925651768 100644 --- a/src/me/mrCookieSlime/Slimefun/holograms/AutoBreeder.java +++ b/src/me/mrCookieSlime/Slimefun/holograms/AutoBreeder.java @@ -13,9 +13,7 @@ public class AutoBreeder { Location l = new Location(hopper.getWorld(), hopper.getX() + 0.5, hopper.getY(), hopper.getZ() + 0.5); for (Entity n: l.getChunk().getEntities()) { - if (n instanceof ArmorStand) { - if (n.getCustomName() == null && l.distanceSquared(n.getLocation()) < 0.4D) return (ArmorStand) n; - } + if (n instanceof ArmorStand && n.getCustomName() == null && l.distanceSquared(n.getLocation()) < 0.4D) return (ArmorStand) n; } ArmorStand hologram = ArmorStandFactory.createHidden(l); diff --git a/src/me/mrCookieSlime/Slimefun/holograms/CargoHologram.java b/src/me/mrCookieSlime/Slimefun/holograms/CargoHologram.java index 9b34dcd01..358011bcb 100644 --- a/src/me/mrCookieSlime/Slimefun/holograms/CargoHologram.java +++ b/src/me/mrCookieSlime/Slimefun/holograms/CargoHologram.java @@ -28,9 +28,7 @@ public class CargoHologram { Location l = new Location(b.getWorld(), b.getX() + 0.5, b.getY() + 0.7F, b.getZ() + 0.5); for (Entity n : l.getChunk().getEntities()) { - if (n instanceof ArmorStand) { - if (n.getCustomName() != null && l.distanceSquared(n.getLocation()) < 0.4D) return (ArmorStand) n; - } + if (n instanceof ArmorStand && n.getCustomName() != null && l.distanceSquared(n.getLocation()) < 0.4D) return (ArmorStand) n; } ArmorStand hologram = ArmorStandFactory.createHidden(l); diff --git a/src/me/mrCookieSlime/Slimefun/holograms/EnergyHologram.java b/src/me/mrCookieSlime/Slimefun/holograms/EnergyHologram.java index c64421125..b196a6fe0 100644 --- a/src/me/mrCookieSlime/Slimefun/holograms/EnergyHologram.java +++ b/src/me/mrCookieSlime/Slimefun/holograms/EnergyHologram.java @@ -35,9 +35,7 @@ public class EnergyHologram { Location l = new Location(b.getWorld(), b.getX() + 0.5, b.getY() + 0.7F, b.getZ() + 0.5); for (Entity n : l.getChunk().getEntities()) { - if (n instanceof ArmorStand) { - if (n.getCustomName() != null && l.distanceSquared(n.getLocation()) < 0.4D) return (ArmorStand) n; - } + if (n instanceof ArmorStand && n.getCustomName() != null && l.distanceSquared(n.getLocation()) < 0.4D) return (ArmorStand) n; } ArmorStand hologram = ArmorStandFactory.createHidden(l); diff --git a/src/me/mrCookieSlime/Slimefun/holograms/InfusedHopper.java b/src/me/mrCookieSlime/Slimefun/holograms/InfusedHopper.java index da1a5767e..e1d0c7652 100644 --- a/src/me/mrCookieSlime/Slimefun/holograms/InfusedHopper.java +++ b/src/me/mrCookieSlime/Slimefun/holograms/InfusedHopper.java @@ -15,9 +15,7 @@ public class InfusedHopper { Location l = new Location(hopper.getWorld(), hopper.getX() + 0.5, hopper.getY() + offset, hopper.getZ() + 0.5); for (Entity n: l.getChunk().getEntities()) { - if (n instanceof ArmorStand) { - if (n.getCustomName() == null && l.distanceSquared(n.getLocation()) < 0.4D) return (ArmorStand) n; - } + if (n instanceof ArmorStand && n.getCustomName() == null && l.distanceSquared(n.getLocation()) < 0.4D) return (ArmorStand) n; } if (!createIfNoneFound) { diff --git a/src/me/mrCookieSlime/Slimefun/holograms/Projector.java b/src/me/mrCookieSlime/Slimefun/holograms/Projector.java index 7e4d5f143..954375d6a 100644 --- a/src/me/mrCookieSlime/Slimefun/holograms/Projector.java +++ b/src/me/mrCookieSlime/Slimefun/holograms/Projector.java @@ -25,9 +25,7 @@ public class Projector { Location l = new Location(projector.getWorld(), projector.getX() + 0.5, projector.getY() + offset, projector.getZ() + 0.5); for (Entity n : l.getChunk().getEntities()) { - if (n instanceof ArmorStand) { - if (n.getCustomName() != null && n.getCustomName().equals(nametag) && l.distanceSquared(n.getLocation()) < 0.4D) return (ArmorStand) n; - } + if (n instanceof ArmorStand && n.getCustomName() != null && n.getCustomName().equals(nametag) && l.distanceSquared(n.getLocation()) < 0.4D) return (ArmorStand) n; } ArmorStand hologram = ArmorStandFactory.createHidden(l); diff --git a/src/me/mrCookieSlime/Slimefun/holograms/ReactorHologram.java b/src/me/mrCookieSlime/Slimefun/holograms/ReactorHologram.java index ed1e174df..1584d9da1 100644 --- a/src/me/mrCookieSlime/Slimefun/holograms/ReactorHologram.java +++ b/src/me/mrCookieSlime/Slimefun/holograms/ReactorHologram.java @@ -16,9 +16,7 @@ public class ReactorHologram { Location l = new Location(reactor.getWorld(), reactor.getX() + 0.5, reactor.getY() + 0.7, reactor.getZ() + 0.5); for (Entity n : l.getChunk().getEntities()) { - if (n instanceof ArmorStand) { - if (l.distanceSquared(n.getLocation()) < 0.4D) return (ArmorStand) n; - } + if (n instanceof ArmorStand && l.distanceSquared(n.getLocation()) < 0.4D) return (ArmorStand) n; } ArmorStand hologram = ArmorStandFactory.createHidden(l); diff --git a/src/me/mrCookieSlime/Slimefun/holograms/XPCollector.java b/src/me/mrCookieSlime/Slimefun/holograms/XPCollector.java index 9d329979e..8c58f3a7c 100644 --- a/src/me/mrCookieSlime/Slimefun/holograms/XPCollector.java +++ b/src/me/mrCookieSlime/Slimefun/holograms/XPCollector.java @@ -15,9 +15,7 @@ public class XPCollector { Location l = new Location(hopper.getWorld(), hopper.getX() + 0.5, hopper.getY() + offset, hopper.getZ() + 0.5); for (Entity n: l.getChunk().getEntities()) { - if (n instanceof ArmorStand) { - if (n.getCustomName() == null && l.distanceSquared(n.getLocation()) < 0.4D) return (ArmorStand) n; - } + if (n instanceof ArmorStand && n.getCustomName() == null && l.distanceSquared(n.getLocation()) < 0.4D) return (ArmorStand) n; } ArmorStand hologram = ArmorStandFactory.createHidden(l); diff --git a/src/me/mrCookieSlime/Slimefun/hooks/ClearLagHook.java b/src/me/mrCookieSlime/Slimefun/hooks/ClearLagHook.java index 6965367b2..a09402f5a 100644 --- a/src/me/mrCookieSlime/Slimefun/hooks/ClearLagHook.java +++ b/src/me/mrCookieSlime/Slimefun/hooks/ClearLagHook.java @@ -21,9 +21,7 @@ public class ClearLagHook implements Listener { Iterator iterator = e.getEntityList().iterator(); while (iterator.hasNext()) { Entity n = iterator.next(); - if (n instanceof Item) { - if (n.hasMetadata("no_pickup")) iterator.remove(); - } + if (n instanceof Item && n.hasMetadata("no_pickup")) iterator.remove(); } } } diff --git a/src/me/mrCookieSlime/Slimefun/listeners/AncientAltarListener.java b/src/me/mrCookieSlime/Slimefun/listeners/AncientAltarListener.java index 395793199..b2b8081ab 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/AncientAltarListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/AncientAltarListener.java @@ -162,9 +162,7 @@ public class AncientAltarListener implements Listener { public static Item findItem(Block b) { for (Entity n: b.getChunk().getEntities()) { - if (n instanceof Item) { - if (b.getLocation().add(0.5, 1.2, 0.5).distanceSquared(n.getLocation()) < 0.5D && n.getCustomName() != null) return (Item) n; - } + if (n instanceof Item && b.getLocation().add(0.5, 1.2, 0.5).distanceSquared(n.getLocation()) < 0.5D && n.getCustomName() != null) return (Item) n; } return null; } diff --git a/src/me/mrCookieSlime/Slimefun/listeners/ArmorListener.java b/src/me/mrCookieSlime/Slimefun/listeners/ArmorListener.java index e6b61681e..f6092db7b 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/ArmorListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/ArmorListener.java @@ -39,9 +39,7 @@ public class ArmorListener implements Listener { for (ItemStack armor: p.getInventory().getArmorContents()) { if (armor != null && SlimefunItem.getByItem(armor) != null) { if (SlimefunItem.getByItem(armor).isItem(SlimefunItems.ENDER_BOOTS) && Slimefun.hasUnlocked(p, SlimefunItems.ENDER_BOOTS, true)) { - if (e instanceof EntityDamageByEntityEvent) { - if (((EntityDamageByEntityEvent) e).getDamager() instanceof EnderPearl) e.setCancelled(true); - } + if (e instanceof EntityDamageByEntityEvent && ((EntityDamageByEntityEvent) e).getDamager() instanceof EnderPearl) e.setCancelled(true); } else if (SlimefunItem.getByItem(armor).isItem(SlimefunItems.SLIME_BOOTS) && Slimefun.hasUnlocked(p, SlimefunItems.SLIME_BOOTS, true)) { if (e.getCause() == DamageCause.FALL) e.setCancelled(true); @@ -68,9 +66,7 @@ public class ArmorListener implements Listener { } } } - else if (SlimefunItem.getByItem(armor).isItem(SlimefunItems.SLIME_BOOTS_STEEL) && Slimefun.hasUnlocked(p, SlimefunItems.SLIME_BOOTS_STEEL, true)) { - if (e.getCause() == DamageCause.FALL) e.setCancelled(true); - } + else if (SlimefunItem.getByItem(armor).isItem(SlimefunItems.SLIME_BOOTS_STEEL) && Slimefun.hasUnlocked(p, SlimefunItems.SLIME_BOOTS_STEEL, true) && e.getCause() == DamageCause.FALL) e.setCancelled(true); } } } @@ -78,8 +74,6 @@ public class ArmorListener implements Listener { @EventHandler public void onTrample(PlayerInteractEvent e) { - if (e.getAction() == Action.PHYSICAL && e.getClickedBlock().getType() == Material.FARMLAND) { - if (SlimefunManager.isItemSimiliar(e.getPlayer().getInventory().getBoots(), SlimefunItem.getItem("FARMER_SHOES"), true)) e.setCancelled(true); - } + if (e.getAction() == Action.PHYSICAL && e.getClickedBlock().getType() == Material.FARMLAND && SlimefunManager.isItemSimiliar(e.getPlayer().getInventory().getBoots(), SlimefunItem.getItem("FARMER_SHOES"), true)) e.setCancelled(true); } } diff --git a/src/me/mrCookieSlime/Slimefun/listeners/BlockListener.java b/src/me/mrCookieSlime/Slimefun/listeners/BlockListener.java index d949cc5ed..558e6ca3c 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/BlockListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/BlockListener.java @@ -36,13 +36,11 @@ public class BlockListener implements Listener { @EventHandler public void onBlockFall(EntityChangeBlockEvent event) { - if (event.getEntity() instanceof FallingBlock) { - if (BlockStorage.hasBlockInfo(event.getBlock())) { - event.setCancelled(true); - FallingBlock fb = (FallingBlock) event.getEntity(); - if (fb.getDropItem()) { - fb.getWorld().dropItemNaturally(fb.getLocation(), new ItemStack(fb.getBlockData().getMaterial(), 1)); - } + if (event.getEntity() instanceof FallingBlock && BlockStorage.hasBlockInfo(event.getBlock())) { + event.setCancelled(true); + FallingBlock fb = (FallingBlock) event.getEntity(); + if (fb.getDropItem()) { + fb.getWorld().dropItemNaturally(fb.getLocation(), new ItemStack(fb.getBlockData().getMaterial(), 1)); } } } @@ -105,39 +103,35 @@ public class BlockListener implements Listener { else multiblocks.add(mb); } } - else if (mb.getTriggerBlock() == blocks[4]) { - if ( - BlockAdjacents.hasMaterialOnSide(b, blocks[3]) && - BlockAdjacents.hasMaterialOnSide(b, blocks[5]) && - BlockAdjacents.isMaterial(b.getRelative(BlockFace.DOWN), blocks[7]) && - BlockAdjacents.hasMaterialOnSide(b.getRelative(BlockFace.DOWN), blocks[6]) && - BlockAdjacents.hasMaterialOnSide(b.getRelative(BlockFace.DOWN), blocks[8]) && - BlockAdjacents.isMaterial(b.getRelative(BlockFace.UP), blocks[1]) && - BlockAdjacents.hasMaterialOnSide(b.getRelative(BlockFace.UP), blocks[0]) && - BlockAdjacents.hasMaterialOnSide(b.getRelative(BlockFace.UP), blocks[2]) - ) { - if (blocks[0] != null && blocks[0] == blocks[2] && !BlockAdjacents.hasMaterialOnBothSides(b.getRelative(0, 1, 0), blocks[0])); - else if (blocks[3] != null && blocks[3] == blocks[5] && !BlockAdjacents.hasMaterialOnBothSides(b.getRelative(0, 0, 0), blocks[5])); - else if (blocks[6] != null && blocks[6] == blocks[8] && !BlockAdjacents.hasMaterialOnBothSides(b.getRelative(0, -1, 0), blocks[8])); - else multiblocks.add(mb); - } + else if (mb.getTriggerBlock() == blocks[4] && + BlockAdjacents.hasMaterialOnSide(b, blocks[3]) && + BlockAdjacents.hasMaterialOnSide(b, blocks[5]) && + BlockAdjacents.isMaterial(b.getRelative(BlockFace.DOWN), blocks[7]) && + BlockAdjacents.hasMaterialOnSide(b.getRelative(BlockFace.DOWN), blocks[6]) && + BlockAdjacents.hasMaterialOnSide(b.getRelative(BlockFace.DOWN), blocks[8]) && + BlockAdjacents.isMaterial(b.getRelative(BlockFace.UP), blocks[1]) && + BlockAdjacents.hasMaterialOnSide(b.getRelative(BlockFace.UP), blocks[0]) && + BlockAdjacents.hasMaterialOnSide(b.getRelative(BlockFace.UP), blocks[2]) + ) { + if (blocks[0] != null && blocks[0] == blocks[2] && !BlockAdjacents.hasMaterialOnBothSides(b.getRelative(0, 1, 0), blocks[0])); + else if (blocks[3] != null && blocks[3] == blocks[5] && !BlockAdjacents.hasMaterialOnBothSides(b.getRelative(0, 0, 0), blocks[5])); + else if (blocks[6] != null && blocks[6] == blocks[8] && !BlockAdjacents.hasMaterialOnBothSides(b.getRelative(0, -1, 0), blocks[8])); + else multiblocks.add(mb); } - else if (mb.getTriggerBlock() == blocks[7]) { - if ( - BlockAdjacents.hasMaterialOnSide(b, blocks[6]) && - BlockAdjacents.hasMaterialOnSide(b, blocks[8]) && - BlockAdjacents.isMaterial(b.getRelative(BlockFace.UP).getRelative(BlockFace.UP), blocks[1]) && - BlockAdjacents.hasMaterialOnSide(b.getRelative(BlockFace.UP).getRelative(BlockFace.UP), blocks[0]) && - BlockAdjacents.hasMaterialOnSide(b.getRelative(BlockFace.UP).getRelative(BlockFace.UP), blocks[2]) && - BlockAdjacents.isMaterial(b.getRelative(BlockFace.UP), blocks[4]) && - BlockAdjacents.hasMaterialOnSide(b.getRelative(BlockFace.UP), blocks[3]) && - BlockAdjacents.hasMaterialOnSide(b.getRelative(BlockFace.UP), blocks[5]) - ) { - if (blocks[0] != null && blocks[0] == blocks[2] && !BlockAdjacents.hasMaterialOnBothSides(b.getRelative(0, 2, 0), blocks[0])); - else if (blocks[3] != null && blocks[3] == blocks[5] && !BlockAdjacents.hasMaterialOnBothSides(b.getRelative(0, 1, 0), blocks[5])); - else if (blocks[6] != null && blocks[6] == blocks[8] && !BlockAdjacents.hasMaterialOnBothSides(b.getRelative(0, 0, 0), blocks[8])); - else multiblocks.add(mb); - } + else if (mb.getTriggerBlock() == blocks[7] && + BlockAdjacents.hasMaterialOnSide(b, blocks[6]) && + BlockAdjacents.hasMaterialOnSide(b, blocks[8]) && + BlockAdjacents.isMaterial(b.getRelative(BlockFace.UP).getRelative(BlockFace.UP), blocks[1]) && + BlockAdjacents.hasMaterialOnSide(b.getRelative(BlockFace.UP).getRelative(BlockFace.UP), blocks[0]) && + BlockAdjacents.hasMaterialOnSide(b.getRelative(BlockFace.UP).getRelative(BlockFace.UP), blocks[2]) && + BlockAdjacents.isMaterial(b.getRelative(BlockFace.UP), blocks[4]) && + BlockAdjacents.hasMaterialOnSide(b.getRelative(BlockFace.UP), blocks[3]) && + BlockAdjacents.hasMaterialOnSide(b.getRelative(BlockFace.UP), blocks[5]) + ) { + if (blocks[0] != null && blocks[0] == blocks[2] && !BlockAdjacents.hasMaterialOnBothSides(b.getRelative(0, 2, 0), blocks[0])); + else if (blocks[3] != null && blocks[3] == blocks[5] && !BlockAdjacents.hasMaterialOnBothSides(b.getRelative(0, 1, 0), blocks[5])); + else if (blocks[6] != null && blocks[6] == blocks[8] && !BlockAdjacents.hasMaterialOnBothSides(b.getRelative(0, 0, 0), blocks[8])); + else multiblocks.add(mb); } } } diff --git a/src/me/mrCookieSlime/Slimefun/listeners/BowListener.java b/src/me/mrCookieSlime/Slimefun/listeners/BowListener.java index 4aa226708..5f62f26db 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/BowListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/BowListener.java @@ -45,54 +45,52 @@ public class BowListener implements Listener { } private void handleGrapplingHook(Arrow arrow) { - if (arrow != null) { - if (arrow.getShooter() instanceof Player && utilities.jumpState.containsKey(((Player) arrow.getShooter()).getUniqueId())) { - final Player p = (Player) arrow.getShooter(); - if (p.getGameMode() != GameMode.CREATIVE && utilities.jumpState.get(p.getUniqueId())) arrow.getWorld().dropItem(arrow.getLocation(), SlimefunItem.getItem("GRAPPLING_HOOK")); - if (p.getLocation().distance(arrow.getLocation()) < 3.0D) { - if (arrow.getLocation().getY() > p.getLocation().getY()) { - p.setVelocity(new Vector(0.0D, 0.25D, 0.0D)); - } - else p.setVelocity(arrow.getLocation().toVector().subtract(p.getLocation().toVector())); - - for (Entity n: utilities.remove.get(p.getUniqueId())) { - n.remove(); - } - - Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> { - utilities.jumpState.remove(p.getUniqueId()); - utilities.remove.remove(p.getUniqueId()); - }, 20L); + if (arrow != null && arrow.getShooter() instanceof Player && utilities.jumpState.containsKey(((Player) arrow.getShooter()).getUniqueId())) { + final Player p = (Player) arrow.getShooter(); + if (p.getGameMode() != GameMode.CREATIVE && utilities.jumpState.get(p.getUniqueId())) arrow.getWorld().dropItem(arrow.getLocation(), SlimefunItem.getItem("GRAPPLING_HOOK")); + if (p.getLocation().distance(arrow.getLocation()) < 3.0D) { + if (arrow.getLocation().getY() > p.getLocation().getY()) { + p.setVelocity(new Vector(0.0D, 0.25D, 0.0D)); } - else { - Location l = p.getLocation(); - l.setY(l.getY() + 0.5D); - p.teleport(l); - - double g = -0.08D; - double d = arrow.getLocation().distance(l); - double t = d; - double v_x = (1.0D + 0.08000000000000001D * t) * (arrow.getLocation().getX() - l.getX()) / t; - double v_y = (1.0D + 0.04D * t) * (arrow.getLocation().getY() - l.getY()) / t - 0.5D * g * t; - double v_z = (1.0D + 0.08000000000000001D * t) * (arrow.getLocation().getZ() - l.getZ()) / t; + else p.setVelocity(arrow.getLocation().toVector().subtract(p.getLocation().toVector())); - Vector v = p.getVelocity(); - - v.setX(v_x); - v.setY(v_y); - v.setZ(v_z); - - p.setVelocity(v); - - for (Entity n: utilities.remove.get(p.getUniqueId())) { - n.remove(); - } - - Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> { - utilities.jumpState.remove(p.getUniqueId()); - utilities.remove.remove(p.getUniqueId()); - }, 20L); + for (Entity n: utilities.remove.get(p.getUniqueId())) { + n.remove(); } + + Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> { + utilities.jumpState.remove(p.getUniqueId()); + utilities.remove.remove(p.getUniqueId()); + }, 20L); + } + else { + Location l = p.getLocation(); + l.setY(l.getY() + 0.5D); + p.teleport(l); + + double g = -0.08D; + double d = arrow.getLocation().distance(l); + double t = d; + double v_x = (1.0D + 0.08000000000000001D * t) * (arrow.getLocation().getX() - l.getX()) / t; + double v_y = (1.0D + 0.04D * t) * (arrow.getLocation().getY() - l.getY()) / t - 0.5D * g * t; + double v_z = (1.0D + 0.08000000000000001D * t) * (arrow.getLocation().getZ() - l.getZ()) / t; + + Vector v = p.getVelocity(); + + v.setX(v_x); + v.setY(v_y); + v.setZ(v_z); + + p.setVelocity(v); + + for (Entity n: utilities.remove.get(p.getUniqueId())) { + n.remove(); + } + + Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> { + utilities.jumpState.remove(p.getUniqueId()); + utilities.remove.remove(p.getUniqueId()); + }, 20L); } } } diff --git a/src/me/mrCookieSlime/Slimefun/listeners/DamageListener.java b/src/me/mrCookieSlime/Slimefun/listeners/DamageListener.java index f3e75a38a..648546c60 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/DamageListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/DamageListener.java @@ -64,11 +64,9 @@ public class DamageListener implements Listener { Soul.storeItem(e.getEntity().getUniqueId(), item); drops.remove(); } - else if (SlimefunItem.getByItem(removeEnchantments(item)) != null) { - if (SlimefunItem.getByItem(removeEnchantments(item)) instanceof SoulboundItem) { - Soul.storeItem(e.getEntity().getUniqueId(), item); - drops.remove(); - } + else if (SlimefunItem.getByItem(removeEnchantments(item)) != null && SlimefunItem.getByItem(removeEnchantments(item)) instanceof SoulboundItem) { + Soul.storeItem(e.getEntity().getUniqueId(), item); + drops.remove(); } } } @@ -86,39 +84,33 @@ public class DamageListener implements Listener { } } - if (item != null) { - if (Slimefun.hasUnlocked(p, item, true)) { - if (SlimefunManager.isItemSimiliar(item, SlimefunItem.getItem("SWORD_OF_BEHEADING"), true)) { - if (e.getEntity() instanceof Zombie) { - if (random.nextInt(100) < (Integer) Slimefun.getItemValue("SWORD_OF_BEHEADING", "chance.ZOMBIE")) { - e.getDrops().add(new ItemStack(Material.ZOMBIE_HEAD)); - } - } - else if (e.getEntity() instanceof WitherSkeleton) { - if (random.nextInt(100) < (Integer) Slimefun.getItemValue("SWORD_OF_BEHEADING", "chance.WITHER_SKELETON")) - e.getDrops().add(new ItemStack(Material.WITHER_SKELETON_SKULL)); - } - else if (e.getEntity() instanceof Skeleton) { - if (random.nextInt(100) < (Integer) Slimefun.getItemValue("SWORD_OF_BEHEADING", "chance.SKELETON")) - e.getDrops().add(new ItemStack(Material.SKELETON_SKULL)); - } - else if (e.getEntity() instanceof Creeper) { - if (random.nextInt(100) < (Integer) Slimefun.getItemValue("SWORD_OF_BEHEADING", "chance.CREEPER")) { - e.getDrops().add(new ItemStack(Material.CREEPER_HEAD)); - } - } - else if (e.getEntity() instanceof Player) { - if (random.nextInt(100) < (Integer) Slimefun.getItemValue("SWORD_OF_BEHEADING", "chance.PLAYER")) { - ItemStack skull = new ItemStack(Material.PLAYER_HEAD); - ItemMeta meta = skull.getItemMeta(); - ((SkullMeta) meta).setOwningPlayer((Player) e.getEntity()); - skull.setItemMeta(meta); - - e.getDrops().add(skull); - } - } + if (item != null && Slimefun.hasUnlocked(p, item, true) && SlimefunManager.isItemSimiliar(item, SlimefunItem.getItem("SWORD_OF_BEHEADING"), true)) { + if (e.getEntity() instanceof Zombie) { + if (random.nextInt(100) < (Integer) Slimefun.getItemValue("SWORD_OF_BEHEADING", "chance.ZOMBIE")) { + e.getDrops().add(new ItemStack(Material.ZOMBIE_HEAD)); } } + else if (e.getEntity() instanceof WitherSkeleton) { + if (random.nextInt(100) < (Integer) Slimefun.getItemValue("SWORD_OF_BEHEADING", "chance.WITHER_SKELETON")) + e.getDrops().add(new ItemStack(Material.WITHER_SKELETON_SKULL)); + } + else if (e.getEntity() instanceof Skeleton) { + if (random.nextInt(100) < (Integer) Slimefun.getItemValue("SWORD_OF_BEHEADING", "chance.SKELETON")) + e.getDrops().add(new ItemStack(Material.SKELETON_SKULL)); + } + else if (e.getEntity() instanceof Creeper) { + if (random.nextInt(100) < (Integer) Slimefun.getItemValue("SWORD_OF_BEHEADING", "chance.CREEPER")) { + e.getDrops().add(new ItemStack(Material.CREEPER_HEAD)); + } + } + else if (e.getEntity() instanceof Player && random.nextInt(100) < (Integer) Slimefun.getItemValue("SWORD_OF_BEHEADING", "chance.PLAYER")) { + ItemStack skull = new ItemStack(Material.PLAYER_HEAD); + ItemMeta meta = skull.getItemMeta(); + ((SkullMeta) meta).setOwningPlayer((Player) e.getEntity()); + skull.setItemMeta(meta); + + e.getDrops().add(skull); + } } if (!e.getEntity().getCanPickupItems() && Talisman.checkFor(e, SlimefunItem.getByID("HUNTER_TALISMAN")) && !(e.getEntity() instanceof Player)) { @@ -143,11 +135,9 @@ public class DamageListener implements Listener { @EventHandler public void onArrowHit(EntityDamageEvent e) { - if (e.getEntity() instanceof Player && e.getCause() == DamageCause.FALL) { - if (utilities.damage.contains(e.getEntity().getUniqueId())) { - e.setCancelled(true); - utilities.damage.remove(e.getEntity().getUniqueId()); - } + if (e.getEntity() instanceof Player && e.getCause() == DamageCause.FALL && utilities.damage.contains(e.getEntity().getUniqueId())) { + e.setCancelled(true); + utilities.damage.remove(e.getEntity().getUniqueId()); } } diff --git a/src/me/mrCookieSlime/Slimefun/listeners/FurnaceListener.java b/src/me/mrCookieSlime/Slimefun/listeners/FurnaceListener.java index ff65159c0..691e9995d 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/FurnaceListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/FurnaceListener.java @@ -25,9 +25,8 @@ public class FurnaceListener implements Listener { public void onBurn(FurnaceBurnEvent e) { SlimefunItem furnace = BlockStorage.check(e.getBlock()); - if (furnace instanceof EnhancedFurnace) { - if (((EnhancedFurnace) furnace).getFuelEfficiency() > 0) - e.setBurnTime(((int) ((1 + 0.2 * ((EnhancedFurnace) furnace).getFuelEfficiency()) * e.getBurnTime()))); + if (furnace instanceof EnhancedFurnace && ((EnhancedFurnace) furnace).getFuelEfficiency() > 0) { + e.setBurnTime(((int) ((1 + 0.2 * ((EnhancedFurnace) furnace).getFuelEfficiency()) * e.getBurnTime()))); } } diff --git a/src/me/mrCookieSlime/Slimefun/listeners/GearListener.java b/src/me/mrCookieSlime/Slimefun/listeners/GearListener.java index 2a2bf960f..438982cd8 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/GearListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/GearListener.java @@ -41,23 +41,19 @@ public class GearListener implements Listener { } } } - else if (item.isItem(SlimefunItems.PARACHUTE)) { - if (Slimefun.hasUnlocked(p, SlimefunItems.PARACHUTE, true)) { - ParachuteTask task = new ParachuteTask(p); - task.setID(Bukkit.getScheduler().scheduleSyncRepeatingTask(SlimefunStartup.instance, task, 0L, 3L)); - } + else if (item.isItem(SlimefunItems.PARACHUTE) && Slimefun.hasUnlocked(p, SlimefunItems.PARACHUTE, true)) { + ParachuteTask task = new ParachuteTask(p); + task.setID(Bukkit.getScheduler().scheduleSyncRepeatingTask(SlimefunStartup.instance, task, 0L, 3L)); } } if (SlimefunItem.getByItem(p.getInventory().getBoots()) != null) { SlimefunItem item = SlimefunItem.getByItem(p.getInventory().getBoots()); - if (item instanceof JetBoots) { - if (Slimefun.hasUnlocked(p, item.getItem(), true)) { - double speed = ((JetBoots) item).getSpeed(); - if (speed > 0.2) { - JetBootsTask task = new JetBootsTask(p, speed); - task.setID(Bukkit.getScheduler().scheduleSyncRepeatingTask(SlimefunStartup.instance, task, 0L, 2L)); - } + if (item instanceof JetBoots && Slimefun.hasUnlocked(p, item.getItem(), true)) { + double speed = ((JetBoots) item).getSpeed(); + if (speed > 0.2) { + JetBootsTask task = new JetBootsTask(p, speed); + task.setID(Bukkit.getScheduler().scheduleSyncRepeatingTask(SlimefunStartup.instance, task, 0L, 2L)); } } } diff --git a/src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java b/src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java index 934060229..aaa2f32a0 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java @@ -71,10 +71,8 @@ public class ItemListener implements Listener { @EventHandler public void onIgnitionChamberItemMove(InventoryMoveItemEvent e) { - if (e.getInitiator().getHolder() instanceof Hopper) { - if (BlockStorage.check(((Hopper) e.getInitiator().getHolder()).getBlock(), "IGNITION_CHAMBER")) { - e.setCancelled(true); - } + if (e.getInitiator().getHolder() instanceof Hopper && BlockStorage.check(((Hopper) e.getInitiator().getHolder()).getBlock(), "IGNITION_CHAMBER")) { + e.setCancelled(true); } } @@ -447,9 +445,7 @@ public class ItemListener implements Listener { @EventHandler (ignoreCancelled = true) public void onPreBrew(InventoryClickEvent e) { Inventory inventory = e.getInventory(); - if (inventory instanceof BrewerInventory && inventory.getHolder() instanceof BrewingStand) { - if (e.getRawSlot() < inventory.getSize()) e.setCancelled(SlimefunItem.getByItem(e.getCursor()) != null); - } + if (inventory instanceof BrewerInventory && inventory.getHolder() instanceof BrewingStand && e.getRawSlot() < inventory.getSize()) e.setCancelled(SlimefunItem.getByItem(e.getCursor()) != null); } } diff --git a/src/me/mrCookieSlime/Slimefun/listeners/TalismanListener.java b/src/me/mrCookieSlime/Slimefun/listeners/TalismanListener.java index 6beb60e9c..1b9b8873e 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/TalismanListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/TalismanListener.java @@ -48,32 +48,22 @@ public class TalismanListener implements Listener { @EventHandler(priority=EventPriority.MONITOR) public void onDamageGet(EntityDamageEvent e) { if (!e.isCancelled()) { - if (e instanceof EntityDamageByEntityEvent) { - if (((EntityDamageByEntityEvent) e).getDamager() instanceof Player && random.nextInt(100) < 45) { - if (SlimefunManager.isItemSimiliar(((Player) ((EntityDamageByEntityEvent) e).getDamager()).getInventory().getItemInMainHand(), SlimefunItem.getItem("BLADE_OF_VAMPIRES"), true)) { - ((Player) ((EntityDamageByEntityEvent) e).getDamager()).playSound(((EntityDamageByEntityEvent) e).getDamager().getLocation(), Sound.ENTITY_ARROW_HIT_PLAYER, 0.7F, 0.7F); - ((Player) ((EntityDamageByEntityEvent) e).getDamager()).addPotionEffect(new PotionEffect(PotionEffectType.HEAL, 1, 1)); - } - } + if (e instanceof EntityDamageByEntityEvent && ((EntityDamageByEntityEvent) e).getDamager() instanceof Player && random.nextInt(100) < 45 && SlimefunManager.isItemSimiliar(((Player) ((EntityDamageByEntityEvent) e).getDamager()).getInventory().getItemInMainHand(), SlimefunItem.getItem("BLADE_OF_VAMPIRES"), true)) { + ((Player) ((EntityDamageByEntityEvent) e).getDamager()).playSound(((EntityDamageByEntityEvent) e).getDamager().getLocation(), Sound.ENTITY_ARROW_HIT_PLAYER, 0.7F, 0.7F); + ((Player) ((EntityDamageByEntityEvent) e).getDamager()).addPotionEffect(new PotionEffect(PotionEffectType.HEAL, 1, 1)); } - if (e.getEntity() instanceof Player) { - if (!e.isCancelled()) { - if (e.getCause() == DamageCause.LAVA) Talisman.checkFor(e, SlimefunItem.getByID("LAVA_TALISMAN")); - if (e.getCause() == DamageCause.DROWNING) Talisman.checkFor(e, SlimefunItem.getByID("WATER_TALISMAN")); - if (e.getCause() == DamageCause.FALL) Talisman.checkFor(e, SlimefunItem.getByID("ANGEL_TALISMAN")); - if (e.getCause() == DamageCause.FIRE) Talisman.checkFor(e, SlimefunItem.getByID("FIRE_TALISMAN")); - if (e.getCause() == DamageCause.ENTITY_ATTACK) Talisman.checkFor(e, SlimefunItem.getByID("WARRIOR_TALISMAN")); - if (e.getCause() == DamageCause.ENTITY_ATTACK) Talisman.checkFor(e, SlimefunItem.getByID("KNIGHT_TALISMAN")); - if (e.getCause() == DamageCause.PROJECTILE) { - if (Talisman.checkFor(e, SlimefunItem.getByID("WHIRLWIND_TALISMAN"))) { - if (((EntityDamageByEntityEvent) e).getDamager() instanceof Projectile) { - Vector direction = ((Player) e.getEntity()).getEyeLocation().getDirection().multiply(2.0); - Projectile projectile = (Projectile) e.getEntity().getWorld().spawnEntity(((LivingEntity) e.getEntity()).getEyeLocation().add(direction.getX(), direction.getY(), direction.getZ()), ((EntityDamageByEntityEvent) e).getDamager().getType()); - projectile.setVelocity(direction); - ((EntityDamageByEntityEvent) e).getDamager().remove(); - } - } - } + if (e.getEntity() instanceof Player && !e.isCancelled()) { + if (e.getCause() == DamageCause.LAVA) Talisman.checkFor(e, SlimefunItem.getByID("LAVA_TALISMAN")); + if (e.getCause() == DamageCause.DROWNING) Talisman.checkFor(e, SlimefunItem.getByID("WATER_TALISMAN")); + if (e.getCause() == DamageCause.FALL) Talisman.checkFor(e, SlimefunItem.getByID("ANGEL_TALISMAN")); + if (e.getCause() == DamageCause.FIRE) Talisman.checkFor(e, SlimefunItem.getByID("FIRE_TALISMAN")); + if (e.getCause() == DamageCause.ENTITY_ATTACK) Talisman.checkFor(e, SlimefunItem.getByID("WARRIOR_TALISMAN")); + if (e.getCause() == DamageCause.ENTITY_ATTACK) Talisman.checkFor(e, SlimefunItem.getByID("KNIGHT_TALISMAN")); + if (e.getCause() == DamageCause.PROJECTILE && Talisman.checkFor(e, SlimefunItem.getByID("WHIRLWIND_TALISMAN")) && ((EntityDamageByEntityEvent) e).getDamager() instanceof Projectile) { + Vector direction = ((Player) e.getEntity()).getEyeLocation().getDirection().multiply(2.0); + Projectile projectile = (Projectile) e.getEntity().getWorld().spawnEntity(((LivingEntity) e.getEntity()).getEyeLocation().add(direction.getX(), direction.getY(), direction.getZ()), ((EntityDamageByEntityEvent) e).getDamager().getType()); + projectile.setVelocity(direction); + ((EntityDamageByEntityEvent) e).getDamager().remove(); } } } @@ -130,15 +120,13 @@ public class TalismanListener implements Listener { String enchant = enchantments.get(random.nextInt(enchantments.size())); e.getEnchantsToAdd().put(Enchantment.getByKey(NamespacedKey.minecraft(enchant.split("-")[0])), Integer.parseInt(enchant.split("-")[1])); } - if (!e.getEnchantsToAdd().containsKey(Enchantment.SILK_TOUCH) && Enchantment.LOOT_BONUS_BLOCKS.canEnchantItem(e.getItem())) { - if (Talisman.checkFor(e, SlimefunItem.getByID("WIZARD_TALISMAN"))) { - if (e.getEnchantsToAdd().containsKey(Enchantment.LOOT_BONUS_BLOCKS)) e.getEnchantsToAdd().remove(Enchantment.LOOT_BONUS_BLOCKS); - Set enchantments = e.getEnchantsToAdd().keySet(); - for (Enchantment en : enchantments) { - if (random.nextInt(100) < 40) e.getEnchantsToAdd().put(en, random.nextInt(3) + 1); - } - e.getItem().addUnsafeEnchantment(Enchantment.LOOT_BONUS_BLOCKS, random.nextInt(3) + 3); + if (!e.getEnchantsToAdd().containsKey(Enchantment.SILK_TOUCH) && Enchantment.LOOT_BONUS_BLOCKS.canEnchantItem(e.getItem()) && Talisman.checkFor(e, SlimefunItem.getByID("WIZARD_TALISMAN"))) { + if (e.getEnchantsToAdd().containsKey(Enchantment.LOOT_BONUS_BLOCKS)) e.getEnchantsToAdd().remove(Enchantment.LOOT_BONUS_BLOCKS); + Set enchantments = e.getEnchantsToAdd().keySet(); + for (Enchantment en : enchantments) { + if (random.nextInt(100) < 40) e.getEnchantsToAdd().put(en, random.nextInt(3) + 1); } + e.getItem().addUnsafeEnchantment(Enchantment.LOOT_BONUS_BLOCKS, random.nextInt(3) + 3); } } @@ -160,12 +148,10 @@ public class TalismanListener implements Listener { fortune = (e.getBlock().getType() == Material.LAPIS_ORE ? 4 + random.nextInt(5) : 1) * (fortune + 1); } - if (!item.getEnchantments().containsKey(Enchantment.SILK_TOUCH) && e.getBlock().getType().toString().endsWith("_ORE")) { - if (Talisman.checkFor(e, SlimefunItem.getByID("MINER_TALISMAN"))) { - if (drops.isEmpty()) drops = (List) e.getBlock().getDrops(); - for (ItemStack drop : new ArrayList<>(drops)) { - if (!drop.getType().isBlock()) drops.add(new CustomItem(drop, fortune * 2)); - } + if (!item.getEnchantments().containsKey(Enchantment.SILK_TOUCH) && e.getBlock().getType().toString().endsWith("_ORE") && Talisman.checkFor(e, SlimefunItem.getByID("MINER_TALISMAN"))) { + if (drops.isEmpty()) drops = (List) e.getBlock().getDrops(); + for (ItemStack drop : new ArrayList<>(drops)) { + if (!drop.getType().isBlock()) drops.add(new CustomItem(drop, fortune * 2)); } } } diff --git a/src/me/mrCookieSlime/Slimefun/listeners/ToolListener.java b/src/me/mrCookieSlime/Slimefun/listeners/ToolListener.java index f4a75ef85..3402ca60b 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/ToolListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/ToolListener.java @@ -185,11 +185,9 @@ public class ToolListener implements Listener { e.setCancelled(true); } } - else if (SlimefunManager.isItemSimiliar(item, SlimefunItems.CT_IMPORT_BUS, false)) { - if (e.getBlock().getY() != e.getBlockAgainst().getY()) { - Messages.local.sendTranslation(e.getPlayer(), "machines.CARGO_NODES.must-be-placed", true); - e.setCancelled(true); - } + else if (SlimefunManager.isItemSimiliar(item, SlimefunItems.CT_IMPORT_BUS, false) && e.getBlock().getY() != e.getBlockAgainst().getY()) { + Messages.local.sendTranslation(e.getPlayer(), "machines.CARGO_NODES.must-be-placed", true); + e.setCancelled(true); } } From ad5271e9a43aa9cbcb635b5fe60eec4d5758c94d Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Thu, 29 Aug 2019 22:27:46 +0200 Subject: [PATCH 044/169] Fixes #1059 --- .../Slimefun/Lists/SlimefunItems.java | 173 ++++++++++++++---- .../Slimefun/listeners/TalismanListener.java | 2 +- 2 files changed, 137 insertions(+), 38 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java b/src/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java index a12350866..daa015e5b 100644 --- a/src/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java +++ b/src/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java @@ -1,5 +1,8 @@ package me.mrCookieSlime.Slimefun.Lists; +import java.util.HashMap; +import java.util.Map; + import org.bukkit.ChatColor; import org.bukkit.Color; import org.bukkit.FireworkEffect; @@ -62,6 +65,7 @@ public final class SlimefunItems { public static final ItemStack VOIDBAG_BIG = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMmEzYjM0ODYyYjlhZmI2M2NmOGQ1Nzc5OTY2ZDNmYmE3MGFmODJiMDRlODNmM2VhZjY0NDlhZWJhIn19fQ=="), "&4Big Void Bag","", "&7Size: &e27", "&7ID: ", "", "&7&eLeft Click&7 to suck up nearby Items", "&7&eRight Click&7 to open"); public static final ItemStack VOIDBAG_LARGE = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMmEzYjM0ODYyYjlhZmI2M2NmOGQ1Nzc5OTY2ZDNmYmE3MGFmODJiMDRlODNmM2VhZjY0NDlhZWJhIn19fQ=="), "&4Large Void Bag","", "&7Size: &e36", "&7ID: ", "", "&7&eLeft Click&7 to suck up nearby Items", "&7&eRight Click&7 to open"); public static final ItemStack BOUND_VOIDBAG = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMmEzYjM0ODYyYjlhZmI2M2NmOGQ1Nzc5OTY2ZDNmYmE3MGFmODJiMDRlODNmM2VhZjY0NDlhZWJhIn19fQ=="), "&4Soulbound Void Bag","", "&7Size: &e36", "&7ID: ", "", "&7&eLeft Click&7 to suck up nearby Items", "&7&eRight Click&7 to open"); + /* Jetpacks */ public static final ItemStack DURALUMIN_JETPACK = new CustomArmor(new CustomItem(Material.LEATHER_CHESTPLATE, "&9Electric Jetpack &7- &eI", "", "&8\u21E8 &7Material: &bDuralumin", "&c&o&8\u21E8 &e\u26A1 &70 / 20 J", "&8\u21E8 &7Thrust: &c0.35", "", "&7Hold &eShift&7 to use"), Color.SILVER); @@ -123,12 +127,21 @@ public final class SlimefunItems { public static final ItemStack EASTER_CARROT_PIE = new CustomItem(Material.PUMPKIN_PIE, "&6Carrot Pie"); /* Weapons */ - public static final ItemStack GRANDMAS_WALKING_STICK = new CustomItem(Material.STICK, "&7Grandmas Walking Stick", 0, new String[0], new String[] {"KNOCKBACK-2"}); - public static final ItemStack GRANDPAS_WALKING_STICK = new CustomItem(Material.STICK, "&7Grandpas Walking Stick", 0, new String[0], new String[] {"KNOCKBACK-5"}); + public static final ItemStack GRANDMAS_WALKING_STICK = new CustomItem(Material.STICK, "&7Grandmas Walking Stick"); + public static final ItemStack GRANDPAS_WALKING_STICK = new CustomItem(Material.STICK, "&7Grandpas Walking Stick"); public static final ItemStack SWORD_OF_BEHEADING = new CustomItem(Material.IRON_SWORD, "&6Sword of Beheading", "&7Beheading II", "", "&rHas a chance to behead Mobs", "&r(even a higher chance for Wither Skeletons)"); - public static final ItemStack BLADE_OF_VAMPIRES = new CustomItem(Material.GOLDEN_SWORD, "&cBlade of Vampires", 0, new String[] {"&7Life Steal I", "", "&rEverytime you attack something", "&ryou have a 45% chance to", "&rrecover 2 Hearts of your Health"}, new String[] {"FIRE_ASPECT-2", "DURABILITY-4", "DAMAGE_ALL-2"}); + public static final ItemStack BLADE_OF_VAMPIRES = new CustomItem(Material.GOLDEN_SWORD, "&cBlade of Vampires", "&7Life Steal I", "", "&rEverytime you attack something", "&ryou have a 45% chance to", "&rrecover 2 Hearts of your Health"); public static final ItemStack SEISMIC_AXE = new CustomItem(Material.IRON_AXE, "&aSeismic Axe", "", "&7&oA portable Earthquake...", "", "&7&eRight Click&7 to use"); + static { + GRANDMAS_WALKING_STICK.addUnsafeEnchantment(Enchantment.KNOCKBACK, 2); + GRANDPAS_WALKING_STICK.addUnsafeEnchantment(Enchantment.KNOCKBACK, 5); + + BLADE_OF_VAMPIRES.addUnsafeEnchantment(Enchantment.FIRE_ASPECT, 2); + BLADE_OF_VAMPIRES.addUnsafeEnchantment(Enchantment.DURABILITY, 4); + BLADE_OF_VAMPIRES.addUnsafeEnchantment(Enchantment.DAMAGE_ALL, 2); + } + /* Bows */ public static final ItemStack EXPLOSIVE_BOW = new CustomItem(Material.BOW, "&cExplosive Bow", "&rAny Arrows fired using this Bow", "&rwill launch hit enemys into the air"); public static final ItemStack ICY_BOW = new CustomItem(Material.BOW, "&bIcy Bow", "&rAny Arrows fired using this Bow", "&rwill prevent hit enemys from moving", "&rfor 2 seconds"); @@ -137,59 +150,139 @@ public final class SlimefunItems { public static final ItemStack AUTO_SMELT_PICKAXE = new CustomItem(Material.DIAMOND_PICKAXE, "&6Smelter's Pickaxe", "&c&lAuto-Smelting", "", "&9Works with Fortune"); public static final ItemStack LUMBER_AXE = new CustomItem(Material.DIAMOND_AXE, "&6Lumber Axe", "&a&oCuts down the whole Tree..."); public static final ItemStack PICKAXE_OF_CONTAINMENT = new CustomItem(Material.IRON_PICKAXE, "&cPickaxe of Containment", "", "&9Can pickup Spawners"); - public static final ItemStack HERCULES_PICKAXE = new CustomItem(Material.IRON_PICKAXE, "&9Hercules' Pickaxe", 0, new String[] {"", "&rSo powerful that it", "&rcrushes all mined Ores", "&rinto Dust..."}, new String[] {"DURABILITY-2", "DIG_SPEED-4"}); + public static final ItemStack HERCULES_PICKAXE = new CustomItem(Material.IRON_PICKAXE, "&9Hercules' Pickaxe", "", "&rSo powerful that it", "&rcrushes all mined Ores", "&rinto Dust..."); public static final ItemStack EXPLOSIVE_PICKAXE = new CustomItem(Material.DIAMOND_PICKAXE, "&eExplosive Pickaxe", "", "&rAllows you to mine a good bit", "&rof Blocks at once...", "", "&9Works with Fortune"); public static final ItemStack EXPLOSIVE_SHOVEL = new CustomItem(Material.DIAMOND_SHOVEL, "&eExplosive Shovel", "", "&rAllows you to mine a good bit", "&rof diggable Blocks at once..."); public static final ItemStack PICKAXE_OF_THE_SEEKER = new CustomItem(Material.DIAMOND_PICKAXE, "&aPickaxe of the Seeker", "&rWill always point you to the nearest Ore", "&rbut might get damaged when doing it", "", "&7&eRight Click&7 to be pointed to the nearest Ore"); - public static final ItemStack COBALT_PICKAXE = new CustomItem(Material.IRON_PICKAXE, "&9Cobalt Pickaxe", 0, new String[0], new String[] {"DURABILITY-3", "DIG_SPEED-6"}); + public static final ItemStack COBALT_PICKAXE = new CustomItem(Material.IRON_PICKAXE, "&9Cobalt Pickaxe"); public static final ItemStack PICKAXE_OF_VEIN_MINING = new CustomItem(Material.DIAMOND_PICKAXE, "&ePickaxe of Vein Mining", "", "&rThis Pickaxe will dig out", "&rwhole Veins of Ores..."); + static { + HERCULES_PICKAXE.addUnsafeEnchantment(Enchantment.DURABILITY, 5); + HERCULES_PICKAXE.addUnsafeEnchantment(Enchantment.DIG_SPEED, 3); + + COBALT_PICKAXE.addUnsafeEnchantment(Enchantment.DURABILITY, 10); + COBALT_PICKAXE.addUnsafeEnchantment(Enchantment.DIG_SPEED, 6); + } + /* Armor */ public static final ItemStack GLOWSTONE_HELMET = new CustomArmor(new CustomItem(Material.LEATHER_HELMET, "&e&lGlowstone Helmet", "", "&a&oShining like the sun!", "", "&9+ Night Vision"), Color.YELLOW); public static final ItemStack GLOWSTONE_CHESTPLATE = new CustomArmor(new CustomItem(Material.LEATHER_CHESTPLATE, "&e&lGlowstone Chestplate", "", "&a&oShining like the sun!", "", "&9+ Night Vision"), Color.YELLOW); public static final ItemStack GLOWSTONE_LEGGINGS = new CustomArmor(new CustomItem(Material.LEATHER_LEGGINGS, "&e&lGlowstone Leggings", "", "&a&oShining like the sun!", "", "&9+ Night Vision"), Color.YELLOW); public static final ItemStack GLOWSTONE_BOOTS = new CustomArmor(new CustomItem(Material.LEATHER_BOOTS, "&e&lGlowstone Boots", "", "&a&oShining like the sun!", "", "&9+ Night Vision"), Color.YELLOW); + public static final ItemStack ENDER_HELMET = new CustomArmor(new CustomItem(Material.LEATHER_HELMET, "&5&lEnder Helmet", "", "&a&oSometimes its here, sometimes there!"), Color.fromRGB(28, 25, 112)); public static final ItemStack ENDER_CHESTPLATE = new CustomArmor(new CustomItem(Material.LEATHER_CHESTPLATE, "&5&lEnder Chestplate", "", "&a&oSometimes its here, sometimes there!"), Color.fromRGB(28, 25, 112)); public static final ItemStack ENDER_LEGGINGS = new CustomArmor(new CustomItem(Material.LEATHER_LEGGINGS, "&5&lEnder Leggings", "", "&a&oSometimes its here, sometimes there!"), Color.fromRGB(28, 25, 112)); public static final ItemStack ENDER_BOOTS = new CustomArmor(new CustomItem(Material.LEATHER_BOOTS, "&5&lEnder Boots", "", "&a&oSometimes its here, sometimes there!", "" , "&9+ No Enderpearl Damage"), Color.fromRGB(28, 25, 112)); + public static final ItemStack SLIME_HELMET = new CustomArmor(new CustomItem(Material.LEATHER_HELMET, "&a&lSlime Helmet", "", "&a&oBouncy Feeling"), Color.LIME); public static final ItemStack SLIME_CHESTPLATE = new CustomArmor(new CustomItem(Material.LEATHER_CHESTPLATE, "&a&lSlime Chestplate", "", "&a&oBouncy Feeling"), Color.LIME); public static final ItemStack SLIME_LEGGINGS = new CustomArmor(new CustomItem(Material.LEATHER_LEGGINGS, "&a&lSlime Leggings", "", "&a&oBouncy Feeling", "", "&9+ Speed"), Color.LIME); public static final ItemStack SLIME_BOOTS = new CustomArmor(new CustomItem(Material.LEATHER_BOOTS, "&a&lSlime Boots", "", "&a&oBouncy Feeling", "", "&9+ Jump Boost", "&9+ No Fall Damage"), Color.LIME); - public static final ItemStack CACTUS_HELMET = new CustomArmor(new CustomItem(Material.LEATHER_HELMET, "&2Cactus Helmet", 0, new String[0], new String[] {"THORNS-3", "DURABILITY-5"}), Color.GREEN); - public static final ItemStack CACTUS_CHESTPLATE = new CustomArmor(new CustomItem(Material.LEATHER_CHESTPLATE, "&2Cactus Chestplate", 0, new String[0], new String[] {"THORNS-3", "DURABILITY-5"}), Color.GREEN); - public static final ItemStack CACTUS_LEGGINGS = new CustomArmor(new CustomItem(Material.LEATHER_LEGGINGS, "&2Cactus Leggings", 0, new String[0], new String[] {"THORNS-3", "DURABILITY-5"}), Color.GREEN); - public static final ItemStack CACTUS_BOOTS = new CustomArmor(new CustomItem(Material.LEATHER_BOOTS, "&2Cactus Boots", 0, new String[0], new String[] {"THORNS-3", "DURABILITY-5"}), Color.GREEN); - public static final ItemStack DAMASCUS_STEEL_HELMET = new CustomItem(Material.IRON_HELMET, "&7Damascus Steel Helmet", new String[] {"DURABILITY-4", "PROTECTION_ENVIRONMENTAL-4"}, 0); - public static final ItemStack DAMASCUS_STEEL_CHESTPLATE = new CustomItem(Material.IRON_CHESTPLATE, "&7Damascus Steel Chestplate", new String[] {"DURABILITY-4", "PROTECTION_ENVIRONMENTAL-4"}, 0); - public static final ItemStack DAMASCUS_STEEL_LEGGINGS = new CustomItem(Material.IRON_LEGGINGS, "&7Damascus Steel Leggings", new String[] {"DURABILITY-4", "PROTECTION_ENVIRONMENTAL-4"}, 0); - public static final ItemStack DAMASCUS_STEEL_BOOTS = new CustomItem(Material.IRON_BOOTS, "&7Damascus Steel Boots", new String[] {"DURABILITY-4", "PROTECTION_ENVIRONMENTAL-4"}, 0); - public static final ItemStack REINFORCED_ALLOY_HELMET = new CustomItem(Material.IRON_HELMET, "&bReinforced Helmet", new String[] {"DURABILITY-9", "PROTECTION_ENVIRONMENTAL-9"}, 0); - public static final ItemStack REINFORCED_ALLOY_CHESTPLATE = new CustomItem(Material.IRON_CHESTPLATE, "&bReinforced Chestplate", new String[] {"DURABILITY-9", "PROTECTION_ENVIRONMENTAL-9"}, 0); - public static final ItemStack REINFORCED_ALLOY_LEGGINGS = new CustomItem(Material.IRON_LEGGINGS, "&bReinforced Leggings", new String[] {"DURABILITY-9", "PROTECTION_ENVIRONMENTAL-9"}, 0); - public static final ItemStack REINFORCED_ALLOY_BOOTS = new CustomItem(Material.IRON_BOOTS, "&bReinforced Boots", new String[] {"DURABILITY-9", "PROTECTION_ENVIRONMENTAL-9"}, 0); + + public static final ItemStack CACTUS_HELMET = new CustomArmor(new CustomItem(Material.LEATHER_HELMET, "&2Cactus Helmet"), Color.GREEN); + public static final ItemStack CACTUS_CHESTPLATE = new CustomArmor(new CustomItem(Material.LEATHER_CHESTPLATE, "&2Cactus Chestplate"), Color.GREEN); + public static final ItemStack CACTUS_LEGGINGS = new CustomArmor(new CustomItem(Material.LEATHER_LEGGINGS, "&2Cactus Leggings"), Color.GREEN); + public static final ItemStack CACTUS_BOOTS = new CustomArmor(new CustomItem(Material.LEATHER_BOOTS, "&2Cactus Boots"), Color.GREEN); + + public static final ItemStack DAMASCUS_STEEL_HELMET = new CustomItem(Material.IRON_HELMET, "&7Damascus Steel Helmet"); + public static final ItemStack DAMASCUS_STEEL_CHESTPLATE = new CustomItem(Material.IRON_CHESTPLATE, "&7Damascus Steel Chestplate"); + public static final ItemStack DAMASCUS_STEEL_LEGGINGS = new CustomItem(Material.IRON_LEGGINGS, "&7Damascus Steel Leggings"); + public static final ItemStack DAMASCUS_STEEL_BOOTS = new CustomItem(Material.IRON_BOOTS, "&7Damascus Steel Boots"); + + public static final ItemStack REINFORCED_ALLOY_HELMET = new CustomItem(Material.IRON_HELMET, "&bReinforced Helmet"); + public static final ItemStack REINFORCED_ALLOY_CHESTPLATE = new CustomItem(Material.IRON_CHESTPLATE, "&bReinforced Chestplate"); + public static final ItemStack REINFORCED_ALLOY_LEGGINGS = new CustomItem(Material.IRON_LEGGINGS, "&bReinforced Leggings"); + public static final ItemStack REINFORCED_ALLOY_BOOTS = new CustomItem(Material.IRON_BOOTS, "&bReinforced Boots"); + public static final ItemStack SCUBA_HELMET = new CustomArmor(new CustomItem(Material.LEATHER_HELMET, "&cScuba Helmet", "", "&bAllows you to breathe Underwater", "&4&oPart of Hazmat Suit"), Color.ORANGE); public static final ItemStack HAZMATSUIT_CHESTPLATE = new CustomArmor(new CustomItem(Material.LEATHER_CHESTPLATE, "&cHazmat Suit", "", "&bAllows you to walk through Fire", "&4&oPart of Hazmat Suit"), Color.ORANGE); public static final ItemStack HAZMATSUIT_LEGGINGS = new CustomArmor(new CustomItem(Material.LEATHER_LEGGINGS, "&cHazmat Suit Leggings", "", "&4&oPart of Hazmat Suit"), Color.ORANGE); public static final ItemStack RUBBER_BOOTS = new CustomArmor(new CustomItem(Material.LEATHER_BOOTS, "&cRubber Boots", "", "&4&oPart of Hazmat Suit"), Color.BLACK); - public static final ItemStack GILDED_IRON_HELMET = new CustomItem(Material.GOLDEN_HELMET, "&6Gilded Iron Helmet", new String[] {"DURABILITY-6", "PROTECTION_ENVIRONMENTAL-8"}, 0); - public static final ItemStack GILDED_IRON_CHESTPLATE = new CustomItem(Material.GOLDEN_CHESTPLATE, "&6Gilded Iron Chestplate", new String[] {"DURABILITY-6", "PROTECTION_ENVIRONMENTAL-8"}, 0); - public static final ItemStack GILDED_IRON_LEGGINGS = new CustomItem(Material.GOLDEN_LEGGINGS, "&6Gilded Iron Leggings", new String[] {"DURABILITY-6", "PROTECTION_ENVIRONMENTAL-8"}, 0); - public static final ItemStack GILDED_IRON_BOOTS = new CustomItem(Material.GOLDEN_BOOTS, "&6Gilded Iron Boots", new String[] {"DURABILITY-6", "PROTECTION_ENVIRONMENTAL-8"}, 0); - public static final ItemStack GOLD_HELMET = new CustomItem(Material.GOLDEN_HELMET, "&6Gold Helmet", 0, new String[] {"&912-Carat"}, new String[] {"DURABILITY-10"}); - public static final ItemStack GOLD_CHESTPLATE = new CustomItem(Material.GOLDEN_CHESTPLATE, "&6Gold Chestplate", 0, new String[] {"&912-Carat"}, new String[] {"DURABILITY-10"}); - public static final ItemStack GOLD_LEGGINGS = new CustomItem(Material.GOLDEN_LEGGINGS, "&6Gold Leggings", 0, new String[] {"&912-Carat"}, new String[] {"DURABILITY-10"}); - public static final ItemStack GOLD_BOOTS = new CustomItem(Material.GOLDEN_BOOTS, "&6Gold Boots", 0, new String[] {"&912-Carat"}, new String[] {"DURABILITY-10"}); - public static final ItemStack SLIME_HELMET_STEEL = new CustomItem(Material.IRON_HELMET, "&a&lSlime Helmet", 0, new String[] {"&7&oReinforced", "", "&a&oBouncy Feeling"}, new String[] {"DURABILITY-4", "PROTECTION_ENVIRONMENTAL-2"}); - public static final ItemStack SLIME_CHESTPLATE_STEEL = new CustomItem(Material.IRON_CHESTPLATE, "&a&lSlime Chestplate", 0, new String[] {"&7&oReinforced", "", "&a&oBouncy Feeling"}, new String[] {"DURABILITY-4", "PROTECTION_ENVIRONMENTAL-2"}); - public static final ItemStack SLIME_LEGGINGS_STEEL = new CustomItem(Material.IRON_LEGGINGS, "&a&lSlime Leggings", 0, new String[] {"&7&oReinforced", "", "&a&oBouncy Feeling", "", "&9+ Speed"}, new String[] {"DURABILITY-4", "PROTECTION_ENVIRONMENTAL-2"}); - public static final ItemStack SLIME_BOOTS_STEEL = new CustomItem(Material.IRON_BOOTS, "&a&lSlime Boots", 0, new String[] {"&7&oReinforced", "", "&a&oBouncy Feeling", "", "&9+ Jump Boost", "&9+ No Fall Damage"}, new String[] {"DURABILITY-4", "PROTECTION_ENVIRONMENTAL-2"}); + + public static final ItemStack GILDED_IRON_HELMET = new CustomItem(Material.GOLDEN_HELMET, "&6Gilded Iron Helmet"); + public static final ItemStack GILDED_IRON_CHESTPLATE = new CustomItem(Material.GOLDEN_CHESTPLATE, "&6Gilded Iron Chestplate"); + public static final ItemStack GILDED_IRON_LEGGINGS = new CustomItem(Material.GOLDEN_LEGGINGS, "&6Gilded Iron Leggings"); + public static final ItemStack GILDED_IRON_BOOTS = new CustomItem(Material.GOLDEN_BOOTS, "&6Gilded Iron Boots"); + + public static final ItemStack GOLD_HELMET = new CustomItem(Material.GOLDEN_HELMET, "&6Gold Helmet", "&912-Carat"); + public static final ItemStack GOLD_CHESTPLATE = new CustomItem(Material.GOLDEN_CHESTPLATE, "&6Gold Chestplate", "&912-Carat"); + public static final ItemStack GOLD_LEGGINGS = new CustomItem(Material.GOLDEN_LEGGINGS, "&6Gold Leggings", "&912-Carat"); + public static final ItemStack GOLD_BOOTS = new CustomItem(Material.GOLDEN_BOOTS, "&6Gold Boots", "&912-Carat"); + + public static final ItemStack SLIME_HELMET_STEEL = new CustomItem(Material.IRON_HELMET, "&a&lSlime Helmet", "&7&oReinforced", "", "&a&oBouncy Feeling"); + public static final ItemStack SLIME_CHESTPLATE_STEEL = new CustomItem(Material.IRON_CHESTPLATE, "&a&lSlime Chestplate", "&7&oReinforced", "", "&a&oBouncy Feeling"); + public static final ItemStack SLIME_LEGGINGS_STEEL = new CustomItem(Material.IRON_LEGGINGS, "&a&lSlime Leggings", "&7&oReinforced", "", "&a&oBouncy Feeling", "", "&9+ Speed"); + public static final ItemStack SLIME_BOOTS_STEEL = new CustomItem(Material.IRON_BOOTS, "&a&lSlime Boots", "&7&oReinforced", "", "&a&oBouncy Feeling", "", "&9+ Jump Boost", "&9+ No Fall Damage"); + + public static final ItemStack HEAVY_METAL_HELMET = new CustomItem(Material.IRON_HELMET, "&cHeavy Helmet", "", "&9+ Strength", "&9+ Slowness"); + public static final ItemStack HEAVY_METAL_CHESTPLATE = new CustomItem(Material.IRON_CHESTPLATE, "&cHeavy Chestplate", "", "&9+ Strength", "&9+ Slowness"); + public static final ItemStack HEAVY_METAL_LEGGINGS = new CustomItem(Material.IRON_LEGGINGS, "&cHeavy Leggings", "", "&9+ Strength", "&9+ Slowness"); + public static final ItemStack HEAVY_METAL_BOOTS = new CustomItem(Material.IRON_BOOTS, "&cHeavy Boots", "", "&9+ Strength", "&9+ Slowness"); + public static final ItemStack BOOTS_OF_THE_STOMPER = new CustomArmor(new CustomItem(Material.LEATHER_BOOTS, "&bBoots of the Stomper", "", "&9All Fall Damage you receive", "&9will be applied to nearby Mobs/Players", "", "&9+ No Fall Damage"), Color.AQUA); - public static final ItemStack HEAVY_METAL_HELMET = new CustomItem(Material.IRON_HELMET, "&cHeavy Helmet", 0, new String[] {"", "&9+ Strength", "&9+ Slowness"}, new String[] {"DURABILITY-10", "PROTECTION_ENVIRONMENTAL-10"}); - public static final ItemStack HEAVY_METAL_CHESTPLATE = new CustomItem(Material.IRON_CHESTPLATE, "&cHeavy Chestplate", 0, new String[] {"", "&9+ Strength", "&9+ Slowness"}, new String[] {"DURABILITY-10", "PROTECTION_ENVIRONMENTAL-10"}); - public static final ItemStack HEAVY_METAL_LEGGINGS = new CustomItem(Material.IRON_LEGGINGS, "&cHeavy Leggings", 0, new String[] {"", "&9+ Strength", "&9+ Slowness"}, new String[] {"DURABILITY-10", "PROTECTION_ENVIRONMENTAL-10"}); - public static final ItemStack HEAVY_METAL_BOOTS = new CustomItem(Material.IRON_BOOTS, "&cHeavy Boots", 0, new String[] {"", "&9+ Strength", "&9+ Slowness"}, new String[] {"DURABILITY-10", "PROTECTION_ENVIRONMENTAL-10"}); + + static { + Map cactus = new HashMap<>(); + cactus.put(Enchantment.THORNS, 3); + cactus.put(Enchantment.DURABILITY, 6); + + CACTUS_HELMET.addUnsafeEnchantments(cactus); + CACTUS_CHESTPLATE.addUnsafeEnchantments(cactus); + CACTUS_LEGGINGS.addUnsafeEnchantments(cactus); + CACTUS_BOOTS.addUnsafeEnchantments(cactus); + + Map damascus = new HashMap<>(); + damascus.put(Enchantment.DURABILITY, 5); + damascus.put(Enchantment.PROTECTION_ENVIRONMENTAL, 5); + + DAMASCUS_STEEL_HELMET.addUnsafeEnchantments(damascus); + DAMASCUS_STEEL_CHESTPLATE.addUnsafeEnchantments(damascus); + DAMASCUS_STEEL_LEGGINGS.addUnsafeEnchantments(damascus); + DAMASCUS_STEEL_BOOTS.addUnsafeEnchantments(damascus); + + Map reinforced = new HashMap<>(); + reinforced.put(Enchantment.DURABILITY, 9); + reinforced.put(Enchantment.PROTECTION_ENVIRONMENTAL, 9); + + REINFORCED_ALLOY_HELMET.addUnsafeEnchantments(reinforced); + REINFORCED_ALLOY_CHESTPLATE.addUnsafeEnchantments(reinforced); + REINFORCED_ALLOY_LEGGINGS.addUnsafeEnchantments(reinforced); + REINFORCED_ALLOY_BOOTS.addUnsafeEnchantments(reinforced); + + Map gilded = new HashMap<>(); + gilded.put(Enchantment.DURABILITY, 6); + gilded.put(Enchantment.PROTECTION_ENVIRONMENTAL, 8); + + GILDED_IRON_HELMET.addUnsafeEnchantments(gilded); + GILDED_IRON_CHESTPLATE.addUnsafeEnchantments(gilded); + GILDED_IRON_LEGGINGS.addUnsafeEnchantments(gilded); + GILDED_IRON_BOOTS.addUnsafeEnchantments(gilded); + + GOLD_HELMET.addUnsafeEnchantment(Enchantment.DURABILITY, 10); + GOLD_CHESTPLATE.addUnsafeEnchantment(Enchantment.DURABILITY, 10); + GOLD_LEGGINGS.addUnsafeEnchantment(Enchantment.DURABILITY, 10); + GOLD_BOOTS.addUnsafeEnchantment(Enchantment.DURABILITY, 10); + + Map slime = new HashMap<>(); + slime.put(Enchantment.DURABILITY, 4); + slime.put(Enchantment.PROTECTION_ENVIRONMENTAL, 2); + + SLIME_HELMET_STEEL.addUnsafeEnchantments(slime); + SLIME_CHESTPLATE_STEEL.addUnsafeEnchantments(slime); + SLIME_LEGGINGS_STEEL.addUnsafeEnchantments(slime); + SLIME_BOOTS_STEEL.addUnsafeEnchantments(slime); + + Map heavy = new HashMap<>(); + heavy.put(Enchantment.DURABILITY, 10); + heavy.put(Enchantment.PROTECTION_ENVIRONMENTAL, 10); + + HEAVY_METAL_HELMET.addUnsafeEnchantments(heavy); + HEAVY_METAL_CHESTPLATE.addUnsafeEnchantments(heavy); + HEAVY_METAL_LEGGINGS.addUnsafeEnchantments(heavy); + HEAVY_METAL_BOOTS.addUnsafeEnchantments(heavy); + } /* Misc */ public static final ItemStack MAGIC_LUMP_1 = new CustomItem(Material.GOLD_NUGGET, "&6Magical Lump &7- &eI", "", "&c&oTier: I"); @@ -359,9 +452,15 @@ public final class SlimefunItems { /* Staves */ public static final ItemStack STAFF_ELEMENTAL = new CustomItem(Material.STICK, "&6Elemental Staff"); - public static final ItemStack STAFF_WIND = new CustomItem(Material.STICK, "&6Elemental Staff &7- &b&oWind", 0, new String[] {"", "&7Element: &b&oWind", "", "&7&eRight Click&7 to launch yourself forward"}, new String[] {"LUCK-1"}); - public static final ItemStack STAFF_FIRE = new CustomItem(Material.STICK, "&6Elemental Staff &7- &c&oFire", 0, new String[] {"", "&7Element: &c&oFire"}, new String[] {"FIRE_ASPECT-5"}); - public static final ItemStack STAFF_WATER = new CustomItem(Material.STICK, "&6Elemental Staff &7- &1&oWater", 0, new String[] {"", "&7Element: &1&oWater", "", "&7&eRight Click&7 to extinguish yourself"}, new String[] {"WATER_WORKER-1"}); + public static final ItemStack STAFF_WIND = new CustomItem(Material.STICK, "&6Elemental Staff &7- &b&oWind", "", "&7Element: &b&oWind", "", "&7&eRight Click&7 to launch yourself forward"); + public static final ItemStack STAFF_FIRE = new CustomItem(Material.STICK, "&6Elemental Staff &7- &c&oFire", "", "&7Element: &c&oFire"); + public static final ItemStack STAFF_WATER = new CustomItem(Material.STICK, "&6Elemental Staff &7- &1&oWater", "", "&7Element: &1&oWater", "", "&7&eRight Click&7 to extinguish yourself"); + + static { + STAFF_WIND.addUnsafeEnchantment(Enchantment.LUCK, 1); + STAFF_FIRE.addUnsafeEnchantment(Enchantment.FIRE_ASPECT, 5); + STAFF_WATER.addUnsafeEnchantment(Enchantment.WATER_WORKER, 1); + } /* Machines */ public static final ItemStack GRIND_STONE = new CustomItem(Material.DISPENSER, "&bGrind Stone", "", "&a&oGrinds Items for more Efficiency"); @@ -657,7 +756,7 @@ public final class SlimefunItems { public static final ItemStack SOULBOUND_ELYTRA = new CustomItem(ELYTRA, "&cSoulbound Elytra"); static { - INFUSED_ELYTRA.addEnchantment(Enchantment.MENDING, 1); + INFUSED_ELYTRA.addUnsafeEnchantment(Enchantment.MENDING, 1); } // ChestTerminal Addon diff --git a/src/me/mrCookieSlime/Slimefun/listeners/TalismanListener.java b/src/me/mrCookieSlime/Slimefun/listeners/TalismanListener.java index 6beb60e9c..dcd7f3186 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/TalismanListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/TalismanListener.java @@ -39,7 +39,7 @@ import me.mrCookieSlime.Slimefun.api.Slimefun; public class TalismanListener implements Listener { - private Random random; + private Random random = new Random(); public TalismanListener(SlimefunStartup plugin) { plugin.getServer().getPluginManager().registerEvents(this, plugin); From 85ee828abfd06184a6dc1e8ecf40382198ac8510 Mon Sep 17 00:00:00 2001 From: Sfiguz7 Date: Thu, 29 Aug 2019 22:46:03 +0200 Subject: [PATCH 045/169] Separated variable declaration --- .../Slimefun/Objects/SlimefunItem/SlimefunItem.java | 3 ++- src/me/mrCookieSlime/Slimefun/Setup/SlimefunManager.java | 3 ++- src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java | 3 ++- src/me/mrCookieSlime/Slimefun/SlimefunGuide.java | 3 ++- src/me/mrCookieSlime/Slimefun/api/BlockStorage.java | 4 +++- src/me/mrCookieSlime/Slimefun/api/TickerTask.java | 4 +++- src/me/mrCookieSlime/Slimefun/api/energy/ChargableBlock.java | 3 ++- src/me/mrCookieSlime/Slimefun/hooks/github/GitHubSetup.java | 3 ++- 8 files changed, 18 insertions(+), 8 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java index 83caf7bae..b5e92162d 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java @@ -56,7 +56,8 @@ public class SlimefunItem { protected ItemStack recipeOutput = null; private Research research; private int month = -1; - private boolean enchantable = true, disenchantable = true; + private boolean enchantable = true; + private boolean disenchantable = true; private boolean hidden = false; private boolean replacing = false; private boolean addon = false; diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunManager.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunManager.java index 4bce0e3b9..2028aaedb 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunManager.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunManager.java @@ -117,7 +117,8 @@ public final class SlimefunManager { } private static boolean equalsLore(List lore, List lore2) { - String string1 = "", string2 = ""; + String string1 = ""; + String string2 = ""; for (String string: lore) { if (!string.startsWith("&e&e&7")) string1 = string1 + "-NEW LINE-" + string; } diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java index 2248b5d95..0d39dd0f6 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java @@ -1797,7 +1797,8 @@ public final class SlimefunSetup { else { double l = closest.getX() + 0.5 - p.getLocation().getX(); double w = closest.getZ() + 0.5 - p.getLocation().getZ(); - float yaw, pitch; + float yaw; + float pitch; double c = Math.sqrt(l * l + w * w); double alpha1 = -Math.asin(l / c) / Math.PI * 180; double alpha2 = Math.acos(w / c) / Math.PI * 180; diff --git a/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java b/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java index 7b2692428..5dd135dc6 100644 --- a/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java +++ b/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java @@ -989,7 +989,8 @@ public final class SlimefunGuide { List recipes = SlimefunItem.getByItem(item) instanceof SlimefunMachine ? ((SlimefunMachine) SlimefunItem.getByItem(item)).getDisplayRecipes() : ((SlimefunGadget) SlimefunItem.getByItem(item)).getDisplayRecipes(); int recipe_size = recipes.size(); if (recipe_size > 18) recipe_size = 18; - int inputs = -1, outputs = -1; + int inputs = -1; + int outputs = -1; for (int i = 0; i < recipe_size; i++) { int slot = 36; diff --git a/src/me/mrCookieSlime/Slimefun/api/BlockStorage.java b/src/me/mrCookieSlime/Slimefun/api/BlockStorage.java index 29f1286e5..534a952a4 100644 --- a/src/me/mrCookieSlime/Slimefun/api/BlockStorage.java +++ b/src/me/mrCookieSlime/Slimefun/api/BlockStorage.java @@ -90,7 +90,9 @@ public class BlockStorage { File f = new File(path_blocks + w.getName()); if (f.exists()) { long total = f.listFiles().length, start = System.currentTimeMillis(); - long done = 0, timestamp = System.currentTimeMillis(), totalBlocks = 0; + long done = 0; + long timestamp = System.currentTimeMillis(); + long totalBlocks = 0; try { for (File file: f.listFiles()) { diff --git a/src/me/mrCookieSlime/Slimefun/api/TickerTask.java b/src/me/mrCookieSlime/Slimefun/api/TickerTask.java index 4feaeac66..dddc8159f 100644 --- a/src/me/mrCookieSlime/Slimefun/api/TickerTask.java +++ b/src/me/mrCookieSlime/Slimefun/api/TickerTask.java @@ -30,7 +30,9 @@ public class TickerTask implements Runnable { private Set tickers = new HashSet<>(); - private int skipped = 0, chunks = 0, machines = 0; + private int skipped = 0; + private int chunks = 0; + private int machines = 0; private long time = 0; private Map map_chunk = new HashMap<>(); private Map map_machine = new HashMap<>(); diff --git a/src/me/mrCookieSlime/Slimefun/api/energy/ChargableBlock.java b/src/me/mrCookieSlime/Slimefun/api/energy/ChargableBlock.java index 7707c9cdc..6bff96a18 100644 --- a/src/me/mrCookieSlime/Slimefun/api/energy/ChargableBlock.java +++ b/src/me/mrCookieSlime/Slimefun/api/energy/ChargableBlock.java @@ -109,7 +109,8 @@ public class ChargableBlock { Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> { try { Block b = l.getBlock(); - int charge = getCharge(b), capacity = getMaxCharge(b); + int charge = getCharge(b); + int capacity = getMaxCharge(b); if (b.getState() instanceof Skull) { if (charge < (int) (capacity * 0.25D)) CustomSkull.setSkull(b, "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTEzNjFlNTc2YjQ5M2NiZmRmYWUzMjg2NjFjZWRkMWFkZDU1ZmFiNGU1ZWI0MThiOTJjZWJmNjI3NWY4YmI0In19fQ=="); else if (charge < (int) (capacity * 0.5D)) CustomSkull.setSkull(b, "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMzA1MzIzMzk0YTdkOTFiZmIzM2RmMDZkOTJiNjNjYjQxNGVmODBmMDU0ZDA0NzM0ZWEwMTVhMjNjNTM5In19fQ=="); diff --git a/src/me/mrCookieSlime/Slimefun/hooks/github/GitHubSetup.java b/src/me/mrCookieSlime/Slimefun/hooks/github/GitHubSetup.java index acbcf5a6e..e31557de3 100644 --- a/src/me/mrCookieSlime/Slimefun/hooks/github/GitHubSetup.java +++ b/src/me/mrCookieSlime/Slimefun/hooks/github/GitHubSetup.java @@ -48,7 +48,8 @@ public final class GitHubSetup { continue; } - InputStreamReader profile_reader = null, session_reader = null; + InputStreamReader profile_reader = null; + InputStreamReader session_reader = null; try { URL profile = new URL("https://api.mojang.com/users/profiles/minecraft/" + name); From 7c6d722283499f1d80c749d28d150adcaf6adbac Mon Sep 17 00:00:00 2001 From: Sfiguz7 Date: Thu, 29 Aug 2019 22:52:46 +0200 Subject: [PATCH 046/169] Cleaned constructors' diamond operators --- .../mrCookieSlime/Slimefun/api/BlockStorage.java | 4 ++-- .../Slimefun/api/item_transport/CargoNet.java | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/api/BlockStorage.java b/src/me/mrCookieSlime/Slimefun/api/BlockStorage.java index 534a952a4..e20e3b891 100644 --- a/src/me/mrCookieSlime/Slimefun/api/BlockStorage.java +++ b/src/me/mrCookieSlime/Slimefun/api/BlockStorage.java @@ -128,7 +128,7 @@ public class BlockStorage { storage.put(l, blockInfo); if (SlimefunItem.isTicking(file.getName().replace(".sfb", ""))) { - Set locations = ticking_chunks.containsKey(chunk_string) ? ticking_chunks.get(chunk_string): new HashSet(); + Set locations = ticking_chunks.containsKey(chunk_string) ? ticking_chunks.get(chunk_string): new HashSet<>(); locations.add(l); ticking_chunks.put(chunk_string, locations); if (!loaded_tickers.contains(chunk_string)) loaded_tickers.add(chunk_string); @@ -525,7 +525,7 @@ public class BlockStorage { if (item != null && item.isTicking()) { String chunk_string = locationToChunkString(l); if (value != null) { - Set locations = ticking_chunks.containsKey(chunk_string) ? ticking_chunks.get(chunk_string): new HashSet(); + Set locations = ticking_chunks.containsKey(chunk_string) ? ticking_chunks.get(chunk_string): new HashSet<>(); locations.add(l); ticking_chunks.put(chunk_string, locations); if (!loaded_tickers.contains(chunk_string)) loaded_tickers.add(chunk_string); diff --git a/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoNet.java b/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoNet.java index 90d5f172c..a073854cc 100644 --- a/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoNet.java +++ b/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoNet.java @@ -153,7 +153,7 @@ public class CargoNet extends Network { CargoHologram.update(b, "&7Status: &a&lONLINE"); - final Map> output = new HashMap>(); + final Map> output = new HashMap<>(); for (Location outputNode: outputNodes) { @@ -172,12 +172,12 @@ public class CargoNet extends Network { } //Chest Terminal Stuff - final Set providers = new HashSet(); + final Set providers = new HashSet<>(); final Set destinations; if (output.containsKey(16)) { - destinations = new HashSet(output.get(16)); + destinations = new HashSet<>(output.get(16)); } else { - destinations = new HashSet(); + destinations = new HashSet<>(); } for (Location inputNode: inputNodes) { int frequency = getFrequency(inputNode); @@ -221,7 +221,7 @@ public class CargoNet extends Network { } if (menu.getItemInSlot(17) == null) { - List items = new ArrayList(); + List items = new ArrayList<>(); for (int slot: slots) { ItemStack template = menu.getItemInSlot(slot); if (template != null) items.add(new CustomItem(template, 1)); @@ -344,7 +344,7 @@ public class CargoNet extends Network { } if (stack != null && output.containsKey(frequency)) { - List outputlist = new ArrayList(output.get(frequency)); + List outputlist = new ArrayList<>(output.get(frequency)); if (roundrobin) { if (!round_robin.containsKey(input)) { @@ -393,7 +393,7 @@ public class CargoNet extends Network { } //Chest Terminal Code if (EXTRA_CHANNELS) { - List items = new ArrayList(); + List items = new ArrayList<>(); for (Location l: providers) { Block target = getAttachedBlock(l.getBlock()); if (storage.hasUniversalInventory(target)) { @@ -492,7 +492,7 @@ public class CargoNet extends Network { ItemStack stack = item.getItem().clone(); ItemMeta im = stack.getItemMeta(); - List lore = new ArrayList(); + List lore = new ArrayList<>(); lore.add(""); lore.add(ChatColor.translateAlternateColorCodes('&', "&7Stored Items: &r" + DoubleHandler.getFancyDouble(item.getAmount()))); if (stack.getMaxStackSize() > 1) lore.add(ChatColor.translateAlternateColorCodes('&', "&7 stack.getMaxStackSize() ? stack.getMaxStackSize(): item.getAmount()) + ">")); From c11eb5403757e1f95909d58813ce6575f6de8696 Mon Sep 17 00:00:00 2001 From: Sfiguz7 Date: Thu, 29 Aug 2019 23:18:04 +0200 Subject: [PATCH 047/169] Cleaning --- .../Objects/SlimefunItem/machines/WitherAssembler.java | 2 -- .../mrCookieSlime/Slimefun/Objects/tasks/JetBootsTask.java | 2 +- src/me/mrCookieSlime/Slimefun/Setup/SlimefunManager.java | 7 +++++-- src/me/mrCookieSlime/Slimefun/SlimefunGuide.java | 4 ++-- .../Slimefun/api/item_transport/CargoNet.java | 3 +-- src/me/mrCookieSlime/Slimefun/holograms/Projector.java | 2 +- .../mrCookieSlime/Slimefun/listeners/BackpackListener.java | 2 +- 7 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/WitherAssembler.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/WitherAssembler.java index 0b284a7a3..bce6377c7 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/WitherAssembler.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/WitherAssembler.java @@ -246,8 +246,6 @@ public class WitherAssembler extends SlimefunItem { final double offset = Double.parseDouble(BlockStorage.getLocationInfo(b.getLocation(), "offset")); Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> b.getWorld().spawnEntity(new Location(b.getWorld(), b.getX() + 0.5D, b.getY() + offset, b.getZ() + 0.5D), EntityType.WITHER)); - - return; } } } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/tasks/JetBootsTask.java b/src/me/mrCookieSlime/Slimefun/Objects/tasks/JetBootsTask.java index 58e78c52f..1f18d7fb8 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/tasks/JetBootsTask.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/tasks/JetBootsTask.java @@ -25,7 +25,7 @@ public class JetBootsTask extends SlimefunTask { Player p = Bukkit.getPlayer(uuid); float cost = 0.075F; float charge = ItemEnergy.getStoredEnergy(p.getInventory().getBoots()); - double accuracy = Double.valueOf(new DecimalFormat("##.##").format(speed - 0.7).replace(",", ".")); + double accuracy = Double.parseDouble(new DecimalFormat("##.##").format(speed - 0.7).replace(",", ".")); if (charge >= cost) { p.getInventory().setBoots(ItemEnergy.chargeItem(p.getInventory().getBoots(), -cost)); PlayerInventory.update(p); diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunManager.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunManager.java index 2028aaedb..f96bc6a72 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunManager.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunManager.java @@ -34,8 +34,11 @@ public final class SlimefunManager { recipes.add(new ItemStack[] {baseComponent, baseComponent, baseComponent, baseComponent, null, baseComponent, baseComponent, null, baseComponent}); recipes.add(new ItemStack[] {null, null, null, baseComponent, null, baseComponent, baseComponent, null, baseComponent}); for (int i = 0; i < 4; i++) { - if ((effects.length - 1) >= i) if (effects[i].length > 0) new SlimefunArmorPiece(cat, items[i], idSyntax + components[i], RecipeType.ARMOR_FORGE, recipes.get(i), effects[i]).register(slimefun); - else new SlimefunItem(cat, items[i], idSyntax + components[i], RecipeType.ARMOR_FORGE, recipes.get(i)).register(slimefun); + if ((effects.length - 1) >= i) if (effects[i].length > 0) { + new SlimefunArmorPiece(cat, items[i], idSyntax + components[i], RecipeType.ARMOR_FORGE, recipes.get(i), effects[i]).register(slimefun); + } else { + new SlimefunItem(cat, items[i], idSyntax + components[i], RecipeType.ARMOR_FORGE, recipes.get(i)).register(slimefun); + } } } diff --git a/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java b/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java index 5dd135dc6..770b58408 100644 --- a/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java +++ b/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java @@ -784,7 +784,7 @@ public final class SlimefunGuide { List list = new ArrayList<>(); if (history.containsKey(p.getUniqueId())) list = history.get(p.getUniqueId()); - if (remove && list.size() >= 1) { + if (remove && !list.isEmpty()) { Object obj = list.get(list.size() - 1); list.remove(obj); } @@ -978,7 +978,7 @@ public final class SlimefunGuide { }); if (sfItem != null) { - if ((sfItem instanceof SlimefunMachine && ((SlimefunMachine) sfItem).getDisplayRecipes().size() > 0) || (sfItem instanceof SlimefunGadget && ((SlimefunGadget) sfItem).getRecipes().size() > 0)) { + if ((sfItem instanceof SlimefunMachine && !((SlimefunMachine) sfItem).getDisplayRecipes().isEmpty()) || (sfItem instanceof SlimefunGadget && !((SlimefunGadget) sfItem).getRecipes().isEmpty())) { for (int i = 27; i < 36; i++) { menu.addItem(i, new CustomItem(Material.LIME_STAINED_GLASS_PANE, SlimefunItem.getByItem(item) instanceof SlimefunMachine ? "&7\u21E9 Recipes made in this Machine \u21E9": " ")); menu.addMenuClickHandler(i, diff --git a/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoNet.java b/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoNet.java index a073854cc..6e8b9fc3f 100644 --- a/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoNet.java +++ b/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoNet.java @@ -147,7 +147,6 @@ public class CargoNet extends Network { super.tick(); if (connectorNodes.isEmpty() && terminusNodes.isEmpty()) { CargoHologram.update(b, "&7Status: &4&lOFFLINE"); - return; } else { CargoHologram.update(b, "&7Status: &a&lONLINE"); @@ -418,7 +417,7 @@ public class CargoNet extends Network { else if (storage.hasInventory(target.getLocation())) { BlockMenu menu = BlockStorage.getInventory(target.getLocation()); if (BlockStorage.checkID(target.getLocation()).startsWith("BARREL_") && BlockStorage.getLocationInfo(target.getLocation(), "storedItems") != null) { - int stored = Integer.valueOf(BlockStorage.getLocationInfo(target.getLocation(), "storedItems")); + int stored = Integer.parseInt(BlockStorage.getLocationInfo(target.getLocation(), "storedItems")); for (int slot: menu.getPreset().getSlotsAccessedByItemTransport(menu, ItemTransportFlow.WITHDRAW, null)) { ItemStack is = menu.getItemInSlot(slot); if (is != null && CargoManager.matchesFilter(l.getBlock(), is, -1)) { diff --git a/src/me/mrCookieSlime/Slimefun/holograms/Projector.java b/src/me/mrCookieSlime/Slimefun/holograms/Projector.java index 954375d6a..1edaf849b 100644 --- a/src/me/mrCookieSlime/Slimefun/holograms/Projector.java +++ b/src/me/mrCookieSlime/Slimefun/holograms/Projector.java @@ -21,7 +21,7 @@ public class Projector { public static ArmorStand getArmorStand(Block projector) { String nametag = BlockStorage.getLocationInfo(projector.getLocation(), "text"); - double offset = Double.valueOf(BlockStorage.getLocationInfo(projector.getLocation(), "offset")); + double offset = Double.parseDouble(BlockStorage.getLocationInfo(projector.getLocation(), "offset")); Location l = new Location(projector.getWorld(), projector.getX() + 0.5, projector.getY() + offset, projector.getZ() + 0.5); for (Entity n : l.getChunk().getEntities()) { diff --git a/src/me/mrCookieSlime/Slimefun/listeners/BackpackListener.java b/src/me/mrCookieSlime/Slimefun/listeners/BackpackListener.java index cbeacd7af..09651fed3 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/BackpackListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/BackpackListener.java @@ -71,7 +71,7 @@ public class BackpackListener implements Listener { else { SlimefunItem sfItem = SlimefunItem.getByItem(e.getCurrentItem()); if (SlimefunManager.isItemSimiliar(item, SlimefunItem.getItem("COOLER"), false)) { - if (e.getCurrentItem() == null || e.getCurrentItem().getType().equals(Material.AIR)); + if (e.getCurrentItem() == null || e.getCurrentItem().getType() == Material.AIR); else if (!(sfItem instanceof Juice)) e.setCancelled(true); } else if (e.getCurrentItem() != null && e.getCurrentItem().getType().toString().contains("SHULKER_BOX")) e.setCancelled(true); From 30d3dfe038808dbd1e0a3f8c2a951b7990c15a52 Mon Sep 17 00:00:00 2001 From: ajan-12 <36973731+ajan-12@users.noreply.github.com> Date: Fri, 30 Aug 2019 01:12:02 +0300 Subject: [PATCH 048/169] Adding Diet Cookie. - A Cookie made by an elytra scale and a cookie! - Levitates the player for 3 seconds. --- .../Slimefun/Lists/SlimefunItems.java | 1 + .../Slimefun/Setup/ResearchSetup.java | 1 + .../Slimefun/Setup/SlimefunSetup.java | 17 +++++++++++++++++ 3 files changed, 19 insertions(+) diff --git a/src/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java b/src/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java index daa015e5b..6f0176a1e 100644 --- a/src/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java +++ b/src/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java @@ -98,6 +98,7 @@ public final class SlimefunItems { /* Food */ public static final ItemStack FORTUNE_COOKIE = new CustomItem(Material.COOKIE, "&6Fortune Cookie", "", "&a&oTells you stuff about your Future :o"); + public static final ItemStack DIET_COOKIE = new CustomItem(Material.COOKIE, "&6Flying Cookie", "", "&a&oA boring diet cookie."); public static final ItemStack BEEF_JERKY = new CustomItem(Material.COOKED_BEEF, "&6Beef Jerky", "", "&a&oSaturating"); public static final ItemStack MAGIC_SUGAR = new CustomItem(Material.SUGAR, "&6Magic Sugar", "", "&a&oFeel the Power of Hermes!"); public static final ItemStack MONSTER_JERKY = new CustomItem(Material.ROTTEN_FLESH, "&6Monster Jerky", "", "&a&oNo longer hungry"); diff --git a/src/me/mrCookieSlime/Slimefun/Setup/ResearchSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/ResearchSetup.java index d792c1377..5416778e5 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/ResearchSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/ResearchSetup.java @@ -241,5 +241,6 @@ public final class ResearchSetup { Slimefun.registerResearch(new Research(241, "Thinned-down Conductivity", 15), SlimefunItems.COPPER_WIRE); Slimefun.registerResearch(new Research(242, "Radiant Backpack", 25), SlimefunItems.RADIANT_BACKPACK); Slimefun.registerResearch(new Research(243, "A Dry Day", 15), SlimefunItems.AUTO_DRIER); + Slimefun.registerResearch(new Research(244, "Diet Cookie", 3), SlimefunItems.DIET_COOKIE); } } diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java index 2deacc107..5c8cba95b 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java @@ -163,6 +163,23 @@ public final class SlimefunSetup { new ItemStack[] {new ItemStack(Material.COOKIE), new ItemStack(Material.PAPER), null, null, null, null, null, null, null}) .register(true); + new SlimefunItem(Categories.FOOD, SlimefunItems.DIET_COOKIE, "DIET_COOKIE", RecipeType.MAGIC_WORKBENCH, + new ItemStack[] {new ItemStack(Material.COOKIE), SlimefunItems.ELYTRA_SCALE, null, null, null, null, null, null, null}) + .register(true, new ItemInteractionHandler() { + @Override + public boolean onRightClick(ItemUseEvent e, Player p, ItemStack item) { + if (SlimefunManager.isItemSimiliar(item, SlimefunItems.DIET_COOKIE, true)) { + e.setCancelled(true); + p.sendMessage(ChatColor.YELLOW + "You feel so light..."); + p.playSound(p.getLocation(), Sound.ENTITY_GENERIC_EAT, 1, 1); + if (p.hasPotionEffect(PotionEffectType.LEVITATION)) p.removePotionEffect(PotionEffectType.LEVITATION); + p.addPotionEffect(PotionEffectType.LEVITATION.createEffect(60, 1)); + return true; + } + return false; + } + }); + new SlimefunItem(Categories.MACHINES_1, SlimefunItems.OUTPUT_CHEST, "OUTPUT_CHEST", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {SlimefunItems.LEAD_INGOT, new ItemStack(Material.HOPPER), SlimefunItems.LEAD_INGOT, SlimefunItems.LEAD_INGOT, new ItemStack(Material.CHEST), SlimefunItems.LEAD_INGOT, null, SlimefunItems.LEAD_INGOT, null}) .register(true); From 2de2ac519d5a333639d231bed0bcc5da8f71a893 Mon Sep 17 00:00:00 2001 From: ajan-12 <36973731+ajan-12@users.noreply.github.com> Date: Fri, 30 Aug 2019 01:24:22 +0300 Subject: [PATCH 049/169] Fixing Diet Cookie not being consumed. --- src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java index 5c8cba95b..fed2fbe6b 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java @@ -170,8 +170,14 @@ public final class SlimefunSetup { public boolean onRightClick(ItemUseEvent e, Player p, ItemStack item) { if (SlimefunManager.isItemSimiliar(item, SlimefunItems.DIET_COOKIE, true)) { e.setCancelled(true); + + int amount = item.getAmount(); + if (amount <= 1) item.setType(Material.AIR); + item.setAmount(amount - 1); + p.sendMessage(ChatColor.YELLOW + "You feel so light..."); p.playSound(p.getLocation(), Sound.ENTITY_GENERIC_EAT, 1, 1); + if (p.hasPotionEffect(PotionEffectType.LEVITATION)) p.removePotionEffect(PotionEffectType.LEVITATION); p.addPotionEffect(PotionEffectType.LEVITATION.createEffect(60, 1)); return true; From a83266104e70e9b253d5e3d9324fe40a8a78ddcf Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Fri, 30 Aug 2019 00:43:17 +0200 Subject: [PATCH 050/169] More Refactoring --- .../machines/AnimalGrowthAccelerator.java | 23 +-- .../SlimefunItem/machines/AutoBreeder.java | 5 +- .../machines/HologramProjector.java | 60 ++++++++ .../SlimefunItem/machines/InfusedHopper.java | 80 ++++++++++ .../SlimefunItem/machines/XPCollector.java | 5 +- .../Slimefun/Setup/SlimefunSetup.java | 138 ++++++------------ .../androids/ProgrammableAndroid.java | 12 +- ...atusHologram.java => AndroidHologram.java} | 18 ++- ...a => AnimalGrowthAcceleratorHologram.java} | 13 +- ...oBreeder.java => AutoBreederHologram.java} | 13 +- .../Slimefun/holograms/CargoHologram.java | 14 +- .../Slimefun/holograms/EnergyHologram.java | 14 +- ...or.java => HologramProjectorHologram.java} | 15 +- ...Hopper.java => InfusedHopperHologram.java} | 13 +- .../Slimefun/holograms/ReactorHologram.java | 17 ++- ...ollector.java => XPCollectorHologram.java} | 13 +- 16 files changed, 300 insertions(+), 153 deletions(-) create mode 100644 src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/HologramProjector.java create mode 100644 src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/InfusedHopper.java rename src/me/mrCookieSlime/Slimefun/holograms/{AndroidStatusHologram.java => AndroidHologram.java} (73%) rename src/me/mrCookieSlime/Slimefun/holograms/{AnimalGrowthAccelerator.java => AnimalGrowthAcceleratorHologram.java} (67%) rename src/me/mrCookieSlime/Slimefun/holograms/{AutoBreeder.java => AutoBreederHologram.java} (67%) rename src/me/mrCookieSlime/Slimefun/holograms/{Projector.java => HologramProjectorHologram.java} (87%) rename src/me/mrCookieSlime/Slimefun/holograms/{InfusedHopper.java => InfusedHopperHologram.java} (77%) rename src/me/mrCookieSlime/Slimefun/holograms/{XPCollector.java => XPCollectorHologram.java} (68%) diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AnimalGrowthAccelerator.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AnimalGrowthAccelerator.java index 48640e0ab..605777e2c 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AnimalGrowthAccelerator.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AnimalGrowthAccelerator.java @@ -1,5 +1,14 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines; +import org.bukkit.Material; +import org.bukkit.Particle; +import org.bukkit.block.Block; +import org.bukkit.entity.Ageable; +import org.bukkit.entity.Entity; +import org.bukkit.entity.LivingEntity; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; + import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib; import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.InvUtils; @@ -17,15 +26,7 @@ import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset; import me.mrCookieSlime.Slimefun.api.item_transport.ItemTransportFlow; - -import org.bukkit.Material; -import org.bukkit.Particle; -import org.bukkit.block.Block; -import org.bukkit.entity.Ageable; -import org.bukkit.entity.Entity; -import org.bukkit.entity.LivingEntity; -import org.bukkit.entity.Player; -import org.bukkit.inventory.ItemStack; +import me.mrCookieSlime.Slimefun.holograms.AnimalGrowthAcceleratorHologram; public class AnimalGrowthAccelerator extends SlimefunItem { @@ -66,7 +67,7 @@ public class AnimalGrowthAccelerator extends SlimefunItem { @Override public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) { - me.mrCookieSlime.Slimefun.holograms.AnimalGrowthAccelerator.getArmorStand(b).remove(); + AnimalGrowthAcceleratorHologram.remove(b); BlockMenu inv = BlockStorage.getInventory(b); if (inv != null) { for (int slot : getInputSlots()) { @@ -124,7 +125,7 @@ public class AnimalGrowthAccelerator extends SlimefunItem { } protected void tick(Block b) throws Exception { - for (Entity n : me.mrCookieSlime.Slimefun.holograms.AnimalGrowthAccelerator.getArmorStand(b).getNearbyEntities(3D, 3D, 3D)) { + for (Entity n : AnimalGrowthAcceleratorHologram.getArmorStand(b, true).getNearbyEntities(3D, 3D, 3D)) { if (n instanceof Ageable && !((Ageable) n).isAdult()) { for (int slot: getInputSlots()) { if (SlimefunManager.isItemSimiliar(BlockStorage.getInventory(b).getItemInSlot(slot), SlimefunItems.ORGANIC_FOOD, false)) { diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoBreeder.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoBreeder.java index 5a1d4a01a..c0d8934c9 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoBreeder.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoBreeder.java @@ -26,6 +26,7 @@ import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset; import me.mrCookieSlime.Slimefun.api.item_transport.ItemTransportFlow; +import me.mrCookieSlime.Slimefun.holograms.AutoBreederHologram; public class AutoBreeder extends SlimefunItem { @@ -65,7 +66,7 @@ public class AutoBreeder extends SlimefunItem { @Override public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) { - me.mrCookieSlime.Slimefun.holograms.AutoBreeder.getArmorStand(b).remove(); + AutoBreederHologram.remove(b); BlockMenu inv = BlockStorage.getInventory(b); if (inv != null) { for (int slot : getInputSlots()) { @@ -123,7 +124,7 @@ public class AutoBreeder extends SlimefunItem { } protected void tick(Block b) throws Exception { - for (Entity n : me.mrCookieSlime.Slimefun.holograms.AutoBreeder.getArmorStand(b).getNearbyEntities(4D, 2D, 4D)) { + for (Entity n : AutoBreederHologram.getArmorStand(b, true).getNearbyEntities(4D, 2D, 4D)) { if (Animals.isFeedable(n)) { for (int slot : getInputSlots()) { if (SlimefunManager.isItemSimiliar(BlockStorage.getInventory(b).getItemInSlot(slot), SlimefunItems.ORGANIC_FOOD, false)) { diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/HologramProjector.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/HologramProjector.java new file mode 100644 index 000000000..6a59d470a --- /dev/null +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/HologramProjector.java @@ -0,0 +1,60 @@ +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines; + +import org.bukkit.block.Block; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; + +import me.mrCookieSlime.CSCoreLibPlugin.events.ItemUseEvent; +import me.mrCookieSlime.Slimefun.Lists.RecipeType; +import me.mrCookieSlime.Slimefun.Objects.Category; +import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason; +import me.mrCookieSlime.Slimefun.Objects.handlers.ItemInteractionHandler; +import me.mrCookieSlime.Slimefun.api.BlockStorage; +import me.mrCookieSlime.Slimefun.holograms.HologramProjectorHologram; + +public class HologramProjector extends SlimefunItem { + + public HologramProjector(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe, ItemStack recipeOutput) { + super(category, item, id, recipeType, recipe, recipeOutput); + + SlimefunItem.registerBlockHandler(getID(), new SlimefunBlockHandler() { + + @Override + public void onPlace(Player p, Block b, SlimefunItem item) { + BlockStorage.addBlockInfo(b, "text", "&bHi, I am a Hologram, &3configure me using the Projector"); + BlockStorage.addBlockInfo(b, "offset", "-0.5"); + BlockStorage.addBlockInfo(b, "owner", p.getUniqueId().toString()); + + HologramProjectorHologram.getArmorStand(b, true); + } + + @Override + public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) { + HologramProjectorHologram.remove(b); + return true; + } + }); + } + + @Override + public void register(boolean slimefun) { + super.register(slimefun, new ItemInteractionHandler() { + + @Override + public boolean onRightClick(ItemUseEvent e, Player p, ItemStack stack) { + if (e.getClickedBlock() == null) return false; + SlimefunItem item = BlockStorage.check(e.getClickedBlock()); + if (item == null || !item.getID().equals(getID())) return false; + e.setCancelled(true); + + if (BlockStorage.getLocationInfo(e.getClickedBlock().getLocation(), "owner").equals(p.getUniqueId().toString())) { + HologramProjectorHologram.openEditor(p, e.getClickedBlock()); + } + + return true; + } + }); + } +} diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/InfusedHopper.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/InfusedHopper.java new file mode 100644 index 000000000..1cd226e12 --- /dev/null +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/InfusedHopper.java @@ -0,0 +1,80 @@ +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines; + +import org.bukkit.Material; +import org.bukkit.Sound; +import org.bukkit.block.Block; +import org.bukkit.entity.ArmorStand; +import org.bukkit.entity.Entity; +import org.bukkit.entity.Item; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; +import org.bukkit.util.Vector; + +import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config; +import me.mrCookieSlime.Slimefun.Lists.RecipeType; +import me.mrCookieSlime.Slimefun.Objects.Category; +import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason; +import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker; +import me.mrCookieSlime.Slimefun.api.BlockStorage; +import me.mrCookieSlime.Slimefun.holograms.InfusedHopperHologram; + +public class InfusedHopper extends SlimefunItem { + + public InfusedHopper(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe) { + super(category, item, id, recipeType, recipe); + + SlimefunItem.registerBlockHandler(getID(), new SlimefunBlockHandler() { + + @Override + public void onPlace(Player p, Block b, SlimefunItem item) { + InfusedHopperHologram.getArmorStand(b, true); + } + + @Override + public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) { + InfusedHopperHologram.remove(b); + return true; + } + }); + } + + @Override + public void register(boolean slimefun) { + super.register(slimefun, new BlockTicker() { + + @Override + public void uniqueTick() { + + } + + @Override + public void tick(Block b, SlimefunItem item, Config data) { + if (b.getType() != Material.HOPPER) { + // we're no longer a hopper, we were probably destroyed. skipping this tick. + BlockStorage.clearBlockInfo(b); + return; + } + + ArmorStand hologram = InfusedHopperHologram.getArmorStand(b, true); + boolean sound = false; + + for (Entity n: hologram.getNearbyEntities(3.5D, 3.5D, 3.5D)) { + if (n instanceof Item && !n.hasMetadata("no_pickup") && n.getLocation().distance(hologram.getLocation()) > 0.4D) { + n.setVelocity(new Vector(0, 0.1, 0)); + n.teleport(hologram); + sound = true; + } + } + + if (sound) b.getWorld().playSound(b.getLocation(), Sound.ENTITY_ENDERMAN_TELEPORT, 5F, 2F); + } + + @Override + public boolean isSynchronized() { + return true; + } + }); + } +} diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/XPCollector.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/XPCollector.java index 9c198266e..6e0290676 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/XPCollector.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/XPCollector.java @@ -25,6 +25,7 @@ import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset; import me.mrCookieSlime.Slimefun.api.item_transport.ItemTransportFlow; +import me.mrCookieSlime.Slimefun.holograms.XPCollectorHologram; public class XPCollector extends SlimefunItem { @@ -65,7 +66,7 @@ public class XPCollector extends SlimefunItem { @Override public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) { - me.mrCookieSlime.Slimefun.holograms.XPCollector.getArmorStand(b).remove(); + XPCollectorHologram.remove(b); BlockMenu inv = BlockStorage.getInventory(b); if (inv != null) { for (int slot: getOutputSlots()) { @@ -148,7 +149,7 @@ public class XPCollector extends SlimefunItem { } protected void tick(Block b) throws Exception { - Iterator iterator = me.mrCookieSlime.Slimefun.holograms.XPCollector.getArmorStand(b).getNearbyEntities(4D, 4D, 4D).iterator(); + Iterator iterator = XPCollectorHologram.getArmorStand(b, true).getNearbyEntities(4D, 4D, 4D).iterator(); while (iterator.hasNext()) { Entity n = iterator.next(); if (n instanceof ExperienceOrb) { diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java index 7a74af178..b1cf9e257 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java @@ -8,8 +8,6 @@ import java.util.Random; import java.util.Set; import java.util.UUID; -import io.github.thebusybiscuit.cscorelib2.materials.MaterialTools; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.*; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.Effect; @@ -50,6 +48,7 @@ import org.bukkit.potion.PotionEffect; import org.bukkit.potion.PotionEffectType; import org.bukkit.util.Vector; +import io.github.thebusybiscuit.cscorelib2.materials.MaterialTools; import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib; import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config; import me.mrCookieSlime.CSCoreLibPlugin.compatibility.MaterialHelper; @@ -104,6 +103,43 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AGenerator; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AReactor; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineFuel; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.Teleporter; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.AdvancedCargoOutputNode; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.AnimalGrowthAccelerator; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.AutoAnvil; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.AutoBreeder; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.AutoDisenchanter; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.AutoDrier; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.AutoEnchanter; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.AutomatedCraftingChamber; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.CarbonPress; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.CargoInputNode; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.CargoOutputNode; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.ChargingBench; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.CropGrowthAccelerator; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.ElectricDustWasher; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.ElectricFurnace; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.ElectricGoldPan; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.ElectricIngotFactory; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.ElectricSmeltery; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.ElectrifiedCrucible; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.EnhancedCraftingTable; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.FluidPump; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.FoodComposter; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.FoodFabricator; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.Freezer; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.HeatedPressureChamber; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.HologramProjector; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.InfusedHopper; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.MagicWorkbench; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.NetherDrill; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.OilPump; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.OreWasher; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.ReactorAccessPort; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.Refinery; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.Smeltery; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.TrashCan; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.WitherAssembler; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.XPCollector; import me.mrCookieSlime.Slimefun.Objects.handlers.AutonomousMachineHandler; import me.mrCookieSlime.Slimefun.Objects.handlers.BlockBreakHandler; import me.mrCookieSlime.Slimefun.Objects.handlers.BlockPlaceHandler; @@ -123,8 +159,6 @@ import me.mrCookieSlime.Slimefun.api.energy.EnergyTicker; import me.mrCookieSlime.Slimefun.api.item_transport.CargoNet; import me.mrCookieSlime.Slimefun.holograms.CargoHologram; import me.mrCookieSlime.Slimefun.holograms.EnergyHologram; -import me.mrCookieSlime.Slimefun.holograms.InfusedHopper; -import me.mrCookieSlime.Slimefun.holograms.Projector; import me.mrCookieSlime.Slimefun.holograms.ReactorHologram; import me.mrCookieSlime.Slimefun.listeners.AncientAltarListener; import me.mrCookieSlime.Slimefun.utils.Utilities; @@ -828,42 +862,9 @@ public final class SlimefunSetup { new ItemStack[] {SlimefunItems.CLOTH, SlimefunItems.CLOTH, SlimefunItems.CLOTH, SlimefunItems.CHAIN, null, SlimefunItems.CHAIN, null, null, null}) .register(true); - new SlimefunItem(Categories.TECH, SlimefunItems.HOLOGRAM_PROJECTOR, "HOLOGRAM_PROJECTOR", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {null, SlimefunItems.POWER_CRYSTAL, null, SlimefunItems.ALUMINUM_BRASS_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.ALUMINUM_BRASS_INGOT, null, SlimefunItems.ALUMINUM_BRASS_INGOT, null}, new CustomItem(SlimefunItems.HOLOGRAM_PROJECTOR, 3)) - .register(true, new ItemInteractionHandler() { - - @Override - public boolean onRightClick(ItemUseEvent e, Player p, ItemStack stack) { - if (e.getClickedBlock() == null) return false; - SlimefunItem item = BlockStorage.check(e.getClickedBlock()); - if (item == null || !item.getID().equals("HOLOGRAM_PROJECTOR")) return false; - e.setCancelled(true); - - if (BlockStorage.getLocationInfo(e.getClickedBlock().getLocation(), "owner").equals(p.getUniqueId().toString())) { - Projector.openEditor(p, e.getClickedBlock()); - } - - return true; - } - }); - - SlimefunItem.registerBlockHandler("HOLOGRAM_PROJECTOR", new SlimefunBlockHandler() { - - @Override - public void onPlace(Player p, Block b, SlimefunItem item) { - BlockStorage.addBlockInfo(b, "text", "&bHi, I am a Hologram, &3configure me using the Projector"); - BlockStorage.addBlockInfo(b, "offset", "-0.5"); - BlockStorage.addBlockInfo(b, "owner", p.getUniqueId().toString()); - - Projector.getArmorStand(b); - } - - @Override - public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) { - Projector.getArmorStand(b).remove(); - return true; - } - }); + new HologramProjector(Categories.TECH, SlimefunItems.HOLOGRAM_PROJECTOR, "HOLOGRAM_PROJECTOR", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {null, SlimefunItems.POWER_CRYSTAL, null, SlimefunItems.ALUMINUM_BRASS_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.ALUMINUM_BRASS_INGOT, null, SlimefunItems.ALUMINUM_BRASS_INGOT, null}, new CustomItem(SlimefunItems.HOLOGRAM_PROJECTOR, 3)) + .register(true); new SlimefunItem(Categories.MISC, SlimefunItems.CHAIN, "CHAIN", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {null, null, SlimefunItems.STEEL_INGOT, null, SlimefunItems.STEEL_INGOT, null, SlimefunItems.STEEL_INGOT, null, null}, new CustomItem(SlimefunItems.CHAIN, 8)) @@ -4149,60 +4150,9 @@ public final class SlimefunSetup { } }); - new SlimefunItem(Categories.MAGIC, SlimefunItems.INFUSED_HOPPER, "INFUSED_HOPPER", RecipeType.ANCIENT_ALTAR, + new InfusedHopper(Categories.MAGIC, SlimefunItems.INFUSED_HOPPER, "INFUSED_HOPPER", RecipeType.ANCIENT_ALTAR, new ItemStack[] {new ItemStack(Material.OBSIDIAN), SlimefunItems.RUNE_EARTH, new ItemStack(Material.HOPPER), SlimefunItems.RUNE_ENDER, SlimefunItems.INFUSED_MAGNET, SlimefunItems.RUNE_ENDER, new ItemStack(Material.HOPPER), SlimefunItems.RUNE_EARTH, new ItemStack(Material.OBSIDIAN)}) - .register(true, new BlockTicker() { - - @Override - public void uniqueTick() { - - } - - @Override - public void tick(Block b, SlimefunItem item, Config data) { - if (b.getType() != Material.HOPPER) { - // we're no longer a hopper, we were probably destroyed. skipping this tick. - BlockStorage.clearBlockInfo(b); - return; - } - - ArmorStand hologram = InfusedHopper.getArmorStand(b, true); - boolean sound = false; - - for (Entity n: hologram.getNearbyEntities(3.5D, 3.5D, 3.5D)) { - if (n instanceof Item && !n.hasMetadata("no_pickup") && n.getLocation().distance(hologram.getLocation()) > 0.4D) { - n.setVelocity(new Vector(0, 0.1, 0)); - n.teleport(hologram); - sound = true; - } - } - - if (sound) b.getWorld().playSound(b.getLocation(), Sound.ENTITY_ENDERMAN_TELEPORT, 5F, 2F); - } - - @Override - public boolean isSynchronized() { - return true; - } - }); - - SlimefunItem.registerBlockHandler("INFUSED_HOPPER", new SlimefunBlockHandler() { - - @Override - public void onPlace(Player p, Block b, SlimefunItem item) { - InfusedHopper.getArmorStand(b, true); - } - - @Override - public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) { - final ArmorStand hologram = InfusedHopper.getArmorStand(b, false); - - if (hologram != null) { - hologram.remove(); - } - return true; - } - }); + .register(true); new SlimefunItem(Categories.RESOURCES, SlimefunItems.BLISTERING_INGOT, "BLISTERING_INGOT", RecipeType.HEATED_PRESSURE_CHAMBER, new ItemStack[] {SlimefunItems.GOLD_24K, SlimefunItems.URANIUM, null, null, null, null, null, null, null}) @@ -4599,7 +4549,7 @@ public final class SlimefunSetup { @Override public void extraTick(final Location l) { Bukkit.getScheduler().runTaskLater(SlimefunStartup.instance, () -> { - for (Entity entity : ReactorHologram.getArmorStand(l).getNearbyEntities(5, 5, 5)) { + for (Entity entity : ReactorHologram.getArmorStand(l, true).getNearbyEntities(5, 5, 5)) { if (entity instanceof LivingEntity) { ((LivingEntity) entity).addPotionEffect(new PotionEffect(PotionEffectType.WITHER, 60, 1)); } diff --git a/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java b/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java index d20f3e504..3082ce1d3 100644 --- a/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java +++ b/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java @@ -63,7 +63,7 @@ import me.mrCookieSlime.Slimefun.api.BlockStorage; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset; import me.mrCookieSlime.Slimefun.api.item_transport.ItemTransportFlow; -import me.mrCookieSlime.Slimefun.holograms.AndroidStatusHologram; +import me.mrCookieSlime.Slimefun.holograms.AndroidHologram; public abstract class ProgrammableAndroid extends SlimefunItem { @@ -230,7 +230,7 @@ public abstract class ProgrammableAndroid extends SlimefunItem { } } } - AndroidStatusHologram.remove(b); + AndroidHologram.remove(b); } return allow; @@ -432,7 +432,7 @@ public abstract class ProgrammableAndroid extends SlimefunItem { break; case ATTACK_MOBS_ANIMALS: entities: - for (Entity n: AndroidStatusHologram.getNearbyEntities(b, 4D + getTier())) { + for (Entity n: AndroidHologram.getNearbyEntities(b, 4D + getTier())) { switch (BlockFace.valueOf(BlockStorage.getLocationInfo(b.getLocation(), "rotation"))) { case NORTH: { if (n instanceof LivingEntity && !(n instanceof ArmorStand) && !(n instanceof Player) && n.getLocation().getZ() < b.getZ()) { @@ -481,7 +481,7 @@ public abstract class ProgrammableAndroid extends SlimefunItem { break; case ATTACK_MOBS: entities: - for (Entity n: AndroidStatusHologram.getNearbyEntities(b, 4D + getTier())) { + for (Entity n: AndroidHologram.getNearbyEntities(b, 4D + getTier())) { if (n instanceof Animals) continue; switch (BlockFace.valueOf(BlockStorage.getLocationInfo(b.getLocation(), "rotation"))) { case NORTH: { @@ -531,7 +531,7 @@ public abstract class ProgrammableAndroid extends SlimefunItem { break; case ATTACK_ANIMALS: entities: - for (Entity n: AndroidStatusHologram.getNearbyEntities(b, 4D + getTier())) { + for (Entity n: AndroidHologram.getNearbyEntities(b, 4D + getTier())) { if (n instanceof Monster) continue; switch (BlockFace.valueOf(BlockStorage.getLocationInfo(b.getLocation(), "rotation"))) { case NORTH: { @@ -581,7 +581,7 @@ public abstract class ProgrammableAndroid extends SlimefunItem { break; case ATTACK_ANIMALS_ADULT: entities: - for (Entity n: AndroidStatusHologram.getNearbyEntities(b, 4D + getTier())) { + for (Entity n: AndroidHologram.getNearbyEntities(b, 4D + getTier())) { if (n instanceof Monster) continue; if (n instanceof org.bukkit.entity.Ageable && !((org.bukkit.entity.Ageable) n).isAdult()) continue; switch (BlockFace.valueOf(BlockStorage.getLocationInfo(b.getLocation(), "rotation"))) { diff --git a/src/me/mrCookieSlime/Slimefun/holograms/AndroidStatusHologram.java b/src/me/mrCookieSlime/Slimefun/holograms/AndroidHologram.java similarity index 73% rename from src/me/mrCookieSlime/Slimefun/holograms/AndroidStatusHologram.java rename to src/me/mrCookieSlime/Slimefun/holograms/AndroidHologram.java index a4404da96..1b9ce0caa 100644 --- a/src/me/mrCookieSlime/Slimefun/holograms/AndroidStatusHologram.java +++ b/src/me/mrCookieSlime/Slimefun/holograms/AndroidHologram.java @@ -9,37 +9,41 @@ import org.bukkit.entity.Entity; import me.mrCookieSlime.CSCoreLibPlugin.general.World.ArmorStandFactory; -public class AndroidStatusHologram { +public final class AndroidHologram { + + private AndroidHologram() {} private static final double offset = 1.2; public static void update(final Block b, final String name) { - ArmorStand hologram = getArmorStand(b); + ArmorStand hologram = getArmorStand(b, true); hologram.setCustomName(name); } public static void remove(final Block b) { - ArmorStand hologram = getArmorStand(b); - hologram.remove(); + ArmorStand hologram = getArmorStand(b, false); + if (hologram != null) hologram.remove(); } public static List getNearbyEntities(final Block b, double radius) { - ArmorStand hologram = getArmorStand(b); + ArmorStand hologram = getArmorStand(b, true); return hologram.getNearbyEntities(radius, 1D, radius); } public static List getNearbyEntities(final Block b, double radius, double y) { - ArmorStand hologram = getArmorStand(b); + ArmorStand hologram = getArmorStand(b, true); return hologram.getNearbyEntities(radius, y, radius); } - private static ArmorStand getArmorStand(Block b) { + private static ArmorStand getArmorStand(Block b, boolean createIfNoneExists) { Location l = new Location(b.getWorld(), b.getX() + 0.5, b.getY() + offset, b.getZ() + 0.5); for (Entity n: l.getChunk().getEntities()) { if (n instanceof ArmorStand && n.getCustomName() == null && l.distanceSquared(n.getLocation()) < 0.4D) return (ArmorStand) n; } + if (!createIfNoneExists) return null; + ArmorStand hologram = ArmorStandFactory.createHidden(l); hologram.setCustomNameVisible(false); hologram.setCustomName(null); diff --git a/src/me/mrCookieSlime/Slimefun/holograms/AnimalGrowthAccelerator.java b/src/me/mrCookieSlime/Slimefun/holograms/AnimalGrowthAcceleratorHologram.java similarity index 67% rename from src/me/mrCookieSlime/Slimefun/holograms/AnimalGrowthAccelerator.java rename to src/me/mrCookieSlime/Slimefun/holograms/AnimalGrowthAcceleratorHologram.java index 020662d97..eae0f3be4 100644 --- a/src/me/mrCookieSlime/Slimefun/holograms/AnimalGrowthAccelerator.java +++ b/src/me/mrCookieSlime/Slimefun/holograms/AnimalGrowthAcceleratorHologram.java @@ -7,21 +7,30 @@ import org.bukkit.entity.Entity; import me.mrCookieSlime.CSCoreLibPlugin.general.World.ArmorStandFactory; -public class AnimalGrowthAccelerator { +public final class AnimalGrowthAcceleratorHologram { + + private AnimalGrowthAcceleratorHologram() {} private static final double offset = 1.2; - public static ArmorStand getArmorStand(Block hopper) { + public static ArmorStand getArmorStand(Block hopper, boolean createIfNoneExists) { Location l = new Location(hopper.getWorld(), hopper.getX() + 0.5, hopper.getY() + offset, hopper.getZ() + 0.5); for (Entity n: l.getChunk().getEntities()) { if (n instanceof ArmorStand && n.getCustomName() == null && l.distanceSquared(n.getLocation()) < 0.4D) return (ArmorStand) n; } + if (!createIfNoneExists) return null; + ArmorStand hologram = ArmorStandFactory.createHidden(l); hologram.setCustomNameVisible(false); hologram.setCustomName(null); return hologram; } + public static void remove(Block b) { + ArmorStand hologram = getArmorStand(b, false); + if (hologram != null) hologram.remove(); + } + } diff --git a/src/me/mrCookieSlime/Slimefun/holograms/AutoBreeder.java b/src/me/mrCookieSlime/Slimefun/holograms/AutoBreederHologram.java similarity index 67% rename from src/me/mrCookieSlime/Slimefun/holograms/AutoBreeder.java rename to src/me/mrCookieSlime/Slimefun/holograms/AutoBreederHologram.java index 925651768..fdbc70afd 100644 --- a/src/me/mrCookieSlime/Slimefun/holograms/AutoBreeder.java +++ b/src/me/mrCookieSlime/Slimefun/holograms/AutoBreederHologram.java @@ -7,19 +7,28 @@ import org.bukkit.entity.Entity; import me.mrCookieSlime.CSCoreLibPlugin.general.World.ArmorStandFactory; -public class AutoBreeder { +public final class AutoBreederHologram { - public static ArmorStand getArmorStand(Block hopper) { + private AutoBreederHologram() {} + + public static ArmorStand getArmorStand(Block hopper, boolean createIfNonExists) { Location l = new Location(hopper.getWorld(), hopper.getX() + 0.5, hopper.getY(), hopper.getZ() + 0.5); for (Entity n: l.getChunk().getEntities()) { if (n instanceof ArmorStand && n.getCustomName() == null && l.distanceSquared(n.getLocation()) < 0.4D) return (ArmorStand) n; } + if (!createIfNonExists) return null; + ArmorStand hologram = ArmorStandFactory.createHidden(l); hologram.setCustomNameVisible(false); hologram.setCustomName(null); return hologram; } + public static void remove(Block b) { + ArmorStand hologram = getArmorStand(b, false); + if (hologram != null) hologram.remove(); + } + } diff --git a/src/me/mrCookieSlime/Slimefun/holograms/CargoHologram.java b/src/me/mrCookieSlime/Slimefun/holograms/CargoHologram.java index 358011bcb..6c02b84c8 100644 --- a/src/me/mrCookieSlime/Slimefun/holograms/CargoHologram.java +++ b/src/me/mrCookieSlime/Slimefun/holograms/CargoHologram.java @@ -10,27 +10,31 @@ import org.bukkit.entity.Entity; import me.mrCookieSlime.CSCoreLibPlugin.general.World.ArmorStandFactory; import me.mrCookieSlime.Slimefun.SlimefunStartup; -public class CargoHologram { +public final class CargoHologram { + + private CargoHologram() {} public static void update(final Block b, final String name) { Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> { - ArmorStand hologram = getArmorStand(b); + ArmorStand hologram = getArmorStand(b, true); hologram.setCustomName(ChatColor.translateAlternateColorCodes('&', name)); }); } public static void remove(Block b) { - ArmorStand hologram = getArmorStand(b); - hologram.remove(); + ArmorStand hologram = getArmorStand(b, false); + if (hologram != null) hologram.remove(); } - private static ArmorStand getArmorStand(Block b) { + private static ArmorStand getArmorStand(Block b, boolean createIfNonExists) { Location l = new Location(b.getWorld(), b.getX() + 0.5, b.getY() + 0.7F, b.getZ() + 0.5); for (Entity n : l.getChunk().getEntities()) { if (n instanceof ArmorStand && n.getCustomName() != null && l.distanceSquared(n.getLocation()) < 0.4D) return (ArmorStand) n; } + if (!createIfNonExists) return null; + ArmorStand hologram = ArmorStandFactory.createHidden(l); return hologram; } diff --git a/src/me/mrCookieSlime/Slimefun/holograms/EnergyHologram.java b/src/me/mrCookieSlime/Slimefun/holograms/EnergyHologram.java index b196a6fe0..784233265 100644 --- a/src/me/mrCookieSlime/Slimefun/holograms/EnergyHologram.java +++ b/src/me/mrCookieSlime/Slimefun/holograms/EnergyHologram.java @@ -11,7 +11,9 @@ import me.mrCookieSlime.CSCoreLibPlugin.general.Math.DoubleHandler; import me.mrCookieSlime.CSCoreLibPlugin.general.World.ArmorStandFactory; import me.mrCookieSlime.Slimefun.SlimefunStartup; -public class EnergyHologram { +public final class EnergyHologram { + + private EnergyHologram() {} public static void update(Block b, double supply, double demand) { update(b, demand > supply ? ("&4&l- &c" + DoubleHandler.getFancyDouble(Math.abs(supply - demand)) + " &7J &e\u26A1"): ("&2&l+ &a" + DoubleHandler.getFancyDouble(supply - demand) + " &7J &e\u26A1")); @@ -19,25 +21,27 @@ public class EnergyHologram { public static void update(final Block b, final String name) { Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> { - ArmorStand hologram = getArmorStand(b); + ArmorStand hologram = getArmorStand(b, true); hologram.setCustomName(ChatColor.translateAlternateColorCodes('&', name)); }); } public static void remove(final Block b) { Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> { - ArmorStand hologram = getArmorStand(b); - hologram.remove(); + ArmorStand hologram = getArmorStand(b, false); + if (hologram != null) hologram.remove(); }); } - private static ArmorStand getArmorStand(Block b) { + private static ArmorStand getArmorStand(Block b, boolean createIfNonExists) { Location l = new Location(b.getWorld(), b.getX() + 0.5, b.getY() + 0.7F, b.getZ() + 0.5); for (Entity n : l.getChunk().getEntities()) { if (n instanceof ArmorStand && n.getCustomName() != null && l.distanceSquared(n.getLocation()) < 0.4D) return (ArmorStand) n; } + if (!createIfNonExists) return null; + ArmorStand hologram = ArmorStandFactory.createHidden(l); return hologram; } diff --git a/src/me/mrCookieSlime/Slimefun/holograms/Projector.java b/src/me/mrCookieSlime/Slimefun/holograms/HologramProjectorHologram.java similarity index 87% rename from src/me/mrCookieSlime/Slimefun/holograms/Projector.java rename to src/me/mrCookieSlime/Slimefun/holograms/HologramProjectorHologram.java index 1edaf849b..24a73f8e1 100644 --- a/src/me/mrCookieSlime/Slimefun/holograms/Projector.java +++ b/src/me/mrCookieSlime/Slimefun/holograms/HologramProjectorHologram.java @@ -17,9 +17,11 @@ import me.mrCookieSlime.CSCoreLibPlugin.general.World.ArmorStandFactory; import me.mrCookieSlime.Slimefun.Setup.Messages; import me.mrCookieSlime.Slimefun.api.BlockStorage; -public class Projector { +public final class HologramProjectorHologram { - public static ArmorStand getArmorStand(Block projector) { + private HologramProjectorHologram() {} + + public static ArmorStand getArmorStand(Block projector, boolean createIfNoneExists) { String nametag = BlockStorage.getLocationInfo(projector.getLocation(), "text"); double offset = Double.parseDouble(BlockStorage.getLocationInfo(projector.getLocation(), "offset")); Location l = new Location(projector.getWorld(), projector.getX() + 0.5, projector.getY() + offset, projector.getZ() + 0.5); @@ -32,6 +34,11 @@ public class Projector { hologram.setCustomName(nametag); return hologram; } + + public static void remove(Block b) { + ArmorStand hologram = getArmorStand(b, false); + if (hologram != null) hologram.remove(); + } public static void openEditor(Player p, final Block projector) { ChestMenu menu = new ChestMenu("Hologram Settings"); @@ -41,7 +48,7 @@ public class Projector { pl.closeInventory(); Messages.local.sendTranslation(pl, "machines.HOLOGRAM_PROJECTOR.enter-text", true); MenuHelper.awaitChatInput(pl, (player, message) -> { - ArmorStand hologram = getArmorStand(projector); + ArmorStand hologram = getArmorStand(projector, true); hologram.setCustomName(ChatColor.translateAlternateColorCodes('&', message)); BlockStorage.addBlockInfo(projector, "text", hologram.getCustomName()); openEditor(player, projector); @@ -53,7 +60,7 @@ public class Projector { menu.addItem(1, new CustomItem(new ItemStack(Material.CLOCK), "&7Offset: &e" + DoubleHandler.fixDouble(Double.valueOf(BlockStorage.getLocationInfo(projector.getLocation(), "offset")) + 1.0D), "", "&rLeft Click: &7+0.1", "&rRight Click: &7-0.1")); menu.addMenuClickHandler(1, (pl, slot, item, action) -> { double offset = DoubleHandler.fixDouble(Double.valueOf(BlockStorage.getLocationInfo(projector.getLocation(), "offset")) + (action.isRightClicked() ? -0.1F : 0.1F)); - ArmorStand hologram = getArmorStand(projector); + ArmorStand hologram = getArmorStand(projector, true); Location l = new Location(projector.getWorld(), projector.getX() + 0.5, projector.getY() + offset, projector.getZ() + 0.5); hologram.teleport(l); BlockStorage.addBlockInfo(projector, "offset", String.valueOf(offset)); diff --git a/src/me/mrCookieSlime/Slimefun/holograms/InfusedHopper.java b/src/me/mrCookieSlime/Slimefun/holograms/InfusedHopperHologram.java similarity index 77% rename from src/me/mrCookieSlime/Slimefun/holograms/InfusedHopper.java rename to src/me/mrCookieSlime/Slimefun/holograms/InfusedHopperHologram.java index e1d0c7652..9594a8ec1 100644 --- a/src/me/mrCookieSlime/Slimefun/holograms/InfusedHopper.java +++ b/src/me/mrCookieSlime/Slimefun/holograms/InfusedHopperHologram.java @@ -7,25 +7,28 @@ import org.bukkit.entity.Entity; import me.mrCookieSlime.CSCoreLibPlugin.general.World.ArmorStandFactory; -public class InfusedHopper { +public class InfusedHopperHologram { private static final double offset = 1.2; - public static ArmorStand getArmorStand(Block hopper, boolean createIfNoneFound) { + public static ArmorStand getArmorStand(Block hopper, boolean createIfNoneExists) { Location l = new Location(hopper.getWorld(), hopper.getX() + 0.5, hopper.getY() + offset, hopper.getZ() + 0.5); for (Entity n: l.getChunk().getEntities()) { if (n instanceof ArmorStand && n.getCustomName() == null && l.distanceSquared(n.getLocation()) < 0.4D) return (ArmorStand) n; } - if (!createIfNoneFound) { - return null; - } + if (!createIfNoneExists) return null; ArmorStand hologram = ArmorStandFactory.createHidden(l); hologram.setCustomNameVisible(false); hologram.setCustomName(null); return hologram; } + + public static void remove(Block b) { + ArmorStand hologram = getArmorStand(b, false); + if (hologram != null) hologram.remove(); + } } diff --git a/src/me/mrCookieSlime/Slimefun/holograms/ReactorHologram.java b/src/me/mrCookieSlime/Slimefun/holograms/ReactorHologram.java index 1584d9da1..51a6ad6b9 100644 --- a/src/me/mrCookieSlime/Slimefun/holograms/ReactorHologram.java +++ b/src/me/mrCookieSlime/Slimefun/holograms/ReactorHologram.java @@ -9,15 +9,18 @@ import org.bukkit.entity.Entity; import me.mrCookieSlime.CSCoreLibPlugin.general.World.ArmorStandFactory; import me.mrCookieSlime.Slimefun.SlimefunStartup; +public final class ReactorHologram { + + private ReactorHologram() {} -public class ReactorHologram { - - public static ArmorStand getArmorStand(Location reactor) { + public static ArmorStand getArmorStand(Location reactor, boolean createIfNoneExists) { Location l = new Location(reactor.getWorld(), reactor.getX() + 0.5, reactor.getY() + 0.7, reactor.getZ() + 0.5); for (Entity n : l.getChunk().getEntities()) { if (n instanceof ArmorStand && l.distanceSquared(n.getLocation()) < 0.4D) return (ArmorStand) n; } + + if (!createIfNoneExists) return null; ArmorStand hologram = ArmorStandFactory.createHidden(l); hologram.setCustomNameVisible(false); @@ -27,14 +30,16 @@ public class ReactorHologram { public static void update(final Location l, final String name) { Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> { - ArmorStand hologram = getArmorStand(l); + ArmorStand hologram = getArmorStand(l, true); if (!hologram.isCustomNameVisible()) hologram.setCustomNameVisible(true); hologram.setCustomName(ChatColor.translateAlternateColorCodes('&', name)); }); } public static void remove(Location l) { - ArmorStand hologram = getArmorStand(l); - hologram.remove(); + Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> { + ArmorStand hologram = getArmorStand(l, false); + if (hologram != null) hologram.remove(); + }); } } diff --git a/src/me/mrCookieSlime/Slimefun/holograms/XPCollector.java b/src/me/mrCookieSlime/Slimefun/holograms/XPCollectorHologram.java similarity index 68% rename from src/me/mrCookieSlime/Slimefun/holograms/XPCollector.java rename to src/me/mrCookieSlime/Slimefun/holograms/XPCollectorHologram.java index 8c58f3a7c..bf0dd22c6 100644 --- a/src/me/mrCookieSlime/Slimefun/holograms/XPCollector.java +++ b/src/me/mrCookieSlime/Slimefun/holograms/XPCollectorHologram.java @@ -7,21 +7,30 @@ import org.bukkit.entity.Entity; import me.mrCookieSlime.CSCoreLibPlugin.general.World.ArmorStandFactory; -public class XPCollector { +public final class XPCollectorHologram { + + private XPCollectorHologram() {} private static final double offset = 1.2; - public static ArmorStand getArmorStand(Block hopper) { + public static ArmorStand getArmorStand(Block hopper, boolean createIfNoneExists) { Location l = new Location(hopper.getWorld(), hopper.getX() + 0.5, hopper.getY() + offset, hopper.getZ() + 0.5); for (Entity n: l.getChunk().getEntities()) { if (n instanceof ArmorStand && n.getCustomName() == null && l.distanceSquared(n.getLocation()) < 0.4D) return (ArmorStand) n; } + if (!createIfNoneExists) return null; + ArmorStand hologram = ArmorStandFactory.createHidden(l); hologram.setCustomNameVisible(false); hologram.setCustomName(null); return hologram; } + + public static void remove(Block b) { + ArmorStand hologram = getArmorStand(b, false); + if (hologram != null) hologram.remove(); + } } From 6c6b6326a742def57a5a91226849c4f48e75ca93 Mon Sep 17 00:00:00 2001 From: LinoxGH <54643600+LinoxGH@users.noreply.github.com> Date: Fri, 30 Aug 2019 02:01:43 +0300 Subject: [PATCH 051/169] Did the requested changes. --- src/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java b/src/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java index 6f0176a1e..f9337f48a 100644 --- a/src/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java +++ b/src/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java @@ -98,7 +98,7 @@ public final class SlimefunItems { /* Food */ public static final ItemStack FORTUNE_COOKIE = new CustomItem(Material.COOKIE, "&6Fortune Cookie", "", "&a&oTells you stuff about your Future :o"); - public static final ItemStack DIET_COOKIE = new CustomItem(Material.COOKIE, "&6Flying Cookie", "", "&a&oA boring diet cookie."); + public static final ItemStack DIET_COOKIE = new CustomItem(Material.COOKIE, "&6Diet Cookie", "", "&aA very &olightweight &r&acookie."); public static final ItemStack BEEF_JERKY = new CustomItem(Material.COOKED_BEEF, "&6Beef Jerky", "", "&a&oSaturating"); public static final ItemStack MAGIC_SUGAR = new CustomItem(Material.SUGAR, "&6Magic Sugar", "", "&a&oFeel the Power of Hermes!"); public static final ItemStack MONSTER_JERKY = new CustomItem(Material.ROTTEN_FLESH, "&6Monster Jerky", "", "&a&oNo longer hungry"); From 07271edc4708eeb1039e7dbf0a7ba10cf82dfe89 Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Fri, 30 Aug 2019 01:11:33 +0200 Subject: [PATCH 052/169] Reduced technical debt --- .../machines/CropGrowthAccelerator.java | 5 +++-- .../Slimefun/Setup/SlimefunManager.java | 14 +++++++----- .../Slimefun/Setup/SlimefunSetup.java | 6 +++-- .../Slimefun/SlimefunStartup.java | 3 +-- .../Slimefun/api/BlockStorage.java | 9 +++++--- .../Slimefun/api/network/Network.java | 15 +++++-------- .../Slimefun/holograms/CargoHologram.java | 4 +--- .../Slimefun/holograms/EnergyHologram.java | 4 +--- .../Slimefun/listeners/DamageListener.java | 2 +- .../Slimefun/listeners/ItemListener.java | 22 ++++++++++++------- .../Slimefun/listeners/TalismanListener.java | 3 ++- 11 files changed, 48 insertions(+), 39 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/CropGrowthAccelerator.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/CropGrowthAccelerator.java index 27c71c2f9..7cb6a9412 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/CropGrowthAccelerator.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/CropGrowthAccelerator.java @@ -1,6 +1,6 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines; -import java.util.HashMap; +import java.util.EnumMap; import java.util.Map; import org.bukkit.Material; @@ -32,7 +32,7 @@ public abstract class CropGrowthAccelerator extends SlimefunItem { private static final int[] border = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26}; - public static final Map crops = new HashMap<>(); + public static final Map crops = new EnumMap<>(Material.class); static { crops.put(Material.WHEAT, 7); @@ -41,6 +41,7 @@ public abstract class CropGrowthAccelerator extends SlimefunItem { crops.put(Material.NETHER_WART, 3); crops.put(Material.BEETROOTS, 3); crops.put(Material.COCOA, 8); + crops.put(Material.SWEET_BERRY_BUSH, 3); } public CropGrowthAccelerator(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) { diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunManager.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunManager.java index f96bc6a72..5748b5c94 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunManager.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunManager.java @@ -1,7 +1,7 @@ package me.mrCookieSlime.Slimefun.Setup; import java.util.ArrayList; -import java.util.HashMap; +import java.util.EnumMap; import java.util.List; import java.util.Map; @@ -23,7 +23,7 @@ public final class SlimefunManager { public static SlimefunStartup plugin; public static String PREFIX; - public static Map> drops = new HashMap<>(); + public static Map> drops = new EnumMap<>(EntityType.class); public static void registerArmorSet(ItemStack baseComponent, ItemStack[] items, String idSyntax, PotionEffect[][] effects, boolean special, boolean slimefun) { String[] components = new String[] {"_HELMET", "_CHESTPLATE", "_LEGGINGS", "_BOOTS"}; @@ -33,10 +33,12 @@ public final class SlimefunManager { recipes.add(new ItemStack[] {baseComponent, null, baseComponent, baseComponent, baseComponent, baseComponent, baseComponent, baseComponent, baseComponent}); recipes.add(new ItemStack[] {baseComponent, baseComponent, baseComponent, baseComponent, null, baseComponent, baseComponent, null, baseComponent}); recipes.add(new ItemStack[] {null, null, null, baseComponent, null, baseComponent, baseComponent, null, baseComponent}); + for (int i = 0; i < 4; i++) { - if ((effects.length - 1) >= i) if (effects[i].length > 0) { + if (i < effects.length && effects[i].length > 0) { new SlimefunArmorPiece(cat, items[i], idSyntax + components[i], RecipeType.ARMOR_FORGE, recipes.get(i), effects[i]).register(slimefun); - } else { + } + else { new SlimefunItem(cat, items[i], idSyntax + components[i], RecipeType.ARMOR_FORGE, recipes.get(i)).register(slimefun); } } @@ -50,10 +52,12 @@ public final class SlimefunManager { recipes.add(new ItemStack[] {baseComponent, null, baseComponent, baseComponent, baseComponent, baseComponent, baseComponent, baseComponent, baseComponent}); recipes.add(new ItemStack[] {baseComponent, baseComponent, baseComponent, baseComponent, null, baseComponent, baseComponent, null, baseComponent}); recipes.add(new ItemStack[] {null, null, null, baseComponent, null, baseComponent, baseComponent, null, baseComponent}); + for (int i = 0; i < 4; i++) { if (vanilla) { new VanillaItem(cat, items[i], idSyntax + components[i], RecipeType.ARMOR_FORGE, recipes.get(i)).register(slimefun); - } else { + } + else { new SlimefunItem(cat, items[i], idSyntax + components[i], RecipeType.ARMOR_FORGE, recipes.get(i)).register(slimefun); } } diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java index b1cf9e257..8cb9d9a27 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java @@ -2102,10 +2102,11 @@ public final class SlimefunSetup { SlimefunStartup.instance.getUtilities().blocks.add(block.getUniqueId()); } for (Entity n: ground.getChunk().getEntities()) { - if (n instanceof LivingEntity && n.getLocation().distance(ground) <= 2.0D && n.getUniqueId() != p.getUniqueId()) { + if (n instanceof LivingEntity && n.getLocation().distance(ground) <= 2.0D && !n.getUniqueId().equals(p.getUniqueId())) { Vector vector = n.getLocation().toVector().subtract(p.getLocation().toVector()).normalize().multiply(1.4); vector.setY(0.9); n.setVelocity(vector); + if (p.getWorld().getPVP()) { EntityDamageByEntityEvent event = new EntityDamageByEntityEvent(p, n, DamageCause.ENTITY_ATTACK, 6D); Bukkit.getPluginManager().callEvent(event); @@ -2414,9 +2415,10 @@ public final class SlimefunSetup { public boolean onRightClick(ItemUseEvent e, Player p, ItemStack item) { if (SlimefunManager.isItemSimiliar(item, SlimefunItems.SCROLL_OF_DIMENSIONAL_TELEPOSITION, true)) { for (Entity n: p.getNearbyEntities(10.0, 10.0, 10.0)) { - if (n instanceof LivingEntity && !(n instanceof ArmorStand) &&n.getUniqueId() != p.getUniqueId()) { + if (n instanceof LivingEntity && !(n instanceof ArmorStand) && !n.getUniqueId().equals(p.getUniqueId())) { float yaw = n.getLocation().getYaw() + 180.0F; if (yaw > 360.0F) yaw = yaw - 360.0F; + n.teleport(new Location(n.getWorld(), n.getLocation().getX(), n.getLocation().getY(), n.getLocation().getZ(), yaw, n.getLocation().getPitch())); } } diff --git a/src/me/mrCookieSlime/Slimefun/SlimefunStartup.java b/src/me/mrCookieSlime/Slimefun/SlimefunStartup.java index a6a9e38de..068576e8c 100644 --- a/src/me/mrCookieSlime/Slimefun/SlimefunStartup.java +++ b/src/me/mrCookieSlime/Slimefun/SlimefunStartup.java @@ -80,7 +80,6 @@ public final class SlimefunStartup extends JavaPlugin { public static SlimefunStartup instance; - private static PluginUtils utils; private static Config researches; private static Config items; private static Config whitelist; @@ -142,7 +141,7 @@ public final class SlimefunStartup extends JavaPlugin { System.out.println("[Slimefun] Loading Config..."); - utils = new PluginUtils(this); + PluginUtils utils = new PluginUtils(this); utils.setupConfig(); // Loading all extra configs diff --git a/src/me/mrCookieSlime/Slimefun/api/BlockStorage.java b/src/me/mrCookieSlime/Slimefun/api/BlockStorage.java index e20e3b891..5a61f55e1 100644 --- a/src/me/mrCookieSlime/Slimefun/api/BlockStorage.java +++ b/src/me/mrCookieSlime/Slimefun/api/BlockStorage.java @@ -89,7 +89,8 @@ public class BlockStorage { File f = new File(path_blocks + w.getName()); if (f.exists()) { - long total = f.listFiles().length, start = System.currentTimeMillis(); + long total = f.listFiles().length; + long start = System.currentTimeMillis(); long done = 0; long timestamp = System.currentTimeMillis(); long totalBlocks = 0; @@ -525,7 +526,9 @@ public class BlockStorage { if (item != null && item.isTicking()) { String chunk_string = locationToChunkString(l); if (value != null) { - Set locations = ticking_chunks.containsKey(chunk_string) ? ticking_chunks.get(chunk_string): new HashSet<>(); + Set locations = ticking_chunks.get(chunk_string); + if (locations == null) locations = new HashSet<>(); + locations.add(l); ticking_chunks.put(chunk_string, locations); if (!loaded_tickers.contains(chunk_string)) loaded_tickers.add(chunk_string); @@ -723,6 +726,6 @@ public class BlockStorage { public boolean hasUniversalInventory(Location l) { String id = checkID(l); - return id == null ? false: hasUniversalInventory(id); + return id != null && hasUniversalInventory(id); } } diff --git a/src/me/mrCookieSlime/Slimefun/api/network/Network.java b/src/me/mrCookieSlime/Slimefun/api/network/Network.java index b3a84cd24..1f5dd3e72 100644 --- a/src/me/mrCookieSlime/Slimefun/api/network/Network.java +++ b/src/me/mrCookieSlime/Slimefun/api/network/Network.java @@ -162,15 +162,12 @@ public abstract class Network { } public void display() { - SlimefunStartup.instance.getServer().getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, new Runnable() { - @Override - public void run() { - for(Location l: connectedLocations) { - try { - ParticleEffect.REDSTONE.display(l.clone().add(0.5, 0.5, 0.5), 0, 0, 0, 1, 1); - } catch(Exception e) { - e.printStackTrace(); - } + SlimefunStartup.instance.getServer().getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> { + for(Location l: connectedLocations) { + try { + ParticleEffect.REDSTONE.display(l.clone().add(0.5, 0.5, 0.5), 0, 0, 0, 1, 1); + } catch(Exception e) { + e.printStackTrace(); } } }); diff --git a/src/me/mrCookieSlime/Slimefun/holograms/CargoHologram.java b/src/me/mrCookieSlime/Slimefun/holograms/CargoHologram.java index 6c02b84c8..e34b796de 100644 --- a/src/me/mrCookieSlime/Slimefun/holograms/CargoHologram.java +++ b/src/me/mrCookieSlime/Slimefun/holograms/CargoHologram.java @@ -34,9 +34,7 @@ public final class CargoHologram { } if (!createIfNonExists) return null; - - ArmorStand hologram = ArmorStandFactory.createHidden(l); - return hologram; + else return ArmorStandFactory.createHidden(l); } } diff --git a/src/me/mrCookieSlime/Slimefun/holograms/EnergyHologram.java b/src/me/mrCookieSlime/Slimefun/holograms/EnergyHologram.java index 784233265..583d4cb30 100644 --- a/src/me/mrCookieSlime/Slimefun/holograms/EnergyHologram.java +++ b/src/me/mrCookieSlime/Slimefun/holograms/EnergyHologram.java @@ -41,9 +41,7 @@ public final class EnergyHologram { } if (!createIfNonExists) return null; - - ArmorStand hologram = ArmorStandFactory.createHidden(l); - return hologram; + else return ArmorStandFactory.createHidden(l); } } diff --git a/src/me/mrCookieSlime/Slimefun/listeners/DamageListener.java b/src/me/mrCookieSlime/Slimefun/listeners/DamageListener.java index 648546c60..38b1d906f 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/DamageListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/DamageListener.java @@ -64,7 +64,7 @@ public class DamageListener implements Listener { Soul.storeItem(e.getEntity().getUniqueId(), item); drops.remove(); } - else if (SlimefunItem.getByItem(removeEnchantments(item)) != null && SlimefunItem.getByItem(removeEnchantments(item)) instanceof SoulboundItem) { + else if (SlimefunItem.getByItem(removeEnchantments(item)) instanceof SoulboundItem) { Soul.storeItem(e.getEntity().getUniqueId(), item); drops.remove(); } diff --git a/src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java b/src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java index aaa2f32a0..29620130f 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java @@ -329,7 +329,8 @@ public class ItemListener implements Listener { } else if (item.getType() == Material.POTION) { SlimefunItem sfItem = SlimefunItem.getByItem(item); - if (sfItem != null && sfItem instanceof Juice) { + + if (sfItem instanceof Juice) { // Fix for Saturation on potions is no longer working for (PotionEffect effect : ((PotionMeta) item.getItemMeta()).getCustomEffects()) { if (effect.getType().equals(PotionEffectType.SATURATION)) { @@ -401,10 +402,10 @@ public class ItemListener implements Listener { } } else if (e.getEntity() instanceof Wither) { - SlimefunItem item = BlockStorage.check(e.getBlock()); - if (item != null) { - if (item.getID().equals("WITHER_PROOF_OBSIDIAN")) e.setCancelled(true); - else if (item.getID().equals("WITHER_PROOF_GLASS")) e.setCancelled(true); + String id = BlockStorage.checkID(e.getBlock()); + if (id != null) { + if (id.equals("WITHER_PROOF_OBSIDIAN")) e.setCancelled(true); + else if (id.equals("WITHER_PROOF_GLASS")) e.setCancelled(true); } } } @@ -414,11 +415,14 @@ public class ItemListener implements Listener { if (e.getRawSlot() == 2 && e.getWhoClicked() instanceof Player && e.getInventory().getType() == InventoryType.ANVIL) { ItemStack slot0 = e.getInventory().getContents()[0]; ItemStack slot1 = e.getInventory().getContents()[1]; + if (SlimefunManager.isItemSimiliar(slot0, SlimefunItems.ELYTRA, true)) return; + if (SlimefunItem.getByItem(slot0) != null && !SlimefunItem.isDisabled(slot0)) { e.setCancelled(true); Messages.local.sendTranslation((Player) e.getWhoClicked(), "anvil.not-working", true); - } else if (SlimefunItem.getByItem(slot1) != null && !SlimefunItem.isDisabled(slot1)) { + } + else if (SlimefunItem.getByItem(slot1) != null && !SlimefunItem.isDisabled(slot1)) { e.setCancelled(true); Messages.local.sendTranslation((Player) e.getWhoClicked(), "anvil.not-working", true); } @@ -427,7 +431,8 @@ public class ItemListener implements Listener { if (SlimefunManager.isItemSimiliar(slot0, SlimefunGuide.getItem(BookDesign.BOOK), true)) { e.setCancelled(true); Messages.local.sendTranslation((Player) e.getWhoClicked(), "anvil.not-working", true); - } else if (SlimefunManager.isItemSimiliar(slot0, SlimefunGuide.getItem(BookDesign.CHEST), true)) { + } + else if (SlimefunManager.isItemSimiliar(slot0, SlimefunGuide.getItem(BookDesign.CHEST), true)) { e.setCancelled(true); Messages.local.sendTranslation((Player) e.getWhoClicked(), "anvil.not-working", true); } @@ -435,7 +440,8 @@ public class ItemListener implements Listener { if (SlimefunManager.isItemSimiliar(slot1, SlimefunGuide.getItem(BookDesign.BOOK), true)) { e.setCancelled(true); Messages.local.sendTranslation((Player) e.getWhoClicked(), "anvil.not-working", true); - } else if (SlimefunManager.isItemSimiliar(slot1, SlimefunGuide.getItem(BookDesign.CHEST), true)) { + } + else if (SlimefunManager.isItemSimiliar(slot1, SlimefunGuide.getItem(BookDesign.CHEST), true)) { e.setCancelled(true); Messages.local.sendTranslation((Player) e.getWhoClicked(), "anvil.not-working", true); } diff --git a/src/me/mrCookieSlime/Slimefun/listeners/TalismanListener.java b/src/me/mrCookieSlime/Slimefun/listeners/TalismanListener.java index 6c0926fa7..015acfe20 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/TalismanListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/TalismanListener.java @@ -52,7 +52,8 @@ public class TalismanListener implements Listener { ((Player) ((EntityDamageByEntityEvent) e).getDamager()).playSound(((EntityDamageByEntityEvent) e).getDamager().getLocation(), Sound.ENTITY_ARROW_HIT_PLAYER, 0.7F, 0.7F); ((Player) ((EntityDamageByEntityEvent) e).getDamager()).addPotionEffect(new PotionEffect(PotionEffectType.HEAL, 1, 1)); } - if (e.getEntity() instanceof Player && !e.isCancelled()) { + + if (e.getEntity() instanceof Player) { if (e.getCause() == DamageCause.LAVA) Talisman.checkFor(e, SlimefunItem.getByID("LAVA_TALISMAN")); if (e.getCause() == DamageCause.DROWNING) Talisman.checkFor(e, SlimefunItem.getByID("WATER_TALISMAN")); if (e.getCause() == DamageCause.FALL) Talisman.checkFor(e, SlimefunItem.getByID("ANGEL_TALISMAN")); From f8ad7bd13cd5f42afa2e409b4de910a3b96a6a08 Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Fri, 30 Aug 2019 01:15:21 +0200 Subject: [PATCH 053/169] Hotfix --- .../Objects/SlimefunItem/machines/HologramProjector.java | 4 +++- .../Slimefun/Objects/SlimefunItem/machines/InfusedHopper.java | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/HologramProjector.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/HologramProjector.java index 6a59d470a..404262c91 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/HologramProjector.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/HologramProjector.java @@ -40,7 +40,7 @@ public class HologramProjector extends SlimefunItem { @Override public void register(boolean slimefun) { - super.register(slimefun, new ItemInteractionHandler() { + addItemHandler(new ItemInteractionHandler() { @Override public boolean onRightClick(ItemUseEvent e, Player p, ItemStack stack) { @@ -56,5 +56,7 @@ public class HologramProjector extends SlimefunItem { return true; } }); + + super.register(slimefun); } } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/InfusedHopper.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/InfusedHopper.java index 1cd226e12..e76d230cc 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/InfusedHopper.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/InfusedHopper.java @@ -42,7 +42,7 @@ public class InfusedHopper extends SlimefunItem { @Override public void register(boolean slimefun) { - super.register(slimefun, new BlockTicker() { + addItemHandler(new BlockTicker() { @Override public void uniqueTick() { @@ -76,5 +76,7 @@ public class InfusedHopper extends SlimefunItem { return true; } }); + + super.register(slimefun); } } From 6c18d368a192600473302b51f2cd8a21d42d8b82 Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Fri, 30 Aug 2019 01:19:54 +0200 Subject: [PATCH 054/169] Fixed Typo --- src/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java b/src/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java index f9337f48a..ab924d255 100644 --- a/src/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java +++ b/src/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java @@ -752,7 +752,7 @@ public final class SlimefunItems { public static final ItemStack TRASH_CAN = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMzJkNDEwNDJjZTk5MTQ3Y2MzOGNhYzllNDY3NDE1NzZlN2VlNzkxMjgzZTZmYWM4ZDMyOTJjYWUyOTM1ZjFmIn19fQ=="), "&3Trash Can", "", "&rWill destroy all Items put into it"); public static final ItemStack ELYTRA = new ItemStack(Material.ELYTRA); - public static final ItemStack ELYTRA_SCALE = new CustomItem(Material.FEATHER, "&bEyltra Scale"); + public static final ItemStack ELYTRA_SCALE = new CustomItem(Material.FEATHER, "&bElytra Scale"); public static final ItemStack INFUSED_ELYTRA = new CustomItem(ELYTRA, "&5Infused Elytra"); public static final ItemStack SOULBOUND_ELYTRA = new CustomItem(ELYTRA, "&cSoulbound Elytra"); From edade50abfe4fbefc85433e391a2d3539d6957b0 Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Fri, 30 Aug 2019 01:26:16 +0200 Subject: [PATCH 055/169] Fixed infinite Diet Cookie Glitch --- .../Slimefun/Setup/SlimefunSetup.java | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java index 7af2f5551..391ce7f8f 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java @@ -41,6 +41,7 @@ import org.bukkit.event.block.BlockPlaceEvent; import org.bukkit.event.entity.EntityDamageByEntityEvent; import org.bukkit.event.entity.EntityDamageEvent.DamageCause; import org.bukkit.event.entity.FoodLevelChangeEvent; +import org.bukkit.inventory.EquipmentSlot; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; @@ -206,8 +207,17 @@ public final class SlimefunSetup { e.setCancelled(true); int amount = item.getAmount(); - if (amount <= 1) item.setType(Material.AIR); - item.setAmount(amount - 1); + if (amount <= 1) { + if (e.getParentEvent().getHand() == EquipmentSlot.HAND) { + p.getInventory().setItemInMainHand(null); + } + else { + p.getInventory().setItemInOffHand(null); + } + } + else { + item.setAmount(amount - 1); + } p.sendMessage(ChatColor.YELLOW + "You feel so light..."); p.playSound(p.getLocation(), Sound.ENTITY_GENERIC_EAT, 1, 1); From 5fa929e6330c1d5d19f4c20a3d89e75623ca22bf Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Fri, 30 Aug 2019 01:40:18 +0200 Subject: [PATCH 056/169] Reduced technical debt --- .../SlimefunItem/abstractItems/ADrill.java | 3 ++- .../Objects/SlimefunItem/abstractItems/AFarm.java | 2 +- .../SlimefunItem/abstractItems/MachineHelper.java | 8 ++++---- .../SlimefunItem/machines/ChargingBench.java | 3 ++- .../SlimefunItem/machines/ElectricDustWasher.java | 3 ++- .../SlimefunItem/machines/ElectricGoldPan.java | 3 ++- .../SlimefunItem/machines/ElectricSmeltery.java | 3 ++- .../machines/HeatedPressureChamber.java | 15 ++++++++++----- .../Objects/SlimefunItem/machines/OilPump.java | 3 ++- .../Objects/SlimefunItem/machines/Refinery.java | 3 ++- .../Slimefun/Objects/tasks/JetBootsTask.java | 2 +- .../Slimefun/Objects/tasks/JetpackTask.java | 2 +- .../Slimefun/Objects/tasks/ParachuteTask.java | 2 +- .../Slimefun/Setup/SlimefunSetup.java | 2 +- src/me/mrCookieSlime/Slimefun/SlimefunGuide.java | 2 +- .../mrCookieSlime/Slimefun/api/BlockStorage.java | 14 ++++++-------- .../Slimefun/hooks/PlaceholderAPIHook.java | 2 +- 17 files changed, 41 insertions(+), 31 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/ADrill.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/ADrill.java index 2fb5449ec..83cc07a95 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/ADrill.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/ADrill.java @@ -109,7 +109,8 @@ public abstract class ADrill extends AContainer { @Override public void registerDefaultRecipes() {} - + + @Override protected void tick(Block b) { if (isProcessing(b)) { int timeleft = progress.get(b); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AFarm.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AFarm.java index 282acf5bd..b57c74b2d 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AFarm.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AFarm.java @@ -164,7 +164,7 @@ public abstract class AFarm extends SlimefunItem { public int[] getOutputSlots() { return new int[] {19, 20, 21, 22, 23, 24, 25}; } - + protected void tick(Block b) { if (ChargableBlock.isChargable(b)) { if (ChargableBlock.getCharge(b) < getEnergyConsumption()) return; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/MachineHelper.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/MachineHelper.java index aef06cf67..ec8112ec7 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/MachineHelper.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/MachineHelper.java @@ -12,14 +12,14 @@ public class MachineHelper { timeleft = String.valueOf(timeleft) + minutes + "m "; } l -= minutes * 60; - final int seconds = (int)l; + final int seconds = (int) l; timeleft = String.valueOf(timeleft) + seconds + "s"; return ChatColor.translateAlternateColorCodes('&', "&7" + timeleft + " left"); } public static String getProgress(int time, int total) { StringBuilder progress = new StringBuilder(); - float percentage = Math.round(((((total - time) * 100.0f) / total) * 100.0f) / 100.0f); + float percentage = Math.round(((((total - time) * 100.0F) / total) * 100.0F) / 100.0F); if (percentage < 16.0F) progress.append("&4"); else if (percentage < 32.0F) progress.append("&c"); @@ -47,7 +47,7 @@ public class MachineHelper { public static String getCoolant(int time, int total) { int passed = ((total - time) % 25); StringBuilder progress = new StringBuilder(); - float percentage = Math.round(((((25 - passed) * 100.0f) / 25) * 100.0f) / 100.0f); + float percentage = Math.round(((((25 - passed) * 100.0F) / 25) * 100.0F) / 100.0F); if (percentage < 33.0F) progress.append("&9"); else if (percentage < 66.0F) progress.append("&1"); @@ -71,7 +71,7 @@ public class MachineHelper { public static float getPercentage(int time, int total) { int passed = ((total - time) % 25); - return Math.round(((((25 - passed) * 100.0f) / 25) * 100.0f) / 100.0f); + return Math.round(((((25 - passed) * 100.0F) / 25) * 100.0F) / 100.0F); } public static short getDurability(ItemStack item, int timeleft, int max) { diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ChargingBench.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ChargingBench.java index 7e7872fc8..3fc221bdb 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ChargingBench.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ChargingBench.java @@ -62,7 +62,8 @@ public class ChargingBench extends AContainer { @Override public void registerDefaultRecipes() {} - + + @Override protected void tick(Block b) { if (ChargableBlock.getCharge(b) < getEnergyConsumption()) return; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricDustWasher.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricDustWasher.java index 1cd1463aa..7c169204b 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricDustWasher.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricDustWasher.java @@ -43,7 +43,8 @@ public abstract class ElectricDustWasher extends AContainer { public void registerDefaultRecipes() {} public abstract int getSpeed(); - + + @Override protected void tick(Block b) { if (isProcessing(b)) { int timeleft = progress.get(b); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricGoldPan.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricGoldPan.java index fede481dc..efcf6d781 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricGoldPan.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricGoldPan.java @@ -42,7 +42,8 @@ public abstract class ElectricGoldPan extends AContainer { public void registerDefaultRecipes() {} public abstract int getSpeed(); - + + @Override protected void tick(Block b) { if (isProcessing(b)) { int timeleft = progress.get(b); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricSmeltery.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricSmeltery.java index 6cc7c98bf..5424bbdf0 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricSmeltery.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricSmeltery.java @@ -125,7 +125,8 @@ public abstract class ElectricSmeltery extends AContainer { this.registerDefaultRecipes(); } - + + @Override protected void constructMenu(BlockMenuPreset preset) { for (int i : border) { preset.addItem(i, new CustomItem(new ItemStack(Material.GRAY_STAINED_GLASS_PANE), " "), diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/HeatedPressureChamber.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/HeatedPressureChamber.java index 17de16fb5..dc8641a00 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/HeatedPressureChamber.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/HeatedPressureChamber.java @@ -101,19 +101,23 @@ public abstract class HeatedPressureChamber extends AContainer { registerRecipe(60, new ItemStack[] {SlimefunItems.NETHER_ICE, SlimefunItems.PLUTONIUM}, new ItemStack[]{new CustomItem(SlimefunItems.ENRICHED_NETHER_ICE, 4)}); registerRecipe(45, new ItemStack[] {SlimefunItems.ENRICHED_NETHER_ICE}, new ItemStack[]{new CustomItem(SlimefunItems.NETHER_ICE_COOLANT_CELL, 8)}); } - + + @Override public String getInventoryTitle() { return "&cHeated Pressure Chamber"; } - + + @Override public ItemStack getProgressBar() { return new ItemStack(Material.FLINT_AND_STEEL); } - + + @Override public int[] getInputSlots() { return new int[] {19, 20}; } - + + @Override public int[] getOutputSlots() { return new int[] {24, 25}; } @@ -139,7 +143,8 @@ public abstract class HeatedPressureChamber extends AContainer { super.register(slimefun); } - + + @Override protected void tick(Block b) { if (isProcessing(b)) { int timeleft = progress.get(b); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/OilPump.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/OilPump.java index a2a2e1841..9ddf1086b 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/OilPump.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/OilPump.java @@ -82,7 +82,8 @@ public abstract class OilPump extends AContainer { @Override public void registerDefaultRecipes() {} - + + @Override protected void tick(Block b) { if (isProcessing(b)) { int timeleft = progress.get(b); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/Refinery.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/Refinery.java index f3e08fb1f..fb84f4f6c 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/Refinery.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/Refinery.java @@ -44,7 +44,8 @@ public abstract class Refinery extends AContainer { public String getMachineIdentifier() { return "REFINERY"; } - + + @Override protected void tick(Block b) { if (isProcessing(b)) { int timeleft = progress.get(b); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/tasks/JetBootsTask.java b/src/me/mrCookieSlime/Slimefun/Objects/tasks/JetBootsTask.java index 1f18d7fb8..a24f8cd6b 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/tasks/JetBootsTask.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/tasks/JetBootsTask.java @@ -32,7 +32,7 @@ public class JetBootsTask extends SlimefunTask { p.getWorld().playSound(p.getLocation(), Sound.ENTITY_TNT_PRIMED, (float) 0.25, 1); p.getWorld().playEffect(p.getLocation(), Effect.SMOKE, 1, 1); - p.setFallDistance(0.0f); + p.setFallDistance(0F); double gravity = 0.04; double offset = new Random().nextInt(2) == 1 ? accuracy: -accuracy; Vector vector = new Vector(p.getEyeLocation().getDirection().getX() * speed + offset, gravity, p.getEyeLocation().getDirection().getZ() * speed - offset); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/tasks/JetpackTask.java b/src/me/mrCookieSlime/Slimefun/Objects/tasks/JetpackTask.java index 789885279..be9e2366a 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/tasks/JetpackTask.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/tasks/JetpackTask.java @@ -32,7 +32,7 @@ public class JetpackTask extends SlimefunTask { p.getWorld().playSound(p.getLocation(), Sound.ENTITY_GENERIC_EXPLODE, (float) 0.25, 1); p.getWorld().playEffect(p.getLocation(), Effect.SMOKE, 1, 1); - p.setFallDistance(0.0f); + p.setFallDistance(0F); Vector vector = new Vector(0, 1, 0); vector.multiply(thrust); vector.add(p.getEyeLocation().getDirection().multiply(0.2F)); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/tasks/ParachuteTask.java b/src/me/mrCookieSlime/Slimefun/Objects/tasks/ParachuteTask.java index 9b5b32faa..9d25371cf 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/tasks/ParachuteTask.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/tasks/ParachuteTask.java @@ -16,7 +16,7 @@ public class ParachuteTask extends SlimefunTask { Vector vector = new Vector(0, 1, 0); vector.multiply(-0.1); p.setVelocity(vector); - p.setFallDistance(0.0f); + p.setFallDistance(0F); if (!p.isSneaking()) Bukkit.getScheduler().cancelTask(id); } diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java index 391ce7f8f..21668b901 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java @@ -966,7 +966,7 @@ public final class SlimefunSetup { p.setVelocity(p.getEyeLocation().getDirection().multiply(4)); p.getWorld().playSound(p.getLocation(), Sound.ENTITY_TNT_PRIMED, 1, 1); p.getWorld().playEffect(p.getLocation(), Effect.SMOKE, 1); - p.setFallDistance(0.0f); + p.setFallDistance(0F); } else { Messages.local.sendTranslation(p, "messages.hungry", true); diff --git a/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java b/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java index 770b58408..a1aa586c1 100644 --- a/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java +++ b/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java @@ -423,7 +423,7 @@ public final class SlimefunGuide { ); List categories = Slimefun.current_categories; - List handlers = Slimefun.guide_handlers.values().stream().flatMap(list -> list.stream()).collect(Collectors.toList()); + List handlers = Slimefun.guide_handlers.values().stream().flatMap(List::stream).collect(Collectors.toList()); int index = 9; int pages = 1; diff --git a/src/me/mrCookieSlime/Slimefun/api/BlockStorage.java b/src/me/mrCookieSlime/Slimefun/api/BlockStorage.java index 5a61f55e1..438e187d7 100644 --- a/src/me/mrCookieSlime/Slimefun/api/BlockStorage.java +++ b/src/me/mrCookieSlime/Slimefun/api/BlockStorage.java @@ -104,7 +104,7 @@ public class BlockStorage { } else if (file.getName().endsWith(".sfb")) { if (timestamp + SlimefunStartup.instance.getSettings().BLOCK_LOADING_INFO_DELAY < System.currentTimeMillis()) { - System.out.println("[Slimefun] Loading Blocks... " + Math.round((((done * 100.0f) / total) * 100.0f) / 100.0f) + "% done (\"" + w.getName() + "\")"); + System.out.println("[Slimefun] Loading Blocks... " + Math.round((((done * 100.0F) / total) * 100.0F) / 100.0F) + "% done (\"" + w.getName() + "\")"); timestamp = System.currentTimeMillis(); } @@ -318,9 +318,9 @@ public class BlockStorage { } public static Config getLocationInfo(Location l) { - BlockStorage storage = getStorage(l.getWorld()); - Config cfg = storage.storage.get(l); - return cfg == null ? new BlockInfoConfig() : cfg; + BlockStorage storage = getStorage(l.getWorld()); + Config cfg = storage.storage.get(l); + return cfg == null ? new BlockInfoConfig() : cfg; } private static Map parseJSON(String json) { @@ -374,7 +374,7 @@ public class BlockStorage { } public static String getLocationInfo(Location l, String key) { - return getBlockInfo(l).getString(key); + return getLocationInfo(l).getString(key); } public static void addBlockInfo(Location l, String key, String value) { @@ -616,9 +616,7 @@ public class BlockStorage { if (menu != null) { for (HumanEntity human : new ArrayList<>(menu.toInventory().getViewers())) { // Prevents "java.lang.IllegalStateException: Asynchronous entity add!" when closing inventory while holding an item - Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> { - human.closeInventory(); - }); + Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> human.closeInventory()); } inventories.get(l).delete(l); diff --git a/src/me/mrCookieSlime/Slimefun/hooks/PlaceholderAPIHook.java b/src/me/mrCookieSlime/Slimefun/hooks/PlaceholderAPIHook.java index 27ca09aba..8013f0475 100644 --- a/src/me/mrCookieSlime/Slimefun/hooks/PlaceholderAPIHook.java +++ b/src/me/mrCookieSlime/Slimefun/hooks/PlaceholderAPIHook.java @@ -42,7 +42,7 @@ public class PlaceholderAPIHook extends PlaceholderExpansion { public String onRequest(OfflinePlayer p, String params) { if (params.equals("researches_total_xp_levels_spent")) { Stream stream = PlayerProfile.fromUUID(p.getUniqueId()).getResearches().stream(); - return String.valueOf(stream.mapToInt(r -> r.getCost()).sum()); + return String.valueOf(stream.mapToInt(Research::getCost).sum()); } if (params.equals("researches_total_researches_unlocked")) { From 2e89de4d3adee74184f515440e1122b8a56d8660 Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Fri, 30 Aug 2019 09:21:49 +0200 Subject: [PATCH 057/169] Code cleanup --- .../Objects/SlimefunItem/SlimefunGadget.java | 16 +-- .../Slimefun/Setup/SlimefunSetup.java | 10 +- .../mrCookieSlime/Slimefun/SlimefunGuide.java | 72 +++++------- .../Slimefun/SlimefunStartup.java | 6 +- .../AncientAltarListener.java | 12 +- .../ancient_altar/RitualAnimation.java | 1 - .../Slimefun/api/TickerTask.java | 109 +++++++++--------- .../Slimefun/api/energy/EnergyNet.java | 6 +- .../Slimefun/listeners/BackpackListener.java | 9 +- .../Slimefun/listeners/ItemListener.java | 42 +++---- .../listeners/PlayerQuitListener.java | 3 +- .../Slimefun/utils/Utilities.java | 2 + 12 files changed, 129 insertions(+), 159 deletions(-) rename src/me/mrCookieSlime/Slimefun/{listeners => ancient_altar}/AncientAltarListener.java (95%) diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunGadget.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunGadget.java index 1da6bd55c..7a1f63ca9 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunGadget.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunGadget.java @@ -11,28 +11,28 @@ import org.bukkit.inventory.ItemStack; public class SlimefunGadget extends SlimefunItem { private List recipes; - private List display_recipes; + private List displayRecipes; public SlimefunGadget(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe, ItemStack[] machineRecipes) { super(category, item, id, recipeType, recipe); this.recipes = new ArrayList<>(); - this.display_recipes = new ArrayList<>(); + this.displayRecipes = new ArrayList<>(); for (ItemStack i: machineRecipes) { this.recipes.add(new ItemStack[] {i}); - this.display_recipes.add(i); + this.displayRecipes.add(i); } } public SlimefunGadget(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe, ItemStack[] machineRecipes, String[] keys, Object[] values) { super(category, item, id, recipeType, recipe, keys, values); this.recipes = new ArrayList<>(); - this.display_recipes = new ArrayList<>(); + this.displayRecipes = new ArrayList<>(); for (ItemStack i: machineRecipes) { this.recipes.add(new ItemStack[] {i}); - this.display_recipes.add(i); + this.displayRecipes.add(i); } } @@ -41,13 +41,13 @@ public class SlimefunGadget extends SlimefunItem { } public List getDisplayRecipes() { - return this.display_recipes; + return this.displayRecipes; } public void addRecipe(ItemStack input, ItemStack output) { this.recipes.add(new ItemStack[] {input}); this.recipes.add(new ItemStack[] {output}); - this.display_recipes.add(input); - this.display_recipes.add(output); + this.displayRecipes.add(input); + this.displayRecipes.add(output); } } diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java index 21668b901..699168fc2 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java @@ -149,6 +149,7 @@ import me.mrCookieSlime.Slimefun.Objects.handlers.BowShootHandler; import me.mrCookieSlime.Slimefun.Objects.handlers.ItemInteractionHandler; import me.mrCookieSlime.Slimefun.Objects.handlers.MultiBlockInteractionHandler; import me.mrCookieSlime.Slimefun.Objects.tasks.RainbowTicker; +import me.mrCookieSlime.Slimefun.ancient_altar.AncientAltarListener; import me.mrCookieSlime.Slimefun.androids.AndroidType; import me.mrCookieSlime.Slimefun.androids.ProgrammableAndroid; import me.mrCookieSlime.Slimefun.api.BlockStorage; @@ -161,7 +162,6 @@ import me.mrCookieSlime.Slimefun.api.item_transport.CargoNet; import me.mrCookieSlime.Slimefun.holograms.CargoHologram; import me.mrCookieSlime.Slimefun.holograms.EnergyHologram; import me.mrCookieSlime.Slimefun.holograms.ReactorHologram; -import me.mrCookieSlime.Slimefun.listeners.AncientAltarListener; import me.mrCookieSlime.Slimefun.utils.Utilities; public final class SlimefunSetup { @@ -2417,9 +2417,7 @@ public final class SlimefunSetup { 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(SlimefunStartup.instance, () -> { - d.getInventory().removeItem(e.getItem()); - }, 2L); + Bukkit.getScheduler().runTaskLater(SlimefunStartup.instance, () -> d.getInventory().removeItem(e.getItem()), 2L); } } } @@ -2428,9 +2426,7 @@ public final class SlimefunSetup { 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(SlimefunStartup.instance, () -> { - d.getInventory().removeItem(e.getItem()); - }, 2L); + Bukkit.getScheduler().runTaskLater(SlimefunStartup.instance, () -> d.getInventory().removeItem(e.getItem()), 2L); } } } diff --git a/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java b/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java index a1aa586c1..6f729023a 100644 --- a/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java +++ b/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java @@ -3,7 +3,6 @@ package me.mrCookieSlime.Slimefun; import java.util.ArrayList; import java.util.Arrays; import java.util.Date; -import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; @@ -57,7 +56,6 @@ public final class SlimefunGuide { private SlimefunGuide() {} - public static Map> history = new HashMap<>(); public static int month = 0; public static int issues = 0; @@ -273,7 +271,7 @@ public final class SlimefunGuide { public static void openGuide(Player p, boolean book) { if (!SlimefunStartup.getWhitelist().getBoolean(p.getWorld().getName() + ".enabled")) return; if (!SlimefunStartup.getWhitelist().getBoolean(p.getWorld().getName() + ".enabled-items.SLIMEFUN_GUIDE")) return; - if (!history.containsKey(p.getUniqueId())) openMainMenu(p, true, book, 1); + if (!getHistory().containsKey(p.getUniqueId())) openMainMenu(p, true, book, 1); else { Object last = getLastEntry(p, false); if (last instanceof Category) openCategory(p, (Category) last, true, 1, book); @@ -282,7 +280,7 @@ public final class SlimefunGuide { else displayItem(p, (ItemStack) last, false, book, 0); } } - + public static void openMainMenu(final Player p, final boolean survival, final boolean book, final int selected_page) { if (survival) clearHistory(p.getUniqueId()); @@ -354,9 +352,7 @@ public final class SlimefunGuide { actions.add(new PlayerRunnable(1) { @Override public void run(final Player p) { - Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> { - openCategory(p, category, survival, 1, book); - }, 1L); + Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> openCategory(p, category, survival, 1, book), 1L); } }); } @@ -367,9 +363,7 @@ public final class SlimefunGuide { actions.add(new PlayerRunnable(1) { @Override public void run(final Player p) { - Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> { - openCategory(p, category, survival, 1, book); - }, 1L); + Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> openCategory(p, category, survival, 1, book), 1L); } }); } @@ -580,16 +574,12 @@ public final class SlimefunGuide { if (p.getGameMode() == GameMode.CREATIVE) { research.unlock(p, true); - Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> { - openCategory(p, category, survival, selected_page, book); - }, 1L); + Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> openCategory(p, category, survival, selected_page, book), 1L); } else { research.unlock(p, false); - Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> { - openCategory(p, category, survival, selected_page, book); - }, 103L); + Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> openCategory(p, category, survival, selected_page, book), 103L); } } } else Messages.local.sendTranslation(p, "messages.not-enough-xp", true); @@ -644,9 +634,7 @@ public final class SlimefunGuide { page.addClickEvent(new PlayerRunnable(2) { @Override public void run(final Player p) { - Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> { - openMainMenu(p, survival, true, 1); - }, 1L); + Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> openMainMenu(p, survival, true, 1), 1L); } }); pages.add(page); @@ -658,17 +646,13 @@ public final class SlimefunGuide { final ChestMenu menu = new ChestMenu("Slimefun Guide"); menu.setEmptySlotsClickable(false); - menu.addMenuOpeningHandler( - pl -> pl.playSound(pl.getLocation(), Sound.ENTITY_BAT_TAKEOFF, 0.7F, 0.7F) - ); + menu.addMenuOpeningHandler(pl -> pl.playSound(pl.getLocation(), Sound.ENTITY_BAT_TAKEOFF, 0.7F, 0.7F)); int index = 9; final int pages = (category.getItems().size() - 1) / category_size + 1; for (int i = 0; i < 4; i++) { menu.addItem(i, new CustomItem(new ItemStack(Material.GRAY_STAINED_GLASS_PANE), " ")); - menu.addMenuClickHandler(i, - (pl, slot, item, action) -> false - ); + menu.addMenuClickHandler(i, (pl, slot, item, action) -> false); } menu.addItem(4, new CustomItem(new ItemStack(Material.ENCHANTED_BOOK), "&7\u21E6 Back")); @@ -679,16 +663,12 @@ public final class SlimefunGuide { for (int i = 5; i < 9; i++) { menu.addItem(i, new CustomItem(new ItemStack(Material.GRAY_STAINED_GLASS_PANE), " ")); - menu.addMenuClickHandler(i, - (pl, slot, item, action) -> false - ); + menu.addMenuClickHandler(i, (pl, slot, item, action) -> false); } for (int i = 45; i < 54; i++) { menu.addItem(i, new CustomItem(new ItemStack(Material.GRAY_STAINED_GLASS_PANE), " ")); - menu.addMenuClickHandler(i, - (pl, slot, item, action) -> false - ); + menu.addMenuClickHandler(i, (pl, slot, item, action) -> false); } menu.addItem(46, new CustomItem(new ItemStack(Material.LIME_STAINED_GLASS_PANE), "&r\u21E6 Previous Page", "", "&7(" + selected_page + " / " + pages + ")")); @@ -736,15 +716,15 @@ public final class SlimefunGuide { } else { research.unlock(pl, false); - Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> { - openCategory(pl, category, survival, selected_page, book); - }, 103L); + Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> openCategory(pl, category, survival, selected_page, book), 103L); } } - } else Messages.local.sendTranslation(pl, "messages.not-enough-xp", true); + } + else Messages.local.sendTranslation(pl, "messages.not-enough-xp", true); } return false; }); + index++; } else { @@ -775,22 +755,22 @@ public final class SlimefunGuide { public static void addToHistory(Player p, Object obj) { List list = new ArrayList<>(); - if (history.containsKey(p.getUniqueId())) list = history.get(p.getUniqueId()); + if (getHistory().containsKey(p.getUniqueId())) list = getHistory().get(p.getUniqueId()); list.add(obj); - history.put(p.getUniqueId(), list); + getHistory().put(p.getUniqueId(), list); } private static Object getLastEntry(Player p, boolean remove) { List list = new ArrayList<>(); - if (history.containsKey(p.getUniqueId())) list = history.get(p.getUniqueId()); + if (getHistory().containsKey(p.getUniqueId())) list = getHistory().get(p.getUniqueId()); if (remove && !list.isEmpty()) { Object obj = list.get(list.size() - 1); list.remove(obj); } - if (list.isEmpty()) history.remove(p.getUniqueId()); - else history.put(p.getUniqueId(), list); + if (list.isEmpty()) getHistory().remove(p.getUniqueId()); + else getHistory().put(p.getUniqueId(), list); return list.isEmpty() ? null: list.get(list.size() - 1); } @@ -863,7 +843,7 @@ public final class SlimefunGuide { if (addToHistory) addToHistory(p, sfItem != null ? sfItem: item); - if (history.containsKey(p.getUniqueId()) && history.get(p.getUniqueId()).size() > 1) { + if (getHistory().containsKey(p.getUniqueId()) && getHistory().get(p.getUniqueId()).size() > 1) { menu.addItem(0, new CustomItem(new ItemStack(Material.ENCHANTED_BOOK), "&7\u21E6 Back", "", "&rLeft Click: &7Go back to previous Page", "&rShift + left Click: &7Go back to Main Menu")); menu.addMenuClickHandler(0, (pl, slot, itemstack, action) -> { if (action.isShiftClicked()) openMainMenu(p, true, book, 1); @@ -1041,9 +1021,7 @@ public final class SlimefunGuide { im.setLore(lore); fItem.setItemMeta(im); menu.addItem(slot, fItem); - menu.addMenuClickHandler(slot, (pl, slotn, itemstack, action) -> { - return false; - }); + menu.addMenuClickHandler(slot, (pl, slotn, itemstack, action) -> false); slot++; } } @@ -1052,8 +1030,12 @@ public final class SlimefunGuide { menu.open(p); } + private static Map> getHistory() { + return SlimefunStartup.instance.getUtilities().guideHistory; + } + public static void clearHistory(UUID uuid) { - history.remove(uuid); + getHistory().remove(uuid); } private static String getTimeLeft(int l) { diff --git a/src/me/mrCookieSlime/Slimefun/SlimefunStartup.java b/src/me/mrCookieSlime/Slimefun/SlimefunStartup.java index 068576e8c..5663ace8d 100644 --- a/src/me/mrCookieSlime/Slimefun/SlimefunStartup.java +++ b/src/me/mrCookieSlime/Slimefun/SlimefunStartup.java @@ -35,6 +35,7 @@ import me.mrCookieSlime.Slimefun.Setup.MiscSetup; import me.mrCookieSlime.Slimefun.Setup.ResearchSetup; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.Setup.SlimefunSetup; +import me.mrCookieSlime.Slimefun.ancient_altar.AncientAltarListener; import me.mrCookieSlime.Slimefun.api.BlockStorage; import me.mrCookieSlime.Slimefun.api.PlayerProfile; import me.mrCookieSlime.Slimefun.api.Slimefun; @@ -53,7 +54,6 @@ import me.mrCookieSlime.Slimefun.commands.SlimefunTabCompleter; import me.mrCookieSlime.Slimefun.hooks.SlimefunHooks; import me.mrCookieSlime.Slimefun.hooks.github.GitHubConnector; import me.mrCookieSlime.Slimefun.hooks.github.GitHubSetup; -import me.mrCookieSlime.Slimefun.listeners.AncientAltarListener; import me.mrCookieSlime.Slimefun.listeners.AndroidKillingListener; import me.mrCookieSlime.Slimefun.listeners.ArmorListener; import me.mrCookieSlime.Slimefun.listeners.AutonomousToolsListener; @@ -326,7 +326,7 @@ public final class SlimefunStartup extends JavaPlugin { if (ticker != null) { // Finishes all started movements/removals of block data - ticker.HALTED = true; + ticker.halted = true; ticker.run(); } @@ -374,7 +374,6 @@ public final class SlimefunStartup extends JavaPlugin { SlimefunItem.map_id = null; SlimefunItem.handlers = null; SlimefunItem.radioactive = null; - SlimefunGuide.history = null; SlimefunCommand.arguments = null; SlimefunCommand.descriptions = null; SlimefunCommand.tabs = null; @@ -393,7 +392,6 @@ public final class SlimefunStartup extends JavaPlugin { EnergyNet.machines_storage = null; CargoNet.faces = null; BlockStorage.universal_inventories = null; - TickerTask.block_timings = null; PlayerProfile.profiles = null; OreWasher.items = null; diff --git a/src/me/mrCookieSlime/Slimefun/listeners/AncientAltarListener.java b/src/me/mrCookieSlime/Slimefun/ancient_altar/AncientAltarListener.java similarity index 95% rename from src/me/mrCookieSlime/Slimefun/listeners/AncientAltarListener.java rename to src/me/mrCookieSlime/Slimefun/ancient_altar/AncientAltarListener.java index b2b8081ab..56ae6592f 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/AncientAltarListener.java +++ b/src/me/mrCookieSlime/Slimefun/ancient_altar/AncientAltarListener.java @@ -1,4 +1,4 @@ -package me.mrCookieSlime.Slimefun.listeners; +package me.mrCookieSlime.Slimefun.ancient_altar; import java.util.ArrayList; import java.util.HashSet; @@ -32,8 +32,6 @@ import me.mrCookieSlime.CSCoreLibPlugin.general.String.StringUtils; import me.mrCookieSlime.Slimefun.SlimefunStartup; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Setup.Messages; -import me.mrCookieSlime.Slimefun.ancient_altar.Pedestals; -import me.mrCookieSlime.Slimefun.ancient_altar.RitualAnimation; import me.mrCookieSlime.Slimefun.api.BlockStorage; import me.mrCookieSlime.Slimefun.utils.Utilities; @@ -48,7 +46,7 @@ public class AncientAltarListener implements Listener { } private List altars = new ArrayList<>(); - private Set removed_items = new HashSet<>(); + private Set removedItems = new HashSet<>(); @EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true) public void onInteract(PlayerInteractEvent e) { @@ -71,12 +69,12 @@ public class AncientAltarListener implements Listener { } insertItem(e.getPlayer(), b); } - else if (!removed_items.contains(stack.getUniqueId())) { + else if (!removedItems.contains(stack.getUniqueId())) { final UUID uuid = stack.getUniqueId(); - removed_items.add(uuid); + removedItems.add(uuid); SlimefunStartup.instance.getServer().getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> { - removed_items.remove(uuid); + removedItems.remove(uuid); }, 30L); stack.remove(); diff --git a/src/me/mrCookieSlime/Slimefun/ancient_altar/RitualAnimation.java b/src/me/mrCookieSlime/Slimefun/ancient_altar/RitualAnimation.java index 4fb5e476e..5939e66de 100644 --- a/src/me/mrCookieSlime/Slimefun/ancient_altar/RitualAnimation.java +++ b/src/me/mrCookieSlime/Slimefun/ancient_altar/RitualAnimation.java @@ -6,7 +6,6 @@ import java.util.List; import java.util.Map; import me.mrCookieSlime.Slimefun.SlimefunStartup; -import me.mrCookieSlime.Slimefun.listeners.AncientAltarListener; import me.mrCookieSlime.Slimefun.utils.Utilities; import org.bukkit.Effect; diff --git a/src/me/mrCookieSlime/Slimefun/api/TickerTask.java b/src/me/mrCookieSlime/Slimefun/api/TickerTask.java index dddc8159f..ad240bff5 100644 --- a/src/me/mrCookieSlime/Slimefun/api/TickerTask.java +++ b/src/me/mrCookieSlime/Slimefun/api/TickerTask.java @@ -23,7 +23,7 @@ import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker; public class TickerTask implements Runnable { - public boolean HALTED = false; + public boolean halted = false; public Map move = new HashMap<>(); public Map delete = new HashMap<>(); @@ -34,15 +34,14 @@ public class TickerTask implements Runnable { private int chunks = 0; private int machines = 0; private long time = 0; - private Map map_chunk = new HashMap<>(); - private Map map_machine = new HashMap<>(); - private Map map_machinetime = new HashMap<>(); - private Map map_chunktime = new HashMap<>(); - private Set skipped_chunks = new HashSet<>(); - - public static Map block_timings = new HashMap<>(); - public static Map bugged_blocks = new HashMap<>(); + private Map chunkItemCount = new HashMap<>(); + private Map machineCount = new HashMap<>(); + private Map machineTimings = new HashMap<>(); + private Map chunkTimings = new HashMap<>(); + private Set chunksSkipped = new HashSet<>(); + private Map buggedBlocks = new HashMap<>(); + public Map blockTimings = new HashMap<>(); @Override public void run() { @@ -51,16 +50,16 @@ public class TickerTask implements Runnable { skipped = 0; chunks = 0; machines = 0; - map_chunk.clear(); - map_machine.clear(); + chunkItemCount.clear(); + machineCount.clear(); time = 0; - map_chunktime.clear(); - skipped_chunks.clear(); - map_machinetime.clear(); - block_timings.clear(); + chunkTimings.clear(); + chunksSkipped.clear(); + machineTimings.clear(); + blockTimings.clear(); - final Map bugged = new HashMap<>(bugged_blocks); - bugged_blocks.clear(); + final Map bugged = new HashMap<>(buggedBlocks); + buggedBlocks.clear(); Map remove = new HashMap<>(delete); @@ -69,7 +68,7 @@ public class TickerTask implements Runnable { delete.remove(entry.getKey()); } - if (!HALTED) { + if (!halted) { for (final String c: BlockStorage.getTickingChunks()) { long timestamp2 = System.currentTimeMillis(); chunks++; @@ -92,14 +91,14 @@ public class TickerTask implements Runnable { long timestamp3 = System.currentTimeMillis(); item.getBlockTicker().tick(b, item, BlockStorage.getLocationInfo(l)); - Long machinetime = map_machinetime.get(item.getID()); - Integer chunk = map_chunk.get(c); - Integer machine = map_machine.get(item.getID()); + Long machinetime = machineTimings.get(item.getID()); + Integer chunk = chunkItemCount.get(c); + Integer machine = machineCount.get(item.getID()); - map_machinetime.put(item.getID(), (machinetime != null ? machinetime: 0) + (System.currentTimeMillis() - timestamp3)); - map_chunk.put(c, (chunk != null ? chunk: 0) + 1); - map_machine.put(item.getID(), (machine != null ? machine: 0) + 1); - block_timings.put(l, System.currentTimeMillis() - timestamp3); + machineTimings.put(item.getID(), (machinetime != null ? machinetime: 0) + (System.currentTimeMillis() - timestamp3)); + chunkItemCount.put(c, (chunk != null ? chunk: 0) + 1); + machineCount.put(item.getID(), (machine != null ? machine: 0) + 1); + blockTimings.put(l, System.currentTimeMillis() - timestamp3); } catch (Exception x) { int errors = 0; if (bugged.containsKey(l)) errors = bugged.get(l); @@ -112,7 +111,7 @@ public class TickerTask implements Runnable { System.err.println("[Slimefun] Exception caught while ticking a Block:" + x.getClass().getName()); System.err.println("[Slimefun] X: " + l.getBlockX() + " Y: " + l.getBlockY() + " Z: " + l.getBlockZ()); - bugged_blocks.put(l, errors); + buggedBlocks.put(l, errors); } else if (errors == 4) { System.err.println("[Slimefun] X: " + l.getBlockX() + " Y: " + l.getBlockY() + " Z: " + l.getBlockZ() + "(" + item.getID() + ")"); @@ -127,7 +126,7 @@ public class TickerTask implements Runnable { }); } else { - bugged_blocks.put(l, errors); + buggedBlocks.put(l, errors); } } }); @@ -136,10 +135,10 @@ public class TickerTask implements Runnable { long timestamp3 = System.currentTimeMillis(); item.getBlockTicker().tick(b, item, BlockStorage.getLocationInfo(l)); - map_machinetime.put(item.getID(), (map_machinetime.containsKey(item.getID()) ? map_machinetime.get(item.getID()): 0) + (System.currentTimeMillis() - timestamp3)); - map_chunk.put(c, (map_chunk.containsKey(c) ? map_chunk.get(c): 0) + 1); - map_machine.put(item.getID(), (map_machine.containsKey(item.getID()) ? map_machine.get(item.getID()): 0) + 1); - block_timings.put(l, System.currentTimeMillis() - timestamp3); + machineTimings.put(item.getID(), (machineTimings.containsKey(item.getID()) ? machineTimings.get(item.getID()): 0) + (System.currentTimeMillis() - timestamp3)); + chunkItemCount.put(c, (chunkItemCount.containsKey(c) ? chunkItemCount.get(c): 0) + 1); + machineCount.put(item.getID(), (machineCount.containsKey(item.getID()) ? machineCount.get(item.getID()): 0) + 1); + blockTimings.put(l, System.currentTimeMillis() - timestamp3); } tickers.add(item.getBlockTicker()); } catch (Exception x) { @@ -154,7 +153,7 @@ public class TickerTask implements Runnable { System.err.println("[Slimefun] Exception caught while ticking a Block:" + x.getClass().getName()); System.err.println("[Slimefun] X: " + l.getBlockX() + " Y: " + l.getBlockY() + " Z: " + l.getBlockZ()); - bugged_blocks.put(l, errors); + buggedBlocks.put(l, errors); } else if (errors == 4) { System.err.println("[Slimefun] X: " + l.getBlockX() + " Y: " + l.getBlockY() + " Z: " + l.getBlockZ() + "(" + item.getID() + ")"); @@ -169,7 +168,7 @@ public class TickerTask implements Runnable { }); } else { - bugged_blocks.put(l, errors); + buggedBlocks.put(l, errors); } } } @@ -177,13 +176,13 @@ public class TickerTask implements Runnable { } else { skipped += BlockStorage.getTickingLocations(c).size(); - skipped_chunks.add(c); + chunksSkipped.add(c); chunks--; break blocks; } } - map_chunktime.put(c, System.currentTimeMillis() - timestamp2); + chunkTimings.put(c, System.currentTimeMillis() - timestamp2); } } @@ -207,7 +206,7 @@ public class TickerTask implements Runnable { public void info(CommandSender sender) { sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&2== &aSlimefun Diagnostic Tool &2==")); - sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&6Halted: &e&l" + String.valueOf(HALTED).toUpperCase())); + sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&6Halted: &e&l" + String.valueOf(halted).toUpperCase())); sender.sendMessage(""); sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&6Impact: &e" + time + "ms / 50-750ms")); sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&6Ticked Chunks: &e" + chunks)); @@ -222,8 +221,8 @@ public class TickerTask implements Runnable { StringBuilder hover = new StringBuilder(); int hidden = 0; - for (Map.Entry entry: map_machine.entrySet()) { - long timings = map_machinetime.get(entry.getKey()); + for (Map.Entry entry: machineCount.entrySet()) { + long timings = machineTimings.get(entry.getKey()); if (timings > 0) hover.append("\n&c" + entry.getKey() + " - " + entry.getValue()+ "x &7(" + timings + "ms)"); else hidden++; } @@ -240,8 +239,8 @@ public class TickerTask implements Runnable { else { int hidden = 0; - for (Map.Entry entry: map_machine.entrySet()) { - long timings = map_machinetime.get(entry.getKey()); + for (Map.Entry entry: machineCount.entrySet()) { + long timings = machineTimings.get(entry.getKey()); if (timings > 0) sender.sendMessage(ChatColor.translateAlternateColorCodes('&', " &e" + entry.getKey() + " - " + entry.getValue()+ "x &7(" + timings + "ms)")); else hidden++; } @@ -258,9 +257,9 @@ public class TickerTask implements Runnable { StringBuilder hover = new StringBuilder(); int hidden = 0; - for (Map.Entry entry: map_chunktime.entrySet()) { - if (!skipped_chunks.contains(entry.getKey())) { - if (entry.getValue() > 0) hover.append("\n&c" + entry.getKey().replace("CraftChunk", "") + " - " + (map_chunk.containsKey(entry.getKey()) ? map_chunk.get(entry.getKey()): 0) + "x &7(" + entry.getValue() + "ms)"); + for (Map.Entry entry: chunkTimings.entrySet()) { + if (!chunksSkipped.contains(entry.getKey())) { + if (entry.getValue() > 0) hover.append("\n&c" + entry.getKey().replace("CraftChunk", "") + " - " + (chunkItemCount.containsKey(entry.getKey()) ? chunkItemCount.get(entry.getKey()): 0) + "x &7(" + entry.getValue() + "ms)"); else hidden++; } } @@ -276,9 +275,9 @@ public class TickerTask implements Runnable { } else { int hidden = 0; - for (Map.Entry entry: map_chunktime.entrySet()) { - if (!skipped_chunks.contains(entry.getKey())) { - if (entry.getValue() > 0) sender.sendMessage(" &c" + entry.getKey().replace("CraftChunk", "") + " - " + (map_chunk.containsKey(entry.getKey()) ? map_chunk.get(entry.getKey()): 0) + "x &7(" + entry.getValue() + "ms)"); + for (Map.Entry entry: chunkTimings.entrySet()) { + if (!chunksSkipped.contains(entry.getKey())) { + if (entry.getValue() > 0) sender.sendMessage(" &c" + entry.getKey().replace("CraftChunk", "") + " - " + (chunkItemCount.containsKey(entry.getKey()) ? chunkItemCount.get(entry.getKey()): 0) + "x &7(" + entry.getValue() + "ms)"); else hidden++; } } @@ -287,29 +286,29 @@ public class TickerTask implements Runnable { } public long getTimings(Block b) { - return block_timings.containsKey(b.getLocation()) ? block_timings.get(b.getLocation()): 0L; + return blockTimings.containsKey(b.getLocation()) ? blockTimings.get(b.getLocation()): 0L; } public long getTimings(String item) { - return map_machinetime.containsKey(item) ? map_machinetime.get(item): 0L; + return machineTimings.containsKey(item) ? machineTimings.get(item): 0L; } public long getTimings(Chunk c) { - return map_chunktime.containsKey(c.toString()) ? map_chunktime.get(c.toString()): 0L; + return chunkTimings.containsKey(c.toString()) ? chunkTimings.get(c.toString()): 0L; } @Override public String toString() { return "TickerTask {\n" - + " HALTED = " + HALTED + "\n" + + " HALTED = " + halted + "\n" + " tickers = " + tickers + "\n" + " move = " + move + "\n" + " delete = " + delete + "\n" - + " chunks = " + map_chunk + "\n" - + " machines = " + map_machine + "\n" - + " machinetime = " + map_machinetime + "\n" - + " chunktime = " + map_chunktime + "\n" - + " skipped = " + skipped_chunks + "\n" + + " chunks = " + chunkItemCount + "\n" + + " machines = " + machineCount + "\n" + + " machinetime = " + machineTimings + "\n" + + " chunktime = " + chunkTimings + "\n" + + " skipped = " + chunksSkipped + "\n" + "}"; } diff --git a/src/me/mrCookieSlime/Slimefun/api/energy/EnergyNet.java b/src/me/mrCookieSlime/Slimefun/api/energy/EnergyNet.java index c6fd1e35f..6912116f2 100644 --- a/src/me/mrCookieSlime/Slimefun/api/energy/EnergyNet.java +++ b/src/me/mrCookieSlime/Slimefun/api/energy/EnergyNet.java @@ -12,12 +12,12 @@ import me.mrCookieSlime.CSCoreLibPlugin.general.Math.DoubleHandler; import me.mrCookieSlime.Slimefun.SlimefunStartup; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.api.BlockStorage; -import me.mrCookieSlime.Slimefun.api.TickerTask; import me.mrCookieSlime.Slimefun.api.network.Network; import me.mrCookieSlime.Slimefun.holograms.EnergyHologram; public class EnergyNet extends Network { - public enum NetworkComponent { + + public static enum NetworkComponent { SOURCE, DISTRIBUTOR, CONSUMER, @@ -154,7 +154,7 @@ public class EnergyNet extends Network { else { supply = supply + energy; } - TickerTask.block_timings.put(source, System.currentTimeMillis() - timestamp); + SlimefunStartup.ticker.blockTimings.put(source, System.currentTimeMillis() - timestamp); } input.removeAll(exploded); diff --git a/src/me/mrCookieSlime/Slimefun/listeners/BackpackListener.java b/src/me/mrCookieSlime/Slimefun/listeners/BackpackListener.java index 09651fed3..a3b7bf598 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/BackpackListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/BackpackListener.java @@ -68,13 +68,10 @@ public class BackpackListener implements Listener { if (hotbarItem != null && hotbarItem.getType().toString().contains("SHULKER_BOX")) e.setCancelled(true); else if (sfItem instanceof SlimefunBackpack) e.setCancelled(true); } - else { + else if (e.getCurrentItem() != null && e.getCurrentItem().getType() != Material.AIR) { SlimefunItem sfItem = SlimefunItem.getByItem(e.getCurrentItem()); - if (SlimefunManager.isItemSimiliar(item, SlimefunItem.getItem("COOLER"), false)) { - if (e.getCurrentItem() == null || e.getCurrentItem().getType() == Material.AIR); - else if (!(sfItem instanceof Juice)) e.setCancelled(true); - } - else if (e.getCurrentItem() != null && e.getCurrentItem().getType().toString().contains("SHULKER_BOX")) e.setCancelled(true); + if (SlimefunManager.isItemSimiliar(item, SlimefunItem.getItem("COOLER"), false) && !(sfItem instanceof Juice)) e.setCancelled(true); + else if (e.getCurrentItem().getType().toString().contains("SHULKER_BOX")) e.setCancelled(true); else if (sfItem instanceof SlimefunBackpack) e.setCancelled(true); } } diff --git a/src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java b/src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java index 29620130f..c1b162fcc 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java @@ -123,7 +123,7 @@ public class ItemListener implements Listener { e.setCancelled(true); if (p.isOp()) { switch (e.getAction()) { - case LEFT_CLICK_BLOCK: { + case LEFT_CLICK_BLOCK: if (p.isSneaking()) { if (BlockStorage.hasBlockInfo(e.getClickedBlock())) { BlockStorage.clearBlockInfo(e.getClickedBlock()); @@ -131,8 +131,7 @@ public class ItemListener implements Listener { } else e.setCancelled(false); break; - } - case RIGHT_CLICK_BLOCK: { + case RIGHT_CLICK_BLOCK: if (p.isSneaking()) { Block b = e.getClickedBlock().getRelative(e.getBlockFace()); b.setType(Material.PLAYER_HEAD); @@ -183,7 +182,6 @@ public class ItemListener implements Listener { p.sendMessage(" "); } break; - } default: break; @@ -269,24 +267,17 @@ public class ItemListener implements Listener { if (e.getClickedBlock() != null && BlockStorage.hasBlockInfo(e.getClickedBlock())) { String id = BlockStorage.checkID(e.getClickedBlock()); - if (BlockMenuPreset.isInventory(id)) { - if (canPlaceBlock(p, e.getClickedBlock().getRelative(e.getParentEvent().getBlockFace())) && SlimefunManager.isItemSimiliar(item, SlimefunItems.CARGO_INPUT, true)); - else if (canPlaceBlock(p, e.getClickedBlock().getRelative(e.getParentEvent().getBlockFace())) && SlimefunManager.isItemSimiliar(item, SlimefunItems.CARGO_OUTPUT, true)); - else if (canPlaceBlock(p, e.getClickedBlock().getRelative(e.getParentEvent().getBlockFace())) && SlimefunManager.isItemSimiliar(item, SlimefunItems.CARGO_OUTPUT_ADVANCED, true)); - else if (canPlaceBlock(p, e.getClickedBlock().getRelative(e.getParentEvent().getBlockFace())) && SlimefunManager.isItemSimiliar(item, SlimefunItems.CT_IMPORT_BUS, true)); - else if (canPlaceBlock(p, e.getClickedBlock().getRelative(e.getParentEvent().getBlockFace())) && SlimefunManager.isItemSimiliar(item, SlimefunItems.CT_EXPORT_BUS, true)); - else if (!p.isSneaking() || item == null || item.getType() == Material.AIR) { - e.setCancelled(true); - BlockStorage storage = BlockStorage.getStorage(e.getClickedBlock().getWorld()); + if (BlockMenuPreset.isInventory(id) && !canPlaceCargoNodes(p, item, e.getClickedBlock().getRelative(e.getParentEvent().getBlockFace())) && (!p.isSneaking() || item == null || item.getType() == Material.AIR)) { + e.setCancelled(true); + BlockStorage storage = BlockStorage.getStorage(e.getClickedBlock().getWorld()); - if (storage.hasUniversalInventory(id)) { - UniversalBlockMenu menu = storage.getUniversalInventory(id); - if (menu.canOpen(e.getClickedBlock(), p)) menu.open(p); - } - else if (storage.hasInventory(e.getClickedBlock().getLocation())) { - BlockMenu menu = BlockStorage.getInventory(e.getClickedBlock().getLocation()); - if (menu.canOpen(e.getClickedBlock(), p)) menu.open(p); - } + if (storage.hasUniversalInventory(id)) { + UniversalBlockMenu menu = storage.getUniversalInventory(id); + if (menu.canOpen(e.getClickedBlock(), p)) menu.open(p); + } + else if (storage.hasInventory(e.getClickedBlock().getLocation())) { + BlockMenu menu = BlockStorage.getInventory(e.getClickedBlock().getLocation()); + if (menu.canOpen(e.getClickedBlock(), p)) menu.open(p); } } } @@ -294,6 +285,15 @@ public class ItemListener implements Listener { else e.setCancelled(true); } + private boolean canPlaceCargoNodes(Player p, ItemStack item, Block b) { + if (canPlaceBlock(p, b) && SlimefunManager.isItemSimiliar(item, SlimefunItems.CARGO_INPUT, true)) return true; + else if (canPlaceBlock(p, b) && SlimefunManager.isItemSimiliar(item, SlimefunItems.CARGO_OUTPUT, true)) return true; + else if (canPlaceBlock(p, b) && SlimefunManager.isItemSimiliar(item, SlimefunItems.CARGO_OUTPUT_ADVANCED, true)) return true; + else if (canPlaceBlock(p, b) && SlimefunManager.isItemSimiliar(item, SlimefunItems.CT_IMPORT_BUS, true)) return true; + else if (canPlaceBlock(p, b) && SlimefunManager.isItemSimiliar(item, SlimefunItems.CT_EXPORT_BUS, true)) return true; + else return false; + } + private boolean canPlaceBlock(Player p, Block relative) { return p.isSneaking() && relative.getType() == Material.AIR; } diff --git a/src/me/mrCookieSlime/Slimefun/listeners/PlayerQuitListener.java b/src/me/mrCookieSlime/Slimefun/listeners/PlayerQuitListener.java index 8c5a25a26..6c8971653 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/PlayerQuitListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/PlayerQuitListener.java @@ -4,7 +4,6 @@ import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerQuitEvent; -import me.mrCookieSlime.Slimefun.SlimefunGuide; import me.mrCookieSlime.Slimefun.SlimefunStartup; import me.mrCookieSlime.Slimefun.api.PlayerProfile; @@ -16,7 +15,7 @@ public class PlayerQuitListener implements Listener { @EventHandler public void onDisconnect(PlayerQuitEvent e) { - SlimefunGuide.history.remove(e.getPlayer().getUniqueId()); + SlimefunStartup.instance.getUtilities().guideHistory.remove(e.getPlayer().getUniqueId()); if (PlayerProfile.isLoaded(e.getPlayer().getUniqueId())) { PlayerProfile.fromUUID(e.getPlayer().getUniqueId()).markForDeletion(); diff --git a/src/me/mrCookieSlime/Slimefun/utils/Utilities.java b/src/me/mrCookieSlime/Slimefun/utils/Utilities.java index af735b14c..af4cb1727 100644 --- a/src/me/mrCookieSlime/Slimefun/utils/Utilities.java +++ b/src/me/mrCookieSlime/Slimefun/utils/Utilities.java @@ -52,6 +52,8 @@ public final class Utilities { public Set connectors = new HashSet<>(); public Map contributorHeads = new HashMap<>(); public List contributors = new ArrayList<>(); + + public Map> guideHistory = new HashMap<>(); public List cargoTransportEvents = new ArrayList<>(); From 09354e0be10843f5e3cb6e52ebef4bf36338e36e Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Fri, 30 Aug 2019 11:15:26 +0200 Subject: [PATCH 058/169] Refactored code --- .../abstractItems/AContainer.java | 4 - .../SlimefunItem/abstractItems/AFarm.java | 8 +- .../machines/AnimalGrowthAccelerator.java | 4 - .../SlimefunItem/machines/AutoBreeder.java | 4 - .../SlimefunItem/machines/Composter.java | 79 ++++++ .../machines/CropGrowthAccelerator.java | 4 - .../SlimefunItem/machines/Crucible.java | 86 +++++++ .../machines/EnergyRegulator.java | 56 +++++ .../SlimefunItem/machines/FluidPump.java | 4 - .../SlimefunItem/machines/InfusedHopper.java | 5 - .../SlimefunItem/machines/TrashCan.java | 4 - .../SlimefunItem/machines/XPCollector.java | 4 - .../Objects/handlers/BlockTicker.java | 22 +- .../Slimefun/Setup/MiscSetup.java | 8 + .../Slimefun/Setup/SlimefunSetup.java | 237 ++++-------------- 15 files changed, 300 insertions(+), 229 deletions(-) create mode 100644 src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/Composter.java create mode 100644 src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/Crucible.java create mode 100644 src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/EnergyRegulator.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AContainer.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AContainer.java index 31e2a778b..2b9e174ff 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AContainer.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AContainer.java @@ -208,10 +208,6 @@ public abstract class AContainer extends SlimefunItem { AContainer.this.tick(b); } - @Override - public void uniqueTick() { - } - @Override public boolean isSynchronized() { return false; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AFarm.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AFarm.java index b57c74b2d..efda7dbb0 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AFarm.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AFarm.java @@ -198,11 +198,7 @@ public abstract class AFarm extends SlimefunItem { public void tick(Block b, SlimefunItem sf, Config data) { AFarm.this.tick(b); } - - @Override - public void uniqueTick() { - } - + @Override public boolean isSynchronized() { return true; @@ -215,12 +211,14 @@ public abstract class AFarm extends SlimefunItem { private Inventory inject(Block b) { int size = BlockStorage.getInventory(b).toInventory().getSize(); Inventory inv = Bukkit.createInventory(null, size); + for (int i = 0; i < size; i++) { inv.setItem(i, new CustomItem(Material.COMMAND_BLOCK, " &4ALL YOUR PLACEHOLDERS ARE BELONG TO US")); } for (int slot: getOutputSlots()) { inv.setItem(slot, BlockStorage.getInventory(b).getItemInSlot(slot)); } + return inv; } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AnimalGrowthAccelerator.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AnimalGrowthAccelerator.java index 605777e2c..1429e2fce 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AnimalGrowthAccelerator.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AnimalGrowthAccelerator.java @@ -111,10 +111,6 @@ public class AnimalGrowthAccelerator extends SlimefunItem { } } - @Override - public void uniqueTick() { - } - @Override public boolean isSynchronized() { return true; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoBreeder.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoBreeder.java index c0d8934c9..3ce75529c 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoBreeder.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoBreeder.java @@ -110,10 +110,6 @@ public class AutoBreeder extends SlimefunItem { } } - @Override - public void uniqueTick() { - } - @Override public boolean isSynchronized() { return true; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/Composter.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/Composter.java new file mode 100644 index 000000000..7b8a23c40 --- /dev/null +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/Composter.java @@ -0,0 +1,79 @@ +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines; + +import org.bukkit.Bukkit; +import org.bukkit.Effect; +import org.bukkit.Material; +import org.bukkit.Sound; +import org.bukkit.block.Block; +import org.bukkit.block.BlockFace; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; + +import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib; +import me.mrCookieSlime.CSCoreLibPlugin.events.ItemUseEvent; +import me.mrCookieSlime.Slimefun.SlimefunStartup; +import me.mrCookieSlime.Slimefun.Lists.RecipeType; +import me.mrCookieSlime.Slimefun.Objects.Category; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunGadget; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; +import me.mrCookieSlime.Slimefun.Objects.handlers.ItemInteractionHandler; +import me.mrCookieSlime.Slimefun.Setup.Messages; +import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; +import me.mrCookieSlime.Slimefun.api.BlockStorage; + +public class Composter extends SlimefunGadget { + + public Composter(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe, ItemStack[] machineRecipes) { + super(category, item, id, recipeType, recipe, machineRecipes); + } + + @Override + public void register(boolean slimefun) { + addItemHandler(new ItemInteractionHandler() { + + @Override + public boolean onRightClick(ItemUseEvent e, final Player p, ItemStack item) { + if (e.getClickedBlock() != null) { + SlimefunItem machine = BlockStorage.check(e.getClickedBlock()); + if (machine != null && machine.getID().equals(getID())) { + if (CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), e.getClickedBlock(), true)) { + final ItemStack input = p.getInventory().getItemInMainHand(); + final Block b = e.getClickedBlock(); + + for (ItemStack convert: RecipeType.getRecipeInputs(machine)) { + if (convert != null && SlimefunManager.isItemSimiliar(input, convert, true)) { + ItemStack removing = input.clone(); + removing.setAmount(convert.getAmount()); + p.getInventory().removeItem(removing); + final ItemStack adding = RecipeType.getRecipeOutput(machine, convert); + + for (int i = 1; i < 12; i++) { + int j = i; + Bukkit.getScheduler().runTaskLater(SlimefunStartup.instance, () -> { + if (j < 11) { + b.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, input.getType().isBlock() ? input.getType() : Material.HAY_BLOCK); + } + else { + p.getWorld().playSound(p.getLocation(), Sound.ENTITY_ARROW_HIT_PLAYER, 1F, 1F); + b.getWorld().dropItemNaturally(b.getRelative(BlockFace.UP).getLocation(), adding); + } + }, i*30L); + } + + return true; + } + } + Messages.local.sendTranslation(p, "machines.wrong-item", true); + return true; + } + return true; + } + } + return false; + } + }); + + super.register(slimefun); + } + +} diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/CropGrowthAccelerator.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/CropGrowthAccelerator.java index 7cb6a9412..bf7b93045 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/CropGrowthAccelerator.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/CropGrowthAccelerator.java @@ -121,10 +121,6 @@ public abstract class CropGrowthAccelerator extends SlimefunItem { } } - @Override - public void uniqueTick() { - } - @Override public boolean isSynchronized() { return true; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/Crucible.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/Crucible.java new file mode 100644 index 000000000..d21199971 --- /dev/null +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/Crucible.java @@ -0,0 +1,86 @@ +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines; + +import org.bukkit.Bukkit; +import org.bukkit.Material; +import org.bukkit.Sound; +import org.bukkit.block.Block; +import org.bukkit.block.BlockFace; +import org.bukkit.block.data.Levelled; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; + +import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib; +import me.mrCookieSlime.CSCoreLibPlugin.compatibility.MaterialHelper; +import me.mrCookieSlime.CSCoreLibPlugin.events.ItemUseEvent; +import me.mrCookieSlime.Slimefun.SlimefunStartup; +import me.mrCookieSlime.Slimefun.Lists.RecipeType; +import me.mrCookieSlime.Slimefun.Objects.Category; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunGadget; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; +import me.mrCookieSlime.Slimefun.Objects.handlers.ItemInteractionHandler; +import me.mrCookieSlime.Slimefun.Setup.Messages; +import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; +import me.mrCookieSlime.Slimefun.api.BlockStorage; + +public class Crucible extends SlimefunGadget { + + public Crucible(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe, ItemStack[] machineRecipes) { + super(category, item, id, recipeType, recipe, machineRecipes); + } + + @Override + public void register(boolean slimefun) { + addItemHandler(new ItemInteractionHandler() { + + @Override + public boolean onRightClick(ItemUseEvent e, final Player p, ItemStack item) { + if (e.getClickedBlock() != null) { + SlimefunItem machine = BlockStorage.check(e.getClickedBlock()); + if (machine != null && machine.getID().equals("CRUCIBLE")) { + if (CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), e.getClickedBlock(), true)) { + final ItemStack input = p.getInventory().getItemInMainHand(); + final Block block = e.getClickedBlock().getRelative(BlockFace.UP); + for (ItemStack convert: RecipeType.getRecipeInputs(machine)) { + if (input != null && SlimefunManager.isItemSimiliar(input, convert, true)) { + e.setCancelled(true); + ItemStack removing = input.clone(); + removing.setAmount(convert.getAmount()); + p.getInventory().removeItem(removing); + + for (int i = 1; i < 9; i++) { + int j = 8 - i; + Bukkit.getScheduler().runTaskLater(SlimefunStartup.instance, () -> { + if (input.getType() == Material.COBBLESTONE || input.getType() == Material.TERRACOTTA || MaterialHelper.isTerracotta(input.getType())) { + block.setType(Material.LAVA); + Levelled le = (Levelled) block.getBlockData(); + le.setLevel(j); + block.setBlockData(le, false); + block.getWorld().playSound(block.getLocation(), Sound.BLOCK_LAVA_POP, 1F, 1F); + } + else if (MaterialHelper.isLeavesBlock(input.getType())) { + block.setType(Material.WATER); + Levelled le = (Levelled) block.getBlockData(); + le.setLevel(j); + block.setBlockData(le, false); + block.getWorld().playSound(block.getLocation(), Sound.ENTITY_PLAYER_SPLASH, 1F, 1F); + } + }, i*50L); + } + + return true; + } + } + Messages.local.sendTranslation(p, "machines.wrong-item", true); + return true; + } + return true; + } + } + return false; + } + }); + + super.register(slimefun); + } + +} diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/EnergyRegulator.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/EnergyRegulator.java new file mode 100644 index 000000000..396b1eac0 --- /dev/null +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/EnergyRegulator.java @@ -0,0 +1,56 @@ +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines; + +import org.bukkit.block.Block; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; + +import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config; +import me.mrCookieSlime.Slimefun.Lists.RecipeType; +import me.mrCookieSlime.Slimefun.Objects.Category; +import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason; +import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker; +import me.mrCookieSlime.Slimefun.api.energy.EnergyNet; +import me.mrCookieSlime.Slimefun.holograms.EnergyHologram; + +public class EnergyRegulator extends SlimefunItem { + + public EnergyRegulator(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe) { + super(category, item, id, recipeType, recipe); + + SlimefunItem.registerBlockHandler("ENERGY_REGULATOR", new SlimefunBlockHandler() { + + @Override + public void onPlace(Player p, Block b, SlimefunItem item) { + // Spawn the hologram + EnergyHologram.update(b, "&7Connecting..."); + } + + @Override + public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) { + EnergyHologram.remove(b); + return true; + } + }); + } + + @Override + public void register(boolean slimefun) { + addItemHandler(new BlockTicker() { + + @Override + public boolean isSynchronized() { + return false; + } + + @Override + public void tick(Block b, SlimefunItem item, Config data) { + EnergyNet.getNetworkFromLocationOrCreate(b.getLocation()).tick(b); + } + }); + + super.register(slimefun); + } + +} diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/FluidPump.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/FluidPump.java index 44b46c28e..56e2e88bf 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/FluidPump.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/FluidPump.java @@ -173,10 +173,6 @@ public class FluidPump extends SlimefunItem{ FluidPump.this.tick(b); } - @Override - public void uniqueTick() { - } - @Override public boolean isSynchronized() { return true; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/InfusedHopper.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/InfusedHopper.java index e76d230cc..3e458133e 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/InfusedHopper.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/InfusedHopper.java @@ -44,11 +44,6 @@ public class InfusedHopper extends SlimefunItem { public void register(boolean slimefun) { addItemHandler(new BlockTicker() { - @Override - public void uniqueTick() { - - } - @Override public void tick(Block b, SlimefunItem item, Config data) { if (b.getType() != Material.HOPPER) { diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/TrashCan.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/TrashCan.java index 18a107aa4..1f1dd72f2 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/TrashCan.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/TrashCan.java @@ -67,10 +67,6 @@ public class TrashCan extends SlimefunItem { public void register(boolean slimefun) { addItemHandler(new BlockTicker() { - @Override - public void uniqueTick() { - } - @Override public void tick(Block b, SlimefunItem item, Config data) { BlockMenu menu = BlockStorage.getInventory(b); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/XPCollector.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/XPCollector.java index 6e0290676..cd7d83f4a 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/XPCollector.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/XPCollector.java @@ -135,10 +135,6 @@ public class XPCollector extends SlimefunItem { } } - @Override - public void uniqueTick() { - } - @Override public boolean isSynchronized() { return true; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/handlers/BlockTicker.java b/src/me/mrCookieSlime/Slimefun/Objects/handlers/BlockTicker.java index dbc6e2f81..b9a2d1dd5 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/handlers/BlockTicker.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/handlers/BlockTicker.java @@ -16,16 +16,34 @@ public abstract class BlockTicker implements ItemHandler { } } - + /** + * This method must be overridden to define whether a Block + * needs to be run on the main server thread (World Manipulation requires that) + * + * @return Whether this task should run on the main server thread + */ public abstract boolean isSynchronized(); - public abstract void uniqueTick(); + + /** + * This method is called every tick for every block + */ public abstract void tick(Block b, SlimefunItem item, Config data); + /** + * This method is called every tick but not per-block and only once. + */ + public void uniqueTick() { + // Override this method and fill it with content + } + @Override public String toCodename() { return "BlockTicker"; } + /** + * This method resets the 'unique' flag for {@link BlockTicker#uniqueTick()} + */ public void startNewTick() { unique = true; } diff --git a/src/me/mrCookieSlime/Slimefun/Setup/MiscSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/MiscSetup.java index bd6d38783..1c76d957b 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/MiscSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/MiscSetup.java @@ -10,6 +10,7 @@ import org.bukkit.ChatColor; import org.bukkit.Material; import org.bukkit.World; import org.bukkit.command.CommandSender; +import org.bukkit.enchantments.Enchantment; import org.bukkit.inventory.ItemStack; import me.mrCookieSlime.CSCoreLibPlugin.general.Chat.Colors; @@ -221,7 +222,14 @@ public final class MiscSetup { for (World world: Bukkit.getWorlds()) { SlimefunStartup.getWhitelist().setDefaultValue(world.getName() + ".enabled-items.SLIMEFUN_GUIDE", true); } + Slimefun.setItemVariable("ORE_CRUSHER", "double-ores", true); + + for (Enchantment e : Enchantment.values()) { + for (int i = 1; i <= e.getMaxLevel(); i++) { + Slimefun.setItemVariable("MAGICIAN_TALISMAN", "allow-enchantments." + e.getKey().getKey() + ".level." + i, true); + } + } } public static void loadDescriptions() { diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java index 699168fc2..944bf8438 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java @@ -22,7 +22,6 @@ import org.bukkit.block.Chest; import org.bukkit.block.CreatureSpawner; import org.bukkit.block.Dispenser; import org.bukkit.block.data.Ageable; -import org.bukkit.block.data.Levelled; import org.bukkit.enchantments.Enchantment; import org.bukkit.entity.ArmorStand; import org.bukkit.entity.Arrow; @@ -116,13 +115,16 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.CarbonPress; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.CargoInputNode; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.CargoOutputNode; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.ChargingBench; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.Composter; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.CropGrowthAccelerator; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.Crucible; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.ElectricDustWasher; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.ElectricFurnace; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.ElectricGoldPan; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.ElectricIngotFactory; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.ElectricSmeltery; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.ElectrifiedCrucible; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.EnergyRegulator; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.EnhancedCraftingTable; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.FluidPump; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.FoodComposter; @@ -156,11 +158,9 @@ import me.mrCookieSlime.Slimefun.api.BlockStorage; import me.mrCookieSlime.Slimefun.api.PlayerProfile; import me.mrCookieSlime.Slimefun.api.Slimefun; import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock; -import me.mrCookieSlime.Slimefun.api.energy.EnergyNet; import me.mrCookieSlime.Slimefun.api.energy.EnergyTicker; import me.mrCookieSlime.Slimefun.api.item_transport.CargoNet; import me.mrCookieSlime.Slimefun.holograms.CargoHologram; -import me.mrCookieSlime.Slimefun.holograms.EnergyHologram; import me.mrCookieSlime.Slimefun.holograms.ReactorHologram; import me.mrCookieSlime.Slimefun.utils.Utilities; @@ -644,14 +644,17 @@ public final class SlimefunSetup { inv.removeItem(removing); for (int i = 0; i < 4; i++) { int j = i; + Bukkit.getScheduler().runTaskLater(SlimefunStartup.instance, () -> { p.getWorld().playSound(b.getLocation(), Sound.ENTITY_TNT_PRIMED, 1, 1); p.getWorld().playEffect(b.getRelative(BlockFace.UP).getLocation(), Effect.SMOKE, 4); p.getWorld().playEffect(b.getRelative(BlockFace.UP).getLocation(), Effect.SMOKE, 4); p.getWorld().playEffect(b.getRelative(BlockFace.UP).getLocation(), Effect.SMOKE, 4); + if (j < 3) { p.getWorld().playSound(b.getLocation(), Sound.ENTITY_TNT_PRIMED, 1F, 1F); - } else { + } + else { p.getWorld().playSound(p.getLocation(), Sound.ENTITY_ARROW_HIT_PLAYER, 1F, 1F); outputInv.addItem(adding); } @@ -1172,12 +1175,6 @@ public final class SlimefunSetup { false, false, "magician", 80, new PotionEffect[0]) .register(true); - for (Enchantment e : Enchantment.values()) { - for (int i = 1; i <= e.getMaxLevel(); i++) { - Slimefun.setItemVariable("MAGICIAN_TALISMAN", "allow-enchantments." + e.getKey().getKey() + ".level." + i, true); - } - } - new Talisman(SlimefunItems.TALISMAN_TRAVELLER, "TRAVELLER_TALISMAN", new ItemStack[] {SlimefunItems.MAGIC_LUMP_3, null, SlimefunItems.MAGIC_LUMP_3, SlimefunItems.STAFF_WIND, SlimefunItems.TALISMAN_ANGEL, SlimefunItems.STAFF_WIND, SlimefunItems.MAGIC_LUMP_3, null, SlimefunItems.MAGIC_LUMP_3}, false, false, "traveller", 60, new PotionEffect(PotionEffectType.SPEED, 3600, 2)) @@ -1474,13 +1471,14 @@ public final class SlimefunSetup { if(item == null || item.getType() == Material.AIR) { return false; } + b.getWorld().dropItemNaturally(b.getLocation(), item); b.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, log.getType()); log.setAmount(log.getAmount() -1); - if(log.getAmount() <= 0) + + if(log.getAmount() <= 0) { p.getInventory().setItemInMainHand(new ItemStack(Material.AIR)); - - + } } return true; } @@ -1504,15 +1502,7 @@ public final class SlimefunSetup { @Override public boolean onInteract(Player p, MultiBlock mb, Block b) { if (mb.isMultiBlock(SlimefunItem.getByID("SAW_MILL"))) { - if (CSCoreLib.getLib().getProtectionManager().canBuild(p.getUniqueId(), b.getRelative(BlockFace.UP), true) && Slimefun.hasUnlocked(p, SlimefunItems.SAW_MILL, true) && MaterialHelper.isLog(b.getRelative(BlockFace.UP).getType())) { - Block log = b.getRelative(BlockFace.UP); - if (!BlockStorage.hasBlockInfo(log)) { - ItemStack item = new ItemStack(MaterialHelper.getWoodFromLog(log.getType()), 8); - log.getWorld().dropItemNaturally(log.getLocation(), item); - log.getWorld().playEffect(log.getLocation(), Effect.STEP_SOUND, log.getType()); - log.setType(Material.AIR); - } - } + p.sendMessage(ChatColor.RED + "This Item has been deprecated! Use the Table Saw instead!"); return true; } else return false; @@ -1650,7 +1640,8 @@ public final class SlimefunSetup { Bukkit.getScheduler().runTaskLater(SlimefunStartup.instance, () -> { if (j < 3) { b.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, ore); - } else { + } + else { p.getWorld().playSound(p.getLocation(), Sound.ENTITY_ARROW_HIT_PLAYER, 1F, 1F); inv.addItem(adding); } @@ -1671,7 +1662,7 @@ public final class SlimefunSetup { new ItemStack[] {SlimefunItems.GOLD_24K, SlimefunItems.GOLD_24K, SlimefunItems.GOLD_24K, SlimefunItems.GOLD_24K, SlimefunItems.GOLD_24K, SlimefunItems.GOLD_24K, SlimefunItems.GOLD_24K, SlimefunItems.GOLD_24K, SlimefunItems.GOLD_24K}) .register(true); - new SlimefunGadget(Categories.MACHINES_1, SlimefunItems.COMPOSTER, "COMPOSTER", RecipeType.ENHANCED_CRAFTING_TABLE, + new Composter(Categories.MACHINES_1, SlimefunItems.COMPOSTER, "COMPOSTER", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {new ItemStack(Material.OAK_SLAB), null, new ItemStack(Material.OAK_SLAB), new ItemStack(Material.OAK_SLAB), null, new ItemStack(Material.OAK_SLAB), new ItemStack(Material.OAK_SLAB), new ItemStack(Material.CAULDRON), new ItemStack(Material.OAK_SLAB)}, new ItemStack[] { new ItemStack(Material.OAK_LEAVES, 8), new ItemStack(Material.DIRT), @@ -1691,47 +1682,7 @@ public final class SlimefunSetup { new ItemStack(Material.STONE, 4), new ItemStack(Material.NETHERRACK), new ItemStack(Material.SAND, 2), new ItemStack(Material.SOUL_SAND), new ItemStack(Material.WHEAT, 4), new ItemStack(Material.NETHER_WART) - }).register(true, new ItemInteractionHandler() { - - @Override - public boolean onRightClick(ItemUseEvent e, final Player p, ItemStack item) { - if (e.getClickedBlock() != null) { - SlimefunItem machine = BlockStorage.check(e.getClickedBlock()); - if (machine != null && machine.getID().equals("COMPOSTER")) { - if (CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), e.getClickedBlock(), true)) { - final ItemStack input = p.getInventory().getItemInMainHand(); - final Block b = e.getClickedBlock(); - for (ItemStack convert: RecipeType.getRecipeInputs(machine)) { - if (convert != null && SlimefunManager.isItemSimiliar(input, convert, true)) { - ItemStack removing = input.clone(); - removing.setAmount(convert.getAmount()); - p.getInventory().removeItem(removing); - final ItemStack adding = RecipeType.getRecipeOutput(machine, convert); - - for (int i = 1; i < 12; i++) { - int j = i; - Bukkit.getScheduler().runTaskLater(SlimefunStartup.instance, () -> { - if (j < 11) { - b.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, input.getType().isBlock() ? input.getType() : Material.HAY_BLOCK); - } else { - p.getWorld().playSound(p.getLocation(), Sound.ENTITY_ARROW_HIT_PLAYER, 1F, 1F); - b.getWorld().dropItemNaturally(b.getRelative(BlockFace.UP).getLocation(), adding); - } - }, i*30L); - } - - return true; - } - } - Messages.local.sendTranslation(p, "machines.wrong-item", true); - return true; - } - return true; - } - } - return false; - } - }); + }).register(true); new SlimefunItem(Categories.MAGIC_ARMOR, SlimefunItems.FARMER_SHOES, "FARMER_SHOES", RecipeType.ARMOR_FORGE, new ItemStack[] {null, null, null, new ItemStack(Material.HAY_BLOCK), null, new ItemStack(Material.HAY_BLOCK), new ItemStack(Material.HAY_BLOCK), null, new ItemStack(Material.HAY_BLOCK)}) @@ -1959,82 +1910,37 @@ public final class SlimefunSetup { new ItemStack[] {SlimefunItems.CLOTH, null, SlimefunItems.CLOTH, SlimefunItems.GOLD_16K, SlimefunItems.BACKPACK_LARGE, SlimefunItems.GOLD_16K, SlimefunItems.CLOTH, SlimefunItems.CLOTH, SlimefunItems.CLOTH}) .register(true); - new SlimefunGadget(Categories.MACHINES_1, SlimefunItems.CRUCIBLE, "CRUCIBLE", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack [] {new ItemStack(Material.TERRACOTTA), null, new ItemStack(Material.TERRACOTTA), new ItemStack(Material.TERRACOTTA), null, new ItemStack(Material.TERRACOTTA), new ItemStack(Material.TERRACOTTA), new ItemStack(Material.FLINT_AND_STEEL), new ItemStack(Material.TERRACOTTA)}, - new ItemStack [] { - new ItemStack(Material.COBBLESTONE, 16), new ItemStack(Material.LAVA_BUCKET), + new Crucible(Categories.MACHINES_1, SlimefunItems.CRUCIBLE, "CRUCIBLE", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack [] {new ItemStack(Material.TERRACOTTA), null, new ItemStack(Material.TERRACOTTA), new ItemStack(Material.TERRACOTTA), null, new ItemStack(Material.TERRACOTTA), new ItemStack(Material.TERRACOTTA), new ItemStack(Material.FLINT_AND_STEEL), new ItemStack(Material.TERRACOTTA)}, + new ItemStack [] { + new ItemStack(Material.COBBLESTONE, 16), new ItemStack(Material.LAVA_BUCKET), + new ItemStack(Material.STONE, 12), new ItemStack(Material.LAVA_BUCKET), - new ItemStack(Material.OAK_LEAVES, 16), new ItemStack(Material.WATER_BUCKET), - new ItemStack(Material.BIRCH_LEAVES, 16), new ItemStack(Material.WATER_BUCKET), - new ItemStack(Material.SPRUCE_LEAVES, 16), new ItemStack(Material.WATER_BUCKET), - new ItemStack(Material.JUNGLE_LEAVES, 16), new ItemStack(Material.WATER_BUCKET), - new ItemStack(Material.ACACIA_LEAVES, 16), new ItemStack(Material.WATER_BUCKET), - new ItemStack(Material.DARK_OAK_LEAVES, 16), new ItemStack(Material.WATER_BUCKET), - - new ItemStack(Material.WHITE_TERRACOTTA, 12), new ItemStack(Material.LAVA_BUCKET), - new ItemStack(Material.ORANGE_TERRACOTTA, 12), new ItemStack(Material.LAVA_BUCKET), - new ItemStack(Material.MAGENTA_TERRACOTTA, 12), new ItemStack(Material.LAVA_BUCKET), - new ItemStack(Material.LIGHT_BLUE_TERRACOTTA, 12), new ItemStack(Material.LAVA_BUCKET), - new ItemStack(Material.YELLOW_TERRACOTTA, 12), new ItemStack(Material.LAVA_BUCKET), - new ItemStack(Material.LIME_TERRACOTTA, 12), new ItemStack(Material.LAVA_BUCKET), - new ItemStack(Material.PINK_TERRACOTTA, 12), new ItemStack(Material.LAVA_BUCKET), - new ItemStack(Material.GRAY_TERRACOTTA, 12), new ItemStack(Material.LAVA_BUCKET), - new ItemStack(Material.LIGHT_GRAY_TERRACOTTA, 12), new ItemStack(Material.LAVA_BUCKET), - new ItemStack(Material.CYAN_TERRACOTTA, 12), new ItemStack(Material.LAVA_BUCKET), - new ItemStack(Material.PURPLE_TERRACOTTA, 12), new ItemStack(Material.LAVA_BUCKET), - new ItemStack(Material.BROWN_TERRACOTTA, 12), new ItemStack(Material.LAVA_BUCKET), - new ItemStack(Material.GREEN_TERRACOTTA, 12), new ItemStack(Material.LAVA_BUCKET), - new ItemStack(Material.RED_TERRACOTTA, 12), new ItemStack(Material.LAVA_BUCKET), - new ItemStack(Material.BLACK_TERRACOTTA, 12), new ItemStack(Material.LAVA_BUCKET) - }) - .register(true, new ItemInteractionHandler() { + new ItemStack(Material.OAK_LEAVES, 16), new ItemStack(Material.WATER_BUCKET), + new ItemStack(Material.BIRCH_LEAVES, 16), new ItemStack(Material.WATER_BUCKET), + new ItemStack(Material.SPRUCE_LEAVES, 16), new ItemStack(Material.WATER_BUCKET), + new ItemStack(Material.JUNGLE_LEAVES, 16), new ItemStack(Material.WATER_BUCKET), + new ItemStack(Material.ACACIA_LEAVES, 16), new ItemStack(Material.WATER_BUCKET), + new ItemStack(Material.DARK_OAK_LEAVES, 16), new ItemStack(Material.WATER_BUCKET), - @Override - public boolean onRightClick(ItemUseEvent e, final Player p, ItemStack item) { - if (e.getClickedBlock() != null) { - SlimefunItem machine = BlockStorage.check(e.getClickedBlock()); - if (machine != null && machine.getID().equals("CRUCIBLE")) { - if (CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), e.getClickedBlock(), true)) { - final ItemStack input = p.getInventory().getItemInMainHand(); - final Block block = e.getClickedBlock().getRelative(BlockFace.UP); - for (ItemStack convert: RecipeType.getRecipeInputs(machine)) { - if (input != null && SlimefunManager.isItemSimiliar(input, convert, true)) { - e.setCancelled(true); - ItemStack removing = input.clone(); - removing.setAmount(convert.getAmount()); - p.getInventory().removeItem(removing); - - for (int i = 1; i < 9; i++) { - int j = 8 - i; - Bukkit.getScheduler().runTaskLater(SlimefunStartup.instance, () -> { - if (input.getType() == Material.COBBLESTONE || input.getType() == Material.TERRACOTTA || MaterialHelper.isTerracotta(input.getType())) { - block.setType(Material.LAVA); - Levelled le = (Levelled) block.getBlockData(); - le.setLevel(j); - block.setBlockData(le, false); - block.getWorld().playSound(block.getLocation(), Sound.BLOCK_LAVA_POP, 1F, 1F); - } else if (MaterialHelper.isLeavesBlock(input.getType())) { - block.setType(Material.WATER); - Levelled le = (Levelled) block.getBlockData(); - le.setLevel(j); - block.setBlockData(le, false); - block.getWorld().playSound(block.getLocation(), Sound.ENTITY_PLAYER_SPLASH, 1F, 1F); - } - }, i*50L); - } - - return true; - } - } - Messages.local.sendTranslation(p, "machines.wrong-item", true); - return true; - } - return true; - } - } - return false; - } - }); + new ItemStack(Material.TERRACOTTA, 12), new ItemStack(Material.LAVA_BUCKET), + new ItemStack(Material.WHITE_TERRACOTTA, 12), new ItemStack(Material.LAVA_BUCKET), + new ItemStack(Material.ORANGE_TERRACOTTA, 12), new ItemStack(Material.LAVA_BUCKET), + new ItemStack(Material.MAGENTA_TERRACOTTA, 12), new ItemStack(Material.LAVA_BUCKET), + new ItemStack(Material.LIGHT_BLUE_TERRACOTTA, 12), new ItemStack(Material.LAVA_BUCKET), + new ItemStack(Material.YELLOW_TERRACOTTA, 12), new ItemStack(Material.LAVA_BUCKET), + new ItemStack(Material.LIME_TERRACOTTA, 12), new ItemStack(Material.LAVA_BUCKET), + new ItemStack(Material.PINK_TERRACOTTA, 12), new ItemStack(Material.LAVA_BUCKET), + new ItemStack(Material.GRAY_TERRACOTTA, 12), new ItemStack(Material.LAVA_BUCKET), + new ItemStack(Material.LIGHT_GRAY_TERRACOTTA, 12), new ItemStack(Material.LAVA_BUCKET), + new ItemStack(Material.CYAN_TERRACOTTA, 12), new ItemStack(Material.LAVA_BUCKET), + new ItemStack(Material.PURPLE_TERRACOTTA, 12), new ItemStack(Material.LAVA_BUCKET), + new ItemStack(Material.BROWN_TERRACOTTA, 12), new ItemStack(Material.LAVA_BUCKET), + new ItemStack(Material.GREEN_TERRACOTTA, 12), new ItemStack(Material.LAVA_BUCKET), + new ItemStack(Material.RED_TERRACOTTA, 12), new ItemStack(Material.LAVA_BUCKET), + new ItemStack(Material.BLACK_TERRACOTTA, 12), new ItemStack(Material.LAVA_BUCKET) + }) + .register(true); new SlimefunBackpack(45, Categories.PORTABLE, SlimefunItems.GILDED_BACKPACK, "GILDED_BACKPACK", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {SlimefunItems.GOLD_22K, null, SlimefunItems.GOLD_22K, new ItemStack(Material.LEATHER), SlimefunItems.WOVEN_BACKPACK, new ItemStack(Material.LEATHER), SlimefunItems.GOLD_22K, null, SlimefunItems.GOLD_22K}) @@ -2691,37 +2597,9 @@ public final class SlimefunSetup { // Slimefun 4 - new SlimefunItem(Categories.ELECTRICITY, SlimefunItems.ENERGY_REGULATOR, "ENERGY_REGULATOR", RecipeType.ENHANCED_CRAFTING_TABLE, + new EnergyRegulator(Categories.ELECTRICITY, SlimefunItems.ENERGY_REGULATOR, "ENERGY_REGULATOR", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {SlimefunItems.SILVER_INGOT, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.SILVER_INGOT, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.SILVER_INGOT, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.SILVER_INGOT}) - .register(true, new BlockTicker() { - - @Override - public boolean isSynchronized() { - return false; - } - - @Override - public void uniqueTick() { - } - - @Override - public void tick(Block b, SlimefunItem item, Config data) { - EnergyNet.getNetworkFromLocationOrCreate(b.getLocation()).tick(b); - } - }); - - SlimefunItem.registerBlockHandler("ENERGY_REGULATOR", new SlimefunBlockHandler() { - - @Override - public void onPlace(Player p, Block b, SlimefunItem item) { - } - - @Override - public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) { - EnergyHologram.remove(b); - return true; - } - }); + .register(true); new SlimefunItem(Categories.MISC, SlimefunItems.DUCT_TAPE, "DUCT_TAPE", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {SlimefunItems.ALUMINUM_DUST, SlimefunItems.ALUMINUM_DUST, SlimefunItems.ALUMINUM_DUST, new ItemStack(Material.SLIME_BALL), new ItemStack(Material.WHITE_WOOL), new ItemStack(Material.SLIME_BALL), new ItemStack(Material.PAPER), new ItemStack(Material.PAPER), new ItemStack(Material.PAPER)}, new CustomItem(SlimefunItems.DUCT_TAPE, 2)) @@ -3440,10 +3318,6 @@ public final class SlimefunSetup { else Slimefun.getGPSNetwork().updateTransmitter(b.getLocation(), UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner")), NetworkStatus.OFFLINE); } - @Override - public void uniqueTick() { - } - @Override public boolean isSynchronized() { return false; @@ -3480,10 +3354,6 @@ public final class SlimefunSetup { } } - @Override - public void uniqueTick() { - } - @Override public boolean isSynchronized() { return false; @@ -3520,10 +3390,6 @@ public final class SlimefunSetup { } } - @Override - public void uniqueTick() { - } - @Override public boolean isSynchronized() { return false; @@ -3560,10 +3426,6 @@ public final class SlimefunSetup { } } - @Override - public void uniqueTick() { - } - @Override public boolean isSynchronized() { return false; @@ -4608,10 +4470,6 @@ public final class SlimefunSetup { new ItemStack[] {null, SlimefunItems.HOLOGRAM_PROJECTOR, null, SlimefunItems.REINFORCED_PLATE, SlimefunItems.CARGO_MOTOR, SlimefunItems.REINFORCED_PLATE, SlimefunItems.ALUMINUM_BRONZE_INGOT, SlimefunItems.ANDROID_MEMORY_CORE, SlimefunItems.ALUMINUM_BRONZE_INGOT}) .register(true, new BlockTicker() { - @Override - public void uniqueTick() { - } - @Override public void tick(Block b, SlimefunItem item, Config data) { CargoNet.getNetworkFromLocationOrCreate(b.getLocation()).tick(b); @@ -4621,6 +4479,7 @@ public final class SlimefunSetup { public boolean isSynchronized() { return false; } + }, new ItemInteractionHandler() { @Override From 1ec935b334161604dd4274ed25e24c8bda0e3cff Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Fri, 30 Aug 2019 11:28:27 +0200 Subject: [PATCH 059/169] More Code Cleanup --- .../Slimefun/Lists/Categories.java | 10 +- .../Slimefun/Objects/Category.java | 6 +- .../Slimefun/Objects/Charge.java | 21 -- .../Slimefun/Objects/LockedCategory.java | 2 +- ...sonCategory.java => SeasonalCategory.java} | 4 +- .../machines/ElectricDustWasher.java | 1 + .../SlimefunItem/multiblocks/ArmorForge.java | 100 +++++++++ .../SlimefunItem/multiblocks/Compressor.java | 87 ++++++++ .../EnhancedCraftingTable.java | 4 +- .../SlimefunItem/multiblocks/GrindStone.java | 79 +++++++ .../MagicWorkbench.java | 4 +- .../SlimefunItem/multiblocks/OreCrusher.java | 74 +++++++ .../{machines => multiblocks}/OreWasher.java | 4 +- .../{machines => multiblocks}/Smeltery.java | 4 +- .../Slimefun/Setup/SlimefunSetup.java | 207 +----------------- .../mrCookieSlime/Slimefun/SlimefunGuide.java | 10 +- .../Slimefun/SlimefunStartup.java | 2 +- 17 files changed, 378 insertions(+), 241 deletions(-) delete mode 100644 src/me/mrCookieSlime/Slimefun/Objects/Charge.java rename src/me/mrCookieSlime/Slimefun/Objects/{SeasonCategory.java => SeasonalCategory.java} (92%) create mode 100644 src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/ArmorForge.java create mode 100644 src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/Compressor.java rename src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/{machines => multiblocks}/EnhancedCraftingTable.java (96%) create mode 100644 src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/GrindStone.java rename src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/{machines => multiblocks}/MagicWorkbench.java (96%) create mode 100644 src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/OreCrusher.java rename src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/{machines => multiblocks}/OreWasher.java (95%) rename src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/{machines => multiblocks}/Smeltery.java (96%) diff --git a/src/me/mrCookieSlime/Slimefun/Lists/Categories.java b/src/me/mrCookieSlime/Slimefun/Lists/Categories.java index 979965bb7..aaf4e5349 100644 --- a/src/me/mrCookieSlime/Slimefun/Lists/Categories.java +++ b/src/me/mrCookieSlime/Slimefun/Lists/Categories.java @@ -9,7 +9,7 @@ import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; import me.mrCookieSlime.CSCoreLibPlugin.general.World.CustomSkull; import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.LockedCategory; -import me.mrCookieSlime.Slimefun.Objects.SeasonCategory; +import me.mrCookieSlime.Slimefun.Objects.SeasonalCategory; /** * Built-in categories. @@ -40,10 +40,10 @@ public final class Categories { public static final Category TALISMANS_1 = new Category(new CustomItem(Material.EMERALD, "&7Talismans - &aTier I", "", "&a> Click to open"), 2); public static final LockedCategory TALISMANS_2 = new LockedCategory(new CustomItem(Material.EMERALD, "&7Talismans - &aTier II", "", "&a> Click to open"), 3, TALISMANS_1); public static final Category TOOLS = new Category(new CustomItem(Material.GOLDEN_PICKAXE, "&7Tools", "", "&a> Click to open"), 1); - public static final SeasonCategory CHRISTMAS = new SeasonCategory(12, 1, new CustomItem(Material.NETHER_STAR, "&aC&ch&ar&ci&as&ct&am&ca&as", "", "&c> Click to help &aSanta")); - public static final SeasonCategory VALENTINES_DAY = new SeasonCategory(2, 2, new CustomItem(Material.POPPY, "&dValentine's Day", "", "&d> Click to celebrate Love")); - public static final SeasonCategory EASTER = new SeasonCategory(4, 2, new CustomItem(Material.EGG, "&6Easter", "", "&a> Click to paint some Eggs")); - public static final SeasonCategory BIRTHDAY = new SeasonCategory(10, 1, new CustomItem(Material.FIREWORK_ROCKET, "&a&lTheBusyBiscuit's Birthday &7(26th October)", "", "&a> Click to celebrate with me")); + public static final SeasonalCategory CHRISTMAS = new SeasonalCategory(12, 1, new CustomItem(Material.NETHER_STAR, "&aC&ch&ar&ci&as&ct&am&ca&as", "", "&c> Click to help &aSanta")); + public static final SeasonalCategory VALENTINES_DAY = new SeasonalCategory(2, 2, new CustomItem(Material.POPPY, "&dValentine's Day", "", "&d> Click to celebrate Love")); + public static final SeasonalCategory EASTER = new SeasonalCategory(4, 2, new CustomItem(Material.EGG, "&6Easter", "", "&a> Click to paint some Eggs")); + public static final SeasonalCategory BIRTHDAY = new SeasonalCategory(10, 1, new CustomItem(Material.FIREWORK_ROCKET, "&a&lTheBusyBiscuit's Birthday &7(26th October)", "", "&a> Click to celebrate with me")); private static ItemStack getSkull(String texture) { try { diff --git a/src/me/mrCookieSlime/Slimefun/Objects/Category.java b/src/me/mrCookieSlime/Slimefun/Objects/Category.java index fa5c5a2c8..366e3aad1 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/Category.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/Category.java @@ -20,7 +20,7 @@ import me.mrCookieSlime.Slimefun.api.Slimefun; * @since 4.0 * * @see LockedCategory - * @see SeasonCategory + * @see SeasonalCategory */ public class Category { /** @@ -75,8 +75,8 @@ public class Category { list.add(this); Collections.sort(list, new CategorySorter()); - if (this instanceof SeasonCategory) { - if (((SeasonCategory) this).isUnlocked()) Slimefun.current_categories.add(this); + if (this instanceof SeasonalCategory) { + if (((SeasonalCategory) this).isUnlocked()) Slimefun.current_categories.add(this); } else Slimefun.current_categories.add(this); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/Charge.java b/src/me/mrCookieSlime/Slimefun/Objects/Charge.java deleted file mode 100644 index 797f18505..000000000 --- a/src/me/mrCookieSlime/Slimefun/Objects/Charge.java +++ /dev/null @@ -1,21 +0,0 @@ -package me.mrCookieSlime.Slimefun.Objects; - -public class Charge { - - private double energy; - private double capacity; - - public Charge(double energy, double capacity) { - this.energy = energy; - this.capacity = capacity; - } - - public double getStoredEnergy() { - return energy; - } - - public double getCapacity() { - return capacity; - } - -} diff --git a/src/me/mrCookieSlime/Slimefun/Objects/LockedCategory.java b/src/me/mrCookieSlime/Slimefun/Objects/LockedCategory.java index cd6c86ead..d0560bd2c 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/LockedCategory.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/LockedCategory.java @@ -20,7 +20,7 @@ import org.bukkit.inventory.ItemStack; * @since 4.0 * * @see Category - * @see SeasonCategory + * @see SeasonalCategory */ public class LockedCategory extends Category { diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SeasonCategory.java b/src/me/mrCookieSlime/Slimefun/Objects/SeasonalCategory.java similarity index 92% rename from src/me/mrCookieSlime/Slimefun/Objects/SeasonCategory.java rename to src/me/mrCookieSlime/Slimefun/Objects/SeasonalCategory.java index 2515ce4b9..75d5dbcf2 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SeasonCategory.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SeasonalCategory.java @@ -16,7 +16,7 @@ import org.bukkit.inventory.ItemStack; * @see Category * @see LockedCategory */ -public class SeasonCategory extends Category { +public class SeasonalCategory extends Category { private int month = -1; @@ -32,7 +32,7 @@ public class SeasonCategory extends Category { * * @since 4.0 */ - public SeasonCategory(int month, int tier, ItemStack item) { + public SeasonalCategory(int month, int tier, ItemStack item) { super(item, tier); this.month = month - 1; } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricDustWasher.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricDustWasher.java index 7c169204b..d15d05cef 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricDustWasher.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricDustWasher.java @@ -19,6 +19,7 @@ import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineHelper; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecipe; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.OreWasher; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.api.BlockStorage; import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/ArmorForge.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/ArmorForge.java new file mode 100644 index 000000000..551d1f2bf --- /dev/null +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/ArmorForge.java @@ -0,0 +1,100 @@ +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks; + +import java.util.List; + +import org.bukkit.Bukkit; +import org.bukkit.Material; +import org.bukkit.Sound; +import org.bukkit.block.Block; +import org.bukkit.block.BlockFace; +import org.bukkit.block.Dispenser; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.ItemStack; + +import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib; +import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; +import me.mrCookieSlime.Slimefun.SlimefunStartup; +import me.mrCookieSlime.Slimefun.Lists.Categories; +import me.mrCookieSlime.Slimefun.Lists.RecipeType; +import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunMachine; +import me.mrCookieSlime.Slimefun.Objects.handlers.MultiBlockInteractionHandler; +import me.mrCookieSlime.Slimefun.Setup.Messages; +import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; +import me.mrCookieSlime.Slimefun.api.Slimefun; + +public class ArmorForge extends SlimefunMachine { + + public ArmorForge() { + super( + Categories.MACHINES_1, + SlimefunItems.ARMOR_FORGE, + "ARMOR_FORGE", + new ItemStack[] {null, null, null, null, new ItemStack(Material.ANVIL), null, null, new CustomItem(Material.DISPENSER, "Dispenser (Facing up)"), null}, + new ItemStack[] {}, + Material.ANVIL + ); + } + + @Override + public void register() { + register(true, onInteract()); + } + + private MultiBlockInteractionHandler onInteract() { + return (p, mb, b) -> { + if (mb.isMultiBlock(this)) { + if (!isDisabled() && CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true) && Slimefun.hasUnlocked(p, getItem(), true)) { + Block dispBlock = b.getRelative(BlockFace.DOWN); + Dispenser disp = (Dispenser) dispBlock.getState(); + Inventory inv = disp.getInventory(); + List inputs = RecipeType.getRecipeInputList(this); + + for (int i = 0; i < inputs.size(); i++) { + boolean craft = true; + for (int j = 0; j < inv.getContents().length; j++) { + if (!SlimefunManager.isItemSimiliar(inv.getContents()[j], inputs.get(i)[j], true)) { + craft = false; + break; + } + } + + if (craft) { + final ItemStack adding = RecipeType.getRecipeOutputList(this, inputs.get(i)).clone(); + if (Slimefun.hasUnlocked(p, adding, true)) { + Inventory outputInv = SlimefunMachine.findValidOutputInv(adding, dispBlock, inv); + if (outputInv != null) { + for (ItemStack removing: inputs.get(i)) { + if (removing != null) inv.removeItem(removing); + } + + for (int j = 0; j < 4; j++) { + int current = j; + Bukkit.getScheduler().runTaskLater(SlimefunStartup.instance, () -> { + if (current < 3) { + p.getWorld().playSound(p.getLocation(), Sound.BLOCK_ANVIL_USE, 1F, 2F); + } + else { + p.getWorld().playSound(p.getLocation(), Sound.ENTITY_ARROW_HIT_PLAYER, 1F, 1F); + outputInv.addItem(adding); + } + }, j*20L); + } + } + else Messages.local.sendTranslation(p, "machines.full-inventory", true); + } + return true; + } + } + + Messages.local.sendTranslation(p, "machines.pattern-not-found", true); + } + return true; + } + else { + return false; + } + }; + } + +} diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/Compressor.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/Compressor.java new file mode 100644 index 000000000..14ea47c49 --- /dev/null +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/Compressor.java @@ -0,0 +1,87 @@ +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks; + +import org.bukkit.Bukkit; +import org.bukkit.Material; +import org.bukkit.Sound; +import org.bukkit.block.Block; +import org.bukkit.block.BlockFace; +import org.bukkit.block.Dispenser; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.ItemStack; + +import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib; +import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; +import me.mrCookieSlime.Slimefun.SlimefunStartup; +import me.mrCookieSlime.Slimefun.Lists.Categories; +import me.mrCookieSlime.Slimefun.Lists.RecipeType; +import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunMachine; +import me.mrCookieSlime.Slimefun.Objects.handlers.MultiBlockInteractionHandler; +import me.mrCookieSlime.Slimefun.Setup.Messages; +import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; +import me.mrCookieSlime.Slimefun.api.Slimefun; + +public class Compressor extends SlimefunMachine { + + public Compressor() { + super( + Categories.MACHINES_1, + SlimefunItems.COMPRESSOR, + "COMPRESSOR", + new ItemStack[] {null, null, null, null, new ItemStack(Material.NETHER_BRICK_FENCE), null, new ItemStack(Material.PISTON), new CustomItem(Material.DISPENSER, "Dispenser (Facing up)"), new ItemStack(Material.PISTON)}, + new ItemStack[] {new ItemStack(Material.COAL, 8), SlimefunItems.CARBON, new CustomItem(SlimefunItems.STEEL_INGOT, 8), SlimefunItems.STEEL_PLATE, new CustomItem(SlimefunItems.CARBON, 4), SlimefunItems.COMPRESSED_CARBON, new CustomItem(SlimefunItems.STONE_CHUNK, 4), new ItemStack(Material.COBBLESTONE), new CustomItem(SlimefunItems.REINFORCED_ALLOY_INGOT, 8), SlimefunItems.REINFORCED_PLATE}, + Material.NETHER_BRICK_FENCE + ); + } + + @Override + public void register() { + register(true, onInteract()); + } + + private MultiBlockInteractionHandler onInteract() { + return (p, mb, b) -> { + if (mb.isMultiBlock(this)) { + if (!isDisabled() && CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true) && Slimefun.hasUnlocked(p, getItem(), true)) { + Block dispBlock = b.getRelative(BlockFace.DOWN); + Dispenser disp = (Dispenser) dispBlock.getState(); + Inventory inv = disp.getInventory(); + for (ItemStack current: inv.getContents()) { + for (ItemStack convert: RecipeType.getRecipeInputs(this)) { + if (convert != null && SlimefunManager.isItemSimiliar(current, convert, true)) { + final ItemStack adding = RecipeType.getRecipeOutput(this, convert); + Inventory outputInv = SlimefunMachine.findValidOutputInv(adding, dispBlock, inv); + if (outputInv != null) { + ItemStack removing = current.clone(); + removing.setAmount(convert.getAmount()); + inv.removeItem(removing); + for (int i = 0; i < 4; i++) { + int j = i; + + Bukkit.getScheduler().runTaskLater(SlimefunStartup.instance, () -> { + if (j < 3) { + p.getWorld().playSound(p.getLocation(), j == 1 ? Sound.BLOCK_PISTON_CONTRACT : Sound.BLOCK_PISTON_EXTEND, 1F, j == 0 ? 1F : 2F); + } + else { + p.getWorld().playSound(p.getLocation(), Sound.ENTITY_ARROW_HIT_PLAYER, 1F, 1F); + outputInv.addItem(adding); + } + }, i*20L); + } + } + else Messages.local.sendTranslation(p, "machines.full-inventory", true); + return true; + } + } + } + Messages.local.sendTranslation(p, "machines.unknown-material", true); + } + return true; + } + else { + return false; + } + }; + } + +} diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/EnhancedCraftingTable.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/EnhancedCraftingTable.java similarity index 96% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/EnhancedCraftingTable.java rename to src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/EnhancedCraftingTable.java index 4ae5f88c1..489da9dcb 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/EnhancedCraftingTable.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/EnhancedCraftingTable.java @@ -1,4 +1,4 @@ -package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines; +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks; import java.util.List; import java.util.UUID; @@ -49,7 +49,7 @@ public class EnhancedCraftingTable extends SlimefunMachine { private MultiBlockInteractionHandler onInteract() { return (p, mb, b) -> { if (mb.isMultiBlock(this)) { - if (CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true) && Slimefun.hasUnlocked(p, getItem(), true)) { + if (!isDisabled() && CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true) && Slimefun.hasUnlocked(p, getItem(), true)) { // Objects dispBlock and disp have been split up, in order to add the output chest functionallity, which is the only functionallity // that is dependant on the dispenser's block methods. // the Dispenser disp still remains the same though, and as such doesn't break any existing code which involves said object. diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/GrindStone.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/GrindStone.java new file mode 100644 index 000000000..d1d28a4b0 --- /dev/null +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/GrindStone.java @@ -0,0 +1,79 @@ +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks; + +import org.bukkit.Material; +import org.bukkit.Sound; +import org.bukkit.block.Block; +import org.bukkit.block.BlockFace; +import org.bukkit.block.Dispenser; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.ItemStack; + +import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib; +import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; +import me.mrCookieSlime.Slimefun.Lists.Categories; +import me.mrCookieSlime.Slimefun.Lists.RecipeType; +import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunMachine; +import me.mrCookieSlime.Slimefun.Objects.handlers.MultiBlockInteractionHandler; +import me.mrCookieSlime.Slimefun.Setup.Messages; +import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; +import me.mrCookieSlime.Slimefun.api.Slimefun; + +public class GrindStone extends SlimefunMachine { + + public GrindStone() { + super( + Categories.MACHINES_1, + SlimefunItems.GRIND_STONE, + "GRIND_STONE", + new ItemStack[] {null, null, null, null, new ItemStack(Material.OAK_FENCE), null, null, new CustomItem(Material.DISPENSER, "Dispenser (Facing up)"), null}, + new ItemStack[] {new ItemStack(Material.BLAZE_ROD), new ItemStack(Material.BLAZE_POWDER, 4), new ItemStack(Material.BONE), new ItemStack(Material.BONE_MEAL, 4), new ItemStack(Material.GRAVEL), new ItemStack(Material.FLINT), new ItemStack(Material.NETHER_WART), new CustomItem(SlimefunItems.MAGIC_LUMP_1, 2), new ItemStack(Material.ENDER_EYE), new CustomItem(SlimefunItems.ENDER_LUMP_1, 2), new ItemStack(Material.COBBLESTONE), new ItemStack(Material.GRAVEL), new ItemStack(Material.WHEAT), SlimefunItems.WHEAT_FLOUR, new ItemStack(Material.DIRT), SlimefunItems.STONE_CHUNK, new ItemStack(Material.SANDSTONE), new ItemStack(Material.SAND, 4), new ItemStack(Material.RED_SANDSTONE), new ItemStack(Material.RED_SAND, 4)}, + Material.OAK_FENCE + ); + } + + @Override + public void register() { + register(true, onInteract()); + } + + private MultiBlockInteractionHandler onInteract() { + return (p, mb, b) -> { + if (mb.isMultiBlock(this)) { + if (!isDisabled() && CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true) && Slimefun.hasUnlocked(p, getItem(), true)) { + Block dispBlock = b.getRelative(BlockFace.DOWN); + Dispenser disp = (Dispenser) dispBlock.getState(); + Inventory inv = disp.getInventory(); + + for (ItemStack current: inv.getContents()) { + for (ItemStack convert: RecipeType.getRecipeInputs(this)) { + if (convert != null && SlimefunManager.isItemSimiliar(current, convert, true)) { + ItemStack output = RecipeType.getRecipeOutput(this, convert); + Inventory outputInv = SlimefunMachine.findValidOutputInv(output, dispBlock, inv); + + if (outputInv != null) { + ItemStack removing = current.clone(); + removing.setAmount(1); + inv.removeItem(removing); + outputInv.addItem(output); + p.getWorld().playSound(p.getLocation(), Sound.BLOCK_WOODEN_BUTTON_CLICK_ON, 1, 1); + } + else { + Messages.local.sendTranslation(p, "machines.full-inventory", true); + } + + return true; + } + } + } + Messages.local.sendTranslation(p, "machines.unknown-material", true); + } + return true; + } + else { + return false; + } + }; + } + +} diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/MagicWorkbench.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/MagicWorkbench.java similarity index 96% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/MagicWorkbench.java rename to src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/MagicWorkbench.java index cdef16870..6968281e9 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/MagicWorkbench.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/MagicWorkbench.java @@ -1,4 +1,4 @@ -package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines; +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks; import java.util.List; import java.util.UUID; @@ -50,7 +50,7 @@ public class MagicWorkbench extends SlimefunMachine { private MultiBlockInteractionHandler onInteract() { return (p, mb, b) -> { if (mb.isMultiBlock(this)) { - if (CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true) && Slimefun.hasUnlocked(p, getItem(), true)) { + if (!isDisabled() && CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true) && Slimefun.hasUnlocked(p, getItem(), true)) { Block dispBlock = null; // Maybe this could be implemented by instead looping over a BlockFace<> array? diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/OreCrusher.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/OreCrusher.java new file mode 100644 index 000000000..63d6688f9 --- /dev/null +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/OreCrusher.java @@ -0,0 +1,74 @@ +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks; + +import org.bukkit.Effect; +import org.bukkit.Material; +import org.bukkit.block.Block; +import org.bukkit.block.BlockFace; +import org.bukkit.block.Dispenser; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.ItemStack; + +import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib; +import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; +import me.mrCookieSlime.Slimefun.Lists.Categories; +import me.mrCookieSlime.Slimefun.Lists.RecipeType; +import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunMachine; +import me.mrCookieSlime.Slimefun.Objects.handlers.MultiBlockInteractionHandler; +import me.mrCookieSlime.Slimefun.Setup.Messages; +import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; +import me.mrCookieSlime.Slimefun.api.Slimefun; + +public class OreCrusher extends SlimefunMachine { + + public OreCrusher() { + super( + Categories.MACHINES_1, + SlimefunItems.ORE_CRUSHER, + "ORE_CRUSHER", + new ItemStack[] {null, null, null, null, new ItemStack(Material.NETHER_BRICK_FENCE), null, new ItemStack(Material.IRON_BARS), new CustomItem(Material.DISPENSER, "Dispenser (Facing up)"), new ItemStack(Material.IRON_BARS)}, + new ItemStack[] {new ItemStack(Material.IRON_ORE), new CustomItem(SlimefunItems.IRON_DUST, (Boolean) Slimefun.getItemValue("ORE_CRUSHER", "double-ores") ? 2: 1), new ItemStack(Material.GOLD_ORE), new CustomItem(SlimefunItems.GOLD_DUST, (Boolean) Slimefun.getItemValue("ORE_CRUSHER", "double-ores") ? 2: 1), new ItemStack(Material.NETHERRACK, 16), SlimefunItems.SULFATE, SlimefunItems.SIFTED_ORE, SlimefunItems.CRUSHED_ORE, SlimefunItems.CRUSHED_ORE, SlimefunItems.PULVERIZED_ORE, SlimefunItems.PURE_ORE_CLUSTER, SlimefunItems.TINY_URANIUM, new ItemStack(Material.COBBLESTONE, 8), new ItemStack(Material.SAND, 1), new ItemStack(Material.GOLD_INGOT), SlimefunItems.GOLD_DUST, SlimefunItems.GOLD_4K, SlimefunItems.GOLD_DUST}, + Material.NETHER_BRICK_FENCE + ); + } + + @Override + public void register() { + register(true, onInteract()); + } + + private MultiBlockInteractionHandler onInteract() { + return (p, mb, b) -> { + if (mb.isMultiBlock(this)) { + if (!isDisabled() && CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true) && Slimefun.hasUnlocked(p, getItem(), true)) { + Block dispBlock = b.getRelative(BlockFace.DOWN); + Dispenser disp = (Dispenser) dispBlock.getState(); + Inventory inv = disp.getInventory(); + for (ItemStack current: inv.getContents()) { + for (ItemStack convert: RecipeType.getRecipeInputs(this)) { + if (convert != null && SlimefunManager.isItemSimiliar(current, convert, true)) { + ItemStack adding = RecipeType.getRecipeOutput(this, convert); + Inventory outputInv = SlimefunMachine.findValidOutputInv(adding, dispBlock, inv); + if (outputInv != null) { + ItemStack removing = current.clone(); + removing.setAmount(convert.getAmount()); + inv.removeItem(removing); + outputInv.addItem(adding); + p.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, 1); + } + else Messages.local.sendTranslation(p, "machines.full-inventory", true); + return true; + } + } + } + Messages.local.sendTranslation(p, "machines.unknown-material", true); + } + return true; + } + else { + return false; + } + }; + } + +} diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/OreWasher.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/OreWasher.java similarity index 95% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/OreWasher.java rename to src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/OreWasher.java index 7a90427f0..4e385809b 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/OreWasher.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/OreWasher.java @@ -1,4 +1,4 @@ -package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines; +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks; import java.util.Random; @@ -45,7 +45,7 @@ public class OreWasher extends SlimefunMachine { private MultiBlockInteractionHandler onInteract() { return (p, mb, b) -> { if (mb.isMultiBlock(this)) { - if (CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true) && Slimefun.hasUnlocked(p, getItem(), true)) { + if (!isDisabled() && CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true) && Slimefun.hasUnlocked(p, getItem(), true)) { Block dispBlock = b.getRelative(BlockFace.UP); Dispenser disp = (Dispenser) dispBlock.getState(); Inventory inv = disp.getInventory(); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/Smeltery.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/Smeltery.java similarity index 96% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/Smeltery.java rename to src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/Smeltery.java index 43f1fff23..483e209cd 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/Smeltery.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/Smeltery.java @@ -1,4 +1,4 @@ -package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines; +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks; import java.util.List; import java.util.Random; @@ -50,7 +50,7 @@ public class Smeltery extends SlimefunMachine { private MultiBlockInteractionHandler onInteract() { return (p, mb, b) -> { if (mb.isMultiBlock(this)) { - if (CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true) && Slimefun.hasUnlocked(p, getItem(), true)) { + if (!isDisabled() && CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true) && Slimefun.hasUnlocked(p, getItem(), true)) { Block dispBlock = b.getRelative(BlockFace.DOWN); Dispenser disp = (Dispenser) dispBlock.getState(); Inventory inv = disp.getInventory(); diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java index 944bf8438..554a4bc60 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java @@ -125,7 +125,6 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.ElectricIngotFact import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.ElectricSmeltery; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.ElectrifiedCrucible; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.EnergyRegulator; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.EnhancedCraftingTable; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.FluidPump; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.FoodComposter; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.FoodFabricator; @@ -133,16 +132,21 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.Freezer; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.HeatedPressureChamber; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.HologramProjector; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.InfusedHopper; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.MagicWorkbench; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.NetherDrill; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.OilPump; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.OreWasher; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.ReactorAccessPort; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.Refinery; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.Smeltery; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.TrashCan; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.WitherAssembler; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.XPCollector; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.ArmorForge; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.Compressor; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.EnhancedCraftingTable; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.GrindStone; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.MagicWorkbench; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.OreCrusher; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.OreWasher; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.Smeltery; import me.mrCookieSlime.Slimefun.Objects.handlers.AutonomousMachineHandler; import me.mrCookieSlime.Slimefun.Objects.handlers.BlockBreakHandler; import me.mrCookieSlime.Slimefun.Objects.handlers.BlockPlaceHandler; @@ -256,197 +260,10 @@ public final class SlimefunSetup { new ItemStack[] {SlimefunItems.SALT, new ItemStack(Material.COOKED_BEEF), null, null, null, null, null, null, null}, new String[] {"Saturation"}, new Integer[] {20}) .register(true); - new SlimefunMachine(Categories.MACHINES_1, SlimefunItems.GRIND_STONE, "GRIND_STONE", - new ItemStack[] {null, null, null, null, new ItemStack(Material.OAK_FENCE), null, null, new CustomItem(Material.DISPENSER, "Dispenser (Facing up)"), null}, - new ItemStack[] {new ItemStack(Material.BLAZE_ROD), new ItemStack(Material.BLAZE_POWDER, 4), new ItemStack(Material.BONE), new ItemStack(Material.BONE_MEAL, 4), new ItemStack(Material.GRAVEL), new ItemStack(Material.FLINT), new ItemStack(Material.NETHER_WART), new CustomItem(SlimefunItems.MAGIC_LUMP_1, 2), new ItemStack(Material.ENDER_EYE), new CustomItem(SlimefunItems.ENDER_LUMP_1, 2), new ItemStack(Material.COBBLESTONE), new ItemStack(Material.GRAVEL), new ItemStack(Material.WHEAT), SlimefunItems.WHEAT_FLOUR, new ItemStack(Material.DIRT), SlimefunItems.STONE_CHUNK, new ItemStack(Material.SANDSTONE), new ItemStack(Material.SAND, 4), new ItemStack(Material.RED_SANDSTONE), new ItemStack(Material.RED_SAND, 4)}, - Material.OAK_FENCE) - .register(true, new MultiBlockInteractionHandler() { - - @Override - public boolean onInteract(Player p, MultiBlock mb, Block b) { - - SlimefunMachine machine = (SlimefunMachine) SlimefunItem.getByID("GRIND_STONE"); - - if (mb.isMultiBlock(machine)) { - if (CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true) && Slimefun.hasUnlocked(p, machine.getItem(), true)) { - Block dispBlock = b.getRelative(BlockFace.DOWN); - Dispenser disp = (Dispenser) dispBlock.getState(); - Inventory inv = disp.getInventory(); - for (ItemStack current: inv.getContents()) { - for (ItemStack convert: RecipeType.getRecipeInputs(machine)) { - if (convert != null && SlimefunManager.isItemSimiliar(current, convert, true)) { - ItemStack output = RecipeType.getRecipeOutput(machine, convert); - Inventory outputInv = SlimefunMachine.findValidOutputInv(output, dispBlock, inv); - if (outputInv != null) { - ItemStack removing = current.clone(); - removing.setAmount(1); - inv.removeItem(removing); - outputInv.addItem(output); - p.getWorld().playSound(p.getLocation(), Sound.BLOCK_WOODEN_BUTTON_CLICK_ON, 1, 1); - } - else Messages.local.sendTranslation(p, "machines.full-inventory", true); - return true; - } - } - } - Messages.local.sendTranslation(p, "machines.unknown-material", true); - } - return true; - } - else return false; - } - }); - - new SlimefunMachine(Categories.MACHINES_1, SlimefunItems.ARMOR_FORGE, "ARMOR_FORGE", - new ItemStack[] {null, null, null, null, new ItemStack(Material.ANVIL), null, null, new CustomItem(Material.DISPENSER, "Dispenser (Facing up)"), null}, - new ItemStack[] {}, - Material.ANVIL) - .register(true, new MultiBlockInteractionHandler() { - - @Override - public boolean onInteract(final Player p, MultiBlock mb, Block b) { - - SlimefunMachine machine = (SlimefunMachine) SlimefunItem.getByID("ARMOR_FORGE"); - - if (mb.isMultiBlock(machine)) { - if (CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true) && Slimefun.hasUnlocked(p, machine.getItem(), true)) { - Block dispBlock = b.getRelative(BlockFace.DOWN); - Dispenser disp = (Dispenser) dispBlock.getState(); - Inventory inv = disp.getInventory(); - List inputs = RecipeType.getRecipeInputList(machine); - - for (int i = 0; i < inputs.size(); i++) { - boolean craft = true; - for (int j = 0; j < inv.getContents().length; j++) { - if (!SlimefunManager.isItemSimiliar(inv.getContents()[j], inputs.get(i)[j], true)) { - craft = false; - break; - } - } - - if (craft) { - final ItemStack adding = RecipeType.getRecipeOutputList(machine, inputs.get(i)).clone(); - if (Slimefun.hasUnlocked(p, adding, true)) { - Inventory outputInv = SlimefunMachine.findValidOutputInv(adding, dispBlock, inv); - if (outputInv != null) { - for (ItemStack removing: inputs.get(i)) { - if (removing != null) inv.removeItem(removing); - } - for (int j = 0; j < 4; j++) { - int current = j; - Bukkit.getScheduler().runTaskLater(SlimefunStartup.instance, () -> { - if (current < 3) { - p.getWorld().playSound(p.getLocation(), Sound.BLOCK_ANVIL_USE, 1F, 2F); - } else { - p.getWorld().playSound(p.getLocation(), Sound.ENTITY_ARROW_HIT_PLAYER, 1F, 1F); - outputInv.addItem(adding); - } - }, j*20L); - } - } - else Messages.local.sendTranslation(p, "machines.full-inventory", true); - } - return true; - } - } - Messages.local.sendTranslation(p, "machines.pattern-not-found", true); - } - return true; - } - else return false; - } - }); - - new SlimefunMachine(Categories.MACHINES_1, SlimefunItems.ORE_CRUSHER, "ORE_CRUSHER", - new ItemStack[] {null, null, null, null, new ItemStack(Material.NETHER_BRICK_FENCE), null, new ItemStack(Material.IRON_BARS), new CustomItem(Material.DISPENSER, "Dispenser (Facing up)"), new ItemStack(Material.IRON_BARS)}, - new ItemStack[] {new ItemStack(Material.IRON_ORE), new CustomItem(SlimefunItems.IRON_DUST, (Boolean) Slimefun.getItemValue("ORE_CRUSHER", "double-ores") ? 2: 1), new ItemStack(Material.GOLD_ORE), new CustomItem(SlimefunItems.GOLD_DUST, (Boolean) Slimefun.getItemValue("ORE_CRUSHER", "double-ores") ? 2: 1), new ItemStack(Material.NETHERRACK, 16), SlimefunItems.SULFATE, SlimefunItems.SIFTED_ORE, SlimefunItems.CRUSHED_ORE, SlimefunItems.CRUSHED_ORE, SlimefunItems.PULVERIZED_ORE, SlimefunItems.PURE_ORE_CLUSTER, SlimefunItems.TINY_URANIUM, new ItemStack(Material.COBBLESTONE, 8), new ItemStack(Material.SAND, 1), new ItemStack(Material.GOLD_INGOT), SlimefunItems.GOLD_DUST, SlimefunItems.GOLD_4K, SlimefunItems.GOLD_DUST}, - Material.NETHER_BRICK_FENCE) - .register(true, new MultiBlockInteractionHandler() { - - @Override - public boolean onInteract(Player p, MultiBlock mb, Block b) { - - SlimefunMachine machine = (SlimefunMachine) SlimefunItem.getByID("ORE_CRUSHER"); - - if (mb.isMultiBlock(machine)) { - if (CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true) && Slimefun.hasUnlocked(p, machine.getItem(), true)) { - Block dispBlock = b.getRelative(BlockFace.DOWN); - Dispenser disp = (Dispenser) dispBlock.getState(); - Inventory inv = disp.getInventory(); - for (ItemStack current: inv.getContents()) { - for (ItemStack convert: RecipeType.getRecipeInputs(machine)) { - if (convert != null && SlimefunManager.isItemSimiliar(current, convert, true)) { - ItemStack adding = RecipeType.getRecipeOutput(machine, convert); - Inventory outputInv = SlimefunMachine.findValidOutputInv(adding, dispBlock, inv); - if (outputInv != null) { - ItemStack removing = current.clone(); - removing.setAmount(convert.getAmount()); - inv.removeItem(removing); - outputInv.addItem(adding); - p.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, 1); - } - else Messages.local.sendTranslation(p, "machines.full-inventory", true); - return true; - } - } - } - Messages.local.sendTranslation(p, "machines.unknown-material", true); - } - return true; - } - else return false; - } - }); - - new SlimefunMachine(Categories.MACHINES_1, SlimefunItems.COMPRESSOR, "COMPRESSOR", - new ItemStack[] {null, null, null, null, new ItemStack(Material.NETHER_BRICK_FENCE), null, new ItemStack(Material.PISTON), new CustomItem(Material.DISPENSER, "Dispenser (Facing up)"), new ItemStack(Material.PISTON)}, - new ItemStack[] {new ItemStack(Material.COAL, 8), SlimefunItems.CARBON, new CustomItem(SlimefunItems.STEEL_INGOT, 8), SlimefunItems.STEEL_PLATE, new CustomItem(SlimefunItems.CARBON, 4), SlimefunItems.COMPRESSED_CARBON, new CustomItem(SlimefunItems.STONE_CHUNK, 4), new ItemStack(Material.COBBLESTONE), new CustomItem(SlimefunItems.REINFORCED_ALLOY_INGOT, 8), SlimefunItems.REINFORCED_PLATE}, - Material.NETHER_BRICK_FENCE) - .register(true, new MultiBlockInteractionHandler() { - - @Override - public boolean onInteract(final Player p, MultiBlock mb, Block b) { - - SlimefunMachine machine = (SlimefunMachine) SlimefunItem.getByID("COMPRESSOR"); - - if (mb.isMultiBlock(machine)) { - if (CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true) && Slimefun.hasUnlocked(p, machine.getItem(), true)) { - Block dispBlock = b.getRelative(BlockFace.DOWN); - Dispenser disp = (Dispenser) dispBlock.getState(); - Inventory inv = disp.getInventory(); - for (ItemStack current: inv.getContents()) { - for (ItemStack convert: RecipeType.getRecipeInputs(machine)) { - if (convert != null && SlimefunManager.isItemSimiliar(current, convert, true)) { - final ItemStack adding = RecipeType.getRecipeOutput(machine, convert); - Inventory outputInv = SlimefunMachine.findValidOutputInv(adding, dispBlock, inv); - if (outputInv != null) { - ItemStack removing = current.clone(); - removing.setAmount(convert.getAmount()); - inv.removeItem(removing); - for (int i = 0; i < 4; i++) { - int j = i; - Bukkit.getScheduler().runTaskLater(SlimefunStartup.instance, () -> { - if (j < 3) { - p.getWorld().playSound(p.getLocation(), j == 1 ? Sound.BLOCK_PISTON_CONTRACT : Sound.BLOCK_PISTON_EXTEND, 1F, j == 0 ? 1F : 2F); - } else { - p.getWorld().playSound(p.getLocation(), Sound.ENTITY_ARROW_HIT_PLAYER, 1F, 1F); - outputInv.addItem(adding); - } - }, i*20L); - } - } - else Messages.local.sendTranslation(p, "machines.full-inventory", true); - return true; - } - } - } - Messages.local.sendTranslation(p, "machines.unknown-material", true); - } - return true; - } - else return false; - } - }); + new GrindStone().register(true); + new ArmorForge().register(true); + new OreCrusher().register(true); + new Compressor().register(true); new SlimefunItem(Categories.LUMPS_AND_MAGIC, SlimefunItems.MAGIC_LUMP_1, "MAGIC_LUMP_1", RecipeType.GRIND_STONE, new ItemStack[] {null, null, null, null, new ItemStack(Material.NETHER_WART), null, null, null, null}, new CustomItem(SlimefunItems.MAGIC_LUMP_1, 2)) diff --git a/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java b/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java index 6f729023a..396c31940 100644 --- a/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java +++ b/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java @@ -37,7 +37,7 @@ import me.mrCookieSlime.Slimefun.Misc.BookDesign; import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.LockedCategory; import me.mrCookieSlime.Slimefun.Objects.Research; -import me.mrCookieSlime.Slimefun.Objects.SeasonCategory; +import me.mrCookieSlime.Slimefun.Objects.SeasonalCategory; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunGadget; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunMachine; @@ -345,8 +345,8 @@ public final class SlimefunGuide { tooltips.add(parents.toString()); actions.add(null); } - else if (category instanceof SeasonCategory) { - if (((SeasonCategory) category).isUnlocked()) { + else if (category instanceof SeasonalCategory) { + if (((SeasonalCategory) category).isUnlocked()) { texts.add(ChatColor.translateAlternateColorCodes('&', shorten("&a", StringUtils.formatItemName(category.getItem(), false)))); tooltips.add(ChatColor.translateAlternateColorCodes('&', "&eClick to open the following Category:\n" + StringUtils.formatItemName(category.getItem(), false))); actions.add(new PlayerRunnable(1) { @@ -466,7 +466,7 @@ public final class SlimefunGuide { // Dont display that Category... } else if (!(category instanceof LockedCategory)) { - if (!(category instanceof SeasonCategory)) { + if (!(category instanceof SeasonalCategory)) { menu.addItem(index, category.getItem()); menu.addMenuClickHandler(index, (pl, slot, item, action) -> { openCategory(pl, category, survival, 1, book); @@ -475,7 +475,7 @@ public final class SlimefunGuide { index++; } else { - if (((SeasonCategory) category).isUnlocked()) { + if (((SeasonalCategory) category).isUnlocked()) { menu.addItem(index, category.getItem()); menu.addMenuClickHandler(index, (pl, slot, item, action) -> { openCategory(pl, category, survival, 1, book); diff --git a/src/me/mrCookieSlime/Slimefun/SlimefunStartup.java b/src/me/mrCookieSlime/Slimefun/SlimefunStartup.java index 5663ace8d..dbada7c7e 100644 --- a/src/me/mrCookieSlime/Slimefun/SlimefunStartup.java +++ b/src/me/mrCookieSlime/Slimefun/SlimefunStartup.java @@ -27,7 +27,7 @@ import me.mrCookieSlime.Slimefun.Objects.Research; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunArmorPiece; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.OreWasher; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.OreWasher; import me.mrCookieSlime.Slimefun.Setup.CSCoreLibLoader; import me.mrCookieSlime.Slimefun.Setup.Files; import me.mrCookieSlime.Slimefun.Setup.Messages; From 4cd9628786cb72f3c8dd65263aea232130f7bd40 Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Fri, 30 Aug 2019 11:49:45 +0200 Subject: [PATCH 060/169] Retextured Categories + fixed server-crash when using Flasks of Knowledges really fast --- .../Slimefun/Lists/Categories.java | 8 ++++---- .../Slimefun/Setup/SlimefunSetup.java | 20 ++++++++++++++----- 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/Lists/Categories.java b/src/me/mrCookieSlime/Slimefun/Lists/Categories.java index aaf4e5349..9e8ee5c68 100644 --- a/src/me/mrCookieSlime/Slimefun/Lists/Categories.java +++ b/src/me/mrCookieSlime/Slimefun/Lists/Categories.java @@ -29,14 +29,14 @@ public final class Categories { public static final LockedCategory ELECTRICITY = new LockedCategory(new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNTU4NDQzMmFmNmYzODIxNjcxMjAyNThkMWVlZThjODdjNmU3NWQ5ZTQ3OWU3YjBkNGM3YjZhZDQ4Y2ZlZWYifX19"), "&bEnergy and Electricity", "", "&a> Click to open"), 4, MACHINES_1); public static final LockedCategory GPS = new LockedCategory(new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjBjOWMxYTAyMmY0MGI3M2YxNGI0Y2JhMzdjNzE4YzZhNTMzZjNhMjg2NGI2NTM2ZDVmNDU2OTM0Y2MxZiJ9fX0="), "&bGPS-based Machines", "", "&a> Click to open"), 4, MACHINES_1); public static final Category ARMOR = new Category(new CustomItem(Material.IRON_CHESTPLATE, "&7Armor", "", "&a> Click to open"), 2); - public static final Category LUMPS_AND_MAGIC = new Category(new CustomItem(Material.FIRE_CHARGE, "&7Magical Items", "", "&a> Click to open"), 2); - public static final Category MAGIC = new Category(new CustomItem(Material.BLAZE_POWDER, "&7Magical Gadgets", "", "&a> Click to open"), 3); + public static final Category LUMPS_AND_MAGIC = new Category(new CustomItem(SlimefunItems.RUNE_ENDER, "&7Magical Items", "", "&a> Click to open"), 2); + public static final Category MAGIC = new Category(new CustomItem(SlimefunItems.ENDER_BACKPACK, "&7Magical Gadgets", "", "&a> Click to open"), 3); public static final Category MISC = new Category(new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTRkYTk3ZjA4MGUzOTViODQyYzRjYzgyYTg0MDgyM2Q0ZGJkOGNhNjg4YTIwNjg1M2U1NzgzZTRiZmRjMDEyIn19fQ=="), "&7Miscellaneous", "", "&a> Click to open"), 2); public static final Category TECH = new Category(new CustomArmor(new CustomItem(Material.LEATHER_CHESTPLATE, "&7Technical Gadgets", "", "&a> Click to open"), Color.SILVER), 3); public static final Category RESOURCES = new Category(new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvY2U4ZjVhZGIxNGQ2YzlmNmI4MTBkMDI3NTQzZjFhOGMxZjQxN2UyZmVkOTkzYzk3YmNkODljNzRmNWUyZTgifX19"), "&7Resources", "", "&a> Click to open"), 1); public static final Category CARGO = new LockedCategory(new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZTUxMGJjODUzNjJhMTMwYTZmZjlkOTFmZjExZDZmYTQ2ZDdkMTkxMmEzNDMxZjc1MTU1OGVmM2M0ZDljMiJ9fX0="), "&cCargo Management", "", "&a> Click to open"), 4, MACHINES_1); - public static final Category TECH_MISC = new Category(new CustomItem(Material.COMPARATOR, "&7Technical Components", "", "&a> Click to open"), 2); - public static final Category MAGIC_ARMOR = new Category(new CustomItem(Material.GOLDEN_CHESTPLATE, "&7Magical Armor", "", "&a> Click to open"), 2); + public static final Category TECH_MISC = new Category(new CustomItem(SlimefunItems.HEATING_COIL, "&7Technical Components", "", "&a> Click to open"), 2); + public static final Category MAGIC_ARMOR = new Category(new CustomItem(SlimefunItems.ENDER_HELMET, "&7Magical Armor", "", "&a> Click to open"), 2); public static final Category TALISMANS_1 = new Category(new CustomItem(Material.EMERALD, "&7Talismans - &aTier I", "", "&a> Click to open"), 2); public static final LockedCategory TALISMANS_2 = new LockedCategory(new CustomItem(Material.EMERALD, "&7Talismans - &aTier II", "", "&a> Click to open"), 3, TALISMANS_1); public static final Category TOOLS = new Category(new CustomItem(Material.GOLDEN_PICKAXE, "&7Tools", "", "&a> Click to open"), 1); diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java index 554a4bc60..1a3eba2f5 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java @@ -19,6 +19,7 @@ import org.bukkit.Tag; import org.bukkit.block.Block; import org.bukkit.block.BlockFace; import org.bukkit.block.Chest; +import org.bukkit.block.Container; import org.bukkit.block.CreatureSpawner; import org.bukkit.block.Dispenser; import org.bukkit.block.data.Ageable; @@ -289,7 +290,7 @@ public final class SlimefunSetup { new ItemStack[] {SlimefunItems.ENDER_LUMP_2, SlimefunItems.ENDER_LUMP_2, null, SlimefunItems.ENDER_LUMP_2, SlimefunItems.ENDER_LUMP_2, null, null, null, null}) .register(true); - new SlimefunItem(Categories.PORTABLE, SlimefunItems.ENDER_BACKPACK, "ENDER_BACKPACK", RecipeType.ENHANCED_CRAFTING_TABLE, + new SlimefunItem(Categories.MAGIC, SlimefunItems.ENDER_BACKPACK, "ENDER_BACKPACK", RecipeType.MAGIC_WORKBENCH, new ItemStack[] {SlimefunItems.ENDER_LUMP_2, new ItemStack(Material.LEATHER), SlimefunItems.ENDER_LUMP_2, new ItemStack(Material.LEATHER), new ItemStack(Material.CHEST), new ItemStack(Material.LEATHER), SlimefunItems.ENDER_LUMP_2, new ItemStack(Material.LEATHER), SlimefunItems.ENDER_LUMP_2}) .register(true, new ItemInteractionHandler() { @@ -2251,10 +2252,19 @@ public final class SlimefunSetup { @Override public boolean onRightClick(ItemUseEvent e, Player p, ItemStack item) { if (SlimefunManager.isItemSimiliar(item, SlimefunItems.FLASK_OF_KNOWLEDGE, true) && p.getLevel() >= 1) { - p.setLevel(p.getLevel() - 1); - p.getInventory().addItem(new CustomItem(Material.EXPERIENCE_BOTTLE, "&aFlask of Knowledge")); - PlayerInventory.consumeItemInHand(p); - PlayerInventory.update(p); + if (e.getClickedBlock() == null || !(e.getClickedBlock().getState() instanceof Container)) { + p.setLevel(p.getLevel() - 1); + p.getInventory().addItem(new CustomItem(Material.EXPERIENCE_BOTTLE, "&aFlask of Knowledge")); + + p.playSound(p.getLocation(), Sound.ENTITY_EXPERIENCE_ORB_PICKUP, 1F, 0.5F); + + if (e.getParentEvent().getHand() == EquipmentSlot.HAND) { + p.getInventory().setItemInMainHand(InvUtils.decreaseItem(item, 1)); + } + else { + p.getInventory().setItemInOffHand(InvUtils.decreaseItem(item, 1)); + } + } return true; } else return false; From 579350814425d60080666457937e34209d6b77b5 Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Fri, 30 Aug 2019 12:00:28 +0200 Subject: [PATCH 061/169] Fixed Exception when doing /sf stats --- src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java | 1 + src/me/mrCookieSlime/Slimefun/api/BlockStorage.java | 2 +- src/me/mrCookieSlime/Slimefun/api/PlayerProfile.java | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java index 1a3eba2f5..21bef9378 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java @@ -2254,6 +2254,7 @@ public final class SlimefunSetup { if (SlimefunManager.isItemSimiliar(item, SlimefunItems.FLASK_OF_KNOWLEDGE, true) && p.getLevel() >= 1) { if (e.getClickedBlock() == null || !(e.getClickedBlock().getState() instanceof Container)) { p.setLevel(p.getLevel() - 1); + e.setCancelled(true); p.getInventory().addItem(new CustomItem(Material.EXPERIENCE_BOTTLE, "&aFlask of Knowledge")); p.playSound(p.getLocation(), Sound.ENTITY_EXPERIENCE_ORB_PICKUP, 1F, 0.5F); diff --git a/src/me/mrCookieSlime/Slimefun/api/BlockStorage.java b/src/me/mrCookieSlime/Slimefun/api/BlockStorage.java index 438e187d7..c72523af4 100644 --- a/src/me/mrCookieSlime/Slimefun/api/BlockStorage.java +++ b/src/me/mrCookieSlime/Slimefun/api/BlockStorage.java @@ -227,7 +227,7 @@ public class BlockStorage { if (changes == 0) return; - System.out.println("[Slimefun] Saving Blocks for World \"" + world.getName() + "\" (" + changes + " Changes queued)"); + System.out.println("[Slimefun] Saving Blocks for World \"" + world.getName() + "\" (" + changes + " Change(s) queued)"); Map cache = new HashMap<>(cache_blocks); diff --git a/src/me/mrCookieSlime/Slimefun/api/PlayerProfile.java b/src/me/mrCookieSlime/Slimefun/api/PlayerProfile.java index 3680dd35d..5b30bc2b0 100644 --- a/src/me/mrCookieSlime/Slimefun/api/PlayerProfile.java +++ b/src/me/mrCookieSlime/Slimefun/api/PlayerProfile.java @@ -163,7 +163,7 @@ public final class PlayerProfile { public String getTitle() { List titles = SlimefunStartup.instance.getSettings().RESEARCHES_TITLES; - int index = Math.round(Float.valueOf(String.valueOf(Math.round(((researches.size() * 100.0F) / titles.size()))))); + int index = Math.round(Float.valueOf(String.valueOf(Math.round(((researches.size() * 100.0F) / Research.list().size()) * 100.0F) / 100.0F)) / 100.0F) * titles.size(); if (index > 0) index--; return titles.get(index); } From 7e63ad904075e59761008738482fe5f346f077ac Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Fri, 30 Aug 2019 12:13:45 +0200 Subject: [PATCH 062/169] Removed a bunch of deprecated code --- .../Slimefun/Setup/SlimefunSetup.java | 17 +++----- src/me/mrCookieSlime/Slimefun/api/Soul.java | 42 +++++++++---------- .../Slimefun/listeners/DamageListener.java | 28 ++++++++----- .../Slimefun/listeners/ToolListener.java | 20 +-------- .../Slimefun/utils/Utilities.java | 2 +- 5 files changed, 46 insertions(+), 63 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java index 21bef9378..df667b9ee 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java @@ -58,7 +58,6 @@ import me.mrCookieSlime.CSCoreLibPlugin.general.Block.TreeCalculator; import me.mrCookieSlime.CSCoreLibPlugin.general.Block.Vein; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.InvUtils; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; -import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.SkullItem; import me.mrCookieSlime.CSCoreLibPlugin.general.Math.DoubleHandler; import me.mrCookieSlime.CSCoreLibPlugin.general.Particles.FireworkShow; import me.mrCookieSlime.CSCoreLibPlugin.general.Player.PlayerInventory; @@ -2351,20 +2350,14 @@ public final class SlimefunSetup { for (int i = 0; i < 2; i++) { gifts.add(new CustomItem(SlimefunItems.EASTER_CARROT_PIE, 4)); - gifts.add(new CustomItem(SlimefunItems.CHRISTMAS_APPLE_PIE, 4)); gifts.add(new CustomItem(SlimefunItems.CARROT_JUICE, 1)); + gifts.add(new ItemStack(Material.EMERALD)); + gifts.add(new ItemStack(Material.CAKE)); + gifts.add(new ItemStack(Material.RABBIT_FOOT)); + gifts.add(new ItemStack(Material.GOLDEN_CARROT, 4)); } - gifts.add(new SkullItem("TheBusyBiscuit")); - gifts.add(new SkullItem("timtower")); - gifts.add(new SkullItem("bwfcwalshy")); - gifts.add(new SkullItem("jadedcat")); - gifts.add(new SkullItem("ZeldoKavira")); - gifts.add(new SkullItem("eyamaz")); - gifts.add(new SkullItem("Kaelten")); - gifts.add(new SkullItem("Myrathi")); - - p.getWorld().dropItemNaturally(p.getLocation(), gifts.get(SlimefunStartup.randomize(gifts.size()))); + p.getWorld().dropItemNaturally(p.getLocation(), gifts.get(random.nextInt(gifts.size()))); return true; } else return false; diff --git a/src/me/mrCookieSlime/Slimefun/api/Soul.java b/src/me/mrCookieSlime/Slimefun/api/Soul.java index 6f3372715..f6aa9b44a 100644 --- a/src/me/mrCookieSlime/Slimefun/api/Soul.java +++ b/src/me/mrCookieSlime/Slimefun/api/Soul.java @@ -1,7 +1,7 @@ package me.mrCookieSlime.Slimefun.api; -import java.util.ArrayList; -import java.util.List; +import java.util.HashMap; +import java.util.Map; import java.util.UUID; import org.bukkit.entity.Player; @@ -9,31 +9,31 @@ import org.bukkit.inventory.ItemStack; import me.mrCookieSlime.Slimefun.SlimefunStartup; -@Deprecated -public class Soul { +public final class Soul { - public static void storeItem(UUID uuid, ItemStack drop) { - List items = new ArrayList<>(); - if (SlimefunStartup.instance.getUtilities().soulbound.containsKey(uuid)) items = SlimefunStartup.instance.getUtilities().soulbound.get(uuid); - items.add(drop); - SlimefunStartup.instance.getUtilities().soulbound.put(uuid, items); + private Soul() {} + + public static void storeItem(UUID uuid, int slot, ItemStack item) { + Map items = SlimefunStartup.instance.getUtilities().soulbound.get(uuid); + + if (items == null) { + items = new HashMap<>(); + SlimefunStartup.instance.getUtilities().soulbound.put(uuid, items); + } + + items.put(slot, item); } public static void retrieveItems(Player p) { - if (SlimefunStartup.instance.getUtilities().soulbound.containsKey(p.getUniqueId())) { - for (ItemStack item: SlimefunStartup.instance.getUtilities().soulbound.get(p.getUniqueId())) { - if (item.equals(p.getInventory().getHelmet())) continue; - if (item.equals(p.getInventory().getChestplate())) continue; - if (item.equals(p.getInventory().getLeggings())) continue; - if (item.equals(p.getInventory().getBoots())) continue; - if (item.equals(p.getInventory().getItemInOffHand())) continue; - - if(!p.getInventory().contains(item)) { - p.getInventory().addItem(item); - } + Map items = SlimefunStartup.instance.getUtilities().soulbound.get(p.getUniqueId()); + + if (items != null) { + for (Map.Entry entry: items.entrySet()) { + p.getInventory().setItem(entry.getKey(), entry.getValue()); } - SlimefunStartup.instance.getUtilities().soulbound.remove(p.getUniqueId()); } + + SlimefunStartup.instance.getUtilities().soulbound.remove(p.getUniqueId()); } } diff --git a/src/me/mrCookieSlime/Slimefun/listeners/DamageListener.java b/src/me/mrCookieSlime/Slimefun/listeners/DamageListener.java index 38b1d906f..4bad8a871 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/DamageListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/DamageListener.java @@ -56,19 +56,18 @@ public class DamageListener implements Listener { Slimefun.getGPSNetwork().addWaypoint(p, "&4Deathpoint &7" + format.format(new Date()), p.getLocation().getBlock().getLocation()); } + for (int slot = 0; slot < p.getInventory().getSize(); slot++) { + ItemStack item = p.getInventory().getItem(slot); + + if (isSoulbound(item)) { + Soul.storeItem(p.getUniqueId(), slot, item); + } + } + Iterator drops = e.getDrops().iterator(); while (drops.hasNext()) { ItemStack item = drops.next(); - if (item != null) { - if (SlimefunManager.isItemSimiliar(item, SlimefunItems.BOUND_BACKPACK, false)) { - Soul.storeItem(e.getEntity().getUniqueId(), item); - drops.remove(); - } - else if (SlimefunItem.getByItem(removeEnchantments(item)) instanceof SoulboundItem) { - Soul.storeItem(e.getEntity().getUniqueId(), item); - drops.remove(); - } - } + if (isSoulbound(item)) drops.remove(); } } @@ -133,7 +132,14 @@ public class DamageListener implements Listener { } } - @EventHandler + private boolean isSoulbound(ItemStack item) { + if (item == null || item.getType() == null || item.getType() == Material.AIR) return false; + else if (SlimefunManager.isItemSimiliar(item, SlimefunItems.BOUND_BACKPACK, false)) return true; + else if (SlimefunItem.getByItem(removeEnchantments(item)) instanceof SoulboundItem) return true; + else return false; + } + + @EventHandler public void onArrowHit(EntityDamageEvent e) { if (e.getEntity() instanceof Player && e.getCause() == DamageCause.FALL && utilities.damage.contains(e.getEntity().getUniqueId())) { e.setCancelled(true); diff --git a/src/me/mrCookieSlime/Slimefun/listeners/ToolListener.java b/src/me/mrCookieSlime/Slimefun/listeners/ToolListener.java index 3402ca60b..bf0dc56ac 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/ToolListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/ToolListener.java @@ -22,7 +22,6 @@ import org.bukkit.event.entity.EntityExplodeEvent; import org.bukkit.inventory.ItemStack; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; -import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.SkullItem; import me.mrCookieSlime.CSCoreLibPlugin.general.Particles.FireworkShow; import me.mrCookieSlime.CSCoreLibPlugin.general.Player.PlayerInventory; import me.mrCookieSlime.Slimefun.SlimefunStartup; @@ -134,6 +133,7 @@ public class ToolListener implements Listener { PlayerInventory.consumeItemInHand(e.getPlayer()); FireworkShow.launchRandom(e.getPlayer(), 3); List gifts = new ArrayList<>(); + for (int i = 0; i < 2; i++) { gifts.add(new CustomItem(SlimefunItems.CHRISTMAS_HOT_CHOCOLATE, 1)); gifts.add(new CustomItem(SlimefunItems.CHRISTMAS_CHOCOLATE_APPLE, 4)); @@ -146,25 +146,9 @@ public class ToolListener implements Listener { gifts.add(new CustomItem(SlimefunItems.CHRISTMAS_APPLE_CIDER, 1)); gifts.add(new CustomItem(SlimefunItems.CHRISTMAS_FRUIT_CAKE, 4)); gifts.add(new CustomItem(SlimefunItems.CHRISTMAS_APPLE_PIE, 4)); + gifts.add(new ItemStack(Material.EMERALD)); } - gifts.add(new SkullItem("TheBusyBiscuit")); - gifts.add(new SkullItem("timtower")); - gifts.add(new SkullItem("bwfcwalshy")); - gifts.add(new SkullItem("jadedcat")); - gifts.add(new SkullItem("ZeldoKavira")); - gifts.add(new SkullItem("eyamaz")); - gifts.add(new SkullItem("Kaelten")); - gifts.add(new SkullItem("ahamling27")); - gifts.add(new SkullItem("Myrathi")); - new String( - "Good day to whoever is just looking through my code." + - "Since it is Christmas, I wanted to add some Christmas flavour to this Plugin." + - "So, I hope you don't mind that I implemented some of your Heads >.>" + - "Merry Christmas everyone!" + - "" + - "- mrCookieSlime" - ); e.getBlockPlaced().getWorld().dropItemNaturally(e.getBlockPlaced().getLocation(), gifts.get(random.nextInt(gifts.size()))); } else if (SlimefunManager.isItemSimiliar(item, SlimefunItems.CARGO_INPUT, false)) { diff --git a/src/me/mrCookieSlime/Slimefun/utils/Utilities.java b/src/me/mrCookieSlime/Slimefun/utils/Utilities.java index af4cb1727..64abeab48 100644 --- a/src/me/mrCookieSlime/Slimefun/utils/Utilities.java +++ b/src/me/mrCookieSlime/Slimefun/utils/Utilities.java @@ -39,7 +39,7 @@ public final class Utilities { public Set altarinuse = new HashSet<>(); public Set altarRecipes = new HashSet<>(); - public Map> soulbound = new HashMap<>(); + public Map> soulbound = new HashMap<>(); public List blocks = new ArrayList<>(); public List cancelPlace = new ArrayList<>(); public Map arrows = new HashMap<>(); From c378697f423a47472601d00d1db973aa5d21ea2b Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Fri, 30 Aug 2019 12:47:22 +0200 Subject: [PATCH 063/169] More Cleanup --- .../Objects/SlimefunItem/SlimefunItem.java | 3 +- .../Objects/SlimefunItem/SlimefunMachine.java | 63 +---- .../SlimefunItem/multiblocks/ArmorForge.java | 94 +++---- .../SlimefunItem/multiblocks/Compressor.java | 86 +++---- .../multiblocks/EnhancedCraftingTable.java | 207 ++++++++-------- .../SlimefunItem/multiblocks/GrindStone.java | 80 +++--- .../SlimefunItem/multiblocks/Juicer.java | 65 +++++ .../multiblocks/MagicWorkbench.java | 231 +++++++++--------- .../multiblocks/MultiBlockMachine.java | 86 +++++++ .../SlimefunItem/multiblocks/OreCrusher.java | 72 +++--- .../SlimefunItem/multiblocks/OreWasher.java | 158 ++++++------ .../multiblocks/PressureChamber.java | 80 ++++++ .../SlimefunItem/multiblocks/Smeltery.java | 141 +++++------ .../Slimefun/Setup/MiscSetup.java | 2 +- .../Slimefun/Setup/SlimefunSetup.java | 104 +------- .../Slimefun/utils/Utilities.java | 2 + 16 files changed, 744 insertions(+), 730 deletions(-) create mode 100644 src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/Juicer.java create mode 100644 src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/MultiBlockMachine.java create mode 100644 src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/PressureChamber.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java index b5e92162d..2324f1b7e 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java @@ -39,7 +39,6 @@ public class SlimefunItem { public static Map map_id = new HashMap<>(); public static List radioactive = new ArrayList<>(); - public static int vanilla = 0; public static Set tickers = new HashSet<>(); public static List all = new ArrayList<>(); @@ -248,7 +247,7 @@ public class SlimefunItem { this.disenchantable = SlimefunStartup.getItemCfg().getBoolean(this.id + ".allow-disenchanting"); this.permission = SlimefunStartup.getItemCfg().getString(this.id + ".required-permission"); items.add(this); - if (slimefun) vanilla++; + if (slimefun) SlimefunStartup.instance.getUtilities().vanillaItems++; map_id.put(this.id, this); this.create(); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunMachine.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunMachine.java index efe4a8a5b..35c83c7b0 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunMachine.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunMachine.java @@ -1,34 +1,23 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem; -import java.util.*; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Iterator; +import java.util.List; + +import org.bukkit.Material; +import org.bukkit.inventory.ItemStack; -import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.InvUtils; import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.MultiBlock; -import me.mrCookieSlime.Slimefun.api.BlockStorage; - -import org.bukkit.Material; -import org.bukkit.block.Block; -import org.bukkit.block.BlockFace; -import org.bukkit.block.Container; -import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.ItemStack; public class SlimefunMachine extends SlimefunItem { private List recipes; - private List shownRecipes; private Material trigger; - - //Adjacent blockfaces for iterative output chest checks - private static final BlockFace[] outputFaces = { - BlockFace.UP, - BlockFace.NORTH, - BlockFace.EAST, - BlockFace.SOUTH, - BlockFace.WEST - }; + + protected List shownRecipes; public SlimefunMachine(Category category, ItemStack item, String id, ItemStack[] recipe, ItemStack[] machineRecipes, Material trigger) { super(category, item, id, RecipeType.MULTIBLOCK, recipe); @@ -62,10 +51,6 @@ public class SlimefunMachine extends SlimefunItem { return this.shownRecipes; } - public static BlockFace[] getOutputFaces() { - return outputFaces; - } - public void addRecipe(ItemStack[] input, ItemStack output) { this.recipes.add(input); this.recipes.add(new ItemStack[] {output}); @@ -100,34 +85,4 @@ public class SlimefunMachine extends SlimefunItem { return this.recipes.iterator(); } - // Overloaded method for finding a potential output chest. Fallbacks to the old system of putting the adding back into the dispenser. - // Optional last argument Inventory placeCheckerInv is for multiblock machines that create a dummy inventory to check if there's a space for the adding, - // i.e. Enhanced crafting table - public static Inventory findValidOutputInv(ItemStack adding, Block dispBlock, Inventory dispInv) { - return findValidOutputInv(adding, dispBlock, dispInv, dispInv); - } - - public static Inventory findValidOutputInv(ItemStack product, Block dispBlock, Inventory dispInv, Inventory placeCheckerInv) { - Inventory outputInv = null; - for (BlockFace face : outputFaces) { - Block potentialOutput = dispBlock.getRelative(face); - String id = BlockStorage.checkID(potentialOutput); - if (id != null && id.equals("OUTPUT_CHEST")) { - // Found the output chest! Now, let's check if we can fit the product in it. - Inventory inv = ((Container) potentialOutput.getState()).getInventory(); - if (InvUtils.fits(inv, product)) { - // It fits! Let's set the inventory to that now. - outputInv = inv; - break; - } - } - } - // This if-clause will trigger if no suitable output chest was found. It's functionally the same as the old fit check for the dispenser, only refactored. - if (outputInv == null && InvUtils.fits(placeCheckerInv, product)) outputInv = dispInv; - - return outputInv; - - - } - } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/ArmorForge.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/ArmorForge.java index 551d1f2bf..d39b92896 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/ArmorForge.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/ArmorForge.java @@ -8,22 +8,20 @@ import org.bukkit.Sound; import org.bukkit.block.Block; import org.bukkit.block.BlockFace; import org.bukkit.block.Dispenser; +import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; -import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; import me.mrCookieSlime.Slimefun.SlimefunStartup; import me.mrCookieSlime.Slimefun.Lists.Categories; import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunMachine; -import me.mrCookieSlime.Slimefun.Objects.handlers.MultiBlockInteractionHandler; import me.mrCookieSlime.Slimefun.Setup.Messages; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.api.Slimefun; -public class ArmorForge extends SlimefunMachine { +public class ArmorForge extends MultiBlockMachine { public ArmorForge() { super( @@ -31,70 +29,56 @@ public class ArmorForge extends SlimefunMachine { SlimefunItems.ARMOR_FORGE, "ARMOR_FORGE", new ItemStack[] {null, null, null, null, new ItemStack(Material.ANVIL), null, null, new CustomItem(Material.DISPENSER, "Dispenser (Facing up)"), null}, - new ItemStack[] {}, + new ItemStack[0], Material.ANVIL ); } @Override - public void register() { - register(true, onInteract()); - } + public void onInteract(Player p, Block b) { + Block dispBlock = b.getRelative(BlockFace.DOWN); + Dispenser disp = (Dispenser) dispBlock.getState(); + Inventory inv = disp.getInventory(); + List inputs = RecipeType.getRecipeInputList(this); - private MultiBlockInteractionHandler onInteract() { - return (p, mb, b) -> { - if (mb.isMultiBlock(this)) { - if (!isDisabled() && CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true) && Slimefun.hasUnlocked(p, getItem(), true)) { - Block dispBlock = b.getRelative(BlockFace.DOWN); - Dispenser disp = (Dispenser) dispBlock.getState(); - Inventory inv = disp.getInventory(); - List inputs = RecipeType.getRecipeInputList(this); + for (int i = 0; i < inputs.size(); i++) { + boolean craft = true; + for (int j = 0; j < inv.getContents().length; j++) { + if (!SlimefunManager.isItemSimiliar(inv.getContents()[j], inputs.get(i)[j], true)) { + craft = false; + break; + } + } - for (int i = 0; i < inputs.size(); i++) { - boolean craft = true; - for (int j = 0; j < inv.getContents().length; j++) { - if (!SlimefunManager.isItemSimiliar(inv.getContents()[j], inputs.get(i)[j], true)) { - craft = false; - break; - } + if (craft) { + final ItemStack adding = RecipeType.getRecipeOutputList(this, inputs.get(i)).clone(); + if (Slimefun.hasUnlocked(p, adding, true)) { + Inventory outputInv = findOutputInventory(adding, dispBlock, inv); + if (outputInv != null) { + for (ItemStack removing: inputs.get(i)) { + if (removing != null) inv.removeItem(removing); } - - if (craft) { - final ItemStack adding = RecipeType.getRecipeOutputList(this, inputs.get(i)).clone(); - if (Slimefun.hasUnlocked(p, adding, true)) { - Inventory outputInv = SlimefunMachine.findValidOutputInv(adding, dispBlock, inv); - if (outputInv != null) { - for (ItemStack removing: inputs.get(i)) { - if (removing != null) inv.removeItem(removing); - } - - for (int j = 0; j < 4; j++) { - int current = j; - Bukkit.getScheduler().runTaskLater(SlimefunStartup.instance, () -> { - if (current < 3) { - p.getWorld().playSound(p.getLocation(), Sound.BLOCK_ANVIL_USE, 1F, 2F); - } - else { - p.getWorld().playSound(p.getLocation(), Sound.ENTITY_ARROW_HIT_PLAYER, 1F, 1F); - outputInv.addItem(adding); - } - }, j*20L); - } + + for (int j = 0; j < 4; j++) { + int current = j; + Bukkit.getScheduler().runTaskLater(SlimefunStartup.instance, () -> { + if (current < 3) { + p.getWorld().playSound(p.getLocation(), Sound.BLOCK_ANVIL_USE, 1F, 2F); + } + else { + p.getWorld().playSound(p.getLocation(), Sound.ENTITY_ARROW_HIT_PLAYER, 1F, 1F); + outputInv.addItem(adding); } - else Messages.local.sendTranslation(p, "machines.full-inventory", true); - } - return true; + }, j*20L); } } - - Messages.local.sendTranslation(p, "machines.pattern-not-found", true); + else Messages.local.sendTranslation(p, "machines.full-inventory", true); } - return true; + return; } - else { - return false; - } - }; + } + + Messages.local.sendTranslation(p, "machines.pattern-not-found", true); } } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/Compressor.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/Compressor.java index 14ea47c49..55672e00a 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/Compressor.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/Compressor.java @@ -6,22 +6,19 @@ import org.bukkit.Sound; import org.bukkit.block.Block; import org.bukkit.block.BlockFace; import org.bukkit.block.Dispenser; +import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; -import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; import me.mrCookieSlime.Slimefun.SlimefunStartup; import me.mrCookieSlime.Slimefun.Lists.Categories; import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunMachine; -import me.mrCookieSlime.Slimefun.Objects.handlers.MultiBlockInteractionHandler; import me.mrCookieSlime.Slimefun.Setup.Messages; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; -import me.mrCookieSlime.Slimefun.api.Slimefun; -public class Compressor extends SlimefunMachine { +public class Compressor extends MultiBlockMachine { public Compressor() { super( @@ -29,59 +26,52 @@ public class Compressor extends SlimefunMachine { SlimefunItems.COMPRESSOR, "COMPRESSOR", new ItemStack[] {null, null, null, null, new ItemStack(Material.NETHER_BRICK_FENCE), null, new ItemStack(Material.PISTON), new CustomItem(Material.DISPENSER, "Dispenser (Facing up)"), new ItemStack(Material.PISTON)}, - new ItemStack[] {new ItemStack(Material.COAL, 8), SlimefunItems.CARBON, new CustomItem(SlimefunItems.STEEL_INGOT, 8), SlimefunItems.STEEL_PLATE, new CustomItem(SlimefunItems.CARBON, 4), SlimefunItems.COMPRESSED_CARBON, new CustomItem(SlimefunItems.STONE_CHUNK, 4), new ItemStack(Material.COBBLESTONE), new CustomItem(SlimefunItems.REINFORCED_ALLOY_INGOT, 8), SlimefunItems.REINFORCED_PLATE}, + new ItemStack[] { + new ItemStack(Material.COAL, 8), SlimefunItems.CARBON, + new CustomItem(SlimefunItems.STEEL_INGOT, 8), SlimefunItems.STEEL_PLATE, + new CustomItem(SlimefunItems.CARBON, 4), SlimefunItems.COMPRESSED_CARBON, + new CustomItem(SlimefunItems.STONE_CHUNK, 4), new ItemStack(Material.COBBLESTONE), + new CustomItem(SlimefunItems.REINFORCED_ALLOY_INGOT, 8), SlimefunItems.REINFORCED_PLATE + }, Material.NETHER_BRICK_FENCE ); } @Override - public void register() { - register(true, onInteract()); - } - - private MultiBlockInteractionHandler onInteract() { - return (p, mb, b) -> { - if (mb.isMultiBlock(this)) { - if (!isDisabled() && CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true) && Slimefun.hasUnlocked(p, getItem(), true)) { - Block dispBlock = b.getRelative(BlockFace.DOWN); - Dispenser disp = (Dispenser) dispBlock.getState(); - Inventory inv = disp.getInventory(); - for (ItemStack current: inv.getContents()) { - for (ItemStack convert: RecipeType.getRecipeInputs(this)) { - if (convert != null && SlimefunManager.isItemSimiliar(current, convert, true)) { - final ItemStack adding = RecipeType.getRecipeOutput(this, convert); - Inventory outputInv = SlimefunMachine.findValidOutputInv(adding, dispBlock, inv); - if (outputInv != null) { - ItemStack removing = current.clone(); - removing.setAmount(convert.getAmount()); - inv.removeItem(removing); - for (int i = 0; i < 4; i++) { - int j = i; - - Bukkit.getScheduler().runTaskLater(SlimefunStartup.instance, () -> { - if (j < 3) { - p.getWorld().playSound(p.getLocation(), j == 1 ? Sound.BLOCK_PISTON_CONTRACT : Sound.BLOCK_PISTON_EXTEND, 1F, j == 0 ? 1F : 2F); - } - else { - p.getWorld().playSound(p.getLocation(), Sound.ENTITY_ARROW_HIT_PLAYER, 1F, 1F); - outputInv.addItem(adding); - } - }, i*20L); - } + public void onInteract(Player p, Block b) { + Block dispBlock = b.getRelative(BlockFace.DOWN); + Dispenser disp = (Dispenser) dispBlock.getState(); + Inventory inv = disp.getInventory(); + for (ItemStack current: inv.getContents()) { + for (ItemStack convert: RecipeType.getRecipeInputs(this)) { + if (convert != null && SlimefunManager.isItemSimiliar(current, convert, true)) { + final ItemStack adding = RecipeType.getRecipeOutput(this, convert); + Inventory outputInv = findOutputInventory(adding, dispBlock, inv); + if (outputInv != null) { + ItemStack removing = current.clone(); + removing.setAmount(convert.getAmount()); + inv.removeItem(removing); + for (int i = 0; i < 4; i++) { + int j = i; + + Bukkit.getScheduler().runTaskLater(SlimefunStartup.instance, () -> { + if (j < 3) { + p.getWorld().playSound(p.getLocation(), j == 1 ? Sound.BLOCK_PISTON_CONTRACT : Sound.BLOCK_PISTON_EXTEND, 1F, j == 0 ? 1F : 2F); + } + else { + p.getWorld().playSound(p.getLocation(), Sound.ENTITY_ARROW_HIT_PLAYER, 1F, 1F); + outputInv.addItem(adding); } - else Messages.local.sendTranslation(p, "machines.full-inventory", true); - return true; - } + }, i*20L); } } - Messages.local.sendTranslation(p, "machines.unknown-material", true); + else Messages.local.sendTranslation(p, "machines.full-inventory", true); + + return; } - return true; } - else { - return false; - } - }; + } + Messages.local.sendTranslation(p, "machines.unknown-material", true); } } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/EnhancedCraftingTable.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/EnhancedCraftingTable.java index 489da9dcb..d72faac58 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/EnhancedCraftingTable.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/EnhancedCraftingTable.java @@ -10,25 +10,23 @@ import org.bukkit.Sound; import org.bukkit.block.Block; import org.bukkit.block.BlockFace; import org.bukkit.block.Dispenser; +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.general.Inventory.Item.CustomItem; import me.mrCookieSlime.Slimefun.Lists.Categories; import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunBackpack; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunMachine; -import me.mrCookieSlime.Slimefun.Objects.handlers.MultiBlockInteractionHandler; import me.mrCookieSlime.Slimefun.Setup.Messages; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.api.PlayerProfile; import me.mrCookieSlime.Slimefun.api.Slimefun; -public class EnhancedCraftingTable extends SlimefunMachine { +public class EnhancedCraftingTable extends MultiBlockMachine { public EnhancedCraftingTable() { super( @@ -42,126 +40,115 @@ public class EnhancedCraftingTable extends SlimefunMachine { } @Override - public void register() { - register(true, onInteract()); - } + public void onInteract(Player p, Block b) { + // Objects dispBlock and disp have been split up, in order to add the output chest functionallity, which is the only functionallity + // that is dependant on the dispenser's block methods. + // the Dispenser disp still remains the same though, and as such doesn't break any existing code which involves said object. + Block dispBlock = b.getRelative(BlockFace.DOWN); + Dispenser disp = (Dispenser) dispBlock.getState(); + Inventory inv = disp.getInventory(); - private MultiBlockInteractionHandler onInteract() { - return (p, mb, b) -> { - if (mb.isMultiBlock(this)) { - if (!isDisabled() && CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true) && Slimefun.hasUnlocked(p, getItem(), true)) { - // Objects dispBlock and disp have been split up, in order to add the output chest functionallity, which is the only functionallity - // that is dependant on the dispenser's block methods. - // the Dispenser disp still remains the same though, and as such doesn't break any existing code which involves said object. - Block dispBlock = b.getRelative(BlockFace.DOWN); - Dispenser disp = (Dispenser) dispBlock.getState(); - Inventory inv = disp.getInventory(); + List inputs = RecipeType.getRecipeInputList(this); - List inputs = RecipeType.getRecipeInputList(this); + for (int i = 0; i < inputs.size(); i++) { + boolean craft = true; + for (int j = 0; j < inv.getContents().length; j++) { + if (!SlimefunManager.isItemSimiliar(inv.getContents()[j], inputs.get(i)[j], true)) { + if (SlimefunItem.getByItem(inputs.get(i)[j]) instanceof SlimefunBackpack) { + if (!SlimefunManager.isItemSimiliar(inv.getContents()[j], inputs.get(i)[j], false)) { + craft = false; + break; + } + } + else { + craft = false; + break; + } + } + } - for (int i = 0; i < inputs.size(); i++) { - boolean craft = true; - for (int j = 0; j < inv.getContents().length; j++) { - if (!SlimefunManager.isItemSimiliar(inv.getContents()[j], inputs.get(i)[j], true)) { - if (SlimefunItem.getByItem(inputs.get(i)[j]) instanceof SlimefunBackpack) { - if (!SlimefunManager.isItemSimiliar(inv.getContents()[j], inputs.get(i)[j], false)) { - craft = false; - break; - } - } - else { - craft = false; + if (craft) { + final ItemStack adding = RecipeType.getRecipeOutputList(this, inputs.get(i)).clone(); + if (Slimefun.hasUnlocked(p, adding, true)) { + Inventory inv2 = Bukkit.createInventory(null, 9, "test"); + for (int j = 0; j < inv.getContents().length; j++) { + inv2.setItem(j, inv.getContents()[j] != null ? (inv.getContents()[j].getAmount() > 1 ? new CustomItem(inv.getContents()[j], inv.getContents()[j].getAmount() - 1): null): null); + } + + Inventory outputInv = findOutputInventory(adding, dispBlock, inv, inv2); + + if (outputInv != null) { + SlimefunItem sfItem = SlimefunItem.getByItem(adding); + if (sfItem instanceof SlimefunBackpack) { + ItemStack backpack = null; + + for (int j = 0; j < 9; j++) { + if (inv.getContents()[j] != null && inv.getContents()[j].getType() != Material.AIR && SlimefunItem.getByItem(inv.getContents()[j]) instanceof SlimefunBackpack) { + backpack = inv.getContents()[j]; break; } } - } + String id = ""; + int size = ((SlimefunBackpack) sfItem).getSize(); - if (craft) { - final ItemStack adding = RecipeType.getRecipeOutputList(this, inputs.get(i)).clone(); - if (Slimefun.hasUnlocked(p, adding, true)) { - Inventory inv2 = Bukkit.createInventory(null, 9, "test"); - for (int j = 0; j < inv.getContents().length; j++) { - inv2.setItem(j, inv.getContents()[j] != null ? (inv.getContents()[j].getAmount() > 1 ? new CustomItem(inv.getContents()[j], inv.getContents()[j].getAmount() - 1): null): null); - } - - Inventory outputInv = SlimefunMachine.findValidOutputInv(adding, dispBlock, inv, inv2); - - if (outputInv != null) { - SlimefunItem sfItem = SlimefunItem.getByItem(adding); - if (sfItem instanceof SlimefunBackpack) { - ItemStack backpack = null; - - for (int j = 0; j < 9; j++) { - if (inv.getContents()[j] != null && inv.getContents()[j].getType() != Material.AIR && SlimefunItem.getByItem(inv.getContents()[j]) instanceof SlimefunBackpack) { - backpack = inv.getContents()[j]; - break; - } - } - String id = ""; - int size = ((SlimefunBackpack) sfItem).getSize(); - - if (backpack != null) { - for (String line: backpack.getItemMeta().getLore()) { - if (line.startsWith(ChatColor.translateAlternateColorCodes('&', "&7ID: ")) && line.contains("#")) { - id = line.replace(ChatColor.translateAlternateColorCodes('&', "&7ID: "), ""); - PlayerProfile.fromUUID(UUID.fromString(id.split("#")[0])).getBackpack(Integer.parseInt(id.split("#")[1])).setSize(size); - break; - } - } - } - - if (id.equals("")) { - for (int line = 0; line < adding.getItemMeta().getLore().size(); line++) { - if (adding.getItemMeta().getLore().get(line).equals(ChatColor.translateAlternateColorCodes('&', "&7ID: "))) { - int backpackID = PlayerProfile.fromUUID(p.getUniqueId()).createBackpack(size).getID(); - - ItemMeta im = adding.getItemMeta(); - List lore = im.getLore(); - lore.set(line, lore.get(line).replace("", p.getUniqueId() + "#" + backpackID)); - im.setLore(lore); - adding.setItemMeta(im); - break; - } - } - } - else { - for (int line = 0; line < adding.getItemMeta().getLore().size(); line++) { - if (adding.getItemMeta().getLore().get(line).equals(ChatColor.translateAlternateColorCodes('&', "&7ID: "))) { - ItemMeta im = adding.getItemMeta(); - List lore = im.getLore(); - lore.set(line, lore.get(line).replace("", id)); - im.setLore(lore); - adding.setItemMeta(im); - break; - } - } - } + if (backpack != null) { + for (String line: backpack.getItemMeta().getLore()) { + if (line.startsWith(ChatColor.translateAlternateColorCodes('&', "&7ID: ")) && line.contains("#")) { + id = line.replace(ChatColor.translateAlternateColorCodes('&', "&7ID: "), ""); + PlayerProfile.fromUUID(UUID.fromString(id.split("#")[0])).getBackpack(Integer.parseInt(id.split("#")[1])).setSize(size); + break; + } + } + } + + if (id.equals("")) { + for (int line = 0; line < adding.getItemMeta().getLore().size(); line++) { + if (adding.getItemMeta().getLore().get(line).equals(ChatColor.translateAlternateColorCodes('&', "&7ID: "))) { + int backpackID = PlayerProfile.fromUUID(p.getUniqueId()).createBackpack(size).getID(); + + ItemMeta im = adding.getItemMeta(); + List lore = im.getLore(); + lore.set(line, lore.get(line).replace("", p.getUniqueId() + "#" + backpackID)); + im.setLore(lore); + adding.setItemMeta(im); + break; + } + } + } + else { + for (int line = 0; line < adding.getItemMeta().getLore().size(); line++) { + if (adding.getItemMeta().getLore().get(line).equals(ChatColor.translateAlternateColorCodes('&', "&7ID: "))) { + ItemMeta im = adding.getItemMeta(); + List lore = im.getLore(); + lore.set(line, lore.get(line).replace("", id)); + im.setLore(lore); + adding.setItemMeta(im); + break; } - - - for (int j = 0; j < 9; j++) { - if (inv.getContents()[j] != null && inv.getContents()[j].getType() != Material.AIR) { - if (inv.getContents()[j].getType().toString().endsWith("_BUCKET")) inv.setItem(j, new ItemStack(Material.BUCKET)); - else if (inv.getContents()[j].getAmount() > 1) inv.setItem(j, new CustomItem(inv.getContents()[j], inv.getContents()[j].getAmount() - 1)); - else inv.setItem(j, null); - } - } - p.getWorld().playSound(b.getLocation(), Sound.BLOCK_WOODEN_BUTTON_CLICK_ON, 1, 1); - - outputInv.addItem(adding); - } - else Messages.local.sendTranslation(p, "machines.full-inventory", true); } - return true; } + + + for (int j = 0; j < 9; j++) { + if (inv.getContents()[j] != null && inv.getContents()[j].getType() != Material.AIR) { + if (inv.getContents()[j].getType().toString().endsWith("_BUCKET")) inv.setItem(j, new ItemStack(Material.BUCKET)); + else if (inv.getContents()[j].getAmount() > 1) inv.setItem(j, new CustomItem(inv.getContents()[j], inv.getContents()[j].getAmount() - 1)); + else inv.setItem(j, null); + } + } + p.getWorld().playSound(b.getLocation(), Sound.BLOCK_WOODEN_BUTTON_CLICK_ON, 1, 1); + + outputInv.addItem(adding); + } - Messages.local.sendTranslation(p, "machines.pattern-not-found", true); + else Messages.local.sendTranslation(p, "machines.full-inventory", true); } - return true; + + return; } - else return false; - }; + } + Messages.local.sendTranslation(p, "machines.pattern-not-found", true); } } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/GrindStone.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/GrindStone.java index d1d28a4b0..d370d204c 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/GrindStone.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/GrindStone.java @@ -5,21 +5,18 @@ import org.bukkit.Sound; import org.bukkit.block.Block; import org.bukkit.block.BlockFace; import org.bukkit.block.Dispenser; +import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; -import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; import me.mrCookieSlime.Slimefun.Lists.Categories; import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunMachine; -import me.mrCookieSlime.Slimefun.Objects.handlers.MultiBlockInteractionHandler; import me.mrCookieSlime.Slimefun.Setup.Messages; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; -import me.mrCookieSlime.Slimefun.api.Slimefun; -public class GrindStone extends SlimefunMachine { +public class GrindStone extends MultiBlockMachine { public GrindStone() { super( @@ -27,53 +24,50 @@ public class GrindStone extends SlimefunMachine { SlimefunItems.GRIND_STONE, "GRIND_STONE", new ItemStack[] {null, null, null, null, new ItemStack(Material.OAK_FENCE), null, null, new CustomItem(Material.DISPENSER, "Dispenser (Facing up)"), null}, - new ItemStack[] {new ItemStack(Material.BLAZE_ROD), new ItemStack(Material.BLAZE_POWDER, 4), new ItemStack(Material.BONE), new ItemStack(Material.BONE_MEAL, 4), new ItemStack(Material.GRAVEL), new ItemStack(Material.FLINT), new ItemStack(Material.NETHER_WART), new CustomItem(SlimefunItems.MAGIC_LUMP_1, 2), new ItemStack(Material.ENDER_EYE), new CustomItem(SlimefunItems.ENDER_LUMP_1, 2), new ItemStack(Material.COBBLESTONE), new ItemStack(Material.GRAVEL), new ItemStack(Material.WHEAT), SlimefunItems.WHEAT_FLOUR, new ItemStack(Material.DIRT), SlimefunItems.STONE_CHUNK, new ItemStack(Material.SANDSTONE), new ItemStack(Material.SAND, 4), new ItemStack(Material.RED_SANDSTONE), new ItemStack(Material.RED_SAND, 4)}, + new ItemStack[] { + new ItemStack(Material.BLAZE_ROD), new ItemStack(Material.BLAZE_POWDER, 4), + new ItemStack(Material.BONE), new ItemStack(Material.BONE_MEAL, 4), + new ItemStack(Material.GRAVEL), new ItemStack(Material.FLINT), + new ItemStack(Material.NETHER_WART), new CustomItem(SlimefunItems.MAGIC_LUMP_1, 2), + new ItemStack(Material.ENDER_EYE), new CustomItem(SlimefunItems.ENDER_LUMP_1, 2), + new ItemStack(Material.COBBLESTONE), new ItemStack(Material.GRAVEL), + new ItemStack(Material.WHEAT), SlimefunItems.WHEAT_FLOUR, + new ItemStack(Material.DIRT), SlimefunItems.STONE_CHUNK, + new ItemStack(Material.SANDSTONE), new ItemStack(Material.SAND, 4), + new ItemStack(Material.RED_SANDSTONE), new ItemStack(Material.RED_SAND, 4) + }, Material.OAK_FENCE ); } @Override - public void register() { - register(true, onInteract()); - } - - private MultiBlockInteractionHandler onInteract() { - return (p, mb, b) -> { - if (mb.isMultiBlock(this)) { - if (!isDisabled() && CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true) && Slimefun.hasUnlocked(p, getItem(), true)) { - Block dispBlock = b.getRelative(BlockFace.DOWN); - Dispenser disp = (Dispenser) dispBlock.getState(); - Inventory inv = disp.getInventory(); + public void onInteract(Player p, Block b) { + Block dispBlock = b.getRelative(BlockFace.DOWN); + Dispenser disp = (Dispenser) dispBlock.getState(); + Inventory inv = disp.getInventory(); + + for (ItemStack current: inv.getContents()) { + for (ItemStack convert: RecipeType.getRecipeInputs(this)) { + if (convert != null && SlimefunManager.isItemSimiliar(current, convert, true)) { + ItemStack output = RecipeType.getRecipeOutput(this, convert); + Inventory outputInv = findOutputInventory(output, dispBlock, inv); - for (ItemStack current: inv.getContents()) { - for (ItemStack convert: RecipeType.getRecipeInputs(this)) { - if (convert != null && SlimefunManager.isItemSimiliar(current, convert, true)) { - ItemStack output = RecipeType.getRecipeOutput(this, convert); - Inventory outputInv = SlimefunMachine.findValidOutputInv(output, dispBlock, inv); - - if (outputInv != null) { - ItemStack removing = current.clone(); - removing.setAmount(1); - inv.removeItem(removing); - outputInv.addItem(output); - p.getWorld().playSound(p.getLocation(), Sound.BLOCK_WOODEN_BUTTON_CLICK_ON, 1, 1); - } - else { - Messages.local.sendTranslation(p, "machines.full-inventory", true); - } - - return true; - } - } + if (outputInv != null) { + ItemStack removing = current.clone(); + removing.setAmount(1); + inv.removeItem(removing); + outputInv.addItem(output); + p.getWorld().playSound(p.getLocation(), Sound.BLOCK_WOODEN_BUTTON_CLICK_ON, 1, 1); } - Messages.local.sendTranslation(p, "machines.unknown-material", true); + else { + Messages.local.sendTranslation(p, "machines.full-inventory", true); + } + + return; } - return true; } - else { - return false; - } - }; + } + Messages.local.sendTranslation(p, "machines.unknown-material", true); } } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/Juicer.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/Juicer.java new file mode 100644 index 000000000..cd85c66d9 --- /dev/null +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/Juicer.java @@ -0,0 +1,65 @@ +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks; + +import org.bukkit.Effect; +import org.bukkit.Material; +import org.bukkit.Sound; +import org.bukkit.block.Block; +import org.bukkit.block.BlockFace; +import org.bukkit.block.Dispenser; +import org.bukkit.entity.Player; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.ItemStack; + +import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; +import me.mrCookieSlime.Slimefun.Lists.Categories; +import me.mrCookieSlime.Slimefun.Lists.RecipeType; +import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; +import me.mrCookieSlime.Slimefun.Setup.Messages; +import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; + +public class Juicer extends MultiBlockMachine { + + public Juicer() { + super( + Categories.MACHINES_1, SlimefunItems.JUICER, "JUICER", + new ItemStack[] {null, new ItemStack(Material.GLASS), null, null, new ItemStack(Material.NETHER_BRICK_FENCE), null, null, new CustomItem(Material.DISPENSER, "Dispenser (Facing up)"), null}, + new ItemStack[] { + new ItemStack(Material.APPLE), SlimefunItems.APPLE_JUICE, + new ItemStack(Material.MELON), SlimefunItems.MELON_JUICE, + new ItemStack(Material.CARROT), SlimefunItems.CARROT_JUICE, + new ItemStack(Material.PUMPKIN), SlimefunItems.PUMPKIN_JUICE + }, + Material.NETHER_BRICK_FENCE + ); + } + + @Override + public void onInteract(Player p, Block b) { + Block dispBlock = b.getRelative(BlockFace.DOWN); + Dispenser disp = (Dispenser) dispBlock.getState(); + Inventory inv = disp.getInventory(); + for (ItemStack current: inv.getContents()) { + for (ItemStack convert: RecipeType.getRecipeInputs(this)) { + if (convert != null && SlimefunManager.isItemSimiliar(current, convert, true)) { + ItemStack adding = RecipeType.getRecipeOutput(this, convert); + Inventory outputInv = findOutputInventory(adding, dispBlock, inv); + + if (outputInv != null) { + ItemStack removing = current.clone(); + removing.setAmount(1); + inv.removeItem(removing); + outputInv.addItem(adding); + p.getWorld().playSound(b.getLocation(), Sound.ENTITY_PLAYER_SPLASH, 1F, 1F); + p.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, Material.HAY_BLOCK); + } + else Messages.local.sendTranslation(p, "machines.full-inventory", true); + + return; + } + } + } + + Messages.local.sendTranslation(p, "machines.unknown-material", true); + } + +} diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/MagicWorkbench.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/MagicWorkbench.java index 6968281e9..b4616e0ec 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/MagicWorkbench.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/MagicWorkbench.java @@ -10,11 +10,11 @@ import org.bukkit.Material; import org.bukkit.Sound; import org.bukkit.block.Block; import org.bukkit.block.Dispenser; +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.general.Inventory.Item.CustomItem; import me.mrCookieSlime.Slimefun.SlimefunStartup; import me.mrCookieSlime.Slimefun.Lists.Categories; @@ -22,14 +22,12 @@ import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunBackpack; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunMachine; -import me.mrCookieSlime.Slimefun.Objects.handlers.MultiBlockInteractionHandler; import me.mrCookieSlime.Slimefun.Setup.Messages; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.api.PlayerProfile; import me.mrCookieSlime.Slimefun.api.Slimefun; -public class MagicWorkbench extends SlimefunMachine { +public class MagicWorkbench extends MultiBlockMachine { public MagicWorkbench() { super( @@ -43,138 +41,127 @@ public class MagicWorkbench extends SlimefunMachine { } @Override - public void register() { - register(true, onInteract()); - } + public void onInteract(Player p, Block b) { + Block dispBlock = null; - private MultiBlockInteractionHandler onInteract() { - return (p, mb, b) -> { - if (mb.isMultiBlock(this)) { - if (!isDisabled() && CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true) && Slimefun.hasUnlocked(p, getItem(), true)) { - Block dispBlock = null; + // Maybe this could be implemented by instead looping over a BlockFace<> array? + if (b.getRelative(1, 0, 0).getType() == Material.DISPENSER) dispBlock = b.getRelative(1, 0, 0); + else if (b.getRelative(0, 0, 1).getType() == Material.DISPENSER) dispBlock = b.getRelative(0, 0, 1); + else if (b.getRelative(-1, 0, 0).getType() == Material.DISPENSER) dispBlock = b.getRelative(-1, 0, 0); + else if (b.getRelative(0, 0, -1).getType() == Material.DISPENSER) dispBlock = b.getRelative(0, 0, -1); - // Maybe this could be implemented by instead looping over a BlockFace<> array? - if (b.getRelative(1, 0, 0).getType() == Material.DISPENSER) dispBlock = b.getRelative(1, 0, 0); - else if (b.getRelative(0, 0, 1).getType() == Material.DISPENSER) dispBlock = b.getRelative(0, 0, 1); - else if (b.getRelative(-1, 0, 0).getType() == Material.DISPENSER) dispBlock = b.getRelative(-1, 0, 0); - else if (b.getRelative(0, 0, -1).getType() == Material.DISPENSER) dispBlock = b.getRelative(0, 0, -1); + Dispenser disp = (Dispenser) dispBlock.getState(); + final Inventory inv = disp.getInventory(); + List inputs = RecipeType.getRecipeInputList(this); - Dispenser disp = (Dispenser) dispBlock.getState(); - final Inventory inv = disp.getInventory(); - List inputs = RecipeType.getRecipeInputList(this); + for (int i = 0; i < inputs.size(); i++) { + boolean craft = true; + for (int j = 0; j < inv.getContents().length; j++) { + if (!SlimefunManager.isItemSimiliar(inv.getContents()[j], inputs.get(i)[j], true)) { + if (SlimefunItem.getByItem(inputs.get(i)[j]) instanceof SlimefunBackpack) { + if (!SlimefunManager.isItemSimiliar(inv.getContents()[j], inputs.get(i)[j], false)) { + craft = false; + break; + } + } + else { + craft = false; + break; + } + } + } - for (int i = 0; i < inputs.size(); i++) { - boolean craft = true; - for (int j = 0; j < inv.getContents().length; j++) { - if (!SlimefunManager.isItemSimiliar(inv.getContents()[j], inputs.get(i)[j], true)) { - if (SlimefunItem.getByItem(inputs.get(i)[j]) instanceof SlimefunBackpack) { - if (!SlimefunManager.isItemSimiliar(inv.getContents()[j], inputs.get(i)[j], false)) { - craft = false; - break; - } - } - else { - craft = false; + if (craft) { + final ItemStack adding = RecipeType.getRecipeOutputList(this, inputs.get(i)).clone(); + if (Slimefun.hasUnlocked(p, adding, true)) { + Inventory inv2 = Bukkit.createInventory(null, 9, "test"); + + for (int j = 0; j < inv.getContents().length; j++) { + inv2.setItem(j, inv.getContents()[j] != null ? (inv.getContents()[j].getAmount() > 1 ? new CustomItem(inv.getContents()[j], inv.getContents()[j].getAmount() - 1): null): null); + } + + Inventory outputInv = findOutputInventory(adding, dispBlock, inv, inv2); + if (outputInv != null) { + SlimefunItem sfItem = SlimefunItem.getByItem(adding); + + if (sfItem instanceof SlimefunBackpack) { + ItemStack backpack = null; + + for (int j = 0; j < 9; j++) { + if (inv.getContents()[j] != null && inv.getContents()[j].getType() != Material.AIR && SlimefunItem.getByItem(inv.getContents()[j]) instanceof SlimefunBackpack) { + backpack = inv.getContents()[j]; break; } } + + String id = ""; + int size = ((SlimefunBackpack) sfItem).getSize(); + + if (backpack != null) { + for (String line: backpack.getItemMeta().getLore()) { + if (line.startsWith(ChatColor.translateAlternateColorCodes('&', "&7ID: ")) && line.contains("#")) { + id = line.replace(ChatColor.translateAlternateColorCodes('&', "&7ID: "), ""); + PlayerProfile.fromUUID(UUID.fromString(id.split("#")[0])).getBackpack(Integer.parseInt(id.split("#")[1])).setSize(size); + break; + } + } + } + + if (id.equals("")) { + for (int line = 0; line < adding.getItemMeta().getLore().size(); line++) { + if (adding.getItemMeta().getLore().get(line).equals(ChatColor.translateAlternateColorCodes('&', "&7ID: "))) { + int backpackID = PlayerProfile.fromUUID(p.getUniqueId()).createBackpack(size).getID(); + + ItemMeta im = adding.getItemMeta(); + List lore = im.getLore(); + lore.set(line, lore.get(line).replace("", p.getUniqueId() + "#" + backpackID)); + im.setLore(lore); + adding.setItemMeta(im); + break; + } + } + } + else { + for (int line = 0; line < adding.getItemMeta().getLore().size(); line++) { + if (adding.getItemMeta().getLore().get(line).equals(ChatColor.translateAlternateColorCodes('&', "&7ID: "))) { + ItemMeta im = adding.getItemMeta(); + List lore = im.getLore(); + lore.set(line, lore.get(line).replace("", id)); + im.setLore(lore); + adding.setItemMeta(im); + break; + } + } + } } - if (craft) { - final ItemStack adding = RecipeType.getRecipeOutputList(this, inputs.get(i)).clone(); - if (Slimefun.hasUnlocked(p, adding, true)) { - Inventory inv2 = Bukkit.createInventory(null, 9, "test"); - - for (int j = 0; j < inv.getContents().length; j++) { - inv2.setItem(j, inv.getContents()[j] != null ? (inv.getContents()[j].getAmount() > 1 ? new CustomItem(inv.getContents()[j], inv.getContents()[j].getAmount() - 1): null): null); - } - - Inventory outputInv = SlimefunMachine.findValidOutputInv(adding, dispBlock, inv, inv2); - if (outputInv != null) { - SlimefunItem sfItem = SlimefunItem.getByItem(adding); - - if (sfItem instanceof SlimefunBackpack) { - ItemStack backpack = null; - - for (int j = 0; j < 9; j++) { - if (inv.getContents()[j] != null && inv.getContents()[j].getType() != Material.AIR && SlimefunItem.getByItem(inv.getContents()[j]) instanceof SlimefunBackpack) { - backpack = inv.getContents()[j]; - break; - } - } - - String id = ""; - int size = ((SlimefunBackpack) sfItem).getSize(); - - if (backpack != null) { - for (String line: backpack.getItemMeta().getLore()) { - if (line.startsWith(ChatColor.translateAlternateColorCodes('&', "&7ID: ")) && line.contains("#")) { - id = line.replace(ChatColor.translateAlternateColorCodes('&', "&7ID: "), ""); - PlayerProfile.fromUUID(UUID.fromString(id.split("#")[0])).getBackpack(Integer.parseInt(id.split("#")[1])).setSize(size); - break; - } - } - } - - if (id.equals("")) { - for (int line = 0; line < adding.getItemMeta().getLore().size(); line++) { - if (adding.getItemMeta().getLore().get(line).equals(ChatColor.translateAlternateColorCodes('&', "&7ID: "))) { - int backpackID = PlayerProfile.fromUUID(p.getUniqueId()).createBackpack(size).getID(); - - ItemMeta im = adding.getItemMeta(); - List lore = im.getLore(); - lore.set(line, lore.get(line).replace("", p.getUniqueId() + "#" + backpackID)); - im.setLore(lore); - adding.setItemMeta(im); - break; - } - } - } - else { - for (int line = 0; line < adding.getItemMeta().getLore().size(); line++) { - if (adding.getItemMeta().getLore().get(line).equals(ChatColor.translateAlternateColorCodes('&', "&7ID: "))) { - ItemMeta im = adding.getItemMeta(); - List lore = im.getLore(); - lore.set(line, lore.get(line).replace("", id)); - im.setLore(lore); - adding.setItemMeta(im); - break; - } - } - } - } - - for (int j = 0; j < 9; j++) { - if (inv.getContents()[j] != null && inv.getContents()[j].getType() != Material.AIR) { - if (inv.getContents()[j].getAmount() > 1) inv.setItem(j, new CustomItem(inv.getContents()[j], inv.getContents()[j].getAmount() - 1)); - else inv.setItem(j, null); - } - } - for (int j = 0; j < 4; j++) { - int current = j; - Bukkit.getScheduler().runTaskLater(SlimefunStartup.instance, () -> { - 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 { - p.getWorld().playSound(p.getLocation(), Sound.ENTITY_ARROW_HIT_PLAYER, 1F, 1F); - outputInv.addItem(adding); - } - }, j*20L); - } - } - else Messages.local.sendTranslation(p, "machines.full-inventory", true); + for (int j = 0; j < 9; j++) { + if (inv.getContents()[j] != null && inv.getContents()[j].getType() != Material.AIR) { + if (inv.getContents()[j].getAmount() > 1) inv.setItem(j, new CustomItem(inv.getContents()[j], inv.getContents()[j].getAmount() - 1)); + else inv.setItem(j, null); } - return true; + } + for (int j = 0; j < 4; j++) { + int current = j; + Bukkit.getScheduler().runTaskLater(SlimefunStartup.instance, () -> { + 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 { + p.getWorld().playSound(p.getLocation(), Sound.ENTITY_ARROW_HIT_PLAYER, 1F, 1F); + outputInv.addItem(adding); + } + }, j*20L); } } - Messages.local.sendTranslation(p, "machines.pattern-not-found", true); + else Messages.local.sendTranslation(p, "machines.full-inventory", true); } - return true; + + return; } - else return false; - }; + } + Messages.local.sendTranslation(p, "machines.pattern-not-found", true); } } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/MultiBlockMachine.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/MultiBlockMachine.java new file mode 100644 index 000000000..51701df94 --- /dev/null +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/MultiBlockMachine.java @@ -0,0 +1,86 @@ +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks; + +import org.bukkit.Material; +import org.bukkit.block.Block; +import org.bukkit.block.BlockFace; +import org.bukkit.block.Container; +import org.bukkit.entity.Player; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.ItemStack; + +import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib; +import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.InvUtils; +import me.mrCookieSlime.Slimefun.Objects.Category; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunMachine; +import me.mrCookieSlime.Slimefun.Objects.handlers.MultiBlockInteractionHandler; +import me.mrCookieSlime.Slimefun.api.BlockStorage; +import me.mrCookieSlime.Slimefun.api.Slimefun; + +public abstract class MultiBlockMachine extends SlimefunMachine { + + private static final BlockFace[] outputFaces = { + BlockFace.UP, + BlockFace.NORTH, + BlockFace.EAST, + BlockFace.SOUTH, + BlockFace.WEST + }; + + public MultiBlockMachine(Category category, ItemStack item, String id, ItemStack[] recipe, ItemStack[] machineRecipes, Material trigger) { + super(category, item, id, recipe, machineRecipes, trigger); + } + + public MultiBlockMachine(Category category, ItemStack item, String id, ItemStack[] recipe, ItemStack[] machineRecipes, Material trigger, String[] keys, Object[] values) { + super(category, item, id, recipe, machineRecipes, trigger, keys, values); + } + + @Override + public void register() { + register(true, getInteractionHandler()); + } + + protected MultiBlockInteractionHandler getInteractionHandler() { + return (p, mb, b) -> { + if (mb.isMultiBlock(this)) { + if (!isDisabled() && CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true) && Slimefun.hasUnlocked(p, getItem(), true)) { + onInteract(p, b); + } + + return true; + } + else return false; + }; + } + + public abstract void onInteract(Player p, Block b); + + // Overloaded method for finding a potential output chest. Fallbacks to the old system of putting the adding back into the dispenser. + // Optional last argument Inventory placeCheckerInv is for multiblock machines that create a dummy inventory to check if there's a space for the adding, + // i.e. Enhanced crafting table + protected Inventory findOutputInventory(ItemStack adding, Block dispBlock, Inventory dispInv) { + return findOutputInventory(adding, dispBlock, dispInv, dispInv); + } + + protected Inventory findOutputInventory(ItemStack product, Block dispBlock, Inventory dispInv, Inventory placeCheckerInv) { + Inventory outputInv = null; + + for (BlockFace face : outputFaces) { + Block potentialOutput = dispBlock.getRelative(face); + String id = BlockStorage.checkID(potentialOutput); + if (id != null && id.equals("OUTPUT_CHEST")) { + // Found the output chest! Now, let's check if we can fit the product in it. + Inventory inv = ((Container) potentialOutput.getState()).getInventory(); + if (InvUtils.fits(inv, product)) { + // It fits! Let's set the inventory to that now. + outputInv = inv; + break; + } + } + } + // This if-clause will trigger if no suitable output chest was found. It's functionally the same as the old fit check for the dispenser, only refactored. + if (outputInv == null && InvUtils.fits(placeCheckerInv, product)) outputInv = dispInv; + + return outputInv; + } + +} diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/OreCrusher.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/OreCrusher.java index 63d6688f9..26fe4c136 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/OreCrusher.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/OreCrusher.java @@ -5,21 +5,19 @@ import org.bukkit.Material; import org.bukkit.block.Block; import org.bukkit.block.BlockFace; import org.bukkit.block.Dispenser; +import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; -import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; import me.mrCookieSlime.Slimefun.Lists.Categories; import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunMachine; -import me.mrCookieSlime.Slimefun.Objects.handlers.MultiBlockInteractionHandler; import me.mrCookieSlime.Slimefun.Setup.Messages; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.api.Slimefun; -public class OreCrusher extends SlimefunMachine { +public class OreCrusher extends MultiBlockMachine { public OreCrusher() { super( @@ -27,48 +25,46 @@ public class OreCrusher extends SlimefunMachine { SlimefunItems.ORE_CRUSHER, "ORE_CRUSHER", new ItemStack[] {null, null, null, null, new ItemStack(Material.NETHER_BRICK_FENCE), null, new ItemStack(Material.IRON_BARS), new CustomItem(Material.DISPENSER, "Dispenser (Facing up)"), new ItemStack(Material.IRON_BARS)}, - new ItemStack[] {new ItemStack(Material.IRON_ORE), new CustomItem(SlimefunItems.IRON_DUST, (Boolean) Slimefun.getItemValue("ORE_CRUSHER", "double-ores") ? 2: 1), new ItemStack(Material.GOLD_ORE), new CustomItem(SlimefunItems.GOLD_DUST, (Boolean) Slimefun.getItemValue("ORE_CRUSHER", "double-ores") ? 2: 1), new ItemStack(Material.NETHERRACK, 16), SlimefunItems.SULFATE, SlimefunItems.SIFTED_ORE, SlimefunItems.CRUSHED_ORE, SlimefunItems.CRUSHED_ORE, SlimefunItems.PULVERIZED_ORE, SlimefunItems.PURE_ORE_CLUSTER, SlimefunItems.TINY_URANIUM, new ItemStack(Material.COBBLESTONE, 8), new ItemStack(Material.SAND, 1), new ItemStack(Material.GOLD_INGOT), SlimefunItems.GOLD_DUST, SlimefunItems.GOLD_4K, SlimefunItems.GOLD_DUST}, + new ItemStack[] { + new ItemStack(Material.IRON_ORE), new CustomItem(SlimefunItems.IRON_DUST, (Boolean) Slimefun.getItemValue("ORE_CRUSHER", "double-ores") ? 2: 1), + new ItemStack(Material.GOLD_ORE), new CustomItem(SlimefunItems.GOLD_DUST, (Boolean) Slimefun.getItemValue("ORE_CRUSHER", "double-ores") ? 2: 1), + new ItemStack(Material.NETHERRACK, 16), SlimefunItems.SULFATE, + SlimefunItems.SIFTED_ORE, SlimefunItems.CRUSHED_ORE, + SlimefunItems.CRUSHED_ORE, SlimefunItems.PULVERIZED_ORE, + SlimefunItems.PURE_ORE_CLUSTER, SlimefunItems.TINY_URANIUM, + new ItemStack(Material.COBBLESTONE, 8), new ItemStack(Material.SAND, 1), + new ItemStack(Material.GOLD_INGOT), SlimefunItems.GOLD_DUST, + SlimefunItems.GOLD_4K, SlimefunItems.GOLD_DUST + }, Material.NETHER_BRICK_FENCE ); } @Override - public void register() { - register(true, onInteract()); - } - - private MultiBlockInteractionHandler onInteract() { - return (p, mb, b) -> { - if (mb.isMultiBlock(this)) { - if (!isDisabled() && CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true) && Slimefun.hasUnlocked(p, getItem(), true)) { - Block dispBlock = b.getRelative(BlockFace.DOWN); - Dispenser disp = (Dispenser) dispBlock.getState(); - Inventory inv = disp.getInventory(); - for (ItemStack current: inv.getContents()) { - for (ItemStack convert: RecipeType.getRecipeInputs(this)) { - if (convert != null && SlimefunManager.isItemSimiliar(current, convert, true)) { - ItemStack adding = RecipeType.getRecipeOutput(this, convert); - Inventory outputInv = SlimefunMachine.findValidOutputInv(adding, dispBlock, inv); - if (outputInv != null) { - ItemStack removing = current.clone(); - removing.setAmount(convert.getAmount()); - inv.removeItem(removing); - outputInv.addItem(adding); - p.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, 1); - } - else Messages.local.sendTranslation(p, "machines.full-inventory", true); - return true; - } - } + public void onInteract(Player p, Block b) { + Block dispBlock = b.getRelative(BlockFace.DOWN); + Dispenser disp = (Dispenser) dispBlock.getState(); + Inventory inv = disp.getInventory(); + for (ItemStack current: inv.getContents()) { + for (ItemStack convert: RecipeType.getRecipeInputs(this)) { + if (convert != null && SlimefunManager.isItemSimiliar(current, convert, true)) { + ItemStack adding = RecipeType.getRecipeOutput(this, convert); + Inventory outputInv = findOutputInventory(adding, dispBlock, inv); + if (outputInv != null) { + ItemStack removing = current.clone(); + removing.setAmount(convert.getAmount()); + inv.removeItem(removing); + outputInv.addItem(adding); + p.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, 1); } - Messages.local.sendTranslation(p, "machines.unknown-material", true); + else Messages.local.sendTranslation(p, "machines.full-inventory", true); + + return; } - return true; } - else { - return false; - } - }; + } + + Messages.local.sendTranslation(p, "machines.unknown-material", true); } } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/OreWasher.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/OreWasher.java index 4e385809b..45367927f 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/OreWasher.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/OreWasher.java @@ -8,21 +8,18 @@ import org.bukkit.Sound; import org.bukkit.block.Block; import org.bukkit.block.BlockFace; import org.bukkit.block.Dispenser; +import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; -import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.InvUtils; import me.mrCookieSlime.Slimefun.SlimefunStartup; import me.mrCookieSlime.Slimefun.Lists.Categories; import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunMachine; -import me.mrCookieSlime.Slimefun.Objects.handlers.MultiBlockInteractionHandler; import me.mrCookieSlime.Slimefun.Setup.Messages; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; -import me.mrCookieSlime.Slimefun.api.Slimefun; -public class OreWasher extends SlimefunMachine { +public class OreWasher extends MultiBlockMachine { public static ItemStack[] items; @@ -32,92 +29,91 @@ public class OreWasher extends SlimefunMachine { SlimefunItems.ORE_WASHER, "ORE_WASHER", new ItemStack[] {null, new ItemStack(Material.DISPENSER), null, null, new ItemStack(Material.OAK_FENCE), null, null, new ItemStack(Material.CAULDRON), null}, - new ItemStack[] {SlimefunItems.SIFTED_ORE, SlimefunItems.IRON_DUST, SlimefunItems.SIFTED_ORE, SlimefunItems.GOLD_DUST, SlimefunItems.SIFTED_ORE, SlimefunItems.COPPER_DUST, SlimefunItems.SIFTED_ORE, SlimefunItems.TIN_DUST, SlimefunItems.SIFTED_ORE, SlimefunItems.ZINC_DUST, SlimefunItems.SIFTED_ORE, SlimefunItems.ALUMINUM_DUST, SlimefunItems.SIFTED_ORE, SlimefunItems.MAGNESIUM_DUST, SlimefunItems.SIFTED_ORE, SlimefunItems.LEAD_DUST, SlimefunItems.SIFTED_ORE, SlimefunItems.SILVER_DUST}, + new ItemStack[] { + SlimefunItems.SIFTED_ORE, SlimefunItems.IRON_DUST, + SlimefunItems.SIFTED_ORE, SlimefunItems.GOLD_DUST, + SlimefunItems.SIFTED_ORE, SlimefunItems.COPPER_DUST, + SlimefunItems.SIFTED_ORE, SlimefunItems.TIN_DUST, + SlimefunItems.SIFTED_ORE, SlimefunItems.ZINC_DUST, + SlimefunItems.SIFTED_ORE, SlimefunItems.ALUMINUM_DUST, + SlimefunItems.SIFTED_ORE, SlimefunItems.MAGNESIUM_DUST, + SlimefunItems.SIFTED_ORE, SlimefunItems.LEAD_DUST, + SlimefunItems.SIFTED_ORE, SlimefunItems.SILVER_DUST + }, Material.OAK_FENCE ); } @Override - public void register() { - register(true, onInteract()); - } + public void onInteract(Player p, Block b) { + Block dispBlock = b.getRelative(BlockFace.UP); + Dispenser disp = (Dispenser) dispBlock.getState(); + Inventory inv = disp.getInventory(); - private MultiBlockInteractionHandler onInteract() { - return (p, mb, b) -> { - if (mb.isMultiBlock(this)) { - if (!isDisabled() && CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true) && Slimefun.hasUnlocked(p, getItem(), true)) { - Block dispBlock = b.getRelative(BlockFace.UP); - Dispenser disp = (Dispenser) dispBlock.getState(); - Inventory inv = disp.getInventory(); + for (ItemStack current: inv.getContents()) { + if (current != null) { + if (SlimefunManager.isItemSimiliar(current, SlimefunItems.SIFTED_ORE, true)) { + ItemStack adding = items[new Random().nextInt(items.length)]; + Inventory outputInv = null; - for (ItemStack current: inv.getContents()) { - if (current != null) { - if (SlimefunManager.isItemSimiliar(current, SlimefunItems.SIFTED_ORE, true)) { - ItemStack adding = items[new Random().nextInt(items.length)]; - Inventory outputInv = null; - - if (!SlimefunStartup.instance.getSettings().ORE_WASHER_LEGACY) { - // This is a fancy way of checking if there is empty space in the inv; by checking if an unobtainable item could fit in it. - // However, due to the way the method findValidOutputInv() functions, the dummyAdding will never actually be added to the real inventory, - // so it really doesn't matter what item the ItemStack is made by. SlimefunItems.DEBUG_FISH however, signals that it's - // not supposed to be given to the player. - ItemStack dummyAdding = SlimefunItems.DEBUG_FISH; - outputInv = SlimefunMachine.findValidOutputInv(dummyAdding, dispBlock, inv); - } - else outputInv = SlimefunMachine.findValidOutputInv(adding, dispBlock, inv); - - if (outputInv != null) { - ItemStack removing = current.clone(); - removing.setAmount(1); - inv.removeItem(removing); - outputInv.addItem(adding); - p.getWorld().playSound(b.getLocation(), Sound.ENTITY_PLAYER_SPLASH, 1, 1); - p.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, Material.WATER); - if (InvUtils.fits(outputInv, SlimefunItems.STONE_CHUNK)) outputInv.addItem(SlimefunItems.STONE_CHUNK); - } - else Messages.local.sendTranslation(p, "machines.full-inventory", true); - return true; - } - else if (SlimefunManager.isItemSimiliar(current, new ItemStack(Material.SAND, 4), false)) { - ItemStack adding = SlimefunItems.SALT; - Inventory outputInv = SlimefunMachine.findValidOutputInv(adding, dispBlock, inv); - - if (outputInv != null) { - ItemStack removing = current.clone(); - removing.setAmount(4); - inv.removeItem(removing); - outputInv.addItem(adding); - p.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, Material.WATER); - p.getWorld().playSound(b.getLocation(), Sound.ENTITY_PLAYER_SPLASH, 1, 1); - } - else Messages.local.sendTranslation(p, "machines.full-inventory", true); - - return true; - } - else if (SlimefunManager.isItemSimiliar(current, SlimefunItems.PULVERIZED_ORE, true)) { - ItemStack adding = SlimefunItems.PURE_ORE_CLUSTER; - Inventory outputInv = SlimefunMachine.findValidOutputInv(adding, dispBlock, inv); - - if (outputInv != null) { - ItemStack removing = current.clone(); - removing.setAmount(1); - inv.removeItem(removing); - outputInv.addItem(adding); - p.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, Material.WATER); - p.getWorld().playSound(b.getLocation(), Sound.ENTITY_PLAYER_SPLASH, 1, 1); - } - else Messages.local.sendTranslation(p, "machines.full-inventory", true); - - return true; - } - } + if (!SlimefunStartup.instance.getSettings().ORE_WASHER_LEGACY) { + // This is a fancy way of checking if there is empty space in the inv; by checking if an unobtainable item could fit in it. + // However, due to the way the method findValidOutputInv() functions, the dummyAdding will never actually be added to the real inventory, + // so it really doesn't matter what item the ItemStack is made by. SlimefunItems.DEBUG_FISH however, signals that it's + // not supposed to be given to the player. + ItemStack dummyAdding = SlimefunItems.DEBUG_FISH; + outputInv = findOutputInventory(dummyAdding, dispBlock, inv); } - Messages.local.sendTranslation(p, "machines.unknown-material", true); + else outputInv = findOutputInventory(adding, dispBlock, inv); + + if (outputInv != null) { + ItemStack removing = current.clone(); + removing.setAmount(1); + inv.removeItem(removing); + outputInv.addItem(adding); + p.getWorld().playSound(b.getLocation(), Sound.ENTITY_PLAYER_SPLASH, 1, 1); + p.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, Material.WATER); + if (InvUtils.fits(outputInv, SlimefunItems.STONE_CHUNK)) outputInv.addItem(SlimefunItems.STONE_CHUNK); + } + else Messages.local.sendTranslation(p, "machines.full-inventory", true); + + return; + } + else if (SlimefunManager.isItemSimiliar(current, new ItemStack(Material.SAND, 4), false)) { + ItemStack adding = SlimefunItems.SALT; + Inventory outputInv = findOutputInventory(adding, dispBlock, inv); + + if (outputInv != null) { + ItemStack removing = current.clone(); + removing.setAmount(4); + inv.removeItem(removing); + outputInv.addItem(adding); + p.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, Material.WATER); + p.getWorld().playSound(b.getLocation(), Sound.ENTITY_PLAYER_SPLASH, 1, 1); + } + else Messages.local.sendTranslation(p, "machines.full-inventory", true); + + return; + } + else if (SlimefunManager.isItemSimiliar(current, SlimefunItems.PULVERIZED_ORE, true)) { + ItemStack adding = SlimefunItems.PURE_ORE_CLUSTER; + Inventory outputInv = findOutputInventory(adding, dispBlock, inv); + + if (outputInv != null) { + ItemStack removing = current.clone(); + removing.setAmount(1); + inv.removeItem(removing); + outputInv.addItem(adding); + p.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, Material.WATER); + p.getWorld().playSound(b.getLocation(), Sound.ENTITY_PLAYER_SPLASH, 1, 1); + } + else Messages.local.sendTranslation(p, "machines.full-inventory", true); + + return; } - return true; } - else return false; - }; + } + Messages.local.sendTranslation(p, "machines.unknown-material", true); } } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/PressureChamber.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/PressureChamber.java new file mode 100644 index 000000000..d64d6cd68 --- /dev/null +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/PressureChamber.java @@ -0,0 +1,80 @@ +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks; + +import org.bukkit.Bukkit; +import org.bukkit.Effect; +import org.bukkit.Material; +import org.bukkit.Sound; +import org.bukkit.block.Block; +import org.bukkit.block.BlockFace; +import org.bukkit.block.Dispenser; +import org.bukkit.entity.Player; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.ItemStack; + +import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; +import me.mrCookieSlime.Slimefun.SlimefunStartup; +import me.mrCookieSlime.Slimefun.Lists.Categories; +import me.mrCookieSlime.Slimefun.Lists.RecipeType; +import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; +import me.mrCookieSlime.Slimefun.Setup.Messages; +import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; + +public class PressureChamber extends MultiBlockMachine { + + public PressureChamber() { + super( + Categories.MACHINES_1, + SlimefunItems.PRESSURE_CHAMBER, + "PRESSURE_CHAMBER", + new ItemStack[] {new ItemStack(Material.STONE_SLAB), new CustomItem(Material.DISPENSER, "Dispenser (Facing down)"), new ItemStack(Material.STONE_SLAB), new ItemStack(Material.PISTON), new ItemStack(Material.GLASS), new ItemStack(Material.PISTON), new ItemStack(Material.PISTON), new ItemStack(Material.CAULDRON), new ItemStack(Material.PISTON)}, + new ItemStack[] { + SlimefunItems.CARBON_CHUNK, SlimefunItems.SYNTHETIC_DIAMOND, + SlimefunItems.RAW_CARBONADO, SlimefunItems.CARBONADO + }, + Material.CAULDRON + ); + } + + @Override + public void onInteract(Player p, Block b) { + Block dispBlock = b.getRelative(BlockFace.UP).getRelative(BlockFace.UP); + Dispenser disp = (Dispenser) dispBlock.getState(); + final Inventory inv = disp.getInventory(); + for (ItemStack current: inv.getContents()) { + for (ItemStack convert: RecipeType.getRecipeInputs(this)) { + if (convert != null && SlimefunManager.isItemSimiliar(current, convert, true)) { + final ItemStack adding = RecipeType.getRecipeOutput(this, convert); + Inventory outputInv = findOutputInventory(adding, dispBlock, inv); + if (outputInv != null) { + ItemStack removing = current.clone(); + removing.setAmount(convert.getAmount()); + inv.removeItem(removing); + for (int i = 0; i < 4; i++) { + int j = i; + + Bukkit.getScheduler().runTaskLater(SlimefunStartup.instance, () -> { + p.getWorld().playSound(b.getLocation(), Sound.ENTITY_TNT_PRIMED, 1, 1); + p.getWorld().playEffect(b.getRelative(BlockFace.UP).getLocation(), Effect.SMOKE, 4); + p.getWorld().playEffect(b.getRelative(BlockFace.UP).getLocation(), Effect.SMOKE, 4); + p.getWorld().playEffect(b.getRelative(BlockFace.UP).getLocation(), Effect.SMOKE, 4); + + if (j < 3) { + p.getWorld().playSound(b.getLocation(), Sound.ENTITY_TNT_PRIMED, 1F, 1F); + } + else { + p.getWorld().playSound(p.getLocation(), Sound.ENTITY_ARROW_HIT_PLAYER, 1F, 1F); + outputInv.addItem(adding); + } + }, i*20L); + } + } + else Messages.local.sendTranslation(p, "machines.full-inventory", true); + + return; + } + } + } + Messages.local.sendTranslation(p, "machines.unknown-material", true); + } + +} diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/Smeltery.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/Smeltery.java index 483e209cd..6286e9a03 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/Smeltery.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/Smeltery.java @@ -10,25 +10,23 @@ import org.bukkit.block.Block; import org.bukkit.block.BlockFace; import org.bukkit.block.Dispenser; import org.bukkit.block.Hopper; +import org.bukkit.entity.Player; 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.general.Inventory.Item.CustomItem; import me.mrCookieSlime.Slimefun.SlimefunStartup; import me.mrCookieSlime.Slimefun.Lists.Categories; import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunMachine; -import me.mrCookieSlime.Slimefun.Objects.handlers.MultiBlockInteractionHandler; import me.mrCookieSlime.Slimefun.Setup.Messages; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.api.BlockStorage; import me.mrCookieSlime.Slimefun.api.Slimefun; -public class Smeltery extends SlimefunMachine { +public class Smeltery extends MultiBlockMachine { public Smeltery() { super( @@ -36,95 +34,86 @@ public class Smeltery extends SlimefunMachine { SlimefunItems.SMELTERY, "SMELTERY", new ItemStack[] {null, new ItemStack(Material.NETHER_BRICK_FENCE), null, new ItemStack(Material.NETHER_BRICKS), new CustomItem(Material.DISPENSER, "Dispencer (Faced up)"), new ItemStack(Material.NETHER_BRICKS), null, new ItemStack(Material.FLINT_AND_STEEL), null}, - new ItemStack[] {SlimefunItems.IRON_DUST, new ItemStack(Material.IRON_INGOT)}, + new ItemStack[] { + SlimefunItems.IRON_DUST, new ItemStack(Material.IRON_INGOT) + }, Material.NETHER_BRICK_FENCE, new String[] {"chance.fireBreak"}, new Integer[] {34} ); } @Override - public void register() { - register(true, onInteract()); - } + public void onInteract(Player p, Block b) { + Block dispBlock = b.getRelative(BlockFace.DOWN); + Dispenser disp = (Dispenser) dispBlock.getState(); + Inventory inv = disp.getInventory(); + List inputs = RecipeType.getRecipeInputList(this); - private MultiBlockInteractionHandler onInteract() { - return (p, mb, b) -> { - if (mb.isMultiBlock(this)) { - if (!isDisabled() && CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true) && Slimefun.hasUnlocked(p, getItem(), true)) { - Block dispBlock = b.getRelative(BlockFace.DOWN); - Dispenser disp = (Dispenser) dispBlock.getState(); - Inventory inv = disp.getInventory(); - List inputs = RecipeType.getRecipeInputList(this); - - for (int i = 0; i < inputs.size(); i++) { - boolean craft = true; - for (ItemStack converting: inputs.get(i)) { - if (converting != null) { - for (int j = 0; j < inv.getContents().length; j++) { - if (j == (inv.getContents().length - 1) && !SlimefunManager.isItemSimiliar(converting, inv.getContents()[j], true)) { - craft = false; - break; - } - else if (SlimefunManager.isItemSimiliar(inv.getContents()[j], converting, true)) break; - } - } + for (int i = 0; i < inputs.size(); i++) { + boolean craft = true; + for (ItemStack converting: inputs.get(i)) { + if (converting != null) { + for (int j = 0; j < inv.getContents().length; j++) { + if (j == (inv.getContents().length - 1) && !SlimefunManager.isItemSimiliar(converting, inv.getContents()[j], true)) { + craft = false; + break; } + else if (SlimefunManager.isItemSimiliar(inv.getContents()[j], converting, true)) break; + } + } + } - if (craft) { - ItemStack adding = RecipeType.getRecipeOutputList(this, inputs.get(i)).clone(); - if (Slimefun.hasUnlocked(p, adding, true)) { - Inventory outputInv = SlimefunMachine.findValidOutputInv(adding, dispBlock, inv); - if (outputInv != null) { - for (ItemStack removing: inputs.get(i)) { - if (removing != null) inv.removeItem(removing); + if (craft) { + ItemStack adding = RecipeType.getRecipeOutputList(this, inputs.get(i)).clone(); + if (Slimefun.hasUnlocked(p, adding, true)) { + Inventory outputInv = findOutputInventory(adding, dispBlock, inv); + if (outputInv != null) { + for (ItemStack removing: inputs.get(i)) { + if (removing != null) inv.removeItem(removing); + } + outputInv.addItem(adding); + p.getWorld().playSound(p.getLocation(), Sound.BLOCK_LAVA_POP, 1, 1); + p.getWorld().playEffect(b.getLocation(), Effect.MOBSPAWNER_FLAMES, 1); + + Hopper chamber = findHopper(dispBlock, BlockFace.NORTH, BlockFace.EAST, BlockFace.SOUTH, BlockFace.WEST); + + if (new Random().nextInt(100) < SlimefunStartup.instance.getSettings().SMELTERY_FIRE_BREAK_CHANCE) { + if (chamber != null) { + if (chamber.getInventory().contains(Material.FLINT_AND_STEEL)) { + ItemStack item = chamber.getInventory().getItem(chamber.getInventory().first(Material.FLINT_AND_STEEL)); + ItemMeta meta = item.getItemMeta(); + ((Damageable) meta).setDamage(((Damageable) meta).getDamage() + 1); + item.setItemMeta(meta); + + if (((Damageable) item.getItemMeta()).getDamage() >= item.getType().getMaxDurability()) { + item.setAmount(0); + p.getWorld().playSound(p.getLocation(), Sound.ENTITY_ITEM_BREAK, 1, 1); } - outputInv.addItem(adding); - p.getWorld().playSound(p.getLocation(), Sound.BLOCK_LAVA_POP, 1, 1); - p.getWorld().playEffect(b.getLocation(), Effect.MOBSPAWNER_FLAMES, 1); - Hopper chamber = findHopper(dispBlock, BlockFace.NORTH, BlockFace.EAST, BlockFace.SOUTH, BlockFace.WEST); - - if (new Random().nextInt(100) < SlimefunStartup.instance.getSettings().SMELTERY_FIRE_BREAK_CHANCE) { - if (chamber != null) { - if (chamber.getInventory().contains(Material.FLINT_AND_STEEL)) { - ItemStack item = chamber.getInventory().getItem(chamber.getInventory().first(Material.FLINT_AND_STEEL)); - ItemMeta meta = item.getItemMeta(); - ((Damageable) meta).setDamage(((Damageable) meta).getDamage() + 1); - item.setItemMeta(meta); - - if (((Damageable) item.getItemMeta()).getDamage() >= item.getType().getMaxDurability()) { - item.setAmount(0); - p.getWorld().playSound(p.getLocation(), Sound.ENTITY_ITEM_BREAK, 1, 1); - } - - p.getWorld().playSound(p.getLocation(), Sound.ITEM_FLINTANDSTEEL_USE, 1, 1); - } - else { - Messages.local.sendTranslation(p, "machines.ignition-chamber-no-flint", true); - - Block fire = b.getRelative(BlockFace.DOWN).getRelative(BlockFace.DOWN); - fire.getWorld().playEffect(fire.getLocation(), Effect.STEP_SOUND, fire.getType()); - fire.setType(Material.AIR); - } - } - else { - Block fire = b.getRelative(BlockFace.DOWN).getRelative(BlockFace.DOWN); - fire.getWorld().playEffect(fire.getLocation(), Effect.STEP_SOUND, fire.getType()); - fire.setType(Material.AIR); - } - } + p.getWorld().playSound(p.getLocation(), Sound.ITEM_FLINTANDSTEEL_USE, 1, 1); + } + else { + Messages.local.sendTranslation(p, "machines.ignition-chamber-no-flint", true); + + Block fire = b.getRelative(BlockFace.DOWN).getRelative(BlockFace.DOWN); + fire.getWorld().playEffect(fire.getLocation(), Effect.STEP_SOUND, fire.getType()); + fire.setType(Material.AIR); } - else Messages.local.sendTranslation(p, "machines.full-inventory", true); } - return true; + else { + Block fire = b.getRelative(BlockFace.DOWN).getRelative(BlockFace.DOWN); + fire.getWorld().playEffect(fire.getLocation(), Effect.STEP_SOUND, fire.getType()); + fire.setType(Material.AIR); + } } } - Messages.local.sendTranslation(p, "machines.pattern-not-found", true); + else Messages.local.sendTranslation(p, "machines.full-inventory", true); } - return true; + + return; } - else return false; - }; + } + Messages.local.sendTranslation(p, "machines.pattern-not-found", true); } private Hopper findHopper(Block b, BlockFace... faces) { diff --git a/src/me/mrCookieSlime/Slimefun/Setup/MiscSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/MiscSetup.java index 1c76d957b..c37bf5a0d 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/MiscSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/MiscSetup.java @@ -211,7 +211,7 @@ public final class MiscSetup { sender.sendMessage(color + "###################### - Slimefun - ######################"); sender.sendMessage(color + "Successfully loaded " + SlimefunItem.list().size() + " Items (" + Research.list().size() + " Researches)"); - sender.sendMessage(color + "( " + SlimefunItem.vanilla + " Items from Slimefun, " + (SlimefunItem.list().size() - SlimefunItem.vanilla) + " Items from Addons )"); + sender.sendMessage(color + "( " + SlimefunStartup.instance.getUtilities().vanillaItems + " Items from Slimefun, " + (SlimefunItem.list().size() - SlimefunStartup.instance.getUtilities().vanillaItems) + " Items from Addons )"); sender.sendMessage(color + "##########################################################"); SlimefunStartup.getItemCfg().save(); SlimefunStartup.getResearchCfg().save(); diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java index df667b9ee..63b5d8131 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java @@ -143,9 +143,11 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.ArmorForge; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.Compressor; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.EnhancedCraftingTable; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.GrindStone; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.Juicer; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.MagicWorkbench; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.OreCrusher; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.OreWasher; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.PressureChamber; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.Smeltery; import me.mrCookieSlime.Slimefun.Objects.handlers.AutonomousMachineHandler; import me.mrCookieSlime.Slimefun.Objects.handlers.BlockBreakHandler; @@ -434,62 +436,7 @@ public final class SlimefunSetup { new ItemStack[] {SlimefunItems.STEEL_PLATE, SlimefunItems.BASIC_CIRCUIT_BOARD, SlimefunItems.STEEL_PLATE, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.STEEL_PLATE, SlimefunItems.ELECTRIC_MOTOR, null, new ItemStack(Material.HOPPER), null}) .register(true); - new SlimefunMachine(Categories.MACHINES_1, SlimefunItems.PRESSURE_CHAMBER, "PRESSURE_CHAMBER", - new ItemStack[] {new ItemStack(Material.STONE_SLAB), new CustomItem(Material.DISPENSER, "Dispenser (Facing down)"), new ItemStack(Material.STONE_SLAB), new ItemStack(Material.PISTON), new ItemStack(Material.GLASS), new ItemStack(Material.PISTON), new ItemStack(Material.PISTON), new ItemStack(Material.CAULDRON), new ItemStack(Material.PISTON)}, - new ItemStack[] {SlimefunItems.CARBON_CHUNK, SlimefunItems.SYNTHETIC_DIAMOND, SlimefunItems.RAW_CARBONADO, SlimefunItems.CARBONADO}, - Material.CAULDRON) - .register(true, new MultiBlockInteractionHandler() { - - @Override - public boolean onInteract(final Player p, MultiBlock mb, final Block b) { - - SlimefunMachine machine = (SlimefunMachine) SlimefunItem.getByID("PRESSURE_CHAMBER"); - - if (mb.isMultiBlock(machine)) { - if (CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true) && Slimefun.hasUnlocked(p, machine.getItem(), true)) { - Block dispBlock = b.getRelative(BlockFace.UP).getRelative(BlockFace.UP); - Dispenser disp = (Dispenser) dispBlock.getState(); - final Inventory inv = disp.getInventory(); - for (ItemStack current: inv.getContents()) { - for (ItemStack convert: RecipeType.getRecipeInputs(machine)) { - if (convert != null && SlimefunManager.isItemSimiliar(current, convert, true)) { - final ItemStack adding = RecipeType.getRecipeOutput(machine, convert); - Inventory outputInv = SlimefunMachine.findValidOutputInv(adding, dispBlock, inv); - if (outputInv != null) { - ItemStack removing = current.clone(); - removing.setAmount(convert.getAmount()); - inv.removeItem(removing); - for (int i = 0; i < 4; i++) { - int j = i; - - Bukkit.getScheduler().runTaskLater(SlimefunStartup.instance, () -> { - p.getWorld().playSound(b.getLocation(), Sound.ENTITY_TNT_PRIMED, 1, 1); - p.getWorld().playEffect(b.getRelative(BlockFace.UP).getLocation(), Effect.SMOKE, 4); - p.getWorld().playEffect(b.getRelative(BlockFace.UP).getLocation(), Effect.SMOKE, 4); - p.getWorld().playEffect(b.getRelative(BlockFace.UP).getLocation(), Effect.SMOKE, 4); - - if (j < 3) { - p.getWorld().playSound(b.getLocation(), Sound.ENTITY_TNT_PRIMED, 1F, 1F); - } - else { - p.getWorld().playSound(p.getLocation(), Sound.ENTITY_ARROW_HIT_PLAYER, 1F, 1F); - outputInv.addItem(adding); - } - }, i*20L); - } - } - else Messages.local.sendTranslation(p, "machines.full-inventory", true); - return true; - } - } - } - Messages.local.sendTranslation(p, "machines.unknown-material", true); - } - return true; - } - else return false; - } - }); + new PressureChamber().register(true); new SlimefunItem(Categories.TECH_MISC, SlimefunItems.BATTERY, "BATTERY", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] { null, new ItemStack(Material.REDSTONE), null, SlimefunItems.ZINC_INGOT, SlimefunItems.SULFATE, SlimefunItems.COPPER_INGOT, SlimefunItems.ZINC_INGOT, SlimefunItems.SULFATE, SlimefunItems.COPPER_INGOT }) @@ -1951,50 +1898,7 @@ public final class SlimefunSetup { new ItemStack[] {null, SlimefunItems.ESSENCE_OF_AFTERLIFE, null, null, new ItemStack(Material.DIAMOND_BOOTS), null, null, SlimefunItems.ESSENCE_OF_AFTERLIFE, null}) .register(true); - new SlimefunMachine(Categories.MACHINES_1, SlimefunItems.JUICER, "JUICER", - new ItemStack[] {null, new ItemStack(Material.GLASS), null, null, new ItemStack(Material.NETHER_BRICK_FENCE), null, null, new CustomItem(Material.DISPENSER, "Dispenser (Facing up)"), null}, - new ItemStack[] { - new ItemStack(Material.APPLE), SlimefunItems.APPLE_JUICE, - new ItemStack(Material.MELON), SlimefunItems.MELON_JUICE, - new ItemStack(Material.CARROT), SlimefunItems.CARROT_JUICE, - new ItemStack(Material.PUMPKIN), SlimefunItems.PUMPKIN_JUICE}, - Material.NETHER_BRICK_FENCE) - .register(true, new MultiBlockInteractionHandler() { - - @Override - public boolean onInteract(Player p, MultiBlock mb, Block b) { - SlimefunMachine machine = (SlimefunMachine) SlimefunItem.getByID("JUICER"); - - if (mb.isMultiBlock(machine)) { - if (CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true) && Slimefun.hasUnlocked(p, SlimefunItems.JUICER, true)) { - Block dispBlock = b.getRelative(BlockFace.DOWN); - Dispenser disp = (Dispenser) dispBlock.getState(); - Inventory inv = disp.getInventory(); - for (ItemStack current: inv.getContents()) { - for (ItemStack convert: RecipeType.getRecipeInputs(machine)) { - if (convert != null && SlimefunManager.isItemSimiliar(current, convert, true)) { - ItemStack adding = RecipeType.getRecipeOutput(machine, convert); - Inventory outputInv = SlimefunMachine.findValidOutputInv(adding, dispBlock, inv); - if (outputInv != null) { - ItemStack removing = current.clone(); - removing.setAmount(1); - inv.removeItem(removing); - outputInv.addItem(adding); - p.getWorld().playSound(b.getLocation(), Sound.ENTITY_PLAYER_SPLASH, 1F, 1F); - p.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, Material.HAY_BLOCK); - } - else Messages.local.sendTranslation(p, "machines.full-inventory", true); - return true; - } - } - } - Messages.local.sendTranslation(p, "machines.unknown-material", true); - } - return true; - } - else return false; - } - }); + new Juicer().register(true); new Juice(Categories.FOOD, SlimefunItems.APPLE_JUICE, "APPLE_JUICE", RecipeType.JUICER, new ItemStack[] {null, null, null, null, new ItemStack(Material.APPLE), null, null, null, null}) diff --git a/src/me/mrCookieSlime/Slimefun/utils/Utilities.java b/src/me/mrCookieSlime/Slimefun/utils/Utilities.java index 64abeab48..937d26451 100644 --- a/src/me/mrCookieSlime/Slimefun/utils/Utilities.java +++ b/src/me/mrCookieSlime/Slimefun/utils/Utilities.java @@ -28,6 +28,8 @@ import me.mrCookieSlime.Slimefun.hooks.github.GitHubConnector; */ public final class Utilities { + public int vanillaItems = 0; + public Map jumpState = new HashMap<>(); public Set damage = new HashSet<>(); public Map remove = new HashMap<>(); From 7afcfda89aed6f47030b86c38f5941b69a8feaab Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Fri, 30 Aug 2019 12:54:22 +0200 Subject: [PATCH 064/169] Fixes #1064 --- src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java | 3 ++- src/me/mrCookieSlime/Slimefun/listeners/ToolListener.java | 4 +--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java index 63b5d8131..a8871ec8f 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java @@ -77,6 +77,7 @@ import me.mrCookieSlime.Slimefun.Objects.Research; import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.Alloy; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.EnhancedFurnace; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.ExcludedBlock; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.ExcludedSoulboundTool; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.ExcludedTool; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.HandledBlock; @@ -2175,7 +2176,7 @@ public final class SlimefunSetup { } }); - new SlimefunItem(Categories.BIRTHDAY, new CustomItem(new ItemStack(Material.CAKE), "&bBirthday Cake"), "BIRTHDAY_CAKE", RecipeType.ENHANCED_CRAFTING_TABLE, + new ExcludedBlock(Categories.BIRTHDAY, new CustomItem(new ItemStack(Material.CAKE), "&bBirthday Cake"), "BIRTHDAY_CAKE", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {null, new ItemStack(Material.TORCH), null, new ItemStack(Material.SUGAR), new ItemStack(Material.CAKE), new ItemStack(Material.SUGAR), null, null, null}) .register(true); diff --git a/src/me/mrCookieSlime/Slimefun/listeners/ToolListener.java b/src/me/mrCookieSlime/Slimefun/listeners/ToolListener.java index bf0dc56ac..1a44ac18a 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/ToolListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/ToolListener.java @@ -66,9 +66,6 @@ public class ToolListener implements Listener { ItemStack item = e.getItemInHand(); - // Why does this "Ink Sack" check exist?? - if (item != null && item.getType() == Material.INK_SAC) return; - SlimefunItem sfItem = SlimefunItem.getByItem(item); if (sfItem != null && !sfItem.isDisabled() && !(sfItem instanceof NotPlaceable)) { BlockStorage.addBlockInfo(e.getBlock(), "id", sfItem.getID(), true); @@ -97,6 +94,7 @@ public class ToolListener implements Listener { e.setCancelled(true); utilities.cancelPlace.remove(e.getPlayer().getUniqueId()); } + if (SlimefunManager.isItemSimiliar(item, SlimefunItems.BASIC_CIRCUIT_BOARD, true)) e.setCancelled(true); else if (SlimefunManager.isItemSimiliar(item, SlimefunItems.ADVANCED_CIRCUIT_BOARD, true)) e.setCancelled(true); From 0fd44d2136b45a9b5dfcc7e005bdc122e66a7df6 Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Fri, 30 Aug 2019 13:47:58 +0200 Subject: [PATCH 065/169] Reduced technical debt --- .../Objects/SlimefunItem/EnhancedFurnace.java | 12 ++-- .../abstractItems/AContainer.java | 5 +- .../abstractItems/AGenerator.java | 35 ++++++----- .../SlimefunItem/abstractItems/AReactor.java | 58 ++++++++++--------- .../SlimefunItem/machines/AutoAnvil.java | 38 ++++++------ .../machines/AutoDisenchanter.java | 27 +++++---- .../SlimefunItem/machines/AutoEnchanter.java | 31 ++++++---- .../machines/AutomatedCraftingChamber.java | 4 -- .../machines/CropGrowthAccelerator.java | 55 +++++++++--------- .../machines/HeatedPressureChamber.java | 56 +++++++++--------- .../androids/ProgrammableAndroid.java | 4 -- .../Slimefun/api/TickerTask.java | 3 +- .../Slimefun/api/item_transport/CargoNet.java | 34 +++++------ 13 files changed, 193 insertions(+), 169 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/EnhancedFurnace.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/EnhancedFurnace.java index 5aa3301de..be3a6c28e 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/EnhancedFurnace.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/EnhancedFurnace.java @@ -10,6 +10,7 @@ import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config; import me.mrCookieSlime.Slimefun.Lists.Categories; import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker; +import me.mrCookieSlime.Slimefun.api.BlockStorage; public class EnhancedFurnace extends SlimefunItem { @@ -25,9 +26,14 @@ public class EnhancedFurnace extends SlimefunItem { this.fortune = fortune - 1; addItemHandler(new BlockTicker() { + @Override public void tick(Block b, SlimefunItem item, Config data) { - if (b.getState() instanceof Furnace && ((Furnace) b.getState()).getCookTime() > 0) { + if (!(b.getState() instanceof Furnace)) { + // The Furnace has been destroyed, we can clear the block data + BlockStorage.clearBlockInfo(b); + } + else if (((Furnace) b.getState()).getCookTime() > 0) { Furnace furnace = (Furnace) b.getState(); int newCookTime = furnace.getCookTime() + getSpeed() * 10; @@ -39,10 +45,6 @@ public class EnhancedFurnace extends SlimefunItem { } } - @Override - public void uniqueTick() { - } - @Override public boolean isSynchronized() { return true; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AContainer.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AContainer.java index 2b9e174ff..54b585c27 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AContainer.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AContainer.java @@ -255,11 +255,10 @@ public abstract class AContainer extends SlimefunItem { for (MachineRecipe recipe: recipes) { for (ItemStack input: recipe.getInput()) { - slots: for (int slot: getInputSlots()) { if (SlimefunManager.isItemSimiliar(BlockStorage.getInventory(b).getItemInSlot(slot), input, true)) { found.put(slot, input.getAmount()); - break slots; + break; } } } @@ -272,9 +271,11 @@ public abstract class AContainer extends SlimefunItem { if (r != null) { if (!fits(b, r.getOutput())) return; + for (Map.Entry entry: found.entrySet()) { BlockStorage.getInventory(b).replaceExistingItem(entry.getKey(), InvUtils.decreaseItem(BlockStorage.getInventory(b).getItemInSlot(entry.getKey()), entry.getValue())); } + processing.put(b, r); progress.put(b, r.getTicks()); } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AGenerator.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AGenerator.java index 9519ba084..355ec4869 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AGenerator.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AGenerator.java @@ -218,25 +218,17 @@ public abstract class AGenerator extends SlimefunItem { } } else { - MachineFuel r = null; + BlockMenu menu = BlockStorage.getInventory(l); Map found = new HashMap<>(); - outer: - for (MachineFuel recipe: recipes) { - for (int slot: getInputSlots()) { - if (SlimefunManager.isItemSimiliar(BlockStorage.getInventory(l).getItemInSlot(slot), recipe.getInput(), true)) { - found.put(slot, recipe.getInput().getAmount()); - r = recipe; - break outer; - } - } - } + MachineFuel fuel = findRecipe(menu, found); - if (r != null) { + if (fuel != null) { for (Map.Entry entry: found.entrySet()) { - BlockStorage.getInventory(l).replaceExistingItem(entry.getKey(), InvUtils.decreaseItem(BlockStorage.getInventory(l).getItemInSlot(entry.getKey()), entry.getValue())); + menu.replaceExistingItem(entry.getKey(), InvUtils.decreaseItem(menu.getItemInSlot(entry.getKey()), entry.getValue())); } - processing.put(l, r); - progress.put(l, r.getTicks()); + + processing.put(l, fuel); + progress.put(l, fuel.getTicks()); } return 0; } @@ -250,6 +242,19 @@ public abstract class AGenerator extends SlimefunItem { super.register(slimefun); } + + private MachineFuel findRecipe(BlockMenu menu, Map found) { + for (MachineFuel recipe: recipes) { + for (int slot: getInputSlots()) { + if (SlimefunManager.isItemSimiliar(menu.getItemInSlot(slot), recipe.getInput(), true)) { + found.put(slot, recipe.getInput().getAmount()); + return recipe; + } + } + } + + return null; + } public Set getFuelTypes() { return this.recipes; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AReactor.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AReactor.java index 3d4ae3c0f..b695126fe 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AReactor.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AReactor.java @@ -353,39 +353,19 @@ public abstract class AReactor extends SlimefunItem { } } else { - MachineFuel r = null; + BlockMenu menu = BlockStorage.getInventory(l); Map found = new HashMap<>(); + MachineFuel fuel = findRecipe(menu, found); - if (port != null) { - refill: - for (int slot: getFuelSlots()) { - for (MachineFuel recipe: recipes) { - if (SlimefunManager.isItemSimiliar(port.getItemInSlot(slot), recipe.getInput(), true) && pushItems(l, new CustomItem(port.getItemInSlot(slot), 1), getFuelSlots()) == null) { - port.replaceExistingItem(slot, InvUtils.decreaseItem(port.getItemInSlot(slot), 1)); - break refill; - } - } - } - } + if (port != null) restockCoolant(l, port); - outer: - for (MachineFuel recipe: recipes) { - for (int slot: getFuelSlots()) { - if (SlimefunManager.isItemSimiliar(BlockStorage.getInventory(l).getItemInSlot(slot), recipe.getInput(), true)) { - found.put(slot, recipe.getInput().getAmount()); - r = recipe; - break outer; - } - } - } - - if (r != null) { + if (fuel != null) { for (Map.Entry entry: found.entrySet()) { - BlockStorage.getInventory(l).replaceExistingItem(entry.getKey(), InvUtils.decreaseItem(BlockStorage.getInventory(l).getItemInSlot(entry.getKey()), entry.getValue())); + menu.replaceExistingItem(entry.getKey(), InvUtils.decreaseItem(menu.getItemInSlot(entry.getKey()), entry.getValue())); } - processing.put(l, r); - progress.put(l, r.getTicks()); + processing.put(l, fuel); + progress.put(l, fuel.getTicks()); } return 0; } @@ -409,6 +389,30 @@ public abstract class AReactor extends SlimefunItem { super.register(slimefun); } + + private void restockCoolant(Location l, BlockMenu port) { + for (int slot: getFuelSlots()) { + for (MachineFuel recipe: recipes) { + if (SlimefunManager.isItemSimiliar(port.getItemInSlot(slot), recipe.getInput(), true) && pushItems(l, new CustomItem(port.getItemInSlot(slot), 1), getFuelSlots()) == null) { + port.replaceExistingItem(slot, InvUtils.decreaseItem(port.getItemInSlot(slot), 1)); + return; + } + } + } + } + + private MachineFuel findRecipe(BlockMenu menu, Map found) { + for (MachineFuel recipe: recipes) { + for (int slot: getInputSlots()) { + if (SlimefunManager.isItemSimiliar(menu.getItemInSlot(slot), recipe.getInput(), true)) { + found.put(slot, recipe.getInput().getAmount()); + return recipe; + } + } + } + + return null; + } private Inventory inject(Location l) { int size = BlockStorage.getInventory(l).toInventory().getSize(); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoAnvil.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoAnvil.java index 9d74f863e..755ce962d 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoAnvil.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoAnvil.java @@ -3,6 +3,12 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines; import java.util.ArrayList; import java.util.List; +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; import me.mrCookieSlime.Slimefun.Lists.RecipeType; @@ -14,12 +20,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecip 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; +import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu; public abstract class AutoAnvil extends AContainer { @@ -86,11 +87,13 @@ public abstract class AutoAnvil extends AContainer { } } else { - MachineRecipe r = null; - slots: + BlockMenu menu = BlockStorage.getInventory(b); + MachineRecipe recipe = null; + for (int slot: getInputSlots()) { - ItemStack target = BlockStorage.getInventory(b).getItemInSlot(slot == getInputSlots()[0] ? getInputSlots()[1]: getInputSlots()[0]); - ItemStack item = BlockStorage.getInventory(b).getItemInSlot(slot); + ItemStack target = menu.getItemInSlot(slot == getInputSlots()[0] ? getInputSlots()[1]: getInputSlots()[0]); + ItemStack item = menu.getItemInSlot(slot); + if (item != null && item.getType().getMaxDurability() > 0 && ((Damageable) item.getItemMeta()).getDamage() > 0) { if (SlimefunManager.isItemSimiliar(target, SlimefunItems.DUCT_TAPE, true)) { ItemStack newItem = item.clone(); @@ -99,19 +102,20 @@ public abstract class AutoAnvil extends AContainer { ItemMeta meta = newItem.getItemMeta(); ((Damageable) meta).setDamage(durability); newItem.setItemMeta(meta); - r = new MachineRecipe(30, new ItemStack[] {target, item}, new ItemStack[] {newItem}); + recipe = new MachineRecipe(30, new ItemStack[] {target, item}, new ItemStack[] {newItem}); } - break slots; + break; } } - if (r != null) { - if (!fits(b, r.getOutput())) return; + if (recipe != null) { + if (!fits(b, recipe.getOutput())) return; + for (int slot: getInputSlots()) { - BlockStorage.getInventory(b).replaceExistingItem(slot, InvUtils.decreaseItem(BlockStorage.getInventory(b).getItemInSlot(slot), 1)); + menu.replaceExistingItem(slot, InvUtils.decreaseItem(menu.getItemInSlot(slot), 1)); } - processing.put(b, r); - progress.put(b, r.getTicks()); + processing.put(b, recipe); + progress.put(b, recipe.getTicks()); } } } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoDisenchanter.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoDisenchanter.java index 6db9240bd..c48bef084 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoDisenchanter.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoDisenchanter.java @@ -28,6 +28,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecip import me.mrCookieSlime.Slimefun.api.BlockStorage; import me.mrCookieSlime.Slimefun.api.Slimefun; import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock; +import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu; public class AutoDisenchanter extends AContainer { @@ -87,13 +88,14 @@ public class AutoDisenchanter extends AContainer { } } else { - MachineRecipe r = null; + BlockMenu menu = BlockStorage.getInventory(b); + MachineRecipe recipe = null; Map enchantments = new HashMap<>(); Set enchantments2 = new HashSet<>(); - slots: + for (int slot: getInputSlots()) { - ItemStack target = BlockStorage.getInventory(b).getItemInSlot(slot == getInputSlots()[0] ? getInputSlots()[1]: getInputSlots()[0]); - ItemStack item = BlockStorage.getInventory(b).getItemInSlot(slot); + ItemStack target = menu.getItemInSlot(slot == getInputSlots()[0] ? getInputSlots()[1]: getInputSlots()[0]); + ItemStack item = menu.getItemInSlot(slot); // Check if disenchantable SlimefunItem sfItem = null; @@ -133,19 +135,22 @@ public class AutoDisenchanter extends AContainer { EmeraldEnchants.getInstance().getRegistry().applyEnchantment(book, e.getEnchantment(), e.getLevel()); EmeraldEnchants.getInstance().getRegistry().applyEnchantment(newItem, e.getEnchantment(), 0); } - r = new MachineRecipe(100 * amount, new ItemStack[] {target, item}, new ItemStack[] {newItem, book}); - break slots; + + recipe = new MachineRecipe(100 * amount, new ItemStack[] {target, item}, new ItemStack[] {newItem, book}); + break; } } } - if (r != null) { - if (!fits(b, r.getOutput())) return; + if (recipe != null) { + if (!fits(b, recipe.getOutput())) return; + for (int slot: getInputSlots()) { - BlockStorage.getInventory(b).replaceExistingItem(slot, InvUtils.decreaseItem(BlockStorage.getInventory(b).getItemInSlot(slot), 1)); + menu.replaceExistingItem(slot, InvUtils.decreaseItem(menu.getItemInSlot(slot), 1)); } - processing.put(b, r); - progress.put(b, r.getTicks()); + + processing.put(b, recipe); + progress.put(b, recipe.getTicks()); } } } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoEnchanter.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoEnchanter.java index 7b3bfd390..bb4bdf1af 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoEnchanter.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoEnchanter.java @@ -29,6 +29,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecip import me.mrCookieSlime.Slimefun.api.BlockStorage; import me.mrCookieSlime.Slimefun.api.Slimefun; import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock; +import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu; public class AutoEnchanter extends AContainer { @@ -88,15 +89,16 @@ public class AutoEnchanter extends AContainer { } } else { - MachineRecipe r = null; - slots: + BlockMenu menu = BlockStorage.getInventory(b.getLocation()); + MachineRecipe recipe = null; + for (int slot: getInputSlots()) { - ItemStack target = BlockStorage.getInventory(b).getItemInSlot(slot == getInputSlots()[0] ? getInputSlots()[1]: getInputSlots()[0]); + ItemStack target = menu.getItemInSlot(slot == getInputSlots()[0] ? getInputSlots()[1]: getInputSlots()[0]); // Check if enchantable SlimefunItem sfTarget = SlimefunItem.getByItem(target); if(sfTarget != null && !sfTarget.isEnchantable()) return; - ItemStack item = BlockStorage.getInventory(b).getItemInSlot(slot); + ItemStack item = menu.getItemInSlot(slot); // Enchant if (item != null && item.getType() == Material.ENCHANTED_BOOK && target != null) { @@ -105,12 +107,14 @@ public class AutoEnchanter extends AContainer { int amount = 0; int special_amount = 0; EnchantmentStorageMeta meta = (EnchantmentStorageMeta) item.getItemMeta(); + for (Map.Entry e: meta.getStoredEnchants().entrySet()) { if (e.getKey().canEnchantItem(target)) { amount++; enchantments.put(e.getKey(), e.getValue()); } } + if (Slimefun.isEmeraldEnchantsInstalled()) { for (ItemEnchantment enchantment: EmeraldEnchants.getInstance().getRegistry().getEnchantments(item)) { if (EmeraldEnchants.getInstance().getRegistry().isApplicable(target, enchantment.getEnchantment()) && EmeraldEnchants.getInstance().getRegistry().getEnchantmentLevel(target, enchantment.getEnchantment().getName()) < enchantment.getLevel()) { @@ -121,27 +125,32 @@ public class AutoEnchanter extends AContainer { } special_amount += EmeraldEnchants.getInstance().getRegistry().getEnchantments(target).size(); } + if (amount > 0 && special_amount <= SlimefunStartup.instance.getSettings().EMERALD_ENCHANTS_LIMIT) { ItemStack newItem = target.clone(); for (Map.Entry e: enchantments.entrySet()) { newItem.addUnsafeEnchantment(e.getKey(), e.getValue()); } + for (ItemEnchantment e: enchantments2) { EmeraldEnchants.getInstance().getRegistry().applyEnchantment(newItem, e.getEnchantment(), e.getLevel()); } - r = new MachineRecipe(75 * amount, new ItemStack[] {target, item}, new ItemStack[] {newItem, new ItemStack(Material.BOOK)}); + + recipe = new MachineRecipe(75 * amount, new ItemStack[] {target, item}, new ItemStack[] {newItem, new ItemStack(Material.BOOK)}); } - break slots; + break; } } - if (r != null) { - if (!fits(b, r.getOutput())) return; + if (recipe != null) { + if (!fits(b, recipe.getOutput())) return; + for (int slot: getInputSlots()) { - BlockStorage.getInventory(b).replaceExistingItem(slot, InvUtils.decreaseItem(BlockStorage.getInventory(b).getItemInSlot(slot), 1)); + menu.replaceExistingItem(slot, InvUtils.decreaseItem(menu.getItemInSlot(slot), 1)); } - processing.put(b, r); - progress.put(b, r.getTicks()); + + processing.put(b, recipe); + progress.put(b, recipe.getTicks()); } } } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutomatedCraftingChamber.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutomatedCraftingChamber.java index d108a8c14..a8d11b35d 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutomatedCraftingChamber.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutomatedCraftingChamber.java @@ -210,10 +210,6 @@ public abstract class AutomatedCraftingChamber extends SlimefunItem { AutomatedCraftingChamber.this.tick(b); } - @Override - public void uniqueTick() { - } - @Override public boolean isSynchronized() { return false; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/CropGrowthAccelerator.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/CropGrowthAccelerator.java index bf7b93045..08d426521 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/CropGrowthAccelerator.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/CropGrowthAccelerator.java @@ -131,32 +131,7 @@ public abstract class CropGrowthAccelerator extends SlimefunItem { } protected void tick(Block b) throws Exception { - int work = 0; - master: - for (int x = -getRadius(); x <= getRadius(); x++) { - for (int z = -getRadius(); z <= getRadius(); z++) { - Block block = b.getRelative(x, 0, z); - if (crops.containsKey(block.getType()) && ((Ageable) block.getBlockData()).getAge() < crops.get(block.getType())) { - for (int slot : getInputSlots()) { - if (SlimefunManager.isItemSimiliar(BlockStorage.getInventory(b).getItemInSlot(slot), SlimefunItems.FERTILIZER, false)) { - if (work > (getSpeed() - 1)) break master; - if (ChargableBlock.getCharge(b) < getEnergyConsumption()) break master; - ChargableBlock.addCharge(b, -getEnergyConsumption()); - - Ageable ageable = (Ageable) block.getBlockData(); - ageable.setAge(ageable.getAge() + 1); - block.setBlockData(ageable); - - block.getWorld().spawnParticle(Particle.VILLAGER_HAPPY, block.getLocation().add(0.5D, 0.5D, 0.5D), 4, 0.1F, 0.1F, 0.1F); - work++; - break; - } - } - } - } - } - - if (work > 0) { + if (work(b) > 0) { for (int slot : getInputSlots()) { if (SlimefunManager.isItemSimiliar(BlockStorage.getInventory(b).getItemInSlot(slot), SlimefunItems.FERTILIZER, false)) { BlockStorage.getInventory(b).replaceExistingItem(slot, InvUtils.decreaseItem(BlockStorage.getInventory(b).getItemInSlot(slot), 1)); @@ -166,4 +141,32 @@ public abstract class CropGrowthAccelerator extends SlimefunItem { } } + private int work(Block b) { + int work = 0; + + for (int x = -getRadius(); x <= getRadius(); x++) { + for (int z = -getRadius(); z <= getRadius(); z++) { + Block block = b.getRelative(x, 0, z); + if (crops.containsKey(block.getType()) && ((Ageable) block.getBlockData()).getAge() < crops.get(block.getType())) { + for (int slot : getInputSlots()) { + if (SlimefunManager.isItemSimiliar(BlockStorage.getInventory(b).getItemInSlot(slot), SlimefunItems.FERTILIZER, false)) { + if (work > (getSpeed() - 1) || ChargableBlock.getCharge(b) < getEnergyConsumption()) return work; + ChargableBlock.addCharge(b, -getEnergyConsumption()); + + Ageable ageable = (Ageable) block.getBlockData(); + ageable.setAge(ageable.getAge() + 1); + block.setBlockData(ageable); + + block.getWorld().spawnParticle(Particle.VILLAGER_HAPPY, block.getLocation().add(0.5D, 0.5D, 0.5D), 4, 0.1F, 0.1F, 0.1F); + work++; + return work; + } + } + } + } + } + + return work; + } + } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/HeatedPressureChamber.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/HeatedPressureChamber.java index dc8641a00..857cca671 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/HeatedPressureChamber.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/HeatedPressureChamber.java @@ -131,10 +131,6 @@ public abstract class HeatedPressureChamber extends AContainer { HeatedPressureChamber.this.tick(b); } - @Override - public void uniqueTick() { - } - @Override public boolean isSynchronized() { return false; @@ -148,6 +144,7 @@ public abstract class HeatedPressureChamber extends AContainer { protected void tick(Block b) { if (isProcessing(b)) { int timeleft = progress.get(b); + if (timeleft > 0) { ItemStack item = getProgressBar().clone(); ItemMeta im = item.getItemMeta(); @@ -178,37 +175,42 @@ public abstract class HeatedPressureChamber extends AContainer { } } else { - MachineRecipe r = null; + BlockMenu menu = BlockStorage.getInventory(b.getLocation()); Map found = new HashMap<>(); + MachineRecipe recipe = findRecipe(menu, found); - for (MachineRecipe recipe: recipes) { - for (ItemStack input: recipe.getInput()) { - slots: - for (int slot: getInputSlots()) { - if (SlimefunManager.isItemSimiliar(BlockStorage.getInventory(b).getItemInSlot(slot), input, true)) { - found.put(slot, input.getAmount()); - break slots; - } - } - } - if (found.size() == recipe.getInput().length) { - r = recipe; - break; - } - else found.clear(); - } - - if (r != null) { - if (!fits(b, r.getOutput())) return; + if (recipe != null) { + if (!fits(b, recipe.getOutput())) return; + for (Map.Entry entry: found.entrySet()) { - BlockStorage.getInventory(b).replaceExistingItem(entry.getKey(), InvUtils.decreaseItem(BlockStorage.getInventory(b).getItemInSlot(entry.getKey()), entry.getValue())); + menu.replaceExistingItem(entry.getKey(), InvUtils.decreaseItem(menu.getItemInSlot(entry.getKey()), entry.getValue())); } - processing.put(b, r); - progress.put(b, r.getTicks()); + + processing.put(b, recipe); + progress.put(b, recipe.getTicks()); } } } + private MachineRecipe findRecipe(BlockMenu menu, Map found) { + for (MachineRecipe recipe: recipes) { + for (ItemStack input: recipe.getInput()) { + for (int slot: getInputSlots()) { + if (SlimefunManager.isItemSimiliar(menu.getItemInSlot(slot), input, true)) { + found.put(slot, input.getAmount()); + break; + } + } + } + if (found.size() == recipe.getInput().length) { + return recipe; + } + else found.clear(); + } + + return null; + } + @Override public String getMachineIdentifier() { return "HEATED_PRESSURE_CHAMBER"; diff --git a/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java b/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java index 3082ce1d3..364c06ca9 100644 --- a/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java +++ b/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java @@ -1315,10 +1315,6 @@ public abstract class ProgrammableAndroid extends SlimefunItem { if (b != null) ProgrammableAndroid.this.tick(b); } - @Override - public void uniqueTick() { - } - @Override public boolean isSynchronized() { return true; diff --git a/src/me/mrCookieSlime/Slimefun/api/TickerTask.java b/src/me/mrCookieSlime/Slimefun/api/TickerTask.java index ad240bff5..1c45e5ba0 100644 --- a/src/me/mrCookieSlime/Slimefun/api/TickerTask.java +++ b/src/me/mrCookieSlime/Slimefun/api/TickerTask.java @@ -73,7 +73,6 @@ public class TickerTask implements Runnable { long timestamp2 = System.currentTimeMillis(); chunks++; - blocks: for (final Location l: BlockStorage.getTickingLocations(c)) { if (l.getWorld().isChunkLoaded(l.getBlockX() >> 4, l.getBlockZ() >> 4)) { final Block b = l.getBlock(); @@ -178,7 +177,7 @@ public class TickerTask implements Runnable { skipped += BlockStorage.getTickingLocations(c).size(); chunksSkipped.add(c); chunks--; - break blocks; + break; } } diff --git a/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoNet.java b/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoNet.java index 6e8b9fc3f..cfd2daecf 100644 --- a/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoNet.java +++ b/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoNet.java @@ -255,26 +255,25 @@ public class CargoNet extends Network { BlockMenu menu = BlockStorage.getInventory(request.getTerminal()); switch (request.getDirection()) { - case INSERT: { - ItemStack stack = request.getItem(); - nodes: + case INSERT: + ItemStack requestedItem = request.getItem(); + for (Location l: destinations) { Block target = getAttachedBlock(l.getBlock()); - stack = CargoManager.insert(l.getBlock(), storage, target, stack, -1); - if (stack == null) { + requestedItem = CargoManager.insert(l.getBlock(), storage, target, requestedItem, -1); + if (requestedItem == null) { menu.replaceExistingItem(request.getSlot(), null); - break nodes; + break; } } - if (stack != null) { - menu.replaceExistingItem(request.getSlot(), stack); + if (requestedItem != null) { + menu.replaceExistingItem(request.getSlot(), requestedItem); } iterator.remove(); break; - } - case WITHDRAW: { + case WITHDRAW: int slot = request.getSlot(); ItemStack prevStack = menu.getItemInSlot(slot); if (!(prevStack == null || (prevStack.getAmount() + request.getItem().getAmount() <= prevStack.getMaxStackSize() && SlimefunManager.isItemSimiliar(prevStack, new CustomItem(request.getItem(), 1), true)))) { @@ -284,7 +283,7 @@ public class CargoNet extends Network { ItemStack stack = null; ItemStack requested = request.getItem(); - nodes: + for (Location l : providers) { Block target = getAttachedBlock(l.getBlock()); ItemStack is = CargoManager.withdraw(l.getBlock(), storage, target, requested); @@ -297,7 +296,7 @@ public class CargoNet extends Network { } if (is.getAmount() == requested.getAmount()) { - break nodes; + break; } else { requested = new CustomItem(requested, requested.getAmount() - is.getAmount()); @@ -314,20 +313,20 @@ public class CargoNet extends Network { iterator.remove(); break; - } - default: { + default: break; } - } } } } // All operations happen here: Everything gets iterated from the Input Nodes. (Apart from ChestTerminal Buses) for (Location input: inputNodes) { Integer frequency = getFrequency(input); + if (frequency < 0 || frequency > 15) { continue; } + Block inputTarget = getAttachedBlock(input.getBlock()); ItemStack stack = null; int previousSlot = -1; @@ -364,13 +363,12 @@ public class CargoNet extends Network { round_robin.put(input, c_index); } - - destinations: + for (Location out : outputlist) { Block target = getAttachedBlock(out.getBlock()); if (target != null) { stack = CargoManager.insert(out.getBlock(), storage, target, stack, -1); - if (stack == null) break destinations; + if (stack == null) break; } } } From 5ec7a27b2b9d644e19a038bb33ea43cdb24879f0 Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Fri, 30 Aug 2019 20:41:39 +0200 Subject: [PATCH 066/169] Fixed Multiblocks --- .../Objects/SlimefunItem/multiblocks/Juicer.java | 4 +++- .../mrCookieSlime/Slimefun/Setup/SlimefunSetup.java | 12 ++++++------ .../Slimefun/listeners/BlockListener.java | 5 +++-- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/Juicer.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/Juicer.java index cd85c66d9..e3222e9cb 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/Juicer.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/Juicer.java @@ -21,7 +21,9 @@ public class Juicer extends MultiBlockMachine { public Juicer() { super( - Categories.MACHINES_1, SlimefunItems.JUICER, "JUICER", + Categories.MACHINES_1, + SlimefunItems.JUICER, + "JUICER", new ItemStack[] {null, new ItemStack(Material.GLASS), null, null, new ItemStack(Material.NETHER_BRICK_FENCE), null, null, new CustomItem(Material.DISPENSER, "Dispenser (Facing up)"), null}, new ItemStack[] { new ItemStack(Material.APPLE), SlimefunItems.APPLE_JUICE, diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java index a8871ec8f..dd1c69243 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java @@ -263,10 +263,10 @@ public final class SlimefunSetup { new ItemStack[] {SlimefunItems.SALT, new ItemStack(Material.COOKED_BEEF), null, null, null, null, null, null, null}, new String[] {"Saturation"}, new Integer[] {20}) .register(true); - new GrindStone().register(true); - new ArmorForge().register(true); - new OreCrusher().register(true); - new Compressor().register(true); + new GrindStone().register(); + new ArmorForge().register(); + new OreCrusher().register(); + new Compressor().register(); new SlimefunItem(Categories.LUMPS_AND_MAGIC, SlimefunItems.MAGIC_LUMP_1, "MAGIC_LUMP_1", RecipeType.GRIND_STONE, new ItemStack[] {null, null, null, null, new ItemStack(Material.NETHER_WART), null, null, null, null}, new CustomItem(SlimefunItems.MAGIC_LUMP_1, 2)) @@ -437,7 +437,7 @@ public final class SlimefunSetup { new ItemStack[] {SlimefunItems.STEEL_PLATE, SlimefunItems.BASIC_CIRCUIT_BOARD, SlimefunItems.STEEL_PLATE, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.STEEL_PLATE, SlimefunItems.ELECTRIC_MOTOR, null, new ItemStack(Material.HOPPER), null}) .register(true); - new PressureChamber().register(true); + new PressureChamber().register(); new SlimefunItem(Categories.TECH_MISC, SlimefunItems.BATTERY, "BATTERY", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] { null, new ItemStack(Material.REDSTONE), null, SlimefunItems.ZINC_INGOT, SlimefunItems.SULFATE, SlimefunItems.COPPER_INGOT, SlimefunItems.ZINC_INGOT, SlimefunItems.SULFATE, SlimefunItems.COPPER_INGOT }) @@ -1899,7 +1899,7 @@ public final class SlimefunSetup { new ItemStack[] {null, SlimefunItems.ESSENCE_OF_AFTERLIFE, null, null, new ItemStack(Material.DIAMOND_BOOTS), null, null, SlimefunItems.ESSENCE_OF_AFTERLIFE, null}) .register(true); - new Juicer().register(true); + new Juicer().register(); new Juice(Categories.FOOD, SlimefunItems.APPLE_JUICE, "APPLE_JUICE", RecipeType.JUICER, new ItemStack[] {null, null, null, null, new ItemStack(Material.APPLE), null, null, null, null}) diff --git a/src/me/mrCookieSlime/Slimefun/listeners/BlockListener.java b/src/me/mrCookieSlime/Slimefun/listeners/BlockListener.java index 558e6ca3c..31c740f13 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/BlockListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/BlockListener.java @@ -1,6 +1,7 @@ package me.mrCookieSlime.Slimefun.listeners; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import me.mrCookieSlime.CSCoreLibPlugin.general.Block.BlockAdjacents; @@ -138,9 +139,9 @@ public class BlockListener implements Listener { if (!multiblocks.isEmpty()) { e.setCancelled(true); - + System.out.println(Arrays.toString(multiblocks.get(multiblocks.size() - 1).getBuild())); for (ItemHandler handler: SlimefunItem.getHandlers("MultiBlockInteractionHandler")) { - if (((MultiBlockInteractionHandler) handler).onInteract(p, multiblocks.get(multiblocks.size() - 1), b)) break; + if (((MultiBlockInteractionHandler) handler).onInteract(p, multiblocks.get(multiblocks.size() - 1), b)) continue; } MultiBlockInteractEvent event = new MultiBlockInteractEvent(p, multiblocks.get(multiblocks.size() - 1), b); From b6be4af90d588d3be75e426d8d081f3a38958201 Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Fri, 30 Aug 2019 21:02:55 +0200 Subject: [PATCH 067/169] Updated SlimefunBlockHandler --- .../Objects/SlimefunBlockHandler.java | 24 ++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunBlockHandler.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunBlockHandler.java index 32e45a6f5..23c03d170 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunBlockHandler.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunBlockHandler.java @@ -6,8 +6,30 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason; import org.bukkit.block.Block; import org.bukkit.entity.Player; +@FunctionalInterface public interface SlimefunBlockHandler { - void onPlace(Player p, Block b, SlimefunItem item); + /** + * This method gets called when the Block is placed. + * Use this method to initialize block data. + * + * @param p The Player who placed it + * @param b The Block that was placed + * @param item The Item that will be stored inside the Block + */ + default void onPlace(Player p, Block b, SlimefunItem item) { + // This method can optionally be implemented by classes implementing it. + } + + /** + * This method gets called when the Block is broken + * p is nullable if the Block is exploded + * + * @param p The Player who broke the Block + * @param b The Block that was broken + * @param item The SlimefunItem that was stored in that block + * @param reason The reason for the Block breaking + * @return Whether the Event should be cancelled + */ boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason); } From adb8194d84f27c94230c5cf0351ccc2071f02ee7 Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Fri, 30 Aug 2019 21:14:46 +0200 Subject: [PATCH 068/169] Reduced technical debt for Androids --- .../androids/ProgrammableAndroid.java | 247 ++++-------------- 1 file changed, 53 insertions(+), 194 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java b/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java index 364c06ca9..456901ef5 100644 --- a/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java +++ b/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java @@ -10,6 +10,7 @@ import java.util.List; import java.util.Optional; import java.util.Set; import java.util.UUID; +import java.util.function.Predicate; import org.bukkit.Bukkit; import org.bukkit.ChatColor; @@ -344,10 +345,9 @@ public abstract class ProgrammableAndroid extends SlimefunItem { case MOVE_AND_DIG_FORWARD: movedig(b, face, b.getRelative(face)); break; - case MOVE_AND_DIG_UP: { + case MOVE_AND_DIG_UP: movedig(b, face, b.getRelative(BlockFace.UP)); break; - } case MOVE_AND_DIG_DOWN: movedig(b, face, b.getRelative(BlockFace.DOWN)); break; @@ -431,204 +431,16 @@ public abstract class ProgrammableAndroid extends SlimefunItem { } break; case ATTACK_MOBS_ANIMALS: - entities: - for (Entity n: AndroidHologram.getNearbyEntities(b, 4D + getTier())) { - switch (BlockFace.valueOf(BlockStorage.getLocationInfo(b.getLocation(), "rotation"))) { - case NORTH: { - if (n instanceof LivingEntity && !(n instanceof ArmorStand) && !(n instanceof Player) && n.getLocation().getZ() < b.getZ()) { - if (n.hasMetadata("android_killer")) n.removeMetadata("android_killer", SlimefunStartup.instance); - n.setMetadata("android_killer", new FixedMetadataValue(SlimefunStartup.instance, new AndroidObject(this, b))); - - ((LivingEntity) n).damage(damage); - break entities; - } - break; - } - case EAST: { - if (n instanceof LivingEntity && !(n instanceof ArmorStand) && !(n instanceof Player) && n.getLocation().getX() > b.getX()) { - if (n.hasMetadata("android_killer")) n.removeMetadata("android_killer", SlimefunStartup.instance); - n.setMetadata("android_killer", new FixedMetadataValue(SlimefunStartup.instance, new AndroidObject(this, b))); - - ((LivingEntity) n).damage(damage); - break entities; - } - break; - } - case SOUTH: { - if (n instanceof LivingEntity && !(n instanceof ArmorStand) && !(n instanceof Player) && n.getLocation().getZ() > b.getZ()) { - if (n.hasMetadata("android_killer")) n.removeMetadata("android_killer", SlimefunStartup.instance); - n.setMetadata("android_killer", new FixedMetadataValue(SlimefunStartup.instance, new AndroidObject(this, b))); - - ((LivingEntity) n).damage(damage); - break entities; - } - break; - } - case WEST: { - if (n instanceof LivingEntity && !(n instanceof ArmorStand) && !(n instanceof Player) && n.getLocation().getX() < b.getX()) { - if (n.hasMetadata("android_killer")) n.removeMetadata("android_killer", SlimefunStartup.instance); - n.setMetadata("android_killer", new FixedMetadataValue(SlimefunStartup.instance, new AndroidObject(this, b))); - - ((LivingEntity) n).damage(damage); - break entities; - } - break; - } - default: - break; - } - } + killEntities(b, damage, e -> true); break; case ATTACK_MOBS: - entities: - for (Entity n: AndroidHologram.getNearbyEntities(b, 4D + getTier())) { - if (n instanceof Animals) continue; - switch (BlockFace.valueOf(BlockStorage.getLocationInfo(b.getLocation(), "rotation"))) { - case NORTH: { - if (n instanceof LivingEntity && !(n instanceof ArmorStand) && !(n instanceof Player) && n.getLocation().getZ() < b.getZ()) { - if (n.hasMetadata("android_killer")) n.removeMetadata("android_killer", SlimefunStartup.instance); - n.setMetadata("android_killer", new FixedMetadataValue(SlimefunStartup.instance, new AndroidObject(this, b))); - - ((LivingEntity) n).damage(damage); - break entities; - } - break; - } - case EAST: { - if (n instanceof LivingEntity && !(n instanceof ArmorStand) && !(n instanceof Player) && n.getLocation().getX() > b.getX()) { - if (n.hasMetadata("android_killer")) n.removeMetadata("android_killer", SlimefunStartup.instance); - n.setMetadata("android_killer", new FixedMetadataValue(SlimefunStartup.instance, new AndroidObject(this, b))); - - ((LivingEntity) n).damage(damage); - break entities; - } - break; - } - case SOUTH: { - if (n instanceof LivingEntity && !(n instanceof ArmorStand) && !(n instanceof Player) && n.getLocation().getZ() > b.getZ()) { - if (n.hasMetadata("android_killer")) n.removeMetadata("android_killer", SlimefunStartup.instance); - n.setMetadata("android_killer", new FixedMetadataValue(SlimefunStartup.instance, new AndroidObject(this, b))); - - ((LivingEntity) n).damage(damage); - break entities; - } - break; - } - case WEST: { - if (n instanceof LivingEntity && !(n instanceof ArmorStand) && !(n instanceof Player) && n.getLocation().getX() < b.getX()) { - if (n.hasMetadata("android_killer")) n.removeMetadata("android_killer", SlimefunStartup.instance); - n.setMetadata("android_killer", new FixedMetadataValue(SlimefunStartup.instance, new AndroidObject(this, b))); - - ((LivingEntity) n).damage(damage); - break entities; - } - break; - } - default: - break; - } - } + killEntities(b, damage, e -> e instanceof Monster); break; case ATTACK_ANIMALS: - entities: - for (Entity n: AndroidHologram.getNearbyEntities(b, 4D + getTier())) { - if (n instanceof Monster) continue; - switch (BlockFace.valueOf(BlockStorage.getLocationInfo(b.getLocation(), "rotation"))) { - case NORTH: { - if (n instanceof LivingEntity && !(n instanceof ArmorStand) && !(n instanceof Player) && n.getLocation().getZ() < b.getZ()) { - if (n.hasMetadata("android_killer")) n.removeMetadata("android_killer", SlimefunStartup.instance); - n.setMetadata("android_killer", new FixedMetadataValue(SlimefunStartup.instance, new AndroidObject(this, b))); - - ((LivingEntity) n).damage(damage); - break entities; - } - break; - } - case EAST: { - if (n instanceof LivingEntity && !(n instanceof ArmorStand) && !(n instanceof Player) && n.getLocation().getX() > b.getX()) { - if (n.hasMetadata("android_killer")) n.removeMetadata("android_killer", SlimefunStartup.instance); - n.setMetadata("android_killer", new FixedMetadataValue(SlimefunStartup.instance, new AndroidObject(this, b))); - - ((LivingEntity) n).damage(damage); - break entities; - } - break; - } - case SOUTH: { - if (n instanceof LivingEntity && !(n instanceof ArmorStand) && !(n instanceof Player) && n.getLocation().getZ() > b.getZ()) { - if (n.hasMetadata("android_killer")) n.removeMetadata("android_killer", SlimefunStartup.instance); - n.setMetadata("android_killer", new FixedMetadataValue(SlimefunStartup.instance, new AndroidObject(this, b))); - - ((LivingEntity) n).damage(damage); - break entities; - } - break; - } - case WEST: { - if (n instanceof LivingEntity && !(n instanceof ArmorStand) && !(n instanceof Player) && n.getLocation().getX() < b.getX()) { - if (n.hasMetadata("android_killer")) n.removeMetadata("android_killer", SlimefunStartup.instance); - n.setMetadata("android_killer", new FixedMetadataValue(SlimefunStartup.instance, new AndroidObject(this, b))); - - ((LivingEntity) n).damage(damage); - break entities; - } - break; - } - default: - break; - } - } + killEntities(b, damage, e -> e instanceof Animals); break; case ATTACK_ANIMALS_ADULT: - entities: - for (Entity n: AndroidHologram.getNearbyEntities(b, 4D + getTier())) { - if (n instanceof Monster) continue; - if (n instanceof org.bukkit.entity.Ageable && !((org.bukkit.entity.Ageable) n).isAdult()) continue; - switch (BlockFace.valueOf(BlockStorage.getLocationInfo(b.getLocation(), "rotation"))) { - case NORTH: { - if (n instanceof LivingEntity && !(n instanceof ArmorStand) && !(n instanceof Player) && n.getLocation().getZ() < b.getZ()) { - if (n.hasMetadata("android_killer")) n.removeMetadata("android_killer", SlimefunStartup.instance); - n.setMetadata("android_killer", new FixedMetadataValue(SlimefunStartup.instance, new AndroidObject(this, b))); - - ((LivingEntity) n).damage(damage); - break entities; - } - break; - } - case EAST: { - if (n instanceof LivingEntity && !(n instanceof ArmorStand) && !(n instanceof Player) && n.getLocation().getX() > b.getX()) { - if (n.hasMetadata("android_killer")) n.removeMetadata("android_killer", SlimefunStartup.instance); - n.setMetadata("android_killer", new FixedMetadataValue(SlimefunStartup.instance, new AndroidObject(this, b))); - - ((LivingEntity) n).damage(damage); - break entities; - } - break; - } - case SOUTH: { - if (n instanceof LivingEntity && !(n instanceof ArmorStand) && !(n instanceof Player) && n.getLocation().getZ() > b.getZ()) { - if (n.hasMetadata("android_killer")) n.removeMetadata("android_killer", SlimefunStartup.instance); - n.setMetadata("android_killer", new FixedMetadataValue(SlimefunStartup.instance, new AndroidObject(this, b))); - - ((LivingEntity) n).damage(damage); - break entities; - } - break; - } - case WEST: { - if (n instanceof LivingEntity && !(n instanceof ArmorStand) && !(n instanceof Player) && n.getLocation().getX() < b.getX()) { - if (n.hasMetadata("android_killer")) n.removeMetadata("android_killer", SlimefunStartup.instance); - n.setMetadata("android_killer", new FixedMetadataValue(SlimefunStartup.instance, new AndroidObject(this, b))); - - ((LivingEntity) n).damage(damage); - break entities; - } - break; - } - default: - break; - } - } + killEntities(b, damage, e -> e instanceof Animals && e instanceof org.bukkit.entity.Ageable && ((org.bukkit.entity.Ageable) e).isAdult()); break; default: break; @@ -638,6 +450,53 @@ public abstract class ProgrammableAndroid extends SlimefunItem { } } } + + private void killEntities(Block b, double damage, Predicate predicate) { + for (Entity n: AndroidHologram.getNearbyEntities(b, 4D + getTier())) { + if (n instanceof LivingEntity && !(n instanceof ArmorStand) && !(n instanceof Player) && predicate.test(n)) { + switch (BlockFace.valueOf(BlockStorage.getLocationInfo(b.getLocation(), "rotation"))) { + case NORTH: + if (n.getLocation().getZ() < b.getZ()) { + if (n.hasMetadata("android_killer")) n.removeMetadata("android_killer", SlimefunStartup.instance); + n.setMetadata("android_killer", new FixedMetadataValue(SlimefunStartup.instance, new AndroidObject(this, b))); + + ((LivingEntity) n).damage(damage); + return; + } + break; + case EAST: + if (n.getLocation().getX() > b.getX()) { + if (n.hasMetadata("android_killer")) n.removeMetadata("android_killer", SlimefunStartup.instance); + n.setMetadata("android_killer", new FixedMetadataValue(SlimefunStartup.instance, new AndroidObject(this, b))); + + ((LivingEntity) n).damage(damage); + return; + } + break; + case SOUTH: + if (n.getLocation().getZ() > b.getZ()) { + if (n.hasMetadata("android_killer")) n.removeMetadata("android_killer", SlimefunStartup.instance); + n.setMetadata("android_killer", new FixedMetadataValue(SlimefunStartup.instance, new AndroidObject(this, b))); + + ((LivingEntity) n).damage(damage); + return; + } + break; + case WEST: + if (n.getLocation().getX() < b.getX()) { + if (n.hasMetadata("android_killer")) n.removeMetadata("android_killer", SlimefunStartup.instance); + n.setMetadata("android_killer", new FixedMetadataValue(SlimefunStartup.instance, new AndroidObject(this, b))); + + ((LivingEntity) n).damage(damage); + return; + } + break; + default: + break; + } + } + } + } private void move(Block b, BlockFace face, Block block) throws Exception { if (block.getY() < 0 || block.getY() > block.getWorld().getMaxHeight()) From 6cca1f8833f240713a52ce283f147afab02589e6 Mon Sep 17 00:00:00 2001 From: LinoxGH <54643600+LinoxGH@users.noreply.github.com> Date: Fri, 30 Aug 2019 22:28:40 +0300 Subject: [PATCH 069/169] Adding Storm Staff to SlimefunItems.java and removing redundant "&7"s. --- src/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java b/src/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java index ab924d255..8e562ff70 100644 --- a/src/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java +++ b/src/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java @@ -453,14 +453,16 @@ public final class SlimefunItems { /* Staves */ public static final ItemStack STAFF_ELEMENTAL = new CustomItem(Material.STICK, "&6Elemental Staff"); - public static final ItemStack STAFF_WIND = new CustomItem(Material.STICK, "&6Elemental Staff &7- &b&oWind", "", "&7Element: &b&oWind", "", "&7&eRight Click&7 to launch yourself forward"); + public static final ItemStack STAFF_WIND = new CustomItem(Material.STICK, "&6Elemental Staff &7- &b&oWind", "", "&7Element: &b&oWind", "", "&eRight Click&7 to launch yourself forward"); public static final ItemStack STAFF_FIRE = new CustomItem(Material.STICK, "&6Elemental Staff &7- &c&oFire", "", "&7Element: &c&oFire"); - public static final ItemStack STAFF_WATER = new CustomItem(Material.STICK, "&6Elemental Staff &7- &1&oWater", "", "&7Element: &1&oWater", "", "&7&eRight Click&7 to extinguish yourself"); + public static final ItemStack STAFF_WATER = new CustomItem(Material.STICK, "&6Elemental Staff &7- &1&oWater", "", "&7Element: &1&oWater", "", "&eRight Click&7 to extinguish yourself"); + public static final ItemStack STAFF_STORM = new CustomItem(Material.STICK, "&6Elemental Staff &7- &8&oStorm", "", "&7Element: &8&oStorm", "", "&eRight Click&7 to summon a lightning", "&e5 Uses &7left"); static { STAFF_WIND.addUnsafeEnchantment(Enchantment.LUCK, 1); STAFF_FIRE.addUnsafeEnchantment(Enchantment.FIRE_ASPECT, 5); STAFF_WATER.addUnsafeEnchantment(Enchantment.WATER_WORKER, 1); + STAFF_STORM.addUnsafeEnchantment(Enchantment.DURABILITY, 1); } /* Machines */ From efdb9d12dcadc3841cc883115fca8312cd190b71 Mon Sep 17 00:00:00 2001 From: LinoxGH <54643600+LinoxGH@users.noreply.github.com> Date: Fri, 30 Aug 2019 22:29:57 +0300 Subject: [PATCH 070/169] Adding the Storm Staff Research. --- src/me/mrCookieSlime/Slimefun/Setup/ResearchSetup.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/me/mrCookieSlime/Slimefun/Setup/ResearchSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/ResearchSetup.java index 5416778e5..a8bbd7377 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/ResearchSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/ResearchSetup.java @@ -242,5 +242,6 @@ public final class ResearchSetup { Slimefun.registerResearch(new Research(242, "Radiant Backpack", 25), SlimefunItems.RADIANT_BACKPACK); Slimefun.registerResearch(new Research(243, "A Dry Day", 15), SlimefunItems.AUTO_DRIER); Slimefun.registerResearch(new Research(244, "Diet Cookie", 3), SlimefunItems.DIET_COOKIE); + Slimefun.registerResearch(new Research(245, "Storm Staff", 30), SlimefunItems.STAFF_STORM); } } From 9818d8bb087706236b32d215a69e5c5de4c0634e Mon Sep 17 00:00:00 2001 From: LinoxGH <54643600+LinoxGH@users.noreply.github.com> Date: Fri, 30 Aug 2019 22:32:37 +0300 Subject: [PATCH 071/169] Adding the Storm Staff to SlimefunSetup.java. --- .../Slimefun/Setup/SlimefunSetup.java | 83 +++++++++++++++++++ 1 file changed, 83 insertions(+) diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java index dd1c69243..1ca91d397 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java @@ -865,6 +865,89 @@ public final class SlimefunSetup { new SlimefunItem(Categories.MAGIC, SlimefunItems.STAFF_FIRE, "STAFF_ELEMENTAL_FIRE", RecipeType.MAGIC_WORKBENCH, new ItemStack[] {null, null, SlimefunItems.LAVA_CRYSTAL, null, SlimefunItems.STAFF_ELEMENTAL, null, SlimefunItems.STAFF_ELEMENTAL, null, null}) .register(true); + + new SlimefunItem(Categories.MAGIC, SlimefunItems.STAFF_STORM, "STAFF_ELEMENTAL_STORM", RecipeType.ANCIENT_ALTAR, + new ItemStack[] {SlimefunItems.RUNE_AIR, SlimefunItems.RUNE_WATER, SlimefunItems.ENDER_LUMP_3, SlimefunItems.STAFF_WATER, SlimefunItems.STAFF_WIND, SlimefunItems.MAGIC_SUGAR, SlimefunItems.ENDER_LUMP_3, SlimefunItems.RUNE_WATER, SlimefunItems.RUNE_AIR}) + .register(true, new ItemInteractionHandler() { + + @Override + public boolean onRightClick(ItemUseEvent e, Player p, ItemStack item) { + //Not checking if lores equals because we need a special one for that. + if (SlimefunManager.isItemSimiliar(item, SlimefunItems.STAFF_STORM, false)) { + + ItemMeta itemM = item.getItemMeta(); + List itemML = itemM.getLore(); + if (itemML == null) return false; + + ItemStack SFitem = SlimefunItems.STAFF_STORM; + ItemMeta SFitemM = SFitem.getItemMeta(); + List SFitemML = SFitemM.getLore(); + if (itemML.size() < 6) { + // Index 1 and 3 in SlimefunItems.STAFF_STORM has lores with words and stuff so we check for them. + if (!itemML.get(1).equals(SFitemML.get(1))) return false; + if (!itemML.get(3).equals(SFitemML.get(3))) return false; + } else return false; + + if (p.getFoodLevel() >= 4) { + Location loc = p.getTargetBlock(null, 50).getLocation(); + if (loc.getWorld() == null) return false; + if (!loc.getChunk().isLoaded()) return false; + loc.getWorld().strikeLightning(loc); + + if (p.getInventory().getItemInMainHand().getType() != Material.SHEARS && p.getGameMode() != GameMode.CREATIVE) { + FoodLevelChangeEvent event = new FoodLevelChangeEvent(p, p.getFoodLevel() - 4); + Bukkit.getPluginManager().callEvent(event); + p.setFoodLevel(event.getFoodLevel()); + } + + for (int i = 0; i < itemML.size(); i++) { + boolean correctLore = false; + switch (itemML.get(i)) { + case "&e5 Uses &7left": + itemML.set(i, "&e4 Uses &7left"); + correctLore = true; + break; + case "&e4 Uses &7left": + itemML.set(i, "&e3 Uses &7left"); + correctLore = true; + break; + case "&e3 Uses &7left": + itemML.set(i, "&e2 Uses &7left"); + correctLore = true; + break; + case "&e2 Uses &7left": + itemML.set(i, "&e1 Uses &7left"); + correctLore = true; + break; + case "&e1 Uses &7left": + if (e.getParentEvent().getHand() == EquipmentSlot.HAND) { + p.getInventory().setItemInMainHand(null); + } else { + p.getInventory().setItemInOffHand(null); + } + p.playSound(p.getLocation(), Sound.ENTITY_ITEM_BREAK, 1, 1); + correctLore = true; + break; + } + if (correctLore) break; + } + // Saving the changes to lore and item. + itemM.setLore(itemML); + item.setItemMeta(itemM); + if (e.getParentEvent().getHand() == EquipmentSlot.HAND) { + p.getInventory().setItemInMainHand(item); + } else { + p.getInventory().setItemInOffHand(item); + } + PlayerInventory.update(p); + + } else { + Messages.local.sendTranslation(p, "messages.hungry", true); + } + return true; + } else return false; + } + }); new SlimefunItem(Categories.TOOLS, SlimefunItems.AUTO_SMELT_PICKAXE, "SMELTERS_PICKAXE", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {SlimefunItems.LAVA_CRYSTAL, SlimefunItems.LAVA_CRYSTAL, SlimefunItems.LAVA_CRYSTAL, null, SlimefunItems.FERROSILICON, null, null, SlimefunItems.FERROSILICON, null}) From f9bbfdc8691ce116427a38dde701e2360ed1f7b4 Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Fri, 30 Aug 2019 21:48:11 +0200 Subject: [PATCH 072/169] Changed Pressure Chamber and Table Saw Slabs --- .../multiblocks/PressureChamber.java | 3 +- .../SlimefunItem/multiblocks/TableSaw.java | 42 +++++++++++++++++++ .../Slimefun/Setup/SlimefunSetup.java | 31 +------------- 3 files changed, 46 insertions(+), 30 deletions(-) create mode 100644 src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/TableSaw.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/PressureChamber.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/PressureChamber.java index d64d6cd68..766bfc7f7 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/PressureChamber.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/PressureChamber.java @@ -26,7 +26,7 @@ public class PressureChamber extends MultiBlockMachine { Categories.MACHINES_1, SlimefunItems.PRESSURE_CHAMBER, "PRESSURE_CHAMBER", - new ItemStack[] {new ItemStack(Material.STONE_SLAB), new CustomItem(Material.DISPENSER, "Dispenser (Facing down)"), new ItemStack(Material.STONE_SLAB), new ItemStack(Material.PISTON), new ItemStack(Material.GLASS), new ItemStack(Material.PISTON), new ItemStack(Material.PISTON), new ItemStack(Material.CAULDRON), new ItemStack(Material.PISTON)}, + new ItemStack[] {new ItemStack(Material.SMOOTH_STONE_SLAB), new CustomItem(Material.DISPENSER, "Dispenser (Facing down)"), new ItemStack(Material.SMOOTH_STONE_SLAB), new ItemStack(Material.PISTON), new ItemStack(Material.GLASS), new ItemStack(Material.PISTON), new ItemStack(Material.PISTON), new ItemStack(Material.CAULDRON), new ItemStack(Material.PISTON)}, new ItemStack[] { SlimefunItems.CARBON_CHUNK, SlimefunItems.SYNTHETIC_DIAMOND, SlimefunItems.RAW_CARBONADO, SlimefunItems.CARBONADO @@ -40,6 +40,7 @@ public class PressureChamber extends MultiBlockMachine { Block dispBlock = b.getRelative(BlockFace.UP).getRelative(BlockFace.UP); Dispenser disp = (Dispenser) dispBlock.getState(); final Inventory inv = disp.getInventory(); + for (ItemStack current: inv.getContents()) { for (ItemStack convert: RecipeType.getRecipeInputs(this)) { if (convert != null && SlimefunManager.isItemSimiliar(current, convert, true)) { diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/TableSaw.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/TableSaw.java new file mode 100644 index 000000000..dec794fec --- /dev/null +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/TableSaw.java @@ -0,0 +1,42 @@ +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks; + +import org.bukkit.Effect; +import org.bukkit.Material; +import org.bukkit.block.Block; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; + +import me.mrCookieSlime.CSCoreLibPlugin.compatibility.MaterialHelper; +import me.mrCookieSlime.Slimefun.Lists.Categories; +import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; + +public class TableSaw extends MultiBlockMachine { + + public TableSaw() { + super( + Categories.MACHINES_1, + SlimefunItems.TABLE_SAW, + "TABLE_SAW", + new ItemStack[] {null, null, null, new ItemStack(Material.SMOOTH_STONE_SLAB), new ItemStack(Material.STONECUTTER), new ItemStack(Material.SMOOTH_STONE_SLAB), null, new ItemStack(Material.IRON_BLOCK), null}, + new ItemStack[0], + Material.STONECUTTER + ); + } + + @Override + public void onInteract(Player p, Block b) { + ItemStack log = p.getInventory().getItemInMainHand(); + + ItemStack item = new ItemStack(MaterialHelper.getWoodFromLog(log.getType()), 8); + if(item == null || item.getType() == Material.AIR) return; + + b.getWorld().dropItemNaturally(b.getLocation(), item); + b.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, log.getType()); + log.setAmount(log.getAmount() -1); + + if(log.getAmount() <= 0) { + p.getInventory().setItemInMainHand(new ItemStack(Material.AIR)); + } + } + +} diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java index dd1c69243..fa8879cac 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java @@ -150,6 +150,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.OreCrusher; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.OreWasher; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.PressureChamber; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.Smeltery; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.TableSaw; import me.mrCookieSlime.Slimefun.Objects.handlers.AutonomousMachineHandler; import me.mrCookieSlime.Slimefun.Objects.handlers.BlockBreakHandler; import me.mrCookieSlime.Slimefun.Objects.handlers.BlockPlaceHandler; @@ -1221,35 +1222,7 @@ public final class SlimefunSetup { } }); - new SlimefunMachine(Categories.MACHINES_1, SlimefunItems.TABLE_SAW, "TABLE_SAW", - new ItemStack[] {null, null, null, new ItemStack(Material.STONE_SLAB), new ItemStack(Material.STONECUTTER), new ItemStack(Material.STONE_SLAB), null, new ItemStack(Material.IRON_BLOCK), null}, - new ItemStack[] {}, Material.STONECUTTER) - .register(true, new MultiBlockInteractionHandler() { - - @Override - public boolean onInteract(Player p, MultiBlock mb, Block b) { - if (mb.isMultiBlock(SlimefunItem.getByID("TABLE_SAW"))) { - if (CSCoreLib.getLib().getProtectionManager().canBuild(p.getUniqueId(), b.getRelative(BlockFace.UP), true) && Slimefun.hasUnlocked(p, SlimefunItems.TABLE_SAW, true) && p.getInventory().getItemInMainHand() != null && Tag.LOGS.getValues().contains(p.getInventory().getItemInMainHand().getType())) { - ItemStack log = p.getInventory().getItemInMainHand(); - - ItemStack item = new ItemStack(MaterialHelper.getWoodFromLog(log.getType()), 8); - if(item == null || item.getType() == Material.AIR) { - return false; - } - - b.getWorld().dropItemNaturally(b.getLocation(), item); - b.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, log.getType()); - log.setAmount(log.getAmount() -1); - - if(log.getAmount() <= 0) { - p.getInventory().setItemInMainHand(new ItemStack(Material.AIR)); - } - } - return true; - } - else return false; - } - }); + new TableSaw().register(); /* * dNiym 7/30/2019 added the Table_Saw machine to replace the Saw_mill, as the sawmill's design does not work with From dc1de711b0ba8009575a44ab7925eed86c49c278 Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Fri, 30 Aug 2019 21:51:37 +0200 Subject: [PATCH 073/169] Removed debug message --- .../Slimefun/listeners/BlockListener.java | 21 +++++++++---------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/listeners/BlockListener.java b/src/me/mrCookieSlime/Slimefun/listeners/BlockListener.java index 31c740f13..df6db7e65 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/BlockListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/BlockListener.java @@ -1,18 +1,8 @@ package me.mrCookieSlime.Slimefun.listeners; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; -import me.mrCookieSlime.CSCoreLibPlugin.general.Block.BlockAdjacents; -import me.mrCookieSlime.Slimefun.SlimefunStartup; -import me.mrCookieSlime.Slimefun.Events.MultiBlockInteractEvent; -import me.mrCookieSlime.Slimefun.Objects.MultiBlock; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; -import me.mrCookieSlime.Slimefun.Objects.handlers.ItemHandler; -import me.mrCookieSlime.Slimefun.Objects.handlers.MultiBlockInteractionHandler; -import me.mrCookieSlime.Slimefun.api.BlockStorage; - import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.block.Block; @@ -29,6 +19,15 @@ import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.inventory.EquipmentSlot; import org.bukkit.inventory.ItemStack; +import me.mrCookieSlime.CSCoreLibPlugin.general.Block.BlockAdjacents; +import me.mrCookieSlime.Slimefun.SlimefunStartup; +import me.mrCookieSlime.Slimefun.Events.MultiBlockInteractEvent; +import me.mrCookieSlime.Slimefun.Objects.MultiBlock; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; +import me.mrCookieSlime.Slimefun.Objects.handlers.ItemHandler; +import me.mrCookieSlime.Slimefun.Objects.handlers.MultiBlockInteractionHandler; +import me.mrCookieSlime.Slimefun.api.BlockStorage; + public class BlockListener implements Listener { public BlockListener(SlimefunStartup plugin) { @@ -139,7 +138,7 @@ public class BlockListener implements Listener { if (!multiblocks.isEmpty()) { e.setCancelled(true); - System.out.println(Arrays.toString(multiblocks.get(multiblocks.size() - 1).getBuild())); + for (ItemHandler handler: SlimefunItem.getHandlers("MultiBlockInteractionHandler")) { if (((MultiBlockInteractionHandler) handler).onInteract(p, multiblocks.get(multiblocks.size() - 1), b)) continue; } From a5eeb7c414a312724ae507102d4980a9a29d99fe Mon Sep 17 00:00:00 2001 From: Sfiguz7 Date: Fri, 30 Aug 2019 22:05:49 +0200 Subject: [PATCH 074/169] Removed empty methods --- .../Objects/SlimefunItem/abstractItems/AContainer.java | 4 ---- .../Objects/SlimefunItem/abstractItems/AFarm.java | 8 -------- .../Objects/SlimefunItem/abstractItems/AGenerator.java | 4 ---- .../Objects/SlimefunItem/abstractItems/AReactor.java | 4 ---- .../SlimefunItem/machines/AnimalGrowthAccelerator.java | 5 ----- .../Objects/SlimefunItem/machines/AutoBreeder.java | 4 ---- .../SlimefunItem/machines/CropGrowthAccelerator.java | 4 ---- .../Objects/SlimefunItem/machines/ElectricSmeltery.java | 4 ---- .../Objects/SlimefunItem/machines/ReactorAccessPort.java | 5 ----- src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java | 8 -------- 10 files changed, 50 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AContainer.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AContainer.java index 54b585c27..95b980b5a 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AContainer.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AContainer.java @@ -73,10 +73,6 @@ public abstract class AContainer extends SlimefunItem { registerBlockHandler(id, new SlimefunBlockHandler() { - @Override - public void onPlace(Player p, Block b, SlimefunItem item) { - } - @Override public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) { BlockMenu inv = BlockStorage.getInventory(b); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AFarm.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AFarm.java index efda7dbb0..4dd76c95a 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AFarm.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AFarm.java @@ -60,10 +60,6 @@ public abstract class AFarm extends SlimefunItem { registerBlockHandler(id, new SlimefunBlockHandler() { - @Override - public void onPlace(Player p, Block b, SlimefunItem item) { - } - @Override public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) { BlockMenu inv = BlockStorage.getInventory(b); @@ -108,10 +104,6 @@ public abstract class AFarm extends SlimefunItem { registerBlockHandler(id, new SlimefunBlockHandler() { - @Override - public void onPlace(Player p, Block b, SlimefunItem item) { - } - @Override public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) { BlockMenu inv = BlockStorage.getInventory(b); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AGenerator.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AGenerator.java index 355ec4869..422d4531a 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AGenerator.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AGenerator.java @@ -77,10 +77,6 @@ public abstract class AGenerator extends SlimefunItem { registerBlockHandler(id, new SlimefunBlockHandler() { - @Override - public void onPlace(Player p, Block b, SlimefunItem item) { - } - @Override public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) { BlockMenu inv = BlockStorage.getInventory(b); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AReactor.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AReactor.java index b695126fe..7e27641a3 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AReactor.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AReactor.java @@ -135,10 +135,6 @@ public abstract class AReactor extends SlimefunItem { registerBlockHandler(id, new SlimefunBlockHandler() { - @Override - public void onPlace(Player p, Block b, SlimefunItem item) { - } - @Override public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) { BlockMenu inv = BlockStorage.getInventory(b); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AnimalGrowthAccelerator.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AnimalGrowthAccelerator.java index 1429e2fce..2d6e4994f 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AnimalGrowthAccelerator.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AnimalGrowthAccelerator.java @@ -60,11 +60,6 @@ public class AnimalGrowthAccelerator extends SlimefunItem { registerBlockHandler(name, new SlimefunBlockHandler() { - @Override - public void onPlace(Player p, Block b, SlimefunItem item) { - - } - @Override public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) { AnimalGrowthAcceleratorHologram.remove(b); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoBreeder.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoBreeder.java index 3ce75529c..c11984eea 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoBreeder.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoBreeder.java @@ -60,10 +60,6 @@ public class AutoBreeder extends SlimefunItem { registerBlockHandler(name, new SlimefunBlockHandler() { - @Override - public void onPlace(Player p, Block b, SlimefunItem item) { - } - @Override public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) { AutoBreederHologram.remove(b); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/CropGrowthAccelerator.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/CropGrowthAccelerator.java index 08d426521..bedb9f84f 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/CropGrowthAccelerator.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/CropGrowthAccelerator.java @@ -72,10 +72,6 @@ public abstract class CropGrowthAccelerator extends SlimefunItem { registerBlockHandler(name, new SlimefunBlockHandler() { - @Override - public void onPlace(Player p, Block b, SlimefunItem item) { - } - @Override public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) { BlockMenu inv = BlockStorage.getInventory(b); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricSmeltery.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricSmeltery.java index 5424bbdf0..9d38414e2 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricSmeltery.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricSmeltery.java @@ -96,10 +96,6 @@ public abstract class ElectricSmeltery extends AContainer { registerBlockHandler(name, new SlimefunBlockHandler() { - @Override - public void onPlace(Player p, Block b, SlimefunItem item) { - } - @Override public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) { BlockMenu inv = BlockStorage.getInventory(b); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ReactorAccessPort.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ReactorAccessPort.java index 2439cfaa1..7628e788d 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ReactorAccessPort.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ReactorAccessPort.java @@ -103,11 +103,6 @@ public class ReactorAccessPort extends SlimefunItem { registerBlockHandler(name, new SlimefunBlockHandler() { - @Override - public void onPlace(Player p, Block b, SlimefunItem item) { - - } - @Override public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) { BlockMenu inv = BlockStorage.getInventory(b); diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java index fa8879cac..227354e45 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java @@ -2274,10 +2274,6 @@ public final class SlimefunSetup { SlimefunItem.registerBlockHandler("ANCIENT_PEDESTAL", new SlimefunBlockHandler() { - @Override - public void onPlace(Player p, Block b, SlimefunItem item) { - } - @Override public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) { Item stack = AncientAltarListener.findItem(b); @@ -4202,10 +4198,6 @@ public final class SlimefunSetup { SlimefunItem.registerBlockHandler("CARGO_MANAGER", new SlimefunBlockHandler() { - @Override - public void onPlace(Player p, Block b, SlimefunItem item) { - } - @Override public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) { CargoHologram.remove(b); From 1de54daf5de36519952578f0a6c8cd851badd8e1 Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Fri, 30 Aug 2019 22:18:36 +0200 Subject: [PATCH 075/169] Refactoring --- .../multiblocks/AutomatedPanningMachine.java | 68 +++++++++++++++++++ .../Slimefun/Setup/SlimefunSetup.java | 44 +----------- 2 files changed, 70 insertions(+), 42 deletions(-) create mode 100644 src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/AutomatedPanningMachine.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/AutomatedPanningMachine.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/AutomatedPanningMachine.java new file mode 100644 index 000000000..8e2b67c6a --- /dev/null +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/AutomatedPanningMachine.java @@ -0,0 +1,68 @@ +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks; + +import java.util.Random; + +import org.bukkit.Bukkit; +import org.bukkit.Effect; +import org.bukkit.Material; +import org.bukkit.Sound; +import org.bukkit.block.Block; +import org.bukkit.block.BlockFace; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; + +import me.mrCookieSlime.CSCoreLibPlugin.general.Player.PlayerInventory; +import me.mrCookieSlime.Slimefun.SlimefunStartup; +import me.mrCookieSlime.Slimefun.Lists.Categories; +import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; +import me.mrCookieSlime.Slimefun.Setup.Messages; +import me.mrCookieSlime.Slimefun.api.Slimefun; + +public class AutomatedPanningMachine extends MultiBlockMachine { + + private Random random = new Random(); + + public AutomatedPanningMachine() { + super( + Categories.MACHINES_1, + SlimefunItems.AUTOMATED_PANNING_MACHINE, + "AUTOMATED_PANNING_MACHINE", + new ItemStack[] {null, null, null, null, new ItemStack(Material.OAK_TRAPDOOR), null, null, new ItemStack(Material.CAULDRON), null}, + new ItemStack[] { + new ItemStack(Material.GRAVEL), new ItemStack(Material.FLINT), + new ItemStack(Material.GRAVEL), new ItemStack(Material.CLAY_BALL), + new ItemStack(Material.GRAVEL), SlimefunItems.SIFTED_ORE + }, + Material.OAK_TRAPDOOR + ); + } + + @Override + public void onInteract(Player p, Block b) { + final ItemStack input = p.getInventory().getItemInMainHand(); + ItemStack output = null; + + if (random.nextInt(100) < (Integer) Slimefun.getItemValue("GOLD_PAN", "chance.SIFTED_ORE")) output = SlimefunItems.SIFTED_ORE; + else if (random.nextInt(100) < (Integer) Slimefun.getItemValue("GOLD_PAN", "chance.CLAY")) output = new ItemStack(Material.CLAY_BALL); + else if (random.nextInt(100) < (Integer) Slimefun.getItemValue("GOLD_PAN", "chance.FLINT")) output = new ItemStack(Material.FLINT); + + final ItemStack drop = output; + + if (input != null && input.getType() == Material.GRAVEL) { + PlayerInventory.consumeItemInHand(p); + for (int i = 1; i < 7; i++) { + int j = i; + Bukkit.getScheduler().runTaskLater(SlimefunStartup.instance, () -> { + b.getWorld().playEffect(b.getRelative(BlockFace.DOWN).getLocation(), Effect.STEP_SOUND, Material.GRAVEL); + if (j == 6) { + if (drop != null) b.getWorld().dropItemNaturally(b.getLocation(), drop); + p.getWorld().playSound(p.getLocation(), Sound.ENTITY_ARROW_HIT_PLAYER, 1F, 1F); + } + }, i * 30L); + } + } + + Messages.local.sendTranslation(p, "machines.wrong-item", true); + } + +} diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java index fa8879cac..20758fbd4 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java @@ -141,6 +141,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.TrashCan; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.WitherAssembler; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.XPCollector; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.ArmorForge; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.AutomatedPanningMachine; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.Compressor; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.EnhancedCraftingTable; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.GrindStone; @@ -1537,48 +1538,7 @@ public final class SlimefunSetup { } }); - new SlimefunMachine(Categories.MACHINES_1, SlimefunItems.AUTOMATED_PANNING_MACHINE, "AUTOMATED_PANNING_MACHINE", - new ItemStack[] {null, null, null, null, new ItemStack(Material.OAK_TRAPDOOR), null, null, new ItemStack(Material.CAULDRON), null}, - new ItemStack[] {new ItemStack(Material.GRAVEL), new ItemStack(Material.FLINT), new ItemStack(Material.GRAVEL), new ItemStack(Material.CLAY_BALL), new ItemStack(Material.GRAVEL), SlimefunItems.SIFTED_ORE}, Material.OAK_TRAPDOOR) - .register(true, new MultiBlockInteractionHandler() { - - private Random random = new Random(); - - @Override - public boolean onInteract(final Player p, MultiBlock mb, final Block b) { - if (mb.isMultiBlock(SlimefunItem.getByID("AUTOMATED_PANNING_MACHINE"))) { - if (CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true)) { - final ItemStack input = p.getInventory().getItemInMainHand(); - ItemStack output = null; - - if (random.nextInt(100) < (Integer) Slimefun.getItemValue("GOLD_PAN", "chance.SIFTED_ORE")) output = SlimefunItems.SIFTED_ORE; - else if (random.nextInt(100) < (Integer) Slimefun.getItemValue("GOLD_PAN", "chance.CLAY")) output = new ItemStack(Material.CLAY_BALL); - else if (random.nextInt(100) < (Integer) Slimefun.getItemValue("GOLD_PAN", "chance.FLINT")) output = new ItemStack(Material.FLINT); - - final ItemStack drop = output; - if (input != null && input.getType() == Material.GRAVEL) { - PlayerInventory.consumeItemInHand(p); - for (int i = 1; i < 7; i++) { - int j = i; - Bukkit.getScheduler().runTaskLater(SlimefunStartup.instance, () -> { - b.getWorld().playEffect(b.getRelative(BlockFace.DOWN).getLocation(), Effect.STEP_SOUND, Material.GRAVEL); - if (j == 6) { - if (drop != null) b.getWorld().dropItemNaturally(b.getLocation(), drop); - p.getWorld().playSound(p.getLocation(), Sound.ENTITY_ARROW_HIT_PLAYER, 1F, 1F); - } - }, i*30L); - } - return true; - } - - Messages.local.sendTranslation(p, "machines.wrong-item", true); - return true; - } - return true; - } - else return false; - } - }); + new AutomatedPanningMachine().register(); new SlimefunItem(Categories.MAGIC_ARMOR, SlimefunItems.BOOTS_OF_THE_STOMPER, "BOOTS_OF_THE_STOMPER", RecipeType.ARMOR_FORGE, new ItemStack[] {null, null, null, new ItemStack(Material.YELLOW_WOOL), null, new ItemStack(Material.YELLOW_WOOL), new ItemStack(Material.PISTON), null, new ItemStack(Material.PISTON)}) From d14ef3891abbaba78ffd97e81026c1448c0af6fd Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Fri, 30 Aug 2019 22:30:03 +0200 Subject: [PATCH 076/169] Cleared another empty method --- .../Slimefun/api/inventory/BlockMenuPreset.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/me/mrCookieSlime/Slimefun/api/inventory/BlockMenuPreset.java b/src/me/mrCookieSlime/Slimefun/api/inventory/BlockMenuPreset.java index 4e1da54a6..cbac22094 100644 --- a/src/me/mrCookieSlime/Slimefun/api/inventory/BlockMenuPreset.java +++ b/src/me/mrCookieSlime/Slimefun/api/inventory/BlockMenuPreset.java @@ -50,10 +50,14 @@ public abstract class BlockMenuPreset extends ChestMenu { } public abstract void init(); - public abstract void newInstance(BlockMenu menu, Block b); public abstract boolean canOpen(Block b, Player p); public abstract int[] getSlotsAccessedByItemTransport(ItemTransportFlow flow); + + public void newInstance(BlockMenu menu, Block b) { + // This method can optionally be overridden by implementations + } + public int[] getSlotsAccessedByItemTransport(BlockMenu menu, ItemTransportFlow flow, ItemStack item) { return this.getSlotsAccessedByItemTransport(flow); } From 60977a01c6eb9b7216189e5028c1edeb135be2bc Mon Sep 17 00:00:00 2001 From: LinoxGH <54643600+LinoxGH@users.noreply.github.com> Date: Fri, 30 Aug 2019 23:39:14 +0300 Subject: [PATCH 077/169] Doing the requested changes. --- .../Slimefun/Setup/SlimefunSetup.java | 64 +++++++++---------- 1 file changed, 29 insertions(+), 35 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java index 1ca91d397..cdadad3ee 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java @@ -867,7 +867,7 @@ public final class SlimefunSetup { .register(true); new SlimefunItem(Categories.MAGIC, SlimefunItems.STAFF_STORM, "STAFF_ELEMENTAL_STORM", RecipeType.ANCIENT_ALTAR, - new ItemStack[] {SlimefunItems.RUNE_AIR, SlimefunItems.RUNE_WATER, SlimefunItems.ENDER_LUMP_3, SlimefunItems.STAFF_WATER, SlimefunItems.STAFF_WIND, SlimefunItems.MAGIC_SUGAR, SlimefunItems.ENDER_LUMP_3, SlimefunItems.RUNE_WATER, SlimefunItems.RUNE_AIR}) + new ItemStack[] {SlimefunItems.RUNE_AIR, SlimefunItems.RUNE_WATER, SlimefunItems.ENDER_LUMP_3, SlimefunItems.MAGIC_SUGAR, SlimefunItems.STAFF_WIND, SlimefunItems.MAGIC_SUGAR, SlimefunItems.ENDER_LUMP_3, SlimefunItems.RUNE_WATER, SlimefunItems.RUNE_AIR}) .register(true, new ItemInteractionHandler() { @Override @@ -875,9 +875,10 @@ public final class SlimefunSetup { //Not checking if lores equals because we need a special one for that. if (SlimefunManager.isItemSimiliar(item, SlimefunItems.STAFF_STORM, false)) { + if (!item.hasItemMeta()) return false; ItemMeta itemM = item.getItemMeta(); + if (!itemM.hasLore()) return false; List itemML = itemM.getLore(); - if (itemML == null) return false; ItemStack SFitem = SlimefunItems.STAFF_STORM; ItemMeta SFitemM = SFitem.getItemMeta(); @@ -900,40 +901,33 @@ public final class SlimefunSetup { p.setFoodLevel(event.getFoodLevel()); } - for (int i = 0; i < itemML.size(); i++) { - boolean correctLore = false; - switch (itemML.get(i)) { - case "&e5 Uses &7left": - itemML.set(i, "&e4 Uses &7left"); - correctLore = true; - break; - case "&e4 Uses &7left": - itemML.set(i, "&e3 Uses &7left"); - correctLore = true; - break; - case "&e3 Uses &7left": - itemML.set(i, "&e2 Uses &7left"); - correctLore = true; - break; - case "&e2 Uses &7left": - itemML.set(i, "&e1 Uses &7left"); - correctLore = true; - break; - case "&e1 Uses &7left": - if (e.getParentEvent().getHand() == EquipmentSlot.HAND) { - p.getInventory().setItemInMainHand(null); - } else { - p.getInventory().setItemInOffHand(null); - } - p.playSound(p.getLocation(), Sound.ENTITY_ITEM_BREAK, 1, 1); - correctLore = true; - break; - } - if (correctLore) break; + boolean itemBroke = false; + switch (itemML.get(3)) { + case "&e5 Uses &7left": + itemML.set(3, "&e4 Uses &7left"); + break; + case "&e4 Uses &7left": + itemML.set(3, "&e3 Uses &7left"); + break; + case "&e3 Uses &7left": + itemML.set(3, "&e2 Uses &7left"); + break; + case "&e2 Uses &7left": + itemML.set(3, "&e1 Use &7left"); + break; + case "&e1 Use &7left": + item = null; + p.playSound(p.getLocation(), Sound.ENTITY_ITEM_BREAK, 1, 1); + break; } - // Saving the changes to lore and item. - itemM.setLore(itemML); - item.setItemMeta(itemM); + + if (item != null) { + // Saving the changes to lore and item. + itemM.setLore(itemML); + item.setItemMeta(itemM); + } + + //Saving the item. if (e.getParentEvent().getHand() == EquipmentSlot.HAND) { p.getInventory().setItemInMainHand(item); } else { From 591160a45fb8aafea9efcd9ecda9678bd8b14ef3 Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Fri, 30 Aug 2019 22:41:58 +0200 Subject: [PATCH 078/169] Removed more empty methods --- .../abstractItems/AContainer.java | 11 +++++----- .../machines/ElectricSmeltery.java | 4 ---- .../Slimefun/Setup/SlimefunSetup.java | 22 ++----------------- 3 files changed, 8 insertions(+), 29 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AContainer.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AContainer.java index 95b980b5a..e956bfc40 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AContainer.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AContainer.java @@ -55,10 +55,6 @@ public abstract class AContainer extends SlimefunItem { constructMenu(this); } - @Override - public void newInstance(BlockMenu menu, Block b) { - } - @Override public boolean canOpen(Block b, Player p) { return p.hasPermission("slimefun.inventory.bypass") || CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true); @@ -83,6 +79,7 @@ public abstract class AContainer extends SlimefunItem { inv.replaceExistingItem(slot, null); } } + for (int slot : getOutputSlots()) { if (inv.getItemInSlot(slot) != null) { b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot)); @@ -90,6 +87,7 @@ public abstract class AContainer extends SlimefunItem { } } } + progress.remove(b); processing.remove(b); return true; @@ -137,11 +135,14 @@ public abstract class AContainer extends SlimefunItem { public abstract String getInventoryTitle(); public abstract ItemStack getProgressBar(); - public abstract void registerDefaultRecipes(); public abstract int getEnergyConsumption(); public abstract int getSpeed(); public abstract String getMachineIdentifier(); + public void registerDefaultRecipes() { + // Override this method to register your machine recipes + } + public int[] getInputSlots() { return new int[] {19, 20}; } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricSmeltery.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricSmeltery.java index 9d38414e2..8a3ede903 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricSmeltery.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricSmeltery.java @@ -51,10 +51,6 @@ public abstract class ElectricSmeltery extends AContainer { constructMenu(this); } - @Override - public void newInstance(BlockMenu menu, Block b) { - } - @Override public boolean canOpen(Block b, Player p) { return p.hasPermission("slimefun.inventory.bypass") || CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true); diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java index 19c353058..0b0d09c18 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java @@ -2633,11 +2633,7 @@ public final class SlimefunSetup { new AContainer(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_ORE_GRINDER, "ELECTRIC_ORE_GRINDER", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {null, new ItemStack(Material.DIAMOND_PICKAXE), null, SlimefunItems.GILDED_IRON, SlimefunItems.HEATING_COIL, SlimefunItems.GILDED_IRON, SlimefunItems.GILDED_IRON, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.GILDED_IRON}) { - - @Override - public void registerDefaultRecipes() { - } - + @Override public ItemStack getProgressBar() { return new ItemStack(Material.STONE_PICKAXE); @@ -2668,10 +2664,6 @@ public final class SlimefunSetup { new AContainer(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_ORE_GRINDER_2, "ELECTRIC_ORE_GRINDER_2", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {null, new ItemStack(Material.DIAMOND_PICKAXE), null, SlimefunItems.HEATING_COIL, SlimefunItems.ELECTRIC_ORE_GRINDER, SlimefunItems.HEATING_COIL, SlimefunItems.GILDED_IRON, SlimefunItems.BLISTERING_INGOT_3, SlimefunItems.GILDED_IRON}) { - @Override - public void registerDefaultRecipes() { - } - @Override public ItemStack getProgressBar() { return new ItemStack(Material.DIAMOND_PICKAXE); @@ -2762,8 +2754,6 @@ public final class SlimefunSetup { registerRecipe(3, new ItemStack[]{SlimefunItems.SILVER_INGOT}, new ItemStack[]{SlimefunItems.SILVER_DUST}); registerRecipe(3, new ItemStack[]{SlimefunItems.TIN_INGOT}, new ItemStack[]{SlimefunItems.TIN_DUST}); registerRecipe(3, new ItemStack[]{SlimefunItems.ZINC_INGOT}, new ItemStack[]{SlimefunItems.ZINC_DUST}); - - } @Override @@ -4298,10 +4288,6 @@ public final class SlimefunSetup { new ElectricSmeltery(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_SMELTERY, "ELECTRIC_SMELTERY", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {new ItemStack(Material.NETHER_BRICKS), SlimefunItems.ELECTRIC_MOTOR, new ItemStack(Material.NETHER_BRICKS), SlimefunItems.HEATING_COIL, SlimefunItems.ELECTRIC_INGOT_FACTORY, SlimefunItems.HEATING_COIL, SlimefunItems.GILDED_IRON, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.GILDED_IRON}) { - @Override - public void registerDefaultRecipes() { - } - @Override public int getEnergyConsumption() { return 10; @@ -4316,11 +4302,7 @@ public final class SlimefunSetup { new ElectricSmeltery(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_SMELTERY_2, "ELECTRIC_SMELTERY_2", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.POWER_CRYSTAL, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.HEATING_COIL, SlimefunItems.ELECTRIC_SMELTERY, SlimefunItems.HEATING_COIL, SlimefunItems.GILDED_IRON, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.GILDED_IRON}) { - - @Override - public void registerDefaultRecipes() { - } - + @Override public int getEnergyConsumption() { return 20; From 29a8d8134506bdc330f8322e605638851a808490 Mon Sep 17 00:00:00 2001 From: Sfiguz7 Date: Fri, 30 Aug 2019 22:49:18 +0200 Subject: [PATCH 079/169] Local variables name compliance changes --- .../SlimefunItem/machines/AutoEnchanter.java | 8 ++-- .../machines/ElectricDustWasher.java | 6 +-- .../Slimefun/Setup/MiscSetup.java | 8 ++-- .../Slimefun/Setup/SlimefunManager.java | 34 ++++++------- .../mrCookieSlime/Slimefun/SlimefunGuide.java | 10 ++-- .../androids/ProgrammableAndroid.java | 4 +- .../Slimefun/api/BlockStorage.java | 48 +++++++++---------- .../Slimefun/api/energy/EnergyNet.java | 10 ++-- .../Slimefun/api/item_transport/CargoNet.java | 28 +++++------ .../Slimefun/api/network/Network.java | 4 +- .../Slimefun/hooks/github/GitHubSetup.java | 20 ++++---- .../Slimefun/listeners/BowListener.java | 12 ++--- 12 files changed, 96 insertions(+), 96 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoEnchanter.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoEnchanter.java index bb4bdf1af..04baa2e51 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoEnchanter.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoEnchanter.java @@ -105,7 +105,7 @@ public class AutoEnchanter extends AContainer { Map enchantments = new HashMap<>(); Set enchantments2 = new HashSet<>(); int amount = 0; - int special_amount = 0; + int specialAmount = 0; EnchantmentStorageMeta meta = (EnchantmentStorageMeta) item.getItemMeta(); for (Map.Entry e: meta.getStoredEnchants().entrySet()) { @@ -119,14 +119,14 @@ public class AutoEnchanter extends AContainer { for (ItemEnchantment enchantment: EmeraldEnchants.getInstance().getRegistry().getEnchantments(item)) { if (EmeraldEnchants.getInstance().getRegistry().isApplicable(target, enchantment.getEnchantment()) && EmeraldEnchants.getInstance().getRegistry().getEnchantmentLevel(target, enchantment.getEnchantment().getName()) < enchantment.getLevel()) { amount++; - special_amount++; + specialAmount++; enchantments2.add(enchantment); } } - special_amount += EmeraldEnchants.getInstance().getRegistry().getEnchantments(target).size(); + specialAmount += EmeraldEnchants.getInstance().getRegistry().getEnchantments(target).size(); } - if (amount > 0 && special_amount <= SlimefunStartup.instance.getSettings().EMERALD_ENCHANTS_LIMIT) { + if (amount > 0 && specialAmount <= SlimefunStartup.instance.getSettings().EMERALD_ENCHANTS_LIMIT) { ItemStack newItem = target.clone(); for (Map.Entry e: enchantments.entrySet()) { newItem.addUnsafeEnchantment(e.getKey(), e.getValue()); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricDustWasher.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricDustWasher.java index d15d05cef..9d81e3032 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricDustWasher.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricDustWasher.java @@ -85,14 +85,14 @@ public abstract class ElectricDustWasher extends AContainer { for (int slot: getInputSlots()) { if (SlimefunManager.isItemSimiliar(BlockStorage.getInventory(b).getItemInSlot(slot), SlimefunItems.SIFTED_ORE, true)) { if (!SlimefunStartup.instance.getSettings().DUST_WASHER_LEGACY) { - boolean empty_slot = false; + boolean emptySlot = false; for (int output_slot: getOutputSlots()) { if (BlockStorage.getInventory(b).getItemInSlot(output_slot) == null) { - empty_slot = true; + emptySlot = true; break; } } - if (!empty_slot) return; + if (!emptySlot) return; } ItemStack adding = OreWasher.items[new Random().nextInt(OreWasher.items.length)]; diff --git a/src/me/mrCookieSlime/Slimefun/Setup/MiscSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/MiscSetup.java index c37bf5a0d..23a63b8d7 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/MiscSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/MiscSetup.java @@ -127,7 +127,7 @@ public final class MiscSetup { } - List grinder_recipes = new ArrayList<>(); + List grinderRecipes = new ArrayList<>(); SlimefunItem grinder = SlimefunItem.getByID("GRIND_STONE"); if (grinder != null) { @@ -136,7 +136,7 @@ public final class MiscSetup { if (input == null) input = recipe; else { if (input[0] != null && recipe[0] != null) { - grinder_recipes.add(new ItemStack[] {input[0], recipe[0]}); + grinderRecipes.add(new ItemStack[] {input[0], recipe[0]}); } input = null; } @@ -150,7 +150,7 @@ public final class MiscSetup { if (input == null) input = recipe; else { if (input[0] != null && recipe[0] != null) { - grinder_recipes.add(new ItemStack[] {input[0], recipe[0]}); + grinderRecipes.add(new ItemStack[] {input[0], recipe[0]}); } input = null; } @@ -158,7 +158,7 @@ public final class MiscSetup { } // Favour 8 Cobblestone -> 1 Sand Recipe over 1 Cobblestone -> 1 Gravel Recipe - Stream stream = grinder_recipes.stream(); + Stream stream = grinderRecipes.stream(); if (!settings.ORE_GRINDER_LEGACY) { stream = stream.sorted((a, b) -> Integer.compare(b[0].getAmount(), a[0].getAmount())); diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunManager.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunManager.java index 5748b5c94..be5e35c99 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunManager.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunManager.java @@ -74,36 +74,36 @@ public final class SlimefunManager { // Material.STONE, // Material.COAL, Material.SKULL_ITEM, Material.RAW_FISH, Material.COOKED_FISH); - public static boolean isItemSimiliar(ItemStack item, ItemStack SFitem, boolean lore) { - if (item == null) return SFitem == null; - if (SFitem == null) return false; + public static boolean isItemSimiliar(ItemStack item, ItemStack sfitem, boolean lore) { + if (item == null) return sfitem == null; + if (sfitem == null) return false; - if (item.getType() == SFitem.getType() && item.getAmount() >= SFitem.getAmount()) { - if (item.hasItemMeta() && SFitem.hasItemMeta()) { - if (item.getItemMeta().hasDisplayName() && SFitem.getItemMeta().hasDisplayName()) { - if (item.getItemMeta().getDisplayName().equals(SFitem.getItemMeta().getDisplayName())) { + if (item.getType() == sfitem.getType() && item.getAmount() >= sfitem.getAmount()) { + if (item.hasItemMeta() && sfitem.hasItemMeta()) { + if (item.getItemMeta().hasDisplayName() && sfitem.getItemMeta().hasDisplayName()) { + if (item.getItemMeta().getDisplayName().equals(sfitem.getItemMeta().getDisplayName())) { if (lore) { - if (item.getItemMeta().hasLore() && SFitem.getItemMeta().hasLore()) { - return equalsLore(item.getItemMeta().getLore(), SFitem.getItemMeta().getLore()); + if (item.getItemMeta().hasLore() && sfitem.getItemMeta().hasLore()) { + return equalsLore(item.getItemMeta().getLore(), sfitem.getItemMeta().getLore()); } - else return !item.getItemMeta().hasLore() && !SFitem.getItemMeta().hasLore(); + else return !item.getItemMeta().hasLore() && !sfitem.getItemMeta().hasLore(); } else return true; } else return false; } - else if (!item.getItemMeta().hasDisplayName() && !SFitem.getItemMeta().hasDisplayName()) { + else if (!item.getItemMeta().hasDisplayName() && !sfitem.getItemMeta().hasDisplayName()) { if (lore) { - if (item.getItemMeta().hasLore() && SFitem.getItemMeta().hasLore()) { - return equalsLore(item.getItemMeta().getLore(), SFitem.getItemMeta().getLore()); + if (item.getItemMeta().hasLore() && sfitem.getItemMeta().hasLore()) { + return equalsLore(item.getItemMeta().getLore(), sfitem.getItemMeta().getLore()); } - else return !item.getItemMeta().hasLore() && !SFitem.getItemMeta().hasLore(); + else return !item.getItemMeta().hasLore() && !sfitem.getItemMeta().hasLore(); } else return true; } else return false; } - else return !item.hasItemMeta() && !SFitem.hasItemMeta(); + else return !item.hasItemMeta() && !sfitem.hasItemMeta(); } else return false; } @@ -119,8 +119,8 @@ public final class SlimefunManager { } @Deprecated - public static boolean isItemSimiliar(ItemStack item, ItemStack SFitem, boolean lore, DataType data) { - return isItemSimiliar(item, SFitem, lore); + public static boolean isItemSimiliar(ItemStack item, ItemStack sfitem, boolean lore, DataType data) { + return isItemSimiliar(item, sfitem, lore); } private static boolean equalsLore(List lore, List lore2) { diff --git a/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java b/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java index 396c31940..05e953bb7 100644 --- a/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java +++ b/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java @@ -687,9 +687,9 @@ public final class SlimefunGuide { return false; }); - int category_index = category_size * (selected_page - 1); + int categoryIndex = category_size * (selected_page - 1); for (int i = 0; i < category_size; i++) { - int target = category_index + i; + int target = categoryIndex + i; if (target >= category.getItems().size()) break; final SlimefunItem sfitem = category.getItems().get(target); if (Slimefun.isEnabled(p, sfitem, false)) { @@ -967,12 +967,12 @@ public final class SlimefunGuide { } List recipes = SlimefunItem.getByItem(item) instanceof SlimefunMachine ? ((SlimefunMachine) SlimefunItem.getByItem(item)).getDisplayRecipes() : ((SlimefunGadget) SlimefunItem.getByItem(item)).getDisplayRecipes(); - int recipe_size = recipes.size(); - if (recipe_size > 18) recipe_size = 18; + int recipeSize = recipes.size(); + if (recipeSize > 18) recipeSize = 18; int inputs = -1; int outputs = -1; - for (int i = 0; i < recipe_size; i++) { + for (int i = 0; i < recipeSize; i++) { int slot = 36; if (i % 2 == 1) { slot = slot + 9; diff --git a/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java b/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java index 456901ef5..1b415be18 100644 --- a/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java +++ b/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java @@ -969,9 +969,9 @@ public abstract class ProgrammableAndroid extends SlimefunItem { return false; }); - int category_index = 45 * (page - 1); + int categoryIndex = 45 * (page - 1); for (int i = 0; i < 45; i++) { - int target = category_index + i; + int target = categoryIndex + i; if (target >= scripts.size()) break; else { final Config script = scripts.get(target); diff --git a/src/me/mrCookieSlime/Slimefun/api/BlockStorage.java b/src/me/mrCookieSlime/Slimefun/api/BlockStorage.java index c72523af4..f943350df 100644 --- a/src/me/mrCookieSlime/Slimefun/api/BlockStorage.java +++ b/src/me/mrCookieSlime/Slimefun/api/BlockStorage.java @@ -111,7 +111,7 @@ public class BlockStorage { FileConfiguration cfg = YamlConfiguration.loadConfiguration(file); for (String key: cfg.getKeys(false)) { Location l = deserializeLocation(key); - String chunk_string = locationToChunkString(l); + String chunkString = locationToChunkString(l); try { totalBlocks++; String json = cfg.getString(key); @@ -129,10 +129,10 @@ public class BlockStorage { storage.put(l, blockInfo); if (SlimefunItem.isTicking(file.getName().replace(".sfb", ""))) { - Set locations = ticking_chunks.containsKey(chunk_string) ? ticking_chunks.get(chunk_string): new HashSet<>(); + Set locations = ticking_chunks.containsKey(chunkString) ? ticking_chunks.get(chunkString): new HashSet<>(); locations.add(l); - ticking_chunks.put(chunk_string, locations); - if (!loaded_tickers.contains(chunk_string)) loaded_tickers.add(chunk_string); + ticking_chunks.put(chunkString, locations); + if (!loaded_tickers.contains(chunkString)) loaded_tickers.add(chunkString); } } catch (Exception x) { System.err.println("[Slimefun] Failed to load " + file.getName() + "(ERR: " + key + ")"); @@ -208,8 +208,8 @@ public class BlockStorage { changes += entry.getValue().getUnsavedChanges(); } - Map universal_inventories2 = new HashMap<>(universal_inventories); - for (Map.Entry entry: universal_inventories2.entrySet()) { + Map universalInventories2 = new HashMap<>(universal_inventories); + for (Map.Entry entry: universalInventories2.entrySet()) { changes += entry.getValue().getUnsavedChanges(); } } @@ -254,9 +254,9 @@ public class BlockStorage { entry.getValue().save(entry.getKey()); } - Map universal_inventories2 = new HashMap<>(universal_inventories); + Map universalInventories2 = new HashMap<>(universal_inventories); - for (Map.Entry entry: universal_inventories2.entrySet()) { + for (Map.Entry entry: universalInventories2.entrySet()) { entry.getValue().save(); } @@ -462,15 +462,15 @@ public class BlockStorage { storage.getUniversalInventory(l).close(); storage.getUniversalInventory(l).save(); } - String chunk_string = locationToChunkString(l); - if (ticking_chunks.containsKey(chunk_string)) { - Set locations = ticking_chunks.get(chunk_string); + String chunkString = locationToChunkString(l); + if (ticking_chunks.containsKey(chunkString)) { + Set locations = ticking_chunks.get(chunkString); locations.remove(l); if (locations.isEmpty()) { - ticking_chunks.remove(chunk_string); - loaded_tickers.remove(chunk_string); + ticking_chunks.remove(chunkString); + loaded_tickers.remove(chunkString); } - else ticking_chunks.put(chunk_string, locations); + else ticking_chunks.put(chunkString, locations); } } } @@ -504,15 +504,15 @@ public class BlockStorage { refreshCache(storage, from, getLocationInfo(from).getString("id"), null, true); storage.storage.remove(from); - String chunk_string = locationToChunkString(from); - if (ticking_chunks.containsKey(chunk_string)) { - Set locations = ticking_chunks.get(chunk_string); + String chunkString = locationToChunkString(from); + if (ticking_chunks.containsKey(chunkString)) { + Set locations = ticking_chunks.get(chunkString); locations.remove(from); if (locations.isEmpty()) { - ticking_chunks.remove(chunk_string); - loaded_tickers.remove(chunk_string); + ticking_chunks.remove(chunkString); + loaded_tickers.remove(chunkString); } - else ticking_chunks.put(chunk_string, locations); + else ticking_chunks.put(chunkString, locations); } } @@ -524,14 +524,14 @@ public class BlockStorage { if (updateTicker) { SlimefunItem item = SlimefunItem.getByID(key); if (item != null && item.isTicking()) { - String chunk_string = locationToChunkString(l); + String chunkString = locationToChunkString(l); if (value != null) { - Set locations = ticking_chunks.get(chunk_string); + Set locations = ticking_chunks.get(chunkString); if (locations == null) locations = new HashSet<>(); locations.add(l); - ticking_chunks.put(chunk_string, locations); - if (!loaded_tickers.contains(chunk_string)) loaded_tickers.add(chunk_string); + ticking_chunks.put(chunkString, locations); + if (!loaded_tickers.contains(chunkString)) loaded_tickers.add(chunkString); } } } diff --git a/src/me/mrCookieSlime/Slimefun/api/energy/EnergyNet.java b/src/me/mrCookieSlime/Slimefun/api/energy/EnergyNet.java index 6912116f2..8be820257 100644 --- a/src/me/mrCookieSlime/Slimefun/api/energy/EnergyNet.java +++ b/src/me/mrCookieSlime/Slimefun/api/energy/EnergyNet.java @@ -71,12 +71,12 @@ public class EnergyNet extends Network { } public static EnergyNet getNetworkFromLocationOrCreate(Location l) { - EnergyNet energy_network = getNetworkFromLocation(l); - if (energy_network == null) { - energy_network = new EnergyNet(l); - registerNetwork(energy_network); + EnergyNet energyNetwork = getNetworkFromLocation(l); + if (energyNetwork == null) { + energyNetwork = new EnergyNet(l); + registerNetwork(energyNetwork); } - return energy_network; + return energyNetwork; } private Set input = new HashSet<>(); diff --git a/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoNet.java b/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoNet.java index cfd2daecf..82bd4d4de 100644 --- a/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoNet.java +++ b/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoNet.java @@ -55,12 +55,12 @@ public class CargoNet extends Network { } public static CargoNet getNetworkFromLocationOrCreate(Location l) { - CargoNet cargo_network = getNetworkFromLocation(l); - if (cargo_network == null) { - cargo_network = new CargoNet(l); - registerNetwork(cargo_network); + CargoNet cargoNetwork = getNetworkFromLocation(l); + if (cargoNetwork == null) { + cargoNetwork = new CargoNet(l); + registerNetwork(cargoNetwork); } - return cargo_network; + return cargoNetwork; } @Deprecated @@ -242,9 +242,9 @@ public class CargoNet extends Network { for (final Location terminal : terminals) { BlockMenu menu = BlockStorage.getInventory(terminal); - ItemStack sending_item = menu.getItemInSlot(TERMINAL_OUT_SLOT); - if (sending_item != null) { - requests.add(new ItemRequest(terminal, TERMINAL_OUT_SLOT, sending_item, ItemTransportFlow.INSERT)); + ItemStack sendingItem = menu.getItemInSlot(TERMINAL_OUT_SLOT); + if (sendingItem != null) { + requests.add(new ItemRequest(terminal, TERMINAL_OUT_SLOT, sendingItem, ItemTransportFlow.INSERT)); } } @@ -349,19 +349,19 @@ public class CargoNet extends Network { round_robin.put(input, 0); } - int c_index = round_robin.get(input); + int cIndex = round_robin.get(input); - if (c_index < outputlist.size()) { - for (int i = 0; i < c_index; i++) { + if (cIndex < outputlist.size()) { + for (int i = 0; i < cIndex; i++) { final Location temp = outputlist.get(0); outputlist.remove(temp); outputlist.add(temp); } - c_index++; + cIndex++; } - else c_index = 1; + else cIndex = 1; - round_robin.put(input, c_index); + round_robin.put(input, cIndex); } for (Location out : outputlist) { diff --git a/src/me/mrCookieSlime/Slimefun/api/network/Network.java b/src/me/mrCookieSlime/Slimefun/api/network/Network.java index 1f5dd3e72..44a974b55 100644 --- a/src/me/mrCookieSlime/Slimefun/api/network/Network.java +++ b/src/me/mrCookieSlime/Slimefun/api/network/Network.java @@ -147,8 +147,8 @@ public abstract class Network { private void discoverNeighbors(Location l, double xDiff, double yDiff, double zDiff) { for(int i = getRange() + 1; i > 0; i --) { - Location new_location = l.clone().add(i * xDiff, i * yDiff, i * zDiff); - addLocationToNetwork(new_location); + Location newLocation = l.clone().add(i * xDiff, i * yDiff, i * zDiff); + addLocationToNetwork(newLocation); } } diff --git a/src/me/mrCookieSlime/Slimefun/hooks/github/GitHubSetup.java b/src/me/mrCookieSlime/Slimefun/hooks/github/GitHubSetup.java index e31557de3..e640233fc 100644 --- a/src/me/mrCookieSlime/Slimefun/hooks/github/GitHubSetup.java +++ b/src/me/mrCookieSlime/Slimefun/hooks/github/GitHubSetup.java @@ -48,17 +48,17 @@ public final class GitHubSetup { continue; } - InputStreamReader profile_reader = null; - InputStreamReader session_reader = null; + InputStreamReader profileReader = null; + InputStreamReader sessionReader = null; try { URL profile = new URL("https://api.mojang.com/users/profiles/minecraft/" + name); - profile_reader = new InputStreamReader(profile.openStream()); - String uuid = new JsonParser().parse(profile_reader).getAsJsonObject().get("id").getAsString(); + profileReader = new InputStreamReader(profile.openStream()); + String uuid = new JsonParser().parse(profileReader).getAsJsonObject().get("id").getAsString(); URL session = new URL("https://sessionserver.mojang.com/session/minecraft/profile/" + uuid + "?unsigned=false"); - session_reader = new InputStreamReader(session.openStream()); - JsonArray properties = new JsonParser().parse(session_reader).getAsJsonObject().get("properties").getAsJsonArray(); + sessionReader = new InputStreamReader(session.openStream()); + JsonArray properties = new JsonParser().parse(sessionReader).getAsJsonObject().get("properties").getAsJsonArray(); for (JsonElement el: properties) { if (el.isJsonObject() && el.getAsJsonObject().get("name").getAsString().equals("textures")) { @@ -69,16 +69,16 @@ public final class GitHubSetup { } catch (Exception x) { SlimefunStartup.instance.getUtilities().contributorHeads.put(name, null); } finally { - if (profile_reader != null) { + if (profileReader != null) { try { - profile_reader.close(); + profileReader.close(); } catch (IOException x) { x.printStackTrace(); } } - if (session_reader != null) { + if (sessionReader != null) { try { - session_reader.close(); + sessionReader.close(); } catch (IOException x) { x.printStackTrace(); } diff --git a/src/me/mrCookieSlime/Slimefun/listeners/BowListener.java b/src/me/mrCookieSlime/Slimefun/listeners/BowListener.java index 5f62f26db..ef8cb24b2 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/BowListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/BowListener.java @@ -71,15 +71,15 @@ public class BowListener implements Listener { double g = -0.08D; double d = arrow.getLocation().distance(l); double t = d; - double v_x = (1.0D + 0.08000000000000001D * t) * (arrow.getLocation().getX() - l.getX()) / t; - double v_y = (1.0D + 0.04D * t) * (arrow.getLocation().getY() - l.getY()) / t - 0.5D * g * t; - double v_z = (1.0D + 0.08000000000000001D * t) * (arrow.getLocation().getZ() - l.getZ()) / t; + double vX = (1.0D + 0.08000000000000001D * t) * (arrow.getLocation().getX() - l.getX()) / t; + double vY = (1.0D + 0.04D * t) * (arrow.getLocation().getY() - l.getY()) / t - 0.5D * g * t; + double vZ = (1.0D + 0.08000000000000001D * t) * (arrow.getLocation().getZ() - l.getZ()) / t; Vector v = p.getVelocity(); - v.setX(v_x); - v.setY(v_y); - v.setZ(v_z); + v.setX(vX); + v.setY(vY); + v.setZ(vZ); p.setVelocity(v); From 2940db51adb48f7b5fa51e688b4c57b61bc6685b Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Fri, 30 Aug 2019 22:56:44 +0200 Subject: [PATCH 080/169] Refactoring --- .../SlimefunItem/machines/BlockPlacer.java | 76 +++++++++++++++++++ .../Slimefun/Setup/SlimefunSetup.java | 58 ++------------ 2 files changed, 83 insertions(+), 51 deletions(-) create mode 100644 src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/BlockPlacer.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/BlockPlacer.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/BlockPlacer.java new file mode 100644 index 000000000..25aebe13e --- /dev/null +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/BlockPlacer.java @@ -0,0 +1,76 @@ +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines; + +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.SlimefunStartup; +import me.mrCookieSlime.Slimefun.Lists.RecipeType; +import me.mrCookieSlime.Slimefun.Objects.Category; +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 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) { + Object value = Slimefun.getItemValue(getID(), "unplaceable-blocks"); + String[] blacklist = ((List) value).stream().toArray(String[]::new); + + 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); + + 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 (!SlimefunItem.blockhandler.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(SlimefunStartup.instance, () -> d.getInventory().removeItem(e.getItem()), 2L); + } + } + } + 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(SlimefunStartup.instance, () -> d.getInventory().removeItem(e.getItem()), 2L); + } + } + } + return true; + } + else return false; + } + }); + + super.register(slimefun); + } +} diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java index 0b0d09c18..2ef459227 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java @@ -2,11 +2,11 @@ package me.mrCookieSlime.Slimefun.Setup; import java.util.ArrayList; import java.util.Arrays; -import java.util.HashSet; import java.util.List; import java.util.Random; import java.util.Set; import java.util.UUID; +import java.util.stream.Stream; import org.bukkit.Bukkit; import org.bukkit.ChatColor; @@ -21,7 +21,6 @@ import org.bukkit.block.BlockFace; import org.bukkit.block.Chest; import org.bukkit.block.Container; import org.bukkit.block.CreatureSpawner; -import org.bukkit.block.Dispenser; import org.bukkit.block.data.Ageable; import org.bukkit.enchantments.Enchantment; import org.bukkit.entity.ArmorStand; @@ -36,7 +35,6 @@ import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; import org.bukkit.entity.Projectile; import org.bukkit.event.block.BlockBreakEvent; -import org.bukkit.event.block.BlockDispenseEvent; import org.bukkit.event.block.BlockPlaceEvent; import org.bukkit.event.entity.EntityDamageByEntityEvent; import org.bukkit.event.entity.EntityDamageEvent.DamageCause; @@ -112,6 +110,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.AutoDisenchanter; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.AutoDrier; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.AutoEnchanter; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.AutomatedCraftingChamber; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.BlockPlacer; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.CarbonPress; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.CargoInputNode; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.CargoOutputNode; @@ -152,7 +151,6 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.OreWasher; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.PressureChamber; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.Smeltery; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.TableSaw; -import me.mrCookieSlime.Slimefun.Objects.handlers.AutonomousMachineHandler; import me.mrCookieSlime.Slimefun.Objects.handlers.BlockBreakHandler; import me.mrCookieSlime.Slimefun.Objects.handlers.BlockPlaceHandler; import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker; @@ -1719,7 +1717,7 @@ public final class SlimefunSetup { @Override public boolean onRightClick(ItemUseEvent e, Player p, ItemStack item) { if (SlimefunManager.isItemSimiliar(item, SlimefunItems.SEISMIC_AXE, true)) { - List blocks = p.getLineOfSight((HashSet) null, 10); + List blocks = p.getLineOfSight(null, 10); for (int i = 0; i < blocks.size(); i++) { Block b = blocks.get(i); Location ground = b.getLocation(); @@ -1949,53 +1947,11 @@ public final class SlimefunSetup { new SlimefunItem(Categories.TECH_MISC, SlimefunItems.COPPER_WIRE, "COPPER_WIRE", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {null, null, null, SlimefunItems.COPPER_INGOT, SlimefunItems.COPPER_INGOT, SlimefunItems.COPPER_INGOT, null, null, null}, new CustomItem(SlimefunItems.COPPER_WIRE, 8)) .register(true); - - - @SuppressWarnings("unchecked") - final String[] blockPlacerBlacklist = Slimefun.getItemValue("BLOCK_PLACER", "unplaceable-blocks") != null ? ((List) Slimefun.getItemValue("BLOCK_PLACER", "unplaceable-blocks")).toArray(new String[((List) Slimefun.getItemValue("BLOCK_PLACER", "unplaceable-blocks")).size()]) : new String[] {"STRUCTURE_BLOCK"}; - - new SlimefunItem(Categories.MACHINES_1, SlimefunItems.BLOCK_PLACER, "BLOCK_PLACER", RecipeType.ENHANCED_CRAFTING_TABLE, + + new BlockPlacer(Categories.MACHINES_1, SlimefunItems.BLOCK_PLACER, "BLOCK_PLACER", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {SlimefunItems.GOLD_4K, new ItemStack(Material.PISTON), SlimefunItems.GOLD_4K, new ItemStack(Material.IRON_INGOT), SlimefunItems.ELECTRIC_MOTOR, new ItemStack(Material.IRON_INGOT), SlimefunItems.GOLD_4K, new ItemStack(Material.PISTON), SlimefunItems.GOLD_4K}, - new String[] {"unplaceable-blocks"}, new Object[] {Arrays.asList("STRUCTURE_BLOCK")}) - .register(true, new AutonomousMachineHandler() { - - @Override - public boolean onBlockDispense(final BlockDispenseEvent e, Block dispenser, final Dispenser d, Block block, Block chest, SlimefunItem machine) { - if (machine.getID().equalsIgnoreCase("BLOCK_PLACER")) { - e.setCancelled(true); - if ((block.getType() == null || block.getType() == Material.AIR) && e.getItem().getType().isBlock()) { - for(String blockType : blockPlacerBlacklist) { - if (e.getItem().getType().toString().equals(blockType)) { - return false; - } - } - - SlimefunItem sfItem = SlimefunItem.getByItem(e.getItem()); - if (sfItem != null) { - if (!SlimefunItem.blockhandler.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(SlimefunStartup.instance, () -> d.getInventory().removeItem(e.getItem()), 2L); - } - } - } - 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(SlimefunStartup.instance, () -> d.getInventory().removeItem(e.getItem()), 2L); - } - } - } - return true; - } - else return false; - } - }); + new String[] {"unplaceable-blocks"}, Stream.of(Material.STRUCTURE_BLOCK, Material.COMMAND_BLOCK).map(Material::toString).toArray(Object[]::new)) + .register(true); new SlimefunItem(Categories.MAGIC, SlimefunItems.SCROLL_OF_DIMENSIONAL_TELEPOSITION, "SCROLL_OF_DIMENSIONAL_TELEPOSITION", RecipeType.MAGIC_WORKBENCH, new ItemStack[] {null, SlimefunItems.ENDER_LUMP_3, SlimefunItems.MAGIC_EYE_OF_ENDER, SlimefunItems.ENDER_LUMP_3, SlimefunItems.MAGICAL_BOOK_COVER, SlimefunItems.ENDER_LUMP_3, SlimefunItems.MAGIC_EYE_OF_ENDER, SlimefunItems.ENDER_LUMP_3, null}) From 43e6b5875cbb3d27d2ea8b4d23a5492fd26ac68a Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Fri, 30 Aug 2019 22:58:09 +0200 Subject: [PATCH 081/169] Made a constant out of this variable --- .../Slimefun/Lists/Categories.java | 38 ++++++++++--------- 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/Lists/Categories.java b/src/me/mrCookieSlime/Slimefun/Lists/Categories.java index 9e8ee5c68..e76157473 100644 --- a/src/me/mrCookieSlime/Slimefun/Lists/Categories.java +++ b/src/me/mrCookieSlime/Slimefun/Lists/Categories.java @@ -22,24 +22,26 @@ public final class Categories { private Categories() {} - public static final Category WEAPONS = new Category(new CustomItem(Material.GOLDEN_SWORD, "&7Weapons", "", "&a> Click to open"), 1); - public static final Category PORTABLE = new Category(new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNDBjYjFlNjdiNTEyYWIyZDRiZjNkN2FjZTBlYWFmNjFjMzJjZDQ2ODFkZGMzOTg3Y2ViMzI2NzA2YTMzZmEifX19"), "&7Items", "", "&a> Click to open"), 1); - public static final Category FOOD = new Category(new CustomItem(Material.APPLE, "&7Food", "", "&a> Click to open"), 2); - public static final Category MACHINES_1 = new Category(new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTM0M2NlNThkYTU0Yzc5OTI0YTJjOTMzMWNmYzQxN2ZlOGNjYmJlYTliZTQ1YTdhYzg1ODYwYTZjNzMwIn19fQ=="), "&7Basic Machines", "", "&a> Click to open"), 1); - public static final LockedCategory ELECTRICITY = new LockedCategory(new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNTU4NDQzMmFmNmYzODIxNjcxMjAyNThkMWVlZThjODdjNmU3NWQ5ZTQ3OWU3YjBkNGM3YjZhZDQ4Y2ZlZWYifX19"), "&bEnergy and Electricity", "", "&a> Click to open"), 4, MACHINES_1); - public static final LockedCategory GPS = new LockedCategory(new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjBjOWMxYTAyMmY0MGI3M2YxNGI0Y2JhMzdjNzE4YzZhNTMzZjNhMjg2NGI2NTM2ZDVmNDU2OTM0Y2MxZiJ9fX0="), "&bGPS-based Machines", "", "&a> Click to open"), 4, MACHINES_1); - public static final Category ARMOR = new Category(new CustomItem(Material.IRON_CHESTPLATE, "&7Armor", "", "&a> Click to open"), 2); - public static final Category LUMPS_AND_MAGIC = new Category(new CustomItem(SlimefunItems.RUNE_ENDER, "&7Magical Items", "", "&a> Click to open"), 2); - public static final Category MAGIC = new Category(new CustomItem(SlimefunItems.ENDER_BACKPACK, "&7Magical Gadgets", "", "&a> Click to open"), 3); - public static final Category MISC = new Category(new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTRkYTk3ZjA4MGUzOTViODQyYzRjYzgyYTg0MDgyM2Q0ZGJkOGNhNjg4YTIwNjg1M2U1NzgzZTRiZmRjMDEyIn19fQ=="), "&7Miscellaneous", "", "&a> Click to open"), 2); - public static final Category TECH = new Category(new CustomArmor(new CustomItem(Material.LEATHER_CHESTPLATE, "&7Technical Gadgets", "", "&a> Click to open"), Color.SILVER), 3); - public static final Category RESOURCES = new Category(new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvY2U4ZjVhZGIxNGQ2YzlmNmI4MTBkMDI3NTQzZjFhOGMxZjQxN2UyZmVkOTkzYzk3YmNkODljNzRmNWUyZTgifX19"), "&7Resources", "", "&a> Click to open"), 1); - public static final Category CARGO = new LockedCategory(new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZTUxMGJjODUzNjJhMTMwYTZmZjlkOTFmZjExZDZmYTQ2ZDdkMTkxMmEzNDMxZjc1MTU1OGVmM2M0ZDljMiJ9fX0="), "&cCargo Management", "", "&a> Click to open"), 4, MACHINES_1); - public static final Category TECH_MISC = new Category(new CustomItem(SlimefunItems.HEATING_COIL, "&7Technical Components", "", "&a> Click to open"), 2); - public static final Category MAGIC_ARMOR = new Category(new CustomItem(SlimefunItems.ENDER_HELMET, "&7Magical Armor", "", "&a> Click to open"), 2); - public static final Category TALISMANS_1 = new Category(new CustomItem(Material.EMERALD, "&7Talismans - &aTier I", "", "&a> Click to open"), 2); - public static final LockedCategory TALISMANS_2 = new LockedCategory(new CustomItem(Material.EMERALD, "&7Talismans - &aTier II", "", "&a> Click to open"), 3, TALISMANS_1); - public static final Category TOOLS = new Category(new CustomItem(Material.GOLDEN_PICKAXE, "&7Tools", "", "&a> Click to open"), 1); + private static final String lore = "&a> Click to open"; + + public static final Category WEAPONS = new Category(new CustomItem(Material.GOLDEN_SWORD, "&7Weapons", "", lore), 1); + public static final Category PORTABLE = new Category(new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNDBjYjFlNjdiNTEyYWIyZDRiZjNkN2FjZTBlYWFmNjFjMzJjZDQ2ODFkZGMzOTg3Y2ViMzI2NzA2YTMzZmEifX19"), "&7Items", "", lore), 1); + public static final Category FOOD = new Category(new CustomItem(Material.APPLE, "&7Food", "", lore), 2); + public static final Category MACHINES_1 = new Category(new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTM0M2NlNThkYTU0Yzc5OTI0YTJjOTMzMWNmYzQxN2ZlOGNjYmJlYTliZTQ1YTdhYzg1ODYwYTZjNzMwIn19fQ=="), "&7Basic Machines", "", lore), 1); + public static final LockedCategory ELECTRICITY = new LockedCategory(new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNTU4NDQzMmFmNmYzODIxNjcxMjAyNThkMWVlZThjODdjNmU3NWQ5ZTQ3OWU3YjBkNGM3YjZhZDQ4Y2ZlZWYifX19"), "&bEnergy and Electricity", "", lore), 4, MACHINES_1); + public static final LockedCategory GPS = new LockedCategory(new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjBjOWMxYTAyMmY0MGI3M2YxNGI0Y2JhMzdjNzE4YzZhNTMzZjNhMjg2NGI2NTM2ZDVmNDU2OTM0Y2MxZiJ9fX0="), "&bGPS-based Machines", "", lore), 4, MACHINES_1); + public static final Category ARMOR = new Category(new CustomItem(Material.IRON_CHESTPLATE, "&7Armor", "", lore), 2); + public static final Category LUMPS_AND_MAGIC = new Category(new CustomItem(SlimefunItems.RUNE_ENDER, "&7Magical Items", "", lore), 2); + public static final Category MAGIC = new Category(new CustomItem(SlimefunItems.ENDER_BACKPACK, "&7Magical Gadgets", "", lore), 3); + public static final Category MISC = new Category(new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTRkYTk3ZjA4MGUzOTViODQyYzRjYzgyYTg0MDgyM2Q0ZGJkOGNhNjg4YTIwNjg1M2U1NzgzZTRiZmRjMDEyIn19fQ=="), "&7Miscellaneous", "", lore), 2); + public static final Category TECH = new Category(new CustomArmor(new CustomItem(Material.LEATHER_CHESTPLATE, "&7Technical Gadgets", "", lore), Color.SILVER), 3); + public static final Category RESOURCES = new Category(new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvY2U4ZjVhZGIxNGQ2YzlmNmI4MTBkMDI3NTQzZjFhOGMxZjQxN2UyZmVkOTkzYzk3YmNkODljNzRmNWUyZTgifX19"), "&7Resources", "", lore), 1); + public static final Category CARGO = new LockedCategory(new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZTUxMGJjODUzNjJhMTMwYTZmZjlkOTFmZjExZDZmYTQ2ZDdkMTkxMmEzNDMxZjc1MTU1OGVmM2M0ZDljMiJ9fX0="), "&cCargo Management", "", lore), 4, MACHINES_1); + public static final Category TECH_MISC = new Category(new CustomItem(SlimefunItems.HEATING_COIL, "&7Technical Components", "", lore), 2); + public static final Category MAGIC_ARMOR = new Category(new CustomItem(SlimefunItems.ENDER_HELMET, "&7Magical Armor", "", lore), 2); + public static final Category TALISMANS_1 = new Category(new CustomItem(Material.EMERALD, "&7Talismans - &aTier I", "", lore), 2); + public static final LockedCategory TALISMANS_2 = new LockedCategory(new CustomItem(Material.EMERALD, "&7Talismans - &aTier II", "", lore), 3, TALISMANS_1); + public static final Category TOOLS = new Category(new CustomItem(Material.GOLDEN_PICKAXE, "&7Tools", "", lore), 1); public static final SeasonalCategory CHRISTMAS = new SeasonalCategory(12, 1, new CustomItem(Material.NETHER_STAR, "&aC&ch&ar&ci&as&ct&am&ca&as", "", "&c> Click to help &aSanta")); public static final SeasonalCategory VALENTINES_DAY = new SeasonalCategory(2, 2, new CustomItem(Material.POPPY, "&dValentine's Day", "", "&d> Click to celebrate Love")); public static final SeasonalCategory EASTER = new SeasonalCategory(4, 2, new CustomItem(Material.EGG, "&6Easter", "", "&a> Click to paint some Eggs")); From e253f1dc436eb18d2362e6f5d88193dd64a48137 Mon Sep 17 00:00:00 2001 From: Sfiguz7 Date: Fri, 30 Aug 2019 22:58:46 +0200 Subject: [PATCH 082/169] Static non-final names compliance changes --- .../Slimefun/Lists/SlimefunItems.java | 2 +- .../Slimefun/Objects/Category.java | 6 +- .../Slimefun/Objects/Research.java | 4 +- .../Objects/SlimefunItem/SlimefunItem.java | 10 +-- .../machines/AdvancedCargoOutputNode.java | 4 +- .../SlimefunItem/machines/CargoInputNode.java | 4 +- .../machines/CargoOutputNode.java | 4 +- .../mrCookieSlime/Slimefun/Setup/Files.java | 16 ++-- .../Slimefun/Setup/MiscSetup.java | 4 +- .../Slimefun/Setup/ResearchSetup.java | 2 +- .../Slimefun/Setup/SlimefunManager.java | 2 +- .../Slimefun/Setup/SlimefunSetup.java | 4 +- .../mrCookieSlime/Slimefun/SlimefunGuide.java | 16 ++-- .../Slimefun/SlimefunStartup.java | 38 ++++----- .../androids/ProgrammableAndroid.java | 4 +- .../Slimefun/androids/ScriptPart.java | 2 +- .../Slimefun/api/BlockStorage.java | 82 +++++++++---------- .../Slimefun/api/PlayerProfile.java | 2 +- .../mrCookieSlime/Slimefun/api/Slimefun.java | 12 +-- .../Slimefun/api/energy/ChargableBlock.java | 12 +-- .../Slimefun/api/energy/EnergyNet.java | 24 +++--- .../Slimefun/api/item_transport/CargoNet.java | 16 ++-- .../Slimefun/api/network/Network.java | 10 +-- .../Slimefun/hooks/github/GitHubSetup.java | 4 +- .../Slimefun/utils/Settings.java | 10 +-- 25 files changed, 147 insertions(+), 147 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java b/src/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java index ab924d255..9ce7bf58f 100644 --- a/src/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java +++ b/src/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java @@ -637,7 +637,7 @@ public final class SlimefunItems { public static final ItemStack GPS_EMERGENCY_TRANSMITTER = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjBjOWMxYTAyMmY0MGI3M2YxNGI0Y2JhMzdjNzE4YzZhNTMzZjNhMjg2NGI2NTM2ZDVmNDU2OTM0Y2MxZiJ9fX0="), "&cGPS Emergency Transmitter", "", "&rCarrying this in your Inventory", "&rautomatically sets a Waypoint", "&rat your Location when you die."); public static final ItemStack ANDROID_INTERFACE_FUEL = new CustomItem(Material.DISPENSER, "&7Android Interface &c(Fuel)", "", "&rItems stored in this Interface", "&rwill be inserted into an Android's Fuel Slot", "&rwhen its Script tells them to do so"); - public static final ItemStack ANDROID_INTERFACE_ITEMS = new CustomItem(Material.DISPENSER, "&7Android Interface &9(Items)", "", "&rItems stored in an Android's Inventory", "&rwill be inserted into this Interface", "&rwhen its Script tells them to do so"); + public static final ItemStack ANDROID_INTERFACE_items = new CustomItem(Material.DISPENSER, "&7Android Interface &9(Items)", "", "&rItems stored in an Android's Inventory", "&rwill be inserted into this Interface", "&rwhen its Script tells them to do so"); public static final ItemStack GPS_GEO_SCANNER = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMmFkOGNmZWIzODdhNTZlM2U1YmNmODUzNDVkNmE0MTdiMjQyMjkzODg3ZGIzY2UzYmE5MWZhNDA5YjI1NGI4NiJ9fX0="), "&bGPS Geo-Scanner", "", "&rScans a Chunk for natural Resources", "&rsuch as &8Oil"); public static final ItemStack OIL_PUMP = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYWZlMWEwNDBhNDI1ZTMxYTQ2ZDRmOWE5Yjk4MDZmYTJmMGM0N2VlODQ3MTFjYzE5MzJmZDhhYjMyYjJkMDM4In19fQ=="), "&rOil Pump", "", "&7Pumps up Oil and fills it into Buckets", "", "&c&l! &cMake sure to Geo-Scan the Chunk first"); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/Category.java b/src/me/mrCookieSlime/Slimefun/Objects/Category.java index 366e3aad1..2add32610 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/Category.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/Category.java @@ -76,11 +76,11 @@ public class Category { Collections.sort(list, new CategorySorter()); if (this instanceof SeasonalCategory) { - if (((SeasonalCategory) this).isUnlocked()) Slimefun.current_categories.add(this); + if (((SeasonalCategory) this).isUnlocked()) Slimefun.currentCategories.add(this); } - else Slimefun.current_categories.add(this); + else Slimefun.currentCategories.add(this); - Collections.sort(Slimefun.current_categories, new CategorySorter()); + Collections.sort(Slimefun.currentCategories, new CategorySorter()); } /** diff --git a/src/me/mrCookieSlime/Slimefun/Objects/Research.java b/src/me/mrCookieSlime/Slimefun/Objects/Research.java index c832015d7..f59f6d417 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/Research.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/Research.java @@ -80,7 +80,7 @@ public class Research { } public boolean isEnabled() { - return SlimefunStartup.instance.getSettings().RESEARCHES_ENABLED && enabled; + return SlimefunStartup.instance.getSettings().Researches_ENABLED && enabled; } /** @@ -214,7 +214,7 @@ public class Research { */ public boolean canUnlock(Player p) { if (!isEnabled()) return true; - return (p.getGameMode() == GameMode.CREATIVE && SlimefunStartup.instance.getSettings().RESEARCHES_FREE_IN_CREATIVE) || p.getLevel() >= this.cost; + return (p.getGameMode() == GameMode.CREATIVE && SlimefunStartup.instance.getSettings().Researches_FREE_IN_CREATIVE) || p.getLevel() >= this.cost; } /** diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java index 2324f1b7e..506d1ce08 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java @@ -37,7 +37,7 @@ public class SlimefunItem { public static List items = new ArrayList<>(); - public static Map map_id = new HashMap<>(); + public static Map mapID = new HashMap<>(); public static List radioactive = new ArrayList<>(); public static Set tickers = new HashSet<>(); @@ -209,7 +209,7 @@ public class SlimefunItem { public void register(boolean slimefun) { this.addon = !slimefun; try { - if (map_id.containsKey(this.id)) throw new IllegalArgumentException("ID \"" + this.id + "\" already exists"); + if (mapID.containsKey(this.id)) throw new IllegalArgumentException("ID \"" + this.id + "\" already exists"); if (this.recipe.length < 9) this.recipe = new ItemStack[] {null, null, null, null, null, null, null, null, null}; all.add(this); @@ -248,7 +248,7 @@ public class SlimefunItem { this.permission = SlimefunStartup.getItemCfg().getString(this.id + ".required-permission"); items.add(this); if (slimefun) SlimefunStartup.instance.getUtilities().vanillaItems++; - map_id.put(this.id, this); + mapID.put(this.id, this); this.create(); for (ItemHandler handler: itemhandlers) { @@ -308,14 +308,14 @@ public class SlimefunItem { */ @Deprecated public static SlimefunItem getByName(String name) { - return map_id.get(name); + return mapID.get(name); } /** * @since 4.1.11, rename of {@link #getByName(String)}. */ public static SlimefunItem getByID(String id) { - return map_id.get(id); + return mapID.get(id); } public static SlimefunItem getByItem(ItemStack item) { diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AdvancedCargoOutputNode.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AdvancedCargoOutputNode.java index 8f4ee7b96..67180e68d 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AdvancedCargoOutputNode.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AdvancedCargoOutputNode.java @@ -105,7 +105,7 @@ public class AdvancedCargoOutputNode extends SlimefunItem { menu.addMenuClickHandler(41, (p, slot, item, action) -> { int channel = Integer.parseInt(BlockStorage.getLocationInfo(b.getLocation(), "frequency")) - 1; if (channel < 0) { - if (CargoNet.EXTRA_CHANNELS) channel = 16; + if (CargoNet.extraChannels) channel = 16; else channel = 15; } BlockStorage.addBlockInfo(b, "frequency", String.valueOf(channel)); @@ -132,7 +132,7 @@ public class AdvancedCargoOutputNode extends SlimefunItem { menu.addMenuClickHandler(43, (p, slot, item, action) -> { int channeln = Integer.parseInt(BlockStorage.getLocationInfo(b.getLocation(), "frequency")) + 1; - if (CargoNet.EXTRA_CHANNELS) { + if (CargoNet.extraChannels) { if (channeln > 16) channeln = 0; } else { diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/CargoInputNode.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/CargoInputNode.java index d45135d47..b61541c45 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/CargoInputNode.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/CargoInputNode.java @@ -121,7 +121,7 @@ public class CargoInputNode extends SlimefunItem { menu.addMenuClickHandler(41, (p, slot, item, action) -> { int channel = Integer.parseInt(BlockStorage.getLocationInfo(b.getLocation(), "frequency")) - 1; if (channel < 0) { - if (CargoNet.EXTRA_CHANNELS) channel = 16; + if (CargoNet.extraChannels) channel = 16; else channel = 15; } BlockStorage.addBlockInfo(b, "frequency", String.valueOf(channel)); @@ -148,7 +148,7 @@ public class CargoInputNode extends SlimefunItem { menu.addMenuClickHandler(43, (p, slot, item, action) -> { int channeln = Integer.parseInt(BlockStorage.getLocationInfo(b.getLocation(), "frequency")) + 1; - if (CargoNet.EXTRA_CHANNELS) { + if (CargoNet.extraChannels) { if (channeln > 16) channeln = 0; } else { diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/CargoOutputNode.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/CargoOutputNode.java index 60d0b24eb..7d7de87ab 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/CargoOutputNode.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/CargoOutputNode.java @@ -45,7 +45,7 @@ public class CargoOutputNode extends SlimefunItem { menu.addMenuClickHandler(12, (p, slot, item, action) -> { int channel = Integer.parseInt(BlockStorage.getLocationInfo(b.getLocation(), "frequency")) - 1; if (channel < 0) { - if (CargoNet.EXTRA_CHANNELS) channel = 16; + if (CargoNet.extraChannels) channel = 16; else channel = 15; } BlockStorage.addBlockInfo(b, "frequency", String.valueOf(channel)); @@ -72,7 +72,7 @@ public class CargoOutputNode extends SlimefunItem { menu.addMenuClickHandler(14, (p, slot, item, action) -> { int channeln = Integer.parseInt(BlockStorage.getLocationInfo(b.getLocation(), "frequency")) + 1; - if (CargoNet.EXTRA_CHANNELS) { + if (CargoNet.extraChannels) { if (channeln > 16) channeln = 0; } else { diff --git a/src/me/mrCookieSlime/Slimefun/Setup/Files.java b/src/me/mrCookieSlime/Slimefun/Setup/Files.java index 82d9beb62..686022578 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/Files.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/Files.java @@ -6,14 +6,14 @@ public final class Files { private Files() {} - public static File RESEARCHES = new File("plugins/Slimefun/Researches.yml"); - public static File CONFIG = new File("plugins/Slimefun/config.yml"); - public static File ITEMS = new File("plugins/Slimefun/Items.yml"); - public static File DATABASE = new File("data-storage/Slimefun/Players"); - public static File WHITELIST = new File("plugins/Slimefun/whitelist.yml"); + public static File Researches = new File("plugins/Slimefun/Researches.yml"); + public static File config = new File("plugins/Slimefun/config.yml"); + public static File items = new File("plugins/Slimefun/Items.yml"); + public static File database = new File("data-storage/Slimefun/Players"); + public static File whitelist = new File("plugins/Slimefun/whitelist.yml"); public static void cleanup() { - if (!RESEARCHES.exists()) { + if (!Researches.exists()) { System.err.println("###############################################"); System.err.println("############## = - INFO - = #################"); System.err.println("###############################################"); @@ -29,8 +29,8 @@ public final class Files { delete(new File("data-storage/Slimefun")); } - if (!DATABASE.exists()) { - DATABASE.mkdirs(); + if (!database.exists()) { + database.mkdirs(); } } diff --git a/src/me/mrCookieSlime/Slimefun/Setup/MiscSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/MiscSetup.java index 23a63b8d7..b5b3a74d7 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/MiscSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/MiscSetup.java @@ -34,7 +34,7 @@ public final class MiscSetup { private MiscSetup() {} - public static List post_handlers = new ArrayList<>(); + public static List postHandlers = new ArrayList<>(); public static void setupMisc() { if (SlimefunItem.getByID("COMMON_TALISMAN") != null && (Boolean) Slimefun.getItemValue("COMMON_TALISMAN", "recipe-requires-nether-stars")) { @@ -205,7 +205,7 @@ public final class MiscSetup { CommandSender sender = Bukkit.getConsoleSender(); ChatColor color = Colors.getRandom(); - for (PostSlimefunLoadingHandler handler: post_handlers) { + for (PostSlimefunLoadingHandler handler: postHandlers) { handler.run(pre, init, post); } diff --git a/src/me/mrCookieSlime/Slimefun/Setup/ResearchSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/ResearchSetup.java index 5416778e5..737363505 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/ResearchSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/ResearchSetup.java @@ -177,7 +177,7 @@ public final class ResearchSetup { Slimefun.registerResearch(new Research(177, "Basic GPS Setup", 28), SlimefunItems.GPS_TRANSMITTER, SlimefunItems.GPS_CONTROL_PANEL, SlimefunItems.GPS_MARKER_TOOL); Slimefun.registerResearch(new Research(178, "GPS Emergency Waypoint", 30), SlimefunItems.GPS_EMERGENCY_TRANSMITTER); Slimefun.registerResearch(new Research(179, "Programmable Androids", 50), SlimefunItems.PROGRAMMABLE_ANDROID, SlimefunItems.PROGRAMMABLE_ANDROID_FARMER, SlimefunItems.PROGRAMMABLE_ANDROID_BUTCHER, SlimefunItems.PROGRAMMABLE_ANDROID_FISHERMAN, SlimefunItems.PROGRAMMABLE_ANDROID_MINER, SlimefunItems.PROGRAMMABLE_ANDROID_WOODCUTTER); - Slimefun.registerResearch(new Research(180, "Android Interfaces", 26), SlimefunItems.ANDROID_INTERFACE_FUEL, SlimefunItems.ANDROID_INTERFACE_ITEMS); + Slimefun.registerResearch(new Research(180, "Android Interfaces", 26), SlimefunItems.ANDROID_INTERFACE_FUEL, SlimefunItems.ANDROID_INTERFACE_items); Slimefun.registerResearch(new Research(181, "GEO-Scans", 30), SlimefunItems.GPS_GEO_SCANNER); Slimefun.registerResearch(new Research(182, "Combustion Reactor", 38), SlimefunItems.COMBUSTION_REACTOR); Slimefun.registerResearch(new Research(183, "Teleporter Base Components", 42), SlimefunItems.GPS_TELEPORTATION_MATRIX, SlimefunItems.GPS_TELEPORTER_PYLON); diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunManager.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunManager.java index be5e35c99..e67113894 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunManager.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunManager.java @@ -22,7 +22,7 @@ public final class SlimefunManager { private SlimefunManager() {} public static SlimefunStartup plugin; - public static String PREFIX; + public static String prefix; public static Map> drops = new EnumMap<>(EntityType.class); public static void registerArmorSet(ItemStack baseComponent, ItemStack[] items, String idSyntax, PotionEffect[][] effects, boolean special, boolean slimefun) { diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java index 227354e45..31a872e5b 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java @@ -3294,7 +3294,7 @@ public final class SlimefunSetup { } .register(true); - new SlimefunItem(Categories.ELECTRICITY, SlimefunItems.ANDROID_INTERFACE_ITEMS, "ANDROID_INTERFACE_ITEMS", RecipeType.ENHANCED_CRAFTING_TABLE, + new SlimefunItem(Categories.ELECTRICITY, SlimefunItems.ANDROID_INTERFACE_items, "ANDROID_INTERFACE_items", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {SlimefunItems.PLASTIC_SHEET, SlimefunItems.PLASTIC_SHEET, SlimefunItems.PLASTIC_SHEET, SlimefunItems.PLASTIC_SHEET, SlimefunItems.BASIC_CIRCUIT_BOARD, new ItemStack(Material.BLUE_STAINED_GLASS), SlimefunItems.PLASTIC_SHEET, SlimefunItems.PLASTIC_SHEET, SlimefunItems.PLASTIC_SHEET}) .register(true); @@ -4380,7 +4380,7 @@ public final class SlimefunSetup { } public static void registerPostHandler(PostSlimefunLoadingHandler handler) { - MiscSetup.post_handlers.add(handler); + MiscSetup.postHandlers.add(handler); } } diff --git a/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java b/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java index 05e953bb7..2cd8ef115 100644 --- a/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java +++ b/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java @@ -65,8 +65,8 @@ public final class SlimefunGuide { * @since 4.1.13 */ public static int stars = 0; - public static int code_bytes = 0; - public static Date last_update = new Date(); + public static int codeBytes = 0; + public static Date lastUpdate = new Date(); private static final int category_size = 36; @@ -168,7 +168,7 @@ public final class SlimefunGuide { }); try { - menu.addItem(4, new CustomItem(new ItemStack(Material.COMPARATOR), "&eSource Code", "", "&7Bytes of Code: &6" + IntegerFormat.formatBigNumber(code_bytes), "&7Last Update: &a" + IntegerFormat.timeDelta(last_update) + " ago", "&7Forks: &e" + forks, "&7Stars: &e" + stars, "", "&7&oSlimefun 4 is a community project,", "&7&othe source code is available on GitHub", "&7&oand if you want to keep this Plugin alive,", "&7&othen please consider contributing to it", "", "&7\u21E8 Click to go to GitHub")); + menu.addItem(4, new CustomItem(new ItemStack(Material.COMPARATOR), "&eSource Code", "", "&7Bytes of Code: &6" + IntegerFormat.formatBigNumber(codeBytes), "&7Last Update: &a" + IntegerFormat.timeDelta(lastUpdate) + " ago", "&7Forks: &e" + forks, "&7Stars: &e" + stars, "", "&7&oSlimefun 4 is a community project,", "&7&othe source code is available on GitHub", "&7&oand if you want to keep this Plugin alive,", "&7&othen please consider contributing to it", "", "&7\u21E8 Click to go to GitHub")); menu.addMenuClickHandler(4, (pl, slot, item, action) -> { pl.closeInventory(); pl.sendMessage(""); @@ -416,8 +416,8 @@ public final class SlimefunGuide { pl -> pl.playSound(pl.getLocation(), Sound.ENTITY_BAT_TAKEOFF, 0.7F, 0.7F) ); - List categories = Slimefun.current_categories; - List handlers = Slimefun.guide_handlers.values().stream().flatMap(List::stream).collect(Collectors.toList()); + List categories = Slimefun.currentCategories; + List handlers = Slimefun.guideHandlers.values().stream().flatMap(List::stream).collect(Collectors.toList()); int index = 9; int pages = 1; @@ -567,7 +567,7 @@ public final class SlimefunGuide { openCategory(p, category, true, selected_page, book); } else { - if (!(p.getGameMode() == GameMode.CREATIVE && SlimefunStartup.instance.getSettings().RESEARCHES_FREE_IN_CREATIVE)) { + if (!(p.getGameMode() == GameMode.CREATIVE && SlimefunStartup.instance.getSettings().Researches_FREE_IN_CREATIVE)) { p.setLevel(p.getLevel() - research.getCost()); } @@ -706,12 +706,12 @@ public final class SlimefunGuide { openCategory(p, category, true, selected_page, book); } else { - if (!(pl.getGameMode() == GameMode.CREATIVE && SlimefunStartup.instance.getSettings().RESEARCHES_FREE_IN_CREATIVE)) { + if (!(pl.getGameMode() == GameMode.CREATIVE && SlimefunStartup.instance.getSettings().Researches_FREE_IN_CREATIVE)) { pl.setLevel(pl.getLevel() - research.getCost()); } if (pl.getGameMode() == GameMode.CREATIVE) { - research.unlock(pl, SlimefunStartup.instance.getSettings().RESEARCHES_FREE_IN_CREATIVE); + research.unlock(pl, SlimefunStartup.instance.getSettings().Researches_FREE_IN_CREATIVE); openCategory(pl, category, survival, selected_page, book); } else { diff --git a/src/me/mrCookieSlime/Slimefun/SlimefunStartup.java b/src/me/mrCookieSlime/Slimefun/SlimefunStartup.java index dbada7c7e..246d0929f 100644 --- a/src/me/mrCookieSlime/Slimefun/SlimefunStartup.java +++ b/src/me/mrCookieSlime/Slimefun/SlimefunStartup.java @@ -145,9 +145,9 @@ public final class SlimefunStartup extends JavaPlugin { utils.setupConfig(); // Loading all extra configs - researches = new Config(Files.RESEARCHES); - items = new Config(Files.ITEMS); - whitelist = new Config(Files.WHITELIST); + researches = new Config(Files.Researches); + items = new Config(Files.items); + whitelist = new Config(Files.whitelist); // Setup Config and messages.yml utils.setupLocalization(); @@ -191,7 +191,7 @@ public final class SlimefunStartup extends JavaPlugin { MiscSetup.loadDescriptions(); settings = new Settings(config); - settings.RESEARCHES_ENABLED = getResearchCfg().getBoolean("enable-researching"); + settings.Researches_ENABLED = getResearchCfg().getBoolean("enable-researching"); settings.SMELTERY_FIRE_BREAK_CHANCE = (Integer) Slimefun.getItemValue("SMELTERY", "chance.fireBreak"); System.out.println("[Slimefun] Loading Researches..."); @@ -349,7 +349,7 @@ public final class SlimefunStartup extends JavaPlugin { } } - for (UniversalBlockMenu menu: BlockStorage.universal_inventories.values()) { + for (UniversalBlockMenu menu: BlockStorage.universalInventories.values()) { menu.save(); } @@ -362,16 +362,16 @@ public final class SlimefunStartup extends JavaPlugin { whitelist = null; instance = null; Messages.local = null; - Files.CONFIG = null; - Files.DATABASE = null; - Files.ITEMS = null; - Files.RESEARCHES = null; - Files.WHITELIST = null; + Files.config = null; + Files.database = null; + Files.items = null; + Files.Researches = null; + Files.whitelist = null; MultiBlock.list = null; Research.list = null; SlimefunItem.all = null; SlimefunItem.items = null; - SlimefunItem.map_id = null; + SlimefunItem.mapID = null; SlimefunItem.handlers = null; SlimefunItem.radioactive = null; SlimefunCommand.arguments = null; @@ -379,19 +379,19 @@ public final class SlimefunStartup extends JavaPlugin { SlimefunCommand.tabs = null; SlimefunItem.blockhandler = null; BlockMenuPreset.presets = null; - BlockStorage.loaded_tickers = null; - BlockStorage.ticking_chunks = null; + BlockStorage.loadedTickers = null; + BlockStorage.tickingChunks = null; BlockStorage.worlds = null; ChargableBlock.capacitors = null; - ChargableBlock.max_charges = null; + ChargableBlock.maxCharges = null; AContainer.processing = null; AContainer.progress = null; - Slimefun.guide_handlers = null; - EnergyNet.machines_input = null; - EnergyNet.machines_output = null; - EnergyNet.machines_storage = null; + Slimefun.guideHandlers = null; + EnergyNet.machinesInput = null; + EnergyNet.machinesOutput = null; + EnergyNet.machinesStorage = null; CargoNet.faces = null; - BlockStorage.universal_inventories = null; + BlockStorage.universalInventories = null; PlayerProfile.profiles = null; OreWasher.items = null; diff --git a/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java b/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java index 1b415be18..d0e2f672f 100644 --- a/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java +++ b/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java @@ -351,8 +351,8 @@ public abstract class ProgrammableAndroid extends SlimefunItem { case MOVE_AND_DIG_DOWN: movedig(b, face, b.getRelative(BlockFace.DOWN)); break; - case INTERFACE_ITEMS: - if (BlockStorage.check(b.getRelative(face), "ANDROID_INTERFACE_ITEMS") && b.getRelative(face).getState() instanceof Dispenser) { + case INTERFACE_items: + if (BlockStorage.check(b.getRelative(face), "ANDROID_INTERFACE_items") && b.getRelative(face).getState() instanceof Dispenser) { Dispenser d = (Dispenser) b.getRelative(face).getState(); for (int slot: getOutputSlots()) { ItemStack stack = BlockStorage.getInventory(b).getItemInSlot(slot); diff --git a/src/me/mrCookieSlime/Slimefun/androids/ScriptPart.java b/src/me/mrCookieSlime/Slimefun/androids/ScriptPart.java index eeb93a022..b7db5f23b 100644 --- a/src/me/mrCookieSlime/Slimefun/androids/ScriptPart.java +++ b/src/me/mrCookieSlime/Slimefun/androids/ScriptPart.java @@ -51,7 +51,7 @@ public enum ScriptPart { FARM_EXOTIC_DOWN(AndroidType.ADVANCED_FARMER, "&bAdvanced Harvest and Replant &7(Block underneath)", "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMmQ0Mjk2YjMzM2QyNTMxOWFmM2YzMzA1MTc5N2Y5ZTZkODIxY2QxOWEwMTRmYjcxMzdiZWI4NmE0ZTllOTYifX19"), // Action - Interface - INTERFACE_ITEMS(AndroidType.NONE, "&9Push Inventory Contents to the faced Interface", "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTBhNGRiZjY2MjVjNDJiZTU3YThiYTJjMzMwOTU0YTc2YmRmMjI3ODU1NDBlODdhNWM5NjcyNjg1MjM4ZWMifX19"), + INTERFACE_items(AndroidType.NONE, "&9Push Inventory Contents to the faced Interface", "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTBhNGRiZjY2MjVjNDJiZTU3YThiYTJjMzMwOTU0YTc2YmRmMjI3ODU1NDBlODdhNWM5NjcyNjg1MjM4ZWMifX19"), INTERFACE_FUEL(AndroidType.NONE, "&cPull Fuel from the faced Interface", "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMjQzMmY1MjgyYTUwNzQ1YjkxMmJlMTRkZWRhNTgxYmQ0YTA5Yjk3N2EzYzMyZDdlOTU3ODQ5MWZlZThmYTcifX19"); diff --git a/src/me/mrCookieSlime/Slimefun/api/BlockStorage.java b/src/me/mrCookieSlime/Slimefun/api/BlockStorage.java index f943350df..19f0ddead 100644 --- a/src/me/mrCookieSlime/Slimefun/api/BlockStorage.java +++ b/src/me/mrCookieSlime/Slimefun/api/BlockStorage.java @@ -39,16 +39,16 @@ public class BlockStorage { private static final String path_chunks = "data-storage/Slimefun/stored-chunks/"; public static Map worlds = new HashMap<>(); - public static Map> ticking_chunks = new HashMap<>(); - public static Set loaded_tickers = new HashSet<>(); + public static Map> tickingChunks = new HashMap<>(); + public static Set loadedTickers = new HashSet<>(); private World world; private Map storage = new HashMap<>(); - private static Map map_chunks = new HashMap<>(); + private static Map mapChunks = new HashMap<>(); private Map inventories = new HashMap<>(); - public static Map universal_inventories = new HashMap<>(); + public static Map universalInventories = new HashMap<>(); private Map cache_blocks = new HashMap<>(); @@ -129,10 +129,10 @@ public class BlockStorage { storage.put(l, blockInfo); if (SlimefunItem.isTicking(file.getName().replace(".sfb", ""))) { - Set locations = ticking_chunks.containsKey(chunkString) ? ticking_chunks.get(chunkString): new HashSet<>(); + Set locations = tickingChunks.containsKey(chunkString) ? tickingChunks.get(chunkString): new HashSet<>(); locations.add(l); - ticking_chunks.put(chunkString, locations); - if (!loaded_tickers.contains(chunkString)) loaded_tickers.add(chunkString); + tickingChunks.put(chunkString, locations); + if (!loadedTickers.contains(chunkString)) loadedTickers.add(chunkString); } } catch (Exception x) { System.err.println("[Slimefun] Failed to load " + file.getName() + "(ERR: " + key + ")"); @@ -156,7 +156,7 @@ public class BlockStorage { FileConfiguration cfg = YamlConfiguration.loadConfiguration(chunks); for (String key: cfg.getKeys(false)) { try { - if (world.getName().equals(key.split(";")[0])) map_chunks.put(key, cfg.getString(key)); + if (world.getName().equals(key.split(";")[0])) mapChunks.put(key, cfg.getString(key)); } catch (Exception x) { System.err.println("[Slimefun] Failed to load " + chunks.getName() + " for World \"" + world.getName() + "\" (ERR: " + key + ")"); x.printStackTrace(); @@ -191,24 +191,24 @@ public class BlockStorage { BlockMenuPreset preset = BlockMenuPreset.getPreset(cfg.getString("preset")); if (preset != null) { - universal_inventories.put(preset.getID(), new UniversalBlockMenu(preset, cfg)); + universalInventories.put(preset.getID(), new UniversalBlockMenu(preset, cfg)); } } } } - private static int chunk_changes = 0; + private static int chunkChanges = 0; private int changes = 0; public void computeChanges() { - changes = cache_blocks.size() + chunk_changes; + changes = cache_blocks.size() + chunkChanges; Map inventories2 = new HashMap<>(inventories); for (Map.Entry entry: inventories2.entrySet()) { changes += entry.getValue().getUnsavedChanges(); } - Map universalInventories2 = new HashMap<>(universal_inventories); + Map universalInventories2 = new HashMap<>(universalInventories); for (Map.Entry entry: universalInventories2.entrySet()) { changes += entry.getValue().getUnsavedChanges(); } @@ -254,17 +254,17 @@ public class BlockStorage { entry.getValue().save(entry.getKey()); } - Map universalInventories2 = new HashMap<>(universal_inventories); + Map universalInventories2 = new HashMap<>(universalInventories); for (Map.Entry entry: universalInventories2.entrySet()) { entry.getValue().save(); } - if (chunk_changes > 0) { + if (chunkChanges > 0) { File chunks = new File(path_chunks + "chunks.sfc"); Config cfg = new Config("data-storage/Slimefun/temp.yml"); - for (Map.Entry entry: map_chunks.entrySet()) { + for (Map.Entry entry: mapChunks.entrySet()) { cfg.setValue(entry.getKey(), entry.getValue()); } @@ -276,7 +276,7 @@ public class BlockStorage { } changes = 0; - chunk_changes = 0; + chunkChanges = 0; } public static void store(Block block, ItemStack item) { @@ -360,7 +360,7 @@ public class BlockStorage { } private static String getJSONData(Chunk chunk) { - return map_chunks.get(serializeChunk(chunk)); + return mapChunks.get(serializeChunk(chunk)); } @Deprecated @@ -413,7 +413,7 @@ public class BlockStorage { storage.storage.put(l, cfg); if (BlockMenuPreset.isInventory(cfg.getString("id"))) { if (BlockMenuPreset.isUniversalInventory(cfg.getString("id"))) { - if (!universal_inventories.containsKey(cfg.getString("id"))) storage.loadUniversalInventory(BlockMenuPreset.getPreset(cfg.getString("id"))); + if (!universalInventories.containsKey(cfg.getString("id"))) storage.loadUniversalInventory(BlockMenuPreset.getPreset(cfg.getString("id"))); } else if (!storage.hasInventory(l)) { File file = new File("data-storage/Slimefun/stored-inventories/" + serializeLocation(l) + ".sfi"); @@ -463,14 +463,14 @@ public class BlockStorage { storage.getUniversalInventory(l).save(); } String chunkString = locationToChunkString(l); - if (ticking_chunks.containsKey(chunkString)) { - Set locations = ticking_chunks.get(chunkString); + if (tickingChunks.containsKey(chunkString)) { + Set locations = tickingChunks.get(chunkString); locations.remove(l); if (locations.isEmpty()) { - ticking_chunks.remove(chunkString); - loaded_tickers.remove(chunkString); + tickingChunks.remove(chunkString); + loadedTickers.remove(chunkString); } - else ticking_chunks.put(chunkString, locations); + else tickingChunks.put(chunkString, locations); } } } @@ -505,14 +505,14 @@ public class BlockStorage { storage.storage.remove(from); String chunkString = locationToChunkString(from); - if (ticking_chunks.containsKey(chunkString)) { - Set locations = ticking_chunks.get(chunkString); + if (tickingChunks.containsKey(chunkString)) { + Set locations = tickingChunks.get(chunkString); locations.remove(from); if (locations.isEmpty()) { - ticking_chunks.remove(chunkString); - loaded_tickers.remove(chunkString); + tickingChunks.remove(chunkString); + loadedTickers.remove(chunkString); } - else ticking_chunks.put(chunkString, locations); + else tickingChunks.put(chunkString, locations); } } @@ -526,12 +526,12 @@ public class BlockStorage { if (item != null && item.isTicking()) { String chunkString = locationToChunkString(l); if (value != null) { - Set locations = ticking_chunks.get(chunkString); + Set locations = tickingChunks.get(chunkString); if (locations == null) locations = new HashSet<>(); locations.add(l); - ticking_chunks.put(chunkString, locations); - if (!loaded_tickers.contains(chunkString)) loaded_tickers.add(chunkString); + tickingChunks.put(chunkString, locations); + if (!loadedTickers.contains(chunkString)) loadedTickers.add(chunkString); } } } @@ -575,7 +575,7 @@ public class BlockStorage { } public static Set getTickingChunks() { - return new HashSet<>(loaded_tickers); + return new HashSet<>(loadedTickers); } @Deprecated @@ -597,7 +597,7 @@ public class BlockStorage { } public static Set getTickingLocations(String chunk) { - return new HashSet<>(ticking_chunks.get(chunk)); + return new HashSet<>(tickingChunks.get(chunk)); } public BlockMenu loadInventory(Location l, BlockMenuPreset preset) { @@ -607,7 +607,7 @@ public class BlockStorage { } public void loadUniversalInventory(BlockMenuPreset preset) { - universal_inventories.put(preset.getID(), new UniversalBlockMenu(preset)); + universalInventories.put(preset.getID(), new UniversalBlockMenu(preset)); } public void clearInventory(Location l) { @@ -629,7 +629,7 @@ public class BlockStorage { } public boolean hasUniversalInventory(String id) { - return universal_inventories.containsKey(id); + return universalInventories.containsKey(id); } public UniversalBlockMenu getUniversalInventory(Block block) { @@ -642,7 +642,7 @@ public class BlockStorage { } public UniversalBlockMenu getUniversalInventory(String id) { - return universal_inventories.get(id); + return universalInventories.get(id); } public static BlockMenu getInventory(Block b) { @@ -659,7 +659,7 @@ public class BlockStorage { public static Config getChunkInfo(Chunk chunk) { try { Config cfg = new Config("data-storage/Slimefun/temp.yml"); - if (!map_chunks.containsKey(serializeChunk(chunk))) return cfg; + if (!mapChunks.containsKey(serializeChunk(chunk))) return cfg; for (Map.Entry entry: parseJSON(getJSONData(chunk)).entrySet()) { cfg.setValue(entry.getKey(), entry.getValue()); @@ -680,7 +680,7 @@ public class BlockStorage { } public static boolean hasChunkInfo(Chunk chunk) { - return map_chunks.containsKey(serializeChunk(chunk)); + return mapChunks.containsKey(serializeChunk(chunk)); } public static void setChunkInfo(Chunk chunk, String key, String value) { @@ -693,9 +693,9 @@ public class BlockStorage { json.add(path, new JsonPrimitive(cfg.getString(path))); } - map_chunks.put(serializeChunk(chunk), json.toString()); + mapChunks.put(serializeChunk(chunk), json.toString()); - chunk_changes++; + chunkChanges++; } public static String getChunkInfo(Chunk chunk, String key) { @@ -707,7 +707,7 @@ public class BlockStorage { } public static void clearChunkInfo(Chunk chunk) { - map_chunks.remove(serializeChunk(chunk)); + mapChunks.remove(serializeChunk(chunk)); } public static String getBlockInfoAsJson(Block block) { diff --git a/src/me/mrCookieSlime/Slimefun/api/PlayerProfile.java b/src/me/mrCookieSlime/Slimefun/api/PlayerProfile.java index 5b30bc2b0..80fb07df8 100644 --- a/src/me/mrCookieSlime/Slimefun/api/PlayerProfile.java +++ b/src/me/mrCookieSlime/Slimefun/api/PlayerProfile.java @@ -161,7 +161,7 @@ public final class PlayerProfile { } public String getTitle() { - List titles = SlimefunStartup.instance.getSettings().RESEARCHES_TITLES; + List titles = SlimefunStartup.instance.getSettings().Researches_TITLES; int index = Math.round(Float.valueOf(String.valueOf(Math.round(((researches.size() * 100.0F) / Research.list().size()) * 100.0F) / 100.0F)) / 100.0F) * titles.size(); if (index > 0) index--; diff --git a/src/me/mrCookieSlime/Slimefun/api/Slimefun.java b/src/me/mrCookieSlime/Slimefun/api/Slimefun.java index 7e30f866c..ca9e0fddb 100644 --- a/src/me/mrCookieSlime/Slimefun/api/Slimefun.java +++ b/src/me/mrCookieSlime/Slimefun/api/Slimefun.java @@ -26,7 +26,7 @@ import me.mrCookieSlime.Slimefun.Setup.Messages; */ public class Slimefun { - public static Map> guide_handlers = new HashMap<>(); + public static Map> guideHandlers = new HashMap<>(); /** * Instance of the GPSNetwork. @@ -41,13 +41,13 @@ public class Slimefun { /** * Lists all the registered categories. */ - public static List current_categories = new ArrayList<>(); + public static List currentCategories = new ArrayList<>(); public static void registerGuideHandler(GuideHandler handler) { List handlers = new ArrayList<>(); - if (guide_handlers.containsKey(handler.getTier())) handlers = guide_handlers.get(handler.getTier()); + if (guideHandlers.containsKey(handler.getTier())) handlers = guideHandlers.get(handler.getTier()); handlers.add(handler); - guide_handlers.put(handler.getTier(), handlers); + guideHandlers.put(handler.getTier(), handlers); } /** @@ -270,7 +270,7 @@ public class Slimefun { * Returns a list of all the ItemStacks representing the registered categories. * * @return the list of the display items of all the registered categories. - * @see #current_categories + * @see #currentCategories */ public static List listCategories() { List items = new ArrayList<>(); @@ -348,6 +348,6 @@ public class Slimefun { } public static List getGuideHandlers(int tier) { - return guide_handlers.containsKey(tier) ? guide_handlers.get(tier): new ArrayList<>(); + return guideHandlers.containsKey(tier) ? guideHandlers.get(tier): new ArrayList<>(); } } \ No newline at end of file diff --git a/src/me/mrCookieSlime/Slimefun/api/energy/ChargableBlock.java b/src/me/mrCookieSlime/Slimefun/api/energy/ChargableBlock.java index 6bff96a18..1193beeeb 100644 --- a/src/me/mrCookieSlime/Slimefun/api/energy/ChargableBlock.java +++ b/src/me/mrCookieSlime/Slimefun/api/energy/ChargableBlock.java @@ -18,17 +18,17 @@ import org.bukkit.block.Skull; public class ChargableBlock { - public static Map max_charges = new HashMap<>(); + public static Map maxCharges = new HashMap<>(); public static Set rechargeable = new HashSet<>(); public static Set capacitors = new HashSet<>(); public static void registerChargableBlock(String id, int capacity, boolean recharge) { - max_charges.put(id, capacity); + maxCharges.put(id, capacity); if (recharge) rechargeable.add(id); } public static void registerCapacitor(String id, int capacity) { - max_charges.put(id, capacity); + maxCharges.put(id, capacity); rechargeable.add(id); capacitors.add(id); } @@ -39,13 +39,13 @@ public class ChargableBlock { public static boolean isChargable(Location l) { if (!BlockStorage.hasBlockInfo(l)) return false; - return max_charges.containsKey(BlockStorage.checkID(l)); + return maxCharges.containsKey(BlockStorage.checkID(l)); } public static boolean isRechargable(Block b) { if (!BlockStorage.hasBlockInfo(b)) return false; String id = BlockStorage.checkID(b); - return max_charges.containsKey(id) && rechargeable.contains(id); + return maxCharges.containsKey(id) && rechargeable.contains(id); } public static boolean isCapacitor(Block b) { @@ -63,7 +63,7 @@ public class ChargableBlock { public static int getDefaultCapacity(Location l) { String id = BlockStorage.checkID(l); - return id == null ? 0: max_charges.get(id); + return id == null ? 0: maxCharges.get(id); } public static int getCharge(Block b) { diff --git a/src/me/mrCookieSlime/Slimefun/api/energy/EnergyNet.java b/src/me/mrCookieSlime/Slimefun/api/energy/EnergyNet.java index 8be820257..cc694bf9b 100644 --- a/src/me/mrCookieSlime/Slimefun/api/energy/EnergyNet.java +++ b/src/me/mrCookieSlime/Slimefun/api/energy/EnergyNet.java @@ -26,40 +26,40 @@ public class EnergyNet extends Network { private static final int RANGE = 6; - public static Set machines_input = new HashSet<>(); - public static Set machines_storage = new HashSet<>(); - public static Set machines_output = new HashSet<>(); + public static Set machinesInput = new HashSet<>(); + public static Set machinesStorage = new HashSet<>(); + public static Set machinesOutput = new HashSet<>(); public static NetworkComponent getComponent(Block b) { return getComponent(b.getLocation()); } public static NetworkComponent getComponent(String id) { - if (machines_input.contains(id)) return NetworkComponent.SOURCE; - if (machines_storage.contains(id)) return NetworkComponent.DISTRIBUTOR; - if (machines_output.contains(id)) return NetworkComponent.CONSUMER; + if (machinesInput.contains(id)) return NetworkComponent.SOURCE; + if (machinesStorage.contains(id)) return NetworkComponent.DISTRIBUTOR; + if (machinesOutput.contains(id)) return NetworkComponent.CONSUMER; return NetworkComponent.NONE; } public static NetworkComponent getComponent(Location l) { if (!BlockStorage.hasBlockInfo(l)) return NetworkComponent.NONE; String id = BlockStorage.checkID(l); - if (machines_input.contains(id)) return NetworkComponent.SOURCE; - if (machines_storage.contains(id)) return NetworkComponent.DISTRIBUTOR; - if (machines_output.contains(id)) return NetworkComponent.CONSUMER; + if (machinesInput.contains(id)) return NetworkComponent.SOURCE; + if (machinesStorage.contains(id)) return NetworkComponent.DISTRIBUTOR; + if (machinesOutput.contains(id)) return NetworkComponent.CONSUMER; return NetworkComponent.NONE; } public static void registerComponent(String id, NetworkComponent component) { switch (component) { case CONSUMER: - machines_output.add(id); + machinesOutput.add(id); break; case DISTRIBUTOR: - machines_storage.add(id); + machinesStorage.add(id); break; case SOURCE: - machines_input.add(id); + machinesInput.add(id); break; default: break; diff --git a/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoNet.java b/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoNet.java index 82bd4d4de..220b47f65 100644 --- a/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoNet.java +++ b/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoNet.java @@ -34,11 +34,11 @@ import me.mrCookieSlime.Slimefun.holograms.CargoHologram; public class CargoNet extends Network { - public static boolean EXTRA_CHANNELS = false; + public static boolean extraChannels = false; private static final int RANGE = 5; public static List faces = Arrays.asList(BlockFace.NORTH, BlockFace.EAST, BlockFace.SOUTH, BlockFace.WEST); - public static Map round_robin = new HashMap<>(); + public static Map roundRobin = new HashMap<>(); public static Set requests = new HashSet<>(); private static int[] slots = new int[] {19, 20, 21, 28, 29, 30, 37, 38, 39}; @@ -192,7 +192,7 @@ public class CargoNet extends Network { self.display(); } //Chest Terminal Code - if (EXTRA_CHANNELS) { + if (extraChannels) { for (Location bus : imports) { BlockMenu menu = BlockStorage.getInventory(bus); @@ -345,11 +345,11 @@ public class CargoNet extends Network { List outputlist = new ArrayList<>(output.get(frequency)); if (roundrobin) { - if (!round_robin.containsKey(input)) { - round_robin.put(input, 0); + if (!roundRobin.containsKey(input)) { + roundRobin.put(input, 0); } - int cIndex = round_robin.get(input); + int cIndex = roundRobin.get(input); if (cIndex < outputlist.size()) { for (int i = 0; i < cIndex; i++) { @@ -361,7 +361,7 @@ public class CargoNet extends Network { } else cIndex = 1; - round_robin.put(input, cIndex); + roundRobin.put(input, cIndex); } for (Location out : outputlist) { @@ -389,7 +389,7 @@ public class CargoNet extends Network { } } //Chest Terminal Code - if (EXTRA_CHANNELS) { + if (extraChannels) { List items = new ArrayList<>(); for (Location l: providers) { Block target = getAttachedBlock(l.getBlock()); diff --git a/src/me/mrCookieSlime/Slimefun/api/network/Network.java b/src/me/mrCookieSlime/Slimefun/api/network/Network.java index 44a974b55..fce90e4bb 100644 --- a/src/me/mrCookieSlime/Slimefun/api/network/Network.java +++ b/src/me/mrCookieSlime/Slimefun/api/network/Network.java @@ -14,10 +14,10 @@ import me.mrCookieSlime.Slimefun.SlimefunStartup; public abstract class Network { - private static List NETWORK_LIST = new ArrayList<>(); + private static List networkList = new ArrayList<>(); public static T getNetworkFromLocation(Location l, Class type) { - for(Network n: NETWORK_LIST) { + for(Network n: networkList) { if(type.isInstance(n) && n.connectsTo(l)) { return type.cast(n); } @@ -27,7 +27,7 @@ public abstract class Network { public static List getNetworksFromLocation(Location l, Class type) { List ret = new ArrayList<>(); - for(Network n: NETWORK_LIST) { + for(Network n: networkList) { if(type.isInstance(n) && n.connectsTo(l)) { ret.add(type.cast(n)); } @@ -36,11 +36,11 @@ public abstract class Network { } public static void registerNetwork(Network n) { - NETWORK_LIST.add(n); + networkList.add(n); } public static void unregisterNetwork(Network n) { - NETWORK_LIST.remove(n); + networkList.remove(n); } public static void handleAllNetworkLocationUpdate(Location l) { diff --git a/src/me/mrCookieSlime/Slimefun/hooks/github/GitHubSetup.java b/src/me/mrCookieSlime/Slimefun/hooks/github/GitHubSetup.java index e640233fc..ea3c9bfc6 100644 --- a/src/me/mrCookieSlime/Slimefun/hooks/github/GitHubSetup.java +++ b/src/me/mrCookieSlime/Slimefun/hooks/github/GitHubSetup.java @@ -120,7 +120,7 @@ public final class GitHubSetup { SlimefunGuide.issues = object.get("open_issues_count").getAsInt(); SlimefunGuide.forks = object.get("forks").getAsInt(); SlimefunGuide.stars = object.get("stargazers_count").getAsInt(); - SlimefunGuide.last_update = IntegerFormat.parseGitHubDate(object.get("pushed_at").getAsString()); + SlimefunGuide.lastUpdate = IntegerFormat.parseGitHubDate(object.get("pushed_at").getAsString()); } @Override @@ -148,7 +148,7 @@ public final class GitHubSetup { @Override public void onSuccess(JsonElement element) { JsonObject object = element.getAsJsonObject(); - SlimefunGuide.code_bytes = object.get("Java").getAsInt(); + SlimefunGuide.codeBytes = object.get("Java").getAsInt(); } @Override diff --git a/src/me/mrCookieSlime/Slimefun/utils/Settings.java b/src/me/mrCookieSlime/Slimefun/utils/Settings.java index 76081b083..4262a4a12 100644 --- a/src/me/mrCookieSlime/Slimefun/utils/Settings.java +++ b/src/me/mrCookieSlime/Slimefun/utils/Settings.java @@ -6,9 +6,9 @@ import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config; public final class Settings { - public boolean RESEARCHES_ENABLED; - public boolean RESEARCHES_FREE_IN_CREATIVE; - public List RESEARCHES_TITLES; + public boolean Researches_ENABLED; + public boolean Researches_FREE_IN_CREATIVE; + public List Researches_TITLES; public int BLOCK_LOADING_INFO_DELAY; public int BLOCK_AUTO_SAVE_DELAY; @@ -24,8 +24,8 @@ public final class Settings { public int SMELTERY_FIRE_BREAK_CHANCE; public Settings(Config cfg) { - RESEARCHES_FREE_IN_CREATIVE = cfg.getBoolean("options.allow-free-creative-research"); - RESEARCHES_TITLES = cfg.getStringList("research-ranks"); + Researches_FREE_IN_CREATIVE = cfg.getBoolean("options.allow-free-creative-research"); + Researches_TITLES = cfg.getStringList("research-ranks"); BLOCK_LOADING_INFO_DELAY = cfg.getInt("URID.info-delay"); BLOCK_AUTO_SAVE_DELAY = cfg.getInt("options.auto-save-delay-in-minutes"); From 24ec50e07263ebdec1d034d79191b9b5ff6c4159 Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Fri, 30 Aug 2019 23:11:37 +0200 Subject: [PATCH 083/169] Removed even more empty methods --- .../machines/AnimalGrowthAccelerator.java | 4 ---- .../SlimefunItem/machines/AutoAnvil.java | 3 --- .../SlimefunItem/machines/AutoBreeder.java | 8 +------- .../machines/AutoDisenchanter.java | 3 --- .../SlimefunItem/machines/AutoDrier.java | 3 --- .../SlimefunItem/machines/AutoEnchanter.java | 3 --- .../SlimefunItem/machines/ChargingBench.java | 18 +++++------------- .../machines/CropGrowthAccelerator.java | 4 ---- .../machines/ElectricDustWasher.java | 3 --- .../SlimefunItem/machines/ElectricFurnace.java | 3 ++- .../SlimefunItem/machines/ElectricGoldPan.java | 3 --- .../machines/ElectrifiedCrucible.java | 2 ++ .../SlimefunItem/machines/FluidPump.java | 5 ----- .../machines/HeatedPressureChamber.java | 4 ---- .../Objects/SlimefunItem/machines/OilPump.java | 8 -------- .../machines/ReactorAccessPort.java | 5 ----- .../SlimefunItem/machines/Refinery.java | 3 --- .../SlimefunItem/machines/TrashCan.java | 4 ---- .../SlimefunItem/machines/XPCollector.java | 4 ---- 19 files changed, 10 insertions(+), 80 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AnimalGrowthAccelerator.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AnimalGrowthAccelerator.java index 2d6e4994f..b21f0dbe8 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AnimalGrowthAccelerator.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AnimalGrowthAccelerator.java @@ -42,10 +42,6 @@ public class AnimalGrowthAccelerator extends SlimefunItem { constructMenu(this); } - @Override - public void newInstance(BlockMenu menu, Block b) { - } - @Override public boolean canOpen(Block b, Player p) { return p.hasPermission("slimefun.inventory.bypass") || CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoAnvil.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoAnvil.java index 755ce962d..0a682ba43 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoAnvil.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoAnvil.java @@ -37,9 +37,6 @@ public abstract class AutoAnvil extends AContainer { public ItemStack getProgressBar() { return new ItemStack(Material.IRON_PICKAXE); } - - @Override - public void registerDefaultRecipes() {} @Override public int getSpeed() { diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoBreeder.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoBreeder.java index c11984eea..043c6ea5e 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoBreeder.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoBreeder.java @@ -42,10 +42,6 @@ public class AutoBreeder extends SlimefunItem { constructMenu(this); } - @Override - public void newInstance(BlockMenu menu, Block b) { - } - @Override public boolean canOpen(Block b, Player p) { return p.hasPermission("slimefun.inventory.bypass") || CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true); @@ -79,9 +75,7 @@ public class AutoBreeder extends SlimefunItem { protected void constructMenu(BlockMenuPreset preset) { for (int i : border) { - preset.addItem(i, new CustomItem(new ItemStack(Material.CYAN_STAINED_GLASS_PANE), " "), - (p, slot, item, action) -> false - ); + preset.addItem(i, new CustomItem(new ItemStack(Material.CYAN_STAINED_GLASS_PANE), " "), (p, slot, item, action) -> false); } } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoDisenchanter.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoDisenchanter.java index c48bef084..32e275c96 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoDisenchanter.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoDisenchanter.java @@ -46,9 +46,6 @@ public class AutoDisenchanter extends AContainer { return new ItemStack(Material.DIAMOND_CHESTPLATE); } - @Override - public void registerDefaultRecipes() {} - @Override public int getEnergyConsumption() { return 9; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoDrier.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoDrier.java index a28129d4a..abb1ed2d5 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoDrier.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoDrier.java @@ -35,9 +35,6 @@ public class AutoDrier extends AContainer { return new ItemStack(Material.FLINT_AND_STEEL); } - @Override - public void registerDefaultRecipes() { } - @Override protected void tick(Block b) { if (isProcessing(b)) { diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoEnchanter.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoEnchanter.java index bb4bdf1af..0e6d14ceb 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoEnchanter.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoEnchanter.java @@ -47,9 +47,6 @@ public class AutoEnchanter extends AContainer { return new ItemStack(Material.GOLDEN_CHESTPLATE); } - @Override - public void registerDefaultRecipes() {} - @Override public int getEnergyConsumption() { return 9; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ChargingBench.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ChargingBench.java index 3fc221bdb..16c3c80ee 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ChargingBench.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ChargingBench.java @@ -1,5 +1,10 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines; +import org.bukkit.Material; +import org.bukkit.block.Block; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; + import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib; import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Objects.Category; @@ -7,15 +12,9 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer; import me.mrCookieSlime.Slimefun.api.BlockStorage; import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock; import me.mrCookieSlime.Slimefun.api.energy.ItemEnergy; -import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset; import me.mrCookieSlime.Slimefun.api.item_transport.ItemTransportFlow; -import org.bukkit.Material; -import org.bukkit.block.Block; -import org.bukkit.entity.Player; -import org.bukkit.inventory.ItemStack; - public class ChargingBench extends AContainer { public ChargingBench(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) { @@ -28,10 +27,6 @@ public class ChargingBench extends AContainer { constructMenu(this); } - @Override - public void newInstance(BlockMenu menu, Block b) { - } - @Override public boolean canOpen(Block b, Player p) { return p.hasPermission("slimefun.inventory.bypass") || CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true); @@ -60,9 +55,6 @@ public class ChargingBench extends AContainer { return 10; } - @Override - public void registerDefaultRecipes() {} - @Override protected void tick(Block b) { if (ChargableBlock.getCharge(b) < getEnergyConsumption()) return; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/CropGrowthAccelerator.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/CropGrowthAccelerator.java index bedb9f84f..ffd9d8fe6 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/CropGrowthAccelerator.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/CropGrowthAccelerator.java @@ -54,10 +54,6 @@ public abstract class CropGrowthAccelerator extends SlimefunItem { constructMenu(this); } - @Override - public void newInstance(BlockMenu menu, Block b) { - } - @Override public boolean canOpen(Block b, Player p) { return p.hasPermission("slimefun.inventory.bypass") || CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricDustWasher.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricDustWasher.java index d15d05cef..6dd036788 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricDustWasher.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricDustWasher.java @@ -39,9 +39,6 @@ public abstract class ElectricDustWasher extends AContainer { public ItemStack getProgressBar() { return new ItemStack(Material.GOLDEN_SHOVEL); } - - @Override - public void registerDefaultRecipes() {} public abstract int getSpeed(); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricFurnace.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricFurnace.java index 12b736ab1..b5ddbc259 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricFurnace.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricFurnace.java @@ -30,8 +30,9 @@ public abstract class ElectricFurnace extends AContainer { } //Bukkit Recipe Iterator does not seem to include _LOG's of any type for charcoal... Manually adding them all. - for(Material mat:Tag.LOGS.getValues()) + for (Material mat:Tag.LOGS.getValues()) { registerRecipe(4, new ItemStack[] {new ItemStack(mat,1)}, new ItemStack[] {new ItemStack(Material.CHARCOAL, 1)}); + } } @Override diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricGoldPan.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricGoldPan.java index efcf6d781..a0eec35ff 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricGoldPan.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricGoldPan.java @@ -37,9 +37,6 @@ public abstract class ElectricGoldPan extends AContainer { public ItemStack getProgressBar() { return new ItemStack(Material.DIAMOND_SHOVEL); } - - @Override - public void registerDefaultRecipes() {} public abstract int getSpeed(); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectrifiedCrucible.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectrifiedCrucible.java index 1afe95e87..9eaa49ab3 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectrifiedCrucible.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectrifiedCrucible.java @@ -18,9 +18,11 @@ public abstract class ElectrifiedCrucible extends AContainer { public void registerDefaultRecipes() { registerRecipe(10, new ItemStack[] {new ItemStack(Material.BUCKET), new ItemStack(Material.COBBLESTONE, 16)}, new ItemStack[]{new ItemStack(Material.LAVA_BUCKET)}); registerRecipe(8, new ItemStack[] {new ItemStack(Material.BUCKET), new ItemStack(Material.TERRACOTTA, 12)}, new ItemStack[]{new ItemStack(Material.LAVA_BUCKET)}); + for (Material coloured_terracotta : MaterialHelper.TerracottaColours){ registerRecipe(8, new ItemStack[] {new ItemStack(Material.BUCKET), new ItemStack(coloured_terracotta, 12)}, new ItemStack[]{new ItemStack(Material.LAVA_BUCKET)}); } + registerRecipe(10, new ItemStack[] {new ItemStack(Material.BUCKET), new ItemStack(Material.OAK_LEAVES, 16)}, new ItemStack[]{new ItemStack(Material.WATER_BUCKET)}); registerRecipe(10, new ItemStack[] {new ItemStack(Material.BUCKET), new ItemStack(Material.BIRCH_LEAVES, 16)}, new ItemStack[]{new ItemStack(Material.WATER_BUCKET)}); registerRecipe(10, new ItemStack[] {new ItemStack(Material.BUCKET), new ItemStack(Material.SPRUCE_LEAVES, 16)}, new ItemStack[]{new ItemStack(Material.WATER_BUCKET)}); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/FluidPump.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/FluidPump.java index 56e2e88bf..75a7648ac 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/FluidPump.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/FluidPump.java @@ -30,7 +30,6 @@ import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.api.BlockStorage; import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock; -import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset; import me.mrCookieSlime.Slimefun.api.item_transport.ItemTransportFlow; @@ -53,10 +52,6 @@ public class FluidPump extends SlimefunItem{ constructMenu(this); } - @Override - public void newInstance(BlockMenu menu, Block b) { - } - @Override public boolean canOpen(Block b, Player p) { return p.hasPermission("slimefun.inventory.bypass") || CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/HeatedPressureChamber.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/HeatedPressureChamber.java index 857cca671..03855b2fd 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/HeatedPressureChamber.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/HeatedPressureChamber.java @@ -45,10 +45,6 @@ public abstract class HeatedPressureChamber extends AContainer { constructMenu(this); } - @Override - public void newInstance(BlockMenu menu, Block b) { - } - @Override public boolean canOpen(Block b, Player p) { return p.hasPermission("slimefun.inventory.bypass") || CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/OilPump.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/OilPump.java index 9ddf1086b..e90fa33ba 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/OilPump.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/OilPump.java @@ -24,7 +24,6 @@ import me.mrCookieSlime.Slimefun.Setup.Messages; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.api.BlockStorage; import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock; -import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset; import me.mrCookieSlime.Slimefun.api.item_transport.ItemTransportFlow; @@ -40,10 +39,6 @@ public abstract class OilPump extends AContainer { constructMenu(this); } - @Override - public void newInstance(BlockMenu menu, Block b) { - } - @Override public boolean canOpen(Block b, Player p) { if (!(p.hasPermission("slimefun.inventory.bypass") || CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true))) { @@ -80,9 +75,6 @@ public abstract class OilPump extends AContainer { return new ItemStack(Material.DIAMOND_SHOVEL); } - @Override - public void registerDefaultRecipes() {} - @Override protected void tick(Block b) { if (isProcessing(b)) { diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ReactorAccessPort.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ReactorAccessPort.java index 7628e788d..a82089202 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ReactorAccessPort.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ReactorAccessPort.java @@ -42,11 +42,6 @@ public class ReactorAccessPort extends SlimefunItem { constructMenu(this); } - @Override - public void newInstance(BlockMenu menu, Block b) { - - } - @Override public boolean canOpen(Block b, Player p) { if(p.hasPermission("slimefun.inventory.bypass") || CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(),b,true)) { diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/Refinery.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/Refinery.java index fb84f4f6c..4fe3a1eeb 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/Refinery.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/Refinery.java @@ -36,9 +36,6 @@ public abstract class Refinery extends AContainer { public ItemStack getProgressBar() { return new ItemStack(Material.FLINT_AND_STEEL); } - - @Override - public void registerDefaultRecipes() {} @Override public String getMachineIdentifier() { diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/TrashCan.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/TrashCan.java index 1f1dd72f2..874160095 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/TrashCan.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/TrashCan.java @@ -30,10 +30,6 @@ public class TrashCan extends SlimefunItem { constructMenu(this); } - @Override - public void newInstance(final BlockMenu menu, final Block b) { - } - @Override public boolean canOpen(Block b, Player p) { return true; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/XPCollector.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/XPCollector.java index cd7d83f4a..8acec221c 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/XPCollector.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/XPCollector.java @@ -41,10 +41,6 @@ public class XPCollector extends SlimefunItem { constructMenu(this); } - @Override - public void newInstance(BlockMenu menu, Block b) { - } - @Override public boolean canOpen(Block b, Player p) { return p.hasPermission("slimefun.inventory.bypass") || CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true); From 3da4dce1f656593eae0cc0bb4ec9c8a8725a57b9 Mon Sep 17 00:00:00 2001 From: Sfiguz7 Date: Fri, 30 Aug 2019 23:12:47 +0200 Subject: [PATCH 084/169] Fixes --- src/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java | 4 ++-- src/me/mrCookieSlime/Slimefun/Objects/Research.java | 4 ++-- src/me/mrCookieSlime/Slimefun/Setup/Files.java | 4 ++-- src/me/mrCookieSlime/Slimefun/Setup/ResearchSetup.java | 2 +- src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java | 2 +- src/me/mrCookieSlime/Slimefun/SlimefunGuide.java | 6 +++--- src/me/mrCookieSlime/Slimefun/SlimefunStartup.java | 8 ++++---- .../Slimefun/androids/ProgrammableAndroid.java | 4 ++-- src/me/mrCookieSlime/Slimefun/androids/ScriptPart.java | 2 +- src/me/mrCookieSlime/Slimefun/api/PlayerProfile.java | 8 ++++---- src/me/mrCookieSlime/Slimefun/utils/Settings.java | 10 +++++----- src/plugin.yml | 2 +- 12 files changed, 28 insertions(+), 28 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java b/src/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java index 9ce7bf58f..af280b84e 100644 --- a/src/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java +++ b/src/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java @@ -328,7 +328,7 @@ public final class SlimefunItems { public static final ItemStack ELECTRIC_MOTOR = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOGNiY2EwMTJmNjdlNTRkZTlhZWU3MmZmNDI0ZTA1NmMyYWU1OGRlNWVhY2M5NDlhYjJiY2Q5NjgzY2VjIn19fQ=="), "&cElectric Motor"); public static final ItemStack CARGO_MOTOR = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOGNiY2EwMTJmNjdlNTRkZTlhZWU3MmZmNDI0ZTA1NmMyYWU1OGRlNWVhY2M5NDlhYjJiY2Q5NjgzY2VjIn19fQ=="), "&3Cargo Motor"); public static final ItemStack SCROLL_OF_DIMENSIONAL_TELEPOSITION = new CustomItem(Material.PAPER, "&6Scroll of Dimensional Teleposition", "", "&cThis Scroll is capable of creating", "&ca temporary black Hole which pulls", "&cnearby Entities into itself and sends", "&cthem into another Dimension where", "&ceverything is turned around", "", "&rIn other words: Makes Entities turn by 180 Degrees"); - public static final ItemStack TOME_OF_KNOWLEDGE_SHARING = new CustomItem(Material.BOOK, "&6Tome of Knowledge Sharing", "&7Owner: &bNone", "", "&eRight Click&7 to bind this Tome to yourself", "", "", "&eRight Click&7 to obtain all Researches by", "&7the previously assigned Owner"); + public static final ItemStack TOME_OF_KNOWLEDGE_SHARING = new CustomItem(Material.BOOK, "&6Tome of Knowledge Sharing", "&7Owner: &bNone", "", "&eRight Click&7 to bind this Tome to yourself", "", "", "&eRight Click&7 to obtain all researches by", "&7the previously assigned Owner"); public static final ItemStack HARDENED_GLASS = new CustomItem(Material.LIGHT_GRAY_STAINED_GLASS, "&7Hardened Glass", "", "&rWithstands Explosions"); public static final ItemStack WITHER_PROOF_OBSIDIAN = new CustomItem(Material.OBSIDIAN, "&5Wither-Proof Obsidian", "", "&rWithstands Explosions", "&rWithstands Wither Bosses"); public static final ItemStack WITHER_PROOF_GLASS = new CustomItem(Material.PURPLE_STAINED_GLASS, "&5Wither-Proof Glass", "", "&rWithstands Explosions", "&rWithstands Wither Bosses"); @@ -637,7 +637,7 @@ public final class SlimefunItems { public static final ItemStack GPS_EMERGENCY_TRANSMITTER = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjBjOWMxYTAyMmY0MGI3M2YxNGI0Y2JhMzdjNzE4YzZhNTMzZjNhMjg2NGI2NTM2ZDVmNDU2OTM0Y2MxZiJ9fX0="), "&cGPS Emergency Transmitter", "", "&rCarrying this in your Inventory", "&rautomatically sets a Waypoint", "&rat your Location when you die."); public static final ItemStack ANDROID_INTERFACE_FUEL = new CustomItem(Material.DISPENSER, "&7Android Interface &c(Fuel)", "", "&rItems stored in this Interface", "&rwill be inserted into an Android's Fuel Slot", "&rwhen its Script tells them to do so"); - public static final ItemStack ANDROID_INTERFACE_items = new CustomItem(Material.DISPENSER, "&7Android Interface &9(Items)", "", "&rItems stored in an Android's Inventory", "&rwill be inserted into this Interface", "&rwhen its Script tells them to do so"); + public static final ItemStack ANDROID_INTERFACE_ITEMS = new CustomItem(Material.DISPENSER, "&7Android Interface &9(Items)", "", "&rItems stored in an Android's Inventory", "&rwill be inserted into this Interface", "&rwhen its Script tells them to do so"); public static final ItemStack GPS_GEO_SCANNER = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMmFkOGNmZWIzODdhNTZlM2U1YmNmODUzNDVkNmE0MTdiMjQyMjkzODg3ZGIzY2UzYmE5MWZhNDA5YjI1NGI4NiJ9fX0="), "&bGPS Geo-Scanner", "", "&rScans a Chunk for natural Resources", "&rsuch as &8Oil"); public static final ItemStack OIL_PUMP = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYWZlMWEwNDBhNDI1ZTMxYTQ2ZDRmOWE5Yjk4MDZmYTJmMGM0N2VlODQ3MTFjYzE5MzJmZDhhYjMyYjJkMDM4In19fQ=="), "&rOil Pump", "", "&7Pumps up Oil and fills it into Buckets", "", "&c&l! &cMake sure to Geo-Scan the Chunk first"); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/Research.java b/src/me/mrCookieSlime/Slimefun/Objects/Research.java index f59f6d417..c832015d7 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/Research.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/Research.java @@ -80,7 +80,7 @@ public class Research { } public boolean isEnabled() { - return SlimefunStartup.instance.getSettings().Researches_ENABLED && enabled; + return SlimefunStartup.instance.getSettings().RESEARCHES_ENABLED && enabled; } /** @@ -214,7 +214,7 @@ public class Research { */ public boolean canUnlock(Player p) { if (!isEnabled()) return true; - return (p.getGameMode() == GameMode.CREATIVE && SlimefunStartup.instance.getSettings().Researches_FREE_IN_CREATIVE) || p.getLevel() >= this.cost; + return (p.getGameMode() == GameMode.CREATIVE && SlimefunStartup.instance.getSettings().RESEARCHES_FREE_IN_CREATIVE) || p.getLevel() >= this.cost; } /** diff --git a/src/me/mrCookieSlime/Slimefun/Setup/Files.java b/src/me/mrCookieSlime/Slimefun/Setup/Files.java index 686022578..84c480030 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/Files.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/Files.java @@ -6,14 +6,14 @@ public final class Files { private Files() {} - public static File Researches = new File("plugins/Slimefun/Researches.yml"); + public static File researches = new File("plugins/Slimefun/Researches.yml"); public static File config = new File("plugins/Slimefun/config.yml"); public static File items = new File("plugins/Slimefun/Items.yml"); public static File database = new File("data-storage/Slimefun/Players"); public static File whitelist = new File("plugins/Slimefun/whitelist.yml"); public static void cleanup() { - if (!Researches.exists()) { + if (!researches.exists()) { System.err.println("###############################################"); System.err.println("############## = - INFO - = #################"); System.err.println("###############################################"); diff --git a/src/me/mrCookieSlime/Slimefun/Setup/ResearchSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/ResearchSetup.java index 737363505..5416778e5 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/ResearchSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/ResearchSetup.java @@ -177,7 +177,7 @@ public final class ResearchSetup { Slimefun.registerResearch(new Research(177, "Basic GPS Setup", 28), SlimefunItems.GPS_TRANSMITTER, SlimefunItems.GPS_CONTROL_PANEL, SlimefunItems.GPS_MARKER_TOOL); Slimefun.registerResearch(new Research(178, "GPS Emergency Waypoint", 30), SlimefunItems.GPS_EMERGENCY_TRANSMITTER); Slimefun.registerResearch(new Research(179, "Programmable Androids", 50), SlimefunItems.PROGRAMMABLE_ANDROID, SlimefunItems.PROGRAMMABLE_ANDROID_FARMER, SlimefunItems.PROGRAMMABLE_ANDROID_BUTCHER, SlimefunItems.PROGRAMMABLE_ANDROID_FISHERMAN, SlimefunItems.PROGRAMMABLE_ANDROID_MINER, SlimefunItems.PROGRAMMABLE_ANDROID_WOODCUTTER); - Slimefun.registerResearch(new Research(180, "Android Interfaces", 26), SlimefunItems.ANDROID_INTERFACE_FUEL, SlimefunItems.ANDROID_INTERFACE_items); + Slimefun.registerResearch(new Research(180, "Android Interfaces", 26), SlimefunItems.ANDROID_INTERFACE_FUEL, SlimefunItems.ANDROID_INTERFACE_ITEMS); Slimefun.registerResearch(new Research(181, "GEO-Scans", 30), SlimefunItems.GPS_GEO_SCANNER); Slimefun.registerResearch(new Research(182, "Combustion Reactor", 38), SlimefunItems.COMBUSTION_REACTOR); Slimefun.registerResearch(new Research(183, "Teleporter Base Components", 42), SlimefunItems.GPS_TELEPORTATION_MATRIX, SlimefunItems.GPS_TELEPORTER_PYLON); diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java index 31a872e5b..70eb532b4 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java @@ -3294,7 +3294,7 @@ public final class SlimefunSetup { } .register(true); - new SlimefunItem(Categories.ELECTRICITY, SlimefunItems.ANDROID_INTERFACE_items, "ANDROID_INTERFACE_items", RecipeType.ENHANCED_CRAFTING_TABLE, + new SlimefunItem(Categories.ELECTRICITY, SlimefunItems.ANDROID_INTERFACE_ITEMS, "ANDROID_INTERFACE_ITEMS", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {SlimefunItems.PLASTIC_SHEET, SlimefunItems.PLASTIC_SHEET, SlimefunItems.PLASTIC_SHEET, SlimefunItems.PLASTIC_SHEET, SlimefunItems.BASIC_CIRCUIT_BOARD, new ItemStack(Material.BLUE_STAINED_GLASS), SlimefunItems.PLASTIC_SHEET, SlimefunItems.PLASTIC_SHEET, SlimefunItems.PLASTIC_SHEET}) .register(true); diff --git a/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java b/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java index 2cd8ef115..4d194e17f 100644 --- a/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java +++ b/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java @@ -567,7 +567,7 @@ public final class SlimefunGuide { openCategory(p, category, true, selected_page, book); } else { - if (!(p.getGameMode() == GameMode.CREATIVE && SlimefunStartup.instance.getSettings().Researches_FREE_IN_CREATIVE)) { + if (!(p.getGameMode() == GameMode.CREATIVE && SlimefunStartup.instance.getSettings().RESEARCHES_FREE_IN_CREATIVE)) { p.setLevel(p.getLevel() - research.getCost()); } @@ -706,12 +706,12 @@ public final class SlimefunGuide { openCategory(p, category, true, selected_page, book); } else { - if (!(pl.getGameMode() == GameMode.CREATIVE && SlimefunStartup.instance.getSettings().Researches_FREE_IN_CREATIVE)) { + if (!(pl.getGameMode() == GameMode.CREATIVE && SlimefunStartup.instance.getSettings().RESEARCHES_FREE_IN_CREATIVE)) { pl.setLevel(pl.getLevel() - research.getCost()); } if (pl.getGameMode() == GameMode.CREATIVE) { - research.unlock(pl, SlimefunStartup.instance.getSettings().Researches_FREE_IN_CREATIVE); + research.unlock(pl, SlimefunStartup.instance.getSettings().RESEARCHES_FREE_IN_CREATIVE); openCategory(pl, category, survival, selected_page, book); } else { diff --git a/src/me/mrCookieSlime/Slimefun/SlimefunStartup.java b/src/me/mrCookieSlime/Slimefun/SlimefunStartup.java index 246d0929f..a69222ae6 100644 --- a/src/me/mrCookieSlime/Slimefun/SlimefunStartup.java +++ b/src/me/mrCookieSlime/Slimefun/SlimefunStartup.java @@ -145,7 +145,7 @@ public final class SlimefunStartup extends JavaPlugin { utils.setupConfig(); // Loading all extra configs - researches = new Config(Files.Researches); + researches = new Config(Files.researches); items = new Config(Files.items); whitelist = new Config(Files.whitelist); @@ -191,10 +191,10 @@ public final class SlimefunStartup extends JavaPlugin { MiscSetup.loadDescriptions(); settings = new Settings(config); - settings.Researches_ENABLED = getResearchCfg().getBoolean("enable-researching"); + settings.RESEARCHES_ENABLED = getResearchCfg().getBoolean("enable-researching"); settings.SMELTERY_FIRE_BREAK_CHANCE = (Integer) Slimefun.getItemValue("SMELTERY", "chance.fireBreak"); - System.out.println("[Slimefun] Loading Researches..."); + System.out.println("[Slimefun] Loading researches..."); ResearchSetup.setupResearches(); MiscSetup.setupMisc(); @@ -365,7 +365,7 @@ public final class SlimefunStartup extends JavaPlugin { Files.config = null; Files.database = null; Files.items = null; - Files.Researches = null; + Files.researches = null; Files.whitelist = null; MultiBlock.list = null; Research.list = null; diff --git a/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java b/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java index d0e2f672f..1b415be18 100644 --- a/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java +++ b/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java @@ -351,8 +351,8 @@ public abstract class ProgrammableAndroid extends SlimefunItem { case MOVE_AND_DIG_DOWN: movedig(b, face, b.getRelative(BlockFace.DOWN)); break; - case INTERFACE_items: - if (BlockStorage.check(b.getRelative(face), "ANDROID_INTERFACE_items") && b.getRelative(face).getState() instanceof Dispenser) { + case INTERFACE_ITEMS: + if (BlockStorage.check(b.getRelative(face), "ANDROID_INTERFACE_ITEMS") && b.getRelative(face).getState() instanceof Dispenser) { Dispenser d = (Dispenser) b.getRelative(face).getState(); for (int slot: getOutputSlots()) { ItemStack stack = BlockStorage.getInventory(b).getItemInSlot(slot); diff --git a/src/me/mrCookieSlime/Slimefun/androids/ScriptPart.java b/src/me/mrCookieSlime/Slimefun/androids/ScriptPart.java index b7db5f23b..eeb93a022 100644 --- a/src/me/mrCookieSlime/Slimefun/androids/ScriptPart.java +++ b/src/me/mrCookieSlime/Slimefun/androids/ScriptPart.java @@ -51,7 +51,7 @@ public enum ScriptPart { FARM_EXOTIC_DOWN(AndroidType.ADVANCED_FARMER, "&bAdvanced Harvest and Replant &7(Block underneath)", "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMmQ0Mjk2YjMzM2QyNTMxOWFmM2YzMzA1MTc5N2Y5ZTZkODIxY2QxOWEwMTRmYjcxMzdiZWI4NmE0ZTllOTYifX19"), // Action - Interface - INTERFACE_items(AndroidType.NONE, "&9Push Inventory Contents to the faced Interface", "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTBhNGRiZjY2MjVjNDJiZTU3YThiYTJjMzMwOTU0YTc2YmRmMjI3ODU1NDBlODdhNWM5NjcyNjg1MjM4ZWMifX19"), + INTERFACE_ITEMS(AndroidType.NONE, "&9Push Inventory Contents to the faced Interface", "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTBhNGRiZjY2MjVjNDJiZTU3YThiYTJjMzMwOTU0YTc2YmRmMjI3ODU1NDBlODdhNWM5NjcyNjg1MjM4ZWMifX19"), INTERFACE_FUEL(AndroidType.NONE, "&cPull Fuel from the faced Interface", "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMjQzMmY1MjgyYTUwNzQ1YjkxMmJlMTRkZWRhNTgxYmQ0YTA5Yjk3N2EzYzMyZDdlOTU3ODQ5MWZlZThmYTcifX19"); diff --git a/src/me/mrCookieSlime/Slimefun/api/PlayerProfile.java b/src/me/mrCookieSlime/Slimefun/api/PlayerProfile.java index 80fb07df8..0004ed17f 100644 --- a/src/me/mrCookieSlime/Slimefun/api/PlayerProfile.java +++ b/src/me/mrCookieSlime/Slimefun/api/PlayerProfile.java @@ -74,7 +74,7 @@ public final class PlayerProfile { } /** - * This method will save the Player's Researches and Backpacks to the hard drive + * This method will save the Player's researches and Backpacks to the hard drive */ public void save() { for (BackpackInventory backpack: backpacks.values()) { @@ -116,9 +116,9 @@ public final class PlayerProfile { } /** - * This Method will return all Researches that this Player has unlocked + * This Method will return all researches that this Player has unlocked * - * @return A Hashset of all Researches this Player has unlocked + * @return A Hashset of all researches this Player has unlocked */ public Set getResearches() { return researches; @@ -161,7 +161,7 @@ public final class PlayerProfile { } public String getTitle() { - List titles = SlimefunStartup.instance.getSettings().Researches_TITLES; + List titles = SlimefunStartup.instance.getSettings().RESEARCHES_TITLES; int index = Math.round(Float.valueOf(String.valueOf(Math.round(((researches.size() * 100.0F) / Research.list().size()) * 100.0F) / 100.0F)) / 100.0F) * titles.size(); if (index > 0) index--; diff --git a/src/me/mrCookieSlime/Slimefun/utils/Settings.java b/src/me/mrCookieSlime/Slimefun/utils/Settings.java index 4262a4a12..76081b083 100644 --- a/src/me/mrCookieSlime/Slimefun/utils/Settings.java +++ b/src/me/mrCookieSlime/Slimefun/utils/Settings.java @@ -6,9 +6,9 @@ import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config; public final class Settings { - public boolean Researches_ENABLED; - public boolean Researches_FREE_IN_CREATIVE; - public List Researches_TITLES; + public boolean RESEARCHES_ENABLED; + public boolean RESEARCHES_FREE_IN_CREATIVE; + public List RESEARCHES_TITLES; public int BLOCK_LOADING_INFO_DELAY; public int BLOCK_AUTO_SAVE_DELAY; @@ -24,8 +24,8 @@ public final class Settings { public int SMELTERY_FIRE_BREAK_CHANCE; public Settings(Config cfg) { - Researches_FREE_IN_CREATIVE = cfg.getBoolean("options.allow-free-creative-research"); - Researches_TITLES = cfg.getStringList("research-ranks"); + RESEARCHES_FREE_IN_CREATIVE = cfg.getBoolean("options.allow-free-creative-research"); + RESEARCHES_TITLES = cfg.getStringList("research-ranks"); BLOCK_LOADING_INFO_DELAY = cfg.getInt("URID.info-delay"); BLOCK_AUTO_SAVE_DELAY = cfg.getInt("options.auto-save-delay-in-minutes"); diff --git a/src/plugin.yml b/src/plugin.yml index 7509adc2c..97d9b7cd2 100644 --- a/src/plugin.yml +++ b/src/plugin.yml @@ -19,7 +19,7 @@ permissions: description: Allows you to cheat Items default: op slimefun.cheat.researches: - description: Allows you to cheat Researches + description: Allows you to cheat researches default: op slimefun.stats.others: description: Allows you to see the Stats from other Players From d5f8fb465f7eb3c1fc765e22ccbf522c40b2ec1a Mon Sep 17 00:00:00 2001 From: Sfiguz7 Date: Fri, 30 Aug 2019 23:21:33 +0200 Subject: [PATCH 085/169] Fixes#2 --- src/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java | 2 +- src/me/mrCookieSlime/Slimefun/SlimefunStartup.java | 2 +- src/me/mrCookieSlime/Slimefun/api/PlayerProfile.java | 6 +++--- src/plugin.yml | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java b/src/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java index af280b84e..ab924d255 100644 --- a/src/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java +++ b/src/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java @@ -328,7 +328,7 @@ public final class SlimefunItems { public static final ItemStack ELECTRIC_MOTOR = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOGNiY2EwMTJmNjdlNTRkZTlhZWU3MmZmNDI0ZTA1NmMyYWU1OGRlNWVhY2M5NDlhYjJiY2Q5NjgzY2VjIn19fQ=="), "&cElectric Motor"); public static final ItemStack CARGO_MOTOR = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOGNiY2EwMTJmNjdlNTRkZTlhZWU3MmZmNDI0ZTA1NmMyYWU1OGRlNWVhY2M5NDlhYjJiY2Q5NjgzY2VjIn19fQ=="), "&3Cargo Motor"); public static final ItemStack SCROLL_OF_DIMENSIONAL_TELEPOSITION = new CustomItem(Material.PAPER, "&6Scroll of Dimensional Teleposition", "", "&cThis Scroll is capable of creating", "&ca temporary black Hole which pulls", "&cnearby Entities into itself and sends", "&cthem into another Dimension where", "&ceverything is turned around", "", "&rIn other words: Makes Entities turn by 180 Degrees"); - public static final ItemStack TOME_OF_KNOWLEDGE_SHARING = new CustomItem(Material.BOOK, "&6Tome of Knowledge Sharing", "&7Owner: &bNone", "", "&eRight Click&7 to bind this Tome to yourself", "", "", "&eRight Click&7 to obtain all researches by", "&7the previously assigned Owner"); + public static final ItemStack TOME_OF_KNOWLEDGE_SHARING = new CustomItem(Material.BOOK, "&6Tome of Knowledge Sharing", "&7Owner: &bNone", "", "&eRight Click&7 to bind this Tome to yourself", "", "", "&eRight Click&7 to obtain all Researches by", "&7the previously assigned Owner"); public static final ItemStack HARDENED_GLASS = new CustomItem(Material.LIGHT_GRAY_STAINED_GLASS, "&7Hardened Glass", "", "&rWithstands Explosions"); public static final ItemStack WITHER_PROOF_OBSIDIAN = new CustomItem(Material.OBSIDIAN, "&5Wither-Proof Obsidian", "", "&rWithstands Explosions", "&rWithstands Wither Bosses"); public static final ItemStack WITHER_PROOF_GLASS = new CustomItem(Material.PURPLE_STAINED_GLASS, "&5Wither-Proof Glass", "", "&rWithstands Explosions", "&rWithstands Wither Bosses"); diff --git a/src/me/mrCookieSlime/Slimefun/SlimefunStartup.java b/src/me/mrCookieSlime/Slimefun/SlimefunStartup.java index a69222ae6..a23a1a6ca 100644 --- a/src/me/mrCookieSlime/Slimefun/SlimefunStartup.java +++ b/src/me/mrCookieSlime/Slimefun/SlimefunStartup.java @@ -194,7 +194,7 @@ public final class SlimefunStartup extends JavaPlugin { settings.RESEARCHES_ENABLED = getResearchCfg().getBoolean("enable-researching"); settings.SMELTERY_FIRE_BREAK_CHANCE = (Integer) Slimefun.getItemValue("SMELTERY", "chance.fireBreak"); - System.out.println("[Slimefun] Loading researches..."); + System.out.println("[Slimefun] Loading Researches..."); ResearchSetup.setupResearches(); MiscSetup.setupMisc(); diff --git a/src/me/mrCookieSlime/Slimefun/api/PlayerProfile.java b/src/me/mrCookieSlime/Slimefun/api/PlayerProfile.java index 0004ed17f..5b30bc2b0 100644 --- a/src/me/mrCookieSlime/Slimefun/api/PlayerProfile.java +++ b/src/me/mrCookieSlime/Slimefun/api/PlayerProfile.java @@ -74,7 +74,7 @@ public final class PlayerProfile { } /** - * This method will save the Player's researches and Backpacks to the hard drive + * This method will save the Player's Researches and Backpacks to the hard drive */ public void save() { for (BackpackInventory backpack: backpacks.values()) { @@ -116,9 +116,9 @@ public final class PlayerProfile { } /** - * This Method will return all researches that this Player has unlocked + * This Method will return all Researches that this Player has unlocked * - * @return A Hashset of all researches this Player has unlocked + * @return A Hashset of all Researches this Player has unlocked */ public Set getResearches() { return researches; diff --git a/src/plugin.yml b/src/plugin.yml index 97d9b7cd2..7509adc2c 100644 --- a/src/plugin.yml +++ b/src/plugin.yml @@ -19,7 +19,7 @@ permissions: description: Allows you to cheat Items default: op slimefun.cheat.researches: - description: Allows you to cheat researches + description: Allows you to cheat Researches default: op slimefun.stats.others: description: Allows you to see the Stats from other Players From 9aa784529374a80d8ac67244c3b53589c15128b9 Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Fri, 30 Aug 2019 23:21:34 +0200 Subject: [PATCH 086/169] Refactored Code --- .../Slimefun/Objects/Research.java | 4 +- .../SlimefunItem/machines/AutoEnchanter.java | 2 +- .../machines/ElectricDustWasher.java | 4 +- .../SlimefunItem/multiblocks/OreWasher.java | 2 +- .../Slimefun/Setup/MiscSetup.java | 2 +- .../mrCookieSlime/Slimefun/SlimefunGuide.java | 8 ++-- .../Slimefun/SlimefunStartup.java | 6 +-- .../Slimefun/api/BlockStorage.java | 2 +- .../Slimefun/api/PlayerProfile.java | 2 +- .../Slimefun/utils/Settings.java | 38 +++++++++---------- 10 files changed, 35 insertions(+), 35 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/Objects/Research.java b/src/me/mrCookieSlime/Slimefun/Objects/Research.java index c832015d7..eec384d4a 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/Research.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/Research.java @@ -80,7 +80,7 @@ public class Research { } public boolean isEnabled() { - return SlimefunStartup.instance.getSettings().RESEARCHES_ENABLED && enabled; + return SlimefunStartup.instance.getSettings().researchesEnabled && enabled; } /** @@ -214,7 +214,7 @@ public class Research { */ public boolean canUnlock(Player p) { if (!isEnabled()) return true; - return (p.getGameMode() == GameMode.CREATIVE && SlimefunStartup.instance.getSettings().RESEARCHES_FREE_IN_CREATIVE) || p.getLevel() >= this.cost; + return (p.getGameMode() == GameMode.CREATIVE && SlimefunStartup.instance.getSettings().researchesFreeInCreative) || p.getLevel() >= this.cost; } /** diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoEnchanter.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoEnchanter.java index 0e6d14ceb..6e18e8b4e 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoEnchanter.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoEnchanter.java @@ -123,7 +123,7 @@ public class AutoEnchanter extends AContainer { special_amount += EmeraldEnchants.getInstance().getRegistry().getEnchantments(target).size(); } - if (amount > 0 && special_amount <= SlimefunStartup.instance.getSettings().EMERALD_ENCHANTS_LIMIT) { + if (amount > 0 && special_amount <= SlimefunStartup.instance.getSettings().emeraldEnchantsLimit) { ItemStack newItem = target.clone(); for (Map.Entry e: enchantments.entrySet()) { newItem.addUnsafeEnchantment(e.getKey(), e.getValue()); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricDustWasher.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricDustWasher.java index 6dd036788..2afbd4b28 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricDustWasher.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricDustWasher.java @@ -81,7 +81,7 @@ public abstract class ElectricDustWasher extends AContainer { else { for (int slot: getInputSlots()) { if (SlimefunManager.isItemSimiliar(BlockStorage.getInventory(b).getItemInSlot(slot), SlimefunItems.SIFTED_ORE, true)) { - if (!SlimefunStartup.instance.getSettings().DUST_WASHER_LEGACY) { + if (!SlimefunStartup.instance.getSettings().legacyDustWasher) { boolean empty_slot = false; for (int output_slot: getOutputSlots()) { if (BlockStorage.getInventory(b).getItemInSlot(output_slot) == null) { @@ -94,7 +94,7 @@ public abstract class ElectricDustWasher extends AContainer { ItemStack adding = OreWasher.items[new Random().nextInt(OreWasher.items.length)]; MachineRecipe r = new MachineRecipe(4 / getSpeed(), new ItemStack[0], new ItemStack[] {adding}); - if (SlimefunStartup.instance.getSettings().DUST_WASHER_LEGACY && !fits(b, r.getOutput())) return; + if (SlimefunStartup.instance.getSettings().legacyDustWasher && !fits(b, r.getOutput())) return; BlockStorage.getInventory(b).replaceExistingItem(slot, InvUtils.decreaseItem(BlockStorage.getInventory(b).getItemInSlot(slot), 1)); processing.put(b, r); progress.put(b, r.getTicks()); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/OreWasher.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/OreWasher.java index 45367927f..663428aed 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/OreWasher.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/OreWasher.java @@ -56,7 +56,7 @@ public class OreWasher extends MultiBlockMachine { ItemStack adding = items[new Random().nextInt(items.length)]; Inventory outputInv = null; - if (!SlimefunStartup.instance.getSettings().ORE_WASHER_LEGACY) { + if (!SlimefunStartup.instance.getSettings().legacyOreWasher) { // This is a fancy way of checking if there is empty space in the inv; by checking if an unobtainable item could fit in it. // However, due to the way the method findValidOutputInv() functions, the dummyAdding will never actually be added to the real inventory, // so it really doesn't matter what item the ItemStack is made by. SlimefunItems.DEBUG_FISH however, signals that it's diff --git a/src/me/mrCookieSlime/Slimefun/Setup/MiscSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/MiscSetup.java index c37bf5a0d..fef2b0f6b 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/MiscSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/MiscSetup.java @@ -160,7 +160,7 @@ public final class MiscSetup { // Favour 8 Cobblestone -> 1 Sand Recipe over 1 Cobblestone -> 1 Gravel Recipe Stream stream = grinder_recipes.stream(); - if (!settings.ORE_GRINDER_LEGACY) { + if (!settings.legacyOreGrinder) { stream = stream.sorted((a, b) -> Integer.compare(b[0].getAmount(), a[0].getAmount())); } diff --git a/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java b/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java index 396c31940..4eabea7b7 100644 --- a/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java +++ b/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java @@ -567,7 +567,7 @@ public final class SlimefunGuide { openCategory(p, category, true, selected_page, book); } else { - if (!(p.getGameMode() == GameMode.CREATIVE && SlimefunStartup.instance.getSettings().RESEARCHES_FREE_IN_CREATIVE)) { + if (!(p.getGameMode() == GameMode.CREATIVE && SlimefunStartup.instance.getSettings().researchesFreeInCreative)) { p.setLevel(p.getLevel() - research.getCost()); } @@ -706,12 +706,12 @@ public final class SlimefunGuide { openCategory(p, category, true, selected_page, book); } else { - if (!(pl.getGameMode() == GameMode.CREATIVE && SlimefunStartup.instance.getSettings().RESEARCHES_FREE_IN_CREATIVE)) { + if (!(pl.getGameMode() == GameMode.CREATIVE && SlimefunStartup.instance.getSettings().researchesFreeInCreative)) { pl.setLevel(pl.getLevel() - research.getCost()); } if (pl.getGameMode() == GameMode.CREATIVE) { - research.unlock(pl, SlimefunStartup.instance.getSettings().RESEARCHES_FREE_IN_CREATIVE); + research.unlock(pl, SlimefunStartup.instance.getSettings().researchesFreeInCreative); openCategory(pl, category, survival, selected_page, book); } else { @@ -780,7 +780,7 @@ public final class SlimefunGuide { final SlimefunItem sfItem = SlimefunItem.getByItem(item); - if (sfItem == null && !SlimefunStartup.instance.getSettings().GUIDE_SHOW_VANILLA_RECIPES) return; + if (sfItem == null && !SlimefunStartup.instance.getSettings().guideShowVanillaRecipes) return; ItemStack[] recipe = new ItemStack[9]; ItemStack recipeType = null; diff --git a/src/me/mrCookieSlime/Slimefun/SlimefunStartup.java b/src/me/mrCookieSlime/Slimefun/SlimefunStartup.java index dbada7c7e..539bf6e16 100644 --- a/src/me/mrCookieSlime/Slimefun/SlimefunStartup.java +++ b/src/me/mrCookieSlime/Slimefun/SlimefunStartup.java @@ -191,7 +191,7 @@ public final class SlimefunStartup extends JavaPlugin { MiscSetup.loadDescriptions(); settings = new Settings(config); - settings.RESEARCHES_ENABLED = getResearchCfg().getBoolean("enable-researching"); + settings.researchesEnabled = getResearchCfg().getBoolean("enable-researching"); settings.SMELTERY_FIRE_BREAK_CHANCE = (Integer) Slimefun.getItemValue("SMELTERY", "chance.fireBreak"); System.out.println("[Slimefun] Loading Researches..."); @@ -301,10 +301,10 @@ public final class SlimefunStartup extends JavaPlugin { ticker = new TickerTask(); - getServer().getScheduler().runTaskTimer(this, new PlayerAutoSaver(), 2000L, settings.BLOCK_AUTO_SAVE_DELAY * 60L * 20L); + getServer().getScheduler().runTaskTimer(this, new PlayerAutoSaver(), 2000L, settings.blocksAutoSaveDelay * 60L * 20L); // Starting all ASYNC Tasks - getServer().getScheduler().runTaskTimerAsynchronously(this, new BlockAutoSaver(), 2000L, settings.BLOCK_AUTO_SAVE_DELAY * 60L * 20L); + getServer().getScheduler().runTaskTimerAsynchronously(this, new BlockAutoSaver(), 2000L, settings.blocksAutoSaveDelay * 60L * 20L); getServer().getScheduler().runTaskTimerAsynchronously(this, ticker, 100L, config.getInt("URID.custom-ticker-delay")); getServer().getScheduler().runTaskTimerAsynchronously(this, () -> utilities.connectors.forEach(GitHubConnector::pullFile), 80L, 60 * 60 * 20L); diff --git a/src/me/mrCookieSlime/Slimefun/api/BlockStorage.java b/src/me/mrCookieSlime/Slimefun/api/BlockStorage.java index c72523af4..0624bd648 100644 --- a/src/me/mrCookieSlime/Slimefun/api/BlockStorage.java +++ b/src/me/mrCookieSlime/Slimefun/api/BlockStorage.java @@ -103,7 +103,7 @@ public class BlockStorage { System.err.println("[Slimefun] should probably look into it!"); } else if (file.getName().endsWith(".sfb")) { - if (timestamp + SlimefunStartup.instance.getSettings().BLOCK_LOADING_INFO_DELAY < System.currentTimeMillis()) { + if (timestamp + SlimefunStartup.instance.getSettings().blocksInfoLoadingDelay < System.currentTimeMillis()) { System.out.println("[Slimefun] Loading Blocks... " + Math.round((((done * 100.0F) / total) * 100.0F) / 100.0F) + "% done (\"" + w.getName() + "\")"); timestamp = System.currentTimeMillis(); } diff --git a/src/me/mrCookieSlime/Slimefun/api/PlayerProfile.java b/src/me/mrCookieSlime/Slimefun/api/PlayerProfile.java index 5b30bc2b0..2e715fec6 100644 --- a/src/me/mrCookieSlime/Slimefun/api/PlayerProfile.java +++ b/src/me/mrCookieSlime/Slimefun/api/PlayerProfile.java @@ -161,7 +161,7 @@ public final class PlayerProfile { } public String getTitle() { - List titles = SlimefunStartup.instance.getSettings().RESEARCHES_TITLES; + List titles = SlimefunStartup.instance.getSettings().researchesTitles; int index = Math.round(Float.valueOf(String.valueOf(Math.round(((researches.size() * 100.0F) / Research.list().size()) * 100.0F) / 100.0F)) / 100.0F) * titles.size(); if (index > 0) index--; diff --git a/src/me/mrCookieSlime/Slimefun/utils/Settings.java b/src/me/mrCookieSlime/Slimefun/utils/Settings.java index 76081b083..8f6382c0d 100644 --- a/src/me/mrCookieSlime/Slimefun/utils/Settings.java +++ b/src/me/mrCookieSlime/Slimefun/utils/Settings.java @@ -6,37 +6,37 @@ import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config; public final class Settings { - public boolean RESEARCHES_ENABLED; - public boolean RESEARCHES_FREE_IN_CREATIVE; - public List RESEARCHES_TITLES; + public boolean researchesEnabled; + public boolean researchesFreeInCreative; + public List researchesTitles; - public int BLOCK_LOADING_INFO_DELAY; - public int BLOCK_AUTO_SAVE_DELAY; + public int blocksInfoLoadingDelay; + public int blocksAutoSaveDelay; - public boolean GUIDE_SHOW_VANILLA_RECIPES; + public boolean guideShowVanillaRecipes; - public int EMERALD_ENCHANTS_LIMIT; + public int emeraldEnchantsLimit; - public boolean DUST_WASHER_LEGACY; - public boolean ORE_GRINDER_LEGACY; - public boolean ORE_WASHER_LEGACY; + public boolean legacyDustWasher; + public boolean legacyOreGrinder; + public boolean legacyOreWasher; public int SMELTERY_FIRE_BREAK_CHANCE; public Settings(Config cfg) { - RESEARCHES_FREE_IN_CREATIVE = cfg.getBoolean("options.allow-free-creative-research"); - RESEARCHES_TITLES = cfg.getStringList("research-ranks"); + researchesFreeInCreative = cfg.getBoolean("options.allow-free-creative-research"); + researchesTitles = cfg.getStringList("research-ranks"); - BLOCK_LOADING_INFO_DELAY = cfg.getInt("URID.info-delay"); - BLOCK_AUTO_SAVE_DELAY = cfg.getInt("options.auto-save-delay-in-minutes"); + blocksInfoLoadingDelay = cfg.getInt("URID.info-delay"); + blocksAutoSaveDelay = cfg.getInt("options.auto-save-delay-in-minutes"); - GUIDE_SHOW_VANILLA_RECIPES = cfg.getBoolean("options.show-vanilla-recipes-in-guide"); + guideShowVanillaRecipes = cfg.getBoolean("options.show-vanilla-recipes-in-guide"); - EMERALD_ENCHANTS_LIMIT = cfg.getInt("options.emerald-enchantment-limit"); + emeraldEnchantsLimit = cfg.getInt("options.emerald-enchantment-limit"); - DUST_WASHER_LEGACY = cfg.getBoolean("options.legacy-dust-washer"); - ORE_WASHER_LEGACY = cfg.getBoolean("options.legacy-ore-washer"); - ORE_GRINDER_LEGACY = cfg.getBoolean("options.legacy-ore-grinder"); + legacyDustWasher = cfg.getBoolean("options.legacy-dust-washer"); + legacyOreWasher = cfg.getBoolean("options.legacy-ore-washer"); + legacyOreGrinder = cfg.getBoolean("options.legacy-ore-grinder"); } } From fb0cd04b817972430c59c5059b608af49182cedb Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Fri, 30 Aug 2019 23:55:40 +0200 Subject: [PATCH 087/169] Refactored Network classes --- .../Objects/SlimefunItem/SlimefunItem.java | 10 ++-- .../Slimefun/api/energy/EnergyNet.java | 47 +++++++++---------- .../api/energy/EnergyNetComponent.java | 10 ++++ .../Slimefun/api/item_transport/CargoNet.java | 15 +++--- .../Slimefun/api/network/Network.java | 33 +++++-------- .../api/network/NetworkComponent.java | 7 +++ 6 files changed, 64 insertions(+), 58 deletions(-) create mode 100644 src/me/mrCookieSlime/Slimefun/api/energy/EnergyNetComponent.java create mode 100644 src/me/mrCookieSlime/Slimefun/api/network/NetworkComponent.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java index 506d1ce08..526634444 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java @@ -29,7 +29,7 @@ import me.mrCookieSlime.Slimefun.api.BlockStorage; import me.mrCookieSlime.Slimefun.api.Slimefun; import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock; import me.mrCookieSlime.Slimefun.api.energy.EnergyNet; -import me.mrCookieSlime.Slimefun.api.energy.EnergyNet.NetworkComponent; +import me.mrCookieSlime.Slimefun.api.energy.EnergyNetComponent; import me.mrCookieSlime.Slimefun.api.energy.EnergyTicker; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu; @@ -405,7 +405,7 @@ public class SlimefunItem { } else if (h instanceof EnergyTicker) { this.energyTicker = (EnergyTicker) h; - EnergyNet.registerComponent(getID(), NetworkComponent.SOURCE); + EnergyNet.registerComponent(getID(), EnergyNetComponent.SOURCE); } } } @@ -480,7 +480,7 @@ public class SlimefunItem { public void registerChargeableBlock(boolean slimefun, int capacity) { this.register(slimefun); ChargableBlock.registerChargableBlock(id, capacity, true); - EnergyNet.registerComponent(id, NetworkComponent.CONSUMER); + EnergyNet.registerComponent(id, EnergyNetComponent.CONSUMER); } public void registerUnrechargeableBlock(boolean slimefun, int capacity) { @@ -495,12 +495,12 @@ public class SlimefunItem { public void registerEnergyDistributor(boolean slimefun) { this.register(slimefun); - EnergyNet.registerComponent(id, NetworkComponent.DISTRIBUTOR); + EnergyNet.registerComponent(id, EnergyNetComponent.DISTRIBUTOR); } public void registerDistibutingCapacitor(boolean slimefun, final int capacity) { this.register(slimefun); - EnergyNet.registerComponent(id, NetworkComponent.DISTRIBUTOR); + EnergyNet.registerComponent(id, EnergyNetComponent.DISTRIBUTOR); ChargableBlock.registerCapacitor(id, capacity); } diff --git a/src/me/mrCookieSlime/Slimefun/api/energy/EnergyNet.java b/src/me/mrCookieSlime/Slimefun/api/energy/EnergyNet.java index cc694bf9b..c923f0a89 100644 --- a/src/me/mrCookieSlime/Slimefun/api/energy/EnergyNet.java +++ b/src/me/mrCookieSlime/Slimefun/api/energy/EnergyNet.java @@ -13,16 +13,10 @@ import me.mrCookieSlime.Slimefun.SlimefunStartup; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.api.BlockStorage; import me.mrCookieSlime.Slimefun.api.network.Network; +import me.mrCookieSlime.Slimefun.api.network.NetworkComponent; import me.mrCookieSlime.Slimefun.holograms.EnergyHologram; public class EnergyNet extends Network { - - public static enum NetworkComponent { - SOURCE, - DISTRIBUTOR, - CONSUMER, - NONE; - } private static final int RANGE = 6; @@ -30,27 +24,27 @@ public class EnergyNet extends Network { public static Set machinesStorage = new HashSet<>(); public static Set machinesOutput = new HashSet<>(); - public static NetworkComponent getComponent(Block b) { + public static EnergyNetComponent getComponent(Block b) { return getComponent(b.getLocation()); } - public static NetworkComponent getComponent(String id) { - if (machinesInput.contains(id)) return NetworkComponent.SOURCE; - if (machinesStorage.contains(id)) return NetworkComponent.DISTRIBUTOR; - if (machinesOutput.contains(id)) return NetworkComponent.CONSUMER; - return NetworkComponent.NONE; + public static EnergyNetComponent getComponent(String id) { + if (machinesInput.contains(id)) return EnergyNetComponent.SOURCE; + if (machinesStorage.contains(id)) return EnergyNetComponent.DISTRIBUTOR; + if (machinesOutput.contains(id)) return EnergyNetComponent.CONSUMER; + return EnergyNetComponent.NONE; } - public static NetworkComponent getComponent(Location l) { - if (!BlockStorage.hasBlockInfo(l)) return NetworkComponent.NONE; + public static EnergyNetComponent getComponent(Location l) { + if (!BlockStorage.hasBlockInfo(l)) return EnergyNetComponent.NONE; String id = BlockStorage.checkID(l); - if (machinesInput.contains(id)) return NetworkComponent.SOURCE; - if (machinesStorage.contains(id)) return NetworkComponent.DISTRIBUTOR; - if (machinesOutput.contains(id)) return NetworkComponent.CONSUMER; - return NetworkComponent.NONE; + if (machinesInput.contains(id)) return EnergyNetComponent.SOURCE; + if (machinesStorage.contains(id)) return EnergyNetComponent.DISTRIBUTOR; + if (machinesOutput.contains(id)) return EnergyNetComponent.CONSUMER; + return EnergyNetComponent.NONE; } - public static void registerComponent(String id, NetworkComponent component) { + public static void registerComponent(String id, EnergyNetComponent component) { switch (component) { case CONSUMER: machinesOutput.add(id); @@ -91,24 +85,25 @@ public class EnergyNet extends Network { return RANGE; } - public Network.Component classifyLocation(Location l) { - if (regulator.equals(l)) return Network.Component.REGULATOR; + public NetworkComponent classifyLocation(Location l) { + if (regulator.equals(l)) return NetworkComponent.REGULATOR; switch (getComponent(l)) { case DISTRIBUTOR: - return Network.Component.CONNECTOR; + return NetworkComponent.CONNECTOR; case CONSUMER: case SOURCE: - return Network.Component.TERMINUS; + return NetworkComponent.TERMINUS; default: return null; } } - public void locationClassificationChange(Location l, Network.Component from, Network.Component to) { - if (from == Network.Component.TERMINUS) { + public void locationClassificationChange(Location l, NetworkComponent from, NetworkComponent to) { + if (from == NetworkComponent.TERMINUS) { input.remove(l); output.remove(l); } + switch (getComponent(l)) { case DISTRIBUTOR: if (ChargableBlock.isCapacitor(l)) storage.add(l); diff --git a/src/me/mrCookieSlime/Slimefun/api/energy/EnergyNetComponent.java b/src/me/mrCookieSlime/Slimefun/api/energy/EnergyNetComponent.java new file mode 100644 index 000000000..76bfe8714 --- /dev/null +++ b/src/me/mrCookieSlime/Slimefun/api/energy/EnergyNetComponent.java @@ -0,0 +1,10 @@ +package me.mrCookieSlime.Slimefun.api.energy; + +public enum EnergyNetComponent { + + SOURCE, + DISTRIBUTOR, + CONSUMER, + NONE; + +} \ No newline at end of file diff --git a/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoNet.java b/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoNet.java index 220b47f65..0e3a8629c 100644 --- a/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoNet.java +++ b/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoNet.java @@ -30,6 +30,7 @@ import me.mrCookieSlime.Slimefun.api.BlockStorage; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu; import me.mrCookieSlime.Slimefun.api.inventory.UniversalBlockMenu; import me.mrCookieSlime.Slimefun.api.network.Network; +import me.mrCookieSlime.Slimefun.api.network.NetworkComponent; import me.mrCookieSlime.Slimefun.holograms.CargoHologram; public class CargoNet extends Network { @@ -86,28 +87,28 @@ public class CargoNet extends Network { return RANGE; } - public Network.Component classifyLocation(Location l) { + public NetworkComponent classifyLocation(Location l) { String id = BlockStorage.checkID(l); if (id == null) return null; switch(id) { case "CARGO_MANAGER": - return Component.REGULATOR; + return NetworkComponent.REGULATOR; case "CARGO_NODE": - return Component.CONNECTOR; + return NetworkComponent.CONNECTOR; case "CARGO_NODE_INPUT": case "CARGO_NODE_OUTPUT": case "CARGO_NODE_OUTPUT_ADVANCED": case "CT_IMPORT_BUS": case "CT_EXPORT_BUS": case "CHEST_TERMINAL": - return Component.TERMINUS; + return NetworkComponent.TERMINUS; default: return null; } } - public void locationClassificationChange(Location l, Component from, Component to) { - if (from == Component.TERMINUS) { + public void locationClassificationChange(Location l, NetworkComponent from, NetworkComponent to) { + if (from == NetworkComponent.TERMINUS) { inputNodes.remove(l); outputNodes.remove(l); advancedOutputNodes.remove(l); @@ -115,7 +116,7 @@ public class CargoNet extends Network { imports.remove(l); exports.remove(l); } - if (to == Component.TERMINUS) { + if (to == NetworkComponent.TERMINUS) { switch(BlockStorage.checkID(l)) { case "CARGO_NODE_INPUT": inputNodes.add(l); diff --git a/src/me/mrCookieSlime/Slimefun/api/network/Network.java b/src/me/mrCookieSlime/Slimefun/api/network/Network.java index fce90e4bb..4bf4d5fea 100644 --- a/src/me/mrCookieSlime/Slimefun/api/network/Network.java +++ b/src/me/mrCookieSlime/Slimefun/api/network/Network.java @@ -49,16 +49,9 @@ public abstract class Network { } } - public static enum Component { - CONNECTOR, - REGULATOR, - TERMINUS; - } - - public abstract int getRange(); - public abstract Component classifyLocation(Location l); - public abstract void locationClassificationChange(Location l, Component from, Component to); + public abstract NetworkComponent classifyLocation(Location l); + public abstract void locationClassificationChange(Location l, NetworkComponent from, NetworkComponent to); protected Location regulator; private Queue nodeQueue = new ArrayDeque<>(); @@ -94,15 +87,15 @@ public abstract class Network { return connectedLocations.contains(l); } - private Component getCurrentClassification(Location l) { + private NetworkComponent getCurrentClassification(Location l) { if(regulatorNodes.contains(l)) { - return Component.REGULATOR; + return NetworkComponent.REGULATOR; } else if(connectorNodes.contains(l)) { - return Component.CONNECTOR; + return NetworkComponent.CONNECTOR; } else if(terminusNodes.contains(l)) { - return Component.TERMINUS; + return NetworkComponent.TERMINUS; } return null; } @@ -111,28 +104,28 @@ public abstract class Network { int steps = 0; while (nodeQueue.peek() != null) { Location l = nodeQueue.poll(); - Component currentAssignment = getCurrentClassification(l); - Component classification = classifyLocation(l); + NetworkComponent currentAssignment = getCurrentClassification(l); + NetworkComponent classification = classifyLocation(l); if (classification != currentAssignment) { - if (currentAssignment == Component.REGULATOR || currentAssignment == Component.CONNECTOR) { + if (currentAssignment == NetworkComponent.REGULATOR || currentAssignment == NetworkComponent.CONNECTOR) { // Requires a complete rebuild of the network, so we just throw the current one away. unregisterNetwork(this); return; } - else if (currentAssignment == Component.TERMINUS) { + else if (currentAssignment == NetworkComponent.TERMINUS) { terminusNodes.remove(l); } - if (classification == Component.REGULATOR) { + if (classification == NetworkComponent.REGULATOR) { regulatorNodes.add(l); discoverNeighbors(l); } - else if(classification == Component.CONNECTOR) { + else if(classification == NetworkComponent.CONNECTOR) { connectorNodes.add(l); discoverNeighbors(l); } - else if(classification == Component.TERMINUS) { + else if(classification == NetworkComponent.TERMINUS) { terminusNodes.add(l); } diff --git a/src/me/mrCookieSlime/Slimefun/api/network/NetworkComponent.java b/src/me/mrCookieSlime/Slimefun/api/network/NetworkComponent.java new file mode 100644 index 000000000..dd8bc53c7 --- /dev/null +++ b/src/me/mrCookieSlime/Slimefun/api/network/NetworkComponent.java @@ -0,0 +1,7 @@ +package me.mrCookieSlime.Slimefun.api.network; + +public enum NetworkComponent { + CONNECTOR, + REGULATOR, + TERMINUS; +} \ No newline at end of file From 4fe72148a24a4c98ad262ab4ae664109a352e287 Mon Sep 17 00:00:00 2001 From: Sfiguz7 Date: Fri, 30 Aug 2019 23:57:30 +0200 Subject: [PATCH 088/169] Conditional structures dupe codes cleaning --- .../Objects/SlimefunItem/SlimefunItem.java | 12 ++++--- .../Objects/SlimefunItem/SlimefunMachine.java | 5 +-- .../Slimefun/Setup/SlimefunSetup.java | 4 +-- .../Slimefun/listeners/BackpackListener.java | 14 ++++++--- .../Slimefun/listeners/BlockListener.java | 24 ++++++-------- .../Slimefun/listeners/ItemListener.java | 31 +++++-------------- 6 files changed, 39 insertions(+), 51 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java index 506d1ce08..d2b454f0c 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java @@ -321,11 +321,13 @@ public class SlimefunItem { public static SlimefunItem getByItem(ItemStack item) { if (item == null) return null; for (SlimefunItem sfi: items) { - if (sfi instanceof ChargableItem && SlimefunManager.isItemSimiliar(item, sfi.getItem(), false)) return sfi; - else if (sfi instanceof DamagableChargableItem && SlimefunManager.isItemSimiliar(item, sfi.getItem(), false)) return sfi; - else if (sfi instanceof ChargedItem && SlimefunManager.isItemSimiliar(item, sfi.getItem(), false)) return sfi; - else if (sfi instanceof SlimefunBackpack && SlimefunManager.isItemSimiliar(item, sfi.getItem(), false)) return sfi; - else if (SlimefunManager.isItemSimiliar(item, sfi.getItem(), true)) return sfi; + if ((sfi instanceof ChargableItem && SlimefunManager.isItemSimiliar(item, sfi.getItem(), false)) || + (sfi instanceof DamagableChargableItem && SlimefunManager.isItemSimiliar(item, sfi.getItem(), false)) || + (sfi instanceof ChargedItem && SlimefunManager.isItemSimiliar(item, sfi.getItem(), false)) || + (sfi instanceof SlimefunBackpack && SlimefunManager.isItemSimiliar(item, sfi.getItem(), false)) || + SlimefunManager.isItemSimiliar(item, sfi.getItem(), true)) + + return sfi; } if (SlimefunManager.isItemSimiliar(item, SlimefunItems.BROKEN_SPAWNER, false)) return getByID("BROKEN_SPAWNER"); if (SlimefunManager.isItemSimiliar(item, SlimefunItems.REPAIRED_SPAWNER, false)) return getByID("REINFORCED_SPAWNER"); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunMachine.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunMachine.java index 35c83c7b0..58b7b478f 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunMachine.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunMachine.java @@ -65,8 +65,9 @@ public class SlimefunMachine extends SlimefunItem { public void install() { for (ItemStack i: this.getDisplayRecipes()) { SlimefunItem item = SlimefunItem.getByItem(i); - if (item == null) this.recipes.add(new ItemStack[] {i}); - else if (!SlimefunItem.isDisabled(i)) this.recipes.add(new ItemStack[] {i}); + if (item == null || !SlimefunItem.isDisabled(i)) + + this.recipes.add(new ItemStack[] {i}); } } diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java index 6ed35d2ed..afdc2a83e 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java @@ -1555,8 +1555,8 @@ public final class SlimefunSetup { for (int y = -4; y <= 4; y++) { for (int z = -4; z <= 4; z++) { if (p.getLocation().getBlock().getRelative(x, y, z).getType().toString().endsWith("_ORE")) { - if (closest == null) closest = p.getLocation().getBlock().getRelative(x, y, z); - else if (p.getLocation().distance(closest.getLocation()) < p.getLocation().distance(p.getLocation().getBlock().getRelative(x, y, z).getLocation())) closest = p.getLocation().getBlock().getRelative(x, y, z); + if (closest == null || p.getLocation().distance(closest.getLocation()) < p.getLocation().distance(p.getLocation().getBlock().getRelative(x, y, z).getLocation())) + closest = p.getLocation().getBlock().getRelative(x, y, z); } } } diff --git a/src/me/mrCookieSlime/Slimefun/listeners/BackpackListener.java b/src/me/mrCookieSlime/Slimefun/listeners/BackpackListener.java index a3b7bf598..a0545dba6 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/BackpackListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/BackpackListener.java @@ -65,14 +65,18 @@ public class BackpackListener implements Listener { if (e.getClick() == ClickType.NUMBER_KEY) { ItemStack hotbarItem = e.getWhoClicked().getInventory().getItem(e.getHotbarButton()); SlimefunItem sfItem = SlimefunItem.getByItem(hotbarItem); - if (hotbarItem != null && hotbarItem.getType().toString().contains("SHULKER_BOX")) e.setCancelled(true); - else if (sfItem instanceof SlimefunBackpack) e.setCancelled(true); + if ((hotbarItem != null && hotbarItem.getType().toString().contains("SHULKER_BOX")) || + sfItem instanceof SlimefunBackpack) + + e.setCancelled(true); } else if (e.getCurrentItem() != null && e.getCurrentItem().getType() != Material.AIR) { SlimefunItem sfItem = SlimefunItem.getByItem(e.getCurrentItem()); - if (SlimefunManager.isItemSimiliar(item, SlimefunItem.getItem("COOLER"), false) && !(sfItem instanceof Juice)) e.setCancelled(true); - else if (e.getCurrentItem().getType().toString().contains("SHULKER_BOX")) e.setCancelled(true); - else if (sfItem instanceof SlimefunBackpack) e.setCancelled(true); + if ((SlimefunManager.isItemSimiliar(item, SlimefunItem.getItem("COOLER"), false) && !(sfItem instanceof Juice)) || + e.getCurrentItem().getType().toString().contains("SHULKER_BOX") || + sfItem instanceof SlimefunBackpack) + + e.setCancelled(true); } } } diff --git a/src/me/mrCookieSlime/Slimefun/listeners/BlockListener.java b/src/me/mrCookieSlime/Slimefun/listeners/BlockListener.java index df6db7e65..5e0042bde 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/BlockListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/BlockListener.java @@ -48,13 +48,11 @@ public class BlockListener implements Listener { @EventHandler public void onPistonExtend(BlockPistonExtendEvent e) { for (Block b : e.getBlocks()) { - if (BlockStorage.hasBlockInfo(b)) { - e.setCancelled(true); - return; - } - else if (b.getRelative(e.getDirection()).getType() == Material.AIR && BlockStorage.hasBlockInfo(b.getRelative(e.getDirection()))) { - e.setCancelled(true); - return; + if (BlockStorage.hasBlockInfo(b) || + b.getRelative(e.getDirection()).getType() == Material.AIR && BlockStorage.hasBlockInfo(b.getRelative(e.getDirection()))) { + + e.setCancelled(true); + return; } } } @@ -63,13 +61,11 @@ public class BlockListener implements Listener { public void onPistonRetract(BlockPistonRetractEvent e) { if (e.isSticky()) { for (Block b : e.getBlocks()) { - if (BlockStorage.hasBlockInfo(b)) { - e.setCancelled(true); - return; - } - else if (b.getRelative(e.getDirection()).getType() == Material.AIR && BlockStorage.hasBlockInfo(b.getRelative(e.getDirection()))) { - e.setCancelled(true); - return; + if (BlockStorage.hasBlockInfo(b) || + b.getRelative(e.getDirection()).getType() == Material.AIR && BlockStorage.hasBlockInfo(b.getRelative(e.getDirection()))) { + + e.setCancelled(true); + return; } } } diff --git a/src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java b/src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java index c1b162fcc..e04a52179 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java @@ -418,32 +418,17 @@ public class ItemListener implements Listener { if (SlimefunManager.isItemSimiliar(slot0, SlimefunItems.ELYTRA, true)) return; - if (SlimefunItem.getByItem(slot0) != null && !SlimefunItem.isDisabled(slot0)) { - e.setCancelled(true); - Messages.local.sendTranslation((Player) e.getWhoClicked(), "anvil.not-working", true); - } - else if (SlimefunItem.getByItem(slot1) != null && !SlimefunItem.isDisabled(slot1)) { - e.setCancelled(true); - Messages.local.sendTranslation((Player) e.getWhoClicked(), "anvil.not-working", true); - } + if (SlimefunItem.getByItem(slot0) != null && !SlimefunItem.isDisabled(slot0) || + SlimefunItem.getByItem(slot1) != null && !SlimefunItem.isDisabled(slot1) || + SlimefunManager.isItemSimiliar(slot0, SlimefunGuide.getItem(BookDesign.BOOK), true) || + SlimefunManager.isItemSimiliar(slot0, SlimefunGuide.getItem(BookDesign.CHEST), true)|| - if (SlimefunManager.isItemSimiliar(slot0, SlimefunGuide.getItem(BookDesign.BOOK), true)) { - e.setCancelled(true); - Messages.local.sendTranslation((Player) e.getWhoClicked(), "anvil.not-working", true); - } - else if (SlimefunManager.isItemSimiliar(slot0, SlimefunGuide.getItem(BookDesign.CHEST), true)) { - e.setCancelled(true); - Messages.local.sendTranslation((Player) e.getWhoClicked(), "anvil.not-working", true); - } + SlimefunManager.isItemSimiliar(slot1, SlimefunGuide.getItem(BookDesign.BOOK), true) || + SlimefunManager.isItemSimiliar(slot1, SlimefunGuide.getItem(BookDesign.CHEST), true)) { - if (SlimefunManager.isItemSimiliar(slot1, SlimefunGuide.getItem(BookDesign.BOOK), true)) { - e.setCancelled(true); - Messages.local.sendTranslation((Player) e.getWhoClicked(), "anvil.not-working", true); - } - else if (SlimefunManager.isItemSimiliar(slot1, SlimefunGuide.getItem(BookDesign.CHEST), true)) { - e.setCancelled(true); - Messages.local.sendTranslation((Player) e.getWhoClicked(), "anvil.not-working", true); + e.setCancelled(true); + Messages.local.sendTranslation((Player) e.getWhoClicked(), "anvil.not-working", true); } } } From cc4a678750c1a883d7e163e85070b4919f0d490d Mon Sep 17 00:00:00 2001 From: LinoxGH <54643600+LinoxGH@users.noreply.github.com> Date: Sat, 31 Aug 2019 02:13:56 +0300 Subject: [PATCH 089/169] Fixed bugs about Storm Staff. - Changed "1 Uses left" to "1 Use left". - Fixed the recipe. - Fixed durability not working. - Fixed a server crash when item breaks. --- .../Slimefun/Setup/SlimefunSetup.java | 56 +++++++++---------- 1 file changed, 26 insertions(+), 30 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java index cdadad3ee..2a0720012 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java @@ -867,7 +867,7 @@ public final class SlimefunSetup { .register(true); new SlimefunItem(Categories.MAGIC, SlimefunItems.STAFF_STORM, "STAFF_ELEMENTAL_STORM", RecipeType.ANCIENT_ALTAR, - new ItemStack[] {SlimefunItems.RUNE_AIR, SlimefunItems.RUNE_WATER, SlimefunItems.ENDER_LUMP_3, SlimefunItems.MAGIC_SUGAR, SlimefunItems.STAFF_WIND, SlimefunItems.MAGIC_SUGAR, SlimefunItems.ENDER_LUMP_3, SlimefunItems.RUNE_WATER, SlimefunItems.RUNE_AIR}) + new ItemStack[] {SlimefunItems.RUNE_AIR, SlimefunItems.RUNE_WATER, SlimefunItems.ENDER_LUMP_3, SlimefunItems.STAFF_WATER, SlimefunItems.STAFF_WIND, SlimefunItems.MAGIC_SUGAR, SlimefunItems.ENDER_LUMP_3, SlimefunItems.RUNE_WATER, SlimefunItems.RUNE_AIR}) .register(true, new ItemInteractionHandler() { @Override @@ -889,7 +889,7 @@ public final class SlimefunSetup { if (!itemML.get(3).equals(SFitemML.get(3))) return false; } else return false; - if (p.getFoodLevel() >= 4) { + if (p.getFoodLevel() >= 4 || p.getGameMode() == GameMode.CREATIVE) { Location loc = p.getTargetBlock(null, 50).getLocation(); if (loc.getWorld() == null) return false; if (!loc.getChunk().isLoaded()) return false; @@ -901,40 +901,36 @@ public final class SlimefunSetup { p.setFoodLevel(event.getFoodLevel()); } - boolean itemBroke = false; - switch (itemML.get(3)) { - case "&e5 Uses &7left": - itemML.set(3, "&e4 Uses &7left"); - break; - case "&e4 Uses &7left": - itemML.set(3, "&e3 Uses &7left"); - break; - case "&e3 Uses &7left": - itemML.set(3, "&e2 Uses &7left"); - break; - case "&e2 Uses &7left": - itemML.set(3, "&e1 Use &7left"); - break; - case "&e1 Use &7left": - item = null; - p.playSound(p.getLocation(), Sound.ENTITY_ITEM_BREAK, 1, 1); - break; + if (ChatColor.translateAlternateColorCodes('&', "&e5 Uses &7left").equals(itemML.get(4))) { + itemML.set(4, ChatColor.translateAlternateColorCodes('&', "&e4 Uses &7left")); } - - if (item != null) { - // Saving the changes to lore and item. - itemM.setLore(itemML); - item.setItemMeta(itemM); + else if (ChatColor.translateAlternateColorCodes('&', "&e4 Uses &7left").equals(itemML.get(4))) { + itemML.set(4, ChatColor.translateAlternateColorCodes('&', "&e3 Uses &7left")); } - - //Saving the item. + else if (ChatColor.translateAlternateColorCodes('&', "&e3 Uses &7left").equals(itemML.get(4))) { + itemML.set(4, ChatColor.translateAlternateColorCodes('&', "&e2 Uses &7left")); + } + else if (ChatColor.translateAlternateColorCodes('&', "&e2 Uses &7left").equals(itemML.get(4))) { + itemML.set(4, ChatColor.translateAlternateColorCodes('&', "&e1 Use &7left")); + } + else if (ChatColor.translateAlternateColorCodes('&', "&e1 Use &7left").equals(itemML.get(4))) { + e.setCancelled(true); + p.playSound(p.getLocation(), Sound.ENTITY_ITEM_BREAK, 1, 1); + item.setAmount(0); + return true; + } + else return false; + + e.setCancelled(true); + // Saving the changes to lore and item. + itemM.setLore(itemML); + item.setItemMeta(itemM); if (e.getParentEvent().getHand() == EquipmentSlot.HAND) { p.getInventory().setItemInMainHand(item); - } else { + } + else { p.getInventory().setItemInOffHand(item); } - PlayerInventory.update(p); - } else { Messages.local.sendTranslation(p, "messages.hungry", true); } From 4c30764dac85d3c220a6514fef476d277102f321 Mon Sep 17 00:00:00 2001 From: LinoxGH <54643600+LinoxGH@users.noreply.github.com> Date: Sat, 31 Aug 2019 02:15:41 +0300 Subject: [PATCH 090/169] Improved the Storm Staff recipe a bit. --- src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java index 2a0720012..d684dadee 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java @@ -867,7 +867,7 @@ public final class SlimefunSetup { .register(true); new SlimefunItem(Categories.MAGIC, SlimefunItems.STAFF_STORM, "STAFF_ELEMENTAL_STORM", RecipeType.ANCIENT_ALTAR, - new ItemStack[] {SlimefunItems.RUNE_AIR, SlimefunItems.RUNE_WATER, SlimefunItems.ENDER_LUMP_3, SlimefunItems.STAFF_WATER, SlimefunItems.STAFF_WIND, SlimefunItems.MAGIC_SUGAR, SlimefunItems.ENDER_LUMP_3, SlimefunItems.RUNE_WATER, SlimefunItems.RUNE_AIR}) + new ItemStack[] {SlimefunItems.RUNE_AIR, SlimefunItems.RUNE_WATER, SlimefunItems.ENDER_LUMP_3, SlimefunItems.STAFF_WATER, SlimefunItems.MAGIC_SUGAR, SlimefunItems.STAFF_WIND, SlimefunItems.ENDER_LUMP_3, SlimefunItems.RUNE_WATER, SlimefunItems.RUNE_AIR}) .register(true, new ItemInteractionHandler() { @Override From e78e749e94ddff444d2b440b282433503d593553 Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Sat, 31 Aug 2019 11:36:45 +0200 Subject: [PATCH 091/169] Insanely huge Refactoring --- .../Slimefun/GEO/OreGenSystem.java | 8 +-- .../mrCookieSlime/Slimefun/GPS/Elevator.java | 4 +- .../Slimefun/GPS/GPSNetwork.java | 8 +-- .../Slimefun/GPS/TeleportationSequence.java | 10 ++-- .../Slimefun/Misc/BookDesign.java | 9 --- .../Slimefun/Objects/Research.java | 38 ++++++------- .../Objects/SlimefunItem/SlimefunItem.java | 38 ++++++------- .../SlimefunItem/abstractItems/AReactor.java | 6 +- .../SlimefunItem/machines/AutoEnchanter.java | 4 +- .../SlimefunItem/machines/BlockPlacer.java | 6 +- .../SlimefunItem/machines/Composter.java | 4 +- .../SlimefunItem/machines/Crucible.java | 4 +- .../machines/ElectricDustWasher.java | 6 +- .../machines/WitherAssembler.java | 4 +- .../SlimefunItem/multiblocks/ArmorForge.java | 4 +- .../multiblocks/AutomatedPanningMachine.java | 4 +- .../SlimefunItem/multiblocks/Compressor.java | 4 +- .../multiblocks/MagicWorkbench.java | 4 +- .../SlimefunItem/multiblocks/OreWasher.java | 4 +- .../multiblocks/PressureChamber.java | 4 +- .../SlimefunItem/multiblocks/Smeltery.java | 4 +- .../Slimefun/Setup/MiscSetup.java | 18 +++--- .../PostSlimefunLoadingHandler.java | 2 +- .../Slimefun/Setup/SlimefunManager.java | 4 +- .../Slimefun/Setup/SlimefunSetup.java | 29 +++++----- .../mrCookieSlime/Slimefun/SlimefunGuide.java | 56 +++++++++---------- ...imefunStartup.java => SlimefunPlugin.java} | 44 +++++++-------- .../Slimefun/ancient_altar/AltarRecipe.java | 4 +- .../ancient_altar/AncientAltarListener.java | 12 ++-- .../Slimefun/ancient_altar/Pedestals.java | 4 +- .../ancient_altar/RitualAnimation.java | 8 +-- .../androids/ProgrammableAndroid.java | 20 +++---- .../Slimefun/api/BlockStorage.java | 10 ++-- .../Slimefun/api/ErrorReport.java | 4 +- .../Slimefun/api/PlayerProfile.java | 14 ++--- .../mrCookieSlime/Slimefun/api/Slimefun.java | 34 +++++------ .../Slimefun/api/SlimefunGuideLayout.java | 9 +++ src/me/mrCookieSlime/Slimefun/api/Soul.java | 10 ++-- .../Slimefun/api/TickerTask.java | 8 +-- .../Slimefun/api/energy/ChargableBlock.java | 4 +- .../Slimefun/api/energy/EnergyNet.java | 6 +- .../api/inventory/BlockMenuPreset.java | 4 +- .../Slimefun/api/item_transport/CargoNet.java | 4 +- .../api/item_transport/ChestManipulator.java | 6 +- .../Slimefun/api/network/Network.java | 4 +- .../Slimefun/autosave/BlockAutoSaver.java | 4 +- .../Slimefun/commands/SlimefunCommand.java | 16 +++--- .../Slimefun/holograms/CargoHologram.java | 4 +- .../Slimefun/holograms/EnergyHologram.java | 6 +- .../Slimefun/holograms/ReactorHologram.java | 6 +- .../Slimefun/hooks/ClearLagHook.java | 4 +- .../Slimefun/hooks/PlaceholderAPIHook.java | 8 +-- .../Slimefun/hooks/SlimefunHooks.java | 4 +- .../Slimefun/hooks/github/Contributor.java | 4 +- .../hooks/github/GitHubConnector.java | 8 +-- .../Slimefun/hooks/github/GitHubSetup.java | 24 ++++---- .../listeners/AndroidKillingListener.java | 6 +- .../Slimefun/listeners/ArmorListener.java | 4 +- .../listeners/AutonomousToolsListener.java | 4 +- .../Slimefun/listeners/BackpackListener.java | 6 +- .../Slimefun/listeners/BlockListener.java | 4 +- .../Slimefun/listeners/BowListener.java | 12 ++-- .../Slimefun/listeners/CoolerListener.java | 4 +- .../Slimefun/listeners/DamageListener.java | 6 +- .../Slimefun/listeners/FurnaceListener.java | 4 +- .../Slimefun/listeners/GearListener.java | 12 ++-- .../listeners/GuideOnJoinListener.java | 12 ++-- .../Slimefun/listeners/ItemListener.java | 42 +++++++------- .../listeners/ItemPickupListener.java | 4 +- .../Slimefun/listeners/NetworkListener.java | 4 +- .../listeners/PlayerQuitListener.java | 6 +- .../Slimefun/listeners/TalismanListener.java | 6 +- .../listeners/TeleporterListener.java | 4 +- .../Slimefun/listeners/ToolListener.java | 6 +- .../Slimefun/listeners/WorldListener.java | 10 ++-- .../Slimefun/utils/Utilities.java | 6 ++ src/plugin.yml | 2 +- 77 files changed, 373 insertions(+), 374 deletions(-) delete mode 100644 src/me/mrCookieSlime/Slimefun/Misc/BookDesign.java rename src/me/mrCookieSlime/Slimefun/{Misc => Setup}/PostSlimefunLoadingHandler.java (86%) rename src/me/mrCookieSlime/Slimefun/{SlimefunStartup.java => SlimefunPlugin.java} (96%) create mode 100644 src/me/mrCookieSlime/Slimefun/api/SlimefunGuideLayout.java diff --git a/src/me/mrCookieSlime/Slimefun/GEO/OreGenSystem.java b/src/me/mrCookieSlime/Slimefun/GEO/OreGenSystem.java index 1ec6e4ab5..c6fe6d833 100644 --- a/src/me/mrCookieSlime/Slimefun/GEO/OreGenSystem.java +++ b/src/me/mrCookieSlime/Slimefun/GEO/OreGenSystem.java @@ -6,7 +6,7 @@ import org.bukkit.Chunk; import org.bukkit.block.Biome; import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config; -import me.mrCookieSlime.Slimefun.SlimefunStartup; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.api.BlockStorage; public final class OreGenSystem { @@ -14,11 +14,11 @@ public final class OreGenSystem { private OreGenSystem() {} public static Collection listResources() { - return SlimefunStartup.instance.getUtilities().resources.values(); + return SlimefunPlugin.getUtilities().resources.values(); } public static void registerResource(OreGenResource resource) { - SlimefunStartup.instance.getUtilities().resources.put(resource.getName(), resource); + SlimefunPlugin.getUtilities().resources.put(resource.getName(), resource); System.out.println("[Slimefun - GEO] Registering Ore Gen: " + resource.getName()); Config cfg = new Config("plugins/Slimefun/generators/" + resource.getName() + ".cfg"); @@ -29,7 +29,7 @@ public final class OreGenSystem { } public static OreGenResource getResource(String name) { - return SlimefunStartup.instance.getUtilities().resources.get(name); + return SlimefunPlugin.getUtilities().resources.get(name); } private static int getDefault(OreGenResource resource, Biome biome) { diff --git a/src/me/mrCookieSlime/Slimefun/GPS/Elevator.java b/src/me/mrCookieSlime/Slimefun/GPS/Elevator.java index 3b177ed91..7f3c67601 100644 --- a/src/me/mrCookieSlime/Slimefun/GPS/Elevator.java +++ b/src/me/mrCookieSlime/Slimefun/GPS/Elevator.java @@ -15,7 +15,7 @@ import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ChestMenu; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.CustomBookOverlay; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.MenuHelper; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; -import me.mrCookieSlime.Slimefun.SlimefunStartup; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.Setup.Messages; import me.mrCookieSlime.Slimefun.api.BlockStorage; @@ -53,7 +53,7 @@ public final class Elevator { } public static void openDialogue(Player p, Block b) { - Set elevatorUsers = SlimefunStartup.instance.getUtilities().elevatorUsers; + Set elevatorUsers = SlimefunPlugin.getUtilities().elevatorUsers; if (elevatorUsers.contains(p.getUniqueId())) { elevatorUsers.remove(p.getUniqueId()); diff --git a/src/me/mrCookieSlime/Slimefun/GPS/GPSNetwork.java b/src/me/mrCookieSlime/Slimefun/GPS/GPSNetwork.java index 9bb981814..c82d2d525 100644 --- a/src/me/mrCookieSlime/Slimefun/GPS/GPSNetwork.java +++ b/src/me/mrCookieSlime/Slimefun/GPS/GPSNetwork.java @@ -24,7 +24,7 @@ import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.MenuHelper; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; import me.mrCookieSlime.CSCoreLibPlugin.general.Math.DoubleHandler; import me.mrCookieSlime.CSCoreLibPlugin.general.World.CustomSkull; -import me.mrCookieSlime.Slimefun.SlimefunStartup; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.GEO.OreGenResource; import me.mrCookieSlime.Slimefun.GEO.OreGenSystem; import me.mrCookieSlime.Slimefun.Setup.Messages; @@ -249,14 +249,14 @@ public class GPSNetwork { } public static void openTeleporterGUI(Player p, UUID uuid, Block b, final int complexity) throws Exception { - if (SlimefunStartup.instance.getUtilities().teleporterUsers.contains(p.getUniqueId())) return; + if (SlimefunPlugin.getUtilities().teleporterUsers.contains(p.getUniqueId())) return; p.playSound(p.getLocation(), Sound.UI_BUTTON_CLICK, 1F, 1F); - SlimefunStartup.instance.getUtilities().teleporterUsers.add(p.getUniqueId()); + SlimefunPlugin.getUtilities().teleporterUsers.add(p.getUniqueId()); ChestMenu menu = new ChestMenu("&3Teleporter"); - menu.addMenuCloseHandler(pl -> SlimefunStartup.instance.getUtilities().teleporterUsers.remove(pl.getUniqueId())); + menu.addMenuCloseHandler(pl -> SlimefunPlugin.getUtilities().teleporterUsers.remove(pl.getUniqueId())); for (int slot : teleporter_border) { menu.addItem(slot, new CustomItem(new ItemStack(Material.GRAY_STAINED_GLASS_PANE), " "), diff --git a/src/me/mrCookieSlime/Slimefun/GPS/TeleportationSequence.java b/src/me/mrCookieSlime/Slimefun/GPS/TeleportationSequence.java index 7572a62c8..8e77769bc 100644 --- a/src/me/mrCookieSlime/Slimefun/GPS/TeleportationSequence.java +++ b/src/me/mrCookieSlime/Slimefun/GPS/TeleportationSequence.java @@ -13,14 +13,14 @@ import org.bukkit.potion.PotionEffectType; import me.mrCookieSlime.CSCoreLibPlugin.general.World.TitleBuilder; import me.mrCookieSlime.CSCoreLibPlugin.general.World.TitleBuilder.TitleType; -import me.mrCookieSlime.Slimefun.SlimefunStartup; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; public final class TeleportationSequence { private TeleportationSequence() {} public static void start(UUID uuid, int complexity, Location source, Location destination, boolean resistance) { - SlimefunStartup.instance.getUtilities().teleporterUsers.add(uuid); + SlimefunPlugin.getUtilities().teleporterUsers.add(uuid); updateProgress(uuid, getSpeed(complexity, source, destination), 1, source, destination, resistance); } @@ -48,7 +48,7 @@ public final class TeleportationSequence { } private static void cancel(UUID uuid, Player p) { - SlimefunStartup.instance.getUtilities().teleporterUsers.remove(uuid); + SlimefunPlugin.getUtilities().teleporterUsers.remove(uuid); if (p != null) { try { @@ -83,7 +83,7 @@ public final class TeleportationSequence { destination.getWorld().spawnParticle(Particle.PORTAL,new Location(destination.getWorld(), destination.getX(), destination.getY() + 1, destination.getZ()),progress * 2, 0.2F, 0.8F, 0.2F ); destination.getWorld().playSound(destination, Sound.ENTITY_BLAZE_DEATH, 2F, 1.4F); - SlimefunStartup.instance.getUtilities().teleporterUsers.remove(uuid); + SlimefunPlugin.getUtilities().teleporterUsers.remove(uuid); } else { TitleBuilder title = (TitleBuilder) new TitleBuilder(0, 60, 0).addText(ChatColor.translateAlternateColorCodes('&', "&3Teleporting...")); @@ -95,7 +95,7 @@ public final class TeleportationSequence { source.getWorld().spawnParticle(Particle.PORTAL, source, progress * 2, 0.2F, 0.8F, 0.2F); source.getWorld().playSound(source, Sound.UI_BUTTON_CLICK, 1.7F, 0.6F); - Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> updateProgress(uuid, speed, progress + speed, source, destination, resistance), 10L); + Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> updateProgress(uuid, speed, progress + speed, source, destination, resistance), 10L); } } catch (Exception e) { e.printStackTrace(); diff --git a/src/me/mrCookieSlime/Slimefun/Misc/BookDesign.java b/src/me/mrCookieSlime/Slimefun/Misc/BookDesign.java deleted file mode 100644 index d38730b91..000000000 --- a/src/me/mrCookieSlime/Slimefun/Misc/BookDesign.java +++ /dev/null @@ -1,9 +0,0 @@ -package me.mrCookieSlime.Slimefun.Misc; - -public enum BookDesign { - - BOOK, - CHEST, - CHEAT_SHEET; - -} diff --git a/src/me/mrCookieSlime/Slimefun/Objects/Research.java b/src/me/mrCookieSlime/Slimefun/Objects/Research.java index eec384d4a..b159491a1 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/Research.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/Research.java @@ -17,7 +17,7 @@ import org.bukkit.entity.Player; import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Variable; import me.mrCookieSlime.CSCoreLibPlugin.general.Particles.FireworkShow; -import me.mrCookieSlime.Slimefun.SlimefunStartup; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.Events.ResearchUnlockEvent; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Setup.Messages; @@ -80,7 +80,7 @@ public class Research { } public boolean isEnabled() { - return SlimefunStartup.instance.getSettings().researchesEnabled && enabled; + return SlimefunPlugin.getSettings().researchesEnabled && enabled; } /** @@ -214,7 +214,7 @@ public class Research { */ public boolean canUnlock(Player p) { if (!isEnabled()) return true; - return (p.getGameMode() == GameMode.CREATIVE && SlimefunStartup.instance.getSettings().researchesFreeInCreative) || p.getLevel() >= this.cost; + return (p.getGameMode() == GameMode.CREATIVE && SlimefunPlugin.getSettings().researchesFreeInCreative) || p.getLevel() >= this.cost; } /** @@ -247,29 +247,29 @@ public class Research { PlayerProfile.fromUUID(p.getUniqueId()).setResearched(this, true); Messages.local.sendTranslation(p, "messages.unlocked", true, new Variable("%research%", getName())); - if (SlimefunStartup.getCfg().getBoolean("options.research-unlock-fireworks")) { + if (SlimefunPlugin.getCfg().getBoolean("options.research-unlock-fireworks")) { FireworkShow.launchRandom(p, 1); } }; if (!event.isCancelled()) { if (instant) runnable.run(); - else if (!SlimefunStartup.instance.getUtilities().researching.contains(p.getUniqueId())){ - SlimefunStartup.instance.getUtilities().researching.add(p.getUniqueId()); + else if (!SlimefunPlugin.getUtilities().researching.contains(p.getUniqueId())){ + SlimefunPlugin.getUtilities().researching.add(p.getUniqueId()); Messages.local.sendTranslation(p, "messages.research.start", true, new Variable("%research%", getName())); for (int i = 1; i < research_progress.length + 1; i++) { int j = i; - Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> { + Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> { p.playSound(p.getLocation(), Sound.ENTITY_BAT_TAKEOFF, 0.7F, 1F); Messages.local.sendTranslation(p, "messages.research.progress", true, new Variable("%research%", getName()), new Variable("%progress%", research_progress[j - 1] + "%")); }, i * 20L); } - Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> { + Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> { runnable.run(); - SlimefunStartup.instance.getUtilities().researching.remove(p.getUniqueId()); + SlimefunPlugin.getUtilities().researching.remove(p.getUniqueId()); }, (research_progress.length + 1) * 20L); } } @@ -282,9 +282,9 @@ public class Research { * @since 4.0 */ public void register() { - SlimefunStartup.getResearchCfg().setDefaultValue("enable-researching", true); + SlimefunPlugin.getResearchCfg().setDefaultValue("enable-researching", true); - if (SlimefunStartup.getResearchCfg().contains(this.getID() + ".enabled") && !SlimefunStartup.getResearchCfg().getBoolean(this.getID() + ".enabled")) { + if (SlimefunPlugin.getResearchCfg().contains(this.getID() + ".enabled") && !SlimefunPlugin.getResearchCfg().getBoolean(this.getID() + ".enabled")) { Iterator iterator = items.iterator(); while (iterator.hasNext()) { SlimefunItem item = iterator.next(); @@ -294,16 +294,16 @@ public class Research { return; } - SlimefunStartup.getResearchCfg().setDefaultValue(this.getID() + ".name", this.getName()); - SlimefunStartup.getResearchCfg().setDefaultValue(this.getID() + ".cost", this.getCost()); - SlimefunStartup.getResearchCfg().setDefaultValue(this.getID() + ".enabled", true); + SlimefunPlugin.getResearchCfg().setDefaultValue(this.getID() + ".name", this.getName()); + SlimefunPlugin.getResearchCfg().setDefaultValue(this.getID() + ".cost", this.getCost()); + SlimefunPlugin.getResearchCfg().setDefaultValue(this.getID() + ".enabled", true); - this.name = SlimefunStartup.getResearchCfg().getString(this.getID() + ".name"); - this.cost = SlimefunStartup.getResearchCfg().getInt(this.getID() + ".cost"); - this.enabled = SlimefunStartup.getResearchCfg().getBoolean(this.getID() + ".enabled"); + this.name = SlimefunPlugin.getResearchCfg().getString(this.getID() + ".name"); + this.cost = SlimefunPlugin.getResearchCfg().getInt(this.getID() + ".cost"); + this.enabled = SlimefunPlugin.getResearchCfg().getBoolean(this.getID() + ".enabled"); list.add(this); - if (SlimefunStartup.getCfg().getBoolean("options.print-out-loading")) System.out.println("[Slimefun] Loaded Research \"" + this.getName() + "\""); + if (SlimefunPlugin.getCfg().getBoolean("options.print-out-loading")) System.out.println("[Slimefun] Loaded Research \"" + this.getName() + "\""); } /** @@ -327,7 +327,7 @@ public class Research { * @since 4.0 */ public static boolean isResearching(Player p) { - return SlimefunStartup.instance.getUtilities().researching.contains(p.getUniqueId()); + return SlimefunPlugin.getUtilities().researching.contains(p.getUniqueId()); } /** diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java index 443bbed0a..577afc924 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java @@ -15,7 +15,7 @@ import org.bukkit.block.Block; import org.bukkit.entity.EntityType; import org.bukkit.inventory.ItemStack; -import me.mrCookieSlime.Slimefun.SlimefunStartup; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; import me.mrCookieSlime.Slimefun.Objects.Category; @@ -213,41 +213,41 @@ public class SlimefunItem { if (this.recipe.length < 9) this.recipe = new ItemStack[] {null, null, null, null, null, null, null, null, null}; all.add(this); - SlimefunStartup.getItemCfg().setDefaultValue(this.id + ".enabled", true); - SlimefunStartup.getItemCfg().setDefaultValue(this.id + ".can-be-used-in-workbenches", this.replacing); - SlimefunStartup.getItemCfg().setDefaultValue(this.id + ".hide-in-guide", this.hidden); - SlimefunStartup.getItemCfg().setDefaultValue(this.id + ".allow-enchanting", this.enchantable); - SlimefunStartup.getItemCfg().setDefaultValue(this.id + ".allow-disenchanting", this.disenchantable); - SlimefunStartup.getItemCfg().setDefaultValue(this.id + ".required-permission", this.permission); + SlimefunPlugin.getItemCfg().setDefaultValue(this.id + ".enabled", true); + SlimefunPlugin.getItemCfg().setDefaultValue(this.id + ".can-be-used-in-workbenches", this.replacing); + SlimefunPlugin.getItemCfg().setDefaultValue(this.id + ".hide-in-guide", this.hidden); + SlimefunPlugin.getItemCfg().setDefaultValue(this.id + ".allow-enchanting", this.enchantable); + SlimefunPlugin.getItemCfg().setDefaultValue(this.id + ".allow-disenchanting", this.disenchantable); + SlimefunPlugin.getItemCfg().setDefaultValue(this.id + ".required-permission", this.permission); if (this.keys != null && this.values != null) { for (int i = 0; i < this.keys.length; i++) { - SlimefunStartup.getItemCfg().setDefaultValue(this.id + "." + this.keys[i], this.values[i]); + SlimefunPlugin.getItemCfg().setDefaultValue(this.id + "." + this.keys[i], this.values[i]); } } for (World world: Bukkit.getWorlds()) { - SlimefunStartup.getWhitelist().setDefaultValue(world.getName() + ".enabled", true); - SlimefunStartup.getWhitelist().setDefaultValue(world.getName() + ".enabled-items." + this.id, true); + SlimefunPlugin.getWhitelist().setDefaultValue(world.getName() + ".enabled", true); + SlimefunPlugin.getWhitelist().setDefaultValue(world.getName() + ".enabled-items." + this.id, true); } - if (this.ticking && !SlimefunStartup.getCfg().getBoolean("URID.enable-tickers")) { + if (this.ticking && !SlimefunPlugin.getCfg().getBoolean("URID.enable-tickers")) { this.state = State.DISABLED; return; } - if (SlimefunStartup.getItemCfg().getBoolean(id + ".enabled")) { + if (SlimefunPlugin.getItemCfg().getBoolean(id + ".enabled")) { if (!Category.list().contains(category)) category.register(); this.state = State.ENABLED; - this.replacing = SlimefunStartup.getItemCfg().getBoolean(this.id + ".can-be-used-in-workbenches"); - this.hidden = SlimefunStartup.getItemCfg().getBoolean(this.id + ".hide-in-guide"); - this.enchantable = SlimefunStartup.getItemCfg().getBoolean(this.id + ".allow-enchanting"); - this.disenchantable = SlimefunStartup.getItemCfg().getBoolean(this.id + ".allow-disenchanting"); - this.permission = SlimefunStartup.getItemCfg().getString(this.id + ".required-permission"); + this.replacing = SlimefunPlugin.getItemCfg().getBoolean(this.id + ".can-be-used-in-workbenches"); + this.hidden = SlimefunPlugin.getItemCfg().getBoolean(this.id + ".hide-in-guide"); + this.enchantable = SlimefunPlugin.getItemCfg().getBoolean(this.id + ".allow-enchanting"); + this.disenchantable = SlimefunPlugin.getItemCfg().getBoolean(this.id + ".allow-disenchanting"); + this.permission = SlimefunPlugin.getItemCfg().getString(this.id + ".required-permission"); items.add(this); - if (slimefun) SlimefunStartup.instance.getUtilities().vanillaItems++; + if (slimefun) SlimefunPlugin.getUtilities().vanillaItems++; mapID.put(this.id, this); this.create(); @@ -257,7 +257,7 @@ public class SlimefunItem { handlers.put(handler.toCodename(), handlerset); } - if (SlimefunStartup.getCfg().getBoolean("options.print-out-loading")) System.out.println("[Slimefun] Loaded Item \"" + this.id + "\""); + if (SlimefunPlugin.getCfg().getBoolean("options.print-out-loading")) System.out.println("[Slimefun] Loaded Item \"" + this.id + "\""); } else { if (this instanceof VanillaItem) this.state = State.VANILLA; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AReactor.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AReactor.java index 7e27641a3..2e5ec43d9 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AReactor.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AReactor.java @@ -24,7 +24,7 @@ import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.InvUtils; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; import me.mrCookieSlime.CSCoreLibPlugin.general.World.CustomSkull; -import me.mrCookieSlime.Slimefun.SlimefunStartup; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; import me.mrCookieSlime.Slimefun.Objects.Category; @@ -280,7 +280,7 @@ public abstract class AReactor extends SlimefunItem { if (space >= produced || !BlockStorage.getLocationInfo(l, "reactor-mode").equals("generator")) { progress.put(l, timeleft - 1); - Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> { + Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> { if (!l.getBlock().getRelative(cooling[new Random().nextInt(cooling.length)]).isLiquid()) explode.add(l); }); @@ -373,7 +373,7 @@ public abstract class AReactor extends SlimefunItem { if (explosion) { BlockStorage.getInventory(l).close(); - Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> ReactorHologram.remove(l), 0); + Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> ReactorHologram.remove(l), 0); explode.remove(l); processing.remove(l); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoEnchanter.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoEnchanter.java index 3e61b63a7..1673148dd 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoEnchanter.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoEnchanter.java @@ -19,7 +19,7 @@ import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.InvUtils; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; import me.mrCookieSlime.EmeraldEnchants.EmeraldEnchants; import me.mrCookieSlime.EmeraldEnchants.ItemEnchantment; -import me.mrCookieSlime.Slimefun.SlimefunStartup; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; @@ -123,7 +123,7 @@ public class AutoEnchanter extends AContainer { specialAmount += EmeraldEnchants.getInstance().getRegistry().getEnchantments(target).size(); } - if (amount > 0 && specialAmount <= SlimefunStartup.instance.getSettings().emeraldEnchantsLimit) { + if (amount > 0 && specialAmount <= SlimefunPlugin.getSettings().emeraldEnchantsLimit) { ItemStack newItem = target.clone(); for (Map.Entry e: enchantments.entrySet()) { newItem.addUnsafeEnchantment(e.getKey(), e.getValue()); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/BlockPlacer.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/BlockPlacer.java index 25aebe13e..371cb5b3c 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/BlockPlacer.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/BlockPlacer.java @@ -11,7 +11,7 @@ import org.bukkit.event.block.BlockDispenseEvent; import org.bukkit.inventory.ItemStack; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; -import me.mrCookieSlime.Slimefun.SlimefunStartup; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; @@ -52,7 +52,7 @@ public class BlockPlacer extends SlimefunItem { 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(SlimefunStartup.instance, () -> d.getInventory().removeItem(e.getItem()), 2L); + Bukkit.getScheduler().runTaskLater(SlimefunPlugin.instance, () -> d.getInventory().removeItem(e.getItem()), 2L); } } } @@ -61,7 +61,7 @@ public class BlockPlacer extends SlimefunItem { 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(SlimefunStartup.instance, () -> d.getInventory().removeItem(e.getItem()), 2L); + Bukkit.getScheduler().runTaskLater(SlimefunPlugin.instance, () -> d.getInventory().removeItem(e.getItem()), 2L); } } } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/Composter.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/Composter.java index 7b8a23c40..f9eb96d9e 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/Composter.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/Composter.java @@ -11,7 +11,7 @@ import org.bukkit.inventory.ItemStack; import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib; import me.mrCookieSlime.CSCoreLibPlugin.events.ItemUseEvent; -import me.mrCookieSlime.Slimefun.SlimefunStartup; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunGadget; @@ -49,7 +49,7 @@ public class Composter extends SlimefunGadget { for (int i = 1; i < 12; i++) { int j = i; - Bukkit.getScheduler().runTaskLater(SlimefunStartup.instance, () -> { + Bukkit.getScheduler().runTaskLater(SlimefunPlugin.instance, () -> { if (j < 11) { b.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, input.getType().isBlock() ? input.getType() : Material.HAY_BLOCK); } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/Crucible.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/Crucible.java index d21199971..71a166c3b 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/Crucible.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/Crucible.java @@ -12,7 +12,7 @@ import org.bukkit.inventory.ItemStack; import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib; import me.mrCookieSlime.CSCoreLibPlugin.compatibility.MaterialHelper; import me.mrCookieSlime.CSCoreLibPlugin.events.ItemUseEvent; -import me.mrCookieSlime.Slimefun.SlimefunStartup; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunGadget; @@ -49,7 +49,7 @@ public class Crucible extends SlimefunGadget { for (int i = 1; i < 9; i++) { int j = 8 - i; - Bukkit.getScheduler().runTaskLater(SlimefunStartup.instance, () -> { + Bukkit.getScheduler().runTaskLater(SlimefunPlugin.instance, () -> { if (input.getType() == Material.COBBLESTONE || input.getType() == Material.TERRACOTTA || MaterialHelper.isTerracotta(input.getType())) { block.setType(Material.LAVA); Levelled le = (Levelled) block.getBlockData(); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricDustWasher.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricDustWasher.java index f86d54a03..fe7a8a408 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricDustWasher.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricDustWasher.java @@ -12,7 +12,7 @@ import org.bukkit.inventory.meta.ItemMeta; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.InvUtils; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; -import me.mrCookieSlime.Slimefun.SlimefunStartup; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; import me.mrCookieSlime.Slimefun.Objects.Category; @@ -81,7 +81,7 @@ public abstract class ElectricDustWasher extends AContainer { else { for (int slot: getInputSlots()) { if (SlimefunManager.isItemSimiliar(BlockStorage.getInventory(b).getItemInSlot(slot), SlimefunItems.SIFTED_ORE, true)) { - if (!SlimefunStartup.instance.getSettings().legacyDustWasher) { + if (!SlimefunPlugin.getSettings().legacyDustWasher) { boolean emptySlot = false; for (int output_slot: getOutputSlots()) { @@ -95,7 +95,7 @@ public abstract class ElectricDustWasher extends AContainer { ItemStack adding = OreWasher.items[new Random().nextInt(OreWasher.items.length)]; MachineRecipe r = new MachineRecipe(4 / getSpeed(), new ItemStack[0], new ItemStack[] {adding}); - if (SlimefunStartup.instance.getSettings().legacyDustWasher && !fits(b, r.getOutput())) return; + if (SlimefunPlugin.getSettings().legacyDustWasher && !fits(b, r.getOutput())) return; BlockStorage.getInventory(b).replaceExistingItem(slot, InvUtils.decreaseItem(BlockStorage.getInventory(b).getItemInSlot(slot), 1)); processing.put(b, r); progress.put(b, r.getTicks()); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/WitherAssembler.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/WitherAssembler.java index bce6377c7..67e3b1a4b 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/WitherAssembler.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/WitherAssembler.java @@ -13,7 +13,7 @@ import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.InvUtils; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; import me.mrCookieSlime.CSCoreLibPlugin.general.Math.DoubleHandler; -import me.mrCookieSlime.Slimefun.SlimefunStartup; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler; @@ -245,7 +245,7 @@ public class WitherAssembler extends SlimefunItem { final double offset = Double.parseDouble(BlockStorage.getLocationInfo(b.getLocation(), "offset")); - Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> b.getWorld().spawnEntity(new Location(b.getWorld(), b.getX() + 0.5D, b.getY() + offset, b.getZ() + 0.5D), EntityType.WITHER)); + Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> b.getWorld().spawnEntity(new Location(b.getWorld(), b.getX() + 0.5D, b.getY() + offset, b.getZ() + 0.5D), EntityType.WITHER)); } } } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/ArmorForge.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/ArmorForge.java index d39b92896..4bdb30793 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/ArmorForge.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/ArmorForge.java @@ -13,7 +13,7 @@ import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; -import me.mrCookieSlime.Slimefun.SlimefunStartup; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.Lists.Categories; import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; @@ -61,7 +61,7 @@ public class ArmorForge extends MultiBlockMachine { for (int j = 0; j < 4; j++) { int current = j; - Bukkit.getScheduler().runTaskLater(SlimefunStartup.instance, () -> { + Bukkit.getScheduler().runTaskLater(SlimefunPlugin.instance, () -> { if (current < 3) { p.getWorld().playSound(p.getLocation(), Sound.BLOCK_ANVIL_USE, 1F, 2F); } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/AutomatedPanningMachine.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/AutomatedPanningMachine.java index 8e2b67c6a..26d2dd234 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/AutomatedPanningMachine.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/AutomatedPanningMachine.java @@ -12,7 +12,7 @@ import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; import me.mrCookieSlime.CSCoreLibPlugin.general.Player.PlayerInventory; -import me.mrCookieSlime.Slimefun.SlimefunStartup; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.Lists.Categories; import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; import me.mrCookieSlime.Slimefun.Setup.Messages; @@ -52,7 +52,7 @@ public class AutomatedPanningMachine extends MultiBlockMachine { PlayerInventory.consumeItemInHand(p); for (int i = 1; i < 7; i++) { int j = i; - Bukkit.getScheduler().runTaskLater(SlimefunStartup.instance, () -> { + Bukkit.getScheduler().runTaskLater(SlimefunPlugin.instance, () -> { b.getWorld().playEffect(b.getRelative(BlockFace.DOWN).getLocation(), Effect.STEP_SOUND, Material.GRAVEL); if (j == 6) { if (drop != null) b.getWorld().dropItemNaturally(b.getLocation(), drop); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/Compressor.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/Compressor.java index 55672e00a..4c8f2a864 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/Compressor.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/Compressor.java @@ -11,7 +11,7 @@ import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; -import me.mrCookieSlime.Slimefun.SlimefunStartup; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.Lists.Categories; import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; @@ -54,7 +54,7 @@ public class Compressor extends MultiBlockMachine { for (int i = 0; i < 4; i++) { int j = i; - Bukkit.getScheduler().runTaskLater(SlimefunStartup.instance, () -> { + Bukkit.getScheduler().runTaskLater(SlimefunPlugin.instance, () -> { if (j < 3) { p.getWorld().playSound(p.getLocation(), j == 1 ? Sound.BLOCK_PISTON_CONTRACT : Sound.BLOCK_PISTON_EXTEND, 1F, j == 0 ? 1F : 2F); } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/MagicWorkbench.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/MagicWorkbench.java index b4616e0ec..f70b40be4 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/MagicWorkbench.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/MagicWorkbench.java @@ -16,7 +16,7 @@ import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; -import me.mrCookieSlime.Slimefun.SlimefunStartup; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.Lists.Categories; import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; @@ -143,7 +143,7 @@ public class MagicWorkbench extends MultiBlockMachine { } for (int j = 0; j < 4; j++) { int current = j; - Bukkit.getScheduler().runTaskLater(SlimefunStartup.instance, () -> { + Bukkit.getScheduler().runTaskLater(SlimefunPlugin.instance, () -> { p.getWorld().playEffect(b.getLocation(), Effect.MOBSPAWNER_FLAMES, 1); p.getWorld().playEffect(b.getLocation(), Effect.ENDER_SIGNAL, 1); if (current < 3) { diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/OreWasher.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/OreWasher.java index 663428aed..5e274e5b2 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/OreWasher.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/OreWasher.java @@ -13,7 +13,7 @@ import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.InvUtils; -import me.mrCookieSlime.Slimefun.SlimefunStartup; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.Lists.Categories; import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; import me.mrCookieSlime.Slimefun.Setup.Messages; @@ -56,7 +56,7 @@ public class OreWasher extends MultiBlockMachine { ItemStack adding = items[new Random().nextInt(items.length)]; Inventory outputInv = null; - if (!SlimefunStartup.instance.getSettings().legacyOreWasher) { + if (!SlimefunPlugin.getSettings().legacyOreWasher) { // This is a fancy way of checking if there is empty space in the inv; by checking if an unobtainable item could fit in it. // However, due to the way the method findValidOutputInv() functions, the dummyAdding will never actually be added to the real inventory, // so it really doesn't matter what item the ItemStack is made by. SlimefunItems.DEBUG_FISH however, signals that it's diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/PressureChamber.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/PressureChamber.java index 766bfc7f7..b06a1d860 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/PressureChamber.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/PressureChamber.java @@ -12,7 +12,7 @@ import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; -import me.mrCookieSlime.Slimefun.SlimefunStartup; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.Lists.Categories; import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; @@ -53,7 +53,7 @@ public class PressureChamber extends MultiBlockMachine { for (int i = 0; i < 4; i++) { int j = i; - Bukkit.getScheduler().runTaskLater(SlimefunStartup.instance, () -> { + Bukkit.getScheduler().runTaskLater(SlimefunPlugin.instance, () -> { p.getWorld().playSound(b.getLocation(), Sound.ENTITY_TNT_PRIMED, 1, 1); p.getWorld().playEffect(b.getRelative(BlockFace.UP).getLocation(), Effect.SMOKE, 4); p.getWorld().playEffect(b.getRelative(BlockFace.UP).getLocation(), Effect.SMOKE, 4); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/Smeltery.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/Smeltery.java index 6286e9a03..63c94189b 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/Smeltery.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/Smeltery.java @@ -17,7 +17,7 @@ import org.bukkit.inventory.meta.Damageable; import org.bukkit.inventory.meta.ItemMeta; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; -import me.mrCookieSlime.Slimefun.SlimefunStartup; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.Lists.Categories; import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; @@ -77,7 +77,7 @@ public class Smeltery extends MultiBlockMachine { Hopper chamber = findHopper(dispBlock, BlockFace.NORTH, BlockFace.EAST, BlockFace.SOUTH, BlockFace.WEST); - if (new Random().nextInt(100) < SlimefunStartup.instance.getSettings().SMELTERY_FIRE_BREAK_CHANCE) { + if (new Random().nextInt(100) < SlimefunPlugin.getSettings().SMELTERY_FIRE_BREAK_CHANCE) { if (chamber != null) { if (chamber.getInventory().contains(Material.FLINT_AND_STEEL)) { ItemStack item = chamber.getInventory().getItem(chamber.getInventory().first(Material.FLINT_AND_STEEL)); diff --git a/src/me/mrCookieSlime/Slimefun/Setup/MiscSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/MiscSetup.java index f7c0c7d3d..ac39fd937 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/MiscSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/MiscSetup.java @@ -16,16 +16,16 @@ import org.bukkit.inventory.ItemStack; import me.mrCookieSlime.CSCoreLibPlugin.general.Chat.Colors; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItemSerializer; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItemSerializer.ItemFlag; -import me.mrCookieSlime.Slimefun.SlimefunStartup; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; -import me.mrCookieSlime.Slimefun.Misc.PostSlimefunLoadingHandler; import me.mrCookieSlime.Slimefun.Objects.Research; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.Alloy; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.ReplacingAlloy; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunMachine; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.AutomatedCraftingChamber; +import me.mrCookieSlime.Slimefun.Setup.PostSlimefunLoadingHandler; import me.mrCookieSlime.Slimefun.api.Slimefun; import me.mrCookieSlime.Slimefun.api.SlimefunRecipes; import me.mrCookieSlime.Slimefun.utils.Settings; @@ -34,8 +34,6 @@ public final class MiscSetup { private MiscSetup() {} - public static List postHandlers = new ArrayList<>(); - public static void setupMisc() { if (SlimefunItem.getByID("COMMON_TALISMAN") != null && (Boolean) Slimefun.getItemValue("COMMON_TALISMAN", "recipe-requires-nether-stars")) { SlimefunItem.getByID("COMMON_TALISMAN").setRecipe(new ItemStack[] {SlimefunItems.MAGIC_LUMP_2, SlimefunItems.GOLD_8K, SlimefunItems.MAGIC_LUMP_2, null, new ItemStack(Material.NETHER_STAR), null, SlimefunItems.MAGIC_LUMP_2, SlimefunItems.GOLD_8K, SlimefunItems.MAGIC_LUMP_2}); @@ -205,22 +203,22 @@ public final class MiscSetup { CommandSender sender = Bukkit.getConsoleSender(); ChatColor color = Colors.getRandom(); - for (PostSlimefunLoadingHandler handler: postHandlers) { + for (PostSlimefunLoadingHandler handler: SlimefunPlugin.getUtilities().postHandlers) { handler.run(pre, init, post); } sender.sendMessage(color + "###################### - Slimefun - ######################"); sender.sendMessage(color + "Successfully loaded " + SlimefunItem.list().size() + " Items (" + Research.list().size() + " Researches)"); - sender.sendMessage(color + "( " + SlimefunStartup.instance.getUtilities().vanillaItems + " Items from Slimefun, " + (SlimefunItem.list().size() - SlimefunStartup.instance.getUtilities().vanillaItems) + " Items from Addons )"); + sender.sendMessage(color + "( " + SlimefunPlugin.getUtilities().vanillaItems + " Items from Slimefun, " + (SlimefunItem.list().size() - SlimefunPlugin.getUtilities().vanillaItems) + " Items from Addons )"); sender.sendMessage(color + "##########################################################"); - SlimefunStartup.getItemCfg().save(); - SlimefunStartup.getResearchCfg().save(); - SlimefunStartup.getWhitelist().save(); + SlimefunPlugin.getItemCfg().save(); + SlimefunPlugin.getResearchCfg().save(); + SlimefunPlugin.getWhitelist().save(); } public static void setupItemSettings() { for (World world: Bukkit.getWorlds()) { - SlimefunStartup.getWhitelist().setDefaultValue(world.getName() + ".enabled-items.SLIMEFUN_GUIDE", true); + SlimefunPlugin.getWhitelist().setDefaultValue(world.getName() + ".enabled-items.SLIMEFUN_GUIDE", true); } Slimefun.setItemVariable("ORE_CRUSHER", "double-ores", true); diff --git a/src/me/mrCookieSlime/Slimefun/Misc/PostSlimefunLoadingHandler.java b/src/me/mrCookieSlime/Slimefun/Setup/PostSlimefunLoadingHandler.java similarity index 86% rename from src/me/mrCookieSlime/Slimefun/Misc/PostSlimefunLoadingHandler.java rename to src/me/mrCookieSlime/Slimefun/Setup/PostSlimefunLoadingHandler.java index e75244127..d54b47b04 100644 --- a/src/me/mrCookieSlime/Slimefun/Misc/PostSlimefunLoadingHandler.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/PostSlimefunLoadingHandler.java @@ -1,4 +1,4 @@ -package me.mrCookieSlime.Slimefun.Misc; +package me.mrCookieSlime.Slimefun.Setup; import java.util.List; diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunManager.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunManager.java index e67113894..9b6bf824f 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunManager.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunManager.java @@ -9,7 +9,7 @@ import org.bukkit.entity.EntityType; import org.bukkit.inventory.ItemStack; import org.bukkit.potion.PotionEffect; -import me.mrCookieSlime.Slimefun.SlimefunStartup; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.Lists.Categories; import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Objects.Category; @@ -21,7 +21,7 @@ public final class SlimefunManager { private SlimefunManager() {} - public static SlimefunStartup plugin; + public static SlimefunPlugin plugin; public static String prefix; public static Map> drops = new EnumMap<>(EntityType.class); diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java index afdc2a83e..ba0e81de1 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java @@ -62,14 +62,13 @@ import me.mrCookieSlime.CSCoreLibPlugin.general.Player.PlayerInventory; import me.mrCookieSlime.CSCoreLibPlugin.general.Recipe.RecipeCalculator; import me.mrCookieSlime.CSCoreLibPlugin.general.String.StringUtils; import me.mrCookieSlime.CSCoreLibPlugin.general.World.CustomSkull; -import me.mrCookieSlime.Slimefun.SlimefunStartup; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.GPS.Elevator; import me.mrCookieSlime.Slimefun.GPS.GPSNetwork; import me.mrCookieSlime.Slimefun.GPS.NetworkStatus; import me.mrCookieSlime.Slimefun.Lists.Categories; import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; -import me.mrCookieSlime.Slimefun.Misc.PostSlimefunLoadingHandler; import me.mrCookieSlime.Slimefun.Objects.MultiBlock; import me.mrCookieSlime.Slimefun.Objects.Research; import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler; @@ -679,7 +678,7 @@ public final class SlimefunSetup { new ItemStack[] {null, SlimefunItems.HOOK, SlimefunItems.HOOK, null, SlimefunItems.CHAIN, SlimefunItems.HOOK, SlimefunItems.CHAIN, null, null}) .register(true, new ItemInteractionHandler() { - private Utilities variables = SlimefunStartup.instance.getUtilities(); + private Utilities variables = SlimefunPlugin.getUtilities(); @Override public boolean onRightClick(ItemUseEvent e, Player p, ItemStack item) { @@ -1305,7 +1304,7 @@ public final class SlimefunSetup { if (InvUtils.fits(inv, adding)) { for (int i = 0; i < 4; i++) { int j = i; - Bukkit.getScheduler().runTaskLater(SlimefunStartup.instance, () -> { + Bukkit.getScheduler().runTaskLater(SlimefunPlugin.instance, () -> { if (j < 3) { b.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, ore); } else { @@ -1374,7 +1373,7 @@ public final class SlimefunSetup { if (InvUtils.fits(inv, adding)) { for (int i = 0; i < 4; i++) { int j = i; - Bukkit.getScheduler().runTaskLater(SlimefunStartup.instance, () -> { + Bukkit.getScheduler().runTaskLater(SlimefunPlugin.instance, () -> { if (j < 3) { b.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, ore); } @@ -1444,8 +1443,8 @@ public final class SlimefunSetup { for (int z = -1; z <= 1; z++) { Block b = e.getBlock().getRelative(x, y, z); if (b.getType() != Material.AIR && !b.isLiquid() && !StringUtils.equals(b.getType().toString(), explosiveblacklist) && CSCoreLib.getLib().getProtectionManager().canBuild(e.getPlayer().getUniqueId(), b)) { - if (SlimefunStartup.instance.getHooks().isCoreProtectInstalled()) { - SlimefunStartup.instance.getHooks().getCoreProtectAPI().logRemoval(e.getPlayer().getName(), b.getLocation(), b.getType(), b.getBlockData()); + if (SlimefunPlugin.getHooks().isCoreProtectInstalled()) { + SlimefunPlugin.getHooks().getCoreProtectAPI().logRemoval(e.getPlayer().getName(), b.getLocation(), b.getType(), b.getBlockData()); } b.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, b.getType()); @@ -1509,8 +1508,8 @@ public final class SlimefunSetup { } if (correctType) { if (CSCoreLib.getLib().getProtectionManager().canBuild(e.getPlayer().getUniqueId(), b)) { - if (SlimefunStartup.instance.getHooks().isCoreProtectInstalled()) { - SlimefunStartup.instance.getHooks().getCoreProtectAPI().logRemoval(e.getPlayer().getName(), b.getLocation(), b.getType(), b.getBlockData()); + if (SlimefunPlugin.getHooks().isCoreProtectInstalled()) { + SlimefunPlugin.getHooks().getCoreProtectAPI().logRemoval(e.getPlayer().getName(), b.getLocation(), b.getType(), b.getBlockData()); } b.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, b.getType()); @@ -1734,7 +1733,7 @@ public final class SlimefunSetup { FallingBlock block = ground.getWorld().spawnFallingBlock(ground.getBlock().getRelative(BlockFace.UP).getLocation(), ground.getBlock().getBlockData()); block.setDropItem(false); block.setVelocity(new Vector(0, 0.4 + i * 0.01, 0)); - SlimefunStartup.instance.getUtilities().blocks.add(block.getUniqueId()); + SlimefunPlugin.getUtilities().blocks.add(block.getUniqueId()); } for (Entity n: ground.getChunk().getEntities()) { if (n instanceof LivingEntity && n.getLocation().distance(ground) <= 2.0D && !n.getUniqueId().equals(p.getUniqueId())) { @@ -1980,7 +1979,7 @@ public final class SlimefunSetup { @Override public boolean onHit(EntityDamageByEntityEvent e, LivingEntity n) { - if (SlimefunManager.isItemSimiliar(SlimefunStartup.instance.getUtilities().arrows.get(e.getDamager().getUniqueId()), SlimefunItems.EXPLOSIVE_BOW, true)) { + if (SlimefunManager.isItemSimiliar(SlimefunPlugin.getUtilities().arrows.get(e.getDamager().getUniqueId()), SlimefunItems.EXPLOSIVE_BOW, true)) { Vector vector = n.getVelocity(); vector.setY(0.6); n.setVelocity(vector); @@ -1998,7 +1997,7 @@ public final class SlimefunSetup { @Override public boolean onHit(EntityDamageByEntityEvent e, LivingEntity n) { - if (SlimefunManager.isItemSimiliar(SlimefunStartup.instance.getUtilities().arrows.get(e.getDamager().getUniqueId()), SlimefunItems.ICY_BOW, true)) { + if (SlimefunManager.isItemSimiliar(SlimefunPlugin.getUtilities().arrows.get(e.getDamager().getUniqueId()), SlimefunItems.ICY_BOW, true)) { n.getWorld().playEffect(n.getLocation(), Effect.STEP_SOUND, Material.ICE); n.getWorld().playEffect(n.getEyeLocation(), Effect.STEP_SOUND, Material.ICE); n.addPotionEffect(new PotionEffect(PotionEffectType.SLOW, 20 * 2, 10)); @@ -2194,7 +2193,7 @@ public final class SlimefunSetup { public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) { Item stack = AncientAltarListener.findItem(b); if (stack != null) { - stack.removeMetadata("item_placed", SlimefunStartup.instance); + stack.removeMetadata("item_placed", SlimefunPlugin.instance); b.getWorld().dropItem(b.getLocation(), AncientAltarListener.fixItemStack(stack.getItemStack(), stack.getCustomName())); stack.remove(); } @@ -4042,7 +4041,7 @@ public final class SlimefunSetup { @Override public void extraTick(final Location l) { - Bukkit.getScheduler().runTaskLater(SlimefunStartup.instance, () -> { + Bukkit.getScheduler().runTaskLater(SlimefunPlugin.instance, () -> { for (Entity entity : ReactorHologram.getArmorStand(l, true).getNearbyEntities(5, 5, 5)) { if (entity instanceof LivingEntity) { ((LivingEntity) entity).addPotionEffect(new PotionEffect(PotionEffectType.WITHER, 60, 1)); @@ -4278,7 +4277,7 @@ public final class SlimefunSetup { } public static void registerPostHandler(PostSlimefunLoadingHandler handler) { - MiscSetup.postHandlers.add(handler); + SlimefunPlugin.getUtilities().postHandlers.add(handler); } } diff --git a/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java b/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java index c16510349..23ddb9d54 100644 --- a/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java +++ b/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java @@ -33,7 +33,6 @@ import me.mrCookieSlime.CSCoreLibPlugin.general.Math.DoubleHandler; import me.mrCookieSlime.CSCoreLibPlugin.general.String.StringUtils; import me.mrCookieSlime.CSCoreLibPlugin.general.World.CustomSkull; import me.mrCookieSlime.Slimefun.Lists.RecipeType; -import me.mrCookieSlime.Slimefun.Misc.BookDesign; import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.LockedCategory; import me.mrCookieSlime.Slimefun.Objects.Research; @@ -46,6 +45,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AReactor; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineFuel; import me.mrCookieSlime.Slimefun.Setup.Messages; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; +import me.mrCookieSlime.Slimefun.api.SlimefunGuideLayout; import me.mrCookieSlime.Slimefun.api.GuideHandler; import me.mrCookieSlime.Slimefun.api.PlayerProfile; import me.mrCookieSlime.Slimefun.api.Slimefun; @@ -72,10 +72,10 @@ public final class SlimefunGuide { @Deprecated public static ItemStack getItem() { - return getItem(BookDesign.CHEST); + return getItem(SlimefunGuideLayout.CHEST); } - public static ItemStack getItem(BookDesign design) { + public static ItemStack getItem(SlimefunGuideLayout design) { switch (design) { case BOOK: return new CustomItem(new ItemStack(Material.ENCHANTED_BOOK), "&aSlimefun Guide &7(Book GUI)", "", "&eRight Click &8\u21E8 &7Browse Items", "&eShift + Right Click &8\u21E8 &7Open Settings / Credits"); @@ -90,7 +90,7 @@ public final class SlimefunGuide { @Deprecated public static ItemStack getItem(boolean book) { - return getItem(book ? BookDesign.BOOK: BookDesign.CHEST); + return getItem(book ? SlimefunGuideLayout.BOOK: SlimefunGuideLayout.CHEST); } @Deprecated @@ -116,11 +116,11 @@ public final class SlimefunGuide { } - if (SlimefunManager.isItemSimiliar(guide, getItem(BookDesign.CHEST), true)) { + if (SlimefunManager.isItemSimiliar(guide, getItem(SlimefunGuideLayout.CHEST), true)) { if (p.hasPermission("slimefun.cheat.items")) { menu.addItem(19, new CustomItem(new ItemStack(Material.CHEST), "&7Guide Layout: &eChest GUI", "", "&aChest GUI", "&7Book GUI", "&7Cheat Sheet", "", "&e Click &8\u21E8 &7Change Layout")); menu.addMenuClickHandler(19, (pl, slot, item, action) -> { - pl.getInventory().setItemInMainHand(getItem(BookDesign.BOOK)); + pl.getInventory().setItemInMainHand(getItem(SlimefunGuideLayout.BOOK)); openSettings(pl, pl.getInventory().getItemInMainHand()); return false; }); @@ -128,17 +128,17 @@ public final class SlimefunGuide { else { menu.addItem(19, new CustomItem(new ItemStack(Material.CHEST), "&7Guide Layout: &eChest GUI", "", "&aChest GUI", "&7Book GUI", "", "&e Click &8\u21E8 &7Change Layout")); menu.addMenuClickHandler(19, (pl, slot, item, action) -> { - pl.getInventory().setItemInMainHand(getItem(BookDesign.BOOK)); + pl.getInventory().setItemInMainHand(getItem(SlimefunGuideLayout.BOOK)); openSettings(pl, pl.getInventory().getItemInMainHand()); return false; }); } } - else if (SlimefunManager.isItemSimiliar(guide, getItem(BookDesign.BOOK), true)) { + else if (SlimefunManager.isItemSimiliar(guide, getItem(SlimefunGuideLayout.BOOK), true)) { if (p.hasPermission("slimefun.cheat.items")) { menu.addItem(19, new CustomItem(new ItemStack(Material.CHEST), "&7Guide Layout: &eBook GUI", "", "&7Chest GUI", "&aBook GUI", "&7Cheat Sheet", "", "&e Click &8\u21E8 &7Change Layout")); menu.addMenuClickHandler(19, (pl, slot, item, action) -> { - pl.getInventory().setItemInMainHand(getItem(BookDesign.CHEAT_SHEET)); + pl.getInventory().setItemInMainHand(getItem(SlimefunGuideLayout.CHEAT_SHEET)); openSettings(pl, pl.getInventory().getItemInMainHand()); return false; }); @@ -146,22 +146,22 @@ public final class SlimefunGuide { else { menu.addItem(19, new CustomItem(new ItemStack(Material.CHEST), "&7Guide Layout: &eBook GUI", "", "&7Chest GUI", "&aBook GUI", "", "&e Click &8\u21E8 &7Change Layout")); menu.addMenuClickHandler(19, (pl, slot, item, action) -> { - pl.getInventory().setItemInMainHand(getItem(BookDesign.CHEST)); + pl.getInventory().setItemInMainHand(getItem(SlimefunGuideLayout.CHEST)); openSettings(pl, pl.getInventory().getItemInMainHand()); return false; }); } } - else if (SlimefunManager.isItemSimiliar(guide, getItem(BookDesign.CHEAT_SHEET), true)) { + else if (SlimefunManager.isItemSimiliar(guide, getItem(SlimefunGuideLayout.CHEAT_SHEET), true)) { menu.addItem(19, new CustomItem(new ItemStack(Material.CHEST), "&7Guide Layout: &eCheat Sheet", "", "&7Chest GUI", "&7Book GUI", "&aCheat Sheet", "", "&e Click &8\u21E8 &7Change Layout")); menu.addMenuClickHandler(19, (pl, slot, item, action) -> { - pl.getInventory().setItemInMainHand(getItem(BookDesign.CHEST)); + pl.getInventory().setItemInMainHand(getItem(SlimefunGuideLayout.CHEST)); openSettings(pl, pl.getInventory().getItemInMainHand()); return false; }); } - menu.addItem(1, new CustomItem(new ItemStack(Material.WRITABLE_BOOK), "&aCredits", "", "&7Version: &a" + SlimefunStartup.instance.getDescription().getVersion(), "&7Contributors: &e" + SlimefunStartup.instance.getUtilities().contributors.size(), "", "&7\u21E8 Click to see the people behind this Plugin")); + menu.addItem(1, new CustomItem(new ItemStack(Material.WRITABLE_BOOK), "&aCredits", "", "&7Version: &a" + SlimefunPlugin.instance.getDescription().getVersion(), "&7Contributors: &e" + SlimefunPlugin.getUtilities().contributors.size(), "", "&7\u21E8 Click to see the people behind this Plugin")); menu.addMenuClickHandler(1, (pl, slot, item, action) -> { openCredits(pl, guide); return false; @@ -219,11 +219,11 @@ public final class SlimefunGuide { int index = 9; double total = 0; - for (Contributor contributor : SlimefunStartup.instance.getUtilities().contributors) { + for (Contributor contributor : SlimefunPlugin.getUtilities().contributors) { total += contributor.getCommits(); } - for (final Contributor contributor: SlimefunStartup.instance.getUtilities().contributors) { + for (final Contributor contributor: SlimefunPlugin.getUtilities().contributors) { ItemStack skull = new ItemStack(Material.PLAYER_HEAD); try { @@ -269,8 +269,8 @@ public final class SlimefunGuide { } public static void openGuide(Player p, boolean book) { - if (!SlimefunStartup.getWhitelist().getBoolean(p.getWorld().getName() + ".enabled")) return; - if (!SlimefunStartup.getWhitelist().getBoolean(p.getWorld().getName() + ".enabled-items.SLIMEFUN_GUIDE")) return; + if (!SlimefunPlugin.getWhitelist().getBoolean(p.getWorld().getName() + ".enabled")) return; + if (!SlimefunPlugin.getWhitelist().getBoolean(p.getWorld().getName() + ".enabled-items.SLIMEFUN_GUIDE")) return; if (!getHistory().containsKey(p.getUniqueId())) openMainMenu(p, true, book, 1); else { Object last = getLastEntry(p, false); @@ -352,7 +352,7 @@ public final class SlimefunGuide { actions.add(new PlayerRunnable(1) { @Override public void run(final Player p) { - Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> openCategory(p, category, survival, 1, book), 1L); + Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> openCategory(p, category, survival, 1, book), 1L); } }); } @@ -363,7 +363,7 @@ public final class SlimefunGuide { actions.add(new PlayerRunnable(1) { @Override public void run(final Player p) { - Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> openCategory(p, category, survival, 1, book), 1L); + Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> openCategory(p, category, survival, 1, book), 1L); } }); } @@ -567,19 +567,19 @@ public final class SlimefunGuide { openCategory(p, category, true, selected_page, book); } else { - if (!(p.getGameMode() == GameMode.CREATIVE && SlimefunStartup.instance.getSettings().researchesFreeInCreative)) { + if (!(p.getGameMode() == GameMode.CREATIVE && SlimefunPlugin.getSettings().researchesFreeInCreative)) { p.setLevel(p.getLevel() - research.getCost()); } if (p.getGameMode() == GameMode.CREATIVE) { research.unlock(p, true); - Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> openCategory(p, category, survival, selected_page, book), 1L); + Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> openCategory(p, category, survival, selected_page, book), 1L); } else { research.unlock(p, false); - Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> openCategory(p, category, survival, selected_page, book), 103L); + Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> openCategory(p, category, survival, selected_page, book), 103L); } } } else Messages.local.sendTranslation(p, "messages.not-enough-xp", true); @@ -634,7 +634,7 @@ public final class SlimefunGuide { page.addClickEvent(new PlayerRunnable(2) { @Override public void run(final Player p) { - Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> openMainMenu(p, survival, true, 1), 1L); + Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> openMainMenu(p, survival, true, 1), 1L); } }); pages.add(page); @@ -706,17 +706,17 @@ public final class SlimefunGuide { openCategory(p, category, true, selected_page, book); } else { - if (!(pl.getGameMode() == GameMode.CREATIVE && SlimefunStartup.instance.getSettings().researchesFreeInCreative)) { + if (!(pl.getGameMode() == GameMode.CREATIVE && SlimefunPlugin.getSettings().researchesFreeInCreative)) { pl.setLevel(pl.getLevel() - research.getCost()); } if (pl.getGameMode() == GameMode.CREATIVE) { - research.unlock(pl, SlimefunStartup.instance.getSettings().researchesFreeInCreative); + research.unlock(pl, SlimefunPlugin.getSettings().researchesFreeInCreative); openCategory(pl, category, survival, selected_page, book); } else { research.unlock(pl, false); - Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> openCategory(pl, category, survival, selected_page, book), 103L); + Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> openCategory(pl, category, survival, selected_page, book), 103L); } } } @@ -780,7 +780,7 @@ public final class SlimefunGuide { final SlimefunItem sfItem = SlimefunItem.getByItem(item); - if (sfItem == null && !SlimefunStartup.instance.getSettings().guideShowVanillaRecipes) return; + if (sfItem == null && !SlimefunPlugin.getSettings().guideShowVanillaRecipes) return; ItemStack[] recipe = new ItemStack[9]; ItemStack recipeType = null; @@ -1031,7 +1031,7 @@ public final class SlimefunGuide { } private static Map> getHistory() { - return SlimefunStartup.instance.getUtilities().guideHistory; + return SlimefunPlugin.getUtilities().guideHistory; } public static void clearHistory(UUID uuid) { diff --git a/src/me/mrCookieSlime/Slimefun/SlimefunStartup.java b/src/me/mrCookieSlime/Slimefun/SlimefunPlugin.java similarity index 96% rename from src/me/mrCookieSlime/Slimefun/SlimefunStartup.java rename to src/me/mrCookieSlime/Slimefun/SlimefunPlugin.java index 0178cfd39..c71d8ac72 100644 --- a/src/me/mrCookieSlime/Slimefun/SlimefunStartup.java +++ b/src/me/mrCookieSlime/Slimefun/SlimefunPlugin.java @@ -21,6 +21,7 @@ import me.mrCookieSlime.CSCoreLibPlugin.general.Reflection.ReflectionUtils; import me.mrCookieSlime.Slimefun.GEO.OreGenSystem; import me.mrCookieSlime.Slimefun.GEO.Resources.NetherIceResource; import me.mrCookieSlime.Slimefun.GEO.Resources.OilResource; +import me.mrCookieSlime.Slimefun.GPS.GPSNetwork; import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; import me.mrCookieSlime.Slimefun.Objects.MultiBlock; import me.mrCookieSlime.Slimefun.Objects.Research; @@ -76,17 +77,18 @@ import me.mrCookieSlime.Slimefun.listeners.WorldListener; import me.mrCookieSlime.Slimefun.utils.Settings; import me.mrCookieSlime.Slimefun.utils.Utilities; -public final class SlimefunStartup extends JavaPlugin { +public final class SlimefunPlugin extends JavaPlugin { - public static SlimefunStartup instance; + public static SlimefunPlugin instance; - private static Config researches; - private static Config items; - private static Config whitelist; - private static Config config; + private Config researches; + private Config items; + private Config whitelist; + private Config config; public static TickerTask ticker; + public GPSNetwork gps = new GPSNetwork(); private Utilities utilities = new Utilities(); private Settings settings; private SlimefunHooks hooks; @@ -247,7 +249,7 @@ public final class SlimefunStartup extends JavaPlugin { new BlockStorage(world); } - if (SlimefunItem.getByID("ANCIENT_ALTAR") != null) new AncientAltarListener((SlimefunStartup) instance); + if (SlimefunItem.getByID("ANCIENT_ALTAR") != null) new AncientAltarListener((SlimefunPlugin) instance); }, 0); getCommand("slimefun").setExecutor(new SlimefunCommand(this)); @@ -356,11 +358,6 @@ public final class SlimefunStartup extends JavaPlugin { SlimefunBackup.start(); // Prevent Memory Leaks - config = null; - researches = null; - items = null; - whitelist = null; - instance = null; Messages.local = null; Files.config = null; Files.database = null; @@ -392,9 +389,10 @@ public final class SlimefunStartup extends JavaPlugin { EnergyNet.machinesStorage = null; CargoNet.faces = null; BlockStorage.universalInventories = null; - PlayerProfile.profiles = null; OreWasher.items = null; + instance = null; + for (Player p: Bukkit.getOnlinePlayers()) { p.closeInventory(); } @@ -406,19 +404,19 @@ public final class SlimefunStartup extends JavaPlugin { } public static Config getCfg() { - return config; + return instance.config; } public static Config getResearchCfg() { - return researches; + return instance.researches; } public static Config getItemCfg() { - return items; + return instance.items; } public static Config getWhitelist() { - return whitelist; + return instance.whitelist; } @Deprecated @@ -433,16 +431,16 @@ public final class SlimefunStartup extends JavaPlugin { return CSCoreLib.randomizer().nextInt(max) <= percentage; } - public SlimefunHooks getHooks() { - return hooks; + public static SlimefunHooks getHooks() { + return instance.hooks; } - public Utilities getUtilities() { - return utilities; + public static Utilities getUtilities() { + return instance.utilities; } - public Settings getSettings() { - return settings; + public static Settings getSettings() { + return instance.settings; } } diff --git a/src/me/mrCookieSlime/Slimefun/ancient_altar/AltarRecipe.java b/src/me/mrCookieSlime/Slimefun/ancient_altar/AltarRecipe.java index 1e9b94d50..70f827194 100644 --- a/src/me/mrCookieSlime/Slimefun/ancient_altar/AltarRecipe.java +++ b/src/me/mrCookieSlime/Slimefun/ancient_altar/AltarRecipe.java @@ -5,7 +5,7 @@ import java.util.List; import org.bukkit.inventory.ItemStack; -import me.mrCookieSlime.Slimefun.SlimefunStartup; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; public class AltarRecipe { @@ -29,7 +29,7 @@ public class AltarRecipe { this.output = output; - SlimefunStartup.instance.getUtilities().altarRecipes.add(this); + SlimefunPlugin.getUtilities().altarRecipes.add(this); } public ItemStack getCatalyst() { diff --git a/src/me/mrCookieSlime/Slimefun/ancient_altar/AncientAltarListener.java b/src/me/mrCookieSlime/Slimefun/ancient_altar/AncientAltarListener.java index 56ae6592f..b92a209ec 100644 --- a/src/me/mrCookieSlime/Slimefun/ancient_altar/AncientAltarListener.java +++ b/src/me/mrCookieSlime/Slimefun/ancient_altar/AncientAltarListener.java @@ -29,7 +29,7 @@ import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Variable; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; import me.mrCookieSlime.CSCoreLibPlugin.general.Player.PlayerInventory; import me.mrCookieSlime.CSCoreLibPlugin.general.String.StringUtils; -import me.mrCookieSlime.Slimefun.SlimefunStartup; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Setup.Messages; import me.mrCookieSlime.Slimefun.api.BlockStorage; @@ -39,10 +39,10 @@ public class AncientAltarListener implements Listener { private Utilities utilities; - public AncientAltarListener(SlimefunStartup plugin) { + public AncientAltarListener(SlimefunPlugin plugin) { plugin.getServer().getPluginManager().registerEvents(this, plugin); - utilities = plugin.getUtilities(); + utilities = SlimefunPlugin.getUtilities(); } private List altars = new ArrayList<>(); @@ -73,7 +73,7 @@ public class AncientAltarListener implements Listener { final UUID uuid = stack.getUniqueId(); removedItems.add(uuid); - SlimefunStartup.instance.getServer().getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> { + SlimefunPlugin.instance.getServer().getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> { removedItems.remove(uuid); }, 30L); @@ -112,7 +112,7 @@ public class AncientAltarListener implements Listener { List consumed = new ArrayList<>(); consumed.add(catalyst); PlayerInventory.consumeItemInHand(e.getPlayer()); - Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, new RitualAnimation(altars, b, b.getLocation().add(0.5, 1.3, 0.5), result, pedestals, consumed), 10L); + Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, new RitualAnimation(altars, b, b.getLocation().add(0.5, 1.3, 0.5), result, pedestals, consumed), 10L); } else { altars.remove(e.getClickedBlock()); @@ -172,7 +172,7 @@ public class AncientAltarListener implements Listener { String nametag = StringUtils.formatItemName(stack, false); Item entity = b.getWorld().dropItem(b.getLocation().add(0.5, 1.2, 0.5), new CustomItem(new CustomItem(stack, 1), "&5&dALTAR &3Probe - &e" + System.nanoTime())); entity.setVelocity(new Vector(0, 0.1, 0)); - entity.setMetadata("no_pickup", new FixedMetadataValue(SlimefunStartup.instance, "altar_item")); + entity.setMetadata("no_pickup", new FixedMetadataValue(SlimefunPlugin.instance, "altar_item")); entity.setCustomNameVisible(true); entity.setCustomName(nametag); p.playSound(b.getLocation(), Sound.ENTITY_ITEM_PICKUP, 0.3F, 0.3F); diff --git a/src/me/mrCookieSlime/Slimefun/ancient_altar/Pedestals.java b/src/me/mrCookieSlime/Slimefun/ancient_altar/Pedestals.java index 66b21b6b1..7b23a31b2 100644 --- a/src/me/mrCookieSlime/Slimefun/ancient_altar/Pedestals.java +++ b/src/me/mrCookieSlime/Slimefun/ancient_altar/Pedestals.java @@ -8,7 +8,7 @@ import org.bukkit.block.Block; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; -import me.mrCookieSlime.Slimefun.SlimefunStartup; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.api.BlockStorage; @@ -65,7 +65,7 @@ public final class Pedestals { } private static ItemStack checkRecipe(ItemStack catalyst, List items) { - for (AltarRecipe recipe: SlimefunStartup.instance.getUtilities().altarRecipes) { + for (AltarRecipe recipe: SlimefunPlugin.getUtilities().altarRecipes) { if (SlimefunManager.isItemSimiliar(catalyst, recipe.getCatalyst(), true)) { for (int i = 0; i < 8; i++) { if (SlimefunManager.isItemSimiliar(items.get(i), recipe.getInput().get(0), true)) { diff --git a/src/me/mrCookieSlime/Slimefun/ancient_altar/RitualAnimation.java b/src/me/mrCookieSlime/Slimefun/ancient_altar/RitualAnimation.java index 5939e66de..cabc5ff42 100644 --- a/src/me/mrCookieSlime/Slimefun/ancient_altar/RitualAnimation.java +++ b/src/me/mrCookieSlime/Slimefun/ancient_altar/RitualAnimation.java @@ -5,7 +5,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import me.mrCookieSlime.Slimefun.SlimefunStartup; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.utils.Utilities; import org.bukkit.Effect; @@ -33,7 +33,7 @@ public class RitualAnimation implements Runnable { private boolean running; private int stage; - private Utilities utilities = SlimefunStartup.instance.getUtilities(); + private Utilities utilities = SlimefunPlugin.getUtilities(); public RitualAnimation(List altars, Block altar, Location drop, ItemStack output, List pedestals, List items) { this.l = drop; @@ -72,7 +72,7 @@ public class RitualAnimation implements Runnable { } this.stage += 1; - SlimefunStartup.instance.getServer().getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, this, 8); + SlimefunPlugin.instance.getServer().getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, this, 8); } private boolean checkLockedItems() { @@ -120,7 +120,7 @@ public class RitualAnimation implements Runnable { itemLock.remove(item); item.remove(); - pedestal.removeMetadata("item_placed", SlimefunStartup.instance); + pedestal.removeMetadata("item_placed", SlimefunPlugin.instance); } } diff --git a/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java b/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java index 1b415be18..b038558a2 100644 --- a/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java +++ b/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java @@ -48,7 +48,7 @@ import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.MenuHelper; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; import me.mrCookieSlime.CSCoreLibPlugin.general.World.CustomSkull; import me.mrCookieSlime.ExoticGarden.ExoticGarden; -import me.mrCookieSlime.Slimefun.SlimefunStartup; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; import me.mrCookieSlime.Slimefun.Objects.Category; @@ -457,8 +457,8 @@ public abstract class ProgrammableAndroid extends SlimefunItem { switch (BlockFace.valueOf(BlockStorage.getLocationInfo(b.getLocation(), "rotation"))) { case NORTH: if (n.getLocation().getZ() < b.getZ()) { - if (n.hasMetadata("android_killer")) n.removeMetadata("android_killer", SlimefunStartup.instance); - n.setMetadata("android_killer", new FixedMetadataValue(SlimefunStartup.instance, new AndroidObject(this, b))); + if (n.hasMetadata("android_killer")) n.removeMetadata("android_killer", SlimefunPlugin.instance); + n.setMetadata("android_killer", new FixedMetadataValue(SlimefunPlugin.instance, new AndroidObject(this, b))); ((LivingEntity) n).damage(damage); return; @@ -466,8 +466,8 @@ public abstract class ProgrammableAndroid extends SlimefunItem { break; case EAST: if (n.getLocation().getX() > b.getX()) { - if (n.hasMetadata("android_killer")) n.removeMetadata("android_killer", SlimefunStartup.instance); - n.setMetadata("android_killer", new FixedMetadataValue(SlimefunStartup.instance, new AndroidObject(this, b))); + if (n.hasMetadata("android_killer")) n.removeMetadata("android_killer", SlimefunPlugin.instance); + n.setMetadata("android_killer", new FixedMetadataValue(SlimefunPlugin.instance, new AndroidObject(this, b))); ((LivingEntity) n).damage(damage); return; @@ -475,8 +475,8 @@ public abstract class ProgrammableAndroid extends SlimefunItem { break; case SOUTH: if (n.getLocation().getZ() > b.getZ()) { - if (n.hasMetadata("android_killer")) n.removeMetadata("android_killer", SlimefunStartup.instance); - n.setMetadata("android_killer", new FixedMetadataValue(SlimefunStartup.instance, new AndroidObject(this, b))); + if (n.hasMetadata("android_killer")) n.removeMetadata("android_killer", SlimefunPlugin.instance); + n.setMetadata("android_killer", new FixedMetadataValue(SlimefunPlugin.instance, new AndroidObject(this, b))); ((LivingEntity) n).damage(damage); return; @@ -484,8 +484,8 @@ public abstract class ProgrammableAndroid extends SlimefunItem { break; case WEST: if (n.getLocation().getX() < b.getX()) { - if (n.hasMetadata("android_killer")) n.removeMetadata("android_killer", SlimefunStartup.instance); - n.setMetadata("android_killer", new FixedMetadataValue(SlimefunStartup.instance, new AndroidObject(this, b))); + if (n.hasMetadata("android_killer")) n.removeMetadata("android_killer", SlimefunPlugin.instance); + n.setMetadata("android_killer", new FixedMetadataValue(SlimefunPlugin.instance, new AndroidObject(this, b))); ((LivingEntity) n).damage(damage); return; @@ -677,7 +677,7 @@ public abstract class ProgrammableAndroid extends SlimefunItem { private void exoticFarm(Block b, Block block) { farm(b, block); - if (SlimefunStartup.instance.getHooks().isExoticGardenInstalled()) { + if (SlimefunPlugin.getHooks().isExoticGardenInstalled()) { ItemStack drop = ExoticGarden.harvestPlant(block); if (drop != null && fits(b, drop)) { pushItems(b, drop); diff --git a/src/me/mrCookieSlime/Slimefun/api/BlockStorage.java b/src/me/mrCookieSlime/Slimefun/api/BlockStorage.java index f3debba95..961c11ce1 100644 --- a/src/me/mrCookieSlime/Slimefun/api/BlockStorage.java +++ b/src/me/mrCookieSlime/Slimefun/api/BlockStorage.java @@ -27,7 +27,7 @@ import com.google.gson.JsonPrimitive; import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config; import me.mrCookieSlime.CSCoreLibPlugin.general.Math.DoubleHandler; -import me.mrCookieSlime.Slimefun.SlimefunStartup; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset; @@ -103,7 +103,7 @@ public class BlockStorage { System.err.println("[Slimefun] should probably look into it!"); } else if (file.getName().endsWith(".sfb")) { - if (timestamp + SlimefunStartup.instance.getSettings().blocksInfoLoadingDelay < System.currentTimeMillis()) { + if (timestamp + SlimefunPlugin.getSettings().blocksInfoLoadingDelay < System.currentTimeMillis()) { System.out.println("[Slimefun] Loading Blocks... " + Math.round((((done * 100.0F) / total) * 100.0F) / 100.0F) + "% done (\"" + w.getName() + "\")"); timestamp = System.currentTimeMillis(); } @@ -446,7 +446,7 @@ public class BlockStorage { } public static void clearBlockInfo(Location l, boolean destroy) { - SlimefunStartup.ticker.delete.put(l, destroy); + SlimefunPlugin.ticker.delete.put(l, destroy); } public static void _integrated_removeBlockInfo(Location l, boolean destroy) { @@ -481,7 +481,7 @@ public class BlockStorage { } public static void moveBlockInfo(Location from, Location to) { - SlimefunStartup.ticker.move.put(from, to); + SlimefunPlugin.ticker.move.put(from, to); } @Deprecated @@ -616,7 +616,7 @@ public class BlockStorage { if (menu != null) { for (HumanEntity human : new ArrayList<>(menu.toInventory().getViewers())) { // Prevents "java.lang.IllegalStateException: Asynchronous entity add!" when closing inventory while holding an item - Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> human.closeInventory()); + Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> human.closeInventory()); } inventories.get(l).delete(l); diff --git a/src/me/mrCookieSlime/Slimefun/api/ErrorReport.java b/src/me/mrCookieSlime/Slimefun/api/ErrorReport.java index 3624c00be..35032ff46 100644 --- a/src/me/mrCookieSlime/Slimefun/api/ErrorReport.java +++ b/src/me/mrCookieSlime/Slimefun/api/ErrorReport.java @@ -16,7 +16,7 @@ import org.bukkit.plugin.Plugin; import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib; import me.mrCookieSlime.CSCoreLibPlugin.general.Clock; -import me.mrCookieSlime.Slimefun.SlimefunStartup; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; public class ErrorReport { @@ -46,7 +46,7 @@ public class ErrorReport { stream.println(); stream.println("Slimefun Environment:"); stream.println(" CS-CoreLib v" + CSCoreLib.getLib().getDescription().getVersion()); - stream.println(" Slimefun v" + SlimefunStartup.instance.getDescription().getVersion()); + stream.println(" Slimefun v" + SlimefunPlugin.instance.getDescription().getVersion()); stream.println(); List plugins = new ArrayList<>(); diff --git a/src/me/mrCookieSlime/Slimefun/api/PlayerProfile.java b/src/me/mrCookieSlime/Slimefun/api/PlayerProfile.java index 2e715fec6..159c5b006 100644 --- a/src/me/mrCookieSlime/Slimefun/api/PlayerProfile.java +++ b/src/me/mrCookieSlime/Slimefun/api/PlayerProfile.java @@ -15,7 +15,7 @@ import org.bukkit.ChatColor; import org.bukkit.inventory.ItemStack; import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config; -import me.mrCookieSlime.Slimefun.SlimefunStartup; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.Objects.Research; import me.mrCookieSlime.Slimefun.api.inventory.BackpackInventory; @@ -27,8 +27,6 @@ import me.mrCookieSlime.Slimefun.api.inventory.BackpackInventory; */ public final class PlayerProfile { - public static Map profiles = new HashMap<>(); - private UUID uuid; private Config cfg; private boolean dirty = false; @@ -161,7 +159,7 @@ public final class PlayerProfile { } public String getTitle() { - List titles = SlimefunStartup.instance.getSettings().researchesTitles; + List titles = SlimefunPlugin.getSettings().researchesTitles; int index = Math.round(Float.valueOf(String.valueOf(Math.round(((researches.size() * 100.0F) / Research.list().size()) * 100.0F) / 100.0F)) / 100.0F) * titles.size(); if (index > 0) index--; @@ -169,11 +167,11 @@ public final class PlayerProfile { } public static PlayerProfile fromUUID(UUID uuid) { - PlayerProfile profile = profiles.get(uuid); + PlayerProfile profile = SlimefunPlugin.getUtilities().profiles.get(uuid); if (profile == null) { profile = new PlayerProfile(uuid); - profiles.put(uuid, profile); + SlimefunPlugin.getUtilities().profiles.put(uuid, profile); } else { profile.markedForDeletion = false; @@ -183,11 +181,11 @@ public final class PlayerProfile { } public static boolean isLoaded(UUID uuid) { - return profiles.containsKey(uuid); + return SlimefunPlugin.getUtilities().profiles.containsKey(uuid); } public static Iterator iterator() { - return profiles.values().iterator(); + return SlimefunPlugin.getUtilities().profiles.values().iterator(); } public static BackpackInventory getBackpack(ItemStack item) { diff --git a/src/me/mrCookieSlime/Slimefun/api/Slimefun.java b/src/me/mrCookieSlime/Slimefun/api/Slimefun.java index ca9e0fddb..42e5e4544 100644 --- a/src/me/mrCookieSlime/Slimefun/api/Slimefun.java +++ b/src/me/mrCookieSlime/Slimefun/api/Slimefun.java @@ -5,19 +5,20 @@ import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.logging.Logger; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config; -import me.mrCookieSlime.Slimefun.SlimefunStartup; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.GPS.GPSNetwork; import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.Research; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem.State; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.VanillaItem; import me.mrCookieSlime.Slimefun.Setup.Messages; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.VanillaItem; /** * Provides a few convenience methods. @@ -27,11 +28,6 @@ import me.mrCookieSlime.Slimefun.Setup.Messages; public class Slimefun { public static Map> guideHandlers = new HashMap<>(); - - /** - * Instance of the GPSNetwork. - */ - private static GPSNetwork gps = new GPSNetwork(); /** * Whether EmeraldEnchants is enabled or not. @@ -56,7 +52,11 @@ public class Slimefun { * @return the GPSNetwork instance. */ public static GPSNetwork getGPSNetwork() { - return gps; + return SlimefunPlugin.instance.gps; + } + + public static Logger getLogger() { + return SlimefunPlugin.instance.getLogger(); } /** @@ -91,7 +91,7 @@ public class Slimefun { * @return the Items.yml Config instance. */ public static Config getItemConfig() { - return SlimefunStartup.getItemCfg(); + return SlimefunPlugin.getItemCfg(); } /** @@ -207,10 +207,10 @@ public class Slimefun { String world = p.getWorld().getName(); SlimefunItem sfItem = SlimefunItem.getByItem(item); if (sfItem == null) return !SlimefunItem.isDisabled(item); - if (SlimefunStartup.getWhitelist().contains(world + ".enabled")) { - if (SlimefunStartup.getWhitelist().getBoolean(world + ".enabled")) { - if (!SlimefunStartup.getWhitelist().contains(world + ".enabled-items." + sfItem.getID())) SlimefunStartup.getWhitelist().setDefaultValue(world + ".enabled-items." + sfItem.getID(), true); - if (SlimefunStartup.getWhitelist().getBoolean(world + ".enabled-items." + sfItem.getID())) return true; + if (SlimefunPlugin.getWhitelist().contains(world + ".enabled")) { + if (SlimefunPlugin.getWhitelist().getBoolean(world + ".enabled")) { + if (!SlimefunPlugin.getWhitelist().contains(world + ".enabled-items." + sfItem.getID())) SlimefunPlugin.getWhitelist().setDefaultValue(world + ".enabled-items." + sfItem.getID(), true); + if (SlimefunPlugin.getWhitelist().getBoolean(world + ".enabled-items." + sfItem.getID())) return true; else { if (message) Messages.local.sendTranslation(p, "messages.disabled-in-world", true); return false; @@ -236,10 +236,10 @@ public class Slimefun { */ public static boolean isEnabled(Player p, SlimefunItem sfItem, boolean message) { String world = p.getWorld().getName(); - if (SlimefunStartup.getWhitelist().contains(world + ".enabled")) { - if (SlimefunStartup.getWhitelist().getBoolean(world + ".enabled")) { - if (!SlimefunStartup.getWhitelist().contains(world + ".enabled-items." + sfItem.getID())) SlimefunStartup.getWhitelist().setDefaultValue(world + ".enabled-items." + sfItem.getID(), true); - if (SlimefunStartup.getWhitelist().getBoolean(world + ".enabled-items." + sfItem.getID())) return true; + if (SlimefunPlugin.getWhitelist().contains(world + ".enabled")) { + if (SlimefunPlugin.getWhitelist().getBoolean(world + ".enabled")) { + if (!SlimefunPlugin.getWhitelist().contains(world + ".enabled-items." + sfItem.getID())) SlimefunPlugin.getWhitelist().setDefaultValue(world + ".enabled-items." + sfItem.getID(), true); + if (SlimefunPlugin.getWhitelist().getBoolean(world + ".enabled-items." + sfItem.getID())) return true; else { if (message) Messages.local.sendTranslation(p, "messages.disabled-in-world", true); return false; diff --git a/src/me/mrCookieSlime/Slimefun/api/SlimefunGuideLayout.java b/src/me/mrCookieSlime/Slimefun/api/SlimefunGuideLayout.java new file mode 100644 index 000000000..d46fea780 --- /dev/null +++ b/src/me/mrCookieSlime/Slimefun/api/SlimefunGuideLayout.java @@ -0,0 +1,9 @@ +package me.mrCookieSlime.Slimefun.api; + +public enum SlimefunGuideLayout { + + BOOK, + CHEST, + CHEAT_SHEET; + +} diff --git a/src/me/mrCookieSlime/Slimefun/api/Soul.java b/src/me/mrCookieSlime/Slimefun/api/Soul.java index f6aa9b44a..a516a216e 100644 --- a/src/me/mrCookieSlime/Slimefun/api/Soul.java +++ b/src/me/mrCookieSlime/Slimefun/api/Soul.java @@ -7,25 +7,25 @@ import java.util.UUID; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; -import me.mrCookieSlime.Slimefun.SlimefunStartup; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; public final class Soul { private Soul() {} public static void storeItem(UUID uuid, int slot, ItemStack item) { - Map items = SlimefunStartup.instance.getUtilities().soulbound.get(uuid); + Map items = SlimefunPlugin.getUtilities().soulbound.get(uuid); if (items == null) { items = new HashMap<>(); - SlimefunStartup.instance.getUtilities().soulbound.put(uuid, items); + SlimefunPlugin.getUtilities().soulbound.put(uuid, items); } items.put(slot, item); } public static void retrieveItems(Player p) { - Map items = SlimefunStartup.instance.getUtilities().soulbound.get(p.getUniqueId()); + Map items = SlimefunPlugin.getUtilities().soulbound.get(p.getUniqueId()); if (items != null) { for (Map.Entry entry: items.entrySet()) { @@ -33,7 +33,7 @@ public final class Soul { } } - SlimefunStartup.instance.getUtilities().soulbound.remove(p.getUniqueId()); + SlimefunPlugin.getUtilities().soulbound.remove(p.getUniqueId()); } } diff --git a/src/me/mrCookieSlime/Slimefun/api/TickerTask.java b/src/me/mrCookieSlime/Slimefun/api/TickerTask.java index 1c45e5ba0..0dab94603 100644 --- a/src/me/mrCookieSlime/Slimefun/api/TickerTask.java +++ b/src/me/mrCookieSlime/Slimefun/api/TickerTask.java @@ -17,7 +17,7 @@ import org.bukkit.entity.Player; import me.mrCookieSlime.CSCoreLibPlugin.general.Chat.TellRawMessage; import me.mrCookieSlime.CSCoreLibPlugin.general.Chat.TellRawMessage.HoverAction; -import me.mrCookieSlime.Slimefun.SlimefunStartup; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker; @@ -85,7 +85,7 @@ public class TickerTask implements Runnable { item.getBlockTicker().update(); if (item.getBlockTicker().isSynchronized()) { - Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> { + Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> { try { long timestamp3 = System.currentTimeMillis(); item.getBlockTicker().tick(b, item, BlockStorage.getLocationInfo(l)); @@ -120,7 +120,7 @@ public class TickerTask implements Runnable { BlockStorage._integrated_removeBlockInfo(l, true); - Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> { + Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> { l.getBlock().setType(Material.AIR); }); } @@ -162,7 +162,7 @@ public class TickerTask implements Runnable { BlockStorage._integrated_removeBlockInfo(l, true); - Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> { + Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> { l.getBlock().setType(Material.AIR); }); } diff --git a/src/me/mrCookieSlime/Slimefun/api/energy/ChargableBlock.java b/src/me/mrCookieSlime/Slimefun/api/energy/ChargableBlock.java index 1193beeeb..9c23572ed 100644 --- a/src/me/mrCookieSlime/Slimefun/api/energy/ChargableBlock.java +++ b/src/me/mrCookieSlime/Slimefun/api/energy/ChargableBlock.java @@ -8,7 +8,7 @@ import java.util.Set; import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config; import me.mrCookieSlime.CSCoreLibPlugin.general.Math.DoubleHandler; import me.mrCookieSlime.CSCoreLibPlugin.general.World.CustomSkull; -import me.mrCookieSlime.Slimefun.SlimefunStartup; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.api.BlockStorage; import org.bukkit.Bukkit; @@ -106,7 +106,7 @@ public class ChargableBlock { } private static void updateTexture(final Location l) throws Exception { - Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> { + Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> { try { Block b = l.getBlock(); int charge = getCharge(b); diff --git a/src/me/mrCookieSlime/Slimefun/api/energy/EnergyNet.java b/src/me/mrCookieSlime/Slimefun/api/energy/EnergyNet.java index c923f0a89..aca8d89e3 100644 --- a/src/me/mrCookieSlime/Slimefun/api/energy/EnergyNet.java +++ b/src/me/mrCookieSlime/Slimefun/api/energy/EnergyNet.java @@ -9,7 +9,7 @@ import org.bukkit.Material; import org.bukkit.block.Block; import me.mrCookieSlime.CSCoreLibPlugin.general.Math.DoubleHandler; -import me.mrCookieSlime.Slimefun.SlimefunStartup; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.api.BlockStorage; import me.mrCookieSlime.Slimefun.api.network.Network; @@ -141,7 +141,7 @@ public class EnergyNet extends Network { if (item.getEnergyTicker().explode(source)) { exploded.add(source); BlockStorage.clearBlockInfo(source); - Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> { + Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> { source.getBlock().setType(Material.LAVA); source.getWorld().createExplosion(source, 0F, false); }); @@ -149,7 +149,7 @@ public class EnergyNet extends Network { else { supply = supply + energy; } - SlimefunStartup.ticker.blockTimings.put(source, System.currentTimeMillis() - timestamp); + SlimefunPlugin.ticker.blockTimings.put(source, System.currentTimeMillis() - timestamp); } input.removeAll(exploded); diff --git a/src/me/mrCookieSlime/Slimefun/api/inventory/BlockMenuPreset.java b/src/me/mrCookieSlime/Slimefun/api/inventory/BlockMenuPreset.java index cbac22094..70ccf5175 100644 --- a/src/me/mrCookieSlime/Slimefun/api/inventory/BlockMenuPreset.java +++ b/src/me/mrCookieSlime/Slimefun/api/inventory/BlockMenuPreset.java @@ -12,7 +12,7 @@ import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ChestMenu; -import me.mrCookieSlime.Slimefun.SlimefunStartup; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.api.item_transport.ItemTransportFlow; public abstract class BlockMenuPreset extends ChestMenu { @@ -161,7 +161,7 @@ public abstract class BlockMenuPreset extends ChestMenu { } public void newInstance(final BlockMenu menu, final Location l) { - Bukkit.getScheduler().runTask(SlimefunStartup.instance, () -> { + Bukkit.getScheduler().runTask(SlimefunPlugin.instance, () -> { newInstance(menu, l.getBlock()); }); } diff --git a/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoNet.java b/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoNet.java index 0e3a8629c..66c2063f0 100644 --- a/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoNet.java +++ b/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoNet.java @@ -24,7 +24,7 @@ import org.bukkit.inventory.meta.ItemMeta; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ChestMenu.MenuClickHandler; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; import me.mrCookieSlime.CSCoreLibPlugin.general.Math.DoubleHandler; -import me.mrCookieSlime.Slimefun.SlimefunStartup; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.api.BlockStorage; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu; @@ -188,7 +188,7 @@ public class CargoNet extends Network { CargoNet self = this; final BlockStorage storage = BlockStorage.getStorage(b.getWorld()); - SlimefunStartup.instance.getServer().getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> { + SlimefunPlugin.instance.getServer().getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> { if (BlockStorage.getLocationInfo(b.getLocation(), "visualizer") == null) { self.display(); } diff --git a/src/me/mrCookieSlime/Slimefun/api/item_transport/ChestManipulator.java b/src/me/mrCookieSlime/Slimefun/api/item_transport/ChestManipulator.java index a97d8f244..a562c90d3 100644 --- a/src/me/mrCookieSlime/Slimefun/api/item_transport/ChestManipulator.java +++ b/src/me/mrCookieSlime/Slimefun/api/item_transport/ChestManipulator.java @@ -3,18 +3,18 @@ package me.mrCookieSlime.Slimefun.api.item_transport; import org.bukkit.block.Block; import org.bukkit.inventory.ItemStack; -import me.mrCookieSlime.Slimefun.SlimefunStartup; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; public final class ChestManipulator { private ChestManipulator() {} public static void registerListener(CargoTransportEvent listener) { - SlimefunStartup.instance.getUtilities().cargoTransportEvents.add(listener); + SlimefunPlugin.getUtilities().cargoTransportEvents.add(listener); } public static ItemStack trigger(Block b, int slot, ItemStack prev, ItemStack next) { - for (CargoTransportEvent listener: SlimefunStartup.instance.getUtilities().cargoTransportEvents) { + for (CargoTransportEvent listener: SlimefunPlugin.getUtilities().cargoTransportEvents) { next = listener.onEvent(b, slot, prev, next); } diff --git a/src/me/mrCookieSlime/Slimefun/api/network/Network.java b/src/me/mrCookieSlime/Slimefun/api/network/Network.java index 4bf4d5fea..c39c911d7 100644 --- a/src/me/mrCookieSlime/Slimefun/api/network/Network.java +++ b/src/me/mrCookieSlime/Slimefun/api/network/Network.java @@ -10,7 +10,7 @@ import java.util.ArrayList; import org.bukkit.Location; import me.mrCookieSlime.CSCoreLibPlugin.general.Particles.MC_1_13.ParticleEffect; -import me.mrCookieSlime.Slimefun.SlimefunStartup; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; public abstract class Network { @@ -155,7 +155,7 @@ public abstract class Network { } public void display() { - SlimefunStartup.instance.getServer().getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> { + SlimefunPlugin.instance.getServer().getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> { for(Location l: connectedLocations) { try { ParticleEffect.REDSTONE.display(l.clone().add(0.5, 0.5, 0.5), 0, 0, 0, 1, 1); diff --git a/src/me/mrCookieSlime/Slimefun/autosave/BlockAutoSaver.java b/src/me/mrCookieSlime/Slimefun/autosave/BlockAutoSaver.java index db39f8bbf..74cc141a5 100644 --- a/src/me/mrCookieSlime/Slimefun/autosave/BlockAutoSaver.java +++ b/src/me/mrCookieSlime/Slimefun/autosave/BlockAutoSaver.java @@ -6,7 +6,7 @@ import java.util.Set; import org.bukkit.Bukkit; import org.bukkit.World; -import me.mrCookieSlime.Slimefun.SlimefunStartup; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.api.BlockStorage; public class BlockAutoSaver implements Runnable { @@ -27,7 +27,7 @@ public class BlockAutoSaver implements Runnable { } if (!worlds.isEmpty()) { - System.out.println("[Slimefun] Auto-Saving Block Data... (Next Auto-Save: " + SlimefunStartup.getCfg().getInt("options.auto-save-delay-in-minutes") + "m)"); + System.out.println("[Slimefun] Auto-Saving Block Data... (Next Auto-Save: " + SlimefunPlugin.getCfg().getInt("options.auto-save-delay-in-minutes") + "m)"); for (BlockStorage storage: worlds) { storage.save(false); diff --git a/src/me/mrCookieSlime/Slimefun/commands/SlimefunCommand.java b/src/me/mrCookieSlime/Slimefun/commands/SlimefunCommand.java index 5a9efbfd0..761b6d72b 100644 --- a/src/me/mrCookieSlime/Slimefun/commands/SlimefunCommand.java +++ b/src/me/mrCookieSlime/Slimefun/commands/SlimefunCommand.java @@ -27,26 +27,26 @@ import me.mrCookieSlime.CSCoreLibPlugin.general.Reflection.ReflectionUtils; import me.mrCookieSlime.CSCoreLibPlugin.general.World.TitleBuilder; import me.mrCookieSlime.CSCoreLibPlugin.general.World.TitleBuilder.TitleType; import me.mrCookieSlime.Slimefun.SlimefunGuide; -import me.mrCookieSlime.Slimefun.SlimefunStartup; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.GPS.GPSNetwork; import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; -import me.mrCookieSlime.Slimefun.Misc.BookDesign; 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; public class SlimefunCommand implements CommandExecutor, Listener { - public SlimefunStartup plugin; + public SlimefunPlugin plugin; public static List arguments = new ArrayList<>(); public static List descriptions = new ArrayList<>(); public static List tabs = new ArrayList<>(); - public SlimefunCommand(SlimefunStartup plugin) { + public SlimefunCommand(SlimefunPlugin plugin) { this.plugin = plugin; arguments.add("/sf help"); @@ -107,14 +107,14 @@ public class SlimefunCommand implements CommandExecutor, Listener { } else if (args[0].equalsIgnoreCase("guide")) { if (sender instanceof Player) { - if (sender.hasPermission("slimefun.command.guide")) ((Player) sender).getInventory().addItem(SlimefunGuide.getItem(SlimefunStartup.getCfg().getBoolean("guide.default-view-book") ? BookDesign.BOOK : BookDesign.CHEST)); + if (sender.hasPermission("slimefun.command.guide")) ((Player) sender).getInventory().addItem(SlimefunGuide.getItem(SlimefunPlugin.getCfg().getBoolean("guide.default-view-book") ? SlimefunGuideLayout.BOOK : SlimefunGuideLayout.CHEST)); else Messages.local.sendTranslation(sender, "messages.no-permission", true); } else Messages.local.sendTranslation(sender, "messages.only-players", true); } else if (args[0].equalsIgnoreCase("open_guide")) { if (sender instanceof Player) { - if (sender.hasPermission("slimefun.command.open_guide")) SlimefunGuide.openGuide((Player) sender, SlimefunStartup.getCfg().getBoolean("guide.default-view-book")); + if (sender.hasPermission("slimefun.command.open_guide")) SlimefunGuide.openGuide((Player) sender, SlimefunPlugin.getCfg().getBoolean("guide.default-view-book")); else Messages.local.sendTranslation(sender, "messages.no-permission", true); } else Messages.local.sendTranslation(sender, "messages.only-players", true); @@ -143,7 +143,7 @@ public class SlimefunCommand implements CommandExecutor, Listener { double z = Integer.parseInt(args[3]) + 0.5D; if (BlockStorage.getLocationInfo(((Player) sender).getWorld().getBlockAt(Integer.parseInt(args[1]), Integer.parseInt(args[2]), Integer.parseInt(args[3])).getLocation(), "floor") != null) { - plugin.getUtilities().elevatorUsers.add(((Player) sender).getUniqueId()); + SlimefunPlugin.getUtilities().elevatorUsers.add(((Player) sender).getUniqueId()); float yaw = ((Player) sender).getEyeLocation().getYaw() + 180; if (yaw > 180) yaw = -180 + (yaw - 180); ((Player) sender).teleport(new Location(((Player) sender).getWorld(), x, y, z, yaw, ((Player) sender).getEyeLocation().getPitch())); @@ -161,7 +161,7 @@ public class SlimefunCommand implements CommandExecutor, Listener { } else if (args[0].equalsIgnoreCase("timings")) { if (sender.hasPermission("slimefun.command.timings")|| sender instanceof ConsoleCommandSender) { - SlimefunStartup.ticker.info(sender); + SlimefunPlugin.ticker.info(sender); } else Messages.local.sendTranslation(sender, "messages.no-permission", true); } diff --git a/src/me/mrCookieSlime/Slimefun/holograms/CargoHologram.java b/src/me/mrCookieSlime/Slimefun/holograms/CargoHologram.java index e34b796de..c1db9d860 100644 --- a/src/me/mrCookieSlime/Slimefun/holograms/CargoHologram.java +++ b/src/me/mrCookieSlime/Slimefun/holograms/CargoHologram.java @@ -8,14 +8,14 @@ import org.bukkit.entity.ArmorStand; import org.bukkit.entity.Entity; import me.mrCookieSlime.CSCoreLibPlugin.general.World.ArmorStandFactory; -import me.mrCookieSlime.Slimefun.SlimefunStartup; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; public final class CargoHologram { private CargoHologram() {} public static void update(final Block b, final String name) { - Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> { + Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> { ArmorStand hologram = getArmorStand(b, true); hologram.setCustomName(ChatColor.translateAlternateColorCodes('&', name)); }); diff --git a/src/me/mrCookieSlime/Slimefun/holograms/EnergyHologram.java b/src/me/mrCookieSlime/Slimefun/holograms/EnergyHologram.java index 583d4cb30..5625467e9 100644 --- a/src/me/mrCookieSlime/Slimefun/holograms/EnergyHologram.java +++ b/src/me/mrCookieSlime/Slimefun/holograms/EnergyHologram.java @@ -9,7 +9,7 @@ import org.bukkit.entity.Entity; import me.mrCookieSlime.CSCoreLibPlugin.general.Math.DoubleHandler; import me.mrCookieSlime.CSCoreLibPlugin.general.World.ArmorStandFactory; -import me.mrCookieSlime.Slimefun.SlimefunStartup; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; public final class EnergyHologram { @@ -20,14 +20,14 @@ public final class EnergyHologram { } public static void update(final Block b, final String name) { - Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> { + Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> { ArmorStand hologram = getArmorStand(b, true); hologram.setCustomName(ChatColor.translateAlternateColorCodes('&', name)); }); } public static void remove(final Block b) { - Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> { + Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> { ArmorStand hologram = getArmorStand(b, false); if (hologram != null) hologram.remove(); }); diff --git a/src/me/mrCookieSlime/Slimefun/holograms/ReactorHologram.java b/src/me/mrCookieSlime/Slimefun/holograms/ReactorHologram.java index 51a6ad6b9..f05dc9921 100644 --- a/src/me/mrCookieSlime/Slimefun/holograms/ReactorHologram.java +++ b/src/me/mrCookieSlime/Slimefun/holograms/ReactorHologram.java @@ -7,7 +7,7 @@ import org.bukkit.entity.ArmorStand; import org.bukkit.entity.Entity; import me.mrCookieSlime.CSCoreLibPlugin.general.World.ArmorStandFactory; -import me.mrCookieSlime.Slimefun.SlimefunStartup; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; public final class ReactorHologram { @@ -29,7 +29,7 @@ public final class ReactorHologram { } public static void update(final Location l, final String name) { - Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> { + Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> { ArmorStand hologram = getArmorStand(l, true); if (!hologram.isCustomNameVisible()) hologram.setCustomNameVisible(true); hologram.setCustomName(ChatColor.translateAlternateColorCodes('&', name)); @@ -37,7 +37,7 @@ public final class ReactorHologram { } public static void remove(Location l) { - Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> { + Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> { ArmorStand hologram = getArmorStand(l, false); if (hologram != null) hologram.remove(); }); diff --git a/src/me/mrCookieSlime/Slimefun/hooks/ClearLagHook.java b/src/me/mrCookieSlime/Slimefun/hooks/ClearLagHook.java index a09402f5a..170e1c27b 100644 --- a/src/me/mrCookieSlime/Slimefun/hooks/ClearLagHook.java +++ b/src/me/mrCookieSlime/Slimefun/hooks/ClearLagHook.java @@ -3,7 +3,7 @@ package me.mrCookieSlime.Slimefun.hooks; import java.util.Iterator; import me.minebuilders.clearlag.events.EntityRemoveEvent; -import me.mrCookieSlime.Slimefun.SlimefunStartup; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; import org.bukkit.entity.Entity; import org.bukkit.entity.Item; @@ -12,7 +12,7 @@ import org.bukkit.event.Listener; public class ClearLagHook implements Listener { - public ClearLagHook(SlimefunStartup plugin) { + public ClearLagHook(SlimefunPlugin plugin) { plugin.getServer().getPluginManager().registerEvents(this, plugin); } diff --git a/src/me/mrCookieSlime/Slimefun/hooks/PlaceholderAPIHook.java b/src/me/mrCookieSlime/Slimefun/hooks/PlaceholderAPIHook.java index 8013f0475..11f0b9b6a 100644 --- a/src/me/mrCookieSlime/Slimefun/hooks/PlaceholderAPIHook.java +++ b/src/me/mrCookieSlime/Slimefun/hooks/PlaceholderAPIHook.java @@ -6,7 +6,7 @@ import java.util.stream.Stream; import org.bukkit.OfflinePlayer; import me.clip.placeholderapi.expansion.PlaceholderExpansion; -import me.mrCookieSlime.Slimefun.SlimefunStartup; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.Objects.Research; import me.mrCookieSlime.Slimefun.api.PlayerProfile; import me.mrCookieSlime.Slimefun.api.Slimefun; @@ -15,7 +15,7 @@ public class PlaceholderAPIHook extends PlaceholderExpansion { @Override public String getAuthor() { - return SlimefunStartup.instance.getDescription().getAuthors().toString(); + return SlimefunPlugin.instance.getDescription().getAuthors().toString(); } @Override @@ -25,7 +25,7 @@ public class PlaceholderAPIHook extends PlaceholderExpansion { @Override public String getVersion() { - return SlimefunStartup.instance.getDescription().getVersion(); + return SlimefunPlugin.instance.getDescription().getVersion(); } @Override @@ -68,7 +68,7 @@ public class PlaceholderAPIHook extends PlaceholderExpansion { } if (params.equals("timings_lag")) { - return SlimefunStartup.ticker.getTime() + "ms"; + return SlimefunPlugin.ticker.getTime() + "ms"; } return null; diff --git a/src/me/mrCookieSlime/Slimefun/hooks/SlimefunHooks.java b/src/me/mrCookieSlime/Slimefun/hooks/SlimefunHooks.java index b3147e044..9ca1e5998 100644 --- a/src/me/mrCookieSlime/Slimefun/hooks/SlimefunHooks.java +++ b/src/me/mrCookieSlime/Slimefun/hooks/SlimefunHooks.java @@ -1,6 +1,6 @@ package me.mrCookieSlime.Slimefun.hooks; -import me.mrCookieSlime.Slimefun.SlimefunStartup; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; import net.coreprotect.CoreProtect; import net.coreprotect.CoreProtectAPI; @@ -14,7 +14,7 @@ public final class SlimefunHooks { private CoreProtectAPI coreProtectAPI; - public SlimefunHooks(SlimefunStartup plugin) { + public SlimefunHooks(SlimefunPlugin plugin) { if (plugin.getServer().getPluginManager().isPluginEnabled("PlaceholderAPI")) { placeHolderAPI = true; new PlaceholderAPIHook().register(); diff --git a/src/me/mrCookieSlime/Slimefun/hooks/github/Contributor.java b/src/me/mrCookieSlime/Slimefun/hooks/github/Contributor.java index 11538074b..c165ce4eb 100644 --- a/src/me/mrCookieSlime/Slimefun/hooks/github/Contributor.java +++ b/src/me/mrCookieSlime/Slimefun/hooks/github/Contributor.java @@ -1,6 +1,6 @@ package me.mrCookieSlime.Slimefun.hooks.github; -import me.mrCookieSlime.Slimefun.SlimefunStartup; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; /** * Represents a contributor on Slimefun4's GitHub repository. @@ -69,6 +69,6 @@ public class Contributor { * @return A Base64-Head Texture */ public String getTexture() { - return SlimefunStartup.instance.getUtilities().contributorHeads.get(name); + return SlimefunPlugin.getUtilities().contributorHeads.get(name); } } diff --git a/src/me/mrCookieSlime/Slimefun/hooks/github/GitHubConnector.java b/src/me/mrCookieSlime/Slimefun/hooks/github/GitHubConnector.java index 0cc5f1bee..01da5119f 100644 --- a/src/me/mrCookieSlime/Slimefun/hooks/github/GitHubConnector.java +++ b/src/me/mrCookieSlime/Slimefun/hooks/github/GitHubConnector.java @@ -13,7 +13,7 @@ import java.nio.channels.ReadableByteChannel; import com.google.gson.JsonElement; import com.google.gson.JsonParser; -import me.mrCookieSlime.Slimefun.SlimefunStartup; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; public abstract class GitHubConnector { @@ -21,7 +21,7 @@ public abstract class GitHubConnector { public GitHubConnector() { this.file = new File("plugins/Slimefun/cache/github/" + this.getFileName() + ".json"); - SlimefunStartup.instance.getUtilities().connectors.add(this); + SlimefunPlugin.getUtilities().connectors.add(this); } public abstract String getFileName(); @@ -31,7 +31,7 @@ public abstract class GitHubConnector { public abstract void onFailure(); public void pullFile() { - if (SlimefunStartup.getCfg().getBoolean("options.print-out-github-data-retrieving")) System.out.println("[Slimefun - GitHub] Retrieving '" + this.getFileName() + ".json' from GitHub..."); + if (SlimefunPlugin.getCfg().getBoolean("options.print-out-github-data-retrieving")) System.out.println("[Slimefun - GitHub] Retrieving '" + this.getFileName() + ".json' from GitHub..."); try { URL website = new URL("https://api.github.com/repos/" + this.getRepository() + this.getURLSuffix()); @@ -48,7 +48,7 @@ public abstract class GitHubConnector { } } } catch (IOException e) { - if (SlimefunStartup.getCfg().getBoolean("options.print-out-github-data-retrieving")) System.err.println("[Slimefun - GitHub] ERROR - Could not connect to GitHub in time."); + if (SlimefunPlugin.getCfg().getBoolean("options.print-out-github-data-retrieving")) System.err.println("[Slimefun - GitHub] ERROR - Could not connect to GitHub in time."); if (hasData()) { this.parseData(); diff --git a/src/me/mrCookieSlime/Slimefun/hooks/github/GitHubSetup.java b/src/me/mrCookieSlime/Slimefun/hooks/github/GitHubSetup.java index ea3c9bfc6..fbda31bb9 100644 --- a/src/me/mrCookieSlime/Slimefun/hooks/github/GitHubSetup.java +++ b/src/me/mrCookieSlime/Slimefun/hooks/github/GitHubSetup.java @@ -10,7 +10,7 @@ import com.google.gson.JsonObject; import com.google.gson.JsonParser; import me.mrCookieSlime.Slimefun.SlimefunGuide; -import me.mrCookieSlime.Slimefun.SlimefunStartup; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; public final class GitHubSetup { @@ -21,7 +21,7 @@ public final class GitHubSetup { @Override public void onSuccess(JsonElement element) { - SlimefunStartup.instance.getUtilities().contributors.clear(); + SlimefunPlugin.getUtilities().contributors.clear(); JsonArray array = element.getAsJsonArray(); for (int i = 0; i < array.size(); i++) { @@ -35,16 +35,16 @@ public final class GitHubSetup { if (!name.equals("invalid-email-address")) { Contributor contributor = new Contributor(name, job, commits); contributor.setProfile(profile); - SlimefunStartup.instance.getUtilities().contributors.add(contributor); + SlimefunPlugin.getUtilities().contributors.add(contributor); } } - SlimefunStartup.instance.getUtilities().contributors.add(new Contributor("AquaLazuryt", "&6Lead Head Artist", 0)); + SlimefunPlugin.getUtilities().contributors.add(new Contributor("AquaLazuryt", "&6Lead Head Artist", 0)); - SlimefunStartup.instance.getServer().getScheduler().runTaskAsynchronously(SlimefunStartup.instance, () -> { + SlimefunPlugin.instance.getServer().getScheduler().runTaskAsynchronously(SlimefunPlugin.instance, () -> { for (JsonElement e: array) { String name = e.getAsJsonObject().get("login").getAsString(); - if (SlimefunStartup.instance.getUtilities().contributorHeads.containsKey(name)) { + if (SlimefunPlugin.getUtilities().contributorHeads.containsKey(name)) { continue; } @@ -62,12 +62,12 @@ public final class GitHubSetup { for (JsonElement el: properties) { if (el.isJsonObject() && el.getAsJsonObject().get("name").getAsString().equals("textures")) { - SlimefunStartup.instance.getUtilities().contributorHeads.put(name, el.getAsJsonObject().get("value").getAsString()); + SlimefunPlugin.getUtilities().contributorHeads.put(name, el.getAsJsonObject().get("value").getAsString()); break; } } } catch (Exception x) { - SlimefunStartup.instance.getUtilities().contributorHeads.put(name, null); + SlimefunPlugin.getUtilities().contributorHeads.put(name, null); } finally { if (profileReader != null) { try { @@ -90,10 +90,10 @@ public final class GitHubSetup { @Override public void onFailure() { - SlimefunStartup.instance.getUtilities().contributors.clear(); - SlimefunStartup.instance.getUtilities().contributors.add(new Contributor("TheBusyBiscuit", "&cAuthor", 3)); - SlimefunStartup.instance.getUtilities().contributors.add(new Contributor("John000708", "&cAuthor", 2)); - SlimefunStartup.instance.getUtilities().contributors.add(new Contributor("AquaLazuryt", "&6Lead Head Artist", 0)); + SlimefunPlugin.getUtilities().contributors.clear(); + SlimefunPlugin.getUtilities().contributors.add(new Contributor("TheBusyBiscuit", "&cAuthor", 3)); + SlimefunPlugin.getUtilities().contributors.add(new Contributor("John000708", "&cAuthor", 2)); + SlimefunPlugin.getUtilities().contributors.add(new Contributor("AquaLazuryt", "&6Lead Head Artist", 0)); } @Override diff --git a/src/me/mrCookieSlime/Slimefun/listeners/AndroidKillingListener.java b/src/me/mrCookieSlime/Slimefun/listeners/AndroidKillingListener.java index 77444e6dc..36d33a926 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/AndroidKillingListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/AndroidKillingListener.java @@ -16,12 +16,12 @@ import org.bukkit.event.entity.EntityDeathEvent; import org.bukkit.inventory.ItemStack; import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib; -import me.mrCookieSlime.Slimefun.SlimefunStartup; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.androids.AndroidObject; public class AndroidKillingListener implements Listener { - public AndroidKillingListener(SlimefunStartup plugin) { + public AndroidKillingListener(SlimefunPlugin plugin) { plugin.getServer().getPluginManager().registerEvents(this, plugin); } @@ -30,7 +30,7 @@ public class AndroidKillingListener implements Listener { if (e.getEntity().hasMetadata("android_killer")) { final AndroidObject obj = (AndroidObject) e.getEntity().getMetadata("android_killer").get(0).value(); - Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> { + Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> { List items = new ArrayList<>(); for (Entity n : e.getEntity().getNearbyEntities(0.5D, 0.5D, 0.5D)) { diff --git a/src/me/mrCookieSlime/Slimefun/listeners/ArmorListener.java b/src/me/mrCookieSlime/Slimefun/listeners/ArmorListener.java index f6092db7b..14eea8608 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/ArmorListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/ArmorListener.java @@ -1,6 +1,6 @@ package me.mrCookieSlime.Slimefun.listeners; -import me.mrCookieSlime.Slimefun.SlimefunStartup; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; @@ -28,7 +28,7 @@ import org.bukkit.util.Vector; public class ArmorListener implements Listener { - public ArmorListener(SlimefunStartup plugin) { + public ArmorListener(SlimefunPlugin plugin) { plugin.getServer().getPluginManager().registerEvents(this, plugin); } diff --git a/src/me/mrCookieSlime/Slimefun/listeners/AutonomousToolsListener.java b/src/me/mrCookieSlime/Slimefun/listeners/AutonomousToolsListener.java index b821f28ae..41ccc545a 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/AutonomousToolsListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/AutonomousToolsListener.java @@ -9,7 +9,7 @@ import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.block.BlockDispenseEvent; -import me.mrCookieSlime.Slimefun.SlimefunStartup; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Objects.handlers.AutonomousMachineHandler; import me.mrCookieSlime.Slimefun.Objects.handlers.ItemHandler; @@ -17,7 +17,7 @@ import me.mrCookieSlime.Slimefun.api.BlockStorage; public class AutonomousToolsListener implements Listener { - public AutonomousToolsListener(SlimefunStartup plugin) { + public AutonomousToolsListener(SlimefunPlugin plugin) { plugin.getServer().getPluginManager().registerEvents(this, plugin); } diff --git a/src/me/mrCookieSlime/Slimefun/listeners/BackpackListener.java b/src/me/mrCookieSlime/Slimefun/listeners/BackpackListener.java index a0545dba6..bfcba58bb 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/BackpackListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/BackpackListener.java @@ -17,7 +17,7 @@ import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; -import me.mrCookieSlime.Slimefun.SlimefunStartup; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.Juice; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunBackpack; @@ -33,9 +33,9 @@ public class BackpackListener implements Listener { private Utilities utilities; - public BackpackListener(SlimefunStartup plugin) { + public BackpackListener(SlimefunPlugin plugin) { plugin.getServer().getPluginManager().registerEvents(this, plugin); - utilities = plugin.getUtilities(); + utilities = SlimefunPlugin.getUtilities(); } @EventHandler diff --git a/src/me/mrCookieSlime/Slimefun/listeners/BlockListener.java b/src/me/mrCookieSlime/Slimefun/listeners/BlockListener.java index 5e0042bde..3da3d870c 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/BlockListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/BlockListener.java @@ -20,7 +20,7 @@ import org.bukkit.inventory.EquipmentSlot; import org.bukkit.inventory.ItemStack; import me.mrCookieSlime.CSCoreLibPlugin.general.Block.BlockAdjacents; -import me.mrCookieSlime.Slimefun.SlimefunStartup; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.Events.MultiBlockInteractEvent; import me.mrCookieSlime.Slimefun.Objects.MultiBlock; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; @@ -30,7 +30,7 @@ import me.mrCookieSlime.Slimefun.api.BlockStorage; public class BlockListener implements Listener { - public BlockListener(SlimefunStartup plugin) { + public BlockListener(SlimefunPlugin plugin) { plugin.getServer().getPluginManager().registerEvents(this, plugin); } diff --git a/src/me/mrCookieSlime/Slimefun/listeners/BowListener.java b/src/me/mrCookieSlime/Slimefun/listeners/BowListener.java index ef8cb24b2..96509a083 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/BowListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/BowListener.java @@ -14,7 +14,7 @@ import org.bukkit.event.entity.EntityShootBowEvent; import org.bukkit.event.entity.ProjectileHitEvent; import org.bukkit.util.Vector; -import me.mrCookieSlime.Slimefun.SlimefunStartup; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Objects.handlers.BowShootHandler; import me.mrCookieSlime.Slimefun.Objects.handlers.ItemHandler; @@ -24,9 +24,9 @@ public class BowListener implements Listener { private Utilities utilities; - public BowListener(SlimefunStartup plugin) { + public BowListener(SlimefunPlugin plugin) { plugin.getServer().getPluginManager().registerEvents(this, plugin); - utilities = plugin.getUtilities(); + utilities = SlimefunPlugin.getUtilities(); } @EventHandler @@ -37,7 +37,7 @@ public class BowListener implements Listener { @EventHandler public void onArrowHit(final ProjectileHitEvent e) { - Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> { + Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> { if (!e.getEntity().isValid()) return; if (utilities.arrows.containsKey(e.getEntity().getUniqueId())) utilities.arrows.remove(e.getEntity().getUniqueId()); if (e.getEntity() instanceof Arrow) handleGrapplingHook((Arrow) e.getEntity()); @@ -58,7 +58,7 @@ public class BowListener implements Listener { n.remove(); } - Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> { + Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> { utilities.jumpState.remove(p.getUniqueId()); utilities.remove.remove(p.getUniqueId()); }, 20L); @@ -87,7 +87,7 @@ public class BowListener implements Listener { n.remove(); } - Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> { + Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> { utilities.jumpState.remove(p.getUniqueId()); utilities.remove.remove(p.getUniqueId()); }, 20L); diff --git a/src/me/mrCookieSlime/Slimefun/listeners/CoolerListener.java b/src/me/mrCookieSlime/Slimefun/listeners/CoolerListener.java index 81e3cf788..2f86191e3 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/CoolerListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/CoolerListener.java @@ -11,7 +11,7 @@ import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.PotionMeta; import org.bukkit.potion.PotionEffect; -import me.mrCookieSlime.Slimefun.SlimefunStartup; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.api.PlayerProfile; @@ -19,7 +19,7 @@ import me.mrCookieSlime.Slimefun.api.inventory.BackpackInventory; public class CoolerListener implements Listener { - public CoolerListener(SlimefunStartup plugin) { + public CoolerListener(SlimefunPlugin plugin) { plugin.getServer().getPluginManager().registerEvents(this, plugin); } diff --git a/src/me/mrCookieSlime/Slimefun/listeners/DamageListener.java b/src/me/mrCookieSlime/Slimefun/listeners/DamageListener.java index 4bad8a871..89d6fadd5 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/DamageListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/DamageListener.java @@ -27,7 +27,7 @@ import org.bukkit.inventory.meta.SkullMeta; import me.mrCookieSlime.EmeraldEnchants.EmeraldEnchants; import me.mrCookieSlime.EmeraldEnchants.ItemEnchantment; -import me.mrCookieSlime.Slimefun.SlimefunStartup; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SoulboundItem; @@ -43,9 +43,9 @@ public class DamageListener implements Listener { private Utilities utilities; private Random random = new Random(); - public DamageListener(SlimefunStartup plugin) { + public DamageListener(SlimefunPlugin plugin) { plugin.getServer().getPluginManager().registerEvents(this, plugin); - utilities = plugin.getUtilities(); + utilities = SlimefunPlugin.getUtilities(); } @EventHandler diff --git a/src/me/mrCookieSlime/Slimefun/listeners/FurnaceListener.java b/src/me/mrCookieSlime/Slimefun/listeners/FurnaceListener.java index 691e9995d..829fd1d14 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/FurnaceListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/FurnaceListener.java @@ -10,14 +10,14 @@ import org.bukkit.inventory.ItemStack; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; import me.mrCookieSlime.CSCoreLibPlugin.general.Recipe.RecipeCalculator; -import me.mrCookieSlime.Slimefun.SlimefunStartup; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.EnhancedFurnace; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.api.BlockStorage; public class FurnaceListener implements Listener { - public FurnaceListener(SlimefunStartup plugin) { + public FurnaceListener(SlimefunPlugin plugin) { plugin.getServer().getPluginManager().registerEvents(this, plugin); } diff --git a/src/me/mrCookieSlime/Slimefun/listeners/GearListener.java b/src/me/mrCookieSlime/Slimefun/listeners/GearListener.java index 438982cd8..cc197b9ec 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/GearListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/GearListener.java @@ -1,6 +1,6 @@ package me.mrCookieSlime.Slimefun.listeners; -import me.mrCookieSlime.Slimefun.SlimefunStartup; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.JetBoots; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.Jetpack; @@ -19,7 +19,7 @@ import org.bukkit.event.player.PlayerToggleSneakEvent; public class GearListener implements Listener { - public GearListener(SlimefunStartup plugin) { + public GearListener(SlimefunPlugin plugin) { plugin.getServer().getPluginManager().registerEvents(this, plugin); } @@ -37,13 +37,13 @@ public class GearListener implements Listener { if (thrust > 0.2) { JetpackTask task = new JetpackTask(p, thrust); - task.setID(Bukkit.getScheduler().scheduleSyncRepeatingTask(SlimefunStartup.instance, task, 0L, 3L)); + task.setID(Bukkit.getScheduler().scheduleSyncRepeatingTask(SlimefunPlugin.instance, task, 0L, 3L)); } } } else if (item.isItem(SlimefunItems.PARACHUTE) && Slimefun.hasUnlocked(p, SlimefunItems.PARACHUTE, true)) { ParachuteTask task = new ParachuteTask(p); - task.setID(Bukkit.getScheduler().scheduleSyncRepeatingTask(SlimefunStartup.instance, task, 0L, 3L)); + task.setID(Bukkit.getScheduler().scheduleSyncRepeatingTask(SlimefunPlugin.instance, task, 0L, 3L)); } } if (SlimefunItem.getByItem(p.getInventory().getBoots()) != null) { @@ -53,13 +53,13 @@ public class GearListener implements Listener { double speed = ((JetBoots) item).getSpeed(); if (speed > 0.2) { JetBootsTask task = new JetBootsTask(p, speed); - task.setID(Bukkit.getScheduler().scheduleSyncRepeatingTask(SlimefunStartup.instance, task, 0L, 2L)); + task.setID(Bukkit.getScheduler().scheduleSyncRepeatingTask(SlimefunPlugin.instance, task, 0L, 2L)); } } } if (p.getInventory().containsAtLeast(SlimefunItems.INFUSED_MAGNET, 1)) { MagnetTask task = new MagnetTask(p); - task.setID(Bukkit.getScheduler().scheduleSyncRepeatingTask(SlimefunStartup.instance, task, 0L, 8L)); + task.setID(Bukkit.getScheduler().scheduleSyncRepeatingTask(SlimefunPlugin.instance, task, 0L, 8L)); } } } diff --git a/src/me/mrCookieSlime/Slimefun/listeners/GuideOnJoinListener.java b/src/me/mrCookieSlime/Slimefun/listeners/GuideOnJoinListener.java index aa526499e..0dc47e2a6 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/GuideOnJoinListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/GuideOnJoinListener.java @@ -6,12 +6,12 @@ import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerJoinEvent; import me.mrCookieSlime.Slimefun.SlimefunGuide; -import me.mrCookieSlime.Slimefun.SlimefunStartup; -import me.mrCookieSlime.Slimefun.Misc.BookDesign; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; +import me.mrCookieSlime.Slimefun.api.SlimefunGuideLayout; public class GuideOnJoinListener implements Listener { - public GuideOnJoinListener(SlimefunStartup plugin) { + public GuideOnJoinListener(SlimefunPlugin plugin) { plugin.getServer().getPluginManager().registerEvents(this, plugin); } @@ -19,10 +19,10 @@ public class GuideOnJoinListener implements Listener { public void onJoin(PlayerJoinEvent e) { if (!e.getPlayer().hasPlayedBefore()) { Player p = e.getPlayer(); - if (!SlimefunStartup.getWhitelist().getBoolean(p.getWorld().getName() + ".enabled")) return; - if (!SlimefunStartup.getWhitelist().getBoolean(p.getWorld().getName() + ".enabled-items.SLIMEFUN_GUIDE")) return; + if (!SlimefunPlugin.getWhitelist().getBoolean(p.getWorld().getName() + ".enabled")) return; + if (!SlimefunPlugin.getWhitelist().getBoolean(p.getWorld().getName() + ".enabled-items.SLIMEFUN_GUIDE")) return; - BookDesign type = SlimefunStartup.getCfg().getBoolean("guide.default-view-book") ? BookDesign.BOOK : BookDesign.CHEST; + SlimefunGuideLayout type = SlimefunPlugin.getCfg().getBoolean("guide.default-view-book") ? SlimefunGuideLayout.BOOK : SlimefunGuideLayout.CHEST; p.getInventory().addItem(SlimefunGuide.getItem(type)); } } diff --git a/src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java b/src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java index e04a52179..16f28b490 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java @@ -41,9 +41,8 @@ import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.InvUtils; import me.mrCookieSlime.CSCoreLibPlugin.general.Player.PlayerInventory; import me.mrCookieSlime.CSCoreLibPlugin.general.World.CustomSkull; import me.mrCookieSlime.Slimefun.SlimefunGuide; -import me.mrCookieSlime.Slimefun.SlimefunStartup; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; -import me.mrCookieSlime.Slimefun.Misc.BookDesign; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.Juice; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.MultiTool; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; @@ -52,6 +51,7 @@ import me.mrCookieSlime.Slimefun.Objects.handlers.ItemInteractionHandler; import me.mrCookieSlime.Slimefun.Setup.Messages; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.api.BlockStorage; +import me.mrCookieSlime.Slimefun.api.SlimefunGuideLayout; import me.mrCookieSlime.Slimefun.api.Slimefun; import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock; import me.mrCookieSlime.Slimefun.api.energy.ItemEnergy; @@ -64,9 +64,9 @@ public class ItemListener implements Listener { private Utilities utilities; - public ItemListener(SlimefunStartup plugin) { + public ItemListener(SlimefunPlugin plugin) { plugin.getServer().getPluginManager().registerEvents(this, plugin); - utilities = plugin.getUtilities(); + utilities = SlimefunPlugin.getUtilities(); } @EventHandler @@ -87,14 +87,14 @@ public class ItemListener implements Listener { e.setCancelled(true); - if (SlimefunManager.isItemSimiliar(slot0, SlimefunGuide.getItem(BookDesign.BOOK), true)) + if (SlimefunManager.isItemSimiliar(slot0, SlimefunGuide.getItem(SlimefunGuideLayout.BOOK), true)) e.setCancelled(true); - else if (SlimefunManager.isItemSimiliar(slot0, SlimefunGuide.getItem(BookDesign.CHEST), true)) + else if (SlimefunManager.isItemSimiliar(slot0, SlimefunGuide.getItem(SlimefunGuideLayout.CHEST), true)) e.setCancelled(true); - if (SlimefunManager.isItemSimiliar(slot1, SlimefunGuide.getItem(BookDesign.BOOK), true)) + if (SlimefunManager.isItemSimiliar(slot1, SlimefunGuide.getItem(SlimefunGuideLayout.BOOK), true)) e.setCancelled(true); - else if (SlimefunManager.isItemSimiliar(slot1, SlimefunGuide.getItem(BookDesign.CHEST), true)) + else if (SlimefunManager.isItemSimiliar(slot1, SlimefunGuide.getItem(SlimefunGuideLayout.CHEST), true)) e.setCancelled(true); } } @@ -158,14 +158,14 @@ public class ItemListener implements Listener { if (BlockStorage.check(e.getClickedBlock()).isTicking()) { p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&dTicking: " + "&2\u2714")); p.sendMessage(ChatColor.translateAlternateColorCodes('&', " &dAsync: &e" + (BlockStorage.check(e.getClickedBlock()).getBlockTicker().isSynchronized() ? "&4\u2718": "&2\u2714"))); - p.sendMessage(ChatColor.translateAlternateColorCodes('&', " &dTimings: &e" + SlimefunStartup.ticker.getTimings(e.getClickedBlock()) + "ms")); - p.sendMessage(ChatColor.translateAlternateColorCodes('&', " &dTotal Timings: &e" + SlimefunStartup.ticker.getTimings(BlockStorage.checkID(e.getClickedBlock())) + "ms")); - p.sendMessage(ChatColor.translateAlternateColorCodes('&', " &dChunk Timings: &e" + SlimefunStartup.ticker.getTimings(e.getClickedBlock().getChunk()) + "ms")); + p.sendMessage(ChatColor.translateAlternateColorCodes('&', " &dTimings: &e" + SlimefunPlugin.ticker.getTimings(e.getClickedBlock()) + "ms")); + p.sendMessage(ChatColor.translateAlternateColorCodes('&', " &dTotal Timings: &e" + SlimefunPlugin.ticker.getTimings(BlockStorage.checkID(e.getClickedBlock())) + "ms")); + p.sendMessage(ChatColor.translateAlternateColorCodes('&', " &dChunk Timings: &e" + SlimefunPlugin.ticker.getTimings(e.getClickedBlock().getChunk()) + "ms")); } else if (BlockStorage.check(e.getClickedBlock()).getEnergyTicker() != null) { p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&dTicking: " + "&b~ &3(Indirect)")); - p.sendMessage(ChatColor.translateAlternateColorCodes('&', " &dTimings: &e" + SlimefunStartup.ticker.getTimings(e.getClickedBlock()) + "ms")); - p.sendMessage(ChatColor.translateAlternateColorCodes('&', " &dChunk Timings: &e" + SlimefunStartup.ticker.getTimings(e.getClickedBlock().getChunk()) + "ms")); + p.sendMessage(ChatColor.translateAlternateColorCodes('&', " &dTimings: &e" + SlimefunPlugin.ticker.getTimings(e.getClickedBlock()) + "ms")); + p.sendMessage(ChatColor.translateAlternateColorCodes('&', " &dChunk Timings: &e" + SlimefunPlugin.ticker.getTimings(e.getClickedBlock().getChunk()) + "ms")); } else { p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&dTicking: " + "&4\u2718")); @@ -209,15 +209,15 @@ public class ItemListener implements Listener { } } - if (SlimefunManager.isItemSimiliar(item, SlimefunGuide.getItem(BookDesign.BOOK), true)) { + if (SlimefunManager.isItemSimiliar(item, SlimefunGuide.getItem(SlimefunGuideLayout.BOOK), true)) { if (p.isSneaking()) SlimefunGuide.openSettings(p, item); else SlimefunGuide.openGuide(p, true); } - else if (SlimefunManager.isItemSimiliar(item, SlimefunGuide.getItem(BookDesign.CHEST), true)) { + else if (SlimefunManager.isItemSimiliar(item, SlimefunGuide.getItem(SlimefunGuideLayout.CHEST), true)) { if (p.isSneaking()) SlimefunGuide.openSettings(p, item); else SlimefunGuide.openGuide(p, false); } - else if (SlimefunManager.isItemSimiliar(item, SlimefunGuide.getItem(BookDesign.CHEAT_SHEET), true)) { + else if (SlimefunManager.isItemSimiliar(item, SlimefunGuide.getItem(SlimefunGuideLayout.CHEAT_SHEET), true)) { if (p.isSneaking()) SlimefunGuide.openSettings(p, item); else p.chat("/sf cheat"); } @@ -361,7 +361,7 @@ public class ItemListener implements Listener { // Remove the glass bottle once drunk final int m = mode; - Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> { + Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> { if (m == 0) p.getEquipment().setItemInMainHand(null); else if (m == 1) p.getEquipment().setItemInOffHand(null); else if (m == 2) p.getInventory().removeItem(new ItemStack(Material.GLASS_BOTTLE, 1)); @@ -421,11 +421,11 @@ public class ItemListener implements Listener { if (SlimefunItem.getByItem(slot0) != null && !SlimefunItem.isDisabled(slot0) || SlimefunItem.getByItem(slot1) != null && !SlimefunItem.isDisabled(slot1) || - SlimefunManager.isItemSimiliar(slot0, SlimefunGuide.getItem(BookDesign.BOOK), true) || - SlimefunManager.isItemSimiliar(slot0, SlimefunGuide.getItem(BookDesign.CHEST), true)|| + SlimefunManager.isItemSimiliar(slot0, SlimefunGuide.getItem(SlimefunGuideLayout.BOOK), true) || + SlimefunManager.isItemSimiliar(slot0, SlimefunGuide.getItem(SlimefunGuideLayout.CHEST), true)|| - SlimefunManager.isItemSimiliar(slot1, SlimefunGuide.getItem(BookDesign.BOOK), true) || - SlimefunManager.isItemSimiliar(slot1, SlimefunGuide.getItem(BookDesign.CHEST), true)) { + SlimefunManager.isItemSimiliar(slot1, SlimefunGuide.getItem(SlimefunGuideLayout.BOOK), true) || + SlimefunManager.isItemSimiliar(slot1, SlimefunGuide.getItem(SlimefunGuideLayout.CHEST), true)) { e.setCancelled(true); Messages.local.sendTranslation((Player) e.getWhoClicked(), "anvil.not-working", true); diff --git a/src/me/mrCookieSlime/Slimefun/listeners/ItemPickupListener.java b/src/me/mrCookieSlime/Slimefun/listeners/ItemPickupListener.java index 356b22159..e4cbc1882 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/ItemPickupListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/ItemPickupListener.java @@ -1,6 +1,6 @@ package me.mrCookieSlime.Slimefun.listeners; -import me.mrCookieSlime.Slimefun.SlimefunStartup; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; import org.bukkit.ChatColor; import org.bukkit.event.EventHandler; @@ -17,7 +17,7 @@ import org.bukkit.event.inventory.InventoryPickupItemEvent; */ public class ItemPickupListener implements Listener { - public ItemPickupListener(SlimefunStartup plugin) { + public ItemPickupListener(SlimefunPlugin plugin) { plugin.getServer().getPluginManager().registerEvents(this, plugin); } diff --git a/src/me/mrCookieSlime/Slimefun/listeners/NetworkListener.java b/src/me/mrCookieSlime/Slimefun/listeners/NetworkListener.java index 292a6fabe..5ea8b9556 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/NetworkListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/NetworkListener.java @@ -1,6 +1,6 @@ package me.mrCookieSlime.Slimefun.listeners; -import me.mrCookieSlime.Slimefun.SlimefunStartup; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.api.network.Network; import org.bukkit.event.EventHandler; @@ -11,7 +11,7 @@ import org.bukkit.event.block.BlockPlaceEvent; public class NetworkListener implements Listener { - public NetworkListener(SlimefunStartup plugin) { + public NetworkListener(SlimefunPlugin plugin) { plugin.getServer().getPluginManager().registerEvents(this, plugin); } diff --git a/src/me/mrCookieSlime/Slimefun/listeners/PlayerQuitListener.java b/src/me/mrCookieSlime/Slimefun/listeners/PlayerQuitListener.java index 6c8971653..f06f18fc9 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/PlayerQuitListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/PlayerQuitListener.java @@ -4,18 +4,18 @@ import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerQuitEvent; -import me.mrCookieSlime.Slimefun.SlimefunStartup; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.api.PlayerProfile; public class PlayerQuitListener implements Listener { - public PlayerQuitListener(SlimefunStartup plugin) { + public PlayerQuitListener(SlimefunPlugin plugin) { plugin.getServer().getPluginManager().registerEvents(this, plugin); } @EventHandler public void onDisconnect(PlayerQuitEvent e) { - SlimefunStartup.instance.getUtilities().guideHistory.remove(e.getPlayer().getUniqueId()); + SlimefunPlugin.getUtilities().guideHistory.remove(e.getPlayer().getUniqueId()); if (PlayerProfile.isLoaded(e.getPlayer().getUniqueId())) { PlayerProfile.fromUUID(e.getPlayer().getUniqueId()).markForDeletion(); diff --git a/src/me/mrCookieSlime/Slimefun/listeners/TalismanListener.java b/src/me/mrCookieSlime/Slimefun/listeners/TalismanListener.java index 015acfe20..c12e3a2f7 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/TalismanListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/TalismanListener.java @@ -31,7 +31,7 @@ import org.bukkit.potion.PotionEffectType; import org.bukkit.util.Vector; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; -import me.mrCookieSlime.Slimefun.SlimefunStartup; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.Talisman; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; @@ -41,7 +41,7 @@ public class TalismanListener implements Listener { private Random random = new Random(); - public TalismanListener(SlimefunStartup plugin) { + public TalismanListener(SlimefunPlugin plugin) { plugin.getServer().getPluginManager().registerEvents(this, plugin); } @@ -98,7 +98,7 @@ public class TalismanListener implements Listener { item.setItemMeta(meta); final int itemSlot = slot; - SlimefunStartup.instance.getServer().getScheduler().runTaskLater(SlimefunStartup.instance, () -> { + SlimefunPlugin.instance.getServer().getScheduler().runTaskLater(SlimefunPlugin.instance, () -> { inv.setItem(itemSlot, item); }, 1L); } diff --git a/src/me/mrCookieSlime/Slimefun/listeners/TeleporterListener.java b/src/me/mrCookieSlime/Slimefun/listeners/TeleporterListener.java index b71114d5d..c0ab19cb9 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/TeleporterListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/TeleporterListener.java @@ -1,6 +1,6 @@ package me.mrCookieSlime.Slimefun.listeners; -import me.mrCookieSlime.Slimefun.SlimefunStartup; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.GPS.Elevator; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.Teleporter; @@ -17,7 +17,7 @@ public class TeleporterListener implements Listener { private final BlockFace[] faces = {BlockFace.NORTH, BlockFace.NORTH_EAST, BlockFace.EAST, BlockFace.SOUTH_EAST, BlockFace.SOUTH, BlockFace.SOUTH_WEST, BlockFace.WEST, BlockFace.NORTH_WEST}; - public TeleporterListener(SlimefunStartup plugin) { + public TeleporterListener(SlimefunPlugin plugin) { plugin.getServer().getPluginManager().registerEvents(this, plugin); } diff --git a/src/me/mrCookieSlime/Slimefun/listeners/ToolListener.java b/src/me/mrCookieSlime/Slimefun/listeners/ToolListener.java index 1a44ac18a..0d608b19c 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/ToolListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/ToolListener.java @@ -24,7 +24,7 @@ import org.bukkit.inventory.ItemStack; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; import me.mrCookieSlime.CSCoreLibPlugin.general.Particles.FireworkShow; import me.mrCookieSlime.CSCoreLibPlugin.general.Player.PlayerInventory; -import me.mrCookieSlime.Slimefun.SlimefunStartup; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.HandledBlock; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; @@ -46,9 +46,9 @@ public class ToolListener implements Listener { private Random random = new Random(); private Utilities utilities; - public ToolListener(SlimefunStartup plugin) { + public ToolListener(SlimefunPlugin plugin) { plugin.getServer().getPluginManager().registerEvents(this, plugin); - utilities = plugin.getUtilities(); + utilities = SlimefunPlugin.getUtilities(); sensitiveMaterials.add(Material.STONE_PRESSURE_PLATE); sensitiveMaterials.add(Material.LIGHT_WEIGHTED_PRESSURE_PLATE); diff --git a/src/me/mrCookieSlime/Slimefun/listeners/WorldListener.java b/src/me/mrCookieSlime/Slimefun/listeners/WorldListener.java index 0e1be152b..db83ad717 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/WorldListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/WorldListener.java @@ -5,12 +5,12 @@ import org.bukkit.event.Listener; import org.bukkit.event.world.WorldLoadEvent; import org.bukkit.event.world.WorldUnloadEvent; -import me.mrCookieSlime.Slimefun.SlimefunStartup; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.api.BlockStorage; public class WorldListener implements Listener { - public WorldListener(SlimefunStartup plugin) { + public WorldListener(SlimefunPlugin plugin) { plugin.getServer().getPluginManager().registerEvents(this, plugin); } @@ -18,9 +18,9 @@ public class WorldListener implements Listener { public void onWorldLoad(WorldLoadEvent e) { BlockStorage.getForcedStorage(e.getWorld()); - SlimefunStartup.getWhitelist().setDefaultValue(e.getWorld().getName() + ".enabled", true); - SlimefunStartup.getWhitelist().setDefaultValue(e.getWorld().getName() + ".enabled-items.SLIMEFUN_GUIDE", true); - SlimefunStartup.getWhitelist().save(); + SlimefunPlugin.getWhitelist().setDefaultValue(e.getWorld().getName() + ".enabled", true); + SlimefunPlugin.getWhitelist().setDefaultValue(e.getWorld().getName() + ".enabled-items.SLIMEFUN_GUIDE", true); + SlimefunPlugin.getWhitelist().save(); } @EventHandler diff --git a/src/me/mrCookieSlime/Slimefun/utils/Utilities.java b/src/me/mrCookieSlime/Slimefun/utils/Utilities.java index 937d26451..ae30e0723 100644 --- a/src/me/mrCookieSlime/Slimefun/utils/Utilities.java +++ b/src/me/mrCookieSlime/Slimefun/utils/Utilities.java @@ -13,7 +13,9 @@ import org.bukkit.entity.Entity; import org.bukkit.inventory.ItemStack; import me.mrCookieSlime.Slimefun.GEO.OreGenResource; +import me.mrCookieSlime.Slimefun.Setup.PostSlimefunLoadingHandler; import me.mrCookieSlime.Slimefun.ancient_altar.AltarRecipe; +import me.mrCookieSlime.Slimefun.api.PlayerProfile; import me.mrCookieSlime.Slimefun.api.item_transport.CargoTransportEvent; import me.mrCookieSlime.Slimefun.hooks.github.Contributor; import me.mrCookieSlime.Slimefun.hooks.github.GitHubConnector; @@ -30,6 +32,10 @@ public final class Utilities { public int vanillaItems = 0; + public Map profiles = new HashMap<>(); + + public List postHandlers = new ArrayList<>(); + public Map jumpState = new HashMap<>(); public Set damage = new HashSet<>(); public Map remove = new HashMap<>(); diff --git a/src/plugin.yml b/src/plugin.yml index 7509adc2c..3381857ba 100644 --- a/src/plugin.yml +++ b/src/plugin.yml @@ -4,7 +4,7 @@ author: The Slimefun 4 Community description: Slimefun basically turns your entire Server into a FTB modpack without installing a single mod website: http://TheBusyBiscuit.github.io/ -main: me.mrCookieSlime.Slimefun.SlimefunStartup +main: me.mrCookieSlime.Slimefun.SlimefunPlugin softdepend: [CS-CoreLib, PlaceholderAPI] api-version: 1.14 From c2936053124ba9148325a280ef0e29d2d840e07e Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Sat, 31 Aug 2019 12:12:38 +0200 Subject: [PATCH 092/169] Logger Conversion Pt.1 --- .../Slimefun/GPS/GPSNetwork.java | 25 ++++++++----------- .../Slimefun/GPS/TeleportationSequence.java | 8 +++--- .../Slimefun/Lists/Categories.java | 5 +++- .../Slimefun/Lists/SlimefunItems.java | 4 ++- .../Objects/SlimefunItem/SlimefunItem.java | 4 +-- .../machines/AdvancedCargoOutputNode.java | 7 ++++-- .../machines/AnimalGrowthAccelerator.java | 7 ++++-- .../SlimefunItem/machines/AutoBreeder.java | 7 ++++-- .../machines/CropGrowthAccelerator.java | 6 +++-- .../SlimefunItem/machines/XPCollector.java | 6 +++-- .../Slimefun/api/ErrorReport.java | 5 ++-- .../mrCookieSlime/Slimefun/api/Slimefun.java | 4 +++ .../Slimefun/api/SlimefunBackup.java | 5 ++-- .../Slimefun/hooks/github/IntegerFormat.java | 7 ++++-- .../Slimefun/listeners/ItemListener.java | 5 ++-- 15 files changed, 65 insertions(+), 40 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/GPS/GPSNetwork.java b/src/me/mrCookieSlime/Slimefun/GPS/GPSNetwork.java index c82d2d525..7fed81e4d 100644 --- a/src/me/mrCookieSlime/Slimefun/GPS/GPSNetwork.java +++ b/src/me/mrCookieSlime/Slimefun/GPS/GPSNetwork.java @@ -5,6 +5,7 @@ import java.util.HashSet; import java.util.Map; import java.util.Set; import java.util.UUID; +import java.util.logging.Level; import org.bukkit.Bukkit; import org.bukkit.ChatColor; @@ -92,8 +93,8 @@ public class GPSNetwork { menu.addMenuClickHandler(6, (pl, slot, item, action) -> { try { openWaypointControlPanel(pl); - } catch (Exception e) { - e.printStackTrace(); + } catch (Exception x) { + Slimefun.getLogger().log(Level.SEVERE, "An Error occured while opening the 'Waypoint' Panel for Slimefun " + Slimefun.getVersion(), x); } return false; }); @@ -104,9 +105,7 @@ public class GPSNetwork { int slot = inventory[index]; menu.addItem(slot, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjBjOWMxYTAyMmY0MGI3M2YxNGI0Y2JhMzdjNzE4YzZhNTMzZjNhMjg2NGI2NTM2ZDVmNDU2OTM0Y2MxZiJ9fX0="), "&bGPS Transmitter", "&8\u21E8 &7World: &r" + l.getWorld().getName(), "&8\u21E8 &7X: &r" + l.getX(), "&8\u21E8 &7Y: &r" + l.getY(), "&8\u21E8 &7Z: &r" + l.getZ(), "", "&8\u21E8 &7Signal Strength: &r" + l.getBlockY(), "&8\u21E8 &7Ping: &r" + DoubleHandler.fixDouble(1000D / l.getY()) + "ms")); - menu.addMenuClickHandler(slot, - (pl, slotn, item, action) -> false - ); + menu.addMenuClickHandler(slot, (pl, slotn, item, action) -> false); index++; } @@ -135,17 +134,15 @@ public class GPSNetwork { ChestMenu menu = new ChestMenu("&9Control Panel"); for (int slot: border) { - menu.addItem(slot, new CustomItem(new ItemStack(Material.GRAY_STAINED_GLASS_PANE), " "), - (pl, slotn, item, action) -> false - ); + menu.addItem(slot, new CustomItem(new ItemStack(Material.GRAY_STAINED_GLASS_PANE), " "), (pl, slotn, item, action) -> false); } menu.addItem(2, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjBjOWMxYTAyMmY0MGI3M2YxNGI0Y2JhMzdjNzE4YzZhNTMzZjNhMjg2NGI2NTM2ZDVmNDU2OTM0Y2MxZiJ9fX0="), "&7Transmitter Overview &r(Select)")); menu.addMenuClickHandler(2, (pl, slot, item, action) -> { try { openTransmitterControlPanel(pl); - } catch (Exception e) { - e.printStackTrace(); + } catch (Exception x) { + Slimefun.getLogger().log(Level.SEVERE, "An Error occured while opening the 'GPS Transmitters' Panel for Slimefun " + Slimefun.getVersion(), x); } return false; }); @@ -173,8 +170,8 @@ public class GPSNetwork { pl.playSound(pl.getLocation(), Sound.UI_BUTTON_CLICK, 1F, 1F); try { openWaypointControlPanel(pl); - } catch (Exception e) { - e.printStackTrace(); + } catch (Exception x) { + Slimefun.getLogger().log(Level.SEVERE, "An Error occured while opening the 'Waypoint Control' Panel for Slimefun " + Slimefun.getVersion(), x); } return false; }); @@ -239,9 +236,7 @@ public class GPSNetwork { for (OreGenResource resource: OreGenSystem.listResources()) { int supply = OreGenSystem.getSupplies(resource, chunk, true); - menu.addItem(index, new CustomItem(resource.getIcon(), "&7Resource: &e" + resource.getName(), "", "&7Scanned Chunk:", "&8\u21E8 &7X: " + chunk.getX() + " Z: " + chunk.getZ(), "", "&7Result: &e" + supply + " " + resource.getMeasurementUnit()), - (pl, slot, item, action) -> false - ); + menu.addItem(index, new CustomItem(resource.getIcon(), "&7Resource: &e" + resource.getName(), "", "&7Scanned Chunk:", "&8\u21E8 &7X: " + chunk.getX() + " Z: " + chunk.getZ(), "", "&7Result: &e" + supply + " " + resource.getMeasurementUnit()), (pl, slot, item, action) -> false); index++; } diff --git a/src/me/mrCookieSlime/Slimefun/GPS/TeleportationSequence.java b/src/me/mrCookieSlime/Slimefun/GPS/TeleportationSequence.java index 8e77769bc..9ca69123c 100644 --- a/src/me/mrCookieSlime/Slimefun/GPS/TeleportationSequence.java +++ b/src/me/mrCookieSlime/Slimefun/GPS/TeleportationSequence.java @@ -1,6 +1,7 @@ package me.mrCookieSlime.Slimefun.GPS; import java.util.UUID; +import java.util.logging.Level; import org.bukkit.Bukkit; import org.bukkit.ChatColor; @@ -14,6 +15,7 @@ import org.bukkit.potion.PotionEffectType; import me.mrCookieSlime.CSCoreLibPlugin.general.World.TitleBuilder; import me.mrCookieSlime.CSCoreLibPlugin.general.World.TitleBuilder.TitleType; import me.mrCookieSlime.Slimefun.SlimefunPlugin; +import me.mrCookieSlime.Slimefun.api.Slimefun; public final class TeleportationSequence { @@ -58,7 +60,7 @@ public final class TeleportationSequence { title.send(TitleType.TITLE, p); subtitle.send(TitleType.SUBTITLE, p); } catch(Exception x) { - x.printStackTrace(); + Slimefun.getLogger().log(Level.SEVERE, "An Error occured while cancelling a Teleportation Sequence for Slimefun " + Slimefun.getVersion(), x); } } } @@ -97,8 +99,8 @@ public final class TeleportationSequence { Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> updateProgress(uuid, speed, progress + speed, source, destination, resistance), 10L); } - } catch (Exception e) { - e.printStackTrace(); + } catch (Exception x) { + Slimefun.getLogger().log(Level.SEVERE, "An Error occured during a Teleportation Sequence for Slimefun " + Slimefun.getVersion(), x); } } else cancel(uuid, p); diff --git a/src/me/mrCookieSlime/Slimefun/Lists/Categories.java b/src/me/mrCookieSlime/Slimefun/Lists/Categories.java index e76157473..0935b3387 100644 --- a/src/me/mrCookieSlime/Slimefun/Lists/Categories.java +++ b/src/me/mrCookieSlime/Slimefun/Lists/Categories.java @@ -1,5 +1,7 @@ package me.mrCookieSlime.Slimefun.Lists; +import java.util.logging.Level; + import org.bukkit.Color; import org.bukkit.Material; import org.bukkit.inventory.ItemStack; @@ -10,6 +12,7 @@ import me.mrCookieSlime.CSCoreLibPlugin.general.World.CustomSkull; import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.LockedCategory; import me.mrCookieSlime.Slimefun.Objects.SeasonalCategory; +import me.mrCookieSlime.Slimefun.api.Slimefun; /** * Built-in categories. @@ -52,7 +55,7 @@ public final class Categories { return CustomSkull.getItem(texture); } catch(Exception x) { - x.printStackTrace(); + Slimefun.getLogger().log(Level.SEVERE, "An Error occured while initializing the Categories for Slimefun " + Slimefun.getVersion(), x); return new ItemStack(Material.PLAYER_HEAD); } diff --git a/src/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java b/src/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java index ab924d255..bdd19f4ea 100644 --- a/src/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java +++ b/src/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java @@ -2,6 +2,7 @@ package me.mrCookieSlime.Slimefun.Lists; import java.util.HashMap; import java.util.Map; +import java.util.logging.Level; import org.bukkit.ChatColor; import org.bukkit.Color; @@ -19,6 +20,7 @@ import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomPotion; import me.mrCookieSlime.CSCoreLibPlugin.general.String.Christmas; import me.mrCookieSlime.CSCoreLibPlugin.general.World.CustomSkull; +import me.mrCookieSlime.Slimefun.api.Slimefun; public final class SlimefunItems { @@ -771,7 +773,7 @@ public final class SlimefunItems { return CustomSkull.getItem(texture); } catch(Exception x) { - x.printStackTrace(); + Slimefun.getLogger().log(Level.SEVERE, "An Error occured while initializing the Items for Slimefun " + Slimefun.getVersion(), x); return new ItemStack(Material.PLAYER_HEAD); } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java index 577afc924..fe052ec8f 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java @@ -7,6 +7,7 @@ import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; +import java.util.logging.Level; import org.bukkit.Bukkit; import org.bukkit.ChatColor; @@ -264,8 +265,7 @@ public class SlimefunItem { else this.state = State.DISABLED; } } catch(Exception x) { - System.err.println("[Slimefun] Item Registration failed: " + this.id); - x.printStackTrace(); + Slimefun.getLogger().log(Level.WARNING, "Registering the Item '" + id + "' for Slimefun " + Slimefun.getVersion() + " has failed", x); } } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AdvancedCargoOutputNode.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AdvancedCargoOutputNode.java index 67180e68d..bc997cf02 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AdvancedCargoOutputNode.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AdvancedCargoOutputNode.java @@ -1,5 +1,7 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines; +import java.util.logging.Level; + import org.bukkit.Material; import org.bukkit.block.Block; import org.bukkit.entity.Player; @@ -19,6 +21,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason; import me.mrCookieSlime.Slimefun.Setup.Messages; import me.mrCookieSlime.Slimefun.api.BlockStorage; +import me.mrCookieSlime.Slimefun.api.Slimefun; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset; import me.mrCookieSlime.Slimefun.api.item_transport.CargoNet; @@ -144,8 +147,8 @@ public class AdvancedCargoOutputNode extends SlimefunItem { return false; }); - } catch (Exception e) { - e.printStackTrace(); + } catch (Exception x) { + Slimefun.getLogger().log(Level.SEVERE, "An Error occured while creating the Inventory of an Advanced Cargo Output Node for Slimefun " + Slimefun.getVersion(), x); } } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AnimalGrowthAccelerator.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AnimalGrowthAccelerator.java index b21f0dbe8..872bb7a04 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AnimalGrowthAccelerator.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AnimalGrowthAccelerator.java @@ -1,5 +1,7 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines; +import java.util.logging.Level; + import org.bukkit.Material; import org.bukkit.Particle; import org.bukkit.block.Block; @@ -22,6 +24,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason; import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.api.BlockStorage; +import me.mrCookieSlime.Slimefun.api.Slimefun; import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset; @@ -97,8 +100,8 @@ public class AnimalGrowthAccelerator extends SlimefunItem { public void tick(Block b, SlimefunItem sf, Config data) { try { AnimalGrowthAccelerator.this.tick(b); - } catch (Exception e) { - e.printStackTrace(); + } catch (Exception x) { + Slimefun.getLogger().log(Level.SEVERE, "An Error occured while ticking an Animal Growth Accelerator for Slimefun " + Slimefun.getVersion(), x); } } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoBreeder.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoBreeder.java index 043c6ea5e..073b08b34 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoBreeder.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoBreeder.java @@ -1,5 +1,7 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines; +import java.util.logging.Level; + import org.bukkit.Material; import org.bukkit.Particle; import org.bukkit.block.Block; @@ -22,6 +24,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason; import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.api.BlockStorage; +import me.mrCookieSlime.Slimefun.api.Slimefun; import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset; @@ -95,8 +98,8 @@ public class AutoBreeder extends SlimefunItem { public void tick(Block b, SlimefunItem sf, Config data) { try { AutoBreeder.this.tick(b); - } catch (Exception e) { - e.printStackTrace(); + } catch (Exception x) { + Slimefun.getLogger().log(Level.SEVERE, "An Error occured while ticking an Auto Breeder for Slimefun " + Slimefun.getVersion(), x); } } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/CropGrowthAccelerator.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/CropGrowthAccelerator.java index ffd9d8fe6..f8bbc3b85 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/CropGrowthAccelerator.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/CropGrowthAccelerator.java @@ -2,6 +2,7 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines; import java.util.EnumMap; import java.util.Map; +import java.util.logging.Level; import org.bukkit.Material; import org.bukkit.Particle; @@ -23,6 +24,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason; import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.api.BlockStorage; +import me.mrCookieSlime.Slimefun.api.Slimefun; import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset; @@ -108,8 +110,8 @@ public abstract class CropGrowthAccelerator extends SlimefunItem { public void tick(Block b, SlimefunItem sf, Config data) { try { CropGrowthAccelerator.this.tick(b); - } catch (Exception e) { - e.printStackTrace(); + } catch (Exception x) { + Slimefun.getLogger().log(Level.SEVERE, "An Error occured while ticking a Crop Growth Accelerator for Slimefun " + Slimefun.getVersion(), x); } } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/XPCollector.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/XPCollector.java index 8acec221c..e72737304 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/XPCollector.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/XPCollector.java @@ -1,6 +1,7 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines; import java.util.Iterator; +import java.util.logging.Level; import org.bukkit.Bukkit; import org.bukkit.Material; @@ -21,6 +22,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason; import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker; import me.mrCookieSlime.Slimefun.api.BlockStorage; +import me.mrCookieSlime.Slimefun.api.Slimefun; import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset; @@ -126,8 +128,8 @@ public class XPCollector extends SlimefunItem { public void tick(Block b, SlimefunItem sf, Config data) { try { XPCollector.this.tick(b); - } catch (Exception e) { - e.printStackTrace(); + } catch (Exception x) { + Slimefun.getLogger().log(Level.SEVERE, "An Error occured while ticking an Exp Collector for Slimefun " + Slimefun.getVersion(), x); } } diff --git a/src/me/mrCookieSlime/Slimefun/api/ErrorReport.java b/src/me/mrCookieSlime/Slimefun/api/ErrorReport.java index 35032ff46..cd4e40494 100644 --- a/src/me/mrCookieSlime/Slimefun/api/ErrorReport.java +++ b/src/me/mrCookieSlime/Slimefun/api/ErrorReport.java @@ -7,6 +7,7 @@ import java.util.ArrayList; import java.util.List; import java.util.function.Consumer; import java.util.function.Function; +import java.util.logging.Level; import java.util.stream.IntStream; import org.bukkit.Bukkit; @@ -86,8 +87,8 @@ public class ErrorReport { System.err.println("[Slimefun] Please consider sending this File to the developer(s) of Slimefun, this message does not have to be included."); System.err.println("[Slimefun] You can put the file on Pastebin and then post it here: https://github.com/TheBusyBiscuit/Slimefun4/issues"); System.err.println("[Slimefun] "); - } catch (FileNotFoundException e) { - e.printStackTrace(); + } catch (FileNotFoundException x) { + Slimefun.getLogger().log(Level.SEVERE, "An Error occured while saving an Error-Report for Slimefun " + Slimefun.getVersion(), x); } } diff --git a/src/me/mrCookieSlime/Slimefun/api/Slimefun.java b/src/me/mrCookieSlime/Slimefun/api/Slimefun.java index 42e5e4544..efcd8b78e 100644 --- a/src/me/mrCookieSlime/Slimefun/api/Slimefun.java +++ b/src/me/mrCookieSlime/Slimefun/api/Slimefun.java @@ -350,4 +350,8 @@ public class Slimefun { public static List getGuideHandlers(int tier) { return guideHandlers.containsKey(tier) ? guideHandlers.get(tier): new ArrayList<>(); } + + public static String getVersion() { + return SlimefunPlugin.instance.getDescription().getVersion(); + } } \ No newline at end of file diff --git a/src/me/mrCookieSlime/Slimefun/api/SlimefunBackup.java b/src/me/mrCookieSlime/Slimefun/api/SlimefunBackup.java index c8da97b26..46ec795bf 100644 --- a/src/me/mrCookieSlime/Slimefun/api/SlimefunBackup.java +++ b/src/me/mrCookieSlime/Slimefun/api/SlimefunBackup.java @@ -10,6 +10,7 @@ import java.util.Arrays; import java.util.Collections; import java.util.Date; import java.util.List; +import java.util.logging.Level; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; @@ -108,8 +109,8 @@ public class SlimefunBackup { } System.out.println("[Slimefun] Backed up Blocks to " + file.getName()); - } catch(IOException e) { - e.printStackTrace(); + } catch(IOException x) { + Slimefun.getLogger().log(Level.SEVERE, "An Error occured while creating a World-Backup for Slimefun " + Slimefun.getVersion(), x); } } diff --git a/src/me/mrCookieSlime/Slimefun/hooks/github/IntegerFormat.java b/src/me/mrCookieSlime/Slimefun/hooks/github/IntegerFormat.java index 0579716af..794a5f1bf 100644 --- a/src/me/mrCookieSlime/Slimefun/hooks/github/IntegerFormat.java +++ b/src/me/mrCookieSlime/Slimefun/hooks/github/IntegerFormat.java @@ -5,6 +5,9 @@ import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Locale; +import java.util.logging.Level; + +import me.mrCookieSlime.Slimefun.api.Slimefun; public final class IntegerFormat { @@ -17,8 +20,8 @@ public final class IntegerFormat { public static Date parseGitHubDate(String str) { try { return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(str.replace("T", " ").replace("Z", "")); - } catch (ParseException e) { - e.printStackTrace(); + } catch (ParseException x) { + Slimefun.getLogger().log(Level.SEVERE, "An Error occured while parsing a GitHub-Date for Slimefun " + Slimefun.getVersion(), x); return null; } } diff --git a/src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java b/src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java index 16f28b490..a5671cdde 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java @@ -1,6 +1,7 @@ package me.mrCookieSlime.Slimefun.listeners; import java.util.List; +import java.util.logging.Level; import org.bukkit.Bukkit; import org.bukkit.ChatColor; @@ -137,8 +138,8 @@ public class ItemListener implements Listener { b.setType(Material.PLAYER_HEAD); try { CustomSkull.setSkull(b, "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZTllYjlkYTI2Y2YyZDMzNDEzOTdhN2Y0OTEzYmEzZDM3ZDFhZDEwZWFlMzBhYjI1ZmEzOWNlYjg0YmMifX19"); - } catch (Exception e1) { - e1.printStackTrace(); + } catch (Exception x) { + Slimefun.getLogger().log(Level.SEVERE, "An Error occured while using the Debug-Fish for Slimefun " + Slimefun.getVersion(), x); } } else if (BlockStorage.hasBlockInfo(e.getClickedBlock())) { From 01fd2cd38c0e6b61b1f49ef19e51ccd4d0757407 Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Sat, 31 Aug 2019 12:54:54 +0200 Subject: [PATCH 093/169] Logger Conversion Pt.2 --- .../machines/AutoDisenchanter.java | 4 +- .../SlimefunItem/machines/AutoEnchanter.java | 3 +- .../mrCookieSlime/Slimefun/SlimefunGuide.java | 2 +- .../Slimefun/SlimefunPlugin.java | 16 ++--- .../ancient_altar/RitualAnimation.java | 10 ++-- .../androids/ProgrammableAndroid.java | 58 +++++++------------ .../Slimefun/androids/ScriptPart.java | 5 +- .../Slimefun/api/BlockStorage.java | 4 +- .../mrCookieSlime/Slimefun/api/Slimefun.java | 30 ++-------- .../Slimefun/api/energy/EnergyNet.java | 2 +- .../Slimefun/api/network/Network.java | 6 +- .../Slimefun/commands/SlimefunCommand.java | 2 +- .../Slimefun/hooks/PlaceholderAPIHook.java | 2 +- .../Slimefun/hooks/SlimefunHooks.java | 6 ++ .../hooks/github/GitHubConnector.java | 6 +- .../Slimefun/hooks/github/GitHubSetup.java | 6 +- .../Slimefun/listeners/DamageListener.java | 2 +- .../Slimefun/listeners/ItemListener.java | 10 ++-- .../Slimefun/utils/Utilities.java | 2 + 19 files changed, 79 insertions(+), 97 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoDisenchanter.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoDisenchanter.java index 32e275c96..2b6e8ab3a 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoDisenchanter.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoDisenchanter.java @@ -19,6 +19,7 @@ import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.InvUtils; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; import me.mrCookieSlime.EmeraldEnchants.EmeraldEnchants; import me.mrCookieSlime.EmeraldEnchants.ItemEnchantment; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; @@ -26,7 +27,6 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineHelper; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecipe; import me.mrCookieSlime.Slimefun.api.BlockStorage; -import me.mrCookieSlime.Slimefun.api.Slimefun; import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu; @@ -109,7 +109,7 @@ public class AutoDisenchanter extends AContainer { enchantments.put(e.getKey(), e.getValue()); amount++; } - if (Slimefun.isEmeraldEnchantsInstalled()) { + if (SlimefunPlugin.getHooks().isEmeraldEnchantsInstalled()) { for (ItemEnchantment enchantment: EmeraldEnchants.getInstance().getRegistry().getEnchantments(item)) { amount++; enchantments2.add(enchantment); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoEnchanter.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoEnchanter.java index 1673148dd..e05e7d63f 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoEnchanter.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoEnchanter.java @@ -27,7 +27,6 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineHelper; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecipe; import me.mrCookieSlime.Slimefun.api.BlockStorage; -import me.mrCookieSlime.Slimefun.api.Slimefun; import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu; @@ -112,7 +111,7 @@ public class AutoEnchanter extends AContainer { } } - if (Slimefun.isEmeraldEnchantsInstalled()) { + if (SlimefunPlugin.getHooks().isEmeraldEnchantsInstalled()) { for (ItemEnchantment enchantment: EmeraldEnchants.getInstance().getRegistry().getEnchantments(item)) { if (EmeraldEnchants.getInstance().getRegistry().isApplicable(target, enchantment.getEnchantment()) && EmeraldEnchants.getInstance().getRegistry().getEnchantmentLevel(target, enchantment.getEnchantment().getName()) < enchantment.getLevel()) { amount++; diff --git a/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java b/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java index 23ddb9d54..70452959f 100644 --- a/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java +++ b/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java @@ -417,7 +417,7 @@ public final class SlimefunGuide { ); List categories = Slimefun.currentCategories; - List handlers = Slimefun.guideHandlers.values().stream().flatMap(List::stream).collect(Collectors.toList()); + List handlers = SlimefunPlugin.getUtilities().guideHandlers.values().stream().flatMap(List::stream).collect(Collectors.toList()); int index = 9; int pages = 1; diff --git a/src/me/mrCookieSlime/Slimefun/SlimefunPlugin.java b/src/me/mrCookieSlime/Slimefun/SlimefunPlugin.java index c71d8ac72..a31e6ba4f 100644 --- a/src/me/mrCookieSlime/Slimefun/SlimefunPlugin.java +++ b/src/me/mrCookieSlime/Slimefun/SlimefunPlugin.java @@ -1,6 +1,7 @@ package me.mrCookieSlime.Slimefun; import java.io.File; +import java.util.logging.Level; import org.bstats.bukkit.Metrics; import org.bukkit.Bukkit; @@ -81,12 +82,11 @@ public final class SlimefunPlugin extends JavaPlugin { public static SlimefunPlugin instance; + private TickerTask ticker; private Config researches; private Config items; private Config whitelist; private Config config; - - public static TickerTask ticker; public GPSNetwork gps = new GPSNetwork(); private Utilities utilities = new Utilities(); @@ -188,7 +188,7 @@ public final class SlimefunPlugin extends JavaPlugin { try { SlimefunSetup.setupItems(); } catch (Exception x) { - x.printStackTrace(); + getLogger().log(Level.SEVERE, "An Error occured while initializing SlimefunItems for Slimefun " + Slimefun.getVersion()); } MiscSetup.loadDescriptions(); @@ -242,7 +242,6 @@ public final class SlimefunPlugin extends JavaPlugin { // Initiating various Stuff and all Items with a slightly delay (0ms after the Server finished loading) getServer().getScheduler().scheduleSyncDelayedTask(this, () -> { - Slimefun.emeraldenchants = getServer().getPluginManager().isPluginEnabled("EmeraldEnchants"); MiscSetup.loadItems(settings); for (World world: Bukkit.getWorlds()) { @@ -344,10 +343,10 @@ public final class SlimefunPlugin extends JavaPlugin { storage.save(true); } else { - System.err.println("[Slimefun] Could not save Slimefun Blocks for World \"" + world.getName() + "\""); + getLogger().log(Level.SEVERE, "Could not save Slimefun Blocks for World \"" + world.getName() + "\""); } } catch (Exception x) { - x.printStackTrace(); + getLogger().log(Level.SEVERE, "An Error occured while saving Slimefun-Blocks in World '" + world.getName() + "' for Slimefun " + Slimefun.getVersion()); } } @@ -383,7 +382,6 @@ public final class SlimefunPlugin extends JavaPlugin { ChargableBlock.maxCharges = null; AContainer.processing = null; AContainer.progress = null; - Slimefun.guideHandlers = null; EnergyNet.machinesInput = null; EnergyNet.machinesOutput = null; EnergyNet.machinesStorage = null; @@ -442,5 +440,9 @@ public final class SlimefunPlugin extends JavaPlugin { public static Settings getSettings() { return instance.settings; } + + public static TickerTask getTicker() { + return instance.ticker; + } } diff --git a/src/me/mrCookieSlime/Slimefun/ancient_altar/RitualAnimation.java b/src/me/mrCookieSlime/Slimefun/ancient_altar/RitualAnimation.java index cabc5ff42..d7c9655b1 100644 --- a/src/me/mrCookieSlime/Slimefun/ancient_altar/RitualAnimation.java +++ b/src/me/mrCookieSlime/Slimefun/ancient_altar/RitualAnimation.java @@ -4,8 +4,10 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.logging.Level; import me.mrCookieSlime.Slimefun.SlimefunPlugin; +import me.mrCookieSlime.Slimefun.api.Slimefun; import me.mrCookieSlime.Slimefun.utils.Utilities; import org.bukkit.Effect; @@ -94,8 +96,8 @@ public class RitualAnimation implements Runnable { l.getWorld().spawnParticle(Particle.ENCHANTMENT_TABLE, l2,16, 0.3F, 0.2F, 0.3F); l.getWorld().spawnParticle(Particle.CRIT_MAGIC,l2,8, 0.3F, 0.2F, 0.3F); } - } catch (Exception e) { - e.printStackTrace(); + } catch (Exception x) { + Slimefun.getLogger().log(Level.SEVERE, "An Error occured while playing Ritual Animation for Slimefun " + Slimefun.getVersion(), x); } } @@ -113,8 +115,8 @@ public class RitualAnimation implements Runnable { try { l.getWorld().spawnParticle(Particle.ENCHANTMENT_TABLE,pedestal.getLocation().add(0.5, 1.5, 0.5),16, 0.3F, 0.2F, 0.3F); l.getWorld().spawnParticle(Particle.CRIT_MAGIC,pedestal.getLocation().add(0.5, 1.5, 0.5), 8,0.3F, 0.2F, 0.3F); - } catch (Exception e) { - e.printStackTrace(); + } catch (Exception x) { + Slimefun.getLogger().log(Level.SEVERE, "An Error occured while playing Pedestal Animation for Slimefun " + Slimefun.getVersion(), x); } itemLock.remove(item); diff --git a/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java b/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java index b038558a2..cc186834a 100644 --- a/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java +++ b/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java @@ -11,6 +11,7 @@ import java.util.Optional; import java.util.Set; import java.util.UUID; import java.util.function.Predicate; +import java.util.logging.Level; import org.bukkit.Bukkit; import org.bukkit.ChatColor; @@ -61,6 +62,7 @@ import me.mrCookieSlime.Slimefun.Setup.Messages; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.androids.comparators.ScriptReputationSorter; import me.mrCookieSlime.Slimefun.api.BlockStorage; +import me.mrCookieSlime.Slimefun.api.Slimefun; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset; import me.mrCookieSlime.Slimefun.api.item_transport.ItemTransportFlow; @@ -143,8 +145,8 @@ public abstract class ProgrammableAndroid extends SlimefunItem { public void init() { try { constructMenu(this); - } catch (Exception e) { - e.printStackTrace(); + } catch (Exception x) { + Slimefun.getLogger().log(Level.SEVERE, "An Error occured while constructing an Android Inventory for Slimefun " + Slimefun.getVersion(), x); } } @@ -186,8 +188,8 @@ public abstract class ProgrammableAndroid extends SlimefunItem { } return false; }); - } catch (Exception e) { - e.printStackTrace(); + } catch (Exception x) { + Slimefun.getLogger().log(Level.SEVERE, "An Error occured while creating a new Instance of an Android Inventory for Slimefun " + Slimefun.getVersion(), x); } } @@ -240,11 +242,8 @@ public abstract class ProgrammableAndroid extends SlimefunItem { } protected void tick(Block b) { - try { - if (!(b.getState() instanceof Skull)) { - return; - } - } catch (NullPointerException x) { + if (!(b.getState() instanceof Skull)) { + // The Android was destroyed or moved. return; } @@ -279,28 +278,13 @@ public abstract class ProgrammableAndroid extends SlimefunItem { switch (part) { case GO_DOWN: - try { - Block block = b.getRelative(BlockFace.DOWN); - move(b, face, block); - } catch (Exception e) { - e.printStackTrace(); - } + move(b, face, b.getRelative(BlockFace.DOWN)); break; case GO_FORWARD: - try { - Block block = b.getRelative(face); - move(b, face, block); - } catch (Exception e) { - e.printStackTrace(); - } + move(b, face, b.getRelative(face)); break; case GO_UP: - try { - Block block = b.getRelative(BlockFace.UP); - move(b, face, block); - } catch (Exception e) { - e.printStackTrace(); - } + move(b, face, b.getRelative(BlockFace.UP)); break; case REPEAT: BlockStorage.addBlockInfo(b, "index", String.valueOf(0)); @@ -498,15 +482,19 @@ public abstract class ProgrammableAndroid extends SlimefunItem { } } - private void move(Block b, BlockFace face, Block block) throws Exception { - if (block.getY() < 0 || block.getY() > block.getWorld().getMaxHeight()) - return; - if (block.getType() == Material.AIR || block.getType() == Material.CAVE_AIR) { + private void move(Block b, BlockFace face, Block block) { + if (block.getY() > 0 && block.getY() < block.getWorld().getMaxHeight() && (block.getType() == Material.AIR || block.getType() == Material.CAVE_AIR)) { block.setType(Material.PLAYER_HEAD); Rotatable blockData = (Rotatable) block.getBlockData(); blockData.setRotation(face.getOppositeFace()); block.setBlockData(blockData); - CustomSkull.setSkull(block, CustomSkull.getTexture(getItem())); + + try { + CustomSkull.setSkull(block, CustomSkull.getTexture(getItem())); + } catch (Exception x) { + Slimefun.getLogger().log(Level.SEVERE, "An Error occured while moving an Android for Slimefun " + Slimefun.getVersion(), x); + } + b.setType(Material.AIR); BlockStorage.moveBlockInfo(b.getLocation(), block.getLocation()); } @@ -577,11 +565,7 @@ public abstract class ProgrammableAndroid extends SlimefunItem { } } else { - try { - move(b, face, block); - } catch (Exception e) { - e.printStackTrace(); - } + move(b, face, block); } } diff --git a/src/me/mrCookieSlime/Slimefun/androids/ScriptPart.java b/src/me/mrCookieSlime/Slimefun/androids/ScriptPart.java index eeb93a022..f022af028 100644 --- a/src/me/mrCookieSlime/Slimefun/androids/ScriptPart.java +++ b/src/me/mrCookieSlime/Slimefun/androids/ScriptPart.java @@ -1,9 +1,12 @@ package me.mrCookieSlime.Slimefun.androids; +import java.util.logging.Level; + import org.bukkit.inventory.ItemStack; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; import me.mrCookieSlime.CSCoreLibPlugin.general.World.CustomSkull; +import me.mrCookieSlime.Slimefun.api.Slimefun; public enum ScriptPart { @@ -63,7 +66,7 @@ public enum ScriptPart { this.type = type; this.item = new CustomItem(CustomSkull.getItem(texture), name); } catch(Exception x) { - x.printStackTrace(); + Slimefun.getLogger().log(Level.SEVERE, "An Error occured while initializing Android-Script Texture for Slimefun " + Slimefun.getVersion(), x); } } diff --git a/src/me/mrCookieSlime/Slimefun/api/BlockStorage.java b/src/me/mrCookieSlime/Slimefun/api/BlockStorage.java index 961c11ce1..b6ee593fe 100644 --- a/src/me/mrCookieSlime/Slimefun/api/BlockStorage.java +++ b/src/me/mrCookieSlime/Slimefun/api/BlockStorage.java @@ -446,7 +446,7 @@ public class BlockStorage { } public static void clearBlockInfo(Location l, boolean destroy) { - SlimefunPlugin.ticker.delete.put(l, destroy); + SlimefunPlugin.getTicker().delete.put(l, destroy); } public static void _integrated_removeBlockInfo(Location l, boolean destroy) { @@ -481,7 +481,7 @@ public class BlockStorage { } public static void moveBlockInfo(Location from, Location to) { - SlimefunPlugin.ticker.move.put(from, to); + SlimefunPlugin.getTicker().move.put(from, to); } @Deprecated diff --git a/src/me/mrCookieSlime/Slimefun/api/Slimefun.java b/src/me/mrCookieSlime/Slimefun/api/Slimefun.java index efcd8b78e..bcbe4d52c 100644 --- a/src/me/mrCookieSlime/Slimefun/api/Slimefun.java +++ b/src/me/mrCookieSlime/Slimefun/api/Slimefun.java @@ -2,9 +2,7 @@ package me.mrCookieSlime.Slimefun.api; import java.util.ArrayList; import java.util.Arrays; -import java.util.HashMap; import java.util.List; -import java.util.Map; import java.util.logging.Logger; import org.bukkit.entity.Player; @@ -17,8 +15,8 @@ import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.Research; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem.State; -import me.mrCookieSlime.Slimefun.Setup.Messages; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.VanillaItem; +import me.mrCookieSlime.Slimefun.Setup.Messages; /** * Provides a few convenience methods. @@ -26,13 +24,6 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.VanillaItem; * @since 4.0 */ public class Slimefun { - - public static Map> guideHandlers = new HashMap<>(); - - /** - * Whether EmeraldEnchants is enabled or not. - */ - public static boolean emeraldenchants = false; /** * Lists all the registered categories. @@ -40,10 +31,9 @@ public class Slimefun { public static List currentCategories = new ArrayList<>(); public static void registerGuideHandler(GuideHandler handler) { - List handlers = new ArrayList<>(); - if (guideHandlers.containsKey(handler.getTier())) handlers = guideHandlers.get(handler.getTier()); + List handlers = SlimefunPlugin.getUtilities().guideHandlers.getOrDefault(handler.getTier(), new ArrayList<>()); handlers.add(handler); - guideHandlers.put(handler.getTier(), handlers); + SlimefunPlugin.getUtilities().guideHandlers.put(handler.getTier(), handlers); } /** @@ -335,20 +325,8 @@ public class Slimefun { addWikiPage(id, "https://github.com/TheBusyBiscuit/Slimefun4/wiki/" + page); } - /** - * Returns whether EmeraldEnchants is enabled or not. - *

- * It can be directly accessed by {@link #emeraldenchants}. - * - * @return true if EmeraldEnchants is enabled, - * false otherwise. - */ - public static boolean isEmeraldEnchantsInstalled() { - return emeraldenchants; - } - public static List getGuideHandlers(int tier) { - return guideHandlers.containsKey(tier) ? guideHandlers.get(tier): new ArrayList<>(); + return SlimefunPlugin.getUtilities().guideHandlers.getOrDefault(tier, new ArrayList<>()); } public static String getVersion() { diff --git a/src/me/mrCookieSlime/Slimefun/api/energy/EnergyNet.java b/src/me/mrCookieSlime/Slimefun/api/energy/EnergyNet.java index aca8d89e3..c8e585566 100644 --- a/src/me/mrCookieSlime/Slimefun/api/energy/EnergyNet.java +++ b/src/me/mrCookieSlime/Slimefun/api/energy/EnergyNet.java @@ -149,7 +149,7 @@ public class EnergyNet extends Network { else { supply = supply + energy; } - SlimefunPlugin.ticker.blockTimings.put(source, System.currentTimeMillis() - timestamp); + SlimefunPlugin.getTicker().blockTimings.put(source, System.currentTimeMillis() - timestamp); } input.removeAll(exploded); diff --git a/src/me/mrCookieSlime/Slimefun/api/network/Network.java b/src/me/mrCookieSlime/Slimefun/api/network/Network.java index c39c911d7..c51fdc1ea 100644 --- a/src/me/mrCookieSlime/Slimefun/api/network/Network.java +++ b/src/me/mrCookieSlime/Slimefun/api/network/Network.java @@ -1,6 +1,7 @@ package me.mrCookieSlime.Slimefun.api.network; import java.util.Set; +import java.util.logging.Level; import java.util.List; import java.util.Queue; import java.util.HashSet; @@ -11,6 +12,7 @@ import org.bukkit.Location; import me.mrCookieSlime.CSCoreLibPlugin.general.Particles.MC_1_13.ParticleEffect; import me.mrCookieSlime.Slimefun.SlimefunPlugin; +import me.mrCookieSlime.Slimefun.api.Slimefun; public abstract class Network { @@ -159,8 +161,8 @@ public abstract class Network { for(Location l: connectedLocations) { try { ParticleEffect.REDSTONE.display(l.clone().add(0.5, 0.5, 0.5), 0, 0, 0, 1, 1); - } catch(Exception e) { - e.printStackTrace(); + } catch(Exception x) { + Slimefun.getLogger().log(Level.SEVERE, "An Error occured while playing Network Animation for Slimefun " + Slimefun.getVersion(), x); } } }); diff --git a/src/me/mrCookieSlime/Slimefun/commands/SlimefunCommand.java b/src/me/mrCookieSlime/Slimefun/commands/SlimefunCommand.java index 761b6d72b..b4960d1b7 100644 --- a/src/me/mrCookieSlime/Slimefun/commands/SlimefunCommand.java +++ b/src/me/mrCookieSlime/Slimefun/commands/SlimefunCommand.java @@ -161,7 +161,7 @@ public class SlimefunCommand implements CommandExecutor, Listener { } else if (args[0].equalsIgnoreCase("timings")) { if (sender.hasPermission("slimefun.command.timings")|| sender instanceof ConsoleCommandSender) { - SlimefunPlugin.ticker.info(sender); + SlimefunPlugin.getTicker().info(sender); } else Messages.local.sendTranslation(sender, "messages.no-permission", true); } diff --git a/src/me/mrCookieSlime/Slimefun/hooks/PlaceholderAPIHook.java b/src/me/mrCookieSlime/Slimefun/hooks/PlaceholderAPIHook.java index 11f0b9b6a..f8bf8b952 100644 --- a/src/me/mrCookieSlime/Slimefun/hooks/PlaceholderAPIHook.java +++ b/src/me/mrCookieSlime/Slimefun/hooks/PlaceholderAPIHook.java @@ -68,7 +68,7 @@ public class PlaceholderAPIHook extends PlaceholderExpansion { } if (params.equals("timings_lag")) { - return SlimefunPlugin.ticker.getTime() + "ms"; + return SlimefunPlugin.getTicker().getTime() + "ms"; } return null; diff --git a/src/me/mrCookieSlime/Slimefun/hooks/SlimefunHooks.java b/src/me/mrCookieSlime/Slimefun/hooks/SlimefunHooks.java index 9ca1e5998..a2c3061f1 100644 --- a/src/me/mrCookieSlime/Slimefun/hooks/SlimefunHooks.java +++ b/src/me/mrCookieSlime/Slimefun/hooks/SlimefunHooks.java @@ -7,6 +7,7 @@ import net.coreprotect.CoreProtectAPI; public final class SlimefunHooks { private boolean exoticGarden = false; + private boolean emeraldEnchants = false; private boolean coreProtect = false; private boolean clearLag = false; private boolean worldEdit = false; @@ -27,6 +28,7 @@ public final class SlimefunHooks { } exoticGarden = plugin.getServer().getPluginManager().isPluginEnabled("ExoticGarden"); // Had to do it this way, otherwise it seems disabled. + emeraldEnchants = plugin.getServer().getPluginManager().isPluginEnabled("EmeraldEnchants"); if (plugin.getServer().getPluginManager().isPluginEnabled("CoreProtect")) { coreProtectAPI = ((CoreProtect) plugin.getServer().getPluginManager().getPlugin("CoreProtect")).getAPI(); @@ -50,6 +52,10 @@ public final class SlimefunHooks { public boolean isExoticGardenInstalled() { return exoticGarden; } + + public boolean isEmeraldEnchantsInstalled() { + return emeraldEnchants; + } public boolean isCoreProtectInstalled() { return coreProtect; diff --git a/src/me/mrCookieSlime/Slimefun/hooks/github/GitHubConnector.java b/src/me/mrCookieSlime/Slimefun/hooks/github/GitHubConnector.java index 01da5119f..65644443a 100644 --- a/src/me/mrCookieSlime/Slimefun/hooks/github/GitHubConnector.java +++ b/src/me/mrCookieSlime/Slimefun/hooks/github/GitHubConnector.java @@ -9,11 +9,13 @@ import java.net.URL; import java.net.URLConnection; import java.nio.channels.Channels; import java.nio.channels.ReadableByteChannel; +import java.util.logging.Level; import com.google.gson.JsonElement; import com.google.gson.JsonParser; import me.mrCookieSlime.Slimefun.SlimefunPlugin; +import me.mrCookieSlime.Slimefun.api.Slimefun; public abstract class GitHubConnector { @@ -79,8 +81,8 @@ public abstract class GitHubConnector { JsonElement element = new JsonParser().parse(full); this.onSuccess(element); } - catch (IOException e) { - e.printStackTrace(); + catch (IOException x) { + Slimefun.getLogger().log(Level.SEVERE, "An Error occured while parsing GitHub-Data for Slimefun " + Slimefun.getVersion(), x); this.onFailure(); } } diff --git a/src/me/mrCookieSlime/Slimefun/hooks/github/GitHubSetup.java b/src/me/mrCookieSlime/Slimefun/hooks/github/GitHubSetup.java index fbda31bb9..19047b690 100644 --- a/src/me/mrCookieSlime/Slimefun/hooks/github/GitHubSetup.java +++ b/src/me/mrCookieSlime/Slimefun/hooks/github/GitHubSetup.java @@ -3,6 +3,7 @@ package me.mrCookieSlime.Slimefun.hooks.github; import java.io.IOException; import java.io.InputStreamReader; import java.net.URL; +import java.util.logging.Level; import com.google.gson.JsonArray; import com.google.gson.JsonElement; @@ -11,6 +12,7 @@ import com.google.gson.JsonParser; import me.mrCookieSlime.Slimefun.SlimefunGuide; import me.mrCookieSlime.Slimefun.SlimefunPlugin; +import me.mrCookieSlime.Slimefun.api.Slimefun; public final class GitHubSetup { @@ -73,14 +75,14 @@ public final class GitHubSetup { try { profileReader.close(); } catch (IOException x) { - x.printStackTrace(); + Slimefun.getLogger().log(Level.SEVERE, "An Error occured while closing GitHub-Stream for Slimefun " + Slimefun.getVersion(), x); } } if (sessionReader != null) { try { sessionReader.close(); } catch (IOException x) { - x.printStackTrace(); + Slimefun.getLogger().log(Level.SEVERE, "An Error occured while closing GitHub-Stream for Slimefun " + Slimefun.getVersion(), x); } } } diff --git a/src/me/mrCookieSlime/Slimefun/listeners/DamageListener.java b/src/me/mrCookieSlime/Slimefun/listeners/DamageListener.java index 89d6fadd5..fbc412984 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/DamageListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/DamageListener.java @@ -159,7 +159,7 @@ public class DamageListener implements Listener { strippedItem.removeEnchantment(enchantment); } - if (Slimefun.isEmeraldEnchantsInstalled()) { + if (SlimefunPlugin.getHooks().isEmeraldEnchantsInstalled()) { for(ItemEnchantment enchantment : EmeraldEnchants.getInstance().getRegistry().getEnchantments(itemStack)){ EmeraldEnchants.getInstance().getRegistry().applyEnchantment(strippedItem, enchantment.getEnchantment(), 0); } diff --git a/src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java b/src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java index a5671cdde..002ca8a4c 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java @@ -159,14 +159,14 @@ public class ItemListener implements Listener { if (BlockStorage.check(e.getClickedBlock()).isTicking()) { p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&dTicking: " + "&2\u2714")); p.sendMessage(ChatColor.translateAlternateColorCodes('&', " &dAsync: &e" + (BlockStorage.check(e.getClickedBlock()).getBlockTicker().isSynchronized() ? "&4\u2718": "&2\u2714"))); - p.sendMessage(ChatColor.translateAlternateColorCodes('&', " &dTimings: &e" + SlimefunPlugin.ticker.getTimings(e.getClickedBlock()) + "ms")); - p.sendMessage(ChatColor.translateAlternateColorCodes('&', " &dTotal Timings: &e" + SlimefunPlugin.ticker.getTimings(BlockStorage.checkID(e.getClickedBlock())) + "ms")); - p.sendMessage(ChatColor.translateAlternateColorCodes('&', " &dChunk Timings: &e" + SlimefunPlugin.ticker.getTimings(e.getClickedBlock().getChunk()) + "ms")); + p.sendMessage(ChatColor.translateAlternateColorCodes('&', " &dTimings: &e" + SlimefunPlugin.getTicker().getTimings(e.getClickedBlock()) + "ms")); + p.sendMessage(ChatColor.translateAlternateColorCodes('&', " &dTotal Timings: &e" + SlimefunPlugin.getTicker().getTimings(BlockStorage.checkID(e.getClickedBlock())) + "ms")); + p.sendMessage(ChatColor.translateAlternateColorCodes('&', " &dChunk Timings: &e" + SlimefunPlugin.getTicker().getTimings(e.getClickedBlock().getChunk()) + "ms")); } else if (BlockStorage.check(e.getClickedBlock()).getEnergyTicker() != null) { p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&dTicking: " + "&b~ &3(Indirect)")); - p.sendMessage(ChatColor.translateAlternateColorCodes('&', " &dTimings: &e" + SlimefunPlugin.ticker.getTimings(e.getClickedBlock()) + "ms")); - p.sendMessage(ChatColor.translateAlternateColorCodes('&', " &dChunk Timings: &e" + SlimefunPlugin.ticker.getTimings(e.getClickedBlock().getChunk()) + "ms")); + p.sendMessage(ChatColor.translateAlternateColorCodes('&', " &dTimings: &e" + SlimefunPlugin.getTicker().getTimings(e.getClickedBlock()) + "ms")); + p.sendMessage(ChatColor.translateAlternateColorCodes('&', " &dChunk Timings: &e" + SlimefunPlugin.getTicker().getTimings(e.getClickedBlock().getChunk()) + "ms")); } else { p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&dTicking: " + "&4\u2718")); diff --git a/src/me/mrCookieSlime/Slimefun/utils/Utilities.java b/src/me/mrCookieSlime/Slimefun/utils/Utilities.java index ae30e0723..bd8a1133c 100644 --- a/src/me/mrCookieSlime/Slimefun/utils/Utilities.java +++ b/src/me/mrCookieSlime/Slimefun/utils/Utilities.java @@ -15,6 +15,7 @@ import org.bukkit.inventory.ItemStack; import me.mrCookieSlime.Slimefun.GEO.OreGenResource; import me.mrCookieSlime.Slimefun.Setup.PostSlimefunLoadingHandler; import me.mrCookieSlime.Slimefun.ancient_altar.AltarRecipe; +import me.mrCookieSlime.Slimefun.api.GuideHandler; import me.mrCookieSlime.Slimefun.api.PlayerProfile; import me.mrCookieSlime.Slimefun.api.item_transport.CargoTransportEvent; import me.mrCookieSlime.Slimefun.hooks.github.Contributor; @@ -34,6 +35,7 @@ public final class Utilities { public Map profiles = new HashMap<>(); + public Map> guideHandlers = new HashMap<>(); public List postHandlers = new ArrayList<>(); public Map jumpState = new HashMap<>(); From 89240ccb95414c438733a13731020b477383f5a6 Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Sat, 31 Aug 2019 13:40:20 +0200 Subject: [PATCH 094/169] Large Refactoring --- .../AdvancedCargoOutputNode.java | 2 +- .../{machines => cargo}/CargoInputNode.java | 2 +- .../{machines => cargo}/CargoOutputNode.java | 2 +- .../machines/CargoCraftingNode.java | 123 ------------------ .../AnimalGrowthAccelerator.java | 2 +- .../machines/{ => electric}/AutoAnvil.java | 2 +- .../machines/{ => electric}/AutoBreeder.java | 2 +- .../{ => electric}/AutoDisenchanter.java | 2 +- .../machines/{ => electric}/AutoDrier.java | 2 +- .../{ => electric}/AutoEnchanter.java | 2 +- .../AutomatedCraftingChamber.java | 2 +- .../machines/{ => electric}/CarbonPress.java | 2 +- .../{ => electric}/ChargingBench.java | 2 +- .../{ => electric}/CropGrowthAccelerator.java | 2 +- .../{ => electric}/ElectricDustWasher.java | 2 +- .../{ => electric}/ElectricFurnace.java | 2 +- .../{ => electric}/ElectricGoldPan.java | 2 +- .../{ => electric}/ElectricIngotFactory.java | 2 +- .../{ => electric}/ElectricSmeltery.java | 2 +- .../{ => electric}/ElectrifiedCrucible.java | 2 +- .../{ => electric}/EnergyRegulator.java | 2 +- .../machines/{ => electric}/FluidPump.java | 2 +- .../{ => electric}/FoodComposter.java | 2 +- .../{ => electric}/FoodFabricator.java | 2 +- .../machines/{ => electric}/Freezer.java | 2 +- .../{ => electric}/HeatedPressureChamber.java | 2 +- .../machines/{ => electric}/NetherDrill.java | 2 +- .../machines/{ => electric}/OilPump.java | 2 +- .../machines/{ => electric}/Refinery.java | 2 +- .../{ => electric}/WitherAssembler.java | 2 +- .../Slimefun/Setup/MiscSetup.java | 2 +- .../Slimefun/Setup/SlimefunSetup.java | 58 ++++----- .../Slimefun/api/ErrorReport.java | 10 +- 33 files changed, 64 insertions(+), 187 deletions(-) rename src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/{machines => cargo}/AdvancedCargoOutputNode.java (97%) rename src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/{machines => cargo}/CargoInputNode.java (97%) rename src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/{machines => cargo}/CargoOutputNode.java (98%) delete mode 100644 src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/CargoCraftingNode.java rename src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/{ => electric}/AnimalGrowthAccelerator.java (98%) rename src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/{ => electric}/AutoAnvil.java (98%) rename src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/{ => electric}/AutoBreeder.java (98%) rename src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/{ => electric}/AutoDisenchanter.java (98%) rename src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/{ => electric}/AutoDrier.java (95%) rename src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/{ => electric}/AutoEnchanter.java (98%) rename src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/{ => electric}/AutomatedCraftingChamber.java (99%) rename src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/{ => electric}/CarbonPress.java (95%) rename src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/{ => electric}/ChargingBench.java (97%) rename src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/{ => electric}/CropGrowthAccelerator.java (98%) rename src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/{ => electric}/ElectricDustWasher.java (98%) rename src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/{ => electric}/ElectricFurnace.java (91%) rename src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/{ => electric}/ElectricGoldPan.java (98%) rename src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/{ => electric}/ElectricIngotFactory.java (96%) rename src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/{ => electric}/ElectricSmeltery.java (98%) rename src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/{ => electric}/ElectrifiedCrucible.java (97%) rename src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/{ => electric}/EnergyRegulator.java (95%) rename src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/{ => electric}/FluidPump.java (98%) rename src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/{ => electric}/FoodComposter.java (95%) rename src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/{ => electric}/FoodFabricator.java (95%) rename src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/{ => electric}/Freezer.java (94%) rename src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/{ => electric}/HeatedPressureChamber.java (98%) rename src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/{ => electric}/NetherDrill.java (94%) rename src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/{ => electric}/OilPump.java (98%) rename src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/{ => electric}/Refinery.java (97%) rename src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/{ => electric}/WitherAssembler.java (99%) diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AdvancedCargoOutputNode.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/cargo/AdvancedCargoOutputNode.java similarity index 97% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AdvancedCargoOutputNode.java rename to src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/cargo/AdvancedCargoOutputNode.java index bc997cf02..6bef490d0 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AdvancedCargoOutputNode.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/cargo/AdvancedCargoOutputNode.java @@ -1,4 +1,4 @@ -package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines; +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.cargo; import java.util.logging.Level; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/CargoInputNode.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/cargo/CargoInputNode.java similarity index 97% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/CargoInputNode.java rename to src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/cargo/CargoInputNode.java index b61541c45..1e603d277 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/CargoInputNode.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/cargo/CargoInputNode.java @@ -1,4 +1,4 @@ -package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines; +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.cargo; import me.mrCookieSlime.CSCoreLibPlugin.compatibility.MaterialHelper; import org.bukkit.Material; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/CargoOutputNode.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/cargo/CargoOutputNode.java similarity index 98% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/CargoOutputNode.java rename to src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/cargo/CargoOutputNode.java index 7d7de87ab..076229dd3 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/CargoOutputNode.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/cargo/CargoOutputNode.java @@ -1,4 +1,4 @@ -package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines; +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.cargo; import org.bukkit.Material; import org.bukkit.block.Block; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/CargoCraftingNode.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/CargoCraftingNode.java deleted file mode 100644 index 596bf928a..000000000 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/CargoCraftingNode.java +++ /dev/null @@ -1,123 +0,0 @@ -package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines; - -import org.bukkit.Material; -import org.bukkit.block.Block; -import org.bukkit.entity.Player; -import org.bukkit.inventory.ItemStack; - -import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib; -import me.mrCookieSlime.CSCoreLibPlugin.compatibility.MaterialHelper; -import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; -import me.mrCookieSlime.CSCoreLibPlugin.general.World.CustomSkull; -import me.mrCookieSlime.Slimefun.Lists.RecipeType; -import me.mrCookieSlime.Slimefun.Objects.Category; -import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason; -import me.mrCookieSlime.Slimefun.Setup.Messages; -import me.mrCookieSlime.Slimefun.api.BlockStorage; -import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu; -import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset; -import me.mrCookieSlime.Slimefun.api.item_transport.ItemTransportFlow; - -public class CargoCraftingNode extends SlimefunItem { - - private static final int[] border = {0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 22, 23, 24, 25, 26, 27, 31, 32, 33, 34, 35, 36, 40, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53}; - - public CargoCraftingNode(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) { - super(category, item, name, recipeType, recipe); - - new BlockMenuPreset(name, "&3Input Node") { - - @Override - public void init() { - constructMenu(this); - } - - @Override - public void newInstance(final BlockMenu menu, final Block b) { - try { - menu.replaceExistingItem(41, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZjI1OTliZDk4NjY1OWI4Y2UyYzQ5ODg1MjVjOTRlMTlkZGQzOWZhZDA4YTM4Mjg0YTE5N2YxYjcwNjc1YWNjIn19fQ=="), "&bChannel", "", "&e> Click to decrease the Channel ID by 1")); - menu.addMenuClickHandler(41, (p, slot, item, action) -> { - int channel = Integer.parseInt(BlockStorage.getLocationInfo(b.getLocation(), "frequency")) - 1; - if (channel < 0) channel = 15; - BlockStorage.addBlockInfo(b, "frequency", String.valueOf(channel)); - newInstance(menu, b); - return false; - }); - - menu.replaceExistingItem(42, new CustomItem(new ItemStack(((!BlockStorage.hasBlockInfo(b) || BlockStorage.getLocationInfo(b.getLocation(), "frequency") == null) ? Material.WHITE_WOOL : MaterialHelper.WoolColours[(Integer.parseInt(BlockStorage.getLocationInfo(b.getLocation(), "frequency")))])), "&bChannel ID: &3" + (((!BlockStorage.hasBlockInfo(b) || BlockStorage.getLocationInfo(b.getLocation(), "frequency") == null) ? 0: (Integer.parseInt(BlockStorage.getLocationInfo(b.getLocation(), "frequency")))) + 1))); - menu.addMenuClickHandler(42, - (p, slot, item, action) -> false - ); - - menu.replaceExistingItem(43, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYzJmOTEwYzQ3ZGEwNDJlNGFhMjhhZjZjYzgxY2Y0OGFjNmNhZjM3ZGFiMzVmODhkYjk5M2FjY2I5ZGZlNTE2In19fQ=="), "&bChannel", "", "&e> Click to increase the Channel ID by 1")); - menu.addMenuClickHandler(43, (p, slot, item, action) -> { - int channel = Integer.parseInt(BlockStorage.getLocationInfo(b.getLocation(), "frequency")) + 1; - if (channel > 15) channel = 0; - BlockStorage.addBlockInfo(b, "frequency", String.valueOf(channel)); - newInstance(menu, b); - return false; - }); - - } catch (Exception e) { - e.printStackTrace(); - } - } - - @Override - public boolean canOpen(Block b, Player p) { - boolean open = CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b) || p.hasPermission("slimefun.cargo.bypass"); - if (!open) { - Messages.local.sendTranslation(p, "inventory.no-access", true); - } - return open; - } - - @Override - public int[] getSlotsAccessedByItemTransport(ItemTransportFlow flow) { - return new int[0]; - } - }; - - registerBlockHandler(name, new SlimefunBlockHandler() { - - @Override - public void onPlace(Player p, Block b, SlimefunItem item) { - BlockStorage.addBlockInfo(b, "owner", p.getUniqueId().toString()); - BlockStorage.addBlockInfo(b, "frequency", "0"); - } - - @Override - public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) { - BlockMenu inv = BlockStorage.getInventory(b); - if (inv != null) { - for (int slot : getInputSlots()) { - if (inv.getItemInSlot(slot) != null) { - b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot)); - inv.replaceExistingItem(slot, null); - } - } - } - return true; - } - }); - } - - protected void constructMenu(BlockMenuPreset preset) { - for (int i : border) { - preset.addItem(i, new CustomItem(new ItemStack(Material.CYAN_STAINED_GLASS_PANE), " "), - (p, slot, item, action) -> false - ); - } - - preset.addItem(2, new CustomItem(new ItemStack(Material.CRAFTING_TABLE), "&eRecipe", "", "&bPut in the Recipe you want to craft"), - (p, slot, item, action) -> false - ); - } - - public int[] getInputSlots() { - return new int[] {19, 20, 21, 28, 29, 30, 37, 38, 39}; - } - -} diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AnimalGrowthAccelerator.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AnimalGrowthAccelerator.java similarity index 98% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AnimalGrowthAccelerator.java rename to src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AnimalGrowthAccelerator.java index 872bb7a04..bab3be8a4 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AnimalGrowthAccelerator.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AnimalGrowthAccelerator.java @@ -1,4 +1,4 @@ -package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines; +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric; import java.util.logging.Level; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoAnvil.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoAnvil.java similarity index 98% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoAnvil.java rename to src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoAnvil.java index 0a682ba43..ab48a45ed 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoAnvil.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoAnvil.java @@ -1,4 +1,4 @@ -package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines; +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric; import java.util.ArrayList; import java.util.List; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoBreeder.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoBreeder.java similarity index 98% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoBreeder.java rename to src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoBreeder.java index 073b08b34..8c773a8d5 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoBreeder.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoBreeder.java @@ -1,4 +1,4 @@ -package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines; +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric; import java.util.logging.Level; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoDisenchanter.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoDisenchanter.java similarity index 98% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoDisenchanter.java rename to src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoDisenchanter.java index 2b6e8ab3a..c649bdb43 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoDisenchanter.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoDisenchanter.java @@ -1,4 +1,4 @@ -package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines; +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric; import java.util.ArrayList; import java.util.HashMap; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoDrier.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoDrier.java similarity index 95% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoDrier.java rename to src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoDrier.java index abb1ed2d5..2b54fabee 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoDrier.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoDrier.java @@ -1,4 +1,4 @@ -package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines; +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.InvUtils; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoEnchanter.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoEnchanter.java similarity index 98% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoEnchanter.java rename to src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoEnchanter.java index e05e7d63f..7a431891e 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoEnchanter.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoEnchanter.java @@ -1,4 +1,4 @@ -package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines; +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric; import java.util.ArrayList; import java.util.HashMap; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutomatedCraftingChamber.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutomatedCraftingChamber.java similarity index 99% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutomatedCraftingChamber.java rename to src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutomatedCraftingChamber.java index a8d11b35d..c7e160477 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutomatedCraftingChamber.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutomatedCraftingChamber.java @@ -1,4 +1,4 @@ -package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines; +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric; import java.util.ArrayList; import java.util.Collections; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/CarbonPress.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/CarbonPress.java similarity index 95% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/CarbonPress.java rename to src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/CarbonPress.java index b49e7cdd8..35fce73d4 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/CarbonPress.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/CarbonPress.java @@ -1,4 +1,4 @@ -package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines; +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric; import org.bukkit.Material; import org.bukkit.inventory.ItemStack; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ChargingBench.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ChargingBench.java similarity index 97% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ChargingBench.java rename to src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ChargingBench.java index 16c3c80ee..ffcf33723 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ChargingBench.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ChargingBench.java @@ -1,4 +1,4 @@ -package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines; +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric; import org.bukkit.Material; import org.bukkit.block.Block; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/CropGrowthAccelerator.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/CropGrowthAccelerator.java similarity index 98% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/CropGrowthAccelerator.java rename to src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/CropGrowthAccelerator.java index f8bbc3b85..a96ac311b 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/CropGrowthAccelerator.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/CropGrowthAccelerator.java @@ -1,4 +1,4 @@ -package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines; +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric; import java.util.EnumMap; import java.util.Map; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricDustWasher.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricDustWasher.java similarity index 98% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricDustWasher.java rename to src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricDustWasher.java index fe7a8a408..7d6a30f6c 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricDustWasher.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricDustWasher.java @@ -1,4 +1,4 @@ -package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines; +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric; import java.util.ArrayList; import java.util.List; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricFurnace.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricFurnace.java similarity index 91% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricFurnace.java rename to src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricFurnace.java index b5ddbc259..906d9578c 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricFurnace.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricFurnace.java @@ -1,4 +1,4 @@ -package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines; +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric; import java.util.Iterator; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricGoldPan.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricGoldPan.java similarity index 98% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricGoldPan.java rename to src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricGoldPan.java index a0eec35ff..94dc3efb0 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricGoldPan.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricGoldPan.java @@ -1,4 +1,4 @@ -package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines; +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric; import java.util.ArrayList; import java.util.List; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricIngotFactory.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricIngotFactory.java similarity index 96% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricIngotFactory.java rename to src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricIngotFactory.java index e5cf51356..7dff63c22 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricIngotFactory.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricIngotFactory.java @@ -1,4 +1,4 @@ -package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines; +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric; import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricSmeltery.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricSmeltery.java similarity index 98% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricSmeltery.java rename to src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricSmeltery.java index 8a3ede903..4cd7d97c8 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricSmeltery.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricSmeltery.java @@ -1,4 +1,4 @@ -package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines; +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric; import java.util.ArrayList; import java.util.Collections; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectrifiedCrucible.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectrifiedCrucible.java similarity index 97% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectrifiedCrucible.java rename to src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectrifiedCrucible.java index 9eaa49ab3..39060579f 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectrifiedCrucible.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectrifiedCrucible.java @@ -1,4 +1,4 @@ -package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines; +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric; import me.mrCookieSlime.CSCoreLibPlugin.compatibility.MaterialHelper; import org.bukkit.Material; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/EnergyRegulator.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/EnergyRegulator.java similarity index 95% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/EnergyRegulator.java rename to src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/EnergyRegulator.java index 396b1eac0..11ca83572 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/EnergyRegulator.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/EnergyRegulator.java @@ -1,4 +1,4 @@ -package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines; +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric; import org.bukkit.block.Block; import org.bukkit.entity.Player; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/FluidPump.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/FluidPump.java similarity index 98% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/FluidPump.java rename to src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/FluidPump.java index 75a7648ac..07d736937 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/FluidPump.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/FluidPump.java @@ -1,4 +1,4 @@ -package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines; +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric; import java.util.ArrayList; import java.util.HashMap; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/FoodComposter.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/FoodComposter.java similarity index 95% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/FoodComposter.java rename to src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/FoodComposter.java index 0a1a2bb85..daa8e4f83 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/FoodComposter.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/FoodComposter.java @@ -1,4 +1,4 @@ -package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines; +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric; import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/FoodFabricator.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/FoodFabricator.java similarity index 95% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/FoodFabricator.java rename to src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/FoodFabricator.java index 0ecf92585..eea001c0b 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/FoodFabricator.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/FoodFabricator.java @@ -1,4 +1,4 @@ -package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines; +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric; import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/Freezer.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/Freezer.java similarity index 94% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/Freezer.java rename to src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/Freezer.java index 5d4d01e77..ac74d60ce 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/Freezer.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/Freezer.java @@ -1,4 +1,4 @@ -package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines; +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric; import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/HeatedPressureChamber.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/HeatedPressureChamber.java similarity index 98% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/HeatedPressureChamber.java rename to src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/HeatedPressureChamber.java index 03855b2fd..b6d65363a 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/HeatedPressureChamber.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/HeatedPressureChamber.java @@ -1,4 +1,4 @@ -package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines; +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric; import java.util.ArrayList; import java.util.Collections; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/NetherDrill.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/NetherDrill.java similarity index 94% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/NetherDrill.java rename to src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/NetherDrill.java index ee8fc58c4..534f690cd 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/NetherDrill.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/NetherDrill.java @@ -1,4 +1,4 @@ -package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines; +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric; import org.bukkit.Material; import org.bukkit.inventory.ItemStack; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/OilPump.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/OilPump.java similarity index 98% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/OilPump.java rename to src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/OilPump.java index e90fa33ba..a5cb3ee73 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/OilPump.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/OilPump.java @@ -1,4 +1,4 @@ -package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines; +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric; import java.util.ArrayList; import java.util.List; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/Refinery.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/Refinery.java similarity index 97% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/Refinery.java rename to src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/Refinery.java index 4fe3a1eeb..534f547e0 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/Refinery.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/Refinery.java @@ -1,4 +1,4 @@ -package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines; +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric; import java.util.ArrayList; import java.util.List; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/WitherAssembler.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/WitherAssembler.java similarity index 99% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/WitherAssembler.java rename to src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/WitherAssembler.java index 67e3b1a4b..2fdc0d98d 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/WitherAssembler.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/WitherAssembler.java @@ -1,4 +1,4 @@ -package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines; +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric; import org.bukkit.Bukkit; import org.bukkit.Location; diff --git a/src/me/mrCookieSlime/Slimefun/Setup/MiscSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/MiscSetup.java index ac39fd937..526e19e33 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/MiscSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/MiscSetup.java @@ -24,7 +24,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.Alloy; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.ReplacingAlloy; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunMachine; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.AutomatedCraftingChamber; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.AutomatedCraftingChamber; import me.mrCookieSlime.Slimefun.Setup.PostSlimefunLoadingHandler; import me.mrCookieSlime.Slimefun.api.Slimefun; import me.mrCookieSlime.Slimefun.api.SlimefunRecipes; diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java index ba0e81de1..698b15bf7 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java @@ -101,43 +101,43 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AGenerator; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AReactor; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineFuel; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.Teleporter; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.AdvancedCargoOutputNode; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.AnimalGrowthAccelerator; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.AutoAnvil; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.AutoBreeder; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.AutoDisenchanter; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.AutoDrier; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.AutoEnchanter; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.AutomatedCraftingChamber; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.cargo.AdvancedCargoOutputNode; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.cargo.CargoInputNode; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.cargo.CargoOutputNode; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.BlockPlacer; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.CarbonPress; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.CargoInputNode; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.CargoOutputNode; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.ChargingBench; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.Composter; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.CropGrowthAccelerator; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.Crucible; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.ElectricDustWasher; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.ElectricFurnace; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.ElectricGoldPan; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.ElectricIngotFactory; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.ElectricSmeltery; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.ElectrifiedCrucible; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.EnergyRegulator; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.FluidPump; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.FoodComposter; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.FoodFabricator; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.Freezer; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.HeatedPressureChamber; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.HologramProjector; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.InfusedHopper; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.NetherDrill; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.OilPump; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.ReactorAccessPort; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.Refinery; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.TrashCan; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.WitherAssembler; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.XPCollector; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.AnimalGrowthAccelerator; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.AutoAnvil; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.AutoBreeder; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.AutoDisenchanter; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.AutoDrier; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.AutoEnchanter; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.AutomatedCraftingChamber; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.CarbonPress; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.ChargingBench; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.CropGrowthAccelerator; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.ElectricDustWasher; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.ElectricFurnace; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.ElectricGoldPan; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.ElectricIngotFactory; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.ElectricSmeltery; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.ElectrifiedCrucible; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.EnergyRegulator; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.FluidPump; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.FoodComposter; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.FoodFabricator; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.Freezer; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.HeatedPressureChamber; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.NetherDrill; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.OilPump; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.Refinery; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.WitherAssembler; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.ArmorForge; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.AutomatedPanningMachine; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.Compressor; diff --git a/src/me/mrCookieSlime/Slimefun/api/ErrorReport.java b/src/me/mrCookieSlime/Slimefun/api/ErrorReport.java index cd4e40494..6ae1168c8 100644 --- a/src/me/mrCookieSlime/Slimefun/api/ErrorReport.java +++ b/src/me/mrCookieSlime/Slimefun/api/ErrorReport.java @@ -82,11 +82,11 @@ public class ErrorReport { stream.println(); throwable.printStackTrace(stream); - System.err.println("[Slimefun] Saved as: "); - System.err.println("[Slimefun] /plugins/Slimefun/error-reports/" + file.getName()); - System.err.println("[Slimefun] Please consider sending this File to the developer(s) of Slimefun, this message does not have to be included."); - System.err.println("[Slimefun] You can put the file on Pastebin and then post it here: https://github.com/TheBusyBiscuit/Slimefun4/issues"); - System.err.println("[Slimefun] "); + Slimefun.getLogger().log(Level.WARNING, "An Error occured! It has been saved as: "); + Slimefun.getLogger().log(Level.WARNING, "/plugins/Slimefun/error-reports/" + file.getName()); + Slimefun.getLogger().log(Level.WARNING, "Please consider sending this File to the developer(s) of Slimefun, this message does not have to be included."); + Slimefun.getLogger().log(Level.WARNING, "You can put the file on Pastebin and then post it here: https://github.com/TheBusyBiscuit/Slimefun4/issues"); + Slimefun.getLogger().log(Level.WARNING, ""); } catch (FileNotFoundException x) { Slimefun.getLogger().log(Level.SEVERE, "An Error occured while saving an Error-Report for Slimefun " + Slimefun.getVersion(), x); } From 8d8c2290813c8c936a5acbc78bc72d34f6ab9169 Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Sat, 31 Aug 2019 14:17:25 +0200 Subject: [PATCH 095/169] Logger Conversion Pt.3 --- .../Slimefun/GPS/GPSNetwork.java | 130 ++++--- .../Objects/SlimefunItem/SlimefunItem.java | 11 +- .../SlimefunItem/cargo/CargoInputNode.java | 19 +- .../SlimefunItem/cargo/CargoOutputNode.java | 12 +- .../machines/electric/WitherAssembler.java | 5 +- .../Slimefun/Setup/SlimefunSetup.java | 14 +- .../mrCookieSlime/Slimefun/SlimefunGuide.java | 21 +- .../Slimefun/SlimefunPlugin.java | 4 + .../androids/ProgrammableAndroid.java | 339 ++++++++---------- .../Slimefun/api/BlockStorage.java | 47 +-- .../api/inventory/BlockMenuPreset.java | 2 +- .../Slimefun/hooks/github/GitHubSetup.java | 2 +- 12 files changed, 287 insertions(+), 319 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/GPS/GPSNetwork.java b/src/me/mrCookieSlime/Slimefun/GPS/GPSNetwork.java index 7fed81e4d..eb14c732b 100644 --- a/src/me/mrCookieSlime/Slimefun/GPS/GPSNetwork.java +++ b/src/me/mrCookieSlime/Slimefun/GPS/GPSNetwork.java @@ -70,7 +70,7 @@ public class GPSNetwork { else return transmitters.get(uuid).size(); } - public void openTransmitterControlPanel(Player p) throws Exception { + public void openTransmitterControlPanel(Player p) { ChestMenu menu = new ChestMenu("&9Control Panel"); for (int slot : border) { @@ -79,35 +79,35 @@ public class GPSNetwork { ); } - menu.addItem(2, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjBjOWMxYTAyMmY0MGI3M2YxNGI0Y2JhMzdjNzE4YzZhNTMzZjNhMjg2NGI2NTM2ZDVmNDU2OTM0Y2MxZiJ9fX0="), "&7Transmitter Overview &e(Selected)")); - menu.addMenuClickHandler(2, - (pl, slot, item, action) -> false - ); - - menu.addItem(4, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZGRjZmJhNThmYWYxZjY0ODQ3ODg0MTExODIyYjY0YWZhMjFkN2ZjNjJkNDQ4MWYxNGYzZjNiY2I2MzMwIn19fQ=="), "&7Network Info", "", "&8\u21E8 &7Status: " + (getNetworkComplexity(p.getUniqueId()) > 0 ? "&2&lONLINE": "&4&lOFFLINE"), "&8\u21E8 &7Complexity: &r" + getNetworkComplexity(p.getUniqueId()))); - menu.addMenuClickHandler(4, - (pl, slot, item, action) -> false - ); - - menu.addItem(6, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYzljODg4MWU0MjkxNWE5ZDI5YmI2MWExNmZiMjZkMDU5OTEzMjA0ZDI2NWRmNWI0MzliM2Q3OTJhY2Q1NiJ9fX0="), "&7Waypoint Overview &r(Select)")); - menu.addMenuClickHandler(6, (pl, slot, item, action) -> { - try { + try { + menu.addItem(2, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjBjOWMxYTAyMmY0MGI3M2YxNGI0Y2JhMzdjNzE4YzZhNTMzZjNhMjg2NGI2NTM2ZDVmNDU2OTM0Y2MxZiJ9fX0="), "&7Transmitter Overview &e(Selected)")); + menu.addMenuClickHandler(2, + (pl, slot, item, action) -> false + ); + + menu.addItem(4, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZGRjZmJhNThmYWYxZjY0ODQ3ODg0MTExODIyYjY0YWZhMjFkN2ZjNjJkNDQ4MWYxNGYzZjNiY2I2MzMwIn19fQ=="), "&7Network Info", "", "&8\u21E8 &7Status: " + (getNetworkComplexity(p.getUniqueId()) > 0 ? "&2&lONLINE": "&4&lOFFLINE"), "&8\u21E8 &7Complexity: &r" + getNetworkComplexity(p.getUniqueId()))); + menu.addMenuClickHandler(4, + (pl, slot, item, action) -> false + ); + + menu.addItem(6, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYzljODg4MWU0MjkxNWE5ZDI5YmI2MWExNmZiMjZkMDU5OTEzMjA0ZDI2NWRmNWI0MzliM2Q3OTJhY2Q1NiJ9fX0="), "&7Waypoint Overview &r(Select)")); + menu.addMenuClickHandler(6, (pl, slot, item, action) -> { openWaypointControlPanel(pl); - } catch (Exception x) { - Slimefun.getLogger().log(Level.SEVERE, "An Error occured while opening the 'Waypoint' Panel for Slimefun " + Slimefun.getVersion(), x); + return false; + }); + + int index = 0; + for (Location l : getTransmitters(p.getUniqueId())) { + if (index >= inventory.length) break; + int slot = inventory[index]; + + menu.addItem(slot, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjBjOWMxYTAyMmY0MGI3M2YxNGI0Y2JhMzdjNzE4YzZhNTMzZjNhMjg2NGI2NTM2ZDVmNDU2OTM0Y2MxZiJ9fX0="), "&bGPS Transmitter", "&8\u21E8 &7World: &r" + l.getWorld().getName(), "&8\u21E8 &7X: &r" + l.getX(), "&8\u21E8 &7Y: &r" + l.getY(), "&8\u21E8 &7Z: &r" + l.getZ(), "", "&8\u21E8 &7Signal Strength: &r" + l.getBlockY(), "&8\u21E8 &7Ping: &r" + DoubleHandler.fixDouble(1000D / l.getY()) + "ms")); + menu.addMenuClickHandler(slot, (pl, slotn, item, action) -> false); + + index++; } - return false; - }); - - int index = 0; - for (Location l : getTransmitters(p.getUniqueId())) { - if (index >= inventory.length) break; - int slot = inventory[index]; - - menu.addItem(slot, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjBjOWMxYTAyMmY0MGI3M2YxNGI0Y2JhMzdjNzE4YzZhNTMzZjNhMjg2NGI2NTM2ZDVmNDU2OTM0Y2MxZiJ9fX0="), "&bGPS Transmitter", "&8\u21E8 &7World: &r" + l.getWorld().getName(), "&8\u21E8 &7X: &r" + l.getX(), "&8\u21E8 &7Y: &r" + l.getY(), "&8\u21E8 &7Z: &r" + l.getZ(), "", "&8\u21E8 &7Signal Strength: &r" + l.getBlockY(), "&8\u21E8 &7Ping: &r" + DoubleHandler.fixDouble(1000D / l.getY()) + "ms")); - menu.addMenuClickHandler(slot, (pl, slotn, item, action) -> false); - - index++; + } catch(Exception x) { + Slimefun.getLogger().log(Level.SEVERE, "An Error occured while creating the GPS Transmitter Panel for Slimefun " + Slimefun.getVersion(), x); } menu.open(p); @@ -130,55 +130,53 @@ public class GPSNetwork { } } - public void openWaypointControlPanel(Player p) throws Exception { + public void openWaypointControlPanel(Player p) { ChestMenu menu = new ChestMenu("&9Control Panel"); for (int slot: border) { menu.addItem(slot, new CustomItem(new ItemStack(Material.GRAY_STAINED_GLASS_PANE), " "), (pl, slotn, item, action) -> false); } - menu.addItem(2, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjBjOWMxYTAyMmY0MGI3M2YxNGI0Y2JhMzdjNzE4YzZhNTMzZjNhMjg2NGI2NTM2ZDVmNDU2OTM0Y2MxZiJ9fX0="), "&7Transmitter Overview &r(Select)")); - menu.addMenuClickHandler(2, (pl, slot, item, action) -> { - try { + try { + menu.addItem(2, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjBjOWMxYTAyMmY0MGI3M2YxNGI0Y2JhMzdjNzE4YzZhNTMzZjNhMjg2NGI2NTM2ZDVmNDU2OTM0Y2MxZiJ9fX0="), "&7Transmitter Overview &r(Select)")); + menu.addMenuClickHandler(2, (pl, slot, item, action) -> { openTransmitterControlPanel(pl); - } catch (Exception x) { - Slimefun.getLogger().log(Level.SEVERE, "An Error occured while opening the 'GPS Transmitters' Panel for Slimefun " + Slimefun.getVersion(), x); - } - return false; - }); - - menu.addItem(4, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZGRjZmJhNThmYWYxZjY0ODQ3ODg0MTExODIyYjY0YWZhMjFkN2ZjNjJkNDQ4MWYxNGYzZjNiY2I2MzMwIn19fQ=="), "&7Network Info", "", "&8\u21E8 &7Status: " + (getNetworkComplexity(p.getUniqueId()) > 0 ? "&2&lONLINE": "&4&lOFFLINE"), "&8\u21E8 &7Complexity: &r" + getNetworkComplexity(p.getUniqueId()))); - menu.addMenuClickHandler(4, (pl, slot, item, action) -> false); - - menu.addItem(6, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYzljODg4MWU0MjkxNWE5ZDI5YmI2MWExNmZiMjZkMDU5OTEzMjA0ZDI2NWRmNWI0MzliM2Q3OTJhY2Q1NiJ9fX0="), "&7Waypoint Overview &e(Selected)")); - menu.addMenuClickHandler(6, (pl, slot, item, action) -> false); - - int index = 0; - for (final Map.Entry entry : getWaypoints(p.getUniqueId()).entrySet()) { - if (index >= inventory.length) break; - int slot = inventory[index]; - - Location l = entry.getValue(); - ItemStack globe = getPlanet(entry); - - menu.addItem(slot, new CustomItem(globe, entry.getKey(), "&8\u21E8 &7World: &r" + l.getWorld().getName(), "&8\u21E8 &7X: &r" + l.getX(), "&8\u21E8 &7Y: &r" + l.getY(), "&8\u21E8 &7Z: &r" + l.getZ(), "", "&8\u21E8 &cClick to delete")); - menu.addMenuClickHandler(slot, (pl, slotn, item, action) -> { - String id = ChatColor.stripColor(ChatColor.translateAlternateColorCodes('&', entry.getKey())).toUpperCase().replace(" ", "_"); - Config cfg = new Config("data-storage/Slimefun/waypoints/" + pl.getUniqueId().toString() + ".yml"); - cfg.setValue(id, null); - cfg.save(); - pl.playSound(pl.getLocation(), Sound.UI_BUTTON_CLICK, 1F, 1F); - try { - openWaypointControlPanel(pl); - } catch (Exception x) { - Slimefun.getLogger().log(Level.SEVERE, "An Error occured while opening the 'Waypoint Control' Panel for Slimefun " + Slimefun.getVersion(), x); - } return false; }); - index++; + menu.addItem(4, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZGRjZmJhNThmYWYxZjY0ODQ3ODg0MTExODIyYjY0YWZhMjFkN2ZjNjJkNDQ4MWYxNGYzZjNiY2I2MzMwIn19fQ=="), "&7Network Info", "", "&8\u21E8 &7Status: " + (getNetworkComplexity(p.getUniqueId()) > 0 ? "&2&lONLINE": "&4&lOFFLINE"), "&8\u21E8 &7Complexity: &r" + getNetworkComplexity(p.getUniqueId()))); + menu.addMenuClickHandler(4, (pl, slot, item, action) -> false); + + menu.addItem(6, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYzljODg4MWU0MjkxNWE5ZDI5YmI2MWExNmZiMjZkMDU5OTEzMjA0ZDI2NWRmNWI0MzliM2Q3OTJhY2Q1NiJ9fX0="), "&7Waypoint Overview &e(Selected)")); + menu.addMenuClickHandler(6, (pl, slot, item, action) -> false); + + int index = 0; + for (final Map.Entry entry : getWaypoints(p.getUniqueId()).entrySet()) { + if (index >= inventory.length) break; + int slot = inventory[index]; + + Location l = entry.getValue(); + ItemStack globe = getPlanet(entry); + + menu.addItem(slot, new CustomItem(globe, entry.getKey(), "&8\u21E8 &7World: &r" + l.getWorld().getName(), "&8\u21E8 &7X: &r" + l.getX(), "&8\u21E8 &7Y: &r" + l.getY(), "&8\u21E8 &7Z: &r" + l.getZ(), "", "&8\u21E8 &cClick to delete")); + menu.addMenuClickHandler(slot, (pl, slotn, item, action) -> { + String id = ChatColor.stripColor(ChatColor.translateAlternateColorCodes('&', entry.getKey())).toUpperCase().replace(" ", "_"); + Config cfg = new Config("data-storage/Slimefun/waypoints/" + pl.getUniqueId().toString() + ".yml"); + cfg.setValue(id, null); + cfg.save(); + pl.playSound(pl.getLocation(), Sound.UI_BUTTON_CLICK, 1F, 1F); + + openWaypointControlPanel(pl); + return false; + }); + + index++; + } } - + catch(Exception x) { + Slimefun.getLogger().log(Level.SEVERE, "An Error occured while creating the GPS Waypoint Panel for Slimefun " + Slimefun.getVersion(), x); + } + menu.open(p); } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java index fe052ec8f..c4394a031 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java @@ -68,6 +68,7 @@ public class SlimefunItem { private EnergyTicker energyTicker; private String[] keys = null; private Object[] values = null; + private String wiki = null; /** * Defines whether a SlimefunItem is enabled, disabled or fall-back to its vanilla behavior. @@ -528,7 +529,15 @@ public class SlimefunItem { } public void addWikipage(String page) { - Slimefun.addWikiPage(this.getID(), "https://github.com/TheBusyBiscuit/Slimefun4/wiki/" + page); + wiki = "https://github.com/TheBusyBiscuit/Slimefun4/wiki/" + page; + } + + public boolean hasWiki() { + return wiki != null; + } + + public String getWiki() { + return wiki; } @Override diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/cargo/CargoInputNode.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/cargo/CargoInputNode.java index 1e603d277..1e7b0aae5 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/cargo/CargoInputNode.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/cargo/CargoInputNode.java @@ -1,6 +1,9 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.cargo; import me.mrCookieSlime.CSCoreLibPlugin.compatibility.MaterialHelper; + +import java.util.logging.Level; + import org.bukkit.Material; import org.bukkit.block.Block; import org.bukkit.entity.Player; @@ -19,6 +22,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason; import me.mrCookieSlime.Slimefun.Setup.Messages; import me.mrCookieSlime.Slimefun.api.BlockStorage; +import me.mrCookieSlime.Slimefun.api.Slimefun; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset; import me.mrCookieSlime.Slimefun.api.item_transport.CargoNet; @@ -63,6 +67,7 @@ public class CargoInputNode extends SlimefunItem { Damageable dmg = (Damageable) is.getItemMeta(); dmg.setDamage(20); is.setItemMeta((ItemMeta) dmg); + menu.replaceExistingItem(16, new CustomItem(is, "&7Include Sub-IDs/Durability: &4\u2718", "", "&e> Click to toggle whether the Durability has to match")); menu.addMenuClickHandler(16, (p, slot, item, action) -> { BlockStorage.addBlockInfo(b, "filter-durability", "true"); @@ -75,6 +80,7 @@ public class CargoInputNode extends SlimefunItem { Damageable dmg = (Damageable) is.getItemMeta(); dmg.setDamage(20); is.setItemMeta((ItemMeta) dmg); + menu.replaceExistingItem(16, new CustomItem(is, "&7Include Sub-IDs/Durability: &2\u2714", "", "&e> Click to toggle whether the Durability has to match")); menu.addMenuClickHandler(16, (p, slot, item, action) -> { BlockStorage.addBlockInfo(b, "filter-durability", "false"); @@ -160,8 +166,8 @@ public class CargoInputNode extends SlimefunItem { return false; }); - } catch (Exception e) { - e.printStackTrace(); + } catch (Exception x) { + Slimefun.getLogger().log(Level.SEVERE, "An Error occured while creating a Cargo Input Node for Slimefun " + Slimefun.getVersion(), x); } } @@ -196,6 +202,7 @@ public class CargoInputNode extends SlimefunItem { @Override public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) { BlockMenu inv = BlockStorage.getInventory(b); + if (inv != null) { for (int slot : getInputSlots()) { if (inv.getItemInSlot(slot) != null) { @@ -211,14 +218,10 @@ public class CargoInputNode extends SlimefunItem { protected void constructMenu(BlockMenuPreset preset) { for (int i : border) { - preset.addItem(i, new CustomItem(new ItemStack(Material.CYAN_STAINED_GLASS_PANE), " "), - (p, slot, item, action) -> false - ); + preset.addItem(i, new CustomItem(new ItemStack(Material.CYAN_STAINED_GLASS_PANE), " "), (p, slot, item, action) -> false); } - preset.addItem(2, new CustomItem(new ItemStack(Material.PAPER), "&3Items", "", "&bPut in all Items you want to", "&bblacklist/whitelist"), - (p, slot, item, action) -> false - ); + preset.addItem(2, new CustomItem(new ItemStack(Material.PAPER), "&3Items", "", "&bPut in all Items you want to", "&bblacklist/whitelist"), (p, slot, item, action) -> false); } public int[] getInputSlots() { diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/cargo/CargoOutputNode.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/cargo/CargoOutputNode.java index 076229dd3..bedb1bc78 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/cargo/CargoOutputNode.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/cargo/CargoOutputNode.java @@ -1,5 +1,7 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.cargo; +import java.util.logging.Level; + import org.bukkit.Material; import org.bukkit.block.Block; import org.bukkit.entity.Player; @@ -17,6 +19,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason; import me.mrCookieSlime.Slimefun.Setup.Messages; import me.mrCookieSlime.Slimefun.api.BlockStorage; +import me.mrCookieSlime.Slimefun.api.Slimefun; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset; import me.mrCookieSlime.Slimefun.api.item_transport.CargoNet; @@ -40,7 +43,6 @@ public class CargoOutputNode extends SlimefunItem { @Override public void newInstance(final BlockMenu menu, final Block b) { try { - menu.replaceExistingItem(12, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZjI1OTliZDk4NjY1OWI4Y2UyYzQ5ODg1MjVjOTRlMTlkZGQzOWZhZDA4YTM4Mjg0YTE5N2YxYjcwNjc1YWNjIn19fQ=="), "&bChannel", "", "&e> Click to decrease the Channel ID by 1")); menu.addMenuClickHandler(12, (p, slot, item, action) -> { int channel = Integer.parseInt(BlockStorage.getLocationInfo(b.getLocation(), "frequency")) - 1; @@ -84,8 +86,8 @@ public class CargoOutputNode extends SlimefunItem { return false; }); - } catch (Exception e) { - e.printStackTrace(); + } catch (Exception x) { + Slimefun.getLogger().log(Level.SEVERE, "An Error occured while creating a Cargo Output Node for Slimefun " + Slimefun.getVersion(), x); } } @@ -121,9 +123,7 @@ public class CargoOutputNode extends SlimefunItem { protected void constructMenu(BlockMenuPreset preset) { for (int i : border) { - preset.addItem(i, new CustomItem(new ItemStack(Material.CYAN_STAINED_GLASS_PANE), " "), - (p, slot, item, action) -> false - ); + preset.addItem(i, new CustomItem(new ItemStack(Material.CYAN_STAINED_GLASS_PANE), " "), (p, slot, item, action) -> false); } } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/WitherAssembler.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/WitherAssembler.java index 2fdc0d98d..2f19b91a4 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/WitherAssembler.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/WitherAssembler.java @@ -1,5 +1,7 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric; +import java.util.logging.Level; + import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.Material; @@ -22,6 +24,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason; import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.api.BlockStorage; +import me.mrCookieSlime.Slimefun.api.Slimefun; import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset; @@ -75,7 +78,7 @@ public class WitherAssembler extends SlimefunItem { return false; }); } catch(Exception x) { - x.printStackTrace(); + Slimefun.getLogger().log(Level.SEVERE, "An Error occured while creating a Wither Assembler for Slimefun " + Slimefun.getVersion(), x); } } diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java index 698b15bf7..5fd593e3b 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java @@ -3056,11 +3056,8 @@ public final class SlimefunSetup { SlimefunItem item = BlockStorage.check(e.getClickedBlock()); if (item == null || !item.getID().equals("GPS_CONTROL_PANEL")) return false; e.setCancelled(true); - try { - Slimefun.getGPSNetwork().openTransmitterControlPanel(p); - } catch (Exception e1) { - e1.printStackTrace(); - } + + Slimefun.getGPSNetwork().openTransmitterControlPanel(p); return true; } }); @@ -3492,11 +3489,8 @@ public final class SlimefunSetup { SlimefunItem item = BlockStorage.check(e.getClickedBlock()); if (item == null || !item.getID().equals("GPS_GEO_SCANNER")) return false; e.setCancelled(true); - try { - Slimefun.getGPSNetwork().scanChunk(p, e.getClickedBlock().getChunk()); - } catch (Exception e1) { - e1.printStackTrace(); - } + + Slimefun.getGPSNetwork().scanChunk(p, e.getClickedBlock().getChunk()); return true; } }); diff --git a/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java b/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java index 70452959f..7c9cfb2c6 100644 --- a/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java +++ b/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java @@ -7,6 +7,7 @@ import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.UUID; +import java.util.logging.Level; import java.util.stream.Collectors; import org.bukkit.Bukkit; @@ -176,8 +177,8 @@ public final class SlimefunGuide { pl.sendMessage(""); return false; }); - } catch (Exception e) { - e.printStackTrace(); + } catch (Exception x) { + Slimefun.getLogger().log(Level.SEVERE, "An Error occured while creating the Info-Panel for Slimefun " + Slimefun.getVersion(), x); } menu.addItem(7, new CustomItem(new ItemStack(Material.REDSTONE), "&4Bug Tracker", "", "&7Unsolved Issues: &a" + issues, "", "&7\u21E8 Click to go to the Slimefun Bug Tracker")); @@ -229,8 +230,8 @@ public final class SlimefunGuide { try { String texture = contributor.getTexture(); if (texture != null) skull = CustomSkull.getItem(texture); - } catch (Exception e) { - e.printStackTrace(); + } catch (Exception x) { + Slimefun.getLogger().log(Level.SEVERE, "An Error occured while fetching a Contributor Head for Slimefun " + Slimefun.getVersion(), x); } SkullMeta meta = (SkullMeta) skull.getItemMeta(); @@ -884,18 +885,18 @@ public final class SlimefunGuide { }); if (sfItem != null) { - if (Slimefun.getItemConfig().contains(sfItem.getID() + ".wiki")) { + if (sfItem.hasWiki()) { try { menu.addItem(8, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYzY2OTJmOTljYzZkNzgyNDIzMDQxMTA1NTM1ODk0ODQyOThiMmU0YTAyMzNiNzY3NTNmODg4ZTIwN2VmNSJ9fX0="), "&rView this Item in our Wiki &7(Slimefun Wiki)", "", "&7\u21E8 Click to open")); menu.addMenuClickHandler(8, (pl, slot, itemstack, action) -> { pl.closeInventory(); pl.sendMessage(""); - pl.sendMessage(ChatColor.translateAlternateColorCodes('&', "&7&o" + Slimefun.getItemConfig().getString(sfItem.getID() + ".wiki"))); + pl.sendMessage(ChatColor.translateAlternateColorCodes('&', "&7&o" + sfItem.getWiki())); pl.sendMessage(""); return false; }); - } catch (Exception e) { - e.printStackTrace(); + } catch (Exception x) { + Slimefun.getLogger().log(Level.SEVERE, "An Error occured while adding a Wiki Page for Slimefun " + Slimefun.getVersion(), x); } } @@ -909,8 +910,8 @@ public final class SlimefunGuide { pl.sendMessage(""); return false; }); - } catch (Exception e) { - e.printStackTrace(); + } catch (Exception x) { + Slimefun.getLogger().log(Level.SEVERE, "An Error occured while adding a Youtube Video for Slimefun " + Slimefun.getVersion(), x); } } } diff --git a/src/me/mrCookieSlime/Slimefun/SlimefunPlugin.java b/src/me/mrCookieSlime/Slimefun/SlimefunPlugin.java index a31e6ba4f..ef16960e9 100644 --- a/src/me/mrCookieSlime/Slimefun/SlimefunPlugin.java +++ b/src/me/mrCookieSlime/Slimefun/SlimefunPlugin.java @@ -444,5 +444,9 @@ public final class SlimefunPlugin extends JavaPlugin { public static TickerTask getTicker() { return instance.ticker; } + + public static boolean isActive() { + return instance != null; + } } diff --git a/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java b/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java index cc186834a..705792b49 100644 --- a/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java +++ b/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java @@ -714,57 +714,42 @@ public abstract class ProgrammableAndroid extends SlimefunItem { } } - public void openScriptEditor(Player p, final Block b) throws Exception { + public void openScriptEditor(Player p, final Block b) { ChestMenu menu = new ChestMenu("&eScript Editor"); - - menu.addItem(1, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZDliZjZkYjRhZWRhOWQ4ODIyYjlmNzM2NTM4ZThjMThiOWE0ODQ0Zjg0ZWI0NTUwNGFkZmJmZWU4N2ViIn19fQ=="), "&2> Edit Script", "", "&aEdits your current Script"), - (pl, slot, item, action) -> { - try { - openScript(pl, b, BlockStorage.getLocationInfo(b.getLocation(), "script")); - } catch (Exception e) { - e.printStackTrace(); - } - return false; - } - ); - - menu.addItem(3, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMTcxZDg5NzljMTg3OGEwNTk4N2E3ZmFmMjFiNTZkMWI3NDRmOWQwNjhjNzRjZmZjZGUxZWExZWRhZDU4NTIifX19"), "&4> Create new Script", "", "&cDeletes your current Script", "&cand creates a blank one"), - (pl, slot, item, action) -> { - try { - openScript(pl, b, "START-TURN_LEFT-REPEAT"); - } catch (Exception e) { - e.printStackTrace(); - } - return false; - } - ); - - menu.addItem(5, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYzAxNTg2ZTM5ZjZmZmE2M2I0ZmIzMDFiNjVjYTdkYThhOTJmNzM1M2FhYWI4OWQzODg2NTc5MTI1ZGZiYWY5In19fQ=="), "&6> Download a Script", "", "&eDownload a Script from the Server", "&eYou can edit or simply use it"), - (pl, slot, item, action) -> { - try { - openScriptDownloader(pl, b, 1); - } catch (Exception e) { - e.printStackTrace(); - } - return false; - } - ); - - menu.addItem(8, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYTE4NWM5N2RiYjgzNTNkZTY1MjY5OGQyNGI2NDMyN2I3OTNhM2YzMmE5OGJlNjdiNzE5ZmJlZGFiMzVlIn19fQ=="), "&6> Back", "", "&7Return to the Android's interface"), - (pl, slot, item, action) -> { - try { - BlockStorage.getInventory(b).open(p); - } catch (Exception e) { - e.printStackTrace(); - } - return false; - } - ); + + try { + menu.addItem(1, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZDliZjZkYjRhZWRhOWQ4ODIyYjlmNzM2NTM4ZThjMThiOWE0ODQ0Zjg0ZWI0NTUwNGFkZmJmZWU4N2ViIn19fQ=="), "&2> Edit Script", "", "&aEdits your current Script")); + menu.addMenuClickHandler(1, (pl, slot, item, action) -> { + openScript(pl, b, BlockStorage.getLocationInfo(b.getLocation(), "script")); + return false; + }); + + menu.addItem(3, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMTcxZDg5NzljMTg3OGEwNTk4N2E3ZmFmMjFiNTZkMWI3NDRmOWQwNjhjNzRjZmZjZGUxZWExZWRhZDU4NTIifX19"), "&4> Create new Script", "", "&cDeletes your current Script", "&cand creates a blank one")); + menu.addMenuClickHandler(3, (pl, slot, item, action) -> { + openScript(pl, b, "START-TURN_LEFT-REPEAT"); + return false; + }); + + menu.addItem(5, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYzAxNTg2ZTM5ZjZmZmE2M2I0ZmIzMDFiNjVjYTdkYThhOTJmNzM1M2FhYWI4OWQzODg2NTc5MTI1ZGZiYWY5In19fQ=="), "&6> Download a Script", "", "&eDownload a Script from the Server", "&eYou can edit or simply use it")); + menu.addMenuClickHandler(5, (pl, slot, item, action) -> { + openScriptDownloader(pl, b, 1); + return false; + }); + + menu.addItem(8, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYTE4NWM5N2RiYjgzNTNkZTY1MjY5OGQyNGI2NDMyN2I3OTNhM2YzMmE5OGJlNjdiNzE5ZmJlZGFiMzVlIn19fQ=="), "&6> Back", "", "&7Return to the Android's interface")); + menu.addMenuClickHandler(8, (pl, slot, item, action) -> { + BlockStorage.getInventory(b).open(p); + return false; + }); + } + catch (Exception x) { + Slimefun.getLogger().log(Level.SEVERE, "An Error occured while creating the Script Editor for Slimefun " + Slimefun.getVersion(), x); + } menu.open(p); } - public void openScript(final Player p, final Block b, final String script) throws Exception { + public void openScript(final Player p, final Block b, final String script) { ChestMenu menu = new ChestMenu("&eScript Editor"); final String[] commands = script.split("-"); @@ -780,15 +765,16 @@ public abstract class ProgrammableAndroid extends SlimefunItem { int additional = commands.length == 54 ? 0: 1; if (additional == 1) { - menu.addItem(i, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMTcxZDg5NzljMTg3OGEwNTk4N2E3ZmFmMjFiNTZkMWI3NDRmOWQwNjhjNzRjZmZjZGUxZWExZWRhZDU4NTIifX19"), "&7> Add new Command")); - menu.addMenuClickHandler(i, (pl, slot, item, action) -> { - try { + try { + menu.addItem(i, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMTcxZDg5NzljMTg3OGEwNTk4N2E3ZmFmMjFiNTZkMWI3NDRmOWQwNjhjNzRjZmZjZGUxZWExZWRhZDU4NTIifX19"), "&7> Add new Command")); + menu.addMenuClickHandler(i, (pl, slot, item, action) -> { openScriptComponentEditor(pl, b, script, index); - } catch (Exception e) { - e.printStackTrace(); - } - return false; - }); + return false; + }); + } + catch (Exception x) { + Slimefun.getLogger().log(Level.SEVERE, "An Error occured while creating the Script Editor for Slimefun " + Slimefun.getVersion(), x); + } } menu.addItem(i + additional, new CustomItem(ScriptPart.REPEAT.toItemStack(), ScriptPart.REPEAT.toItemStack().getItemMeta().getDisplayName(), "", "&7\u21E8 &eLeft Click &7to return to the Android's interface")); @@ -819,11 +805,7 @@ public abstract class ProgrammableAndroid extends SlimefunItem { builder.append("REPEAT"); BlockStorage.addBlockInfo(b, "script", builder.toString()); - try { - openScript(pl, b, builder.toString()); - } catch (Exception e) { - e.printStackTrace(); - } + openScript(pl, b, builder.toString()); } else if (action.isRightClicked()) { int j = 0; @@ -834,18 +816,11 @@ public abstract class ProgrammableAndroid extends SlimefunItem { } builder.append("REPEAT"); BlockStorage.addBlockInfo(b, "script", builder.toString()); - try { - openScript(pl, b, builder.toString()); - } catch (Exception e) { - e.printStackTrace(); - } + + openScript(pl, b, builder.toString()); } else { - try { - openScriptComponentEditor(pl, b, script, index); - } catch (Exception e) { - e.printStackTrace(); - } + openScriptComponentEditor(pl, b, script, index); } return false; }); @@ -855,7 +830,7 @@ public abstract class ProgrammableAndroid extends SlimefunItem { menu.open(p); } - private void openScriptDownloader(final Player p, final Block b, final int page) throws Exception { + private void openScriptDownloader(final Player p, final Block b, final int page) { final ChestMenu menu = new ChestMenu("Android Scripts"); menu.addMenuOpeningHandler(pl -> pl.playSound(pl.getLocation(), Sound.BLOCK_NOTE_BLOCK_HAT, 0.7F, 0.7F)); @@ -867,9 +842,7 @@ public abstract class ProgrammableAndroid extends SlimefunItem { for (int i = 45; i < 54; i++) { menu.addItem(i, new CustomItem(new ItemStack(Material.GRAY_STAINED_GLASS_PANE), " ")); - menu.addMenuClickHandler(i, - (pl, slot, item, action) -> false - ); + menu.addMenuClickHandler(i, (pl, slot, item, action) -> false); } menu.addItem(46, new CustomItem(new ItemStack(Material.LIME_STAINED_GLASS_PANE), "&r\u21E6 Previous Page", "", "&7(" + page + " / " + pages + ")")); @@ -877,81 +850,71 @@ public abstract class ProgrammableAndroid extends SlimefunItem { int next = page - 1; if (next < 1) next = pages; if (next != page) { - try { - openScriptDownloader(pl, b, next); - } catch (Exception e) { - e.printStackTrace(); - } + openScriptDownloader(pl, b, next); } return false; }); - - menu.addItem(48, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMTA1YTJjYWI4YjY4ZWE1N2UzYWY5OTJhMzZlNDdjOGZmOWFhODdjYzg3NzYyODE5NjZmOGMzY2YzMWEzOCJ9fX0="), "&eUpload a Script", "", "&6Click &7to upload your Android's Script", "&7to the Database")); - menu.addMenuClickHandler(48, (pl, slot, item, action) -> { - final String code = BlockStorage.getLocationInfo(b.getLocation(), "script"); - int num = 1; - - for (Config script: getUploadedScripts()) { - if (script.getString("author").equals(pl.getUniqueId().toString())) num++; - if (script.getString("code").equals(code)) { - Messages.local.sendTranslation(pl, "android.scripts.already-uploaded", true); - return false; + + try { + + menu.addItem(48, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMTA1YTJjYWI4YjY4ZWE1N2UzYWY5OTJhMzZlNDdjOGZmOWFhODdjYzg3NzYyODE5NjZmOGMzY2YzMWEzOCJ9fX0="), "&eUpload a Script", "", "&6Click &7to upload your Android's Script", "&7to the Database")); + menu.addMenuClickHandler(48, (pl, slot, item, action) -> { + final String code = BlockStorage.getLocationInfo(b.getLocation(), "script"); + int num = 1; + + for (Config script: getUploadedScripts()) { + if (script.getString("author").equals(pl.getUniqueId().toString())) num++; + if (script.getString("code").equals(code)) { + Messages.local.sendTranslation(pl, "android.scripts.already-uploaded", true); + return false; + } } - } - - final int id = num; - - pl.closeInventory(); - Messages.local.sendTranslation(pl, "android.scripts.enter-name", true); - - MenuHelper.awaitChatInput(pl, (player, message) -> { - Config script = new Config("plugins/Slimefun/scripts/" + getAndroidType().toString() + "/" + p.getName() + " " + id + ".sfs"); - - script.setValue("author", player.getUniqueId().toString()); - script.setValue("author_name", player.getName()); - script.setValue("name", ChatColor.stripColor(ChatColor.translateAlternateColorCodes('&', message))); - script.setValue("code", code); - script.setValue("downloads", 0); - script.setValue("android", getAndroidType().toString()); - script.setValue("rating.positive", new ArrayList()); - script.setValue("rating.negative", new ArrayList()); - script.save(); - - try { + + final int id = num; + + pl.closeInventory(); + Messages.local.sendTranslation(pl, "android.scripts.enter-name", true); + + MenuHelper.awaitChatInput(pl, (player, message) -> { + Config script = new Config("plugins/Slimefun/scripts/" + getAndroidType().toString() + "/" + p.getName() + " " + id + ".sfs"); + + script.setValue("author", player.getUniqueId().toString()); + script.setValue("author_name", player.getName()); + script.setValue("name", ChatColor.stripColor(ChatColor.translateAlternateColorCodes('&', message))); + script.setValue("code", code); + script.setValue("downloads", 0); + script.setValue("android", getAndroidType().toString()); + script.setValue("rating.positive", new ArrayList()); + script.setValue("rating.negative", new ArrayList()); + script.save(); + Messages.local.sendTranslation(player, "android.uploaded", true); openScriptDownloader(player, b, page); - } catch (Exception e) { - e.printStackTrace(); - } - + + return false; + }); return false; }); - return false; - }); - - menu.addItem(50, new CustomItem(new ItemStack(Material.LIME_STAINED_GLASS_PANE), "&rNext Page \u21E8", "", "&7(" + page + " / " + pages + ")")); - menu.addMenuClickHandler(50, (pl, slot, item, action) -> { - int next = page + 1; - if (next > pages) next = 1; - if (next != page) { - try { + + menu.addItem(50, new CustomItem(new ItemStack(Material.LIME_STAINED_GLASS_PANE), "&rNext Page \u21E8", "", "&7(" + page + " / " + pages + ")")); + menu.addMenuClickHandler(50, (pl, slot, item, action) -> { + int next = page + 1; + if (next > pages) next = 1; + if (next != page) { openScriptDownloader(pl, b, next); - } catch (Exception e) { - e.printStackTrace(); } - } - return false; - }); - - menu.addItem(53, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYTE4NWM5N2RiYjgzNTNkZTY1MjY5OGQyNGI2NDMyN2I3OTNhM2YzMmE5OGJlNjdiNzE5ZmJlZGFiMzVlIn19fQ=="), "&6> Back", "", "&7Return to the Android's interface")); - menu.addMenuClickHandler(53, (pl, slot, item, action) -> { - try { + return false; + }); + + menu.addItem(53, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYTE4NWM5N2RiYjgzNTNkZTY1MjY5OGQyNGI2NDMyN2I3OTNhM2YzMmE5OGJlNjdiNzE5ZmJlZGFiMzVlIn19fQ=="), "&6> Back", "", "&7Return to the Android's interface")); + menu.addMenuClickHandler(53, (pl, slot, item, action) -> { openScriptEditor(pl, b); - } catch (Exception e) { - e.printStackTrace(); - } - return false; - }); + return false; + }); + } + catch (Exception x) { + Slimefun.getLogger().log(Level.SEVERE, "An Error occured while creating the Script Download Menu for Slimefun " + Slimefun.getVersion(), x); + } int categoryIndex = 45 * (page - 1); for (int i = 0; i < 45; i++) { @@ -985,11 +948,7 @@ public abstract class ProgrammableAndroid extends SlimefunItem { script2.setValue("rating.negative", list); script2.save(); - try { - openScriptDownloader(pl, b, page); - } catch (Exception e) { - e.printStackTrace(); - } + openScriptDownloader(pl, b, page); } else { Messages.local.sendTranslation(pl, "android.scripts.rating.already", true); @@ -1003,11 +962,7 @@ public abstract class ProgrammableAndroid extends SlimefunItem { script2.setValue("rating.positive", list); script2.save(); - try { - openScriptDownloader(pl, b, page); - } catch (Exception e) { - e.printStackTrace(); - } + openScriptDownloader(pl, b, page); } else { Messages.local.sendTranslation(pl, "android.scripts.rating.already", true); @@ -1015,15 +970,11 @@ public abstract class ProgrammableAndroid extends SlimefunItem { } } else if (!action.isRightClicked()) { - try { - script2.setValue("downloads", script2.getInt("downloads") + 1); - script2.save(); + script2.setValue("downloads", script2.getInt("downloads") + 1); + script2.save(); - BlockStorage.addBlockInfo(b, "script", script2.getString("code")); - openScriptEditor(pl, b); - } catch (Exception e) { - e.printStackTrace(); - } + BlockStorage.addBlockInfo(b, "script", script2.getString("code")); + openScriptEditor(pl, b); } return false; }); @@ -1058,7 +1009,7 @@ public abstract class ProgrammableAndroid extends SlimefunItem { return progress; } - protected void openScriptComponentEditor(Player p, final Block b, final String script, final int index) throws Exception { + protected void openScriptComponentEditor(Player p, final Block b, final String script, final int index) { ChestMenu menu = new ChestMenu("&eScript Editor"); final String[] commands = script.split("-"); @@ -1066,51 +1017,49 @@ public abstract class ProgrammableAndroid extends SlimefunItem { for (int i = 0; i < 9; i++) { menu.addItem(i, new CustomItem(new ItemStack(Material.GRAY_STAINED_GLASS_PANE), " "), (pl, slot, item, action) -> false); } + + try { + menu.addItem(9, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMTYxMzlmZDFjNTY1NGU1NmU5ZTRlMmM4YmU3ZWIyYmQ1YjQ5OWQ2MzM2MTY2NjNmZWVlOTliNzQzNTJhZDY0In19fQ=="), "&rDo nothing"), (pl, slot, item, action) -> { + int i = 0; + StringBuilder builder = new StringBuilder("START-"); + + for (String command : commands) { + if (i != index && i > 0 && i < commands.length - 1) builder.append(command + "-"); + i++; + } + + builder.append("REPEAT"); + BlockStorage.addBlockInfo(b, "script", builder.toString()); - menu.addItem(9, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMTYxMzlmZDFjNTY1NGU1NmU5ZTRlMmM4YmU3ZWIyYmQ1YjQ5OWQ2MzM2MTY2NjNmZWVlOTliNzQzNTJhZDY0In19fQ=="), "&rDo nothing"), (pl, slot, item, action) -> { - int i = 0; - StringBuilder builder = new StringBuilder("START-"); - - for (String command : commands) { - if (i != index && i > 0 && i < commands.length - 1) builder.append(command + "-"); - i++; - } - - builder.append("REPEAT"); - BlockStorage.addBlockInfo(b, "script", builder.toString()); - - try { openScript(p, b, builder.toString()); - } catch (Exception e) { - e.printStackTrace(); - } - return false; - }); + return false; + }); + } + catch (Exception x) { + Slimefun.getLogger().log(Level.SEVERE, "An Error occured while creating the Script Editor for Slimefun " + Slimefun.getVersion(), x); + } int i = 10; for (final ScriptPart part : getAccessibleScriptParts()) { - menu.addItem(i, part.toItemStack(), - (pl, slot, item, action) -> { - int j = 0; - StringBuilder builder = new StringBuilder("START-"); - for (String command : commands) { - if (j > 0) { - if (j == index) builder.append(part.toString() + "-"); - else if (j < commands.length - 1) builder.append(command + "-"); - } - j++; - } - builder.append("REPEAT"); - BlockStorage.addBlockInfo(b, "script", builder.toString()); - - try { - openScript(pl, b, builder.toString()); - } catch (Exception e) { - e.printStackTrace(); - } - return false; + menu.addItem(i, part.toItemStack()); + menu.addMenuClickHandler(i, (pl, slot, item, action) -> { + int j = 0; + StringBuilder builder = new StringBuilder("START-"); + + for (String command : commands) { + if (j > 0) { + if (j == index) builder.append(part.toString() + "-"); + else if (j < commands.length - 1) builder.append(command + "-"); } - ); + j++; + } + + builder.append("REPEAT"); + BlockStorage.addBlockInfo(b, "script", builder.toString()); + + openScript(pl, b, builder.toString()); + return false; + }); i++; } diff --git a/src/me/mrCookieSlime/Slimefun/api/BlockStorage.java b/src/me/mrCookieSlime/Slimefun/api/BlockStorage.java index b6ee593fe..7a087bdc2 100644 --- a/src/me/mrCookieSlime/Slimefun/api/BlockStorage.java +++ b/src/me/mrCookieSlime/Slimefun/api/BlockStorage.java @@ -9,6 +9,8 @@ import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; +import java.util.logging.Level; +import java.util.logging.Logger; import org.bukkit.Bukkit; import org.bukkit.Chunk; @@ -74,9 +76,13 @@ public class BlockStorage { private static Location deserializeLocation(String l) { try { - World w = Bukkit.getWorld(l.split(";")[0]); - if (w != null) return new Location(w, Integer.parseInt(l.split(";")[1]), Integer.parseInt(l.split(";")[2]), Integer.parseInt(l.split(";")[3])); + String[] components = l.split(";"); + if (components.length != 4) return null; + + World w = Bukkit.getWorld(components[0]); + if (w != null) return new Location(w, Integer.parseInt(components[1]), Integer.parseInt(components[2]), Integer.parseInt(components[3])); } catch (NumberFormatException x) { + Slimefun.getLogger().log(Level.WARNING, "Could not parse Number", x); } return null; } @@ -135,8 +141,7 @@ public class BlockStorage { if (!loadedTickers.contains(chunkString)) loadedTickers.add(chunkString); } } catch (Exception x) { - System.err.println("[Slimefun] Failed to load " + file.getName() + "(ERR: " + key + ")"); - x.printStackTrace(); + Slimefun.getLogger().log(Level.WARNING, "Failed to load " + file.getName() + "(" + key + ") for Slimefun " + Slimefun.getVersion(), x); } } done++; @@ -158,8 +163,7 @@ public class BlockStorage { try { if (world.getName().equals(key.split(";")[0])) mapChunks.put(key, cfg.getString(key)); } catch (Exception x) { - System.err.println("[Slimefun] Failed to load " + chunks.getName() + " for World \"" + world.getName() + "\" (ERR: " + key + ")"); - x.printStackTrace(); + Slimefun.getLogger().log(Level.WARNING, "Failed to load " + chunks.getName() + " in World " + world.getName() + "(" + key + ") for Slimefun " + Slimefun.getVersion(), x); } } } @@ -171,16 +175,17 @@ public class BlockStorage { Location l = deserializeLocation(file.getName().replace(".sfi", "")); Config cfg = new Config(file); try { - if (cfg.getString("preset") != null) { - BlockMenuPreset preset = BlockMenuPreset.getPreset(cfg.getString("preset")); - inventories.put(l, new BlockMenu(preset, l, cfg)); + BlockMenuPreset preset = BlockMenuPreset.getPreset(cfg.getString("preset")); + if (preset == null) { + preset = BlockMenuPreset.getPreset(checkID(l)); } - else { - BlockMenuPreset preset = BlockMenuPreset.getPreset(checkID(l)); + + if (preset != null) { inventories.put(l, new BlockMenu(preset, l, cfg)); } } catch (Exception x) { + Slimefun.getLogger().log(Level.SEVERE, "An Error occured while loading this Inventory: " + file.getName(), x); } } } @@ -240,10 +245,11 @@ public class BlockStorage { else { File tmpFile = new File(cfg.getFile().getParentFile(), cfg.getFile().getName() + ".tmp"); cfg.save(tmpFile); + try { Files.move(tmpFile.toPath(), cfg.getFile().toPath(), StandardCopyOption.ATOMIC_MOVE); - } catch (IOException e) { - e.printStackTrace(); + } catch (IOException x) { + Slimefun.getLogger().log(Level.SEVERE, "An Error occured while copying a temporary File for Slimefun " + Slimefun.getVersion(), x); } } } @@ -340,13 +346,14 @@ public class BlockStorage { try { return new BlockInfoConfig(parseJSON(json)); } catch(Exception x) { - System.err.println(x.getClass().getName()); - System.err.println("[Slimefun] Failed to parse BlockInfo for Block @ " + l.getBlockX() + ", " + l.getBlockY() + ", " + l.getBlockZ()); - System.err.println(json); - System.err.println("[Slimefun] "); - System.err.println("[Slimefun] IGNORE THIS ERROR UNLESS IT IS SPAMMING"); - System.err.println("[Slimefun] "); - x.printStackTrace(); + Logger logger = Slimefun.getLogger(); + logger.log(Level.WARNING, x.getClass().getName()); + logger.log(Level.WARNING, "Failed to parse BlockInfo for Block @ " + l.getBlockX() + ", " + l.getBlockY() + ", " + l.getBlockZ()); + logger.log(Level.WARNING, json); + logger.log(Level.WARNING, ""); + logger.log(Level.WARNING, "IGNORE THIS ERROR UNLESS IT IS SPAMMING"); + logger.log(Level.WARNING, ""); + logger.log(Level.SEVERE, "An Error occured while parsing Block Info for Slimefun " + Slimefun.getVersion(), x); return null; } } diff --git a/src/me/mrCookieSlime/Slimefun/api/inventory/BlockMenuPreset.java b/src/me/mrCookieSlime/Slimefun/api/inventory/BlockMenuPreset.java index 70ccf5175..74fada40a 100644 --- a/src/me/mrCookieSlime/Slimefun/api/inventory/BlockMenuPreset.java +++ b/src/me/mrCookieSlime/Slimefun/api/inventory/BlockMenuPreset.java @@ -105,7 +105,7 @@ public abstract class BlockMenuPreset extends ChestMenu { } public static BlockMenuPreset getPreset(String id) { - return presets.get(id); + return id == null ? null: presets.get(id); } public static boolean isInventory(String id) { diff --git a/src/me/mrCookieSlime/Slimefun/hooks/github/GitHubSetup.java b/src/me/mrCookieSlime/Slimefun/hooks/github/GitHubSetup.java index 19047b690..3b00ee1ee 100644 --- a/src/me/mrCookieSlime/Slimefun/hooks/github/GitHubSetup.java +++ b/src/me/mrCookieSlime/Slimefun/hooks/github/GitHubSetup.java @@ -69,7 +69,7 @@ public final class GitHubSetup { } } } catch (Exception x) { - SlimefunPlugin.getUtilities().contributorHeads.put(name, null); + if (SlimefunPlugin.isActive()) SlimefunPlugin.getUtilities().contributorHeads.put(name, null); } finally { if (profileReader != null) { try { From 91f31d361adb63048d37e5424d23be931c6440ae Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Sat, 31 Aug 2019 15:07:27 +0200 Subject: [PATCH 096/169] Logger Conversion Pt.4 --- .../Slimefun/GPS/GPSNetwork.java | 45 +++++----- .../Slimefun/Setup/CSCoreLibLoader.java | 85 +++++++++--------- .../androids/ProgrammableAndroid.java | 86 +++++++++---------- .../Slimefun/api/BlockStorage.java | 10 +-- .../Slimefun/api/TickerTask.java | 11 +-- .../Slimefun/api/energy/ChargableBlock.java | 31 +++---- .../Slimefun/commands/SlimefunCommand.java | 11 +-- .../listeners/TeleporterListener.java | 34 ++------ 8 files changed, 144 insertions(+), 169 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/GPS/GPSNetwork.java b/src/me/mrCookieSlime/Slimefun/GPS/GPSNetwork.java index eb14c732b..bc0425cc4 100644 --- a/src/me/mrCookieSlime/Slimefun/GPS/GPSNetwork.java +++ b/src/me/mrCookieSlime/Slimefun/GPS/GPSNetwork.java @@ -241,7 +241,7 @@ public class GPSNetwork { menu.open(p); } - public static void openTeleporterGUI(Player p, UUID uuid, Block b, final int complexity) throws Exception { + public static void openTeleporterGUI(Player p, UUID uuid, Block b, final int complexity) { if (SlimefunPlugin.getUtilities().teleporterUsers.contains(p.getUniqueId())) return; p.playSound(p.getLocation(), Sound.UI_BUTTON_CLICK, 1F, 1F); @@ -257,26 +257,31 @@ public class GPSNetwork { ); } - menu.addItem(4, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYzljODg4MWU0MjkxNWE5ZDI5YmI2MWExNmZiMjZkMDU5OTEzMjA0ZDI2NWRmNWI0MzliM2Q3OTJhY2Q1NiJ9fX0="), "&7Waypoint Overview &e(Select a Destination)")); - menu.addMenuClickHandler(4, (pl, slot, item, action) -> false); - - final Location source = new Location(b.getWorld(), b.getX() + 0.5D, b.getY() + 2D, b.getZ() + 0.5D); - int index = 0; - for (final Map.Entry entry: Slimefun.getGPSNetwork().getWaypoints(uuid).entrySet()) { - if (index >= teleporter_inventory.length) break; - int slot = teleporter_inventory[index]; + try { + menu.addItem(4, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYzljODg4MWU0MjkxNWE5ZDI5YmI2MWExNmZiMjZkMDU5OTEzMjA0ZDI2NWRmNWI0MzliM2Q3OTJhY2Q1NiJ9fX0="), "&7Waypoint Overview &e(Select a Destination)")); + menu.addMenuClickHandler(4, (pl, slot, item, action) -> false); - final Location l = entry.getValue(); - ItemStack globe = getPlanet(entry); - - menu.addItem(slot, new CustomItem(globe, entry.getKey(), "&8\u21E8 &7World: &r" + l.getWorld().getName(), "&8\u21E8 &7X: &r" + l.getX(), "&8\u21E8 &7Y: &r" + l.getY(), "&8\u21E8 &7Z: &r" + l.getZ(), "&8\u21E8 &7Estimated Teleportation Time: &r" + (50 / TeleportationSequence.getSpeed(Slimefun.getGPSNetwork().getNetworkComplexity(uuid), source, l)) + "s", "", "&8\u21E8 &cClick to select")); - menu.addMenuClickHandler(slot, (pl, slotn, item, action) -> { - pl.closeInventory(); - TeleportationSequence.start(pl.getUniqueId(), complexity, source, l, false); - return false; - }); - - index++; + final Location source = new Location(b.getWorld(), b.getX() + 0.5D, b.getY() + 2D, b.getZ() + 0.5D); + int index = 0; + for (final Map.Entry entry: Slimefun.getGPSNetwork().getWaypoints(uuid).entrySet()) { + if (index >= teleporter_inventory.length) break; + int slot = teleporter_inventory[index]; + + final Location l = entry.getValue(); + ItemStack globe = getPlanet(entry); + + menu.addItem(slot, new CustomItem(globe, entry.getKey(), "&8\u21E8 &7World: &r" + l.getWorld().getName(), "&8\u21E8 &7X: &r" + l.getX(), "&8\u21E8 &7Y: &r" + l.getY(), "&8\u21E8 &7Z: &r" + l.getZ(), "&8\u21E8 &7Estimated Teleportation Time: &r" + (50 / TeleportationSequence.getSpeed(Slimefun.getGPSNetwork().getNetworkComplexity(uuid), source, l)) + "s", "", "&8\u21E8 &cClick to select")); + menu.addMenuClickHandler(slot, (pl, slotn, item, action) -> { + pl.closeInventory(); + TeleportationSequence.start(pl.getUniqueId(), complexity, source, l, false); + return false; + }); + + index++; + } + } + catch (Exception x) { + Slimefun.getLogger().log(Level.SEVERE, "An Error occured while creating a Teleporter Menu for Slimefun " + Slimefun.getVersion(), x); } menu.open(p); diff --git a/src/me/mrCookieSlime/Slimefun/Setup/CSCoreLibLoader.java b/src/me/mrCookieSlime/Slimefun/Setup/CSCoreLibLoader.java index 5f084a336..766273472 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/CSCoreLibLoader.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/CSCoreLibLoader.java @@ -10,6 +10,7 @@ import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; +import java.util.logging.Level; import org.bukkit.plugin.Plugin; @@ -17,6 +18,8 @@ import com.google.gson.JsonArray; import com.google.gson.JsonObject; import com.google.gson.JsonParser; +import me.mrCookieSlime.Slimefun.api.Slimefun; + public class CSCoreLibLoader { private Plugin plugin; @@ -35,19 +38,19 @@ public class CSCoreLibLoader { public boolean load() { if (plugin.getServer().getPluginManager().isPluginEnabled("CS-CoreLib")) return true; else { - System.err.println(" "); - System.err.println("#################### - INFO - ####################"); - System.err.println(" "); - System.err.println(plugin.getName() + " could not be loaded."); - System.err.println("It appears that you have not installed CS-CoreLib"); - System.err.println("Your Server will now try to download and install"); - System.err.println("CS-CoreLib for you."); - System.err.println("You will be asked to restart your Server when it's finished."); - System.err.println("If this somehow fails, please download and install CS-CoreLib manually:"); - System.err.println("https://dev.bukkit.org/projects/cs-corelib"); - System.err.println(" "); - System.err.println("#################### - INFO - ####################"); - System.err.println(" "); + Slimefun.getLogger().log(Level.INFO, " "); + Slimefun.getLogger().log(Level.INFO, "#################### - INFO - ####################"); + Slimefun.getLogger().log(Level.INFO, " "); + Slimefun.getLogger().log(Level.INFO, plugin.getName() + " could not be loaded."); + Slimefun.getLogger().log(Level.INFO, "It appears that you have not installed CS-CoreLib"); + Slimefun.getLogger().log(Level.INFO, "Your Server will now try to download and install"); + Slimefun.getLogger().log(Level.INFO, "CS-CoreLib for you."); + Slimefun.getLogger().log(Level.INFO, "You will be asked to restart your Server when it's finished."); + Slimefun.getLogger().log(Level.INFO, "If this somehow fails, please download and install CS-CoreLib manually:"); + Slimefun.getLogger().log(Level.INFO, "https://dev.bukkit.org/projects/cs-corelib"); + Slimefun.getLogger().log(Level.INFO, " "); + Slimefun.getLogger().log(Level.INFO, "#################### - INFO - ####################"); + Slimefun.getLogger().log(Level.INFO, " "); plugin.getServer().getScheduler().scheduleSyncDelayedTask(plugin, () -> { if (connect()) install(); }, 10L); @@ -71,15 +74,15 @@ public class CSCoreLibLoader { return true; } catch (IOException e) { - System.err.println(" "); - System.err.println("#################### - WARNING - ####################"); - System.err.println(" "); - System.err.println("Could not connect to BukkitDev."); - System.err.println("Please download & install CS-CoreLib manually:"); - System.err.println("https://dev.bukkit.org/projects/cs-corelib"); - System.err.println(" "); - System.err.println("#################### - WARNING - ####################"); - System.err.println(" "); + Slimefun.getLogger().log(Level.WARNING, " "); + Slimefun.getLogger().log(Level.WARNING, "#################### - WARNING - ####################"); + Slimefun.getLogger().log(Level.WARNING, " "); + Slimefun.getLogger().log(Level.WARNING, "Could not connect to BukkitDev."); + Slimefun.getLogger().log(Level.WARNING, "Please download & install CS-CoreLib manually:"); + Slimefun.getLogger().log(Level.WARNING, "https://dev.bukkit.org/projects/cs-corelib"); + Slimefun.getLogger().log(Level.WARNING, " "); + Slimefun.getLogger().log(Level.WARNING, "#################### - WARNING - ####################"); + Slimefun.getLogger().log(Level.WARNING, " "); return false; } } @@ -121,29 +124,29 @@ public class CSCoreLibLoader { output.write(data, 0, read); } } catch (Exception ex) { - System.err.println(" "); - System.err.println("#################### - WARNING - ####################"); - System.err.println(" "); - System.err.println("Failed to download CS-CoreLib"); - System.err.println("Please download & install CS-CoreLib manually:"); - System.err.println("https://dev.bukkit.org/projects/cs-corelib"); - System.err.println(" "); - System.err.println("#################### - WARNING - ####################"); - System.err.println(" "); + Slimefun.getLogger().log(Level.WARNING, " "); + Slimefun.getLogger().log(Level.WARNING, "#################### - WARNING - ####################"); + Slimefun.getLogger().log(Level.WARNING, " "); + Slimefun.getLogger().log(Level.WARNING, "Failed to download CS-CoreLib"); + Slimefun.getLogger().log(Level.WARNING, "Please download & install CS-CoreLib manually:"); + Slimefun.getLogger().log(Level.WARNING, "https://dev.bukkit.org/projects/cs-corelib"); + Slimefun.getLogger().log(Level.WARNING, " "); + Slimefun.getLogger().log(Level.WARNING, "#################### - WARNING - ####################"); + Slimefun.getLogger().log(Level.WARNING, " "); } finally { try { if (input != null) input.close(); if (output != null) output.close(); - System.err.println(" "); - System.err.println("#################### - INFO - ####################"); - System.err.println(" "); - System.err.println("Please restart your Server to finish the Installation"); - System.err.println("of " + plugin.getName() + " and CS-CoreLib"); - System.err.println(" "); - System.err.println("#################### - INFO - ####################"); - System.err.println(" "); - } catch (IOException e) { - e.printStackTrace(); + Slimefun.getLogger().log(Level.INFO, " "); + Slimefun.getLogger().log(Level.INFO, "#################### - INFO - ####################"); + Slimefun.getLogger().log(Level.INFO, " "); + Slimefun.getLogger().log(Level.INFO, "Please restart your Server to finish the Installation"); + Slimefun.getLogger().log(Level.INFO, "of " + plugin.getName() + " and CS-CoreLib"); + Slimefun.getLogger().log(Level.INFO, " "); + Slimefun.getLogger().log(Level.INFO, "#################### - INFO - ####################"); + Slimefun.getLogger().log(Level.INFO, " "); + } catch (IOException x) { + Slimefun.getLogger().log(Level.SEVERE, "An Error occured while closing the Download Stream for CS-CoreLib", x); } } } diff --git a/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java b/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java index 705792b49..4b5e6d87b 100644 --- a/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java +++ b/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java @@ -179,13 +179,9 @@ public abstract class ProgrammableAndroid extends SlimefunItem { menu.replaceExistingItem(16, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZDc4ZjJiN2U1ZTc1NjM5ZWE3ZmI3OTZjMzVkMzY0YzRkZjI4YjQyNDNlNjZiNzYyNzdhYWRjZDYyNjEzMzcifX19"), "&bMemory Core", "", "&8\u21E8 &7Click to open the Script Editor")); menu.addMenuClickHandler(16, (p, slot, item, action) -> { - try { - BlockStorage.addBlockInfo(b, "paused", "true"); - Messages.local.sendTranslation(p, "robot.stopped", true); - openScriptEditor(p, b); - } catch (Exception e) { - e.printStackTrace(); - } + BlockStorage.addBlockInfo(b, "paused", "true"); + Messages.local.sendTranslation(p, "robot.stopped", true); + openScriptEditor(p, b); return false; }); } catch (Exception x) { @@ -531,37 +527,45 @@ public abstract class ProgrammableAndroid extends SlimefunItem { private void movedig(Block b, BlockFace face, Block block) { Collection drops = block.getDrops(); if (!blockblacklist.contains(block.getType()) && !drops.isEmpty() && CSCoreLib.getLib().getProtectionManager().canBuild(UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner")), block)) { - try { - 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)) { - pushItems(b, BlockStorage.retrieve(block)); - block.getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, block.getType()); - block.setType(Material.PLAYER_HEAD); - Rotatable blockData = (Rotatable) block.getBlockData(); - blockData.setRotation(face.getOppositeFace()); - block.setBlockData(blockData); + 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)) { + pushItems(b, BlockStorage.retrieve(block)); + block.getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, block.getType()); + block.setType(Material.PLAYER_HEAD); + Rotatable blockData = (Rotatable) block.getBlockData(); + blockData.setRotation(face.getOppositeFace()); + block.setBlockData(blockData); + + try { CustomSkull.setSkull(block, CustomSkull.getTexture(getItem())); - b.setType(Material.AIR); - BlockStorage.moveBlockInfo(b.getLocation(), block.getLocation()); + } catch (Exception x) { + Slimefun.getLogger().log(Level.SEVERE, "An Error occured while moving an Android for Slimefun " + Slimefun.getVersion(), x); } + + b.setType(Material.AIR); + BlockStorage.moveBlockInfo(b.getLocation(), block.getLocation()); } - else { - ItemStack[] items = drops.toArray(new ItemStack[drops.size()]); - if (fits(b, items)) { - pushItems(b, items); - block.getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, block.getType()); - block.setType(Material.PLAYER_HEAD); - Rotatable blockData = (Rotatable) block.getBlockData(); - blockData.setRotation(face.getOppositeFace()); - block.setBlockData(blockData); + } + else { + ItemStack[] items = drops.toArray(new ItemStack[drops.size()]); + if (fits(b, items)) { + pushItems(b, items); + block.getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, block.getType()); + block.setType(Material.PLAYER_HEAD); + Rotatable blockData = (Rotatable) block.getBlockData(); + blockData.setRotation(face.getOppositeFace()); + block.setBlockData(blockData); + + try { CustomSkull.setSkull(block, CustomSkull.getTexture(getItem())); - b.setType(Material.AIR); - BlockStorage.moveBlockInfo(b.getLocation(), block.getLocation()); + } catch (Exception x) { + Slimefun.getLogger().log(Level.SEVERE, "An Error occured while moving an Android for Slimefun " + Slimefun.getVersion(), x); } + + b.setType(Material.AIR); + BlockStorage.moveBlockInfo(b.getLocation(), block.getLocation()); } - } catch (Exception x) { - x.printStackTrace(); } } else { @@ -576,7 +580,7 @@ public abstract class ProgrammableAndroid extends SlimefunItem { private void farm(Block b, Block block) { switch (block.getType()) { - case WHEAT: { + case WHEAT: if (isFullGrown(block)) { ItemStack drop = new ItemStack(Material.WHEAT, CSCoreLib.randomizer().nextInt(3) + 1); if (fits(b, drop)) { @@ -588,8 +592,7 @@ public abstract class ProgrammableAndroid extends SlimefunItem { } } break; - } - case POTATOES: { + case POTATOES: if (isFullGrown(block)) { ItemStack drop = new ItemStack(Material.POTATO, CSCoreLib.randomizer().nextInt(3) + 1); if (fits(b, drop)) { @@ -601,8 +604,7 @@ public abstract class ProgrammableAndroid extends SlimefunItem { } } break; - } - case CARROTS: { + case CARROTS: if (isFullGrown(block)) { ItemStack drop = new ItemStack(Material.CARROT, CSCoreLib.randomizer().nextInt(3) + 1); if (fits(b, drop)) { @@ -614,8 +616,7 @@ public abstract class ProgrammableAndroid extends SlimefunItem { } } break; - } - case BEETROOTS: { + case BEETROOTS: if (isFullGrown(block)) { ItemStack drop = new ItemStack(Material.BEETROOT, CSCoreLib.randomizer().nextInt(3) + 1); if (fits(b, drop)) { @@ -627,8 +628,7 @@ public abstract class ProgrammableAndroid extends SlimefunItem { } } break; - } - case COCOA: { + case COCOA: if (isFullGrown(block)) { ItemStack drop = new ItemStack(Material.COCOA_BEANS, CSCoreLib.randomizer().nextInt(3) + 1); if (fits(b, drop)) { @@ -640,8 +640,7 @@ public abstract class ProgrammableAndroid extends SlimefunItem { } } break; - } - case NETHER_WART: { + case NETHER_WART: if (isFullGrown(block)) { ItemStack drop = new ItemStack(Material.NETHER_WART, CSCoreLib.randomizer().nextInt(3) + 1); if (fits(b, drop)) { @@ -653,7 +652,6 @@ public abstract class ProgrammableAndroid extends SlimefunItem { } } break; - } default: break; } diff --git a/src/me/mrCookieSlime/Slimefun/api/BlockStorage.java b/src/me/mrCookieSlime/Slimefun/api/BlockStorage.java index 7a087bdc2..eb56c3d62 100644 --- a/src/me/mrCookieSlime/Slimefun/api/BlockStorage.java +++ b/src/me/mrCookieSlime/Slimefun/api/BlockStorage.java @@ -367,6 +367,7 @@ public class BlockStorage { } private static String getJSONData(Chunk chunk) { + if (chunk == null) return null; return mapChunks.get(serializeChunk(chunk)); } @@ -674,14 +675,7 @@ public class BlockStorage { return cfg; } catch (Exception x) { - System.err.println(x.getClass().getName()); - System.err.println("[Slimefun] Failed to parse ChunkInfo for Chunk @ " + chunk.getX() + ", " + chunk.getZ()); - try { - System.err.println(getJSONData(chunk)); - } catch (Exception x2) { - System.err.println("No Metadata found!"); - } - x.printStackTrace(); + Slimefun.getLogger().log(Level.SEVERE, "Failed to parse ChunkInfo for Chunk: " + (chunk == null ? "?": chunk.getX()) + ", " + (chunk == null ? "?": chunk.getZ()) + " (" + getJSONData(chunk) + ") for Slimefun " + Slimefun.getVersion(), x); return new Config("data-storage/Slimefun/temp.yml"); } } diff --git a/src/me/mrCookieSlime/Slimefun/api/TickerTask.java b/src/me/mrCookieSlime/Slimefun/api/TickerTask.java index 0dab94603..d39dd41a0 100644 --- a/src/me/mrCookieSlime/Slimefun/api/TickerTask.java +++ b/src/me/mrCookieSlime/Slimefun/api/TickerTask.java @@ -5,6 +5,7 @@ import java.util.HashSet; import java.util.Iterator; import java.util.Map; import java.util.Set; +import java.util.logging.Level; import org.bukkit.Bukkit; import org.bukkit.ChatColor; @@ -27,6 +28,7 @@ public class TickerTask implements Runnable { public Map move = new HashMap<>(); public Map delete = new HashMap<>(); + public Map blockTimings = new HashMap<>(); private Set tickers = new HashSet<>(); @@ -41,7 +43,6 @@ public class TickerTask implements Runnable { private Map chunkTimings = new HashMap<>(); private Set chunksSkipped = new HashSet<>(); private Map buggedBlocks = new HashMap<>(); - public Map blockTimings = new HashMap<>(); @Override public void run() { @@ -231,8 +232,8 @@ public class TickerTask implements Runnable { try { tellraw.send((Player) sender); - } catch (Exception e) { - e.printStackTrace(); + } catch (Exception x) { + Slimefun.getLogger().log(Level.SEVERE, "An Error occured while sending a Timings Summary for Slimefun " + Slimefun.getVersion(), x); } } else { @@ -268,8 +269,8 @@ public class TickerTask implements Runnable { try { tellraw.send((Player) sender); - } catch (Exception e) { - e.printStackTrace(); + } catch (Exception x) { + Slimefun.getLogger().log(Level.SEVERE, "An Error occured while sending a Timings Summary for Slimefun " + Slimefun.getVersion(), x); } } else { diff --git a/src/me/mrCookieSlime/Slimefun/api/energy/ChargableBlock.java b/src/me/mrCookieSlime/Slimefun/api/energy/ChargableBlock.java index 9c23572ed..2d63552ce 100644 --- a/src/me/mrCookieSlime/Slimefun/api/energy/ChargableBlock.java +++ b/src/me/mrCookieSlime/Slimefun/api/energy/ChargableBlock.java @@ -4,19 +4,23 @@ import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; +import java.util.logging.Level; import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config; import me.mrCookieSlime.CSCoreLibPlugin.general.Math.DoubleHandler; import me.mrCookieSlime.CSCoreLibPlugin.general.World.CustomSkull; import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.api.BlockStorage; +import me.mrCookieSlime.Slimefun.api.Slimefun; import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.block.Block; import org.bukkit.block.Skull; -public class ChargableBlock { +public final class ChargableBlock { + + private ChargableBlock() {} public static Map maxCharges = new HashMap<>(); public static Set rechargeable = new HashSet<>(); @@ -96,16 +100,12 @@ public class ChargableBlock { if (charge != getCharge(l)) { BlockStorage.addBlockInfo(l, "energy-charge", String.valueOf(charge), false); if (updateTexture) { - try { - updateTexture(l); - } catch (Exception e) { - e.printStackTrace(); - } + updateTexture(l); } } } - private static void updateTexture(final Location l) throws Exception { + private static void updateTexture(final Location l) { Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> { try { Block b = l.getBlock(); @@ -117,8 +117,8 @@ public class ChargableBlock { else if (charge < (int) (capacity * 0.75D)) CustomSkull.setSkull(b, "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNTU4NDQzMmFmNmYzODIxNjcxMjAyNThkMWVlZThjODdjNmU3NWQ5ZTQ3OWU3YjBkNGM3YjZhZDQ4Y2ZlZWYifX19"); else CustomSkull.setSkull(b, "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvN2EyNTY5NDE1YzE0ZTMxYzk4ZWM5OTNhMmY5OWU2ZDY0ODQ2ZGIzNjdhMTNiMTk5OTY1YWQ5OWM0MzhjODZjIn19fQ=="); } - } catch (Exception e) { - e.printStackTrace(); + } catch (Exception x) { + Slimefun.getLogger().log(Level.SEVERE, "An Error occured while updating a Capacitor Texture for Slimefun " + Slimefun.getVersion(), x); } }); } @@ -145,21 +145,14 @@ public class ChargableBlock { setCharge(l, getMaxCharge(l)); } if (capacitors.contains(BlockStorage.checkID(l))) { - try { - updateTexture(l); - } catch (Exception e) { - e.printStackTrace(); - } + updateTexture(l); } } else if (charge < 0 && energy >= -charge) { setCharge(l, energy + charge); + if (capacitors.contains(BlockStorage.checkID(l))) { - try { - updateTexture(l); - } catch (Exception e) { - e.printStackTrace(); - } + updateTexture(l); } } return rest; diff --git a/src/me/mrCookieSlime/Slimefun/commands/SlimefunCommand.java b/src/me/mrCookieSlime/Slimefun/commands/SlimefunCommand.java index b4960d1b7..a5da3a818 100644 --- a/src/me/mrCookieSlime/Slimefun/commands/SlimefunCommand.java +++ b/src/me/mrCookieSlime/Slimefun/commands/SlimefunCommand.java @@ -2,6 +2,7 @@ package me.mrCookieSlime.Slimefun.commands; import java.util.ArrayList; import java.util.List; +import java.util.logging.Level; import org.bukkit.Bukkit; import org.bukkit.ChatColor; @@ -153,8 +154,8 @@ public class SlimefunCommand implements CommandExecutor, Listener { title.send(TitleType.TITLE, ((Player) sender)); subtitle.send(TitleType.SUBTITLE, ((Player) sender)); - } catch (Exception x1) { - x1.printStackTrace(); + } catch (Exception e) { + Slimefun.getLogger().log(Level.SEVERE, "An Error occured while a Player used an Elevator in Slimefun " + Slimefun.getVersion(), e); } } } @@ -239,11 +240,7 @@ public class SlimefunCommand implements CommandExecutor, Listener { if (sender.hasPermission("slimefun.command.teleporter") && sender instanceof Player) { OfflinePlayer player = Bukkit.getOfflinePlayer(args[1]); if (player.getName() != null) { - try { - GPSNetwork.openTeleporterGUI((Player) sender, player.getUniqueId(), ((Player) sender).getLocation().getBlock().getRelative(BlockFace.DOWN), 999999999); - } catch (Exception e) { - e.printStackTrace(); - } + GPSNetwork.openTeleporterGUI((Player) sender, player.getUniqueId(), ((Player) sender).getLocation().getBlock().getRelative(BlockFace.DOWN), 999999999); } else sender.sendMessage("&4Unknown Player: &c" + args[1]); } diff --git a/src/me/mrCookieSlime/Slimefun/listeners/TeleporterListener.java b/src/me/mrCookieSlime/Slimefun/listeners/TeleporterListener.java index c0ab19cb9..8791d446b 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/TeleporterListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/TeleporterListener.java @@ -5,6 +5,9 @@ import me.mrCookieSlime.Slimefun.GPS.Elevator; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.Teleporter; import me.mrCookieSlime.Slimefun.api.BlockStorage; +import me.mrCookieSlime.Slimefun.api.Slimefun; + +import java.util.logging.Level; import org.bukkit.block.BlockFace; import org.bukkit.event.EventHandler; @@ -23,13 +26,12 @@ public class TeleporterListener implements Listener { @EventHandler(priority=EventPriority.HIGHEST,ignoreCancelled=true) public void onStarve(PlayerInteractEvent e) { - if (e.getAction() != Action.PHYSICAL) return; + if (e.getAction() != Action.PHYSICAL || e.getClickedBlock() == null) return; - if (e.getClickedBlock() == null) return; - SlimefunItem item = BlockStorage.check(e.getClickedBlock()); - if (item == null) return; + String id = BlockStorage.checkID(e.getClickedBlock()); + if (id == null) return; - if (item.getID().equals("GPS_ACTIVATION_DEVICE_SHARED")) { + if (id.equals("GPS_ACTIVATION_DEVICE_SHARED") || (id.equals("GPS_ACTIVATION_DEVICE_PERSONAL") && BlockStorage.getLocationInfo(e.getClickedBlock().getLocation(), "owner").equals(e.getPlayer().getUniqueId().toString()))) { SlimefunItem teleporter = BlockStorage.check(e.getClickedBlock().getRelative(BlockFace.DOWN)); if (teleporter instanceof Teleporter) { @@ -40,29 +42,11 @@ public class TeleporterListener implements Listener { try { ((Teleporter) teleporter).onInteract(e.getPlayer(), e.getClickedBlock().getRelative(BlockFace.DOWN)); } catch (Exception x) { - x.printStackTrace(); + Slimefun.getLogger().log(Level.SEVERE, "An Error occured while interacting with a Teleporter", x); } } } - else if (item.getID().equals("GPS_ACTIVATION_DEVICE_PERSONAL")) { - if (BlockStorage.getLocationInfo(e.getClickedBlock().getLocation(), "owner").equals(e.getPlayer().getUniqueId().toString())) { - SlimefunItem teleporter = BlockStorage.check(e.getClickedBlock().getRelative(BlockFace.DOWN)); - - if (teleporter instanceof Teleporter) { - for (BlockFace face: faces) { - if (!BlockStorage.check(e.getClickedBlock().getRelative(BlockFace.DOWN).getRelative(face), "GPS_TELEPORTER_PYLON")) return; - } - - try { - ((Teleporter) teleporter).onInteract(e.getPlayer(), e.getClickedBlock().getRelative(BlockFace.DOWN)); - } catch (Exception x) { - x.printStackTrace(); - } - } - } - else e.setCancelled(true); - } - else if (item.getID().equals("ELEVATOR_PLATE")) { + else if (id.equals("ELEVATOR_PLATE")) { Elevator.openDialogue(e.getPlayer(), e.getClickedBlock()); } } From 6eb3cee4a211b88533a89d07a064647e6be0dab4 Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Sat, 31 Aug 2019 15:52:15 +0200 Subject: [PATCH 097/169] Reduced technical debt --- .../Slimefun/Objects/Category.java | 8 +- .../Objects/SlimefunItem/SlimefunItem.java | 17 ++- .../SlimefunItem/multiblocks/Smeltery.java | 2 +- .../mrCookieSlime/Slimefun/Setup/Files.java | 16 +-- .../Slimefun/Setup/SlimefunManager.java | 8 -- .../mrCookieSlime/Slimefun/SlimefunGuide.java | 21 +-- .../Slimefun/SlimefunPlugin.java | 24 +--- .../Slimefun/api/BlockStorage.java | 90 ++++++------- .../mrCookieSlime/Slimefun/api/Slimefun.java | 5 - .../Slimefun/api/SlimefunBackup.java | 123 +++++++++--------- .../Slimefun/api/inventory/BlockMenu.java | 10 +- .../Slimefun/hooks/github/GitHubSetup.java | 11 +- .../Slimefun/listeners/DamageListener.java | 4 +- .../Slimefun/utils/Settings.java | 2 +- .../Slimefun/utils/Utilities.java | 43 ++++++ 15 files changed, 197 insertions(+), 187 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/Objects/Category.java b/src/me/mrCookieSlime/Slimefun/Objects/Category.java index 2add32610..32f200a74 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/Category.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/Category.java @@ -7,9 +7,9 @@ import java.util.List; import org.bukkit.inventory.ItemStack; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.Lists.Categories; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; -import me.mrCookieSlime.Slimefun.api.Slimefun; /** * Statically handles categories. @@ -76,11 +76,11 @@ public class Category { Collections.sort(list, new CategorySorter()); if (this instanceof SeasonalCategory) { - if (((SeasonalCategory) this).isUnlocked()) Slimefun.currentCategories.add(this); + if (((SeasonalCategory) this).isUnlocked()) SlimefunPlugin.getUtilities().currentlyEnabledCategories.add(this); } - else Slimefun.currentCategories.add(this); + else SlimefunPlugin.getUtilities().currentlyEnabledCategories.add(this); - Collections.sort(Slimefun.currentCategories, new CategorySorter()); + Collections.sort(SlimefunPlugin.getUtilities().currentlyEnabledCategories, new CategorySorter()); } /** diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java index c4394a031..ceff86059 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java @@ -350,13 +350,14 @@ public class SlimefunItem { if (recipeOutput != null) output = recipeOutput.clone(); if (recipeType.toItem().isSimilar(RecipeType.MOB_DROP.toItem())) { + String mob = ChatColor.stripColor(recipe[4].getItemMeta().getDisplayName()).toUpperCase().replace(" ", "_"); try { - EntityType entity = EntityType.valueOf(ChatColor.stripColor(recipe[4].getItemMeta().getDisplayName()).toUpperCase().replace(" ", "_")); - List dropping = new ArrayList<>(); - if (SlimefunManager.drops.containsKey(entity)) dropping = SlimefunManager.drops.get(entity); + EntityType entity = EntityType.valueOf(mob); + List dropping = SlimefunPlugin.getUtilities().drops.getOrDefault(entity, new ArrayList<>()); dropping.add(output); - SlimefunManager.drops.put(entity, dropping); + SlimefunPlugin.getUtilities().drops.put(entity, dropping); } catch(Exception x) { + Slimefun.getLogger().log(Level.WARNING, "An Exception occured when setting a Drop for the Mob: " + mob + " (" + x.getClass().getSimpleName() + ")"); } } else if (recipeType.toItem().isSimilar(RecipeType.ANCIENT_ALTAR.toItem())) { @@ -365,9 +366,10 @@ public class SlimefunItem { else if (recipeType.getMachine() != null && getByID(recipeType.getMachine().getID()) instanceof SlimefunMachine) { ((SlimefunMachine) getByID(recipeType.getMachine().getID())).addRecipe(recipe, output); } + install(); } catch(Exception x) { - System.err.println("[Slimefun] Item Initialization failed: " + id); + Slimefun.getLogger().log(Level.WARNING, "Item Setup failed: " + id + " (" + x.getClass().getSimpleName() + ")"); } } @@ -461,13 +463,14 @@ public class SlimefunItem { public static void patchExistingItem(String id, ItemStack stack) { SlimefunItem item = getByID(id); if (item != null) { - System.out.println("[Slimefun] WARNING - Patching existing Item - " + id); - System.out.println("[Slimefun] This might take a while"); + Slimefun.getLogger().log(Level.INFO, "WARNING - Patching existing Item - " + id); + Slimefun.getLogger().log(Level.INFO, "This might take a while"); final ItemStack old = item.getItem(); item.setItem(stack); for (SlimefunItem sfi: list()) { ItemStack[] recipe = sfi.getRecipe(); + for (int i = 0; i < 9; i++) { if (SlimefunManager.isItemSimiliar(recipe[i], old, true)) recipe[i] = stack; } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/Smeltery.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/Smeltery.java index 63c94189b..8ebaa1237 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/Smeltery.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/Smeltery.java @@ -77,7 +77,7 @@ public class Smeltery extends MultiBlockMachine { Hopper chamber = findHopper(dispBlock, BlockFace.NORTH, BlockFace.EAST, BlockFace.SOUTH, BlockFace.WEST); - if (new Random().nextInt(100) < SlimefunPlugin.getSettings().SMELTERY_FIRE_BREAK_CHANCE) { + if (new Random().nextInt(100) < SlimefunPlugin.getSettings().smelteryFireBreakChance) { if (chamber != null) { if (chamber.getInventory().contains(Material.FLINT_AND_STEEL)) { ItemStack item = chamber.getInventory().getItem(chamber.getInventory().first(Material.FLINT_AND_STEEL)); diff --git a/src/me/mrCookieSlime/Slimefun/Setup/Files.java b/src/me/mrCookieSlime/Slimefun/Setup/Files.java index 84c480030..e775c8cc4 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/Files.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/Files.java @@ -4,15 +4,13 @@ import java.io.File; public final class Files { - private Files() {} + public final File researches = new File("plugins/Slimefun/Researches.yml"); + public final File config = new File("plugins/Slimefun/config.yml"); + public final File items = new File("plugins/Slimefun/Items.yml"); + public final File database = new File("data-storage/Slimefun/Players"); + public final File whitelist = new File("plugins/Slimefun/whitelist.yml"); - public static File researches = new File("plugins/Slimefun/Researches.yml"); - public static File config = new File("plugins/Slimefun/config.yml"); - public static File items = new File("plugins/Slimefun/Items.yml"); - public static File database = new File("data-storage/Slimefun/Players"); - public static File whitelist = new File("plugins/Slimefun/whitelist.yml"); - - public static void cleanup() { + public void cleanup() { if (!researches.exists()) { System.err.println("###############################################"); System.err.println("############## = - INFO - = #################"); @@ -34,7 +32,7 @@ public final class Files { } } - public static boolean delete(File folder) { + public boolean delete(File folder) { File[] files = folder.listFiles(); if (files != null) { for (File current: files) { diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunManager.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunManager.java index 9b6bf824f..f05aa753d 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunManager.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunManager.java @@ -1,15 +1,11 @@ package me.mrCookieSlime.Slimefun.Setup; import java.util.ArrayList; -import java.util.EnumMap; import java.util.List; -import java.util.Map; -import org.bukkit.entity.EntityType; import org.bukkit.inventory.ItemStack; import org.bukkit.potion.PotionEffect; -import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.Lists.Categories; import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Objects.Category; @@ -21,10 +17,6 @@ public final class SlimefunManager { private SlimefunManager() {} - public static SlimefunPlugin plugin; - public static String prefix; - public static Map> drops = new EnumMap<>(EntityType.class); - public static void registerArmorSet(ItemStack baseComponent, ItemStack[] items, String idSyntax, PotionEffect[][] effects, boolean special, boolean slimefun) { String[] components = new String[] {"_HELMET", "_CHESTPLATE", "_LEGGINGS", "_BOOTS"}; Category cat = special ? Categories.MAGIC_ARMOR: Categories.ARMOR; diff --git a/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java b/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java index 7c9cfb2c6..f3e6718bd 100644 --- a/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java +++ b/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java @@ -2,7 +2,6 @@ package me.mrCookieSlime.Slimefun; import java.util.ArrayList; import java.util.Arrays; -import java.util.Date; import java.util.Iterator; import java.util.List; import java.util.Map; @@ -46,10 +45,10 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AReactor; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineFuel; import me.mrCookieSlime.Slimefun.Setup.Messages; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; -import me.mrCookieSlime.Slimefun.api.SlimefunGuideLayout; import me.mrCookieSlime.Slimefun.api.GuideHandler; import me.mrCookieSlime.Slimefun.api.PlayerProfile; import me.mrCookieSlime.Slimefun.api.Slimefun; +import me.mrCookieSlime.Slimefun.api.SlimefunGuideLayout; import me.mrCookieSlime.Slimefun.hooks.github.Contributor; import me.mrCookieSlime.Slimefun.hooks.github.IntegerFormat; @@ -57,18 +56,6 @@ public final class SlimefunGuide { private SlimefunGuide() {} - public static int month = 0; - - public static int issues = 0; - public static int forks = 0; - /** - * Represents the number of stars on the Slimefun4 GitHub repository. - * @since 4.1.13 - */ - public static int stars = 0; - public static int codeBytes = 0; - public static Date lastUpdate = new Date(); - private static final int category_size = 36; @Deprecated @@ -169,7 +156,7 @@ public final class SlimefunGuide { }); try { - menu.addItem(4, new CustomItem(new ItemStack(Material.COMPARATOR), "&eSource Code", "", "&7Bytes of Code: &6" + IntegerFormat.formatBigNumber(codeBytes), "&7Last Update: &a" + IntegerFormat.timeDelta(lastUpdate) + " ago", "&7Forks: &e" + forks, "&7Stars: &e" + stars, "", "&7&oSlimefun 4 is a community project,", "&7&othe source code is available on GitHub", "&7&oand if you want to keep this Plugin alive,", "&7&othen please consider contributing to it", "", "&7\u21E8 Click to go to GitHub")); + menu.addItem(4, new CustomItem(new ItemStack(Material.COMPARATOR), "&eSource Code", "", "&7Bytes of Code: &6" + IntegerFormat.formatBigNumber(SlimefunPlugin.getUtilities().codeBytes), "&7Last Update: &a" + IntegerFormat.timeDelta(SlimefunPlugin.getUtilities().lastUpdate) + " ago", "&7Forks: &e" + SlimefunPlugin.getUtilities().forks, "&7Stars: &e" + SlimefunPlugin.getUtilities().stars, "", "&7&oSlimefun 4 is a community project,", "&7&othe source code is available on GitHub", "&7&oand if you want to keep this Plugin alive,", "&7&othen please consider contributing to it", "", "&7\u21E8 Click to go to GitHub")); menu.addMenuClickHandler(4, (pl, slot, item, action) -> { pl.closeInventory(); pl.sendMessage(""); @@ -181,7 +168,7 @@ public final class SlimefunGuide { Slimefun.getLogger().log(Level.SEVERE, "An Error occured while creating the Info-Panel for Slimefun " + Slimefun.getVersion(), x); } - menu.addItem(7, new CustomItem(new ItemStack(Material.REDSTONE), "&4Bug Tracker", "", "&7Unsolved Issues: &a" + issues, "", "&7\u21E8 Click to go to the Slimefun Bug Tracker")); + menu.addItem(7, new CustomItem(new ItemStack(Material.REDSTONE), "&4Bug Tracker", "", "&7Unsolved Issues: &a" + SlimefunPlugin.getUtilities().issues, "", "&7\u21E8 Click to go to the Slimefun Bug Tracker")); menu.addMenuClickHandler(7, (pl, slot, item, action) -> { pl.closeInventory(); pl.sendMessage(""); @@ -417,7 +404,7 @@ public final class SlimefunGuide { pl -> pl.playSound(pl.getLocation(), Sound.ENTITY_BAT_TAKEOFF, 0.7F, 0.7F) ); - List categories = Slimefun.currentCategories; + List categories = SlimefunPlugin.getUtilities().currentlyEnabledCategories; List handlers = SlimefunPlugin.getUtilities().guideHandlers.values().stream().flatMap(List::stream).collect(Collectors.toList()); int index = 9; diff --git a/src/me/mrCookieSlime/Slimefun/SlimefunPlugin.java b/src/me/mrCookieSlime/Slimefun/SlimefunPlugin.java index ef16960e9..88eb8deec 100644 --- a/src/me/mrCookieSlime/Slimefun/SlimefunPlugin.java +++ b/src/me/mrCookieSlime/Slimefun/SlimefunPlugin.java @@ -139,7 +139,8 @@ public final class SlimefunPlugin extends JavaPlugin { instance = this; System.out.println("[Slimefun] Loading Files..."); - Files.cleanup(); + Files files = new Files(); + files.cleanup(); System.out.println("[Slimefun] Loading Config..."); @@ -147,9 +148,9 @@ public final class SlimefunPlugin extends JavaPlugin { utils.setupConfig(); // Loading all extra configs - researches = new Config(Files.researches); - items = new Config(Files.items); - whitelist = new Config(Files.whitelist); + researches = new Config(files.researches); + items = new Config(files.items); + whitelist = new Config(files.whitelist); // Setup Config and messages.yml utils.setupLocalization(); @@ -180,8 +181,6 @@ public final class SlimefunPlugin extends JavaPlugin { for (String s : storage) createDir("data-storage/Slimefun/" + s); for (String s : general) createDir("plugins/Slimefun/" + s); - SlimefunManager.plugin = this; - System.out.println("[Slimefun] Loading Items..."); MiscSetup.setupItemSettings(); @@ -194,7 +193,7 @@ public final class SlimefunPlugin extends JavaPlugin { settings = new Settings(config); settings.researchesEnabled = getResearchCfg().getBoolean("enable-researching"); - settings.SMELTERY_FIRE_BREAK_CHANCE = (Integer) Slimefun.getItemValue("SMELTERY", "chance.fireBreak"); + settings.smelteryFireBreakChance = (Integer) Slimefun.getItemValue("SMELTERY", "chance.fireBreak"); System.out.println("[Slimefun] Loading Researches..."); ResearchSetup.setupResearches(); @@ -350,7 +349,7 @@ public final class SlimefunPlugin extends JavaPlugin { } } - for (UniversalBlockMenu menu: BlockStorage.universalInventories.values()) { + for (UniversalBlockMenu menu: utilities.universalInventories.values()) { menu.save(); } @@ -358,11 +357,6 @@ public final class SlimefunPlugin extends JavaPlugin { // Prevent Memory Leaks Messages.local = null; - Files.config = null; - Files.database = null; - Files.items = null; - Files.researches = null; - Files.whitelist = null; MultiBlock.list = null; Research.list = null; SlimefunItem.all = null; @@ -375,9 +369,6 @@ public final class SlimefunPlugin extends JavaPlugin { SlimefunCommand.tabs = null; SlimefunItem.blockhandler = null; BlockMenuPreset.presets = null; - BlockStorage.loadedTickers = null; - BlockStorage.tickingChunks = null; - BlockStorage.worlds = null; ChargableBlock.capacitors = null; ChargableBlock.maxCharges = null; AContainer.processing = null; @@ -386,7 +377,6 @@ public final class SlimefunPlugin extends JavaPlugin { EnergyNet.machinesOutput = null; EnergyNet.machinesStorage = null; CargoNet.faces = null; - BlockStorage.universalInventories = null; OreWasher.items = null; instance = null; diff --git a/src/me/mrCookieSlime/Slimefun/api/BlockStorage.java b/src/me/mrCookieSlime/Slimefun/api/BlockStorage.java index eb56c3d62..3f3b34873 100644 --- a/src/me/mrCookieSlime/Slimefun/api/BlockStorage.java +++ b/src/me/mrCookieSlime/Slimefun/api/BlockStorage.java @@ -39,27 +39,18 @@ public class BlockStorage { private static final String path_blocks = "data-storage/Slimefun/stored-blocks/"; private static final String path_chunks = "data-storage/Slimefun/stored-chunks/"; - - public static Map worlds = new HashMap<>(); - public static Map> tickingChunks = new HashMap<>(); - public static Set loadedTickers = new HashSet<>(); private World world; - private Map storage = new HashMap<>(); - private static Map mapChunks = new HashMap<>(); - private Map inventories = new HashMap<>(); - public static Map universalInventories = new HashMap<>(); - private Map cache_blocks = new HashMap<>(); public static BlockStorage getStorage(World world) { - return worlds.get(world.getName()); + return SlimefunPlugin.getUtilities().worlds.get(world.getName()); } public static BlockStorage getForcedStorage(World world) { - return isWorldRegistered(world.getName()) ? worlds.get(world.getName()): new BlockStorage(world); + return isWorldRegistered(world.getName()) ? SlimefunPlugin.getUtilities().worlds.get(world.getName()): new BlockStorage(world); } private static String serializeLocation(Location l) { @@ -88,7 +79,7 @@ public class BlockStorage { } public BlockStorage(final World w) { - if (worlds.containsKey(w.getName())) return; + if (SlimefunPlugin.getUtilities().worlds.containsKey(w.getName())) return; this.world = w; System.out.println("[Slimefun] Loading Blocks for World \"" + w.getName() + "\""); System.out.println("[Slimefun] This may take a long time..."); @@ -135,10 +126,10 @@ public class BlockStorage { storage.put(l, blockInfo); if (SlimefunItem.isTicking(file.getName().replace(".sfb", ""))) { - Set locations = tickingChunks.containsKey(chunkString) ? tickingChunks.get(chunkString): new HashSet<>(); + Set locations = SlimefunPlugin.getUtilities().tickingChunks.getOrDefault(chunkString, new HashSet<>()); locations.add(l); - tickingChunks.put(chunkString, locations); - if (!loadedTickers.contains(chunkString)) loadedTickers.add(chunkString); + SlimefunPlugin.getUtilities().tickingChunks.put(chunkString, locations); + if (!SlimefunPlugin.getUtilities().loadedTickers.contains(chunkString)) SlimefunPlugin.getUtilities().loadedTickers.add(chunkString); } } catch (Exception x) { Slimefun.getLogger().log(Level.WARNING, "Failed to load " + file.getName() + "(" + key + ") for Slimefun " + Slimefun.getVersion(), x); @@ -161,14 +152,14 @@ public class BlockStorage { FileConfiguration cfg = YamlConfiguration.loadConfiguration(chunks); for (String key: cfg.getKeys(false)) { try { - if (world.getName().equals(key.split(";")[0])) mapChunks.put(key, cfg.getString(key)); + if (world.getName().equals(key.split(";")[0])) SlimefunPlugin.getUtilities().mapChunks.put(key, cfg.getString(key)); } catch (Exception x) { Slimefun.getLogger().log(Level.WARNING, "Failed to load " + chunks.getName() + " in World " + world.getName() + "(" + key + ") for Slimefun " + Slimefun.getVersion(), x); } } } - worlds.put(world.getName(), this); + SlimefunPlugin.getUtilities().worlds.put(world.getName(), this); for (File file: new File("data-storage/Slimefun/stored-inventories").listFiles()) { if (file.getName().startsWith(w.getName()) && file.getName().endsWith(".sfi")) { @@ -196,7 +187,7 @@ public class BlockStorage { BlockMenuPreset preset = BlockMenuPreset.getPreset(cfg.getString("preset")); if (preset != null) { - universalInventories.put(preset.getID(), new UniversalBlockMenu(preset, cfg)); + SlimefunPlugin.getUtilities().universalInventories.put(preset.getID(), new UniversalBlockMenu(preset, cfg)); } } } @@ -213,7 +204,7 @@ public class BlockStorage { changes += entry.getValue().getUnsavedChanges(); } - Map universalInventories2 = new HashMap<>(universalInventories); + Map universalInventories2 = new HashMap<>(SlimefunPlugin.getUtilities().universalInventories); for (Map.Entry entry: universalInventories2.entrySet()) { changes += entry.getValue().getUnsavedChanges(); } @@ -229,7 +220,6 @@ public class BlockStorage { public void save(boolean computeChanges, boolean remove) { if (computeChanges) computeChanges(); - if (changes == 0) return; System.out.println("[Slimefun] Saving Blocks for World \"" + world.getName() + "\" (" + changes + " Change(s) queued)"); @@ -240,7 +230,9 @@ public class BlockStorage { cache_blocks.remove(entry.getKey()); Config cfg = entry.getValue(); if (cfg.getKeys().isEmpty()) { - cfg.getFile().delete(); + if (!cfg.getFile().delete()) { + Slimefun.getLogger().log(Level.WARNING, "Could not delete File: " + cfg.getFile().getName()); + } } else { File tmpFile = new File(cfg.getFile().getParentFile(), cfg.getFile().getName() + ".tmp"); @@ -260,7 +252,7 @@ public class BlockStorage { entry.getValue().save(entry.getKey()); } - Map universalInventories2 = new HashMap<>(universalInventories); + Map universalInventories2 = new HashMap<>(SlimefunPlugin.getUtilities().universalInventories); for (Map.Entry entry: universalInventories2.entrySet()) { entry.getValue().save(); @@ -270,14 +262,14 @@ public class BlockStorage { File chunks = new File(path_chunks + "chunks.sfc"); Config cfg = new Config("data-storage/Slimefun/temp.yml"); - for (Map.Entry entry: mapChunks.entrySet()) { + for (Map.Entry entry: SlimefunPlugin.getUtilities().mapChunks.entrySet()) { cfg.setValue(entry.getKey(), entry.getValue()); } cfg.save(chunks); if (remove) { - worlds.remove(world.getName()); + SlimefunPlugin.getUtilities().worlds.remove(world.getName()); } } @@ -368,7 +360,7 @@ public class BlockStorage { private static String getJSONData(Chunk chunk) { if (chunk == null) return null; - return mapChunks.get(serializeChunk(chunk)); + return SlimefunPlugin.getUtilities().mapChunks.get(serializeChunk(chunk)); } @Deprecated @@ -421,7 +413,7 @@ public class BlockStorage { storage.storage.put(l, cfg); if (BlockMenuPreset.isInventory(cfg.getString("id"))) { if (BlockMenuPreset.isUniversalInventory(cfg.getString("id"))) { - if (!universalInventories.containsKey(cfg.getString("id"))) storage.loadUniversalInventory(BlockMenuPreset.getPreset(cfg.getString("id"))); + if (!SlimefunPlugin.getUtilities().universalInventories.containsKey(cfg.getString("id"))) storage.loadUniversalInventory(BlockMenuPreset.getPreset(cfg.getString("id"))); } else if (!storage.hasInventory(l)) { File file = new File("data-storage/Slimefun/stored-inventories/" + serializeLocation(l) + ".sfi"); @@ -471,14 +463,14 @@ public class BlockStorage { storage.getUniversalInventory(l).save(); } String chunkString = locationToChunkString(l); - if (tickingChunks.containsKey(chunkString)) { - Set locations = tickingChunks.get(chunkString); + if (SlimefunPlugin.getUtilities().tickingChunks.containsKey(chunkString)) { + Set locations = SlimefunPlugin.getUtilities().tickingChunks.get(chunkString); locations.remove(l); if (locations.isEmpty()) { - tickingChunks.remove(chunkString); - loadedTickers.remove(chunkString); + SlimefunPlugin.getUtilities().tickingChunks.remove(chunkString); + SlimefunPlugin.getUtilities().loadedTickers.remove(chunkString); } - else tickingChunks.put(chunkString, locations); + else SlimefunPlugin.getUtilities().tickingChunks.put(chunkString, locations); } } } @@ -513,14 +505,14 @@ public class BlockStorage { storage.storage.remove(from); String chunkString = locationToChunkString(from); - if (tickingChunks.containsKey(chunkString)) { - Set locations = tickingChunks.get(chunkString); + if (SlimefunPlugin.getUtilities().tickingChunks.containsKey(chunkString)) { + Set locations = SlimefunPlugin.getUtilities().tickingChunks.get(chunkString); locations.remove(from); if (locations.isEmpty()) { - tickingChunks.remove(chunkString); - loadedTickers.remove(chunkString); + SlimefunPlugin.getUtilities().tickingChunks.remove(chunkString); + SlimefunPlugin.getUtilities().loadedTickers.remove(chunkString); } - else tickingChunks.put(chunkString, locations); + else SlimefunPlugin.getUtilities().tickingChunks.put(chunkString, locations); } } @@ -534,12 +526,12 @@ public class BlockStorage { if (item != null && item.isTicking()) { String chunkString = locationToChunkString(l); if (value != null) { - Set locations = tickingChunks.get(chunkString); + Set locations = SlimefunPlugin.getUtilities().tickingChunks.get(chunkString); if (locations == null) locations = new HashSet<>(); locations.add(l); - tickingChunks.put(chunkString, locations); - if (!loadedTickers.contains(chunkString)) loadedTickers.add(chunkString); + SlimefunPlugin.getUtilities().tickingChunks.put(chunkString, locations); + if (!SlimefunPlugin.getUtilities().loadedTickers.contains(chunkString)) SlimefunPlugin.getUtilities().loadedTickers.add(chunkString); } } } @@ -579,11 +571,11 @@ public class BlockStorage { } public static boolean isWorldRegistered(String name) { - return worlds.containsKey(name); + return SlimefunPlugin.getUtilities().worlds.containsKey(name); } public static Set getTickingChunks() { - return new HashSet<>(loadedTickers); + return new HashSet<>(SlimefunPlugin.getUtilities().loadedTickers); } @Deprecated @@ -605,7 +597,7 @@ public class BlockStorage { } public static Set getTickingLocations(String chunk) { - return new HashSet<>(tickingChunks.get(chunk)); + return new HashSet<>(SlimefunPlugin.getUtilities().tickingChunks.get(chunk)); } public BlockMenu loadInventory(Location l, BlockMenuPreset preset) { @@ -615,7 +607,7 @@ public class BlockStorage { } public void loadUniversalInventory(BlockMenuPreset preset) { - universalInventories.put(preset.getID(), new UniversalBlockMenu(preset)); + SlimefunPlugin.getUtilities().universalInventories.put(preset.getID(), new UniversalBlockMenu(preset)); } public void clearInventory(Location l) { @@ -637,7 +629,7 @@ public class BlockStorage { } public boolean hasUniversalInventory(String id) { - return universalInventories.containsKey(id); + return SlimefunPlugin.getUtilities().universalInventories.containsKey(id); } public UniversalBlockMenu getUniversalInventory(Block block) { @@ -650,7 +642,7 @@ public class BlockStorage { } public UniversalBlockMenu getUniversalInventory(String id) { - return universalInventories.get(id); + return SlimefunPlugin.getUtilities().universalInventories.get(id); } public static BlockMenu getInventory(Block b) { @@ -667,7 +659,7 @@ public class BlockStorage { public static Config getChunkInfo(Chunk chunk) { try { Config cfg = new Config("data-storage/Slimefun/temp.yml"); - if (!mapChunks.containsKey(serializeChunk(chunk))) return cfg; + if (!SlimefunPlugin.getUtilities().mapChunks.containsKey(serializeChunk(chunk))) return cfg; for (Map.Entry entry: parseJSON(getJSONData(chunk)).entrySet()) { cfg.setValue(entry.getKey(), entry.getValue()); @@ -681,7 +673,7 @@ public class BlockStorage { } public static boolean hasChunkInfo(Chunk chunk) { - return mapChunks.containsKey(serializeChunk(chunk)); + return SlimefunPlugin.getUtilities().mapChunks.containsKey(serializeChunk(chunk)); } public static void setChunkInfo(Chunk chunk, String key, String value) { @@ -694,7 +686,7 @@ public class BlockStorage { json.add(path, new JsonPrimitive(cfg.getString(path))); } - mapChunks.put(serializeChunk(chunk), json.toString()); + SlimefunPlugin.getUtilities().mapChunks.put(serializeChunk(chunk), json.toString()); chunkChanges++; } @@ -708,7 +700,7 @@ public class BlockStorage { } public static void clearChunkInfo(Chunk chunk) { - mapChunks.remove(serializeChunk(chunk)); + SlimefunPlugin.getUtilities().mapChunks.remove(serializeChunk(chunk)); } public static String getBlockInfoAsJson(Block block) { diff --git a/src/me/mrCookieSlime/Slimefun/api/Slimefun.java b/src/me/mrCookieSlime/Slimefun/api/Slimefun.java index bcbe4d52c..875c8001b 100644 --- a/src/me/mrCookieSlime/Slimefun/api/Slimefun.java +++ b/src/me/mrCookieSlime/Slimefun/api/Slimefun.java @@ -24,11 +24,6 @@ import me.mrCookieSlime.Slimefun.Setup.Messages; * @since 4.0 */ public class Slimefun { - - /** - * Lists all the registered categories. - */ - public static List currentCategories = new ArrayList<>(); public static void registerGuideHandler(GuideHandler handler) { List handlers = SlimefunPlugin.getUtilities().guideHandlers.getOrDefault(handler.getTier(), new ArrayList<>()); diff --git a/src/me/mrCookieSlime/Slimefun/api/SlimefunBackup.java b/src/me/mrCookieSlime/Slimefun/api/SlimefunBackup.java index 46ec795bf..d618226f0 100644 --- a/src/me/mrCookieSlime/Slimefun/api/SlimefunBackup.java +++ b/src/me/mrCookieSlime/Slimefun/api/SlimefunBackup.java @@ -32,85 +32,88 @@ public class SlimefunBackup { }); for (int i = backups.size() - 20; i > 0; i--) { - backups.get(i).delete(); + if (!backups.get(i).delete()) { + Slimefun.getLogger().log(Level.WARNING, "Could not delete Backup: " + backups.get(i).getName()); + } } } File file = new File("data-storage/Slimefun/block-backups/" + Clock.format(new Date()) + ".zip"); byte[] buffer = new byte[1024]; - if (file.exists()) { - file.delete(); - } + if (!file.exists() || file.delete()) { + try { + if (file.createNewFile()) { + try (ZipOutputStream output = new ZipOutputStream(new FileOutputStream(file))) { + for (File f1: new File("data-storage/Slimefun/stored-blocks/").listFiles()) { + for (File f: f1.listFiles()) { + ZipEntry entry = new ZipEntry("stored-blocks/" + f1.getName() + "/" + f.getName()); + output.putNextEntry(entry); - try { - file.createNewFile(); + try (FileInputStream input = new FileInputStream(f)) { + int length; + while ((length = input.read(buffer)) > 0) { + output.write(buffer, 0, length); + } + } - try (ZipOutputStream output = new ZipOutputStream(new FileOutputStream(file))) { - for (File f1: new File("data-storage/Slimefun/stored-blocks/").listFiles()) { - for (File f: f1.listFiles()) { - ZipEntry entry = new ZipEntry("stored-blocks/" + f1.getName() + "/" + f.getName()); - output.putNextEntry(entry); - - try (FileInputStream input = new FileInputStream(f)) { - int length; - while ((length = input.read(buffer)) > 0) { - output.write(buffer, 0, length); + output.closeEntry(); } } - output.closeEntry(); - } - } + for (File f: new File("data-storage/Slimefun/universal-inventories/").listFiles()) { + ZipEntry entry = new ZipEntry("universal-inventories/" + f.getName()); + output.putNextEntry(entry); - for (File f: new File("data-storage/Slimefun/universal-inventories/").listFiles()) { - ZipEntry entry = new ZipEntry("universal-inventories/" + f.getName()); - output.putNextEntry(entry); + try (FileInputStream input = new FileInputStream(f)) { + int length; + while ((length = input.read(buffer)) > 0) { + output.write(buffer, 0, length); + } + } - try (FileInputStream input = new FileInputStream(f)) { - int length; - while ((length = input.read(buffer)) > 0) { - output.write(buffer, 0, length); + output.closeEntry(); + } + + for (File f: new File("data-storage/Slimefun/stored-inventories/").listFiles()) { + ZipEntry entry = new ZipEntry("stored-inventories/" + f.getName()); + output.putNextEntry(entry); + + try (FileInputStream input = new FileInputStream(f)) { + int length; + while ((length = input.read(buffer)) > 0) { + output.write(buffer, 0, length); + } + } + + output.closeEntry(); + } + + File chunks = new File("data-storage/Slimefun/stored-chunks/chunks.sfc"); + + if (chunks.exists()) { + ZipEntry entry = new ZipEntry("stored-chunks/chunks.sfc"); + output.putNextEntry(entry); + + try (FileInputStream input = new FileInputStream(chunks)) { + int length; + while ((length = input.read(buffer)) > 0) { + output.write(buffer, 0, length); + } + } + + output.closeEntry(); } } - output.closeEntry(); + Slimefun.getLogger().log(Level.INFO, "Backed up Data to: " + file.getName()); } - - for (File f: new File("data-storage/Slimefun/stored-inventories/").listFiles()) { - ZipEntry entry = new ZipEntry("stored-inventories/" + f.getName()); - output.putNextEntry(entry); - - try (FileInputStream input = new FileInputStream(f)) { - int length; - while ((length = input.read(buffer)) > 0) { - output.write(buffer, 0, length); - } - } - - output.closeEntry(); - } - - File chunks = new File("data-storage/Slimefun/stored-chunks/chunks.sfc"); - - if (chunks.exists()) { - ZipEntry entry = new ZipEntry("stored-chunks/chunks.sfc"); - output.putNextEntry(entry); - - try (FileInputStream input = new FileInputStream(chunks)) { - int length; - while ((length = input.read(buffer)) > 0) { - output.write(buffer, 0, length); - } - } - - output.closeEntry(); + else { + Slimefun.getLogger().log(Level.WARNING, "Could not create backup-file: " + file.getName()); } + } catch(IOException x) { + Slimefun.getLogger().log(Level.SEVERE, "An Error occured while creating a World-Backup for Slimefun " + Slimefun.getVersion(), x); } - - System.out.println("[Slimefun] Backed up Blocks to " + file.getName()); - } catch(IOException x) { - Slimefun.getLogger().log(Level.SEVERE, "An Error occured while creating a World-Backup for Slimefun " + Slimefun.getVersion(), x); } } diff --git a/src/me/mrCookieSlime/Slimefun/api/inventory/BlockMenu.java b/src/me/mrCookieSlime/Slimefun/api/inventory/BlockMenu.java index 255e4523b..b96ab9ee7 100644 --- a/src/me/mrCookieSlime/Slimefun/api/inventory/BlockMenu.java +++ b/src/me/mrCookieSlime/Slimefun/api/inventory/BlockMenu.java @@ -2,6 +2,7 @@ package me.mrCookieSlime.Slimefun.api.inventory; import java.io.File; import java.util.ArrayList; +import java.util.logging.Level; import org.bukkit.Location; import org.bukkit.block.Block; @@ -10,6 +11,7 @@ import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config; +import me.mrCookieSlime.Slimefun.api.Slimefun; public class BlockMenu extends DirtyChestMenu { @@ -93,7 +95,13 @@ public class BlockMenu extends DirtyChestMenu { } public void delete(Location l) { - new File("data-storage/Slimefun/stored-inventories/" + serializeLocation(l) + ".sfi").delete(); + File file = new File("data-storage/Slimefun/stored-inventories/" + serializeLocation(l) + ".sfi"); + + if (file.exists()) { + if (!file.delete()) { + Slimefun.getLogger().log(Level.WARNING, "Could not delete File: " + file.getName()); + } + } } public BlockMenuPreset getPreset() { diff --git a/src/me/mrCookieSlime/Slimefun/hooks/github/GitHubSetup.java b/src/me/mrCookieSlime/Slimefun/hooks/github/GitHubSetup.java index 3b00ee1ee..4b5250629 100644 --- a/src/me/mrCookieSlime/Slimefun/hooks/github/GitHubSetup.java +++ b/src/me/mrCookieSlime/Slimefun/hooks/github/GitHubSetup.java @@ -10,7 +10,6 @@ import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonParser; -import me.mrCookieSlime.Slimefun.SlimefunGuide; import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.api.Slimefun; @@ -119,10 +118,10 @@ public final class GitHubSetup { @Override public void onSuccess(JsonElement element) { JsonObject object = element.getAsJsonObject(); - SlimefunGuide.issues = object.get("open_issues_count").getAsInt(); - SlimefunGuide.forks = object.get("forks").getAsInt(); - SlimefunGuide.stars = object.get("stargazers_count").getAsInt(); - SlimefunGuide.lastUpdate = IntegerFormat.parseGitHubDate(object.get("pushed_at").getAsString()); + SlimefunPlugin.getUtilities().issues = object.get("open_issues_count").getAsInt(); + SlimefunPlugin.getUtilities().forks = object.get("forks").getAsInt(); + SlimefunPlugin.getUtilities().stars = object.get("stargazers_count").getAsInt(); + SlimefunPlugin.getUtilities().lastUpdate = IntegerFormat.parseGitHubDate(object.get("pushed_at").getAsString()); } @Override @@ -150,7 +149,7 @@ public final class GitHubSetup { @Override public void onSuccess(JsonElement element) { JsonObject object = element.getAsJsonObject(); - SlimefunGuide.codeBytes = object.get("Java").getAsInt(); + SlimefunPlugin.getUtilities().codeBytes = object.get("Java").getAsInt(); } @Override diff --git a/src/me/mrCookieSlime/Slimefun/listeners/DamageListener.java b/src/me/mrCookieSlime/Slimefun/listeners/DamageListener.java index fbc412984..8b7b58396 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/DamageListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/DamageListener.java @@ -75,8 +75,8 @@ public class DamageListener implements Listener { Player p = (Player) e.getEntity().getKiller(); ItemStack item = p.getInventory().getItemInMainHand(); - if (SlimefunManager.drops.containsKey(e.getEntity().getType())) { - for (ItemStack drop : SlimefunManager.drops.get(e.getEntity().getType())) { + if (SlimefunPlugin.getUtilities().drops.containsKey(e.getEntity().getType())) { + for (ItemStack drop : SlimefunPlugin.getUtilities().drops.get(e.getEntity().getType())) { if (Slimefun.hasUnlocked(p, item, true)) { e.getDrops().add(drop); } diff --git a/src/me/mrCookieSlime/Slimefun/utils/Settings.java b/src/me/mrCookieSlime/Slimefun/utils/Settings.java index 8f6382c0d..c35bdad27 100644 --- a/src/me/mrCookieSlime/Slimefun/utils/Settings.java +++ b/src/me/mrCookieSlime/Slimefun/utils/Settings.java @@ -21,7 +21,7 @@ public final class Settings { public boolean legacyOreGrinder; public boolean legacyOreWasher; - public int SMELTERY_FIRE_BREAK_CHANCE; + public int smelteryFireBreakChance; public Settings(Config cfg) { researchesFreeInCreative = cfg.getBoolean("options.allow-free-creative-research"); diff --git a/src/me/mrCookieSlime/Slimefun/utils/Utilities.java b/src/me/mrCookieSlime/Slimefun/utils/Utilities.java index bd8a1133c..c6c9487ab 100644 --- a/src/me/mrCookieSlime/Slimefun/utils/Utilities.java +++ b/src/me/mrCookieSlime/Slimefun/utils/Utilities.java @@ -1,6 +1,8 @@ package me.mrCookieSlime.Slimefun.utils; import java.util.ArrayList; +import java.util.Date; +import java.util.EnumMap; import java.util.HashMap; import java.util.HashSet; import java.util.List; @@ -10,13 +12,17 @@ import java.util.UUID; import org.bukkit.Location; import org.bukkit.entity.Entity; +import org.bukkit.entity.EntityType; import org.bukkit.inventory.ItemStack; import me.mrCookieSlime.Slimefun.GEO.OreGenResource; +import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Setup.PostSlimefunLoadingHandler; import me.mrCookieSlime.Slimefun.ancient_altar.AltarRecipe; +import me.mrCookieSlime.Slimefun.api.BlockStorage; import me.mrCookieSlime.Slimefun.api.GuideHandler; import me.mrCookieSlime.Slimefun.api.PlayerProfile; +import me.mrCookieSlime.Slimefun.api.inventory.UniversalBlockMenu; import me.mrCookieSlime.Slimefun.api.item_transport.CargoTransportEvent; import me.mrCookieSlime.Slimefun.hooks.github.Contributor; import me.mrCookieSlime.Slimefun.hooks.github.GitHubConnector; @@ -33,11 +39,22 @@ public final class Utilities { public int vanillaItems = 0; + public List currentlyEnabledCategories = new ArrayList<>(); + + public Map worlds = new HashMap<>(); + public Set loadedTickers = new HashSet<>(); + + public Map mapChunks = new HashMap<>(); + public Map> tickingChunks = new HashMap<>(); + public Map universalInventories = new HashMap<>(); + public Map profiles = new HashMap<>(); public Map> guideHandlers = new HashMap<>(); public List postHandlers = new ArrayList<>(); + public Map> drops = new EnumMap<>(EntityType.class); + public Map jumpState = new HashMap<>(); public Set damage = new HashSet<>(); public Map remove = new HashMap<>(); @@ -72,5 +89,31 @@ public final class Utilities { * @since 4.0 */ public Set researching = new HashSet<>(); + + /** + * Represents the current month of the year + */ + public int month = 0; + + /** + * Represents the number of unresolved Issues on the Slimefun4 GitHub repository. + * @since 4.1.13 + */ + public int issues = 0; + + /** + * Represents the number of Forks of the Slimefun4 GitHub repository. + * @since 4.1.13 + */ + public int forks = 0; + + /** + * Represents the number of stars on the Slimefun4 GitHub repository. + * @since 4.1.13 + */ + public int stars = 0; + + public int codeBytes = 0; + public Date lastUpdate = new Date(); } From 2f5177b785ef8c3da65dc8087d17042af34890f1 Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Sat, 31 Aug 2019 15:52:52 +0200 Subject: [PATCH 098/169] Refactored Code --- src/me/mrCookieSlime/Slimefun/api/Slimefun.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/me/mrCookieSlime/Slimefun/api/Slimefun.java b/src/me/mrCookieSlime/Slimefun/api/Slimefun.java index 875c8001b..5a993b58d 100644 --- a/src/me/mrCookieSlime/Slimefun/api/Slimefun.java +++ b/src/me/mrCookieSlime/Slimefun/api/Slimefun.java @@ -23,8 +23,10 @@ import me.mrCookieSlime.Slimefun.Setup.Messages; * * @since 4.0 */ -public class Slimefun { +public final class Slimefun { + private Slimefun() {} + public static void registerGuideHandler(GuideHandler handler) { List handlers = SlimefunPlugin.getUtilities().guideHandlers.getOrDefault(handler.getTier(), new ArrayList<>()); handlers.add(handler); From edeef7c14d6fc8ac9687e506912d8e7f7ac9c1ae Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Sat, 31 Aug 2019 17:52:20 +0200 Subject: [PATCH 099/169] Logger Conversion Pt.5 --- .../Slimefun/GEO/OreGenSystem.java | 4 +- .../Slimefun/Objects/MultiBlock.java | 46 +++++++++---------- .../Slimefun/Objects/Research.java | 5 +- .../Objects/SlimefunItem/SlimefunItem.java | 4 +- .../mrCookieSlime/Slimefun/Setup/Files.java | 25 +++++----- .../Slimefun/Setup/MiscSetup.java | 5 +- .../Slimefun/SlimefunPlugin.java | 33 ++++++------- .../Slimefun/api/BlockStorage.java | 32 +++++++------ .../Slimefun/api/ErrorReport.java | 1 + .../Slimefun/api/TickerTask.java | 23 ++++------ .../Slimefun/autosave/BlockAutoSaver.java | 4 +- .../Slimefun/autosave/PlayerAutoSaver.java | 4 +- .../Slimefun/hooks/SlimefunHooks.java | 39 ++++++++++++---- .../hooks/github/GitHubConnector.java | 10 ++-- .../Slimefun/listeners/WorldListener.java | 11 ++++- .../Slimefun/utils/Settings.java | 4 ++ 16 files changed, 150 insertions(+), 100 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/GEO/OreGenSystem.java b/src/me/mrCookieSlime/Slimefun/GEO/OreGenSystem.java index c6fe6d833..31c75f4de 100644 --- a/src/me/mrCookieSlime/Slimefun/GEO/OreGenSystem.java +++ b/src/me/mrCookieSlime/Slimefun/GEO/OreGenSystem.java @@ -1,6 +1,7 @@ package me.mrCookieSlime.Slimefun.GEO; import java.util.Collection; +import java.util.logging.Level; import org.bukkit.Chunk; import org.bukkit.block.Biome; @@ -8,6 +9,7 @@ import org.bukkit.block.Biome; import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config; import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.api.BlockStorage; +import me.mrCookieSlime.Slimefun.api.Slimefun; public final class OreGenSystem { @@ -19,7 +21,7 @@ public final class OreGenSystem { public static void registerResource(OreGenResource resource) { SlimefunPlugin.getUtilities().resources.put(resource.getName(), resource); - System.out.println("[Slimefun - GEO] Registering Ore Gen: " + resource.getName()); + Slimefun.getLogger().log(Level.INFO, "Registering Ore Gen: " + resource.getName()); Config cfg = new Config("plugins/Slimefun/generators/" + resource.getName() + ".cfg"); for (Biome biome: Biome.values()) { diff --git a/src/me/mrCookieSlime/Slimefun/Objects/MultiBlock.java b/src/me/mrCookieSlime/Slimefun/Objects/MultiBlock.java index cd56f137f..988d37656 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/MultiBlock.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/MultiBlock.java @@ -38,40 +38,38 @@ public class MultiBlock { } public boolean isMultiBlock(SlimefunItem machine) { - if (machine == null) return false; - else if (!(machine instanceof SlimefunMachine)) return false; - else if (machine instanceof SlimefunMachine) { - MultiBlock mb = ((SlimefunMachine) machine).toMultiBlock(); - if (trigger == mb.getTriggerBlock()) { - for (int i = 0; i < mb.getBuild().length; i++) { - if (mb.getBuild()[i] != null) { - if (MaterialHelper.isLog( mb.getBuild()[i])) { - if (!MaterialHelper.isLog(blocks[i])) return false; - } - else if (mb.getBuild()[i] != blocks[i]) return false; - } - } - return true; - } - else return false; + if (machine instanceof SlimefunMachine) { + return isMultiBlock(((SlimefunMachine) machine).toMultiBlock()); } else return false; } public boolean isMultiBlock(MultiBlock mb) { if (mb == null) return false; - else if (trigger == mb.getTriggerBlock()) { + + if (trigger == mb.getTriggerBlock()) { for (int i = 0; i < mb.getBuild().length; i++) { - if (mb.getBuild()[i] != null) { - if (MaterialHelper.isLog(mb.getBuild()[i])) { - if (!MaterialHelper.isLog(blocks[i])) return false; - } - else if (mb.getBuild()[i] != blocks[i]) return false; - } + if (!compareBlocks(blocks[i], mb.getBuild()[i])) return false; } + return true; } - else return false; + + return false; + } + + private boolean compareBlocks(Material a, Material b) { + if (b != null) { + if (MaterialHelper.isLog(b)) { + return MaterialHelper.isLog(a); + } + + if (b != a) { + return false; + } + } + + return true; } } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/Research.java b/src/me/mrCookieSlime/Slimefun/Objects/Research.java index b159491a1..19f048602 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/Research.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/Research.java @@ -7,6 +7,7 @@ import java.util.LinkedList; import java.util.List; import java.util.Set; import java.util.UUID; +import java.util.logging.Level; import org.bukkit.Bukkit; import org.bukkit.ChatColor; @@ -303,7 +304,9 @@ public class Research { this.enabled = SlimefunPlugin.getResearchCfg().getBoolean(this.getID() + ".enabled"); list.add(this); - if (SlimefunPlugin.getCfg().getBoolean("options.print-out-loading")) System.out.println("[Slimefun] Loaded Research \"" + this.getName() + "\""); + if (SlimefunPlugin.getSettings().printOutLoading) { + Slimefun.getLogger().log(Level.INFO, "Loaded Research \"" + this.getName() + "\""); + } } /** diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java index ceff86059..f392ee726 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java @@ -259,7 +259,9 @@ public class SlimefunItem { handlers.put(handler.toCodename(), handlerset); } - if (SlimefunPlugin.getCfg().getBoolean("options.print-out-loading")) System.out.println("[Slimefun] Loaded Item \"" + this.id + "\""); + if (SlimefunPlugin.getSettings().printOutLoading) { + Slimefun.getLogger().log(Level.INFO, "Loaded Item \"" + this.id + "\""); + } } else { if (this instanceof VanillaItem) this.state = State.VANILLA; diff --git a/src/me/mrCookieSlime/Slimefun/Setup/Files.java b/src/me/mrCookieSlime/Slimefun/Setup/Files.java index e775c8cc4..7df6b97b4 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/Files.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/Files.java @@ -1,6 +1,9 @@ package me.mrCookieSlime.Slimefun.Setup; import java.io.File; +import java.util.logging.Level; + +import me.mrCookieSlime.Slimefun.api.Slimefun; public final class Files { @@ -12,17 +15,17 @@ public final class Files { public void cleanup() { if (!researches.exists()) { - System.err.println("###############################################"); - System.err.println("############## = - INFO - = #################"); - System.err.println("###############################################"); - System.err.println(" "); - System.err.println("Slimefun Warning:"); - System.err.println(" "); - System.err.println("Slimefun has detected that your Files are either"); - System.err.println("outdated or do not exist. We generated new Files"); - System.err.println("instead otherwise Slimefun would not work. If you"); - System.err.println("have used Slimefun before, your Settings are now"); - System.err.println("gone. But therefore Slimefun works!"); + Slimefun.getLogger().log(Level.WARNING, "###############################################"); + Slimefun.getLogger().log(Level.WARNING, "############## = - INFO - = #################"); + Slimefun.getLogger().log(Level.WARNING, "###############################################"); + Slimefun.getLogger().log(Level.WARNING, " "); + Slimefun.getLogger().log(Level.WARNING, "Slimefun Warning:"); + Slimefun.getLogger().log(Level.WARNING, " "); + Slimefun.getLogger().log(Level.WARNING, "Slimefun has detected that your Files are either"); + Slimefun.getLogger().log(Level.WARNING, "outdated or do not exist. We generated new Files"); + Slimefun.getLogger().log(Level.WARNING, "instead otherwise Slimefun would not work. If you"); + Slimefun.getLogger().log(Level.WARNING, "have used Slimefun before, your Settings are now"); + Slimefun.getLogger().log(Level.WARNING, "gone. But therefore Slimefun works!"); delete(new File("plugins/Slimefun")); delete(new File("data-storage/Slimefun")); } diff --git a/src/me/mrCookieSlime/Slimefun/Setup/MiscSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/MiscSetup.java index 526e19e33..6177cde30 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/MiscSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/MiscSetup.java @@ -3,6 +3,7 @@ package me.mrCookieSlime.Slimefun.Setup; import java.util.ArrayList; import java.util.Iterator; import java.util.List; +import java.util.logging.Level; import java.util.stream.Stream; import org.bukkit.Bukkit; @@ -53,11 +54,11 @@ public final class MiscSetup { while (iterator.hasNext()) { SlimefunItem item = iterator.next(); if (item == null) { - System.err.println("[Slimefun] Removed bugged Item ('NULL?')"); + Slimefun.getLogger().log(Level.WARNING, "Removed bugged Item ('NULL?')"); iterator.remove(); } else if (item.getItem() == null) { - System.err.println("[Slimefun] Removed bugged Item ('" + item.getID() + "')"); + Slimefun.getLogger().log(Level.WARNING, "Removed bugged Item ('" + item.getID() + "')"); iterator.remove(); } } diff --git a/src/me/mrCookieSlime/Slimefun/SlimefunPlugin.java b/src/me/mrCookieSlime/Slimefun/SlimefunPlugin.java index 88eb8deec..1b10949ae 100644 --- a/src/me/mrCookieSlime/Slimefun/SlimefunPlugin.java +++ b/src/me/mrCookieSlime/Slimefun/SlimefunPlugin.java @@ -122,27 +122,27 @@ public final class SlimefunPlugin extends JavaPlugin { // Looks like you are using an unsupported Minecraft Version if (!compatibleVersion) { - System.err.println("### Slimefun failed to load!"); - System.err.println("###"); - System.err.println("### You are using the wrong Version of Minecraft!!!"); - System.err.println("###"); - System.err.println("### You are using Minecraft " + ReflectionUtils.getVersion()); - System.err.println("### but Slimefun v" + getDescription().getVersion() + " requires you to be using"); - System.err.println("### Minecraft " + versions.toString()); - System.err.println("###"); - System.err.println("### Please use an older Version of Slimefun and disable auto-updating"); - System.err.println("### or consider updating your Server Software."); + getLogger().log(Level.SEVERE, "### Slimefun was not installed correctly!"); + getLogger().log(Level.SEVERE, "###"); + getLogger().log(Level.SEVERE, "### You are using the wrong Version of Minecraft!"); + getLogger().log(Level.SEVERE, "###"); + getLogger().log(Level.SEVERE, "### You are using Minecraft " + ReflectionUtils.getVersion()); + getLogger().log(Level.SEVERE, "### but Slimefun v" + getDescription().getVersion() + " requires you to be using"); + getLogger().log(Level.SEVERE, "### Minecraft " + versions.toString()); + getLogger().log(Level.SEVERE, "###"); + getLogger().log(Level.SEVERE, "### Please use an older Version of Slimefun and disable auto-updating"); + getLogger().log(Level.SEVERE, "### or consider updating your Server Software."); getServer().getPluginManager().disablePlugin(this); return; } } instance = this; - System.out.println("[Slimefun] Loading Files..."); + getLogger().log(Level.INFO, "Loading Files..."); Files files = new Files(); files.cleanup(); - System.out.println("[Slimefun] Loading Config..."); + getLogger().log(Level.INFO, "Loading Config..."); PluginUtils utils = new PluginUtils(this); utils.setupConfig(); @@ -181,7 +181,7 @@ public final class SlimefunPlugin extends JavaPlugin { for (String s : storage) createDir("data-storage/Slimefun/" + s); for (String s : general) createDir("plugins/Slimefun/" + s); - System.out.println("[Slimefun] Loading Items..."); + getLogger().log(Level.INFO, "Loading Items..."); MiscSetup.setupItemSettings(); try { @@ -189,18 +189,19 @@ public final class SlimefunPlugin extends JavaPlugin { } catch (Exception x) { getLogger().log(Level.SEVERE, "An Error occured while initializing SlimefunItems for Slimefun " + Slimefun.getVersion()); } + MiscSetup.loadDescriptions(); settings = new Settings(config); settings.researchesEnabled = getResearchCfg().getBoolean("enable-researching"); settings.smelteryFireBreakChance = (Integer) Slimefun.getItemValue("SMELTERY", "chance.fireBreak"); - System.out.println("[Slimefun] Loading Researches..."); + getLogger().log(Level.INFO, "Loading Researches..."); ResearchSetup.setupResearches(); MiscSetup.setupMisc(); - System.out.println("[Slimefun] Loading World Generators..."); + getLogger().log(Level.INFO, "Loading World Generators..."); // Generating Oil as an OreGenResource (its a cool API) OreGenSystem.registerResource(new OilResource()); @@ -310,7 +311,7 @@ public final class SlimefunPlugin extends JavaPlugin { getServer().getScheduler().runTaskTimerAsynchronously(this, () -> utilities.connectors.forEach(GitHubConnector::pullFile), 80L, 60 * 60 * 20L); // Hooray! - System.out.println("[Slimefun] Finished!"); + getLogger().log(Level.INFO, "Finished!"); hooks = new SlimefunHooks(this); OreWasher.items = new ItemStack[] {SlimefunItems.IRON_DUST, SlimefunItems.GOLD_DUST, SlimefunItems.ALUMINUM_DUST, SlimefunItems.COPPER_DUST, SlimefunItems.ZINC_DUST, SlimefunItems.TIN_DUST, SlimefunItems.LEAD_DUST, SlimefunItems.SILVER_DUST, SlimefunItems.MAGNESIUM_DUST}; diff --git a/src/me/mrCookieSlime/Slimefun/api/BlockStorage.java b/src/me/mrCookieSlime/Slimefun/api/BlockStorage.java index 3f3b34873..89c6d162e 100644 --- a/src/me/mrCookieSlime/Slimefun/api/BlockStorage.java +++ b/src/me/mrCookieSlime/Slimefun/api/BlockStorage.java @@ -81,8 +81,9 @@ public class BlockStorage { public BlockStorage(final World w) { if (SlimefunPlugin.getUtilities().worlds.containsKey(w.getName())) return; this.world = w; - System.out.println("[Slimefun] Loading Blocks for World \"" + w.getName() + "\""); - System.out.println("[Slimefun] This may take a long time..."); + + Slimefun.getLogger().log(Level.INFO, "Loading Blocks for World \"" + w.getName() + "\""); + Slimefun.getLogger().log(Level.INFO, "This may take a long time..."); File f = new File(path_blocks + w.getName()); if (f.exists()) { @@ -95,13 +96,14 @@ public class BlockStorage { try { for (File file: f.listFiles()) { if (file.getName().equals("null.sfb")) { - System.err.println("[Slimefun] Corrupted file detected!"); - System.err.println("[Slimefun] Slimefun will simply skip this File, but you"); - System.err.println("[Slimefun] should probably look into it!"); + Slimefun.getLogger().log(Level.WARNING, "Corrupted file detected!"); + Slimefun.getLogger().log(Level.WARNING, "Slimefun will simply skip this File, but you"); + Slimefun.getLogger().log(Level.WARNING, "should maybe look into it!"); + Slimefun.getLogger().log(Level.WARNING, file.getPath()); } else if (file.getName().endsWith(".sfb")) { if (timestamp + SlimefunPlugin.getSettings().blocksInfoLoadingDelay < System.currentTimeMillis()) { - System.out.println("[Slimefun] Loading Blocks... " + Math.round((((done * 100.0F) / total) * 100.0F) / 100.0F) + "% done (\"" + w.getName() + "\")"); + Slimefun.getLogger().log(Level.INFO, "Loading Blocks... " + Math.round((((done * 100.0F) / total) * 100.0F) / 100.0F) + "% done (\"" + w.getName() + "\")"); timestamp = System.currentTimeMillis(); } @@ -118,9 +120,9 @@ public class BlockStorage { // It should not be possible to have two blocks on the same location. Ignore the // new entry if a block is already present and print an error to the console. - System.out.println("[Slimefun] Ignoring duplicate block @ " + l.getBlockX() + ", " + l.getBlockY() + ", " + l.getBlockZ()); - System.out.println("[Slimefun] Old block data: " + serializeBlockInfo(storage.get(l))); - System.out.println("[Slimefun] New block data (" + key + "): " + json); + Slimefun.getLogger().log(Level.INFO, "Ignoring duplicate block @ " + l.getBlockX() + ", " + l.getBlockY() + ", " + l.getBlockZ()); + Slimefun.getLogger().log(Level.INFO, "Old block data: " + serializeBlockInfo(storage.get(l))); + Slimefun.getLogger().log(Level.INFO, "New block data (" + key + "): " + json); continue; } storage.put(l, blockInfo); @@ -129,7 +131,10 @@ public class BlockStorage { Set locations = SlimefunPlugin.getUtilities().tickingChunks.getOrDefault(chunkString, new HashSet<>()); locations.add(l); SlimefunPlugin.getUtilities().tickingChunks.put(chunkString, locations); - if (!SlimefunPlugin.getUtilities().loadedTickers.contains(chunkString)) SlimefunPlugin.getUtilities().loadedTickers.add(chunkString); + + if (!SlimefunPlugin.getUtilities().loadedTickers.contains(chunkString)) { + SlimefunPlugin.getUtilities().loadedTickers.add(chunkString); + } } } catch (Exception x) { Slimefun.getLogger().log(Level.WARNING, "Failed to load " + file.getName() + "(" + key + ") for Slimefun " + Slimefun.getVersion(), x); @@ -140,8 +145,8 @@ public class BlockStorage { } } finally { long time = (System.currentTimeMillis() - start); - System.out.println("[Slimefun] Loading Blocks... 100% (FINISHED - " + time + "ms)"); - System.out.println("[Slimefun] Loaded a total of " + totalBlocks + " Blocks for World \"" + world.getName() + "\""); + Slimefun.getLogger().log(Level.INFO, "Loading Blocks... 100% (FINISHED - " + time + "ms)"); + Slimefun.getLogger().log(Level.INFO, "Loaded a total of " + totalBlocks + " Blocks for World \"" + world.getName() + "\""); if (totalBlocks > 0) System.out.println("[Slimefun] Avg: " + DoubleHandler.fixDouble((double) time / (double) totalBlocks, 3) + "ms/Block"); } } @@ -165,6 +170,7 @@ public class BlockStorage { if (file.getName().startsWith(w.getName()) && file.getName().endsWith(".sfi")) { Location l = deserializeLocation(file.getName().replace(".sfi", "")); Config cfg = new Config(file); + try { BlockMenuPreset preset = BlockMenuPreset.getPreset(cfg.getString("preset")); if (preset == null) { @@ -222,7 +228,7 @@ public class BlockStorage { if (computeChanges) computeChanges(); if (changes == 0) return; - System.out.println("[Slimefun] Saving Blocks for World \"" + world.getName() + "\" (" + changes + " Change(s) queued)"); + Slimefun.getLogger().log(Level.INFO, "Saving Blocks for World \"" + world.getName() + "\" (" + changes + " Change(s) queued)"); Map cache = new HashMap<>(cache_blocks); diff --git a/src/me/mrCookieSlime/Slimefun/api/ErrorReport.java b/src/me/mrCookieSlime/Slimefun/api/ErrorReport.java index 6ae1168c8..3b418eb99 100644 --- a/src/me/mrCookieSlime/Slimefun/api/ErrorReport.java +++ b/src/me/mrCookieSlime/Slimefun/api/ErrorReport.java @@ -82,6 +82,7 @@ public class ErrorReport { stream.println(); throwable.printStackTrace(stream); + Slimefun.getLogger().log(Level.WARNING, ""); Slimefun.getLogger().log(Level.WARNING, "An Error occured! It has been saved as: "); Slimefun.getLogger().log(Level.WARNING, "/plugins/Slimefun/error-reports/" + file.getName()); Slimefun.getLogger().log(Level.WARNING, "Please consider sending this File to the developer(s) of Slimefun, this message does not have to be included."); diff --git a/src/me/mrCookieSlime/Slimefun/api/TickerTask.java b/src/me/mrCookieSlime/Slimefun/api/TickerTask.java index d39dd41a0..725bccac2 100644 --- a/src/me/mrCookieSlime/Slimefun/api/TickerTask.java +++ b/src/me/mrCookieSlime/Slimefun/api/TickerTask.java @@ -108,16 +108,13 @@ public class TickerTask implements Runnable { // Generate a new Error-Report new ErrorReport(x, this, l, item); - System.err.println("[Slimefun] Exception caught while ticking a Block:" + x.getClass().getName()); - System.err.println("[Slimefun] X: " + l.getBlockX() + " Y: " + l.getBlockY() + " Z: " + l.getBlockZ()); - buggedBlocks.put(l, errors); } else if (errors == 4) { - System.err.println("[Slimefun] X: " + l.getBlockX() + " Y: " + l.getBlockY() + " Z: " + l.getBlockZ() + "(" + item.getID() + ")"); - System.err.println("[Slimefun] has thrown 4 Exceptions in the last 4 Ticks, the Block has been terminated."); - System.err.println("[Slimefun] Check your /plugins/Slimefun/error-reports/ folder for details."); - System.err.println("[Slimefun] "); + Slimefun.getLogger().log(Level.SEVERE, "X: " + l.getBlockX() + " Y: " + l.getBlockY() + " Z: " + l.getBlockZ() + "(" + item.getID() + ")"); + Slimefun.getLogger().log(Level.SEVERE, "has thrown 4 Exceptions in the last 4 Ticks, the Block has been terminated."); + Slimefun.getLogger().log(Level.SEVERE, "Check your /plugins/Slimefun/error-reports/ folder for details."); + Slimefun.getLogger().log(Level.SEVERE, " "); BlockStorage._integrated_removeBlockInfo(l, true); @@ -149,17 +146,13 @@ public class TickerTask implements Runnable { if (errors == 1) { // Generate a new Error-Report new ErrorReport(x, this, l, item); - - System.err.println("[Slimefun] Exception caught while ticking a Block:" + x.getClass().getName()); - System.err.println("[Slimefun] X: " + l.getBlockX() + " Y: " + l.getBlockY() + " Z: " + l.getBlockZ()); - buggedBlocks.put(l, errors); } else if (errors == 4) { - System.err.println("[Slimefun] X: " + l.getBlockX() + " Y: " + l.getBlockY() + " Z: " + l.getBlockZ() + "(" + item.getID() + ")"); - System.err.println("[Slimefun] has thrown 4 Exceptions in the last 4 Ticks, the Block has been terminated."); - System.err.println("[Slimefun] Check your /plugins/Slimefun/error-reports/ folder for details."); - System.err.println("[Slimefun] "); + Slimefun.getLogger().log(Level.SEVERE, "X: " + l.getBlockX() + " Y: " + l.getBlockY() + " Z: " + l.getBlockZ() + "(" + item.getID() + ")"); + Slimefun.getLogger().log(Level.SEVERE, "has thrown 4 Exceptions in the last 4 Ticks, the Block has been terminated."); + Slimefun.getLogger().log(Level.SEVERE, "Check your /plugins/Slimefun/error-reports/ folder for details."); + Slimefun.getLogger().log(Level.SEVERE, " "); BlockStorage._integrated_removeBlockInfo(l, true); diff --git a/src/me/mrCookieSlime/Slimefun/autosave/BlockAutoSaver.java b/src/me/mrCookieSlime/Slimefun/autosave/BlockAutoSaver.java index 74cc141a5..e46224fe4 100644 --- a/src/me/mrCookieSlime/Slimefun/autosave/BlockAutoSaver.java +++ b/src/me/mrCookieSlime/Slimefun/autosave/BlockAutoSaver.java @@ -2,12 +2,14 @@ package me.mrCookieSlime.Slimefun.autosave; import java.util.HashSet; import java.util.Set; +import java.util.logging.Level; import org.bukkit.Bukkit; import org.bukkit.World; import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.api.BlockStorage; +import me.mrCookieSlime.Slimefun.api.Slimefun; public class BlockAutoSaver implements Runnable { @@ -27,7 +29,7 @@ public class BlockAutoSaver implements Runnable { } if (!worlds.isEmpty()) { - System.out.println("[Slimefun] Auto-Saving Block Data... (Next Auto-Save: " + SlimefunPlugin.getCfg().getInt("options.auto-save-delay-in-minutes") + "m)"); + Slimefun.getLogger().log(Level.INFO, "Auto-Saving Block Data... (Next Auto-Save: " + SlimefunPlugin.getCfg().getInt("options.auto-save-delay-in-minutes") + "m)"); for (BlockStorage storage: worlds) { storage.save(false); diff --git a/src/me/mrCookieSlime/Slimefun/autosave/PlayerAutoSaver.java b/src/me/mrCookieSlime/Slimefun/autosave/PlayerAutoSaver.java index 3ccc999e6..bd359328b 100644 --- a/src/me/mrCookieSlime/Slimefun/autosave/PlayerAutoSaver.java +++ b/src/me/mrCookieSlime/Slimefun/autosave/PlayerAutoSaver.java @@ -1,8 +1,10 @@ package me.mrCookieSlime.Slimefun.autosave; import java.util.Iterator; +import java.util.logging.Level; import me.mrCookieSlime.Slimefun.api.PlayerProfile; +import me.mrCookieSlime.Slimefun.api.Slimefun; public class PlayerAutoSaver implements Runnable { @@ -23,7 +25,7 @@ public class PlayerAutoSaver implements Runnable { } if (players > 0) { - System.out.println("[Slimefun] Auto-Saved Player Data for " + players + " Player(s)!"); + Slimefun.getLogger().log(Level.INFO, "Auto-Saved Player Data for " + players + " Player(s)!"); } } diff --git a/src/me/mrCookieSlime/Slimefun/hooks/SlimefunHooks.java b/src/me/mrCookieSlime/Slimefun/hooks/SlimefunHooks.java index a2c3061f1..0f074b8ba 100644 --- a/src/me/mrCookieSlime/Slimefun/hooks/SlimefunHooks.java +++ b/src/me/mrCookieSlime/Slimefun/hooks/SlimefunHooks.java @@ -1,11 +1,16 @@ package me.mrCookieSlime.Slimefun.hooks; +import java.util.logging.Level; + import me.mrCookieSlime.Slimefun.SlimefunPlugin; +import me.mrCookieSlime.Slimefun.api.Slimefun; import net.coreprotect.CoreProtect; import net.coreprotect.CoreProtectAPI; public final class SlimefunHooks { + private SlimefunPlugin plugin; + private boolean exoticGarden = false; private boolean emeraldEnchants = false; private boolean coreProtect = false; @@ -16,39 +21,55 @@ public final class SlimefunHooks { private CoreProtectAPI coreProtectAPI; public SlimefunHooks(SlimefunPlugin plugin) { - if (plugin.getServer().getPluginManager().isPluginEnabled("PlaceholderAPI")) { + this.plugin = plugin; + + if (isPluginInstalled("PlaceholderAPI")) { placeHolderAPI = true; new PlaceholderAPIHook().register(); } + /* + * These Items are not marked as soft-dependencies and + * therefore need to be loaded after the Server has finished + * loading all plugins + */ plugin.getServer().getScheduler().scheduleSyncDelayedTask(plugin, () -> { - if (plugin.getServer().getPluginManager().isPluginEnabled("ClearLag")) { + if (isPluginInstalled("ClearLag")) { clearLag = true; new ClearLagHook(plugin); } - exoticGarden = plugin.getServer().getPluginManager().isPluginEnabled("ExoticGarden"); // Had to do it this way, otherwise it seems disabled. - emeraldEnchants = plugin.getServer().getPluginManager().isPluginEnabled("EmeraldEnchants"); + exoticGarden = isPluginInstalled("ExoticGarden"); + emeraldEnchants = isPluginInstalled("EmeraldEnchants"); - if (plugin.getServer().getPluginManager().isPluginEnabled("CoreProtect")) { + if (isPluginInstalled("CoreProtect")) { coreProtectAPI = ((CoreProtect) plugin.getServer().getPluginManager().getPlugin("CoreProtect")).getAPI(); } // WorldEdit Hook to clear Slimefun Data upon //set 0 //cut or any other equivalent - if (plugin.getServer().getPluginManager().isPluginEnabled("WorldEdit")) { + if (isPluginInstalled("WorldEdit")) { try { Class.forName("com.sk89q.worldedit.extent.Extent"); worldEdit = true; new WorldEditHook(); - System.out.println("[Slimefun] Successfully hooked into WorldEdit!"); } catch (Exception x) { - System.err.println("[Slimefun] Failed to hook into WorldEdit!"); - System.err.println("[Slimefun] Maybe consider updating WorldEdit or Slimefun?"); + Slimefun.getLogger().log(Level.WARNING, "Failed to hook into WorldEdit!"); + Slimefun.getLogger().log(Level.WARNING, "Maybe consider updating WorldEdit or Slimefun?"); } } }); } + private boolean isPluginInstalled(String hook) { + if (plugin.getServer().getPluginManager().isPluginEnabled(hook)) { + Slimefun.getLogger().log(Level.INFO, "Hooked into Plugin: " + hook); + return true; + } + else { + return false; + } + } + public boolean isExoticGardenInstalled() { return exoticGarden; } diff --git a/src/me/mrCookieSlime/Slimefun/hooks/github/GitHubConnector.java b/src/me/mrCookieSlime/Slimefun/hooks/github/GitHubConnector.java index 65644443a..98924dd27 100644 --- a/src/me/mrCookieSlime/Slimefun/hooks/github/GitHubConnector.java +++ b/src/me/mrCookieSlime/Slimefun/hooks/github/GitHubConnector.java @@ -33,8 +33,10 @@ public abstract class GitHubConnector { public abstract void onFailure(); public void pullFile() { - if (SlimefunPlugin.getCfg().getBoolean("options.print-out-github-data-retrieving")) System.out.println("[Slimefun - GitHub] Retrieving '" + this.getFileName() + ".json' from GitHub..."); - + if (SlimefunPlugin.getCfg().getBoolean("options.print-out-github-data-retrieving")) { + Slimefun.getLogger().log(Level.INFO, "Retrieving '" + this.getFileName() + ".json' from GitHub..."); + } + try { URL website = new URL("https://api.github.com/repos/" + this.getRepository() + this.getURLSuffix()); @@ -50,7 +52,9 @@ public abstract class GitHubConnector { } } } catch (IOException e) { - if (SlimefunPlugin.getCfg().getBoolean("options.print-out-github-data-retrieving")) System.err.println("[Slimefun - GitHub] ERROR - Could not connect to GitHub in time."); + if (SlimefunPlugin.getCfg().getBoolean("options.print-out-github-data-retrieving")) { + Slimefun.getLogger().log(Level.WARNING, "Could not connect to GitHub in time."); + } if (hasData()) { this.parseData(); diff --git a/src/me/mrCookieSlime/Slimefun/listeners/WorldListener.java b/src/me/mrCookieSlime/Slimefun/listeners/WorldListener.java index db83ad717..4b2cc295c 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/WorldListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/WorldListener.java @@ -1,5 +1,7 @@ package me.mrCookieSlime.Slimefun.listeners; +import java.util.logging.Level; + import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.world.WorldLoadEvent; @@ -7,6 +9,7 @@ import org.bukkit.event.world.WorldUnloadEvent; import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.api.BlockStorage; +import me.mrCookieSlime.Slimefun.api.Slimefun; public class WorldListener implements Listener { @@ -26,8 +29,12 @@ public class WorldListener implements Listener { @EventHandler public void onWorldUnload(WorldUnloadEvent e) { BlockStorage storage = BlockStorage.getStorage(e.getWorld()); - if (storage != null) storage.save(true); - else System.err.println("[Slimefun] Could not save Slimefun Blocks for World \"" + e.getWorld().getName() + "\""); + if (storage != null) { + storage.save(true); + } + else { + Slimefun.getLogger().log(Level.SEVERE, "Could not save Slimefun Blocks for World \"" + e.getWorld().getName() + "\""); + } } } diff --git a/src/me/mrCookieSlime/Slimefun/utils/Settings.java b/src/me/mrCookieSlime/Slimefun/utils/Settings.java index c35bdad27..07246ffcf 100644 --- a/src/me/mrCookieSlime/Slimefun/utils/Settings.java +++ b/src/me/mrCookieSlime/Slimefun/utils/Settings.java @@ -6,6 +6,8 @@ import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config; public final class Settings { + public boolean printOutLoading; + public boolean researchesEnabled; public boolean researchesFreeInCreative; public List researchesTitles; @@ -24,6 +26,8 @@ public final class Settings { public int smelteryFireBreakChance; public Settings(Config cfg) { + printOutLoading = cfg.getBoolean("options.print-out-loading"); + researchesFreeInCreative = cfg.getBoolean("options.allow-free-creative-research"); researchesTitles = cfg.getStringList("research-ranks"); From 08cdd595ba6eff99a946e968458ac35e83b188f9 Mon Sep 17 00:00:00 2001 From: Sfiguz7 Date: Sat, 31 Aug 2019 19:45:39 +0200 Subject: [PATCH 100/169] Removed unnecessary array creations --- src/me/mrCookieSlime/Slimefun/Setup/Messages.java | 2 +- .../Slimefun/Setup/SlimefunSetup.java | 14 +++++++------- src/me/mrCookieSlime/Slimefun/SlimefunGuide.java | 2 +- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/Setup/Messages.java b/src/me/mrCookieSlime/Slimefun/Setup/Messages.java index 55e1ff22b..a38c24d62 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/Messages.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/Messages.java @@ -13,7 +13,7 @@ public final class Messages { local.setDefault("messages.not-researched", "&4You do not have enough Knowledge to understand this"); local.setDefault("messages.not-enough-xp", "&4You do not have enough XP to unlock this"); local.setDefault("messages.unlocked", "&bYou have unlocked &7\"%research%\""); - local.setDefault("messages.fortune-cookie", new String[] {"&7Help me, I am trapped in a Fortune Cookie Factory!", "&7You will die tomorrow... by a Creeper", "&7At some Point in your Life something bad will happen!!!", "&7Next week you will notice that this is not the real World, you are in a kind of \"Matrix\" or lets call it Computer game. Yes you are in a Computer Game", "&7This Cookie will taste good in a few seconds", "&7You will die soon and the last word you will hear is gonna be \"EXTERMINATE!!!\"", "&7Whatever you do, do not hug a Creeper... I tried it. It feels good, but it's not worth it."}); + local.setDefault("messages.fortune-cookie", "&7Help me, I am trapped in a Fortune Cookie Factory!", "&7You will die tomorrow... by a Creeper", "&7At some Point in your Life something bad will happen!!!", "&7Next week you will notice that this is not the real World, you are in a kind of \"Matrix\" or lets call it Computer game. Yes you are in a Computer Game", "&7This Cookie will taste good in a few seconds", "&7You will die soon and the last word you will hear is gonna be \"EXTERMINATE!!!\"", "&7Whatever you do, do not hug a Creeper... I tried it. It feels good, but it's not worth it."); local.setDefault("commands.help", "Displays this Help Screen"); local.setDefault("commands.cheat", "Allows you to cheat Items"); local.setDefault("commands.give", "Give somebody some Slimefun Items"); diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java index 5fd593e3b..9eec2748d 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java @@ -901,17 +901,17 @@ public final class SlimefunSetup { new Talisman(SlimefunItems.TALISMAN_ANVIL, "ANVIL_TALISMAN", new ItemStack[] {SlimefunItems.MAGIC_LUMP_3, null, SlimefunItems.MAGIC_LUMP_3, new ItemStack(Material.ANVIL), SlimefunItems.TALISMAN, new ItemStack(Material.ANVIL), SlimefunItems.MAGIC_LUMP_3, null, SlimefunItems.MAGIC_LUMP_3}, - true, false, "anvil", new PotionEffect[0]) + true, false, "anvil") .register(true); new Talisman(SlimefunItems.TALISMAN_MINER, "MINER_TALISMAN", new ItemStack[] {SlimefunItems.MAGIC_LUMP_3, null, SlimefunItems.MAGIC_LUMP_3, SlimefunItems.SYNTHETIC_SAPPHIRE, SlimefunItems.TALISMAN, SlimefunItems.SIFTED_ORE, SlimefunItems.MAGIC_LUMP_3, null, SlimefunItems.MAGIC_LUMP_3}, - false, false, "miner", 20, new PotionEffect[0]) + false, false, "miner", 20) .register(true); new Talisman(SlimefunItems.TALISMAN_HUNTER, "HUNTER_TALISMAN", new ItemStack[] {SlimefunItems.MAGIC_LUMP_3, null, SlimefunItems.MAGIC_LUMP_3, SlimefunItems.SYNTHETIC_SAPPHIRE, SlimefunItems.TALISMAN, SlimefunItems.MONSTER_JERKY, SlimefunItems.MAGIC_LUMP_3, null, SlimefunItems.MAGIC_LUMP_3}, - false, false, "hunter", 20, new PotionEffect[0]) + false, false, "hunter", 20) .register(true); new Talisman(SlimefunItems.TALISMAN_LAVA, "LAVA_TALISMAN", @@ -926,7 +926,7 @@ public final class SlimefunSetup { new Talisman(SlimefunItems.TALISMAN_ANGEL, "ANGEL_TALISMAN", new ItemStack[] {SlimefunItems.MAGIC_LUMP_3, null, SlimefunItems.MAGIC_LUMP_3, new ItemStack(Material.FEATHER), SlimefunItems.TALISMAN, new ItemStack(Material.FEATHER), SlimefunItems.MAGIC_LUMP_3, null, SlimefunItems.MAGIC_LUMP_3}, - false, true, "angel", 75, new PotionEffect[0]) + false, true, "angel", 75) .register(true); new Talisman(SlimefunItems.TALISMAN_FIRE, "FIRE_TALISMAN", @@ -936,7 +936,7 @@ public final class SlimefunSetup { new Talisman(SlimefunItems.TALISMAN_MAGICIAN, "MAGICIAN_TALISMAN", new ItemStack[] {SlimefunItems.ENDER_LUMP_3, null, SlimefunItems.ENDER_LUMP_3, new ItemStack(Material.ENCHANTING_TABLE), SlimefunItems.TALISMAN, new ItemStack(Material.ENCHANTING_TABLE), SlimefunItems.ENDER_LUMP_3, null, SlimefunItems.ENDER_LUMP_3}, - false, false, "magician", 80, new PotionEffect[0]) + false, false, "magician", 80) .register(true); new Talisman(SlimefunItems.TALISMAN_TRAVELLER, "TRAVELLER_TALISMAN", @@ -966,12 +966,12 @@ public final class SlimefunSetup { new Talisman(SlimefunItems.TALISMAN_WHIRLWIND, "WHIRLWIND_TALISMAN", new ItemStack[] {SlimefunItems.MAGIC_LUMP_3, null, SlimefunItems.MAGIC_LUMP_3, SlimefunItems.STAFF_WIND, SlimefunItems.TALISMAN_TRAVELLER, SlimefunItems.STAFF_WIND, SlimefunItems.MAGIC_LUMP_3, null, SlimefunItems.MAGIC_LUMP_3} - , false, true, "whirlwind", 60, new PotionEffect[0]) + , false, true, "whirlwind", 60) .register(true); new Talisman(SlimefunItems.TALISMAN_WIZARD, "WIZARD_TALISMAN", new ItemStack[] {SlimefunItems.ENDER_LUMP_3, null, SlimefunItems.ENDER_LUMP_3, SlimefunItems.MAGIC_EYE_OF_ENDER, SlimefunItems.TALISMAN_MAGICIAN, SlimefunItems.MAGIC_EYE_OF_ENDER, SlimefunItems.ENDER_LUMP_3, null, SlimefunItems.ENDER_LUMP_3}, - false, false, "wizard", 60, new PotionEffect[0]) + false, false, "wizard", 60) .register(true); new ExcludedTool(Categories.TOOLS, SlimefunItems.LUMBER_AXE, "LUMBER_AXE", RecipeType.MAGIC_WORKBENCH, diff --git a/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java b/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java index f3e6718bd..dd190976a 100644 --- a/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java +++ b/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java @@ -716,7 +716,7 @@ public final class SlimefunGuide { index++; } else { - menu.addItem(index, new CustomItem(Material.BARRIER, StringUtils.formatItemName(sfitem.getItem(), false), new String[] {"", "&rYou do not have Permission", "&rto access this Item"})); + menu.addItem(index, new CustomItem(Material.BARRIER, StringUtils.formatItemName(sfitem.getItem(), false), "", "&rYou do not have Permission", "&rto access this Item")); menu.addMenuClickHandler(index, (pl, slot, item, action) -> false); index++; } From 10f3dae5505c5a08eb0ed68806372cbf355d1692 Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Sat, 31 Aug 2019 20:09:25 +0200 Subject: [PATCH 101/169] Fixed Color Character in Elevator Floor names --- src/me/mrCookieSlime/Slimefun/GPS/Elevator.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/me/mrCookieSlime/Slimefun/GPS/Elevator.java b/src/me/mrCookieSlime/Slimefun/GPS/Elevator.java index 7f3c67601..88ecba204 100644 --- a/src/me/mrCookieSlime/Slimefun/GPS/Elevator.java +++ b/src/me/mrCookieSlime/Slimefun/GPS/Elevator.java @@ -35,7 +35,7 @@ public final class Elevator { pl.sendMessage(""); MenuHelper.awaitChatInput(pl, (player, message) -> { - BlockStorage.addBlockInfo(b, "floor", message.replaceAll("&", "&")); + BlockStorage.addBlockInfo(b, "floor", message.replace(ChatColor.COLOR_CHAR, '&')); player.sendMessage(""); player.sendMessage(ChatColor.translateAlternateColorCodes('&', "&4&l>> &eSuccessfully named this Floor:")); From 6c4de353275e1bdf4dece17f7a33221dd54e6802 Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Sat, 31 Aug 2019 20:27:59 +0200 Subject: [PATCH 102/169] Reduced Code Smells --- .../Objects/SlimefunItem/SlimefunItem.java | 4 +- .../SlimefunItem/abstractItems/ADrill.java | 5 --- .../SlimefunItem/abstractItems/AFarm.java | 11 +---- .../abstractItems/AGenerator.java | 4 -- .../SlimefunItem/abstractItems/AReactor.java | 45 +++++++++---------- .../abstractItems/MachineHelper.java | 4 +- .../Slimefun/Setup/SlimefunSetup.java | 13 +++--- .../ancient_altar/AncientAltarListener.java | 4 +- .../Slimefun/api/SlimefunBackup.java | 4 +- .../Slimefun/api/SlimefunRecipes.java | 4 +- .../Slimefun/api/TickerTask.java | 8 +--- .../Slimefun/api/energy/ItemEnergy.java | 6 ++- .../api/inventory/BlockMenuPreset.java | 4 +- .../api/item_transport/CargoManager.java | 4 +- .../holograms/InfusedHopperHologram.java | 4 +- .../Slimefun/hooks/github/GitHubSetup.java | 2 + .../Slimefun/listeners/TalismanListener.java | 4 +- 17 files changed, 57 insertions(+), 73 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java index f392ee726..c3dc11e02 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java @@ -260,7 +260,7 @@ public class SlimefunItem { } if (SlimefunPlugin.getSettings().printOutLoading) { - Slimefun.getLogger().log(Level.INFO, "Loaded Item \"" + this.id + "\""); + Slimefun.getLogger().log(Level.INFO, "Loaded Item \"{0}\"", this.id); } } else { @@ -465,7 +465,7 @@ public class SlimefunItem { public static void patchExistingItem(String id, ItemStack stack) { SlimefunItem item = getByID(id); if (item != null) { - Slimefun.getLogger().log(Level.INFO, "WARNING - Patching existing Item - " + id); + Slimefun.getLogger().log(Level.INFO, "Patching existing Item... {0}", id); Slimefun.getLogger().log(Level.INFO, "This might take a while"); final ItemStack old = item.getItem(); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/ADrill.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/ADrill.java index 83cc07a95..8baa89503 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/ADrill.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/ADrill.java @@ -21,7 +21,6 @@ import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Setup.Messages; import me.mrCookieSlime.Slimefun.api.BlockStorage; import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock; -import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset; import me.mrCookieSlime.Slimefun.api.item_transport.ItemTransportFlow; @@ -77,10 +76,6 @@ public abstract class ADrill extends AContainer { } } - @Override - public void newInstance(BlockMenu menu, Block b) { - } - @Override public boolean canOpen(Block b, Player p) { if (!(p.hasPermission("slimefun.inventory.bypass") || CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true))) { diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AFarm.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AFarm.java index 4dd76c95a..07452a502 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AFarm.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AFarm.java @@ -41,11 +41,6 @@ public abstract class AFarm extends SlimefunItem { constructMenu(this); } - @Override - public void newInstance(BlockMenu menu, Block b) { - - } - @Override public boolean canOpen(Block b, Player p) { return p.hasPermission("slimefun.inventory.bypass") || CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true); @@ -85,11 +80,7 @@ public abstract class AFarm extends SlimefunItem { public void init() { constructMenu(this); } - - @Override - public void newInstance(BlockMenu menu, Block b) { - } - + @Override public boolean canOpen(Block b, Player p) { return p.hasPermission("slimefun.inventory.bypass") || CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AGenerator.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AGenerator.java index 422d4531a..997448955 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AGenerator.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AGenerator.java @@ -59,10 +59,6 @@ public abstract class AGenerator extends SlimefunItem { constructMenu(this); } - @Override - public void newInstance(BlockMenu menu, Block b) { - } - @Override public boolean canOpen(Block b, Player p) { return p.hasPermission("slimefun.inventory.bypass") || CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AReactor.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AReactor.java index 2e5ec43d9..710bb50d2 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AReactor.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AReactor.java @@ -8,6 +8,7 @@ import java.util.Map; import java.util.Optional; import java.util.Random; import java.util.Set; +import java.util.logging.Level; import org.bukkit.Bukkit; import org.bukkit.Location; @@ -34,6 +35,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.ReactorAccessPort; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.api.BlockStorage; +import me.mrCookieSlime.Slimefun.api.Slimefun; import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock; import me.mrCookieSlime.Slimefun.api.energy.EnergyTicker; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu; @@ -83,6 +85,7 @@ public abstract class AReactor extends SlimefunItem { if (BlockStorage.getLocationInfo(b.getLocation(), "reactor-mode") == null){ BlockStorage.addBlockInfo(b, "reactor-mode", "generator"); } + if (!BlockStorage.hasBlockInfo(b) || BlockStorage.getLocationInfo(b.getLocation(), "reactor-mode").equals("generator")) { menu.replaceExistingItem(4, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTM0M2NlNThkYTU0Yzc5OTI0YTJjOTMzMWNmYzQxN2ZlOGNjYmJlYTliZTQ1YTdhYzg1ODYwYTZjNzMwIn19fQ=="), "&7Focus: &eElectricity", "", "&6Your Reactor will focus on Power Generation", "&6If your Energy Network doesn't need Power", "&6it will not produce any either", "", "&7> Click to change the Focus to &eProduction")); menu.addMenuClickHandler(4, (p, slot, item, action) -> { @@ -99,16 +102,18 @@ public abstract class AReactor extends SlimefunItem { return false; }); } - BlockMenu ap = getAccessPort(b.getLocation()); - if(ap != null) { + + BlockMenu port = getAccessPort(b.getLocation()); + if (port != null) { menu.replaceExistingItem(infoSlot, new CustomItem(new ItemStack(Material.GREEN_WOOL), "&7Access Port", "", "&6Detected", "", "&7> Click to view Access Port")); menu.addMenuClickHandler(infoSlot, (p, slot, item, action) -> { - ap.open(p); + port.open(p); newInstance(menu, b); return false; }); - } else { + } + else { menu.replaceExistingItem(infoSlot, new CustomItem(new ItemStack(Material.RED_WOOL), "&7Access Port", "", "&cNot detected", "", "&7Access Port must be", "&7placed 3 blocks above", "&7a reactor!")); menu.addMenuClickHandler(infoSlot, (p, slot, item, action) -> { newInstance(menu, b); @@ -118,6 +123,7 @@ public abstract class AReactor extends SlimefunItem { } } catch(Exception x) { + Slimefun.getLogger().log(Level.SEVERE, "An Error occured when creating a Reactor Menu for Slimefun " + Slimefun.getVersion(), x); } } @@ -145,12 +151,14 @@ public abstract class AReactor extends SlimefunItem { inv.replaceExistingItem(slot, null); } } + for (int slot : getCoolantSlots()) { if (inv.getItemInSlot(slot) != null) { b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot)); inv.replaceExistingItem(slot, null); } } + for (int slot : getOutputSlots()) { if (inv.getItemInSlot(slot) != null) { b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot)); @@ -158,6 +166,7 @@ public abstract class AReactor extends SlimefunItem { } } } + progress.remove(b.getLocation()); processing.remove(b.getLocation()); ReactorHologram.remove(b.getLocation()); @@ -170,35 +179,23 @@ public abstract class AReactor extends SlimefunItem { private void constructMenu(BlockMenuPreset preset) { for (int i : border) { - preset.addItem(i, new CustomItem(new ItemStack(Material.GRAY_STAINED_GLASS_PANE), " "), - (p, slot, item, action) -> false - ); + preset.addItem(i, new CustomItem(new ItemStack(Material.GRAY_STAINED_GLASS_PANE), " "), (p, slot, item, action) -> false); } for (int i : border_1) { - preset.addItem(i, new CustomItem(new ItemStack(Material.LIME_STAINED_GLASS_PANE), " "), - (p, slot, item, action) -> false - ); + preset.addItem(i, new CustomItem(new ItemStack(Material.LIME_STAINED_GLASS_PANE), " "), (p, slot, item, action) -> false); } for (int i : border_3) { - preset.addItem(i, new CustomItem(new ItemStack(Material.GREEN_STAINED_GLASS_PANE), " "), - (p, slot, item, action) -> false - ); + preset.addItem(i, new CustomItem(new ItemStack(Material.GREEN_STAINED_GLASS_PANE), " "), (p, slot, item, action) -> false); } - preset.addItem(22, new CustomItem(new ItemStack(Material.BLACK_STAINED_GLASS_PANE), " "), - (p, slot, item, action) -> false - ); + preset.addItem(22, new CustomItem(new ItemStack(Material.BLACK_STAINED_GLASS_PANE), " "), (p, slot, item, action) -> false); - preset.addItem(1, new CustomItem(SlimefunItems.URANIUM, "&7Fuel Slot", "", "&rThis Slot accepts radioactive Fuel such as:", "&2Uranium &ror &aNeptunium"), - (p, slot, item, action) -> false - ); + preset.addItem(1, new CustomItem(SlimefunItems.URANIUM, "&7Fuel Slot", "", "&rThis Slot accepts radioactive Fuel such as:", "&2Uranium &ror &aNeptunium"), (p, slot, item, action) -> false); for (int i : border_2) { - preset.addItem(i, new CustomItem(new ItemStack(Material.CYAN_STAINED_GLASS_PANE), " "), - (p, slot, item, action) -> false - ); + preset.addItem(i, new CustomItem(new ItemStack(Material.CYAN_STAINED_GLASS_PANE), " "), (p, slot, item, action) -> false); } if (needsCooling()) { @@ -208,9 +205,7 @@ public abstract class AReactor extends SlimefunItem { preset.addItem(7, new CustomItem(new ItemStack(Material.BARRIER), "&bCoolant Slot", "", "&rThis Slot accepts Coolant Cells")); for (int i : border_4) { - preset.addItem(i, new CustomItem(new ItemStack(Material.BARRIER), "&cNo Coolant Required"), - (p, slot, item, action) -> false - ); + preset.addItem(i, new CustomItem(new ItemStack(Material.BARRIER), "&cNo Coolant Required"), (p, slot, item, action) -> false); } } } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/MachineHelper.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/MachineHelper.java index ec8112ec7..c0d5bd31c 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/MachineHelper.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/MachineHelper.java @@ -3,7 +3,9 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems; import org.bukkit.ChatColor; import org.bukkit.inventory.ItemStack; -public class MachineHelper { +public final class MachineHelper { + + private MachineHelper() {} public static String getTimeLeft(int l) { String timeleft = ""; diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java index 5fd593e3b..d9fd2e9c5 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java @@ -6,6 +6,7 @@ import java.util.List; import java.util.Random; import java.util.Set; import java.util.UUID; +import java.util.logging.Level; import java.util.stream.Stream; import org.bukkit.Bukkit; @@ -3994,16 +3995,12 @@ public final class SlimefunSetup { return 250; } - @Override - public void extraTick(Location l) { - - } - @Override public ItemStack getProgressBar() { try { return CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYTNhZDhlZTg0OWVkZjA0ZWQ5YTI2Y2EzMzQxZjYwMzNiZDc2ZGNjNDIzMWVkMWVhNjNiNzU2NTc1MWIyN2FjIn19fQ=="); } catch (Exception e) { + Slimefun.getLogger().log(Level.SEVERE, "An Error occured while creating the Progressbar of a Reactor for Slimefun " + Slimefun.getVersion()); return new ItemStack(Material.BLAZE_POWDER); } } @@ -4012,6 +4009,12 @@ public final class SlimefunSetup { public ItemStack getCoolant() { return SlimefunItems.REACTOR_COOLANT_CELL; } + + @Override + public void extraTick(Location l) { + // This machine does not need to perform anything while ticking + // The Nether Star Reactor uses this method to generate the Wither Effect + } } .registerChargeableBlock(true, 16384); diff --git a/src/me/mrCookieSlime/Slimefun/ancient_altar/AncientAltarListener.java b/src/me/mrCookieSlime/Slimefun/ancient_altar/AncientAltarListener.java index b92a209ec..455fb8c41 100644 --- a/src/me/mrCookieSlime/Slimefun/ancient_altar/AncientAltarListener.java +++ b/src/me/mrCookieSlime/Slimefun/ancient_altar/AncientAltarListener.java @@ -73,9 +73,7 @@ public class AncientAltarListener implements Listener { final UUID uuid = stack.getUniqueId(); removedItems.add(uuid); - SlimefunPlugin.instance.getServer().getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> { - removedItems.remove(uuid); - }, 30L); + SlimefunPlugin.instance.getServer().getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> removedItems.remove(uuid), 30L); stack.remove(); e.getPlayer().getInventory().addItem(fixItemStack(stack.getItemStack(), stack.getCustomName())); diff --git a/src/me/mrCookieSlime/Slimefun/api/SlimefunBackup.java b/src/me/mrCookieSlime/Slimefun/api/SlimefunBackup.java index d618226f0..7193ba6d6 100644 --- a/src/me/mrCookieSlime/Slimefun/api/SlimefunBackup.java +++ b/src/me/mrCookieSlime/Slimefun/api/SlimefunBackup.java @@ -16,8 +16,10 @@ import java.util.zip.ZipOutputStream; import me.mrCookieSlime.CSCoreLibPlugin.general.Clock; -public class SlimefunBackup { +public final class SlimefunBackup { + private SlimefunBackup() {} + public static void start() { File folder = new File("data-storage/Slimefun/block-backups"); List backups = Arrays.asList(folder.listFiles()); diff --git a/src/me/mrCookieSlime/Slimefun/api/SlimefunRecipes.java b/src/me/mrCookieSlime/Slimefun/api/SlimefunRecipes.java index f2d9a056d..a14229ac2 100644 --- a/src/me/mrCookieSlime/Slimefun/api/SlimefunRecipes.java +++ b/src/me/mrCookieSlime/Slimefun/api/SlimefunRecipes.java @@ -5,8 +5,10 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer; import org.bukkit.inventory.ItemStack; -public class SlimefunRecipes { +public final class SlimefunRecipes { + private SlimefunRecipes() {} + public static void registerMachineRecipe(String machine, int seconds, ItemStack[] input, ItemStack[] output) { for (SlimefunItem item: SlimefunItem.all) { if (item instanceof AContainer && ((AContainer) item).getMachineIdentifier().equals(machine)) { diff --git a/src/me/mrCookieSlime/Slimefun/api/TickerTask.java b/src/me/mrCookieSlime/Slimefun/api/TickerTask.java index 725bccac2..92b46b256 100644 --- a/src/me/mrCookieSlime/Slimefun/api/TickerTask.java +++ b/src/me/mrCookieSlime/Slimefun/api/TickerTask.java @@ -118,9 +118,7 @@ public class TickerTask implements Runnable { BlockStorage._integrated_removeBlockInfo(l, true); - Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> { - l.getBlock().setType(Material.AIR); - }); + Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> l.getBlock().setType(Material.AIR)); } else { buggedBlocks.put(l, errors); @@ -156,9 +154,7 @@ public class TickerTask implements Runnable { BlockStorage._integrated_removeBlockInfo(l, true); - Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> { - l.getBlock().setType(Material.AIR); - }); + Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> l.getBlock().setType(Material.AIR)); } else { buggedBlocks.put(l, errors); diff --git a/src/me/mrCookieSlime/Slimefun/api/energy/ItemEnergy.java b/src/me/mrCookieSlime/Slimefun/api/energy/ItemEnergy.java index 55eceabc5..1cc902279 100644 --- a/src/me/mrCookieSlime/Slimefun/api/energy/ItemEnergy.java +++ b/src/me/mrCookieSlime/Slimefun/api/energy/ItemEnergy.java @@ -11,9 +11,11 @@ import org.bukkit.inventory.meta.ItemMeta; import me.mrCookieSlime.CSCoreLibPlugin.general.Player.PlayerInventory; -public class ItemEnergy { +public final class ItemEnergy { -// "&c&o&8\u21E8 &e\u26A1 &70 / 50 J" + private ItemEnergy() {} + + // "&c&o&8\u21E8 &e\u26A1 &70 / 50 J" public static float getStoredEnergy(ItemStack item) { if (item == null || item.getType() == null || item.getType() == Material.AIR) return 0F; diff --git a/src/me/mrCookieSlime/Slimefun/api/inventory/BlockMenuPreset.java b/src/me/mrCookieSlime/Slimefun/api/inventory/BlockMenuPreset.java index 74fada40a..0bbe6985a 100644 --- a/src/me/mrCookieSlime/Slimefun/api/inventory/BlockMenuPreset.java +++ b/src/me/mrCookieSlime/Slimefun/api/inventory/BlockMenuPreset.java @@ -161,9 +161,7 @@ public abstract class BlockMenuPreset extends ChestMenu { } public void newInstance(final BlockMenu menu, final Location l) { - Bukkit.getScheduler().runTask(SlimefunPlugin.instance, () -> { - newInstance(menu, l.getBlock()); - }); + Bukkit.getScheduler().runTask(SlimefunPlugin.instance, () -> newInstance(menu, l.getBlock())); } } diff --git a/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoManager.java b/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoManager.java index 90292c647..748fd3e08 100644 --- a/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoManager.java +++ b/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoManager.java @@ -15,7 +15,9 @@ import me.mrCookieSlime.Slimefun.api.BlockStorage; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu; import me.mrCookieSlime.Slimefun.api.inventory.UniversalBlockMenu; -public class CargoManager { +public final class CargoManager { + + private CargoManager() {} public static ItemStack withdraw(Block node, BlockStorage storage, Block target, ItemStack template) { if (storage.hasUniversalInventory(target)) { diff --git a/src/me/mrCookieSlime/Slimefun/holograms/InfusedHopperHologram.java b/src/me/mrCookieSlime/Slimefun/holograms/InfusedHopperHologram.java index 9594a8ec1..cf72d9769 100644 --- a/src/me/mrCookieSlime/Slimefun/holograms/InfusedHopperHologram.java +++ b/src/me/mrCookieSlime/Slimefun/holograms/InfusedHopperHologram.java @@ -7,7 +7,9 @@ import org.bukkit.entity.Entity; import me.mrCookieSlime.CSCoreLibPlugin.general.World.ArmorStandFactory; -public class InfusedHopperHologram { +public final class InfusedHopperHologram { + + private InfusedHopperHologram() {} private static final double offset = 1.2; diff --git a/src/me/mrCookieSlime/Slimefun/hooks/github/GitHubSetup.java b/src/me/mrCookieSlime/Slimefun/hooks/github/GitHubSetup.java index 4b5250629..23613a607 100644 --- a/src/me/mrCookieSlime/Slimefun/hooks/github/GitHubSetup.java +++ b/src/me/mrCookieSlime/Slimefun/hooks/github/GitHubSetup.java @@ -126,6 +126,7 @@ public final class GitHubSetup { @Override public void onFailure() { + // We don't have to do anything on failure } @Override @@ -154,6 +155,7 @@ public final class GitHubSetup { @Override public void onFailure() { + // We don't have to do anything on failure } @Override diff --git a/src/me/mrCookieSlime/Slimefun/listeners/TalismanListener.java b/src/me/mrCookieSlime/Slimefun/listeners/TalismanListener.java index c12e3a2f7..5e0b4ea45 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/TalismanListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/TalismanListener.java @@ -98,9 +98,7 @@ public class TalismanListener implements Listener { item.setItemMeta(meta); final int itemSlot = slot; - SlimefunPlugin.instance.getServer().getScheduler().runTaskLater(SlimefunPlugin.instance, () -> { - inv.setItem(itemSlot, item); - }, 1L); + SlimefunPlugin.instance.getServer().getScheduler().runTaskLater(SlimefunPlugin.instance, () -> inv.setItem(itemSlot, item), 1L); } } From 8be6f9cebb5a70f0753b4e7fe69846f106b9bfe8 Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Sat, 31 Aug 2019 20:34:10 +0200 Subject: [PATCH 103/169] Hotfix --- src/me/mrCookieSlime/Slimefun/SlimefunPlugin.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/SlimefunPlugin.java b/src/me/mrCookieSlime/Slimefun/SlimefunPlugin.java index 1b10949ae..6fa0972e6 100644 --- a/src/me/mrCookieSlime/Slimefun/SlimefunPlugin.java +++ b/src/me/mrCookieSlime/Slimefun/SlimefunPlugin.java @@ -144,17 +144,19 @@ public final class SlimefunPlugin extends JavaPlugin { getLogger().log(Level.INFO, "Loading Config..."); + // Setup config.yml PluginUtils utils = new PluginUtils(this); utils.setupConfig(); + config = utils.getConfig(); + settings = new Settings(config); // Loading all extra configs researches = new Config(files.researches); items = new Config(files.items); whitelist = new Config(files.whitelist); - // Setup Config and messages.yml + // Setup messages.yml utils.setupLocalization(); - config = utils.getConfig(); Messages.local = utils.getLocalization(); Messages.setup(); @@ -192,7 +194,6 @@ public final class SlimefunPlugin extends JavaPlugin { MiscSetup.loadDescriptions(); - settings = new Settings(config); settings.researchesEnabled = getResearchCfg().getBoolean("enable-researching"); settings.smelteryFireBreakChance = (Integer) Slimefun.getItemValue("SMELTERY", "chance.fireBreak"); From 9cf7b846a4e8749c10f9fe87fe82f81a2e4c86e4 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Sat, 31 Aug 2019 21:44:34 +0000 Subject: [PATCH 104/169] Update dependency com.github.thebusybiscuit:CS-CoreLib2 to v0.3.9 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 5c108d1e9..ee87171ad 100644 --- a/pom.xml +++ b/pom.xml @@ -123,7 +123,7 @@ com.github.thebusybiscuit CS-CoreLib2 - 0.3.8 + 0.3.9 compile From d5a8bade3e1cadb0cc02d16650c9e75383980acb Mon Sep 17 00:00:00 2001 From: ajan-12 <36973731+ajan-12@users.noreply.github.com> Date: Sun, 1 Sep 2019 12:38:43 +0300 Subject: [PATCH 105/169] Code cleanup and doing the requested changes. --- .../Slimefun/Setup/Messages.java | 47 +++++----- .../Slimefun/Setup/SlimefunSetup.java | 92 +++++++++---------- 2 files changed, 70 insertions(+), 69 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/Setup/Messages.java b/src/me/mrCookieSlime/Slimefun/Setup/Messages.java index 55e1ff22b..0b396e336 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/Messages.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/Messages.java @@ -10,10 +10,6 @@ public final class Messages { public static void setup() { local.setPrefix("&aSlimefun &7> "); - local.setDefault("messages.not-researched", "&4You do not have enough Knowledge to understand this"); - local.setDefault("messages.not-enough-xp", "&4You do not have enough XP to unlock this"); - local.setDefault("messages.unlocked", "&bYou have unlocked &7\"%research%\""); - local.setDefault("messages.fortune-cookie", new String[] {"&7Help me, I am trapped in a Fortune Cookie Factory!", "&7You will die tomorrow... by a Creeper", "&7At some Point in your Life something bad will happen!!!", "&7Next week you will notice that this is not the real World, you are in a kind of \"Matrix\" or lets call it Computer game. Yes you are in a Computer Game", "&7This Cookie will taste good in a few seconds", "&7You will die soon and the last word you will hear is gonna be \"EXTERMINATE!!!\"", "&7Whatever you do, do not hug a Creeper... I tried it. It feels good, but it's not worth it."}); local.setDefault("commands.help", "Displays this Help Screen"); local.setDefault("commands.cheat", "Allows you to cheat Items"); local.setDefault("commands.give", "Give somebody some Slimefun Items"); @@ -23,7 +19,14 @@ public final class Messages { local.setDefault("commands.teleporter", "See other Player's Waypoints"); local.setDefault("commands.versions", "Lists all installed Addons"); local.setDefault("commands.open_guide", "Opens Slimefun's guide without using the book"); - + local.setDefault("commands.stats", "Shows some Stats about a Player"); + local.setDefault("commands.research.reset", "&cYou have reset %player%'s Knowledge"); + local.setDefault("commands.research.reset-target", "&cYour Knowledge has been reset"); + + local.setDefault("messages.not-researched", "&4You do not have enough Knowledge to understand this"); + local.setDefault("messages.not-enough-xp", "&4You do not have enough XP to unlock this"); + local.setDefault("messages.unlocked", "&bYou have unlocked &7\"%research%\""); + local.setDefault("messages.fortune-cookie", "&7Help me, I am trapped in a Fortune Cookie Factory!", "&7You will die tomorrow... by a Creeper", "&7At some Point in your Life something bad will happen!!!", "&7Next week you will notice that this is not the real World, you are in a kind of \"Matrix\" or lets call it Computer game. Yes you are in a Computer Game", "&7This Cookie will taste good in a few seconds", "&7You will die soon and the last word you will hear is gonna be \"EXTERMINATE!!!\"", "&7Whatever you do, do not hug a Creeper... I tried it. It feels good, but it's not worth it."); local.setDefault("messages.only-players", "&4This Command is only for Players"); local.setDefault("messages.no-permission", "&4You do not have the required Permission to do this"); local.setDefault("messages.usage", "&4Usage: &c%usage%"); @@ -59,23 +62,29 @@ public final class Messages { local.setDefault("messages.disabled-item", "&4&lThis Item has been disabled! How did you even get that?"); local.setDefault("messages.research.start", "&7The Ancient Spirits whisper mysterious Words into your Ear!"); local.setDefault("messages.research.progress", "&7You start to wonder about &b%research% &e(%progress%)"); - local.setDefault("commands.stats", "Shows some Stats about a Player"); local.setDefault("messages.fire-extinguish", "&7You have extinguished yourself"); + local.setDefault("messages.cannot-place" ,"&cYou cannot place that block there!"); + local.setDefault("machines.pattern-not-found", "&eSorry, I could not recognize this Pattern. Please place the Items in the correct Pattern into the Dispenser."); local.setDefault("machines.unknown-material", "&eSorry, I could not recognize the Item in my Dispenser. Please put something in that I know."); local.setDefault("machines.wrong-item", "&eSorry, I could not recognize the Item you right clicked me with. Check the Recipes and see which Items you can use."); local.setDefault("machines.full-inventory", "&eSorry, my Inventory is too full!"); - local.setDefault("miner.no-ores", "&eSorry, I could not find any Ores nearby!"); - local.setDefault("backpack.already-open", "&cSorry, this backpack is open somewhere else!"); - local.setDefault("backpack.no-stack", "&cYou cannot stack Backpacks"); - local.setDefault("workbench.not-enhanced", "&4You cannot use Slimefun Items in a normal Workbench"); - local.setDefault("anvil.not-working", "&4You cannot use Slimefun Items in an Anvil"); - local.setDefault("commands.research.reset", "&cYou have reset %player%'s Knowledge"); - local.setDefault("commands.research.reset-target", "&cYour Knowledge has been reset"); local.setDefault("machines.in-use", "&cThis Block's Inventory is currently opened by a different Player."); local.setDefault("machines.ignition-chamber-no-flint", "&cIgnition Chamber is missing Flint and Steel."); - local.setDefault("messages.cannot-place" ,"&cYou cannot place that block there!"); - + local.setDefault("anvil.not-working", "&4You cannot use Slimefun Items in an Anvil"); + local.setDefault("backpack.already-open", "&cSorry, this backpack is open somewhere else!"); + local.setDefault("backpack.no-stack", "&cYou cannot stack Backpacks"); + local.setDefault("miner.no-ores", "&eSorry, I could not find any Ores nearby!"); + local.setDefault("workbench.not-enhanced", "&4You cannot use Slimefun Items in a normal Workbench"); + + local.setDefault("machines.ANCIENT_ALTAR.not-enough-pedestals", "&4The Altar is not surrounded by the needed Amount of Pedestals &c(%pedestals% / 8)"); + local.setDefault("machines.ANCIENT_ALTAR.unknown-catalyst", "&4Unknown Catalyst! &cUse the correct Recipe instead!"); + local.setDefault("machines.ANCIENT_ALTAR.unknown-recipe", "&4Unknown Recipe! &cUse the correct Recipe instead!"); + local.setDefault("machines.ANCIENT_PEDESTAL.obstructed", "&4Pedestal is obstructed! &cRemove anything above the pedestal!"); + local.setDefault("machines.HOLOGRAM_PROJECTOR.enter-text", "&7Please enter your desired Hologram Text in your Chat. &r(Color Codes are supported!)"); + local.setDefault("machines.ELEVATOR.no-destinations", "&4No Destinations found"); + local.setDefault("machines.CARGO_NODES.must-be-placed", "&4Must be placed onto a Chest or Machine"); + local.setDefault("gps.waypoint.new", "&ePlease type in a Name for your new Waypoint in the Chat. &7(Color Codes supported!)"); local.setDefault("gps.waypoint.added", "&aSuccessfully added a new Waypoint"); local.setDefault("gps.waypoint.max", "&4You have reached the Maximum Amount of Waypoints"); @@ -85,14 +94,6 @@ public final class Messages { local.setDefault("robot.started", "&7Your Robot resumed running its Script"); local.setDefault("robot.stopped", "&7Your Robot has paused its Script"); local.setDefault("inventory.no-access", "&4You are not permitted to access this Block"); - - local.setDefault("machines.ANCIENT_ALTAR.not-enough-pedestals", "&4The Altar is not surrounded by the needed Amount of Pedestals &c(%pedestals% / 8)"); - local.setDefault("machines.ANCIENT_ALTAR.unknown-catalyst", "&4Unknown Catalyst! &cUse the correct Recipe instead!"); - local.setDefault("machines.ANCIENT_ALTAR.unknown-recipe", "&4Unknown Recipe! &cUse the correct Recipe instead!"); - local.setDefault("machines.ANCIENT_PEDESTAL.obstructed", "&4Pedestal is obstructed! &cRemove anything above the pedestal!"); - local.setDefault("machines.HOLOGRAM_PROJECTOR.enter-text", "&7Please enter your desired Hologram Text in your Chat. &r(Color Codes are supported!)"); - local.setDefault("machines.ELEVATOR.no-destinations", "&4No Destinations found"); - local.setDefault("machines.CARGO_NODES.must-be-placed", "&4Must be placed onto a Chest or Machine"); local.setDefault("android.scripts.already-uploaded", "&4This Script has already been uploaded."); local.setDefault("android.scripts.enter-name", "", "&ePlease type in a Name for your Script", ""); diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java index d684dadee..bdf083663 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java @@ -50,6 +50,8 @@ import org.bukkit.potion.PotionEffectType; import org.bukkit.util.Vector; import io.github.thebusybiscuit.cscorelib2.materials.MaterialTools; +import io.github.thebusybiscuit.cscorelib2.protection.ProtectionManager; +import io.github.thebusybiscuit.cscorelib2.protection.ProtectionModule; import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib; import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config; import me.mrCookieSlime.CSCoreLibPlugin.compatibility.MaterialHelper; @@ -884,58 +886,56 @@ public final class SlimefunSetup { ItemMeta SFitemM = SFitem.getItemMeta(); List SFitemML = SFitemM.getLore(); if (itemML.size() < 6) { - // Index 1 and 3 in SlimefunItems.STAFF_STORM has lores with words and stuff so we check for them. - if (!itemML.get(1).equals(SFitemML.get(1))) return false; - if (!itemML.get(3).equals(SFitemML.get(3))) return false; - } else return false; + // Index 1 and 3 in SlimefunItems.STAFF_STORM has lores with words and stuff so we check for them. + if (itemML.get(1).equals(SFitemML.get(1)) && itemML.get(3).equals(SFitemML.get(3))) { + if (p.getFoodLevel() >= 4 || p.getGameMode() == GameMode.CREATIVE) { + Location loc = p.getTargetBlock(null, 50).getLocation(); + if (loc.getWorld() != null && loc.getChunk().isLoaded()) { + if (new ProtectionManager(Bukkit.getServer()).hasPermission(p, loc, ProtectionModule.Action.PVP)) { + loc.getWorld().strikeLightning(loc); - if (p.getFoodLevel() >= 4 || p.getGameMode() == GameMode.CREATIVE) { - Location loc = p.getTargetBlock(null, 50).getLocation(); - if (loc.getWorld() == null) return false; - if (!loc.getChunk().isLoaded()) return false; - loc.getWorld().strikeLightning(loc); + if (p.getInventory().getItemInMainHand().getType() != Material.SHEARS && p.getGameMode() != GameMode.CREATIVE) { + FoodLevelChangeEvent event = new FoodLevelChangeEvent(p, p.getFoodLevel() - 4); + Bukkit.getPluginManager().callEvent(event); + p.setFoodLevel(event.getFoodLevel()); + } - if (p.getInventory().getItemInMainHand().getType() != Material.SHEARS && p.getGameMode() != GameMode.CREATIVE) { - FoodLevelChangeEvent event = new FoodLevelChangeEvent(p, p.getFoodLevel() - 4); - Bukkit.getPluginManager().callEvent(event); - p.setFoodLevel(event.getFoodLevel()); - } + if (ChatColor.translateAlternateColorCodes('&', "&e5 Uses &7left").equals(itemML.get(4))) { + itemML.set(4, ChatColor.translateAlternateColorCodes('&', "&e4 Uses &7left")); + } else if (ChatColor.translateAlternateColorCodes('&', "&e4 Uses &7left").equals(itemML.get(4))) { + itemML.set(4, ChatColor.translateAlternateColorCodes('&', "&e3 Uses &7left")); + } else if (ChatColor.translateAlternateColorCodes('&', "&e3 Uses &7left").equals(itemML.get(4))) { + itemML.set(4, ChatColor.translateAlternateColorCodes('&', "&e2 Uses &7left")); + } else if (ChatColor.translateAlternateColorCodes('&', "&e2 Uses &7left").equals(itemML.get(4))) { + itemML.set(4, ChatColor.translateAlternateColorCodes('&', "&e1 Use &7left")); + } else if (ChatColor.translateAlternateColorCodes('&', "&e1 Use &7left").equals(itemML.get(4))) { + e.setCancelled(true); + p.playSound(p.getLocation(), Sound.ENTITY_ITEM_BREAK, 1, 1); + item.setAmount(0); + return true; + } else return false; - if (ChatColor.translateAlternateColorCodes('&', "&e5 Uses &7left").equals(itemML.get(4))) { - itemML.set(4, ChatColor.translateAlternateColorCodes('&', "&e4 Uses &7left")); - } - else if (ChatColor.translateAlternateColorCodes('&', "&e4 Uses &7left").equals(itemML.get(4))) { - itemML.set(4, ChatColor.translateAlternateColorCodes('&', "&e3 Uses &7left")); - } - else if (ChatColor.translateAlternateColorCodes('&', "&e3 Uses &7left").equals(itemML.get(4))) { - itemML.set(4, ChatColor.translateAlternateColorCodes('&', "&e2 Uses &7left")); - } - else if (ChatColor.translateAlternateColorCodes('&', "&e2 Uses &7left").equals(itemML.get(4))) { - itemML.set(4, ChatColor.translateAlternateColorCodes('&', "&e1 Use &7left")); - } - else if (ChatColor.translateAlternateColorCodes('&', "&e1 Use &7left").equals(itemML.get(4))) { - e.setCancelled(true); - p.playSound(p.getLocation(), Sound.ENTITY_ITEM_BREAK, 1, 1); - item.setAmount(0); + e.setCancelled(true); + // Saving the changes to lore and item. + itemM.setLore(itemML); + item.setItemMeta(itemM); + if (e.getParentEvent().getHand() == EquipmentSlot.HAND) { + p.getInventory().setItemInMainHand(item); + } else { + p.getInventory().setItemInOffHand(item); + } + } else { + Messages.local.sendTranslation(p, "messages.no-pvp", true); + } + } + } else { + Messages.local.sendTranslation(p, "messages.hungry", true); + } return true; } - else return false; - - e.setCancelled(true); - // Saving the changes to lore and item. - itemM.setLore(itemML); - item.setItemMeta(itemM); - if (e.getParentEvent().getHand() == EquipmentSlot.HAND) { - p.getInventory().setItemInMainHand(item); - } - else { - p.getInventory().setItemInOffHand(item); - } - } else { - Messages.local.sendTranslation(p, "messages.hungry", true); } - return true; - } else return false; + } + return false; } }); From 76004c3df9aab985e5232c42ceea058f9e104c46 Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Sun, 1 Sep 2019 11:42:03 +0200 Subject: [PATCH 106/169] Reduced technical debt --- .../Objects/SlimefunItem/SlimefunItem.java | 15 ++++------ .../abstractItems/AContainer.java | 15 +--------- .../SlimefunItem/abstractItems/ADrill.java | 18 +----------- .../abstractItems/AGenerator.java | 17 +---------- .../SlimefunItem/abstractItems/AReactor.java | 16 +--------- .../abstractItems/MachineHelper.java | 22 ++++++++++++++ .../SlimefunItem/machines/BlockPlacer.java | 2 +- .../machines/electric/AutoAnvil.java | 16 +--------- .../machines/electric/AutoDisenchanter.java | 17 +---------- .../machines/electric/AutoDrier.java | 29 +++++-------------- .../machines/electric/AutoEnchanter.java | 19 ++---------- .../machines/electric/ElectricDustWasher.java | 17 +---------- .../machines/electric/ElectricGoldPan.java | 24 +++------------ .../electric/HeatedPressureChamber.java | 15 +--------- .../machines/electric/OilPump.java | 18 +----------- .../machines/electric/Refinery.java | 24 +++------------ .../Slimefun/Setup/SlimefunSetup.java | 5 ++-- .../Slimefun/SlimefunPlugin.java | 14 ++++----- .../androids/ProgrammableAndroid.java | 2 +- .../Slimefun/commands/SlimefunCommand.java | 12 +++++--- .../commands/SlimefunTabCompleter.java | 8 ++++- .../Slimefun/listeners/ToolListener.java | 16 +++++----- .../Slimefun/utils/Utilities.java | 6 ++++ 23 files changed, 93 insertions(+), 254 deletions(-) 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<>(); From 06a7072b4c90578d810edb8bfb686d284eb03652 Mon Sep 17 00:00:00 2001 From: LinoxGH <54643600+LinoxGH@users.noreply.github.com> Date: Sun, 1 Sep 2019 14:32:42 +0300 Subject: [PATCH 107/169] Adding no PvP message. --- src/me/mrCookieSlime/Slimefun/Setup/Messages.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/me/mrCookieSlime/Slimefun/Setup/Messages.java b/src/me/mrCookieSlime/Slimefun/Setup/Messages.java index dd86d6d02..718f24b9f 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/Messages.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/Messages.java @@ -65,6 +65,7 @@ public final class Messages { local.setDefault("messages.research.progress", "&7You start to wonder about &b%research% &e(%progress%)"); local.setDefault("messages.fire-extinguish", "&7You have extinguished yourself"); local.setDefault("messages.cannot-place" ,"&cYou cannot place that block there!"); + local.setDefault("messages.no-pvp" ,"&cYou cannot pvp in here!"); local.setDefault("machines.pattern-not-found", "&eSorry, I could not recognize this Pattern. Please place the Items in the correct Pattern into the Dispenser."); local.setDefault("machines.unknown-material", "&eSorry, I could not recognize the Item in my Dispenser. Please put something in that I know."); From bb50dcaf735888be415c54e8e41949e3df07275b Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Sun, 1 Sep 2019 13:47:39 +0200 Subject: [PATCH 108/169] Reduced technical debt --- .../Objects/SlimefunItem/SlimefunItem.java | 7 +-- .../Slimefun/Setup/SlimefunSetup.java | 1 + .../Slimefun/SlimefunPlugin.java | 9 ---- .../Slimefun/api/energy/ChargableBlock.java | 48 +++++++++---------- .../Slimefun/api/energy/EnergyNet.java | 22 ++++----- .../api/inventory/BlockMenuPreset.java | 15 +++--- .../Slimefun/api/item_transport/CargoNet.java | 24 +++++----- .../Slimefun/utils/Utilities.java | 16 +++++++ 8 files changed, 68 insertions(+), 74 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java index fdbb88a07..cb67ad359 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java @@ -37,10 +37,7 @@ import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu; public class SlimefunItem { public static List items = new ArrayList<>(); - public static Map mapID = new HashMap<>(); - public static Set tickers = new HashSet<>(); - public static List all = new ArrayList<>(); private String id; @@ -404,7 +401,7 @@ public class SlimefunItem { for (ItemHandler h: handler) { if (h instanceof BlockTicker) { this.ticking = true; - tickers.add(getID()); + SlimefunPlugin.getUtilities().tickers.add(getID()); this.blockTicker = (BlockTicker) h; } else if (h instanceof EnergyTicker) { @@ -514,7 +511,7 @@ public class SlimefunItem { } public static boolean isTicking(String item) { - return tickers.contains(item); + return SlimefunPlugin.getUtilities().tickers.contains(item); } public static void registerBlockHandler(String id, SlimefunBlockHandler handler) { diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java index 87ef41899..aef3b8368 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java @@ -208,6 +208,7 @@ public final class SlimefunSetup { new SlimefunItem(Categories.FOOD, SlimefunItems.DIET_COOKIE, "DIET_COOKIE", RecipeType.MAGIC_WORKBENCH, new ItemStack[] {new ItemStack(Material.COOKIE), SlimefunItems.ELYTRA_SCALE, null, null, null, null, null, null, null}) .register(true, new ItemInteractionHandler() { + @Override public boolean onRightClick(ItemUseEvent e, Player p, ItemStack item) { if (SlimefunManager.isItemSimiliar(item, SlimefunItems.DIET_COOKIE, true)) { diff --git a/src/me/mrCookieSlime/Slimefun/SlimefunPlugin.java b/src/me/mrCookieSlime/Slimefun/SlimefunPlugin.java index 4a70482f7..e468f6b29 100644 --- a/src/me/mrCookieSlime/Slimefun/SlimefunPlugin.java +++ b/src/me/mrCookieSlime/Slimefun/SlimefunPlugin.java @@ -43,10 +43,7 @@ import me.mrCookieSlime.Slimefun.api.PlayerProfile; import me.mrCookieSlime.Slimefun.api.Slimefun; import me.mrCookieSlime.Slimefun.api.SlimefunBackup; import me.mrCookieSlime.Slimefun.api.TickerTask; -import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock; -import me.mrCookieSlime.Slimefun.api.energy.EnergyNet; import me.mrCookieSlime.Slimefun.api.energy.ItemEnergy; -import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset; import me.mrCookieSlime.Slimefun.api.inventory.UniversalBlockMenu; import me.mrCookieSlime.Slimefun.api.item_transport.CargoNet; import me.mrCookieSlime.Slimefun.autosave.BlockAutoSaver; @@ -366,14 +363,8 @@ public final class SlimefunPlugin extends JavaPlugin { SlimefunItem.all = null; SlimefunItem.items = null; SlimefunItem.mapID = null; - BlockMenuPreset.presets = null; - ChargableBlock.capacitors = null; - ChargableBlock.maxCharges = null; AContainer.processing = null; AContainer.progress = null; - EnergyNet.machinesInput = null; - EnergyNet.machinesOutput = null; - EnergyNet.machinesStorage = null; CargoNet.faces = null; OreWasher.items = null; diff --git a/src/me/mrCookieSlime/Slimefun/api/energy/ChargableBlock.java b/src/me/mrCookieSlime/Slimefun/api/energy/ChargableBlock.java index 2d63552ce..6387f817c 100644 --- a/src/me/mrCookieSlime/Slimefun/api/energy/ChargableBlock.java +++ b/src/me/mrCookieSlime/Slimefun/api/energy/ChargableBlock.java @@ -1,11 +1,12 @@ package me.mrCookieSlime.Slimefun.api.energy; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Map; -import java.util.Set; import java.util.logging.Level; +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.block.Block; +import org.bukkit.block.Skull; + import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config; import me.mrCookieSlime.CSCoreLibPlugin.general.Math.DoubleHandler; import me.mrCookieSlime.CSCoreLibPlugin.general.World.CustomSkull; @@ -13,28 +14,19 @@ import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.api.BlockStorage; import me.mrCookieSlime.Slimefun.api.Slimefun; -import org.bukkit.Bukkit; -import org.bukkit.Location; -import org.bukkit.block.Block; -import org.bukkit.block.Skull; - public final class ChargableBlock { private ChargableBlock() {} - public static Map maxCharges = new HashMap<>(); - public static Set rechargeable = new HashSet<>(); - public static Set capacitors = new HashSet<>(); - public static void registerChargableBlock(String id, int capacity, boolean recharge) { - maxCharges.put(id, capacity); - if (recharge) rechargeable.add(id); + SlimefunPlugin.getUtilities().blocksEnergyCapacity.put(id, capacity); + if (recharge) SlimefunPlugin.getUtilities().rechargeableItems.add(id); } public static void registerCapacitor(String id, int capacity) { - maxCharges.put(id, capacity); - rechargeable.add(id); - capacitors.add(id); + SlimefunPlugin.getUtilities().blocksEnergyCapacity.put(id, capacity); + SlimefunPlugin.getUtilities().rechargeableItems.add(id); + SlimefunPlugin.getUtilities().capacitorIDs.add(id); } public static boolean isChargable(Block b) { @@ -43,13 +35,13 @@ public final class ChargableBlock { public static boolean isChargable(Location l) { if (!BlockStorage.hasBlockInfo(l)) return false; - return maxCharges.containsKey(BlockStorage.checkID(l)); + return SlimefunPlugin.getUtilities().blocksEnergyCapacity.containsKey(BlockStorage.checkID(l)); } public static boolean isRechargable(Block b) { if (!BlockStorage.hasBlockInfo(b)) return false; String id = BlockStorage.checkID(b); - return maxCharges.containsKey(id) && rechargeable.contains(id); + return SlimefunPlugin.getUtilities().blocksEnergyCapacity.containsKey(id) && SlimefunPlugin.getUtilities().rechargeableItems.contains(id); } public static boolean isCapacitor(Block b) { @@ -58,7 +50,7 @@ public final class ChargableBlock { public static boolean isCapacitor(Location l) { if (!BlockStorage.hasBlockInfo(l)) return false; - return capacitors.contains(BlockStorage.checkID(l)); + return SlimefunPlugin.getUtilities().capacitorIDs.contains(BlockStorage.checkID(l)); } public static int getDefaultCapacity(Block b) { @@ -67,7 +59,7 @@ public final class ChargableBlock { public static int getDefaultCapacity(Location l) { String id = BlockStorage.checkID(l); - return id == null ? 0: maxCharges.get(id); + return id == null ? 0: SlimefunPlugin.getUtilities().blocksEnergyCapacity.get(id); } public static int getCharge(Block b) { @@ -135,6 +127,7 @@ public final class ChargableBlock { int energy = getCharge(l); int space = getMaxCharge(l) - energy; int rest = charge; + if (space > 0 && charge > 0) { if (space > charge) { setCharge(l, energy + charge); @@ -144,14 +137,15 @@ public final class ChargableBlock { rest = charge - space; setCharge(l, getMaxCharge(l)); } - if (capacitors.contains(BlockStorage.checkID(l))) { + + if (SlimefunPlugin.getUtilities().capacitorIDs.contains(BlockStorage.checkID(l))) { updateTexture(l); } } else if (charge < 0 && energy >= -charge) { setCharge(l, energy + charge); - if (capacitors.contains(BlockStorage.checkID(l))) { + if (SlimefunPlugin.getUtilities().capacitorIDs.contains(BlockStorage.checkID(l))) { updateTexture(l); } } @@ -164,11 +158,15 @@ public final class ChargableBlock { public static int getMaxCharge(Location l) { Config cfg = BlockStorage.getLocationInfo(l); + if (!cfg.contains("id")) { BlockStorage.clearBlockInfo(l); return 0; } - if (cfg.contains("energy-capacity")) return Integer.parseInt(cfg.getString("energy-capacity")); + + if (cfg.contains("energy-capacity")) { + return Integer.parseInt(cfg.getString("energy-capacity")); + } else { BlockStorage.addBlockInfo(l, "energy-capacity", String.valueOf(getDefaultCapacity(l)), false); return getDefaultCapacity(l); diff --git a/src/me/mrCookieSlime/Slimefun/api/energy/EnergyNet.java b/src/me/mrCookieSlime/Slimefun/api/energy/EnergyNet.java index c8e585566..8819f161f 100644 --- a/src/me/mrCookieSlime/Slimefun/api/energy/EnergyNet.java +++ b/src/me/mrCookieSlime/Slimefun/api/energy/EnergyNet.java @@ -19,41 +19,37 @@ import me.mrCookieSlime.Slimefun.holograms.EnergyHologram; public class EnergyNet extends Network { private static final int RANGE = 6; - - public static Set machinesInput = new HashSet<>(); - public static Set machinesStorage = new HashSet<>(); - public static Set machinesOutput = new HashSet<>(); public static EnergyNetComponent getComponent(Block b) { return getComponent(b.getLocation()); } public static EnergyNetComponent getComponent(String id) { - if (machinesInput.contains(id)) return EnergyNetComponent.SOURCE; - if (machinesStorage.contains(id)) return EnergyNetComponent.DISTRIBUTOR; - if (machinesOutput.contains(id)) return EnergyNetComponent.CONSUMER; + if (SlimefunPlugin.getUtilities().energyNetInput.contains(id)) return EnergyNetComponent.SOURCE; + if (SlimefunPlugin.getUtilities().energyNetStorage.contains(id)) return EnergyNetComponent.DISTRIBUTOR; + if (SlimefunPlugin.getUtilities().energyNetOutput.contains(id)) return EnergyNetComponent.CONSUMER; return EnergyNetComponent.NONE; } public static EnergyNetComponent getComponent(Location l) { if (!BlockStorage.hasBlockInfo(l)) return EnergyNetComponent.NONE; String id = BlockStorage.checkID(l); - if (machinesInput.contains(id)) return EnergyNetComponent.SOURCE; - if (machinesStorage.contains(id)) return EnergyNetComponent.DISTRIBUTOR; - if (machinesOutput.contains(id)) return EnergyNetComponent.CONSUMER; + if (SlimefunPlugin.getUtilities().energyNetInput.contains(id)) return EnergyNetComponent.SOURCE; + if (SlimefunPlugin.getUtilities().energyNetStorage.contains(id)) return EnergyNetComponent.DISTRIBUTOR; + if (SlimefunPlugin.getUtilities().energyNetOutput.contains(id)) return EnergyNetComponent.CONSUMER; return EnergyNetComponent.NONE; } public static void registerComponent(String id, EnergyNetComponent component) { switch (component) { case CONSUMER: - machinesOutput.add(id); + SlimefunPlugin.getUtilities().energyNetOutput.add(id); break; case DISTRIBUTOR: - machinesStorage.add(id); + SlimefunPlugin.getUtilities().energyNetStorage.add(id); break; case SOURCE: - machinesInput.add(id); + SlimefunPlugin.getUtilities().energyNetInput.add(id); break; default: break; diff --git a/src/me/mrCookieSlime/Slimefun/api/inventory/BlockMenuPreset.java b/src/me/mrCookieSlime/Slimefun/api/inventory/BlockMenuPreset.java index 0bbe6985a..9a28e573a 100644 --- a/src/me/mrCookieSlime/Slimefun/api/inventory/BlockMenuPreset.java +++ b/src/me/mrCookieSlime/Slimefun/api/inventory/BlockMenuPreset.java @@ -1,8 +1,6 @@ package me.mrCookieSlime.Slimefun.api.inventory; -import java.util.HashMap; import java.util.HashSet; -import java.util.Map; import java.util.Set; import org.bukkit.Bukkit; @@ -17,8 +15,6 @@ import me.mrCookieSlime.Slimefun.api.item_transport.ItemTransportFlow; public abstract class BlockMenuPreset extends ChestMenu { - public static Map presets = new HashMap<>(); - private String title; private Set occupied = new HashSet<>(); private String id; @@ -33,7 +29,7 @@ public abstract class BlockMenuPreset extends ChestMenu { this.title = title; this.init(); this.universal = false; - presets.put(id, this); + SlimefunPlugin.getUtilities().blockMenuPresets.put(id, this); } public void registerEvent(ItemManipulationEvent event) { @@ -46,7 +42,7 @@ public abstract class BlockMenuPreset extends ChestMenu { this.title = title; this.init(); this.universal = universal; - presets.put(id, this); + SlimefunPlugin.getUtilities().blockMenuPresets.put(id, this); } public abstract void init(); @@ -105,15 +101,16 @@ public abstract class BlockMenuPreset extends ChestMenu { } public static BlockMenuPreset getPreset(String id) { - return id == null ? null: presets.get(id); + return id == null ? null: SlimefunPlugin.getUtilities().blockMenuPresets.get(id); } public static boolean isInventory(String id) { - return presets.containsKey(id); + return SlimefunPlugin.getUtilities().blockMenuPresets.containsKey(id); } public static boolean isUniversalInventory(String id) { - return presets.containsKey(id) && presets.get(id).isUniversal(); + BlockMenuPreset preset = SlimefunPlugin.getUtilities().blockMenuPresets.get(id); + return preset != null && preset.isUniversal(); } public boolean isUniversal() { diff --git a/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoNet.java b/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoNet.java index 66c2063f0..e027967f9 100644 --- a/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoNet.java +++ b/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoNet.java @@ -39,10 +39,8 @@ public class CargoNet extends Network { private static final int RANGE = 5; public static List faces = Arrays.asList(BlockFace.NORTH, BlockFace.EAST, BlockFace.SOUTH, BlockFace.WEST); - public static Map roundRobin = new HashMap<>(); - public static Set requests = new HashSet<>(); - - private static int[] slots = new int[] {19, 20, 21, 28, 29, 30, 37, 38, 39}; + + private static final int[] slots = new int[] {19, 20, 21, 28, 29, 30, 37, 38, 39}; // Chest Terminal Stuff private static final ChestTerminalSorter sorter = new ChestTerminalSorter(); @@ -207,7 +205,7 @@ public class CargoNet extends Network { } if (menu.getItemInSlot(17) != null) { - requests.add(new ItemRequest(bus, 17, menu.getItemInSlot(17), ItemTransportFlow.INSERT)); + SlimefunPlugin.getUtilities().itemRequests.add(new ItemRequest(bus, 17, menu.getItemInSlot(17), ItemTransportFlow.INSERT)); } } @@ -235,7 +233,7 @@ public class CargoNet extends Network { BlockStorage.addBlockInfo(bus, "index", String.valueOf(index)); - requests.add(new ItemRequest(bus, 17, items.get(index), ItemTransportFlow.WITHDRAW)); + SlimefunPlugin.getUtilities().itemRequests.add(new ItemRequest(bus, 17, items.get(index), ItemTransportFlow.WITHDRAW)); } } } @@ -245,11 +243,11 @@ public class CargoNet extends Network { ItemStack sendingItem = menu.getItemInSlot(TERMINAL_OUT_SLOT); if (sendingItem != null) { - requests.add(new ItemRequest(terminal, TERMINAL_OUT_SLOT, sendingItem, ItemTransportFlow.INSERT)); + SlimefunPlugin.getUtilities().itemRequests.add(new ItemRequest(terminal, TERMINAL_OUT_SLOT, sendingItem, ItemTransportFlow.INSERT)); } } - Iterator iterator = requests.iterator(); + Iterator iterator = SlimefunPlugin.getUtilities().itemRequests.iterator(); while (iterator.hasNext()) { ItemRequest request = iterator.next(); if (terminals.contains(request.getTerminal()) || imports.contains(request.getTerminal()) || exports.contains(request.getTerminal())) { @@ -346,11 +344,11 @@ public class CargoNet extends Network { List outputlist = new ArrayList<>(output.get(frequency)); if (roundrobin) { - if (!roundRobin.containsKey(input)) { - roundRobin.put(input, 0); + if (!SlimefunPlugin.getUtilities().roundRobin.containsKey(input)) { + SlimefunPlugin.getUtilities().roundRobin.put(input, 0); } - int cIndex = roundRobin.get(input); + int cIndex = SlimefunPlugin.getUtilities().roundRobin.get(input); if (cIndex < outputlist.size()) { for (int i = 0; i < cIndex; i++) { @@ -362,7 +360,7 @@ public class CargoNet extends Network { } else cIndex = 1; - roundRobin.put(input, cIndex); + SlimefunPlugin.getUtilities().roundRobin.put(input, cIndex); } for (Location out : outputlist) { @@ -505,7 +503,7 @@ public class CargoNet extends Network { stack.setItemMeta(im); menu.replaceExistingItem(slot, stack); menu.addMenuClickHandler(slot, (p, sl, is, action) -> { - requests.add(new ItemRequest(l, 44, new CustomItem(item.getItem(), action.isRightClicked() ? (item.getAmount() > item.getItem().getMaxStackSize() ? item.getItem().getMaxStackSize(): item.getAmount()): 1), ItemTransportFlow.WITHDRAW)); + SlimefunPlugin.getUtilities().itemRequests.add(new ItemRequest(l, 44, new CustomItem(item.getItem(), action.isRightClicked() ? (item.getAmount() > item.getItem().getMaxStackSize() ? item.getItem().getMaxStackSize(): item.getAmount()): 1), ItemTransportFlow.WITHDRAW)); return false; }); diff --git a/src/me/mrCookieSlime/Slimefun/utils/Utilities.java b/src/me/mrCookieSlime/Slimefun/utils/Utilities.java index 7be5c8505..07992f1f8 100644 --- a/src/me/mrCookieSlime/Slimefun/utils/Utilities.java +++ b/src/me/mrCookieSlime/Slimefun/utils/Utilities.java @@ -24,8 +24,10 @@ import me.mrCookieSlime.Slimefun.ancient_altar.AltarRecipe; import me.mrCookieSlime.Slimefun.api.BlockStorage; import me.mrCookieSlime.Slimefun.api.GuideHandler; import me.mrCookieSlime.Slimefun.api.PlayerProfile; +import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset; import me.mrCookieSlime.Slimefun.api.inventory.UniversalBlockMenu; import me.mrCookieSlime.Slimefun.api.item_transport.CargoTransportEvent; +import me.mrCookieSlime.Slimefun.api.item_transport.ItemRequest; import me.mrCookieSlime.Slimefun.hooks.github.Contributor; import me.mrCookieSlime.Slimefun.hooks.github.GitHubConnector; @@ -44,6 +46,20 @@ public final class Utilities { public Set radioactiveItems = new HashSet<>(); public Map> itemHandlers = new HashMap<>(); public Map blockHandlers = new HashMap<>(); + public Set tickers = new HashSet<>(); + + public Map blocksEnergyCapacity = new HashMap<>(); + public Set rechargeableItems = new HashSet<>(); + public Set capacitorIDs = new HashSet<>(); + + public Set energyNetInput = new HashSet<>(); + public Set energyNetStorage = new HashSet<>(); + public Set energyNetOutput = new HashSet<>(); + + public Map roundRobin = new HashMap<>(); + public Set itemRequests = new HashSet<>(); + + public Map blockMenuPresets = new HashMap<>(); public List currentlyEnabledCategories = new ArrayList<>(); From cc381bbb6136f0bfcba46effb65af3fd66edb385 Mon Sep 17 00:00:00 2001 From: LinoxGH <54643600+LinoxGH@users.noreply.github.com> Date: Sun, 1 Sep 2019 14:58:45 +0300 Subject: [PATCH 109/169] Shaded Protection package. --- pom.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/pom.xml b/pom.xml index ee87171ad..07adc7bd4 100644 --- a/pom.xml +++ b/pom.xml @@ -68,6 +68,7 @@ **/cscorelib2/updater/** **/cscorelib2/materials/** + **/cscorelib2/protection/** From dbe37ee6a9d5ef7020c81cf45dee8f19de680145 Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Sun, 1 Sep 2019 14:31:08 +0200 Subject: [PATCH 110/169] Added Lightning Rune --- .../Slimefun/Lists/SlimefunItems.java | 10 +- .../SlimefunItem/items/StormStaff.java | 129 ++++++++++++++++++ .../Slimefun/Setup/SlimefunSetup.java | 84 ++---------- 3 files changed, 148 insertions(+), 75 deletions(-) create mode 100644 src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/StormStaff.java diff --git a/src/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java b/src/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java index 84b71c975..9096d7832 100644 --- a/src/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java +++ b/src/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java @@ -458,7 +458,7 @@ public final class SlimefunItems { public static final ItemStack STAFF_WIND = new CustomItem(Material.STICK, "&6Elemental Staff &7- &b&oWind", "", "&7Element: &b&oWind", "", "&eRight Click&7 to launch yourself forward"); public static final ItemStack STAFF_FIRE = new CustomItem(Material.STICK, "&6Elemental Staff &7- &c&oFire", "", "&7Element: &c&oFire"); public static final ItemStack STAFF_WATER = new CustomItem(Material.STICK, "&6Elemental Staff &7- &1&oWater", "", "&7Element: &1&oWater", "", "&eRight Click&7 to extinguish yourself"); - public static final ItemStack STAFF_STORM = new CustomItem(Material.STICK, "&6Elemental Staff &7- &8&oStorm", "", "&7Element: &8&oStorm", "", "&eRight Click&7 to summon a lightning", "&e5 Uses &7left"); + public static final ItemStack STAFF_STORM = new CustomItem(Material.STICK, "&6Elemental Staff &7- &8&oStorm", "", "&7Element: &8&oStorm", "", "&eRight Click&7 to summon a lightning", "&eX Uses &7left"); static { STAFF_WIND.addUnsafeEnchantment(Enchantment.LUCK, 1); @@ -530,6 +530,7 @@ public final class SlimefunItems { public static final ItemStack RUNE_EARTH; public static final ItemStack RUNE_ENDER; public static final ItemStack RUNE_RAINBOW; + public static final ItemStack RUNE_LIGHTNING; static { ItemStack itemB = new ItemStack(Material.FIREWORK_STAR); @@ -580,6 +581,13 @@ public final class SlimefunItems { imR.setDisplayName(ChatColor.translateAlternateColorCodes('&', "&7Ancient Rune &8&l[&d&lRainbow&8&l]")); itemR.setItemMeta(imR); RUNE_RAINBOW = itemR; + + ItemStack itemL = new ItemStack(Material.FIREWORK_STAR); + FireworkEffectMeta imL = (FireworkEffectMeta) itemL.getItemMeta(); + imL.setEffect(FireworkEffect.builder().with(Type.BURST).withColor(Color.YELLOW).build()); + imL.setDisplayName(ChatColor.translateAlternateColorCodes('&', "&7Ancient Rune &8&l[&e&lLightning&8&l]")); + itemL.setItemMeta(imL); + RUNE_LIGHTNING = itemL; } /* Electricity */ diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/StormStaff.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/StormStaff.java new file mode 100644 index 000000000..f2b787729 --- /dev/null +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/StormStaff.java @@ -0,0 +1,129 @@ +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items; + +import java.util.List; + +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.GameMode; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.Sound; +import org.bukkit.entity.Player; +import org.bukkit.event.entity.FoodLevelChangeEvent; +import org.bukkit.inventory.EquipmentSlot; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; + +import io.github.thebusybiscuit.cscorelib2.protection.ProtectionManager; +import io.github.thebusybiscuit.cscorelib2.protection.ProtectionModule; +import me.mrCookieSlime.CSCoreLibPlugin.events.ItemUseEvent; +import me.mrCookieSlime.Slimefun.Lists.RecipeType; +import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; +import me.mrCookieSlime.Slimefun.Objects.Category; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; +import me.mrCookieSlime.Slimefun.Objects.handlers.ItemInteractionHandler; +import me.mrCookieSlime.Slimefun.Setup.Messages; +import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; + +public class StormStaff extends SlimefunItem { + + private final static int MAX_USES = 8; + + public StormStaff(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe) { + super(category, item, id, recipeType, recipe, getCraftedOutput()); + } + + private static ItemStack getCraftedOutput() { + ItemStack item = SlimefunItems.STAFF_STORM.clone(); + ItemMeta im = item.getItemMeta(); + List lore = im.getLore(); + + lore.set(4, ChatColor.translateAlternateColorCodes('&', "&e" + MAX_USES + " Uses &7left")); + + im.setLore(lore); + item.setItemMeta(im); + return item; + } + + @Override + public void register(boolean slimefun) { + addItemHandler(new ItemInteractionHandler() { + + @Override + public boolean onRightClick(ItemUseEvent e, Player p, ItemStack item) { + //Not checking if lores equals because we need a special one for that. + if (SlimefunManager.isItemSimiliar(item, SlimefunItems.STAFF_STORM, false)) { + + if (!item.hasItemMeta()) return false; + ItemMeta itemM = item.getItemMeta(); + if (!itemM.hasLore()) return false; + List itemML = itemM.getLore(); + + ItemStack SFitem = SlimefunItems.STAFF_STORM; + ItemMeta SFitemM = SFitem.getItemMeta(); + List SFitemML = SFitemM.getLore(); + + if (itemML.size() < 6) { + // Index 1 and 3 in SlimefunItems.STAFF_STORM has lores with words and stuff so we check for them. + if (itemML.get(1).equals(SFitemML.get(1)) && itemML.get(3).equals(SFitemML.get(3))) { + if (p.getFoodLevel() >= 4 || p.getGameMode() == GameMode.CREATIVE) { + // Get a target block with max. 30 blocks of distance + Location loc = p.getTargetBlock(null, 30).getLocation(); + + if (loc.getWorld() != null && loc.getChunk().isLoaded()) { + if (new ProtectionManager(Bukkit.getServer()).hasPermission(p, loc, ProtectionModule.Action.PVP)) { + loc.getWorld().strikeLightning(loc); + + if (p.getInventory().getItemInMainHand().getType() != Material.SHEARS && p.getGameMode() != GameMode.CREATIVE) { + FoodLevelChangeEvent event = new FoodLevelChangeEvent(p, p.getFoodLevel() - 4); + Bukkit.getPluginManager().callEvent(event); + p.setFoodLevel(event.getFoodLevel()); + } + + for (int i = MAX_USES; i > 0; i--) { + if (i == 1 && ChatColor.translateAlternateColorCodes('&', "&e1 Use &7left").equals(itemML.get(4))) { + e.setCancelled(true); + p.playSound(p.getLocation(), Sound.ENTITY_ITEM_BREAK, 1, 1); + item.setAmount(0); + return true; + } + else if (ChatColor.translateAlternateColorCodes('&', "&e" + i + " Uses &7left").equals(itemML.get(4))) { + itemML.set(4, ChatColor.translateAlternateColorCodes('&', "&e" + (i - 1) + " " + (i > 2 ? "Uses": "Use") + " &7left")); + e.setCancelled(true); + + // Saving the changes to lore and item. + itemM.setLore(itemML); + item.setItemMeta(itemM); + + if (e.getParentEvent().getHand() == EquipmentSlot.HAND) { + p.getInventory().setItemInMainHand(item); + } + else { + p.getInventory().setItemInOffHand(item); + } + + return true; + } + } + + return false; + } + else { + Messages.local.sendTranslation(p, "messages.no-pvp", true); + } + } + } + else { + Messages.local.sendTranslation(p, "messages.hungry", true); + } + return true; + } + } + } + return false; + } + }); + super.register(slimefun); + } + +} diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java index f0bb7c7ae..44b97201a 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java @@ -49,8 +49,6 @@ import org.bukkit.potion.PotionEffectType; import org.bukkit.util.Vector; import io.github.thebusybiscuit.cscorelib2.materials.MaterialTools; -import io.github.thebusybiscuit.cscorelib2.protection.ProtectionManager; -import io.github.thebusybiscuit.cscorelib2.protection.ProtectionModule; import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib; import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config; import me.mrCookieSlime.CSCoreLibPlugin.compatibility.MaterialHelper; @@ -107,6 +105,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.Teleporter; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.cargo.AdvancedCargoOutputNode; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.cargo.CargoInputNode; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.cargo.CargoOutputNode; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.StormStaff; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.BlockPlacer; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.Composter; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.Crucible; @@ -869,76 +868,9 @@ public final class SlimefunSetup { new ItemStack[] {null, null, SlimefunItems.LAVA_CRYSTAL, null, SlimefunItems.STAFF_ELEMENTAL, null, SlimefunItems.STAFF_ELEMENTAL, null, null}) .register(true); - new SlimefunItem(Categories.MAGIC, SlimefunItems.STAFF_STORM, "STAFF_ELEMENTAL_STORM", RecipeType.ANCIENT_ALTAR, - new ItemStack[] {SlimefunItems.RUNE_AIR, SlimefunItems.RUNE_WATER, SlimefunItems.ENDER_LUMP_3, SlimefunItems.STAFF_WATER, SlimefunItems.MAGIC_SUGAR, SlimefunItems.STAFF_WIND, SlimefunItems.ENDER_LUMP_3, SlimefunItems.RUNE_WATER, SlimefunItems.RUNE_AIR}) - .register(true, new ItemInteractionHandler() { - - @Override - public boolean onRightClick(ItemUseEvent e, Player p, ItemStack item) { - //Not checking if lores equals because we need a special one for that. - if (SlimefunManager.isItemSimiliar(item, SlimefunItems.STAFF_STORM, false)) { - - if (!item.hasItemMeta()) return false; - ItemMeta itemM = item.getItemMeta(); - if (!itemM.hasLore()) return false; - List itemML = itemM.getLore(); - - ItemStack SFitem = SlimefunItems.STAFF_STORM; - ItemMeta SFitemM = SFitem.getItemMeta(); - List SFitemML = SFitemM.getLore(); - if (itemML.size() < 6) { - // Index 1 and 3 in SlimefunItems.STAFF_STORM has lores with words and stuff so we check for them. - if (itemML.get(1).equals(SFitemML.get(1)) && itemML.get(3).equals(SFitemML.get(3))) { - if (p.getFoodLevel() >= 4 || p.getGameMode() == GameMode.CREATIVE) { - Location loc = p.getTargetBlock(null, 50).getLocation(); - if (loc.getWorld() != null && loc.getChunk().isLoaded()) { - if (new ProtectionManager(Bukkit.getServer()).hasPermission(p, loc, ProtectionModule.Action.PVP)) { - loc.getWorld().strikeLightning(loc); - - if (p.getInventory().getItemInMainHand().getType() != Material.SHEARS && p.getGameMode() != GameMode.CREATIVE) { - FoodLevelChangeEvent event = new FoodLevelChangeEvent(p, p.getFoodLevel() - 4); - Bukkit.getPluginManager().callEvent(event); - p.setFoodLevel(event.getFoodLevel()); - } - - if (ChatColor.translateAlternateColorCodes('&', "&e5 Uses &7left").equals(itemML.get(4))) { - itemML.set(4, ChatColor.translateAlternateColorCodes('&', "&e4 Uses &7left")); - } else if (ChatColor.translateAlternateColorCodes('&', "&e4 Uses &7left").equals(itemML.get(4))) { - itemML.set(4, ChatColor.translateAlternateColorCodes('&', "&e3 Uses &7left")); - } else if (ChatColor.translateAlternateColorCodes('&', "&e3 Uses &7left").equals(itemML.get(4))) { - itemML.set(4, ChatColor.translateAlternateColorCodes('&', "&e2 Uses &7left")); - } else if (ChatColor.translateAlternateColorCodes('&', "&e2 Uses &7left").equals(itemML.get(4))) { - itemML.set(4, ChatColor.translateAlternateColorCodes('&', "&e1 Use &7left")); - } else if (ChatColor.translateAlternateColorCodes('&', "&e1 Use &7left").equals(itemML.get(4))) { - e.setCancelled(true); - p.playSound(p.getLocation(), Sound.ENTITY_ITEM_BREAK, 1, 1); - item.setAmount(0); - return true; - } else return false; - - e.setCancelled(true); - // Saving the changes to lore and item. - itemM.setLore(itemML); - item.setItemMeta(itemM); - if (e.getParentEvent().getHand() == EquipmentSlot.HAND) { - p.getInventory().setItemInMainHand(item); - } else { - p.getInventory().setItemInOffHand(item); - } - } else { - Messages.local.sendTranslation(p, "messages.no-pvp", true); - } - } - } else { - Messages.local.sendTranslation(p, "messages.hungry", true); - } - return true; - } - } - } - return false; - } - }); + new StormStaff(Categories.MAGIC, SlimefunItems.STAFF_STORM, "STAFF_ELEMENTAL_STORM", RecipeType.ANCIENT_ALTAR, + new ItemStack[] {SlimefunItems.RUNE_LIGHTNING, SlimefunItems.ENDER_LUMP_3, SlimefunItems.RUNE_LIGHTNING, SlimefunItems.STAFF_WATER, SlimefunItems.MAGIC_SUGAR, SlimefunItems.STAFF_WIND, SlimefunItems.RUNE_LIGHTNING, SlimefunItems.ENDER_LUMP_3, SlimefunItems.RUNE_LIGHTNING}) + .register(true); new SlimefunItem(Categories.TOOLS, SlimefunItems.AUTO_SMELT_PICKAXE, "SMELTERS_PICKAXE", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {SlimefunItems.LAVA_CRYSTAL, SlimefunItems.LAVA_CRYSTAL, SlimefunItems.LAVA_CRYSTAL, null, SlimefunItems.FERROSILICON, null, null, SlimefunItems.FERROSILICON, null}) @@ -3450,11 +3382,15 @@ public final class SlimefunSetup { .register(true); new SlimefunItem(Categories.LUMPS_AND_MAGIC, SlimefunItems.RUNE_ENDER, "ANCIENT_RUNE_ENDER", RecipeType.ANCIENT_ALTAR, - new ItemStack[] {new ItemStack(Material.ENDER_PEARL), SlimefunItems.ENDER_LUMP_3, new ItemStack(Material.ENDER_PEARL), new ItemStack(Material.ENDER_EYE), SlimefunItems.BLANK_RUNE, new ItemStack(Material.ENDER_EYE) ,new ItemStack(Material.ENDER_PEARL), SlimefunItems.ENDER_LUMP_3, new ItemStack(Material.ENDER_PEARL)}, new CustomItem(SlimefunItems.RUNE_ENDER, 6)) + new ItemStack[] {new ItemStack(Material.ENDER_PEARL), SlimefunItems.ENDER_LUMP_3, new ItemStack(Material.ENDER_PEARL), new ItemStack(Material.ENDER_EYE), SlimefunItems.BLANK_RUNE, new ItemStack(Material.ENDER_EYE), new ItemStack(Material.ENDER_PEARL), SlimefunItems.ENDER_LUMP_3, new ItemStack(Material.ENDER_PEARL)}, new CustomItem(SlimefunItems.RUNE_ENDER, 6)) + .register(true); + + new SlimefunItem(Categories.LUMPS_AND_MAGIC, SlimefunItems.RUNE_LIGHTNING, "ANCIENT_RUNE_LIGHTNING", RecipeType.ANCIENT_ALTAR, + new ItemStack[] {new ItemStack(Material.IRON_INGOT), SlimefunItems.MAGIC_LUMP_3, new ItemStack(Material.IRON_INGOT), SlimefunItems.RUNE_WATER, new ItemStack(Material.PHANTOM_MEMBRANE), SlimefunItems.RUNE_WATER, new ItemStack(Material.IRON_INGOT), SlimefunItems.MAGIC_LUMP_3, new ItemStack(Material.IRON_INGOT)}, new CustomItem(SlimefunItems.RUNE_LIGHTNING, 4)) .register(true); new SlimefunItem(Categories.LUMPS_AND_MAGIC, SlimefunItems.RUNE_RAINBOW, "ANCIENT_RUNE_RAINBOW", RecipeType.ANCIENT_ALTAR, - new ItemStack[] {new ItemStack(Material.RED_DYE), SlimefunItems.MAGIC_LUMP_3, new ItemStack(Material.CYAN_DYE), new ItemStack(Material.WHITE_WOOL), SlimefunItems.RUNE_ENDER, new ItemStack(Material.WHITE_WOOL) , new ItemStack(Material.YELLOW_DYE), SlimefunItems.ENDER_LUMP_3, new ItemStack(Material.MAGENTA_DYE)}) + new ItemStack[] {new ItemStack(Material.RED_DYE), SlimefunItems.MAGIC_LUMP_3, new ItemStack(Material.CYAN_DYE), new ItemStack(Material.WHITE_WOOL), SlimefunItems.RUNE_ENDER, new ItemStack(Material.WHITE_WOOL), new ItemStack(Material.YELLOW_DYE), SlimefunItems.ENDER_LUMP_3, new ItemStack(Material.MAGENTA_DYE)}) .register(true); new SlimefunItem(Categories.MAGIC, SlimefunItems.INFERNAL_BONEMEAL, "INFERNAL_BONEMEAL", RecipeType.ANCIENT_ALTAR, From d9ce39f93b2205c3d29dc6c5aa5f7829c69c5a46 Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Sun, 1 Sep 2019 14:47:03 +0200 Subject: [PATCH 111/169] Refactored Code --- .../SlimefunItem/SimpleSlimefunItem.java | 23 +++ .../SlimefunItem/items/DietCookie.java | 52 +++++ .../SlimefunItem/items/GrapplingHook.java | 64 ++++++ .../items/PickaxeOfTheSeeker.java | 70 +++++++ .../SlimefunItem/items/SeismicAxe.java | 89 +++++++++ .../Slimefun/Setup/SlimefunSetup.java | 185 ++---------------- 6 files changed, 311 insertions(+), 172 deletions(-) create mode 100644 src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SimpleSlimefunItem.java create mode 100644 src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/DietCookie.java create mode 100644 src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/GrapplingHook.java create mode 100644 src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/PickaxeOfTheSeeker.java create mode 100644 src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/SeismicAxe.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SimpleSlimefunItem.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SimpleSlimefunItem.java new file mode 100644 index 000000000..15f7a1613 --- /dev/null +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SimpleSlimefunItem.java @@ -0,0 +1,23 @@ +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem; + +import org.bukkit.inventory.ItemStack; + +import me.mrCookieSlime.Slimefun.Lists.RecipeType; +import me.mrCookieSlime.Slimefun.Objects.Category; +import me.mrCookieSlime.Slimefun.Objects.handlers.ItemInteractionHandler; + +public abstract class SimpleSlimefunItem extends SlimefunItem { + + public SimpleSlimefunItem(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe) { + super(category, item, id, recipeType, recipe); + } + + @Override + public void register(boolean slimefun) { + addItemHandler(onRightClick()); + super.register(slimefun); + } + + public abstract ItemInteractionHandler onRightClick(); + +} diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/DietCookie.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/DietCookie.java new file mode 100644 index 000000000..199337f65 --- /dev/null +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/DietCookie.java @@ -0,0 +1,52 @@ +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items; + +import org.bukkit.ChatColor; +import org.bukkit.Sound; +import org.bukkit.inventory.EquipmentSlot; +import org.bukkit.inventory.ItemStack; +import org.bukkit.potion.PotionEffectType; + +import me.mrCookieSlime.Slimefun.Lists.RecipeType; +import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; +import me.mrCookieSlime.Slimefun.Objects.Category; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SimpleSlimefunItem; +import me.mrCookieSlime.Slimefun.Objects.handlers.ItemInteractionHandler; +import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; + +public class DietCookie extends SimpleSlimefunItem { + + public DietCookie(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe) { + super(category, item, id, recipeType, recipe); + } + + @Override + public ItemInteractionHandler onRightClick() { + return (e, p, item) -> { + if (SlimefunManager.isItemSimiliar(item, SlimefunItems.DIET_COOKIE, true)) { + e.setCancelled(true); + + int amount = item.getAmount(); + if (amount <= 1) { + if (e.getParentEvent().getHand() == EquipmentSlot.HAND) { + p.getInventory().setItemInMainHand(null); + } + else { + p.getInventory().setItemInOffHand(null); + } + } + else { + item.setAmount(amount - 1); + } + + p.sendMessage(ChatColor.YELLOW + "You feel so light..."); + p.playSound(p.getLocation(), Sound.ENTITY_GENERIC_EAT, 1, 1); + + if (p.hasPotionEffect(PotionEffectType.LEVITATION)) p.removePotionEffect(PotionEffectType.LEVITATION); + p.addPotionEffect(PotionEffectType.LEVITATION.createEffect(60, 1)); + return true; + } + return false; + }; + } + +} diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/GrapplingHook.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/GrapplingHook.java new file mode 100644 index 000000000..2a17f9dee --- /dev/null +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/GrapplingHook.java @@ -0,0 +1,64 @@ +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items; + +import org.bukkit.Material; +import org.bukkit.entity.Arrow; +import org.bukkit.entity.Bat; +import org.bukkit.entity.Entity; +import org.bukkit.entity.EntityType; +import org.bukkit.entity.Projectile; +import org.bukkit.inventory.ItemStack; +import org.bukkit.potion.PotionEffect; +import org.bukkit.potion.PotionEffectType; +import org.bukkit.util.Vector; + +import me.mrCookieSlime.CSCoreLibPlugin.general.Player.PlayerInventory; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; +import me.mrCookieSlime.Slimefun.Lists.RecipeType; +import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; +import me.mrCookieSlime.Slimefun.Objects.Category; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SimpleSlimefunItem; +import me.mrCookieSlime.Slimefun.Objects.handlers.ItemInteractionHandler; +import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; +import me.mrCookieSlime.Slimefun.utils.Utilities; + +public class GrapplingHook extends SimpleSlimefunItem { + + public GrapplingHook(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe) { + super(category, item, id, recipeType, recipe); + } + + @Override + public ItemInteractionHandler onRightClick() { + Utilities utilities = SlimefunPlugin.getUtilities(); + + return (e, p, item) -> { + if (SlimefunManager.isItemSimiliar(item, SlimefunItems.GRAPPLING_HOOK, true)) { + if (e.getClickedBlock() == null && !utilities.jumpState.containsKey(p.getUniqueId())) { + e.setCancelled(true); + if (p.getInventory().getItemInOffHand().getType() == Material.BOW) { + // Cancel, to fix dupe #740 + return false; + } + utilities.jumpState.put(p.getUniqueId(), p.getInventory().getItemInMainHand().getType() != Material.SHEARS); + if (p.getInventory().getItemInMainHand().getType() == Material.LEAD) PlayerInventory.consumeItemInHand(p); + + Vector direction = p.getEyeLocation().getDirection().multiply(2.0); + Projectile projectile = p.getWorld().spawn(p.getEyeLocation().add(direction.getX(), direction.getY(), direction.getZ()), Arrow.class); + projectile.setShooter(p); + projectile.setVelocity(direction); + Arrow arrow = (Arrow) projectile; + Bat b = (Bat) p.getWorld().spawnEntity(p.getLocation(), EntityType.BAT); + b.setCanPickupItems(false); + b.addPotionEffect(new PotionEffect(PotionEffectType.INVISIBILITY, 100000, 100000)); + b.setLeashHolder(arrow); + + utilities.damage.add(p.getUniqueId()); + utilities.remove.put(p.getUniqueId(), new Entity[] {b, arrow}); + } + return true; + } + else return false; + }; + } + +} diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/PickaxeOfTheSeeker.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/PickaxeOfTheSeeker.java new file mode 100644 index 000000000..fab1a9444 --- /dev/null +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/PickaxeOfTheSeeker.java @@ -0,0 +1,70 @@ +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items; + +import java.util.Random; + +import org.bukkit.Location; +import org.bukkit.block.Block; +import org.bukkit.enchantments.Enchantment; +import org.bukkit.inventory.ItemStack; + +import me.mrCookieSlime.CSCoreLibPlugin.general.Player.PlayerInventory; +import me.mrCookieSlime.Slimefun.Lists.RecipeType; +import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; +import me.mrCookieSlime.Slimefun.Objects.Category; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SimpleSlimefunItem; +import me.mrCookieSlime.Slimefun.Objects.handlers.ItemInteractionHandler; +import me.mrCookieSlime.Slimefun.Setup.Messages; +import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; + +public class PickaxeOfTheSeeker extends SimpleSlimefunItem { + + public PickaxeOfTheSeeker(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe) { + super(category, item, id, recipeType, recipe); + } + + @Override + public ItemInteractionHandler onRightClick() { + return (e, p, item) -> { + if (SlimefunManager.isItemSimiliar(item, SlimefunItems.PICKAXE_OF_THE_SEEKER, true)) { + Block closest = null; + + for (int x = -4; x <= 4; x++) { + for (int y = -4; y <= 4; y++) { + for (int z = -4; z <= 4; z++) { + if (p.getLocation().getBlock().getRelative(x, y, z).getType().toString().endsWith("_ORE")) { + if (closest == null || p.getLocation().distance(closest.getLocation()) < p.getLocation().distance(p.getLocation().getBlock().getRelative(x, y, z).getLocation())) + closest = p.getLocation().getBlock().getRelative(x, y, z); + } + } + } + } + + if (closest == null) Messages.local.sendTranslation(p, "miner.no-ores", true); + else { + double l = closest.getX() + 0.5 - p.getLocation().getX(); + double w = closest.getZ() + 0.5 - p.getLocation().getZ(); + float yaw; + float pitch; + double c = Math.sqrt(l * l + w * w); + double alpha1 = -Math.asin(l / c) / Math.PI * 180; + double alpha2 = Math.acos(w / c) / Math.PI * 180; + if (alpha2 > 90) yaw = (float) (180 - alpha1); + else yaw = (float) alpha1; + pitch = (float) ((-Math.atan((closest.getY() - 0.5 - p.getLocation().getY()) / Math.sqrt(l * l + w * w))) * 180F / Math.PI); + + p.teleport(new Location(p.getWorld(), p.getLocation().getX(), p.getLocation().getY(), p.getLocation().getZ(), yaw, pitch)); + } + + if (e.getPlayer().getInventory().getItemInMainHand().getEnchantments().containsKey(Enchantment.DURABILITY)) { + if (new Random().nextInt(100) <= (60 + 40 / (e.getPlayer().getInventory().getItemInMainHand().getEnchantmentLevel(Enchantment.DURABILITY) + 1))) PlayerInventory.damageItemInHand(e.getPlayer()); + } + else PlayerInventory.damageItemInHand(e.getPlayer()); + + PlayerInventory.update(e.getPlayer()); + return true; + } + else return false; + }; + } + +} diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/SeismicAxe.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/SeismicAxe.java new file mode 100644 index 000000000..a627430da --- /dev/null +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/SeismicAxe.java @@ -0,0 +1,89 @@ +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items; + +import java.util.List; +import java.util.Random; + +import org.bukkit.Bukkit; +import org.bukkit.Effect; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.block.Block; +import org.bukkit.block.BlockFace; +import org.bukkit.enchantments.Enchantment; +import org.bukkit.entity.Entity; +import org.bukkit.entity.FallingBlock; +import org.bukkit.entity.LivingEntity; +import org.bukkit.event.entity.EntityDamageByEntityEvent; +import org.bukkit.event.entity.EntityDamageEvent.DamageCause; +import org.bukkit.inventory.ItemStack; +import org.bukkit.util.Vector; + +import me.mrCookieSlime.CSCoreLibPlugin.general.Player.PlayerInventory; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; +import me.mrCookieSlime.Slimefun.Lists.RecipeType; +import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; +import me.mrCookieSlime.Slimefun.Objects.Category; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SimpleSlimefunItem; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.Interfaces.NotPlaceable; +import me.mrCookieSlime.Slimefun.Objects.handlers.ItemInteractionHandler; +import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; + +public class SeismicAxe extends SimpleSlimefunItem implements NotPlaceable { + + public SeismicAxe(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe) { + super(category, item, id, recipeType, recipe); + } + + @Override + public ItemInteractionHandler onRightClick() { + return (e, p, item) -> { + if (SlimefunManager.isItemSimiliar(item, SlimefunItems.SEISMIC_AXE, true)) { + List blocks = p.getLineOfSight(null, 10); + for (int i = 0; i < blocks.size(); i++) { + Block b = blocks.get(i); + Location ground = b.getLocation(); + if (b.getType() == null || b.getType() == Material.AIR) { + for (int y = ground.getBlockY(); y > 0; y--) { + if (b.getWorld().getBlockAt(b.getX(), y, b.getZ()) != null && b.getWorld().getBlockAt(b.getX(), y, b.getZ()).getType() != null && b.getWorld().getBlockAt(b.getX(), y, b.getZ()).getType() != Material.AIR) { + ground = new Location(b.getWorld(), b.getX(), y, b.getZ()); + break; + } + } + } + b.getWorld().playEffect(ground, Effect.STEP_SOUND, ground.getBlock().getType()); + if (ground.getBlock().getRelative(BlockFace.UP).getType() == null || ground.getBlock().getRelative(BlockFace.UP).getType() == Material.AIR) { + FallingBlock block = ground.getWorld().spawnFallingBlock(ground.getBlock().getRelative(BlockFace.UP).getLocation(), ground.getBlock().getBlockData()); + block.setDropItem(false); + block.setVelocity(new Vector(0, 0.4 + i * 0.01, 0)); + SlimefunPlugin.getUtilities().blocks.add(block.getUniqueId()); + } + for (Entity n: ground.getChunk().getEntities()) { + if (n instanceof LivingEntity && n.getLocation().distance(ground) <= 2.0D && !n.getUniqueId().equals(p.getUniqueId())) { + Vector vector = n.getLocation().toVector().subtract(p.getLocation().toVector()).normalize().multiply(1.4); + vector.setY(0.9); + n.setVelocity(vector); + + if (p.getWorld().getPVP()) { + EntityDamageByEntityEvent event = new EntityDamageByEntityEvent(p, n, DamageCause.ENTITY_ATTACK, 6D); + Bukkit.getPluginManager().callEvent(event); + if (!event.isCancelled()) ((LivingEntity) n).damage(6D); + } + } + } + } + + for (int i = 0; i < 4; i++) { + if (e.getPlayer().getInventory().getItemInMainHand() != null) { + if (e.getPlayer().getInventory().getItemInMainHand().getEnchantments().containsKey(Enchantment.DURABILITY)) { + if (new Random().nextInt(100) <= (60 + 40 / (e.getPlayer().getInventory().getItemInMainHand().getEnchantmentLevel(Enchantment.DURABILITY) + 1))) PlayerInventory.damageItemInHand(e.getPlayer()); + } + else PlayerInventory.damageItemInHand(e.getPlayer()); + } + } + return true; + } + else return false; + }; + } + +} diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java index 44b97201a..d2fe34b1f 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java @@ -25,20 +25,15 @@ import org.bukkit.block.CreatureSpawner; import org.bukkit.block.data.Ageable; import org.bukkit.enchantments.Enchantment; import org.bukkit.entity.ArmorStand; -import org.bukkit.entity.Arrow; -import org.bukkit.entity.Bat; import org.bukkit.entity.EnderPearl; import org.bukkit.entity.Entity; import org.bukkit.entity.EntityType; -import org.bukkit.entity.FallingBlock; import org.bukkit.entity.Item; import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; -import org.bukkit.entity.Projectile; import org.bukkit.event.block.BlockBreakEvent; import org.bukkit.event.block.BlockPlaceEvent; import org.bukkit.event.entity.EntityDamageByEntityEvent; -import org.bukkit.event.entity.EntityDamageEvent.DamageCause; import org.bukkit.event.entity.FoodLevelChangeEvent; import org.bukkit.inventory.EquipmentSlot; import org.bukkit.inventory.Inventory; @@ -105,6 +100,10 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.Teleporter; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.cargo.AdvancedCargoOutputNode; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.cargo.CargoInputNode; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.cargo.CargoOutputNode; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.DietCookie; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.GrapplingHook; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.PickaxeOfTheSeeker; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.SeismicAxe; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.StormStaff; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.BlockPlacer; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.Composter; @@ -170,7 +169,6 @@ import me.mrCookieSlime.Slimefun.api.energy.EnergyTicker; import me.mrCookieSlime.Slimefun.api.item_transport.CargoNet; import me.mrCookieSlime.Slimefun.holograms.CargoHologram; import me.mrCookieSlime.Slimefun.holograms.ReactorHologram; -import me.mrCookieSlime.Slimefun.utils.Utilities; public final class SlimefunSetup { @@ -206,38 +204,9 @@ public final class SlimefunSetup { new ItemStack[] {new ItemStack(Material.COOKIE), new ItemStack(Material.PAPER), null, null, null, null, null, null, null}) .register(true); - new SlimefunItem(Categories.FOOD, SlimefunItems.DIET_COOKIE, "DIET_COOKIE", RecipeType.MAGIC_WORKBENCH, + new DietCookie(Categories.FOOD, SlimefunItems.DIET_COOKIE, "DIET_COOKIE", RecipeType.MAGIC_WORKBENCH, new ItemStack[] {new ItemStack(Material.COOKIE), SlimefunItems.ELYTRA_SCALE, null, null, null, null, null, null, null}) - .register(true, new ItemInteractionHandler() { - - @Override - public boolean onRightClick(ItemUseEvent e, Player p, ItemStack item) { - if (SlimefunManager.isItemSimiliar(item, SlimefunItems.DIET_COOKIE, true)) { - e.setCancelled(true); - - int amount = item.getAmount(); - if (amount <= 1) { - if (e.getParentEvent().getHand() == EquipmentSlot.HAND) { - p.getInventory().setItemInMainHand(null); - } - else { - p.getInventory().setItemInOffHand(null); - } - } - else { - item.setAmount(amount - 1); - } - - p.sendMessage(ChatColor.YELLOW + "You feel so light..."); - p.playSound(p.getLocation(), Sound.ENTITY_GENERIC_EAT, 1, 1); - - if (p.hasPotionEffect(PotionEffectType.LEVITATION)) p.removePotionEffect(PotionEffectType.LEVITATION); - p.addPotionEffect(PotionEffectType.LEVITATION.createEffect(60, 1)); - return true; - } - return false; - } - }); + .register(true); new SlimefunItem(Categories.MACHINES_1, SlimefunItems.OUTPUT_CHEST, "OUTPUT_CHEST", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {SlimefunItems.LEAD_INGOT, new ItemStack(Material.HOPPER), SlimefunItems.LEAD_INGOT, SlimefunItems.LEAD_INGOT, new ItemStack(Material.CHEST), SlimefunItems.LEAD_INGOT, null, SlimefunItems.LEAD_INGOT, null}) @@ -442,7 +411,7 @@ public final class SlimefunSetup { new PressureChamber().register(); new SlimefunItem(Categories.TECH_MISC, SlimefunItems.BATTERY, "BATTERY", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] { null, new ItemStack(Material.REDSTONE), null, SlimefunItems.ZINC_INGOT, SlimefunItems.SULFATE, SlimefunItems.COPPER_INGOT, SlimefunItems.ZINC_INGOT, SlimefunItems.SULFATE, SlimefunItems.COPPER_INGOT }) + new ItemStack[] {null, new ItemStack(Material.REDSTONE), null, SlimefunItems.ZINC_INGOT, SlimefunItems.SULFATE, SlimefunItems.COPPER_INGOT, SlimefunItems.ZINC_INGOT, SlimefunItems.SULFATE, SlimefunItems.COPPER_INGOT }) .register(true); SlimefunManager.registerArmorSet(new ItemStack(Material.GLOWSTONE), new ItemStack[] {SlimefunItems.GLOWSTONE_HELMET, SlimefunItems.GLOWSTONE_CHESTPLATE, SlimefunItems.GLOWSTONE_LEGGINGS, SlimefunItems.GLOWSTONE_BOOTS}, "GLOWSTONE", @@ -677,42 +646,9 @@ public final class SlimefunSetup { new ItemStack[] {null, SlimefunItems.STEEL_INGOT, null, SlimefunItems.STEEL_INGOT, null, SlimefunItems.STEEL_INGOT, null, null, null}) .register(true); - new SlimefunItem(Categories.TOOLS, SlimefunItems.GRAPPLING_HOOK, "GRAPPLING_HOOK", RecipeType.ENHANCED_CRAFTING_TABLE, + new GrapplingHook(Categories.TOOLS, SlimefunItems.GRAPPLING_HOOK, "GRAPPLING_HOOK", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {null, SlimefunItems.HOOK, SlimefunItems.HOOK, null, SlimefunItems.CHAIN, SlimefunItems.HOOK, SlimefunItems.CHAIN, null, null}) - .register(true, new ItemInteractionHandler() { - - private Utilities variables = SlimefunPlugin.getUtilities(); - - @Override - public boolean onRightClick(ItemUseEvent e, Player p, ItemStack item) { - if (SlimefunManager.isItemSimiliar(item, SlimefunItems.GRAPPLING_HOOK, true)) { - if (e.getClickedBlock() == null && !variables.jumpState.containsKey(p.getUniqueId())) { - e.setCancelled(true); - if (p.getInventory().getItemInOffHand().getType() == Material.BOW) { - // Cancel, to fix dupe #740 - return false; - } - variables.jumpState.put(p.getUniqueId(), p.getInventory().getItemInMainHand().getType() != Material.SHEARS); - if (p.getInventory().getItemInMainHand().getType() == Material.LEAD) PlayerInventory.consumeItemInHand(p); - - Vector direction = p.getEyeLocation().getDirection().multiply(2.0); - Projectile projectile = p.getWorld().spawn(p.getEyeLocation().add(direction.getX(), direction.getY(), direction.getZ()), Arrow.class); - projectile.setShooter(p); - projectile.setVelocity(direction); - Arrow arrow = (Arrow) projectile; - Bat b = (Bat) p.getWorld().spawnEntity(p.getLocation(), EntityType.BAT); - b.setCanPickupItems(false); - b.addPotionEffect(new PotionEffect(PotionEffectType.INVISIBILITY, 100000, 100000)); - b.setLeashHolder(arrow); - - variables.damage.add(p.getUniqueId()); - variables.remove.put(p.getUniqueId(), new Entity[] {b, arrow}); - } - return true; - } - else return false; - } - }); + .register(true); new MagicWorkbench().register(); @@ -1549,53 +1485,9 @@ public final class SlimefunSetup { new ItemStack[] {null, null, null, new ItemStack(Material.YELLOW_WOOL), null, new ItemStack(Material.YELLOW_WOOL), new ItemStack(Material.PISTON), null, new ItemStack(Material.PISTON)}) .register(true); - new SlimefunItem(Categories.TOOLS, SlimefunItems.PICKAXE_OF_THE_SEEKER, "PICKAXE_OF_THE_SEEKER", RecipeType.MAGIC_WORKBENCH, + new PickaxeOfTheSeeker(Categories.TOOLS, SlimefunItems.PICKAXE_OF_THE_SEEKER, "PICKAXE_OF_THE_SEEKER", RecipeType.MAGIC_WORKBENCH, new ItemStack[] {new ItemStack(Material.COMPASS), SlimefunItems.SYNTHETIC_DIAMOND, new ItemStack(Material.COMPASS), null, SlimefunItems.FERROSILICON, null, null, SlimefunItems.FERROSILICON, null}) - .register(true, new ItemInteractionHandler() { - - @Override - public boolean onRightClick(ItemUseEvent e, Player p, ItemStack item) { - if (SlimefunManager.isItemSimiliar(item, SlimefunItems.PICKAXE_OF_THE_SEEKER, true)) { - Block closest = null; - - for (int x = -4; x <= 4; x++) { - for (int y = -4; y <= 4; y++) { - for (int z = -4; z <= 4; z++) { - if (p.getLocation().getBlock().getRelative(x, y, z).getType().toString().endsWith("_ORE")) { - if (closest == null || p.getLocation().distance(closest.getLocation()) < p.getLocation().distance(p.getLocation().getBlock().getRelative(x, y, z).getLocation())) - closest = p.getLocation().getBlock().getRelative(x, y, z); - } - } - } - } - - if (closest == null) Messages.local.sendTranslation(p, "miner.no-ores", true); - else { - double l = closest.getX() + 0.5 - p.getLocation().getX(); - double w = closest.getZ() + 0.5 - p.getLocation().getZ(); - float yaw; - float pitch; - double c = Math.sqrt(l * l + w * w); - double alpha1 = -Math.asin(l / c) / Math.PI * 180; - double alpha2 = Math.acos(w / c) / Math.PI * 180; - if (alpha2 > 90) yaw = (float) (180 - alpha1); - else yaw = (float) alpha1; - pitch = (float) ((-Math.atan((closest.getY() - 0.5 - p.getLocation().getY()) / Math.sqrt(l * l + w * w))) * 180F / Math.PI); - - p.teleport(new Location(p.getWorld(), p.getLocation().getX(), p.getLocation().getY(), p.getLocation().getZ(), yaw, pitch)); - } - - if (e.getPlayer().getInventory().getItemInMainHand().getEnchantments().containsKey(Enchantment.DURABILITY)) { - if (new Random().nextInt(100) <= (60 + 40 / (e.getPlayer().getInventory().getItemInMainHand().getEnchantmentLevel(Enchantment.DURABILITY) + 1))) PlayerInventory.damageItemInHand(e.getPlayer()); - } - else PlayerInventory.damageItemInHand(e.getPlayer()); - - PlayerInventory.update(e.getPlayer()); - return true; - } - else return false; - } - }); + .register(true); new SlimefunBackpack(9, Categories.PORTABLE, SlimefunItems.BACKPACK_SMALL, "SMALL_BACKPACK", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {new ItemStack(Material.LEATHER), null, new ItemStack(Material.LEATHER), SlimefunItems.GOLD_6K, new ItemStack(Material.CHEST), SlimefunItems.GOLD_6K, new ItemStack(Material.LEATHER), new ItemStack(Material.LEATHER), new ItemStack(Material.LEATHER)}) @@ -1717,60 +1609,9 @@ public final class SlimefunSetup { 0.45) .register(true); - new ExcludedTool(Categories.WEAPONS, SlimefunItems.SEISMIC_AXE, "SEISMIC_AXE", RecipeType.MAGIC_WORKBENCH, + new SeismicAxe(Categories.WEAPONS, SlimefunItems.SEISMIC_AXE, "SEISMIC_AXE", RecipeType.MAGIC_WORKBENCH, new ItemStack[] {SlimefunItems.HARDENED_METAL_INGOT, SlimefunItems.HARDENED_METAL_INGOT, null, SlimefunItems.HARDENED_METAL_INGOT, SlimefunItems.STAFF_ELEMENTAL, null, null, SlimefunItems.STAFF_ELEMENTAL, null}) - .register(true, new ItemInteractionHandler() { - - @Override - public boolean onRightClick(ItemUseEvent e, Player p, ItemStack item) { - if (SlimefunManager.isItemSimiliar(item, SlimefunItems.SEISMIC_AXE, true)) { - List blocks = p.getLineOfSight(null, 10); - for (int i = 0; i < blocks.size(); i++) { - Block b = blocks.get(i); - Location ground = b.getLocation(); - if (b.getType() == null || b.getType() == Material.AIR) { - for (int y = ground.getBlockY(); y > 0; y--) { - if (b.getWorld().getBlockAt(b.getX(), y, b.getZ()) != null && b.getWorld().getBlockAt(b.getX(), y, b.getZ()).getType() != null && b.getWorld().getBlockAt(b.getX(), y, b.getZ()).getType() != Material.AIR) { - ground = new Location(b.getWorld(), b.getX(), y, b.getZ()); - break; - } - } - } - b.getWorld().playEffect(ground, Effect.STEP_SOUND, ground.getBlock().getType()); - if (ground.getBlock().getRelative(BlockFace.UP).getType() == null || ground.getBlock().getRelative(BlockFace.UP).getType() == Material.AIR) { - FallingBlock block = ground.getWorld().spawnFallingBlock(ground.getBlock().getRelative(BlockFace.UP).getLocation(), ground.getBlock().getBlockData()); - block.setDropItem(false); - block.setVelocity(new Vector(0, 0.4 + i * 0.01, 0)); - SlimefunPlugin.getUtilities().blocks.add(block.getUniqueId()); - } - for (Entity n: ground.getChunk().getEntities()) { - if (n instanceof LivingEntity && n.getLocation().distance(ground) <= 2.0D && !n.getUniqueId().equals(p.getUniqueId())) { - Vector vector = n.getLocation().toVector().subtract(p.getLocation().toVector()).normalize().multiply(1.4); - vector.setY(0.9); - n.setVelocity(vector); - - if (p.getWorld().getPVP()) { - EntityDamageByEntityEvent event = new EntityDamageByEntityEvent(p, n, DamageCause.ENTITY_ATTACK, 6D); - Bukkit.getPluginManager().callEvent(event); - if (!event.isCancelled()) ((LivingEntity) n).damage(6D); - } - } - } - } - - for (int i = 0; i < 4; i++) { - if (e.getPlayer().getInventory().getItemInMainHand() != null) { - if (e.getPlayer().getInventory().getItemInMainHand().getEnchantments().containsKey(Enchantment.DURABILITY)) { - if (random.nextInt(100) <= (60 + 40 / (e.getPlayer().getInventory().getItemInMainHand().getEnchantmentLevel(Enchantment.DURABILITY) + 1))) PlayerInventory.damageItemInHand(e.getPlayer()); - } - else PlayerInventory.damageItemInHand(e.getPlayer()); - } - } - return true; - } - else return false; - } - }); + .register(true); new SlimefunItem(Categories.TOOLS, SlimefunItems.PICKAXE_OF_VEIN_MINING, "PICKAXE_OF_VEIN_MINING", RecipeType.MAGIC_WORKBENCH, new ItemStack[] {new ItemStack(Material.EMERALD_ORE), SlimefunItems.SYNTHETIC_DIAMOND, new ItemStack(Material.EMERALD_ORE), null, SlimefunItems.GILDED_IRON, null, null, SlimefunItems.GILDED_IRON, null}) From a819d4ece2851bc00f2606a1f4784762e4af571c Mon Sep 17 00:00:00 2001 From: ajan-12 <36973731+ajan-12@users.noreply.github.com> Date: Sun, 1 Sep 2019 19:39:28 +0300 Subject: [PATCH 112/169] Fixing Diet Cookie crashing the server. --- .../Slimefun/Objects/SlimefunItem/items/DietCookie.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/DietCookie.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/DietCookie.java index 199337f65..b70889380 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/DietCookie.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/DietCookie.java @@ -28,10 +28,10 @@ public class DietCookie extends SimpleSlimefunItem { int amount = item.getAmount(); if (amount <= 1) { if (e.getParentEvent().getHand() == EquipmentSlot.HAND) { - p.getInventory().setItemInMainHand(null); + item.setAmount(0); } else { - p.getInventory().setItemInOffHand(null); + item.setAmount(0); } } else { From 2056e62e0198b4ad92079ec8d805ef7597a2a37c Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Sun, 1 Sep 2019 18:53:02 +0200 Subject: [PATCH 113/169] Fixed Explosive Shovel duplication bug --- .../SlimefunItem/items/ExplosivePickaxe.java | 106 ++++++++++++++++++ .../SlimefunItem/items/ExplosiveShovel.java | 90 +++++++++++++++ .../Slimefun/SlimefunPlugin.java | 9 +- 3 files changed, 204 insertions(+), 1 deletion(-) create mode 100644 src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/ExplosivePickaxe.java create mode 100644 src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/ExplosiveShovel.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/ExplosivePickaxe.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/ExplosivePickaxe.java new file mode 100644 index 000000000..2d93e06be --- /dev/null +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/ExplosivePickaxe.java @@ -0,0 +1,106 @@ +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items; + +import java.util.List; +import java.util.Random; + +import org.bukkit.Effect; +import org.bukkit.Material; +import org.bukkit.Sound; +import org.bukkit.block.Block; +import org.bukkit.enchantments.Enchantment; +import org.bukkit.event.block.BlockBreakEvent; +import org.bukkit.inventory.ItemStack; + +import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib; +import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; +import me.mrCookieSlime.CSCoreLibPlugin.general.Player.PlayerInventory; +import me.mrCookieSlime.CSCoreLibPlugin.general.String.StringUtils; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; +import me.mrCookieSlime.Slimefun.Lists.RecipeType; +import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; +import me.mrCookieSlime.Slimefun.Objects.Category; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.HandledBlock; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.Interfaces.NotPlaceable; +import me.mrCookieSlime.Slimefun.Objects.handlers.BlockBreakHandler; +import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; +import me.mrCookieSlime.Slimefun.api.BlockStorage; +import me.mrCookieSlime.Slimefun.api.Slimefun; + +public class ExplosivePickaxe extends SlimefunItem implements NotPlaceable { + + private String[] blacklist; + private boolean damageOnUse; + + public ExplosivePickaxe(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) { + Random random = new Random(); + + addItemHandler(new BlockBreakHandler() { + + @Override + public boolean onBlockBreak(BlockBreakEvent e, ItemStack item, int fortune, List drops) { + if (SlimefunManager.isItemSimiliar(item, SlimefunItems.EXPLOSIVE_PICKAXE, true)) { + e.getBlock().getWorld().createExplosion(e.getBlock().getLocation(), 0.0F); + e.getBlock().getWorld().playSound(e.getBlock().getLocation(), Sound.ENTITY_GENERIC_EXPLODE, 1F, 1F); + for (int x = -1; x <= 1; x++) { + for (int y = -1; y <= 1; y++) { + for (int z = -1; z <= 1; z++) { + Block b = e.getBlock().getRelative(x, y, z); + if (b.getType() != Material.AIR && !b.isLiquid() && !StringUtils.equals(b.getType().toString(), blacklist) && CSCoreLib.getLib().getProtectionManager().canBuild(e.getPlayer().getUniqueId(), b)) { + if (SlimefunPlugin.getHooks().isCoreProtectInstalled()) { + SlimefunPlugin.getHooks().getCoreProtectAPI().logRemoval(e.getPlayer().getName(), b.getLocation(), b.getType(), b.getBlockData()); + } + + 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 (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())); + } + } + else if (b.getType() == Material.PLAYER_HEAD) { + b.breakNaturally(); + } + else if (b.getType().name().endsWith("_SHULKER_BOX")) { + b.breakNaturally(); + } + else { + for (ItemStack drop: b.getDrops()) { + b.getWorld().dropItemNaturally(b.getLocation(), (b.getType().toString().endsWith("_ORE") && b.getType() != Material.IRON_ORE && b.getType() != Material.GOLD_ORE) ? new CustomItem(drop, fortune): drop); + } + b.setType(Material.AIR); + } + if (damageOnUse && !item.getEnchantments().containsKey(Enchantment.DURABILITY) || random.nextInt(100) <= (60 + 40 / (item.getEnchantmentLevel(Enchantment.DURABILITY) + 1))) { + PlayerInventory.damageItemInHand(e.getPlayer()); + } + } + } + } + } + + PlayerInventory.update(e.getPlayer()); + return true; + } + else return false; + } + }); + + super.register(slimefun); + damageOnUse = ((Boolean) Slimefun.getItemValue(getID(), "damage-on-use")); + + Object value = Slimefun.getItemValue(getID(), "unbreakable-blocks"); + blacklist = ((List) value).stream().toArray(String[]::new); + } + +} diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/ExplosiveShovel.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/ExplosiveShovel.java new file mode 100644 index 000000000..e13df26c3 --- /dev/null +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/ExplosiveShovel.java @@ -0,0 +1,90 @@ +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items; + +import java.util.List; +import java.util.Random; + +import org.bukkit.Effect; +import org.bukkit.Material; +import org.bukkit.Sound; +import org.bukkit.block.Block; +import org.bukkit.enchantments.Enchantment; +import org.bukkit.event.block.BlockBreakEvent; +import org.bukkit.inventory.ItemStack; + +import io.github.thebusybiscuit.cscorelib2.materials.MaterialTools; +import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib; +import me.mrCookieSlime.CSCoreLibPlugin.general.Player.PlayerInventory; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; +import me.mrCookieSlime.Slimefun.Lists.RecipeType; +import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; +import me.mrCookieSlime.Slimefun.Objects.Category; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.Interfaces.NotPlaceable; +import me.mrCookieSlime.Slimefun.Objects.handlers.BlockBreakHandler; +import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; +import me.mrCookieSlime.Slimefun.api.Slimefun; + +public class ExplosiveShovel extends SlimefunItem implements NotPlaceable { + + private boolean damageOnUse; + + public ExplosiveShovel(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) { + Random random = new Random(); + + addItemHandler(new BlockBreakHandler() { + + @Override + public boolean onBlockBreak(BlockBreakEvent e, ItemStack item, int fortune, List drops) { + if (SlimefunManager.isItemSimiliar(item, SlimefunItems.EXPLOSIVE_SHOVEL, true)) { + e.getBlock().getWorld().createExplosion(e.getBlock().getLocation(), 0.0F); + e.getBlock().getWorld().playSound(e.getBlock().getLocation(), Sound.ENTITY_GENERIC_EXPLODE, 1F, 1F); + for (int x = -1; x <= 1; x++) { + for (int y = -1; y <= 1; y++) { + for (int z = -1; z <= 1; z++) { + Block b = e.getBlock().getRelative(x, y, z); + boolean correctType = false; + for (Material mat : MaterialTools.getShovelItems()) { + if (b.getType() == mat) { + correctType = true; + break; + } + } + if (correctType) { + if (CSCoreLib.getLib().getProtectionManager().canBuild(e.getPlayer().getUniqueId(), b)) { + if (SlimefunPlugin.getHooks().isCoreProtectInstalled()) { + SlimefunPlugin.getHooks().getCoreProtectAPI().logRemoval(e.getPlayer().getName(), b.getLocation(), b.getType(), b.getBlockData()); + } + + b.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, b.getType()); + for (ItemStack drop: b.getDrops()) { + b.getWorld().dropItemNaturally(b.getLocation(), drop); + } + b.setType(Material.AIR); + if (damageOnUse) { + if (!item.getEnchantments().containsKey(Enchantment.DURABILITY) || random.nextInt(100) <= (60 + 40 / (item.getEnchantmentLevel(Enchantment.DURABILITY) + 1))) { + PlayerInventory.damageItemInHand(e.getPlayer()); + } + } + } + } + } + } + } + + PlayerInventory.update(e.getPlayer()); + return true; + } + else return false; + } + }); + + super.register(slimefun); + damageOnUse = ((Boolean) Slimefun.getItemValue(getID(), "damage-on-use")); + } + +} diff --git a/src/me/mrCookieSlime/Slimefun/SlimefunPlugin.java b/src/me/mrCookieSlime/Slimefun/SlimefunPlugin.java index e468f6b29..5d8c94f7d 100644 --- a/src/me/mrCookieSlime/Slimefun/SlimefunPlugin.java +++ b/src/me/mrCookieSlime/Slimefun/SlimefunPlugin.java @@ -12,6 +12,7 @@ import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.potion.PotionEffect; import org.bukkit.potion.PotionEffectType; +import io.github.thebusybiscuit.cscorelib2.protection.ProtectionManager; import io.github.thebusybiscuit.cscorelib2.updater.BukkitUpdater; import io.github.thebusybiscuit.cscorelib2.updater.GitHubBuildsUpdater; import io.github.thebusybiscuit.cscorelib2.updater.Updater; @@ -86,6 +87,7 @@ public final class SlimefunPlugin extends JavaPlugin { private Config config; public GPSNetwork gps = new GPSNetwork(); + private ProtectionManager protections; private Utilities utilities = new Utilities(); private Settings settings; private SlimefunHooks hooks; @@ -186,7 +188,7 @@ public final class SlimefunPlugin extends JavaPlugin { try { SlimefunSetup.setupItems(); } catch (Exception x) { - getLogger().log(Level.SEVERE, "An Error occured while initializing SlimefunItems for Slimefun " + Slimefun.getVersion()); + getLogger().log(Level.SEVERE, "An Error occured while initializing SlimefunItems for Slimefun " + Slimefun.getVersion(), x); } MiscSetup.loadDescriptions(); @@ -240,6 +242,7 @@ public final class SlimefunPlugin extends JavaPlugin { // Initiating various Stuff and all Items with a slightly delay (0ms after the Server finished loading) getServer().getScheduler().scheduleSyncDelayedTask(this, () -> { + protections = new ProtectionManager(getServer()); MiscSetup.loadItems(settings); for (World world: Bukkit.getWorlds()) { @@ -428,4 +431,8 @@ public final class SlimefunPlugin extends JavaPlugin { return instance != null; } + public static ProtectionManager getProtectionManager() { + return instance.protections; + } + } From 42cdd8494b79b3441e05f5cc3c9ad978e3fae134 Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Sun, 1 Sep 2019 18:54:18 +0200 Subject: [PATCH 114/169] Fixed Storm Staff bypassing PVP-free Worlds --- .../SlimefunItem/items/StormStaff.java | 4 +- .../Slimefun/Setup/SlimefunSetup.java | 117 ++---------------- 2 files changed, 9 insertions(+), 112 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/StormStaff.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/StormStaff.java index f2b787729..6c0b57dfe 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/StormStaff.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/StormStaff.java @@ -14,9 +14,9 @@ import org.bukkit.inventory.EquipmentSlot; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; -import io.github.thebusybiscuit.cscorelib2.protection.ProtectionManager; import io.github.thebusybiscuit.cscorelib2.protection.ProtectionModule; import me.mrCookieSlime.CSCoreLibPlugin.events.ItemUseEvent; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; import me.mrCookieSlime.Slimefun.Objects.Category; @@ -71,7 +71,7 @@ public class StormStaff extends SlimefunItem { Location loc = p.getTargetBlock(null, 30).getLocation(); if (loc.getWorld() != null && loc.getChunk().isLoaded()) { - if (new ProtectionManager(Bukkit.getServer()).hasPermission(p, loc, ProtectionModule.Action.PVP)) { + if (loc.getWorld().getPVP() && SlimefunPlugin.getProtectionManager().hasPermission(p, loc, ProtectionModule.Action.PVP)) { loc.getWorld().strikeLightning(loc); if (p.getInventory().getItemInMainHand().getType() != Material.SHEARS && p.getGameMode() != GameMode.CREATIVE) { diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java index d2fe34b1f..3247bca2b 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java @@ -23,7 +23,6 @@ import org.bukkit.block.Chest; import org.bukkit.block.Container; import org.bukkit.block.CreatureSpawner; import org.bukkit.block.data.Ageable; -import org.bukkit.enchantments.Enchantment; import org.bukkit.entity.ArmorStand; import org.bukkit.entity.EnderPearl; import org.bukkit.entity.Entity; @@ -43,7 +42,6 @@ import org.bukkit.potion.PotionEffect; import org.bukkit.potion.PotionEffectType; import org.bukkit.util.Vector; -import io.github.thebusybiscuit.cscorelib2.materials.MaterialTools; import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib; import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config; import me.mrCookieSlime.CSCoreLibPlugin.compatibility.MaterialHelper; @@ -73,7 +71,6 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.EnhancedFurnace; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.ExcludedBlock; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.ExcludedSoulboundTool; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.ExcludedTool; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.HandledBlock; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.JetBoots; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.Jetpack; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.Juice; @@ -101,6 +98,8 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.cargo.AdvancedCargoOutputN import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.cargo.CargoInputNode; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.cargo.CargoOutputNode; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.DietCookie; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.ExplosivePickaxe; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.ExplosiveShovel; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.GrapplingHook; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.PickaxeOfTheSeeker; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.SeismicAxe; @@ -1366,118 +1365,16 @@ public final class SlimefunSetup { new SlimefunItem(Categories.MAGIC_ARMOR, SlimefunItems.FARMER_SHOES, "FARMER_SHOES", RecipeType.ARMOR_FORGE, new ItemStack[] {null, null, null, new ItemStack(Material.HAY_BLOCK), null, new ItemStack(Material.HAY_BLOCK), new ItemStack(Material.HAY_BLOCK), null, new ItemStack(Material.HAY_BLOCK)}) .register(true); - - @SuppressWarnings("unchecked") - final String[] explosiveblacklist = Slimefun.getItemValue("EXPLOSIVE_PICKAXE", "unbreakable-blocks") != null ? ((List) Slimefun.getItemValue("EXPLOSIVE_PICKAXE", "unbreakable-blocks")).toArray(new String[((List) Slimefun.getItemValue("EXPLOSIVE_PICKAXE", "unbreakable-blocks")).size()]): new String[] {"BEDROCK", "BARRIER", "COMMAND", "COMMAND_CHAIN", "COMMAND_REPEATING"}; - final boolean damageOnUse = Boolean.TRUE.equals(((Boolean) Slimefun.getItemValue("EXPLOSIVE_PICKAXE", "damage-on-use"))); - - new SlimefunItem(Categories.TOOLS, SlimefunItems.EXPLOSIVE_PICKAXE, "EXPLOSIVE_PICKAXE", RecipeType.MAGIC_WORKBENCH, + + new ExplosivePickaxe(Categories.TOOLS, SlimefunItems.EXPLOSIVE_PICKAXE, "EXPLOSIVE_PICKAXE", RecipeType.MAGIC_WORKBENCH, new ItemStack[] {new ItemStack(Material.TNT), SlimefunItems.SYNTHETIC_DIAMOND, new ItemStack(Material.TNT), null, SlimefunItems.FERROSILICON, null, null, SlimefunItems.FERROSILICON, null}, new String[] {"unbreakable-blocks", "damage-on-use"}, new Object[] {Arrays.asList("BEDROCK", "BARRIER", "COMMAND", "COMMAND_CHAIN", "COMMAND_REPEATING"), Boolean.FALSE }) - .register(true, new BlockBreakHandler() { + .register(true); - @Override - public boolean onBlockBreak(BlockBreakEvent e, ItemStack item, int fortune, List drops) { - if (SlimefunManager.isItemSimiliar(item, SlimefunItems.EXPLOSIVE_PICKAXE, true)) { - e.getBlock().getWorld().createExplosion(e.getBlock().getLocation(), 0.0F); - e.getBlock().getWorld().playSound(e.getBlock().getLocation(), Sound.ENTITY_GENERIC_EXPLODE, 1F, 1F); - for (int x = -1; x <= 1; x++) { - for (int y = -1; y <= 1; y++) { - for (int z = -1; z <= 1; z++) { - Block b = e.getBlock().getRelative(x, y, z); - if (b.getType() != Material.AIR && !b.isLiquid() && !StringUtils.equals(b.getType().toString(), explosiveblacklist) && CSCoreLib.getLib().getProtectionManager().canBuild(e.getPlayer().getUniqueId(), b)) { - if (SlimefunPlugin.getHooks().isCoreProtectInstalled()) { - SlimefunPlugin.getHooks().getCoreProtectAPI().logRemoval(e.getPlayer().getName(), b.getLocation(), b.getType(), b.getBlockData()); - } - - 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 (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())); - } - } - else if (b.getType() == Material.PLAYER_HEAD) { - b.breakNaturally(); - } - else if (b.getType().name().endsWith("_SHULKER_BOX")) { - b.breakNaturally(); - } - else { - for (ItemStack drop: b.getDrops()) { - b.getWorld().dropItemNaturally(b.getLocation(), (b.getType().toString().endsWith("_ORE") && b.getType() != Material.IRON_ORE && b.getType() != Material.GOLD_ORE) ? new CustomItem(drop, fortune): drop); - } - b.setType(Material.AIR); - } - if (damageOnUse && !item.getEnchantments().containsKey(Enchantment.DURABILITY) || random.nextInt(100) <= (60 + 40 / (item.getEnchantmentLevel(Enchantment.DURABILITY) + 1))) { - PlayerInventory.damageItemInHand(e.getPlayer()); - } - } - } - } - } - - PlayerInventory.update(e.getPlayer()); - return true; - } - else return false; - } - }); - - new SlimefunItem(Categories.TOOLS, SlimefunItems.EXPLOSIVE_SHOVEL, "EXPLOSIVE_SHOVEL", RecipeType.MAGIC_WORKBENCH, + new ExplosiveShovel(Categories.TOOLS, SlimefunItems.EXPLOSIVE_SHOVEL, "EXPLOSIVE_SHOVEL", RecipeType.MAGIC_WORKBENCH, new ItemStack[] {null, SlimefunItems.SYNTHETIC_DIAMOND, null, null, new ItemStack(Material.TNT), null, null, SlimefunItems.FERROSILICON, null}, new String[] {"damage-on-use"}, new Object[] {Boolean.FALSE }) - .register(true, new BlockBreakHandler() { - - @Override - public boolean onBlockBreak(BlockBreakEvent e, ItemStack item, int fortune, List drops) { - if (SlimefunManager.isItemSimiliar(item, SlimefunItems.EXPLOSIVE_SHOVEL, true)) { - e.getBlock().getWorld().createExplosion(e.getBlock().getLocation(), 0.0F); - e.getBlock().getWorld().playSound(e.getBlock().getLocation(), Sound.ENTITY_GENERIC_EXPLODE, 1F, 1F); - for (int x = -1; x <= 1; x++) { - for (int y = -1; y <= 1; y++) { - for (int z = -1; z <= 1; z++) { - Block b = e.getBlock().getRelative(x, y, z); - boolean correctType = false; - for (Material mat : MaterialTools.getShovelItems()) { - if (b.getType() == mat) { - correctType = true; - break; - } - } - if (correctType) { - if (CSCoreLib.getLib().getProtectionManager().canBuild(e.getPlayer().getUniqueId(), b)) { - if (SlimefunPlugin.getHooks().isCoreProtectInstalled()) { - SlimefunPlugin.getHooks().getCoreProtectAPI().logRemoval(e.getPlayer().getName(), b.getLocation(), b.getType(), b.getBlockData()); - } - - b.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, b.getType()); - for (ItemStack drop: b.getDrops()) { - b.getWorld().dropItemNaturally(b.getLocation(), drop); - } - b.setType(Material.AIR); - if (damageOnUse) { - if (!item.getEnchantments().containsKey(Enchantment.DURABILITY) || random.nextInt(100) <= (60 + 40 / (item.getEnchantmentLevel(Enchantment.DURABILITY) + 1))) { - PlayerInventory.damageItemInHand(e.getPlayer()); - } - } - } - } - } - } - } - - PlayerInventory.update(e.getPlayer()); - return true; - } - else return false; - } - }); + .register(true); new AutomatedPanningMachine().register(); From 62a4584a226cabcb252cda5a31b9d50ff71e71a7 Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Sun, 1 Sep 2019 18:58:17 +0200 Subject: [PATCH 115/169] Update README.md --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 3871b6d53..6cf538887 100644 --- a/README.md +++ b/README.md @@ -24,6 +24,9 @@ Release Candidates or "stable" builds will have a proper Version such as "4.1.18

+You can also find the most recent development builds for all my other Plugins (including Slimefun Addons) on here: +https://thebusybiscuit.github.io/builds/ + ## Discord You can find Slimefun's community on Discord! Click the badge to join it for Suggestions/Questions or other discussions about this plugin. From 1eb2c217d9394cc95d776df394cb636234b32e7a Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Sun, 1 Sep 2019 19:05:09 +0200 Subject: [PATCH 116/169] Create features.md --- .github/PULL_REQUEST_TEMPLATE/features.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 .github/PULL_REQUEST_TEMPLATE/features.md diff --git a/.github/PULL_REQUEST_TEMPLATE/features.md b/.github/PULL_REQUEST_TEMPLATE/features.md new file mode 100644 index 000000000..3d0ddd13a --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE/features.md @@ -0,0 +1,15 @@ +## Description + + +## How this benefits Slimefun + + + +## Related Issues (Optional) + + + +## Testability + +[ ] I have fully tested the proposed changes and promise that they will not break everything into chaos. +[ ] I have also tested the proposed changes in combination with various popular addons and can confirm my changes do not break them. From 37f57bd101df24475e45296c7bca5d5d57e09971 Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Sun, 1 Sep 2019 19:05:39 +0200 Subject: [PATCH 117/169] Create fix.md --- .github/PULL_REQUEST_TEMPLATE/fix.md | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 .github/PULL_REQUEST_TEMPLATE/fix.md diff --git a/.github/PULL_REQUEST_TEMPLATE/fix.md b/.github/PULL_REQUEST_TEMPLATE/fix.md new file mode 100644 index 000000000..cf79b2d0f --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE/fix.md @@ -0,0 +1,11 @@ +## Description + + +## Related Issues + + + +## Testability + +[ ] I have fully tested the proposed changes and promise that they will not break everything into chaos. +[ ] I have also tested the proposed changes in combination with various popular addons and can confirm my changes do not break them. From cd22ad7d534edd10eb9ca2da3703c6406dd81d31 Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Sun, 1 Sep 2019 19:09:56 +0200 Subject: [PATCH 118/169] Update features.md --- .github/PULL_REQUEST_TEMPLATE/features.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/PULL_REQUEST_TEMPLATE/features.md b/.github/PULL_REQUEST_TEMPLATE/features.md index 3d0ddd13a..4df69a71d 100644 --- a/.github/PULL_REQUEST_TEMPLATE/features.md +++ b/.github/PULL_REQUEST_TEMPLATE/features.md @@ -1,6 +1,9 @@ ## Description +## Changes + + ## How this benefits Slimefun From 8e73f94a3a2ce663e1165e34b6de8da957ab149e Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Sun, 1 Sep 2019 19:10:19 +0200 Subject: [PATCH 119/169] Update fix.md --- .github/PULL_REQUEST_TEMPLATE/fix.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/PULL_REQUEST_TEMPLATE/fix.md b/.github/PULL_REQUEST_TEMPLATE/fix.md index cf79b2d0f..ebb8e24f8 100644 --- a/.github/PULL_REQUEST_TEMPLATE/fix.md +++ b/.github/PULL_REQUEST_TEMPLATE/fix.md @@ -1,6 +1,9 @@ ## Description +## Changes + + ## Related Issues From 71896617e49d79a4534184fd36c44ba4acba6862 Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Sun, 1 Sep 2019 19:10:52 +0200 Subject: [PATCH 120/169] Created Pull Request Templates --- .github/PULL_REQUEST_TEMPLATE.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 .github/PULL_REQUEST_TEMPLATE.md diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 000000000..86a92e931 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,14 @@ +## Description + + +## Changes + + +## Related Issues + + + +## Testability + +[ ] I have fully tested the proposed changes and promise that they will not break everything into chaos. +[ ] I have also tested the proposed changes in combination with various popular addons and can confirm my changes do not break them. From 224510d2cc67d7afd47fda5fea23d5b1dd712551 Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Sun, 1 Sep 2019 19:31:12 +0200 Subject: [PATCH 121/169] Added ItemConsumptionHandler --- .../SlimefunItem/items/DietCookie.java | 50 ++++++++----------- .../SlimefunItem/items/ExplosivePickaxe.java | 20 ++++---- .../SlimefunItem/items/ExplosiveShovel.java | 21 ++++---- .../SlimefunItem/items/SeismicAxe.java | 19 ++++--- .../handlers/ItemConsumptionHandler.java | 16 ++++++ .../Slimefun/Setup/SlimefunSetup.java | 22 +++++++- .../Slimefun/listeners/ItemListener.java | 28 ++++------- .../Slimefun/utils/DamageableItem.java | 30 +++++++++++ 8 files changed, 127 insertions(+), 79 deletions(-) create mode 100644 src/me/mrCookieSlime/Slimefun/Objects/handlers/ItemConsumptionHandler.java create mode 100644 src/me/mrCookieSlime/Slimefun/utils/DamageableItem.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/DietCookie.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/DietCookie.java index b70889380..92c7ce188 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/DietCookie.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/DietCookie.java @@ -2,51 +2,43 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items; import org.bukkit.ChatColor; import org.bukkit.Sound; -import org.bukkit.inventory.EquipmentSlot; +import org.bukkit.entity.Player; +import org.bukkit.event.player.PlayerItemConsumeEvent; import org.bukkit.inventory.ItemStack; import org.bukkit.potion.PotionEffectType; import me.mrCookieSlime.Slimefun.Lists.RecipeType; -import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; import me.mrCookieSlime.Slimefun.Objects.Category; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SimpleSlimefunItem; -import me.mrCookieSlime.Slimefun.Objects.handlers.ItemInteractionHandler; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; +import me.mrCookieSlime.Slimefun.Objects.handlers.ItemConsumptionHandler; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; -public class DietCookie extends SimpleSlimefunItem { +public class DietCookie extends SlimefunItem { public DietCookie(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe) { super(category, item, id, recipeType, recipe); } @Override - public ItemInteractionHandler onRightClick() { - return (e, p, item) -> { - if (SlimefunManager.isItemSimiliar(item, SlimefunItems.DIET_COOKIE, true)) { - e.setCancelled(true); + public void register(boolean slimefun) { + addItemHandler(new ItemConsumptionHandler() { + + @Override + public boolean onConsume(PlayerItemConsumeEvent e, Player p, ItemStack item) { + if (SlimefunManager.isItemSimiliar(item, getItem(), true)) { + p.sendMessage(ChatColor.YELLOW + "You feel so light..."); + p.playSound(p.getLocation(), Sound.ENTITY_GENERIC_EAT, 1, 1); - int amount = item.getAmount(); - if (amount <= 1) { - if (e.getParentEvent().getHand() == EquipmentSlot.HAND) { - item.setAmount(0); - } - else { - item.setAmount(0); - } + if (p.hasPotionEffect(PotionEffectType.LEVITATION)) p.removePotionEffect(PotionEffectType.LEVITATION); + p.addPotionEffect(PotionEffectType.LEVITATION.createEffect(60, 1)); + + return true; } - else { - item.setAmount(amount - 1); - } - - p.sendMessage(ChatColor.YELLOW + "You feel so light..."); - p.playSound(p.getLocation(), Sound.ENTITY_GENERIC_EAT, 1, 1); - - if (p.hasPotionEffect(PotionEffectType.LEVITATION)) p.removePotionEffect(PotionEffectType.LEVITATION); - p.addPotionEffect(PotionEffectType.LEVITATION.createEffect(60, 1)); - return true; + return false; } - return false; - }; + }); + + super.register(slimefun); } } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/ExplosivePickaxe.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/ExplosivePickaxe.java index 2d93e06be..7358d94cd 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/ExplosivePickaxe.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/ExplosivePickaxe.java @@ -1,19 +1,16 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items; import java.util.List; -import java.util.Random; import org.bukkit.Effect; import org.bukkit.Material; import org.bukkit.Sound; import org.bukkit.block.Block; -import org.bukkit.enchantments.Enchantment; import org.bukkit.event.block.BlockBreakEvent; import org.bukkit.inventory.ItemStack; import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; -import me.mrCookieSlime.CSCoreLibPlugin.general.Player.PlayerInventory; import me.mrCookieSlime.CSCoreLibPlugin.general.String.StringUtils; import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.Lists.RecipeType; @@ -27,8 +24,9 @@ import me.mrCookieSlime.Slimefun.Objects.handlers.BlockBreakHandler; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.api.BlockStorage; import me.mrCookieSlime.Slimefun.api.Slimefun; +import me.mrCookieSlime.Slimefun.utils.DamageableItem; -public class ExplosivePickaxe extends SlimefunItem implements NotPlaceable { +public class ExplosivePickaxe extends SlimefunItem implements NotPlaceable, DamageableItem { private String[] blacklist; private boolean damageOnUse; @@ -39,7 +37,6 @@ public class ExplosivePickaxe extends SlimefunItem implements NotPlaceable { @Override public void register(boolean slimefun) { - Random random = new Random(); addItemHandler(new BlockBreakHandler() { @@ -81,15 +78,13 @@ public class ExplosivePickaxe extends SlimefunItem implements NotPlaceable { } b.setType(Material.AIR); } - if (damageOnUse && !item.getEnchantments().containsKey(Enchantment.DURABILITY) || random.nextInt(100) <= (60 + 40 / (item.getEnchantmentLevel(Enchantment.DURABILITY) + 1))) { - PlayerInventory.damageItemInHand(e.getPlayer()); - } + + damageItem(e.getPlayer(), item); } } } } - - PlayerInventory.update(e.getPlayer()); + return true; } else return false; @@ -103,4 +98,9 @@ public class ExplosivePickaxe extends SlimefunItem implements NotPlaceable { blacklist = ((List) value).stream().toArray(String[]::new); } + @Override + public boolean isDamageable() { + return damageOnUse; + } + } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/ExplosiveShovel.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/ExplosiveShovel.java index e13df26c3..dad334f4b 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/ExplosiveShovel.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/ExplosiveShovel.java @@ -1,19 +1,16 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items; import java.util.List; -import java.util.Random; import org.bukkit.Effect; import org.bukkit.Material; import org.bukkit.Sound; import org.bukkit.block.Block; -import org.bukkit.enchantments.Enchantment; import org.bukkit.event.block.BlockBreakEvent; import org.bukkit.inventory.ItemStack; import io.github.thebusybiscuit.cscorelib2.materials.MaterialTools; import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib; -import me.mrCookieSlime.CSCoreLibPlugin.general.Player.PlayerInventory; import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; @@ -23,8 +20,9 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.Interfaces.NotPlaceable; import me.mrCookieSlime.Slimefun.Objects.handlers.BlockBreakHandler; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.api.Slimefun; +import me.mrCookieSlime.Slimefun.utils.DamageableItem; -public class ExplosiveShovel extends SlimefunItem implements NotPlaceable { +public class ExplosiveShovel extends SlimefunItem implements NotPlaceable, DamageableItem { private boolean damageOnUse; @@ -34,8 +32,6 @@ public class ExplosiveShovel extends SlimefunItem implements NotPlaceable { @Override public void register(boolean slimefun) { - Random random = new Random(); - addItemHandler(new BlockBreakHandler() { @Override @@ -65,18 +61,14 @@ public class ExplosiveShovel extends SlimefunItem implements NotPlaceable { b.getWorld().dropItemNaturally(b.getLocation(), drop); } b.setType(Material.AIR); - if (damageOnUse) { - if (!item.getEnchantments().containsKey(Enchantment.DURABILITY) || random.nextInt(100) <= (60 + 40 / (item.getEnchantmentLevel(Enchantment.DURABILITY) + 1))) { - PlayerInventory.damageItemInHand(e.getPlayer()); - } - } + + damageItem(e.getPlayer(), item); } } } } } - PlayerInventory.update(e.getPlayer()); return true; } else return false; @@ -87,4 +79,9 @@ public class ExplosiveShovel extends SlimefunItem implements NotPlaceable { damageOnUse = ((Boolean) Slimefun.getItemValue(getID(), "damage-on-use")); } + @Override + public boolean isDamageable() { + return damageOnUse; + } + } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/SeismicAxe.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/SeismicAxe.java index a627430da..1ccb6a7f4 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/SeismicAxe.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/SeismicAxe.java @@ -1,7 +1,6 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items; import java.util.List; -import java.util.Random; import org.bukkit.Bukkit; import org.bukkit.Effect; @@ -9,7 +8,6 @@ import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.block.Block; import org.bukkit.block.BlockFace; -import org.bukkit.enchantments.Enchantment; import org.bukkit.entity.Entity; import org.bukkit.entity.FallingBlock; import org.bukkit.entity.LivingEntity; @@ -18,7 +16,6 @@ import org.bukkit.event.entity.EntityDamageEvent.DamageCause; import org.bukkit.inventory.ItemStack; import org.bukkit.util.Vector; -import me.mrCookieSlime.CSCoreLibPlugin.general.Player.PlayerInventory; import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; @@ -27,8 +24,9 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SimpleSlimefunItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.Interfaces.NotPlaceable; import me.mrCookieSlime.Slimefun.Objects.handlers.ItemInteractionHandler; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; +import me.mrCookieSlime.Slimefun.utils.DamageableItem; -public class SeismicAxe extends SimpleSlimefunItem implements NotPlaceable { +public class SeismicAxe extends SimpleSlimefunItem implements NotPlaceable, DamageableItem { public SeismicAxe(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe) { super(category, item, id, recipeType, recipe); @@ -73,17 +71,18 @@ public class SeismicAxe extends SimpleSlimefunItem implements NotPlaceable { } for (int i = 0; i < 4; i++) { - if (e.getPlayer().getInventory().getItemInMainHand() != null) { - if (e.getPlayer().getInventory().getItemInMainHand().getEnchantments().containsKey(Enchantment.DURABILITY)) { - if (new Random().nextInt(100) <= (60 + 40 / (e.getPlayer().getInventory().getItemInMainHand().getEnchantmentLevel(Enchantment.DURABILITY) + 1))) PlayerInventory.damageItemInHand(e.getPlayer()); - } - else PlayerInventory.damageItemInHand(e.getPlayer()); - } + damageItem(p, item); } + return true; } else return false; }; } + @Override + public boolean isDamageable() { + return true; + } + } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/handlers/ItemConsumptionHandler.java b/src/me/mrCookieSlime/Slimefun/Objects/handlers/ItemConsumptionHandler.java new file mode 100644 index 000000000..6ce9b7c32 --- /dev/null +++ b/src/me/mrCookieSlime/Slimefun/Objects/handlers/ItemConsumptionHandler.java @@ -0,0 +1,16 @@ +package me.mrCookieSlime.Slimefun.Objects.handlers; + +import org.bukkit.entity.Player; +import org.bukkit.event.player.PlayerItemConsumeEvent; +import org.bukkit.inventory.ItemStack; + +@FunctionalInterface +public interface ItemConsumptionHandler extends ItemHandler { + + boolean onConsume(PlayerItemConsumeEvent e, Player p, ItemStack item); + + default String toCodename() { + return "ItemConsumptionHandler"; + } + +} diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java index 3247bca2b..09ac5a459 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java @@ -34,6 +34,7 @@ import org.bukkit.event.block.BlockBreakEvent; import org.bukkit.event.block.BlockPlaceEvent; import org.bukkit.event.entity.EntityDamageByEntityEvent; import org.bukkit.event.entity.FoodLevelChangeEvent; +import org.bukkit.event.player.PlayerItemConsumeEvent; import org.bukkit.inventory.EquipmentSlot; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; @@ -154,6 +155,7 @@ import me.mrCookieSlime.Slimefun.Objects.handlers.BlockBreakHandler; import me.mrCookieSlime.Slimefun.Objects.handlers.BlockPlaceHandler; import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker; import me.mrCookieSlime.Slimefun.Objects.handlers.BowShootHandler; +import me.mrCookieSlime.Slimefun.Objects.handlers.ItemConsumptionHandler; import me.mrCookieSlime.Slimefun.Objects.handlers.ItemInteractionHandler; import me.mrCookieSlime.Slimefun.Objects.handlers.MultiBlockInteractionHandler; import me.mrCookieSlime.Slimefun.Objects.tasks.RainbowTicker; @@ -331,7 +333,25 @@ public final class SlimefunSetup { new SlimefunItem(Categories.FOOD, SlimefunItems.MONSTER_JERKY, "MONSTER_JERKY", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {SlimefunItems.SALT, new ItemStack(Material.ROTTEN_FLESH), null, null, null, null, null, null, null}) - .register(true); + .register(true, new ItemConsumptionHandler() { + + @Override + public boolean onConsume(PlayerItemConsumeEvent e, Player p, ItemStack item) { + if (SlimefunManager.isItemSimiliar(item, SlimefunItems.MONSTER_JERKY, true)) { + SlimefunPlugin.instance.getServer().getScheduler().runTaskLater(SlimefunPlugin.instance, () -> { + if (p.hasPotionEffect(PotionEffectType.HUNGER)) { + p.removePotionEffect(PotionEffectType.HUNGER); + } + + p.addPotionEffect(new PotionEffect(PotionEffectType.SATURATION, 5, 0)); + }, 1L); + return true; + } + else { + return false; + } + } + }); new SlimefunItem(Categories.MAGIC_ARMOR, SlimefunItems.SLIME_HELMET, "SLIME_HELMET", RecipeType.ARMOR_FORGE, new ItemStack[] {new ItemStack(Material.SLIME_BALL), new ItemStack(Material.IRON_INGOT), new ItemStack(Material.SLIME_BALL), new ItemStack(Material.IRON_INGOT), null, new ItemStack(Material.IRON_INGOT), null, null, null}) diff --git a/src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java b/src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java index 002ca8a4c..7e1eca4bc 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java @@ -21,10 +21,10 @@ import org.bukkit.event.Listener; import org.bukkit.event.block.Action; import org.bukkit.event.entity.EntityChangeBlockEvent; import org.bukkit.event.inventory.CraftItemEvent; -import org.bukkit.event.inventory.PrepareItemCraftEvent; import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.event.inventory.InventoryMoveItemEvent; import org.bukkit.event.inventory.InventoryType; +import org.bukkit.event.inventory.PrepareItemCraftEvent; import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.event.player.PlayerItemConsumeEvent; import org.bukkit.inventory.BrewerInventory; @@ -38,8 +38,6 @@ import org.bukkit.potion.PotionEffectType; import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib; import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Variable; import me.mrCookieSlime.CSCoreLibPlugin.events.ItemUseEvent; -import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.InvUtils; -import me.mrCookieSlime.CSCoreLibPlugin.general.Player.PlayerInventory; import me.mrCookieSlime.CSCoreLibPlugin.general.World.CustomSkull; import me.mrCookieSlime.Slimefun.SlimefunGuide; import me.mrCookieSlime.Slimefun.SlimefunPlugin; @@ -47,13 +45,14 @@ import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.Juice; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.MultiTool; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; +import me.mrCookieSlime.Slimefun.Objects.handlers.ItemConsumptionHandler; import me.mrCookieSlime.Slimefun.Objects.handlers.ItemHandler; import me.mrCookieSlime.Slimefun.Objects.handlers.ItemInteractionHandler; import me.mrCookieSlime.Slimefun.Setup.Messages; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.api.BlockStorage; -import me.mrCookieSlime.Slimefun.api.SlimefunGuideLayout; import me.mrCookieSlime.Slimefun.api.Slimefun; +import me.mrCookieSlime.Slimefun.api.SlimefunGuideLayout; import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock; import me.mrCookieSlime.Slimefun.api.energy.ItemEnergy; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu; @@ -304,19 +303,13 @@ public class ItemListener implements Listener { if (e.getItem() != null) { final Player p = e.getPlayer(); ItemStack item = e.getItem(); + if (Slimefun.hasUnlocked(p, item, true)) { - if (SlimefunManager.isItemSimiliar(item, SlimefunItems.MONSTER_JERKY, true)) { - e.setCancelled(true); - if (SlimefunManager.isItemSimiliar(p.getInventory().getItemInOffHand(), SlimefunItems.MONSTER_JERKY, true)) { - p.getInventory().setItemInOffHand(InvUtils.decreaseItem(p.getInventory().getItemInOffHand(), 1)); - } - else{ - p.getInventory().setItemInMainHand(InvUtils.decreaseItem(p.getInventory().getItemInMainHand(), 1)); - } - PlayerInventory.update(p); - p.addPotionEffect(new PotionEffect(PotionEffectType.SATURATION, 5, 0)); + for (ItemHandler handler : SlimefunItem.getHandlers("ItemConsumptionHandler")) { + if (((ItemConsumptionHandler) handler).onConsume(e, p, item)) return; } - else if (SlimefunManager.isItemSimiliar(item, SlimefunItems.FORTUNE_COOKIE, true)) p.sendMessage(ChatColor.translateAlternateColorCodes('&', Messages.local.getTranslation("messages.fortune-cookie").get(CSCoreLib.randomizer().nextInt(Messages.local.getTranslation("messages.fortune-cookie").size())))); + + if (SlimefunManager.isItemSimiliar(item, SlimefunItems.FORTUNE_COOKIE, true)) p.sendMessage(ChatColor.translateAlternateColorCodes('&', Messages.local.getTranslation("messages.fortune-cookie").get(CSCoreLib.randomizer().nextInt(Messages.local.getTranslation("messages.fortune-cookie").size())))); else if (SlimefunManager.isItemSimiliar(item, SlimefunItems.BEEF_JERKY, true)) p.setSaturation((Integer) Slimefun.getItemValue("BEEF_JERKY", "Saturation")); else if (SlimefunManager.isItemSimiliar(item, SlimefunItems.MEDICINE, true)) { if (p.hasPotionEffect(PotionEffectType.POISON)) p.removePotionEffect(PotionEffectType.POISON); @@ -326,6 +319,7 @@ public class ItemListener implements Listener { if (p.hasPotionEffect(PotionEffectType.WEAKNESS)) p.removePotionEffect(PotionEffectType.WEAKNESS); if (p.hasPotionEffect(PotionEffectType.CONFUSION)) p.removePotionEffect(PotionEffectType.CONFUSION); if (p.hasPotionEffect(PotionEffectType.BLINDNESS)) p.removePotionEffect(PotionEffectType.BLINDNESS); + p.setFireTicks(0); } else if (item.getType() == Material.POTION) { @@ -363,8 +357,8 @@ public class ItemListener implements Listener { final int m = mode; Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> { - if (m == 0) p.getEquipment().setItemInMainHand(null); - else if (m == 1) p.getEquipment().setItemInOffHand(null); + if (m == 0) p.getEquipment().getItemInMainHand().setAmount(0); + else if (m == 1) p.getEquipment().getItemInOffHand().setAmount(0); else if (m == 2) p.getInventory().removeItem(new ItemStack(Material.GLASS_BOTTLE, 1)); }, 0L); } diff --git a/src/me/mrCookieSlime/Slimefun/utils/DamageableItem.java b/src/me/mrCookieSlime/Slimefun/utils/DamageableItem.java new file mode 100644 index 000000000..9433fdd01 --- /dev/null +++ b/src/me/mrCookieSlime/Slimefun/utils/DamageableItem.java @@ -0,0 +1,30 @@ +package me.mrCookieSlime.Slimefun.utils; + +import org.bukkit.enchantments.Enchantment; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.Damageable; +import org.bukkit.inventory.meta.ItemMeta; + +@FunctionalInterface +public interface DamageableItem { + + boolean isDamageable(); + + default void damageItem(Player p, ItemStack item) { + if (item != null && item.getAmount() > 0 && isDamageable() && !item.getEnchantments().containsKey(Enchantment.DURABILITY) || Math.random() * 100 <= (60 + 40 / (item.getEnchantmentLevel(Enchantment.DURABILITY) + 1))) { + ItemMeta meta = item.getItemMeta(); + + Damageable damageable = (Damageable) meta; + damageable.setDamage(damageable.getDamage() + 1); + + if (damageable.getDamage() >= item.getType().getMaxDurability()) { + item.setAmount(0); + } + else { + item.setItemMeta(meta); + } + } + } + +} From b76328168bf4646f32dd21044eb1e15b2ff5a614 Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Sun, 1 Sep 2019 19:32:38 +0200 Subject: [PATCH 122/169] Fixed BlockPlacer --- .../Objects/SlimefunItem/machines/BlockPlacer.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/BlockPlacer.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/BlockPlacer.java index 943ee9adc..cd7fd2eb5 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/BlockPlacer.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/BlockPlacer.java @@ -21,15 +21,14 @@ import me.mrCookieSlime.Slimefun.api.Slimefun; public class BlockPlacer extends SlimefunItem { + 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) { - Object value = Slimefun.getItemValue(getID(), "unplaceable-blocks"); - String[] blacklist = ((List) value).stream().toArray(String[]::new); - addItemHandler(new AutonomousMachineHandler() { @Override @@ -72,5 +71,8 @@ public class BlockPlacer extends SlimefunItem { }); super.register(slimefun); + + Object value = Slimefun.getItemValue(getID(), "unplaceable-blocks"); + blacklist = ((List) value).stream().toArray(String[]::new); } } From 3ec3efb137f18240ea98378807ce9089ecf7cfd1 Mon Sep 17 00:00:00 2001 From: ajan-12 <36973731+ajan-12@users.noreply.github.com> Date: Sun, 1 Sep 2019 20:34:26 +0300 Subject: [PATCH 123/169] Hopefully Fixed #253. --- .../SlimefunItem/items/GrapplingHook.java | 82 ++++++++++--------- .../Objects/tasks/GrapplingHookTask.java | 39 +++++++++ .../Slimefun/Setup/SlimefunSetup.java | 3 +- 3 files changed, 85 insertions(+), 39 deletions(-) create mode 100644 src/me/mrCookieSlime/Slimefun/Objects/tasks/GrapplingHookTask.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/GrapplingHook.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/GrapplingHook.java index 2a17f9dee..8015c776f 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/GrapplingHook.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/GrapplingHook.java @@ -1,64 +1,70 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items; +import org.bukkit.Bukkit; import org.bukkit.Material; -import org.bukkit.entity.Arrow; -import org.bukkit.entity.Bat; -import org.bukkit.entity.Entity; -import org.bukkit.entity.EntityType; -import org.bukkit.entity.Projectile; +import org.bukkit.entity.*; import org.bukkit.inventory.ItemStack; import org.bukkit.potion.PotionEffect; import org.bukkit.potion.PotionEffectType; import org.bukkit.util.Vector; +import me.mrCookieSlime.CSCoreLibPlugin.events.ItemUseEvent; import me.mrCookieSlime.CSCoreLibPlugin.general.Player.PlayerInventory; import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; 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.ItemInteractionHandler; +import me.mrCookieSlime.Slimefun.Objects.tasks.GrapplingHookTask; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; +import me.mrCookieSlime.Slimefun.api.Slimefun; import me.mrCookieSlime.Slimefun.utils.Utilities; -public class GrapplingHook extends SimpleSlimefunItem { +public class GrapplingHook extends SlimefunItem { - public GrapplingHook(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe) { - super(category, item, id, recipeType, recipe); + public GrapplingHook(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe, String[] keys, Object[] values) { + super(category, item, id, recipeType, recipe, keys, values); } @Override - public ItemInteractionHandler onRightClick() { - Utilities utilities = SlimefunPlugin.getUtilities(); - - return (e, p, item) -> { - if (SlimefunManager.isItemSimiliar(item, SlimefunItems.GRAPPLING_HOOK, true)) { - if (e.getClickedBlock() == null && !utilities.jumpState.containsKey(p.getUniqueId())) { - e.setCancelled(true); - if (p.getInventory().getItemInOffHand().getType() == Material.BOW) { - // Cancel, to fix dupe #740 - return false; + public void register(boolean slimefun) { + addItemHandler(new ItemInteractionHandler() { + Utilities utilities = SlimefunPlugin.getUtilities(); + + @Override + public boolean onRightClick(ItemUseEvent e, Player p, ItemStack item) { + if (SlimefunManager.isItemSimiliar(item, SlimefunItems.GRAPPLING_HOOK, true)) { + if (e.getClickedBlock() == null && !utilities.jumpState.containsKey(p.getUniqueId())) { + e.setCancelled(true); + if (p.getInventory().getItemInOffHand().getType() == Material.BOW) { + // Cancel, to fix dupe #740 + return false; + } + utilities.jumpState.put(p.getUniqueId(), p.getInventory().getItemInMainHand().getType() != Material.SHEARS); + if (p.getInventory().getItemInMainHand().getType() == Material.LEAD) PlayerInventory.consumeItemInHand(p); + + Vector direction = p.getEyeLocation().getDirection().multiply(2.0); + Arrow arrow = p.getWorld().spawn(p.getEyeLocation().add(direction.getX(), direction.getY(), direction.getZ()), Arrow.class); + arrow.setShooter(p); + arrow.setVelocity(direction); + + Bat b = (Bat) p.getWorld().spawnEntity(p.getLocation(), EntityType.BAT); + b.setCanPickupItems(false); + b.addPotionEffect(new PotionEffect(PotionEffectType.INVISIBILITY, 100000, 100000)); + b.setLeashHolder(arrow); + + utilities.damage.add(p.getUniqueId()); + utilities.remove.put(p.getUniqueId(), new Entity[] {b, arrow}); + + // To fix issue #253 + GrapplingHookTask task = new GrapplingHookTask(p, arrow); + task.setID(Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, task, (int) Slimefun.getItemValue("GRAPPLING_HOOK", "despawn-seconds"))); } - utilities.jumpState.put(p.getUniqueId(), p.getInventory().getItemInMainHand().getType() != Material.SHEARS); - if (p.getInventory().getItemInMainHand().getType() == Material.LEAD) PlayerInventory.consumeItemInHand(p); - - Vector direction = p.getEyeLocation().getDirection().multiply(2.0); - Projectile projectile = p.getWorld().spawn(p.getEyeLocation().add(direction.getX(), direction.getY(), direction.getZ()), Arrow.class); - projectile.setShooter(p); - projectile.setVelocity(direction); - Arrow arrow = (Arrow) projectile; - Bat b = (Bat) p.getWorld().spawnEntity(p.getLocation(), EntityType.BAT); - b.setCanPickupItems(false); - b.addPotionEffect(new PotionEffect(PotionEffectType.INVISIBILITY, 100000, 100000)); - b.setLeashHolder(arrow); - - utilities.damage.add(p.getUniqueId()); - utilities.remove.put(p.getUniqueId(), new Entity[] {b, arrow}); + return true; } - return true; + else return false; } - else return false; - }; + }); } - } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/tasks/GrapplingHookTask.java b/src/me/mrCookieSlime/Slimefun/Objects/tasks/GrapplingHookTask.java new file mode 100644 index 000000000..364872452 --- /dev/null +++ b/src/me/mrCookieSlime/Slimefun/Objects/tasks/GrapplingHookTask.java @@ -0,0 +1,39 @@ +package me.mrCookieSlime.Slimefun.Objects.tasks; + +import org.bukkit.Bukkit; +import org.bukkit.GameMode; +import org.bukkit.entity.Arrow; +import org.bukkit.entity.Entity; +import org.bukkit.entity.Player; + +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; +import me.mrCookieSlime.Slimefun.utils.Utilities; + +public class GrapplingHookTask extends SlimefunTask { + private Arrow arrow; + + public GrapplingHookTask(Player p, Arrow arrow) { + super(p); + this.arrow = arrow; + } + + @Override + void executeTask() { + Utilities utilities = SlimefunPlugin.getUtilities(); + if (arrow != null && arrow.getShooter() instanceof Player && utilities.jumpState.containsKey(((Player) arrow.getShooter()).getUniqueId())) { + + final Player p = (Player) arrow.getShooter(); + if (p.getGameMode() != GameMode.CREATIVE && utilities.jumpState.get(p.getUniqueId())) arrow.getWorld().dropItem(arrow.getLocation(), SlimefunItem.getItem("GRAPPLING_HOOK")); + + for (Entity n: utilities.remove.get(p.getUniqueId())) { + n.remove(); + } + + Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> { + utilities.jumpState.remove(p.getUniqueId()); + utilities.remove.remove(p.getUniqueId()); + }, 20L); + } + } +} diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java index 3247bca2b..b746ad49c 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java @@ -646,7 +646,8 @@ public final class SlimefunSetup { .register(true); new GrapplingHook(Categories.TOOLS, SlimefunItems.GRAPPLING_HOOK, "GRAPPLING_HOOK", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {null, SlimefunItems.HOOK, SlimefunItems.HOOK, null, SlimefunItems.CHAIN, SlimefunItems.HOOK, SlimefunItems.CHAIN, null, null}) + new ItemStack[] {null, SlimefunItems.HOOK, SlimefunItems.HOOK, null, SlimefunItems.CHAIN, SlimefunItems.HOOK, SlimefunItems.CHAIN, null, null}, + new String[] {"despawn-seconds"}, new Object[] {60}) .register(true); new MagicWorkbench().register(); From 2fbad51e5323d5cdc29d862ccd3dd57dfd543eb0 Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Sun, 1 Sep 2019 19:37:29 +0200 Subject: [PATCH 124/169] Fixed damageable Items --- src/me/mrCookieSlime/Slimefun/utils/DamageableItem.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/me/mrCookieSlime/Slimefun/utils/DamageableItem.java b/src/me/mrCookieSlime/Slimefun/utils/DamageableItem.java index 9433fdd01..7ae3a5595 100644 --- a/src/me/mrCookieSlime/Slimefun/utils/DamageableItem.java +++ b/src/me/mrCookieSlime/Slimefun/utils/DamageableItem.java @@ -16,12 +16,12 @@ public interface DamageableItem { ItemMeta meta = item.getItemMeta(); Damageable damageable = (Damageable) meta; - damageable.setDamage(damageable.getDamage() + 1); if (damageable.getDamage() >= item.getType().getMaxDurability()) { item.setAmount(0); } else { + damageable.setDamage(damageable.getDamage() + 1); item.setItemMeta(meta); } } From 8278d00dcf323a311c070982f9f710b1d838d315 Mon Sep 17 00:00:00 2001 From: ajan-12 <36973731+ajan-12@users.noreply.github.com> Date: Sun, 1 Sep 2019 20:41:11 +0300 Subject: [PATCH 125/169] Optimized imports a bit. --- .../Slimefun/Objects/SlimefunItem/items/GrapplingHook.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/GrapplingHook.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/GrapplingHook.java index 8015c776f..fdfcea8a1 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/GrapplingHook.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/GrapplingHook.java @@ -2,7 +2,11 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items; import org.bukkit.Bukkit; import org.bukkit.Material; -import org.bukkit.entity.*; +import org.bukkit.entity.Arrow; +import org.bukkit.entity.Bat; +import org.bukkit.entity.Entity; +import org.bukkit.entity.EntityType; +import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; import org.bukkit.potion.PotionEffect; import org.bukkit.potion.PotionEffectType; From bb7bf903d36919a460c89fc080daa360754f63be Mon Sep 17 00:00:00 2001 From: ajan-12 <36973731+ajan-12@users.noreply.github.com> Date: Sun, 1 Sep 2019 20:55:11 +0300 Subject: [PATCH 126/169] Forgot to register the grappling hook. --- .../Slimefun/Objects/SlimefunItem/items/GrapplingHook.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/GrapplingHook.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/GrapplingHook.java index fdfcea8a1..68a20c0b3 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/GrapplingHook.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/GrapplingHook.java @@ -70,5 +70,7 @@ public class GrapplingHook extends SlimefunItem { else return false; } }); + + super.register(slimefun); } } From 2a9eeaaa96466c76de3045e0aafbd0ebb4c00513 Mon Sep 17 00:00:00 2001 From: ajan-12 <36973731+ajan-12@users.noreply.github.com> Date: Sun, 1 Sep 2019 21:00:19 +0300 Subject: [PATCH 127/169] Code Refactored and fixed grappling hook dupe. --- .../Slimefun/Objects/tasks/GrapplingHookTask.java | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/Objects/tasks/GrapplingHookTask.java b/src/me/mrCookieSlime/Slimefun/Objects/tasks/GrapplingHookTask.java index 364872452..ce96014eb 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/tasks/GrapplingHookTask.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/tasks/GrapplingHookTask.java @@ -23,17 +23,12 @@ public class GrapplingHookTask extends SlimefunTask { Utilities utilities = SlimefunPlugin.getUtilities(); if (arrow != null && arrow.getShooter() instanceof Player && utilities.jumpState.containsKey(((Player) arrow.getShooter()).getUniqueId())) { - final Player p = (Player) arrow.getShooter(); - if (p.getGameMode() != GameMode.CREATIVE && utilities.jumpState.get(p.getUniqueId())) arrow.getWorld().dropItem(arrow.getLocation(), SlimefunItem.getItem("GRAPPLING_HOOK")); - - for (Entity n: utilities.remove.get(p.getUniqueId())) { + for (Entity n: utilities.remove.get(uuid)) { n.remove(); } - Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> { - utilities.jumpState.remove(p.getUniqueId()); - utilities.remove.remove(p.getUniqueId()); - }, 20L); + utilities.jumpState.remove(uuid); + utilities.remove.remove(uuid); } } } From 1cd47fd3dd428ed7b2a4a9132aad92b5cf89f74e Mon Sep 17 00:00:00 2001 From: ajan-12 <36973731+ajan-12@users.noreply.github.com> Date: Sun, 1 Sep 2019 21:02:52 +0300 Subject: [PATCH 128/169] Removed more redundant lines. --- .../SlimefunItem/items/GrapplingHook.java | 2 +- .../Objects/tasks/GrapplingHookTask.java | 20 ++++++------------- 2 files changed, 7 insertions(+), 15 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/GrapplingHook.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/GrapplingHook.java index 68a20c0b3..21a352f25 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/GrapplingHook.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/GrapplingHook.java @@ -62,7 +62,7 @@ public class GrapplingHook extends SlimefunItem { utilities.remove.put(p.getUniqueId(), new Entity[] {b, arrow}); // To fix issue #253 - GrapplingHookTask task = new GrapplingHookTask(p, arrow); + GrapplingHookTask task = new GrapplingHookTask(p); task.setID(Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, task, (int) Slimefun.getItemValue("GRAPPLING_HOOK", "despawn-seconds"))); } return true; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/tasks/GrapplingHookTask.java b/src/me/mrCookieSlime/Slimefun/Objects/tasks/GrapplingHookTask.java index ce96014eb..9f530c262 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/tasks/GrapplingHookTask.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/tasks/GrapplingHookTask.java @@ -1,34 +1,26 @@ package me.mrCookieSlime.Slimefun.Objects.tasks; -import org.bukkit.Bukkit; -import org.bukkit.GameMode; -import org.bukkit.entity.Arrow; import org.bukkit.entity.Entity; import org.bukkit.entity.Player; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.utils.Utilities; public class GrapplingHookTask extends SlimefunTask { - private Arrow arrow; - public GrapplingHookTask(Player p, Arrow arrow) { + public GrapplingHookTask(Player p) { super(p); - this.arrow = arrow; } @Override void executeTask() { Utilities utilities = SlimefunPlugin.getUtilities(); - if (arrow != null && arrow.getShooter() instanceof Player && utilities.jumpState.containsKey(((Player) arrow.getShooter()).getUniqueId())) { - for (Entity n: utilities.remove.get(uuid)) { - n.remove(); - } - - utilities.jumpState.remove(uuid); - utilities.remove.remove(uuid); + for (Entity n: utilities.remove.get(uuid)) { + n.remove(); } + + utilities.jumpState.remove(uuid); + utilities.remove.remove(uuid); } } From dd0bb1ef8b70fe44f5d87eb84dc194110ebf3fd8 Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Sun, 1 Sep 2019 20:29:16 +0200 Subject: [PATCH 129/169] Minor Bug Fixes --- .../SlimefunItem/SimpleSlimefunItem.java | 16 +- .../SlimefunItem/items/DietCookie.java | 34 ++--- .../SlimefunItem/items/ExplosivePickaxe.java | 9 +- .../SlimefunItem/items/ExplosiveShovel.java | 29 ++-- .../SlimefunItem/items/GrapplingHook.java | 4 +- .../SlimefunItem/items/MagicSugar.java | 36 +++++ .../SlimefunItem/items/MonsterJerky.java | 39 +++++ .../items/PickaxeOfTheSeeker.java | 4 +- .../SlimefunItem/items/SeismicAxe.java | 9 +- .../SlimefunItem/items/StormStaff.java | 137 +++++++++--------- .../SlimefunItem/machines/BlockPlacer.java | 4 +- .../Slimefun/Setup/SlimefunSetup.java | 42 +----- .../Slimefun/utils/DamageableItem.java | 6 +- 13 files changed, 208 insertions(+), 161 deletions(-) create mode 100644 src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/MagicSugar.java create mode 100644 src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/MonsterJerky.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SimpleSlimefunItem.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SimpleSlimefunItem.java index 15f7a1613..2a91594a0 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SimpleSlimefunItem.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SimpleSlimefunItem.java @@ -4,20 +4,28 @@ import org.bukkit.inventory.ItemStack; import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Objects.Category; -import me.mrCookieSlime.Slimefun.Objects.handlers.ItemInteractionHandler; +import me.mrCookieSlime.Slimefun.Objects.handlers.ItemHandler; -public abstract class SimpleSlimefunItem extends SlimefunItem { +public abstract class SimpleSlimefunItem extends SlimefunItem { public SimpleSlimefunItem(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe) { super(category, item, id, recipeType, recipe); } + public SimpleSlimefunItem(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe, ItemStack recipeOutput) { + super(category, item, id, recipeType, recipe, recipeOutput); + } + + public SimpleSlimefunItem(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(onRightClick()); + addItemHandler(getItemHandler()); super.register(slimefun); } - public abstract ItemInteractionHandler onRightClick(); + public abstract T getItemHandler(); } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/DietCookie.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/DietCookie.java index 92c7ce188..212b557ae 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/DietCookie.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/DietCookie.java @@ -2,43 +2,35 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items; import org.bukkit.ChatColor; import org.bukkit.Sound; -import org.bukkit.entity.Player; -import org.bukkit.event.player.PlayerItemConsumeEvent; import org.bukkit.inventory.ItemStack; import org.bukkit.potion.PotionEffectType; import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Objects.Category; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SimpleSlimefunItem; import me.mrCookieSlime.Slimefun.Objects.handlers.ItemConsumptionHandler; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; -public class DietCookie extends SlimefunItem { +public class DietCookie extends SimpleSlimefunItem { public DietCookie(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe) { super(category, item, id, recipeType, recipe); } @Override - public void register(boolean slimefun) { - addItemHandler(new ItemConsumptionHandler() { - - @Override - public boolean onConsume(PlayerItemConsumeEvent e, Player p, ItemStack item) { - if (SlimefunManager.isItemSimiliar(item, getItem(), true)) { - p.sendMessage(ChatColor.YELLOW + "You feel so light..."); - p.playSound(p.getLocation(), Sound.ENTITY_GENERIC_EAT, 1, 1); + public ItemConsumptionHandler getItemHandler() { + return (e, p, item) -> { + if (SlimefunManager.isItemSimiliar(item, getItem(), true)) { + p.sendMessage(ChatColor.YELLOW + "You feel so light..."); + p.playSound(p.getLocation(), Sound.ENTITY_GENERIC_EAT, 1, 1); - if (p.hasPotionEffect(PotionEffectType.LEVITATION)) p.removePotionEffect(PotionEffectType.LEVITATION); - p.addPotionEffect(PotionEffectType.LEVITATION.createEffect(60, 1)); - - return true; - } - return false; + if (p.hasPotionEffect(PotionEffectType.LEVITATION)) p.removePotionEffect(PotionEffectType.LEVITATION); + p.addPotionEffect(PotionEffectType.LEVITATION.createEffect(60, 1)); + + return true; } - }); - - super.register(slimefun); + return false; + }; } } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/ExplosivePickaxe.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/ExplosivePickaxe.java index 7358d94cd..5d095d4cb 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/ExplosivePickaxe.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/ExplosivePickaxe.java @@ -9,7 +9,7 @@ import org.bukkit.block.Block; import org.bukkit.event.block.BlockBreakEvent; import org.bukkit.inventory.ItemStack; -import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib; +import io.github.thebusybiscuit.cscorelib2.protection.ProtectionModule.Action; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; import me.mrCookieSlime.CSCoreLibPlugin.general.String.StringUtils; import me.mrCookieSlime.Slimefun.SlimefunPlugin; @@ -49,7 +49,8 @@ public class ExplosivePickaxe extends SlimefunItem implements NotPlaceable, Dama for (int y = -1; y <= 1; y++) { for (int z = -1; z <= 1; z++) { Block b = e.getBlock().getRelative(x, y, z); - if (b.getType() != Material.AIR && !b.isLiquid() && !StringUtils.equals(b.getType().toString(), blacklist) && CSCoreLib.getLib().getProtectionManager().canBuild(e.getPlayer().getUniqueId(), b)) { + + if (b.getType() != Material.AIR && !b.isLiquid() && !StringUtils.equals(b.getType().toString(), blacklist) && SlimefunPlugin.getProtectionManager().hasPermission(e.getPlayer(), b.getLocation(), Action.BREAK_BLOCK)) { if (SlimefunPlugin.getHooks().isCoreProtectInstalled()) { SlimefunPlugin.getHooks().getCoreProtectAPI().logRemoval(e.getPlayer().getName(), b.getLocation(), b.getType(), b.getBlockData()); } @@ -94,8 +95,8 @@ public class ExplosivePickaxe extends SlimefunItem implements NotPlaceable, Dama super.register(slimefun); damageOnUse = ((Boolean) Slimefun.getItemValue(getID(), "damage-on-use")); - Object value = Slimefun.getItemValue(getID(), "unbreakable-blocks"); - blacklist = ((List) value).stream().toArray(String[]::new); + List list = (List) Slimefun.getItemValue(getID(), "unbreakable-blocks"); + blacklist = list.toArray(new String[list.size()]); } @Override diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/ExplosiveShovel.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/ExplosiveShovel.java index dad334f4b..e88300561 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/ExplosiveShovel.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/ExplosiveShovel.java @@ -10,7 +10,7 @@ import org.bukkit.event.block.BlockBreakEvent; import org.bukkit.inventory.ItemStack; import io.github.thebusybiscuit.cscorelib2.materials.MaterialTools; -import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib; +import io.github.thebusybiscuit.cscorelib2.protection.ProtectionModule.Action; import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; @@ -39,31 +39,32 @@ public class ExplosiveShovel extends SlimefunItem implements NotPlaceable, Damag if (SlimefunManager.isItemSimiliar(item, SlimefunItems.EXPLOSIVE_SHOVEL, true)) { e.getBlock().getWorld().createExplosion(e.getBlock().getLocation(), 0.0F); e.getBlock().getWorld().playSound(e.getBlock().getLocation(), Sound.ENTITY_GENERIC_EXPLODE, 1F, 1F); + for (int x = -1; x <= 1; x++) { for (int y = -1; y <= 1; y++) { for (int z = -1; z <= 1; z++) { Block b = e.getBlock().getRelative(x, y, z); boolean correctType = false; + for (Material mat : MaterialTools.getShovelItems()) { if (b.getType() == mat) { correctType = true; break; } } - if (correctType) { - if (CSCoreLib.getLib().getProtectionManager().canBuild(e.getPlayer().getUniqueId(), b)) { - if (SlimefunPlugin.getHooks().isCoreProtectInstalled()) { - SlimefunPlugin.getHooks().getCoreProtectAPI().logRemoval(e.getPlayer().getName(), b.getLocation(), b.getType(), b.getBlockData()); - } - - b.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, b.getType()); - for (ItemStack drop: b.getDrops()) { - b.getWorld().dropItemNaturally(b.getLocation(), drop); - } - b.setType(Material.AIR); - - damageItem(e.getPlayer(), item); + + if (correctType && SlimefunPlugin.getProtectionManager().hasPermission(e.getPlayer(), b.getLocation(), Action.BREAK_BLOCK)) { + if (SlimefunPlugin.getHooks().isCoreProtectInstalled()) { + SlimefunPlugin.getHooks().getCoreProtectAPI().logRemoval(e.getPlayer().getName(), b.getLocation(), b.getType(), b.getBlockData()); } + + b.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, b.getType()); + for (ItemStack drop: b.getDrops()) { + b.getWorld().dropItemNaturally(b.getLocation(), drop); + } + b.setType(Material.AIR); + + damageItem(e.getPlayer(), item); } } } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/GrapplingHook.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/GrapplingHook.java index 2a17f9dee..19dd13698 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/GrapplingHook.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/GrapplingHook.java @@ -21,14 +21,14 @@ import me.mrCookieSlime.Slimefun.Objects.handlers.ItemInteractionHandler; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.utils.Utilities; -public class GrapplingHook extends SimpleSlimefunItem { +public class GrapplingHook extends SimpleSlimefunItem { public GrapplingHook(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe) { super(category, item, id, recipeType, recipe); } @Override - public ItemInteractionHandler onRightClick() { + public ItemInteractionHandler getItemHandler() { Utilities utilities = SlimefunPlugin.getUtilities(); return (e, p, item) -> { diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/MagicSugar.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/MagicSugar.java new file mode 100644 index 000000000..87c6fb3be --- /dev/null +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/MagicSugar.java @@ -0,0 +1,36 @@ +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items; + +import org.bukkit.Sound; +import org.bukkit.inventory.ItemStack; +import org.bukkit.potion.PotionEffect; +import org.bukkit.potion.PotionEffectType; + +import me.mrCookieSlime.CSCoreLibPlugin.general.Player.PlayerInventory; +import me.mrCookieSlime.Slimefun.Lists.RecipeType; +import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; +import me.mrCookieSlime.Slimefun.Objects.Category; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SimpleSlimefunItem; +import me.mrCookieSlime.Slimefun.Objects.handlers.ItemInteractionHandler; +import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; +import me.mrCookieSlime.Slimefun.api.Slimefun; + +public class MagicSugar extends SimpleSlimefunItem { + + public MagicSugar(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe, String[] keys, Object[] values) { + super(category, item, id, recipeType, recipe, keys, values); + } + + @Override + public ItemInteractionHandler getItemHandler() { + return (e, p, item) -> { + if (SlimefunManager.isItemSimiliar(item, SlimefunItems.MAGIC_SUGAR, true)) { + PlayerInventory.consumeItemInHand(p); + p.getWorld().playSound(p.getLocation(), Sound.ENTITY_GENERIC_EAT, 1, 1); + p.addPotionEffect(new PotionEffect(PotionEffectType.SPEED, 600, (Integer) Slimefun.getItemValue("MAGIC_SUGAR", "effects.SPEED"))); + return true; + } + else return false; + }; + } + +} diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/MonsterJerky.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/MonsterJerky.java new file mode 100644 index 000000000..f47f47739 --- /dev/null +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/MonsterJerky.java @@ -0,0 +1,39 @@ +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items; + +import org.bukkit.inventory.ItemStack; +import org.bukkit.potion.PotionEffect; +import org.bukkit.potion.PotionEffectType; + +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.handlers.ItemConsumptionHandler; +import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; + +public class MonsterJerky extends SimpleSlimefunItem { + + public MonsterJerky(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe) { + super(category, item, id, recipeType, recipe); + } + + @Override + public ItemConsumptionHandler getItemHandler() { + return (e, p, item) -> { + if (SlimefunManager.isItemSimiliar(item, getItem(), true)) { + SlimefunPlugin.instance.getServer().getScheduler().runTaskLater(SlimefunPlugin.instance, () -> { + if (p.hasPotionEffect(PotionEffectType.HUNGER)) { + p.removePotionEffect(PotionEffectType.HUNGER); + } + + p.addPotionEffect(new PotionEffect(PotionEffectType.SATURATION, 5, 0)); + }, 1L); + return true; + } + else { + return false; + } + }; + } + +} diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/PickaxeOfTheSeeker.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/PickaxeOfTheSeeker.java index fab1a9444..4a7301457 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/PickaxeOfTheSeeker.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/PickaxeOfTheSeeker.java @@ -16,14 +16,14 @@ import me.mrCookieSlime.Slimefun.Objects.handlers.ItemInteractionHandler; import me.mrCookieSlime.Slimefun.Setup.Messages; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; -public class PickaxeOfTheSeeker extends SimpleSlimefunItem { +public class PickaxeOfTheSeeker extends SimpleSlimefunItem { public PickaxeOfTheSeeker(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe) { super(category, item, id, recipeType, recipe); } @Override - public ItemInteractionHandler onRightClick() { + public ItemInteractionHandler getItemHandler() { return (e, p, item) -> { if (SlimefunManager.isItemSimiliar(item, SlimefunItems.PICKAXE_OF_THE_SEEKER, true)) { Block closest = null; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/SeismicAxe.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/SeismicAxe.java index 1ccb6a7f4..7eb6341ea 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/SeismicAxe.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/SeismicAxe.java @@ -26,14 +26,14 @@ import me.mrCookieSlime.Slimefun.Objects.handlers.ItemInteractionHandler; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.utils.DamageableItem; -public class SeismicAxe extends SimpleSlimefunItem implements NotPlaceable, DamageableItem { +public class SeismicAxe extends SimpleSlimefunItem implements NotPlaceable, DamageableItem { public SeismicAxe(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe) { super(category, item, id, recipeType, recipe); } @Override - public ItemInteractionHandler onRightClick() { + public ItemInteractionHandler getItemHandler() { return (e, p, item) -> { if (SlimefunManager.isItemSimiliar(item, SlimefunItems.SEISMIC_AXE, true)) { List blocks = p.getLineOfSight(null, 10); @@ -48,9 +48,12 @@ public class SeismicAxe extends SimpleSlimefunItem implements NotPlaceable, Dama } } } + b.getWorld().playEffect(ground, Effect.STEP_SOUND, ground.getBlock().getType()); + if (ground.getBlock().getRelative(BlockFace.UP).getType() == null || ground.getBlock().getRelative(BlockFace.UP).getType() == Material.AIR) { - FallingBlock block = ground.getWorld().spawnFallingBlock(ground.getBlock().getRelative(BlockFace.UP).getLocation(), ground.getBlock().getBlockData()); + Location loc = ground.getBlock().getRelative(BlockFace.UP).getLocation().add(0.5, 0.0, 0.5); + FallingBlock block = ground.getWorld().spawnFallingBlock(loc, ground.getBlock().getBlockData()); block.setDropItem(false); block.setVelocity(new Vector(0, 0.4 + i * 0.01, 0)); SlimefunPlugin.getUtilities().blocks.add(block.getUniqueId()); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/StormStaff.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/StormStaff.java index 6c0b57dfe..3161d4251 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/StormStaff.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/StormStaff.java @@ -8,24 +8,22 @@ import org.bukkit.GameMode; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.Sound; -import org.bukkit.entity.Player; import org.bukkit.event.entity.FoodLevelChangeEvent; import org.bukkit.inventory.EquipmentSlot; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; import io.github.thebusybiscuit.cscorelib2.protection.ProtectionModule; -import me.mrCookieSlime.CSCoreLibPlugin.events.ItemUseEvent; import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; import me.mrCookieSlime.Slimefun.Objects.Category; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SimpleSlimefunItem; import me.mrCookieSlime.Slimefun.Objects.handlers.ItemInteractionHandler; import me.mrCookieSlime.Slimefun.Setup.Messages; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; -public class StormStaff extends SlimefunItem { +public class StormStaff extends SimpleSlimefunItem { private final static int MAX_USES = 8; @@ -46,84 +44,79 @@ public class StormStaff extends SlimefunItem { } @Override - public void register(boolean slimefun) { - addItemHandler(new ItemInteractionHandler() { + public ItemInteractionHandler getItemHandler() { + return (e, p, item) -> { + //Not checking if lores equals because we need a special one for that. + if (SlimefunManager.isItemSimiliar(item, getItem(), false)) { - @Override - public boolean onRightClick(ItemUseEvent e, Player p, ItemStack item) { - //Not checking if lores equals because we need a special one for that. - if (SlimefunManager.isItemSimiliar(item, SlimefunItems.STAFF_STORM, false)) { + if (!item.hasItemMeta()) return false; + ItemMeta itemM = item.getItemMeta(); + if (!itemM.hasLore()) return false; + List itemML = itemM.getLore(); - if (!item.hasItemMeta()) return false; - ItemMeta itemM = item.getItemMeta(); - if (!itemM.hasLore()) return false; - List itemML = itemM.getLore(); + ItemStack SFitem = getItem(); + ItemMeta SFitemM = SFitem.getItemMeta(); + List SFitemML = SFitemM.getLore(); + + if (itemML.size() < 6) { + // Index 1 and 3 in SlimefunItems.STAFF_STORM has lores with words and stuff so we check for them. + if (itemML.get(1).equals(SFitemML.get(1)) && itemML.get(3).equals(SFitemML.get(3))) { + if (p.getFoodLevel() >= 4 || p.getGameMode() == GameMode.CREATIVE) { + // Get a target block with max. 30 blocks of distance + Location loc = p.getTargetBlock(null, 30).getLocation(); + + if (loc.getWorld() != null && loc.getChunk().isLoaded()) { + if (loc.getWorld().getPVP() && SlimefunPlugin.getProtectionManager().hasPermission(p, loc, ProtectionModule.Action.PVP)) { + loc.getWorld().strikeLightning(loc); - ItemStack SFitem = SlimefunItems.STAFF_STORM; - ItemMeta SFitemM = SFitem.getItemMeta(); - List SFitemML = SFitemM.getLore(); - - if (itemML.size() < 6) { - // Index 1 and 3 in SlimefunItems.STAFF_STORM has lores with words and stuff so we check for them. - if (itemML.get(1).equals(SFitemML.get(1)) && itemML.get(3).equals(SFitemML.get(3))) { - if (p.getFoodLevel() >= 4 || p.getGameMode() == GameMode.CREATIVE) { - // Get a target block with max. 30 blocks of distance - Location loc = p.getTargetBlock(null, 30).getLocation(); - - if (loc.getWorld() != null && loc.getChunk().isLoaded()) { - if (loc.getWorld().getPVP() && SlimefunPlugin.getProtectionManager().hasPermission(p, loc, ProtectionModule.Action.PVP)) { - loc.getWorld().strikeLightning(loc); - - if (p.getInventory().getItemInMainHand().getType() != Material.SHEARS && p.getGameMode() != GameMode.CREATIVE) { - FoodLevelChangeEvent event = new FoodLevelChangeEvent(p, p.getFoodLevel() - 4); - Bukkit.getPluginManager().callEvent(event); - p.setFoodLevel(event.getFoodLevel()); - } - - for (int i = MAX_USES; i > 0; i--) { - if (i == 1 && ChatColor.translateAlternateColorCodes('&', "&e1 Use &7left").equals(itemML.get(4))) { - e.setCancelled(true); - p.playSound(p.getLocation(), Sound.ENTITY_ITEM_BREAK, 1, 1); - item.setAmount(0); - return true; - } - else if (ChatColor.translateAlternateColorCodes('&', "&e" + i + " Uses &7left").equals(itemML.get(4))) { - itemML.set(4, ChatColor.translateAlternateColorCodes('&', "&e" + (i - 1) + " " + (i > 2 ? "Uses": "Use") + " &7left")); - e.setCancelled(true); - - // Saving the changes to lore and item. - itemM.setLore(itemML); - item.setItemMeta(itemM); - - if (e.getParentEvent().getHand() == EquipmentSlot.HAND) { - p.getInventory().setItemInMainHand(item); - } - else { - p.getInventory().setItemInOffHand(item); - } - - return true; - } - } - - return false; - } - else { - Messages.local.sendTranslation(p, "messages.no-pvp", true); + if (p.getInventory().getItemInMainHand().getType() != Material.SHEARS && p.getGameMode() != GameMode.CREATIVE) { + FoodLevelChangeEvent event = new FoodLevelChangeEvent(p, p.getFoodLevel() - 4); + Bukkit.getPluginManager().callEvent(event); + p.setFoodLevel(event.getFoodLevel()); } + + for (int i = MAX_USES; i > 0; i--) { + if (i == 1 && ChatColor.translateAlternateColorCodes('&', "&e1 Use &7left").equals(itemML.get(4))) { + e.setCancelled(true); + p.playSound(p.getLocation(), Sound.ENTITY_ITEM_BREAK, 1, 1); + item.setAmount(0); + return true; + } + else if (ChatColor.translateAlternateColorCodes('&', "&e" + i + " Uses &7left").equals(itemML.get(4))) { + itemML.set(4, ChatColor.translateAlternateColorCodes('&', "&e" + (i - 1) + " " + (i > 2 ? "Uses": "Use") + " &7left")); + e.setCancelled(true); + + // Saving the changes to lore and item. + itemM.setLore(itemML); + item.setItemMeta(itemM); + + if (e.getParentEvent().getHand() == EquipmentSlot.HAND) { + p.getInventory().setItemInMainHand(item); + } + else { + p.getInventory().setItemInOffHand(item); + } + + return true; + } + } + + return false; + } + else { + Messages.local.sendTranslation(p, "messages.no-pvp", true); } - } - else { - Messages.local.sendTranslation(p, "messages.hungry", true); } - return true; + } + else { + Messages.local.sendTranslation(p, "messages.hungry", true); } + return true; } } - return false; } - }); - super.register(slimefun); + return false; + }; } } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/BlockPlacer.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/BlockPlacer.java index cd7fd2eb5..8eb895778 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/BlockPlacer.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/BlockPlacer.java @@ -72,7 +72,7 @@ public class BlockPlacer extends SlimefunItem { super.register(slimefun); - Object value = Slimefun.getItemValue(getID(), "unplaceable-blocks"); - blacklist = ((List) value).stream().toArray(String[]::new); + List list = (List) Slimefun.getItemValue(getID(), "unplaceable-blocks"); + blacklist = list.toArray(new String[list.size()]); } } diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java index 09ac5a459..ecf79dfe2 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java @@ -34,7 +34,6 @@ import org.bukkit.event.block.BlockBreakEvent; import org.bukkit.event.block.BlockPlaceEvent; import org.bukkit.event.entity.EntityDamageByEntityEvent; import org.bukkit.event.entity.FoodLevelChangeEvent; -import org.bukkit.event.player.PlayerItemConsumeEvent; import org.bukkit.inventory.EquipmentSlot; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; @@ -102,6 +101,8 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.DietCookie; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.ExplosivePickaxe; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.ExplosiveShovel; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.GrapplingHook; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.MagicSugar; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.MonsterJerky; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.PickaxeOfTheSeeker; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.SeismicAxe; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.StormStaff; @@ -155,7 +156,6 @@ import me.mrCookieSlime.Slimefun.Objects.handlers.BlockBreakHandler; import me.mrCookieSlime.Slimefun.Objects.handlers.BlockPlaceHandler; import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker; import me.mrCookieSlime.Slimefun.Objects.handlers.BowShootHandler; -import me.mrCookieSlime.Slimefun.Objects.handlers.ItemConsumptionHandler; import me.mrCookieSlime.Slimefun.Objects.handlers.ItemInteractionHandler; import me.mrCookieSlime.Slimefun.Objects.handlers.MultiBlockInteractionHandler; import me.mrCookieSlime.Slimefun.Objects.tasks.RainbowTicker; @@ -315,43 +315,13 @@ public final class SlimefunSetup { } }); - new SlimefunItem(Categories.FOOD, SlimefunItems.MAGIC_SUGAR, "MAGIC_SUGAR", RecipeType.ENHANCED_CRAFTING_TABLE, + new MagicSugar(Categories.FOOD, SlimefunItems.MAGIC_SUGAR, "MAGIC_SUGAR", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {new ItemStack(Material.SUGAR), new ItemStack(Material.REDSTONE), new ItemStack(Material.GLOWSTONE_DUST), null, null, null, null, null, null}, new String[] {"effects.SPEED"}, new Integer[] {4}) - .register(true, new ItemInteractionHandler() { + .register(true); - @Override - public boolean onRightClick(ItemUseEvent e, Player p, ItemStack item) { - if (SlimefunManager.isItemSimiliar(item, SlimefunItems.MAGIC_SUGAR, true)) { - PlayerInventory.consumeItemInHand(p); - p.getWorld().playSound(p.getLocation(), Sound.ENTITY_GENERIC_EAT, 1, 1); - p.addPotionEffect(new PotionEffect(PotionEffectType.SPEED, 600, (Integer) Slimefun.getItemValue("MAGIC_SUGAR", "effects.SPEED"))); - return true; - } - else return false; - } - }); - - new SlimefunItem(Categories.FOOD, SlimefunItems.MONSTER_JERKY, "MONSTER_JERKY", RecipeType.ENHANCED_CRAFTING_TABLE, + new MonsterJerky(Categories.FOOD, SlimefunItems.MONSTER_JERKY, "MONSTER_JERKY", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {SlimefunItems.SALT, new ItemStack(Material.ROTTEN_FLESH), null, null, null, null, null, null, null}) - .register(true, new ItemConsumptionHandler() { - - @Override - public boolean onConsume(PlayerItemConsumeEvent e, Player p, ItemStack item) { - if (SlimefunManager.isItemSimiliar(item, SlimefunItems.MONSTER_JERKY, true)) { - SlimefunPlugin.instance.getServer().getScheduler().runTaskLater(SlimefunPlugin.instance, () -> { - if (p.hasPotionEffect(PotionEffectType.HUNGER)) { - p.removePotionEffect(PotionEffectType.HUNGER); - } - - p.addPotionEffect(new PotionEffect(PotionEffectType.SATURATION, 5, 0)); - }, 1L); - return true; - } - else { - return false; - } - } - }); + .register(true); new SlimefunItem(Categories.MAGIC_ARMOR, SlimefunItems.SLIME_HELMET, "SLIME_HELMET", RecipeType.ARMOR_FORGE, new ItemStack[] {new ItemStack(Material.SLIME_BALL), new ItemStack(Material.IRON_INGOT), new ItemStack(Material.SLIME_BALL), new ItemStack(Material.IRON_INGOT), null, new ItemStack(Material.IRON_INGOT), null, null, null}) diff --git a/src/me/mrCookieSlime/Slimefun/utils/DamageableItem.java b/src/me/mrCookieSlime/Slimefun/utils/DamageableItem.java index 7ae3a5595..50347c132 100644 --- a/src/me/mrCookieSlime/Slimefun/utils/DamageableItem.java +++ b/src/me/mrCookieSlime/Slimefun/utils/DamageableItem.java @@ -1,5 +1,6 @@ package me.mrCookieSlime.Slimefun.utils; +import org.bukkit.Material; import org.bukkit.enchantments.Enchantment; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; @@ -12,7 +13,10 @@ public interface DamageableItem { boolean isDamageable(); default void damageItem(Player p, ItemStack item) { - if (item != null && item.getAmount() > 0 && isDamageable() && !item.getEnchantments().containsKey(Enchantment.DURABILITY) || Math.random() * 100 <= (60 + 40 / (item.getEnchantmentLevel(Enchantment.DURABILITY) + 1))) { + if (item == null || item.getType() == null || item.getType() == Material.AIR) { + return; + } + else if (item.getAmount() > 0 && isDamageable() && !item.getEnchantments().containsKey(Enchantment.DURABILITY) || Math.random() * 100 <= (60 + 40 / (item.getEnchantmentLevel(Enchantment.DURABILITY) + 1))) { ItemMeta meta = item.getItemMeta(); Damageable damageable = (Damageable) meta; From 92219b6435927aeb2b40dc168dde17b30aa92175 Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Sun, 1 Sep 2019 20:43:05 +0200 Subject: [PATCH 130/169] Fixed Lightning Rune Recipe --- .../Objects/SlimefunItem/items/GoldPan.java | 61 +++++++++++++++++++ .../SlimefunItem/items/InfernalBonemeal.java | 40 ++++++++++++ .../Slimefun/Setup/SlimefunSetup.java | 58 +++--------------- 3 files changed, 109 insertions(+), 50 deletions(-) create mode 100644 src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/GoldPan.java create mode 100644 src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/InfernalBonemeal.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/GoldPan.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/GoldPan.java new file mode 100644 index 000000000..8577df750 --- /dev/null +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/GoldPan.java @@ -0,0 +1,61 @@ +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items; + +import java.util.ArrayList; +import java.util.List; +import java.util.Random; + +import org.bukkit.Effect; +import org.bukkit.Material; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; + +import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib; +import me.mrCookieSlime.CSCoreLibPlugin.events.ItemUseEvent; +import me.mrCookieSlime.Slimefun.Lists.RecipeType; +import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; +import me.mrCookieSlime.Slimefun.Objects.Category; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunGadget; +import me.mrCookieSlime.Slimefun.Objects.handlers.ItemInteractionHandler; +import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; +import me.mrCookieSlime.Slimefun.api.Slimefun; + +public class GoldPan extends SlimefunGadget { + + private Random random = new Random(); + + public GoldPan(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe, ItemStack[] machineRecipes, String[] keys, Object[] values) { + super(category, item, id, recipeType, recipe, machineRecipes, keys, values); + } + + @Override + public void register(boolean slimefun) { + addItemHandler(new ItemInteractionHandler() { + + @Override + public boolean onRightClick(ItemUseEvent e, Player p, ItemStack item) { + if (SlimefunManager.isItemSimiliar(item, SlimefunItems.GOLD_PAN, true)) { + if (e.getClickedBlock() != null && e.getClickedBlock().getType() == Material.GRAVEL && CSCoreLib.getLib().getProtectionManager().canBuild(p.getUniqueId(), e.getClickedBlock(), true)) { + List drops = new ArrayList<>(); + + if (random.nextInt(100) < (Integer) Slimefun.getItemValue("GOLD_PAN", "chance.SIFTED_ORE")) drops.add(SlimefunItems.SIFTED_ORE); + else if (random.nextInt(100) < (Integer) Slimefun.getItemValue("GOLD_PAN", "chance.CLAY")) drops.add(new ItemStack(Material.CLAY_BALL)); + else if (random.nextInt(100) < (Integer) Slimefun.getItemValue("GOLD_PAN", "chance.FLINT")) drops.add(new ItemStack(Material.FLINT)); + + e.getClickedBlock().getWorld().playEffect(e.getClickedBlock().getLocation(), Effect.STEP_SOUND, e.getClickedBlock().getType()); + e.getClickedBlock().setType(Material.AIR); + + for (ItemStack drop: drops) { + e.getClickedBlock().getWorld().dropItemNaturally(e.getClickedBlock().getLocation(), drop); + } + } + e.setCancelled(true); + return true; + } + else return false; + } + }); + + super.register(slimefun); + } + +} diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/InfernalBonemeal.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/InfernalBonemeal.java new file mode 100644 index 000000000..515e5b6be --- /dev/null +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/InfernalBonemeal.java @@ -0,0 +1,40 @@ +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items; + +import org.bukkit.Effect; +import org.bukkit.Material; +import org.bukkit.block.data.Ageable; +import org.bukkit.inventory.ItemStack; + +import me.mrCookieSlime.CSCoreLibPlugin.general.Player.PlayerInventory; +import me.mrCookieSlime.Slimefun.Lists.RecipeType; +import me.mrCookieSlime.Slimefun.Objects.Category; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SimpleSlimefunItem; +import me.mrCookieSlime.Slimefun.Objects.handlers.ItemInteractionHandler; +import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; + +public class InfernalBonemeal extends SimpleSlimefunItem { + + public InfernalBonemeal(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe, ItemStack recipeOutput) { + super(category, item, id, recipeType, recipe, recipeOutput); + } + + @Override + public ItemInteractionHandler getItemHandler() { + return (e, p, item) -> { + if (SlimefunManager.isItemSimiliar(e.getItem(), getItem(), true)) { + if (e.getClickedBlock() != null && e.getClickedBlock().getType() == Material.NETHER_WART) { + Ageable ageable = (Ageable)e.getClickedBlock().getBlockData(); + if (ageable.getAge() < ageable.getMaximumAge()) { + ageable.setAge(ageable.getMaximumAge()); + e.getClickedBlock().setBlockData(ageable); + e.getClickedBlock().getWorld().playEffect(e.getClickedBlock().getLocation(), Effect.STEP_SOUND, Material.REDSTONE_BLOCK); + PlayerInventory.consumeItemInHand(p); + } + } + return true; + } + return false; + }; + } + +} diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java index ecf79dfe2..68eef45e2 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java @@ -22,7 +22,6 @@ import org.bukkit.block.BlockFace; import org.bukkit.block.Chest; import org.bukkit.block.Container; import org.bukkit.block.CreatureSpawner; -import org.bukkit.block.data.Ageable; import org.bukkit.entity.ArmorStand; import org.bukkit.entity.EnderPearl; import org.bukkit.entity.Entity; @@ -101,6 +100,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.DietCookie; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.ExplosivePickaxe; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.ExplosiveShovel; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.GrapplingHook; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.InfernalBonemeal; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.MagicSugar; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.MonsterJerky; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.PickaxeOfTheSeeker; @@ -361,31 +361,7 @@ public final class SlimefunSetup { new ItemStack[] {null, null, null, new ItemStack(Material.STONE), new ItemStack(Material.BOWL), new ItemStack(Material.STONE), new ItemStack(Material.STONE), new ItemStack(Material.STONE), new ItemStack(Material.STONE)}, new ItemStack[] {new ItemStack(Material.GRAVEL), new ItemStack(Material.FLINT), new ItemStack(Material.GRAVEL), new ItemStack(Material.CLAY_BALL), new ItemStack(Material.GRAVEL), SlimefunItems.SIFTED_ORE}, new String[] {"chance.FLINT", "chance.CLAY", "chance.SIFTED_ORE"}, new Integer[] {47, 28, 15}) - .register(true, new ItemInteractionHandler() { - - @Override - public boolean onRightClick(ItemUseEvent e, Player p, ItemStack item) { - if (SlimefunManager.isItemSimiliar(item, SlimefunItems.GOLD_PAN, true)) { - if (e.getClickedBlock() != null && e.getClickedBlock().getType() == Material.GRAVEL && CSCoreLib.getLib().getProtectionManager().canBuild(p.getUniqueId(), e.getClickedBlock(), true)) { - List drops = new ArrayList<>(); - - if (random.nextInt(100) < (Integer) Slimefun.getItemValue("GOLD_PAN", "chance.SIFTED_ORE")) drops.add(SlimefunItems.SIFTED_ORE); - else if (random.nextInt(100) < (Integer) Slimefun.getItemValue("GOLD_PAN", "chance.CLAY")) drops.add(new ItemStack(Material.CLAY_BALL)); - else if (random.nextInt(100) < (Integer) Slimefun.getItemValue("GOLD_PAN", "chance.FLINT")) drops.add(new ItemStack(Material.FLINT)); - - e.getClickedBlock().getWorld().playEffect(e.getClickedBlock().getLocation(), Effect.STEP_SOUND, e.getClickedBlock().getType()); - e.getClickedBlock().setType(Material.AIR); - - for (ItemStack drop: drops) { - e.getClickedBlock().getWorld().dropItemNaturally(e.getClickedBlock().getLocation(), drop); - } - } - e.setCancelled(true); - return true; - } - else return false; - } - }); + .register(true); new SlimefunItem(Categories.MISC, SlimefunItems.SIFTED_ORE, "SIFTED_ORE", RecipeType.GOLD_PAN, new ItemStack[] {new ItemStack(Material.GRAVEL), null, null, null, null, null, null, null, null}) @@ -3114,34 +3090,16 @@ public final class SlimefunSetup { .register(true); new SlimefunItem(Categories.LUMPS_AND_MAGIC, SlimefunItems.RUNE_LIGHTNING, "ANCIENT_RUNE_LIGHTNING", RecipeType.ANCIENT_ALTAR, - new ItemStack[] {new ItemStack(Material.IRON_INGOT), SlimefunItems.MAGIC_LUMP_3, new ItemStack(Material.IRON_INGOT), SlimefunItems.RUNE_WATER, new ItemStack(Material.PHANTOM_MEMBRANE), SlimefunItems.RUNE_WATER, new ItemStack(Material.IRON_INGOT), SlimefunItems.MAGIC_LUMP_3, new ItemStack(Material.IRON_INGOT)}, new CustomItem(SlimefunItems.RUNE_LIGHTNING, 4)) + new ItemStack[] {new ItemStack(Material.IRON_INGOT), SlimefunItems.MAGIC_LUMP_3, new ItemStack(Material.IRON_INGOT), SlimefunItems.RUNE_AIR, new ItemStack(Material.PHANTOM_MEMBRANE), SlimefunItems.RUNE_WATER, new ItemStack(Material.IRON_INGOT), SlimefunItems.MAGIC_LUMP_3, new ItemStack(Material.IRON_INGOT)}, new CustomItem(SlimefunItems.RUNE_LIGHTNING, 4)) .register(true); new SlimefunItem(Categories.LUMPS_AND_MAGIC, SlimefunItems.RUNE_RAINBOW, "ANCIENT_RUNE_RAINBOW", RecipeType.ANCIENT_ALTAR, new ItemStack[] {new ItemStack(Material.RED_DYE), SlimefunItems.MAGIC_LUMP_3, new ItemStack(Material.CYAN_DYE), new ItemStack(Material.WHITE_WOOL), SlimefunItems.RUNE_ENDER, new ItemStack(Material.WHITE_WOOL), new ItemStack(Material.YELLOW_DYE), SlimefunItems.ENDER_LUMP_3, new ItemStack(Material.MAGENTA_DYE)}) .register(true); - new SlimefunItem(Categories.MAGIC, SlimefunItems.INFERNAL_BONEMEAL, "INFERNAL_BONEMEAL", RecipeType.ANCIENT_ALTAR, + new InfernalBonemeal(Categories.MAGIC, SlimefunItems.INFERNAL_BONEMEAL, "INFERNAL_BONEMEAL", RecipeType.ANCIENT_ALTAR, new ItemStack[] {new ItemStack(Material.NETHER_WART), SlimefunItems.RUNE_EARTH, new ItemStack(Material.NETHER_WART), SlimefunItems.MAGIC_LUMP_2, new ItemStack(Material.BONE_MEAL), SlimefunItems.MAGIC_LUMP_2, new ItemStack(Material.NETHER_WART), new ItemStack(Material.BLAZE_POWDER), new ItemStack(Material.NETHER_WART)}, new CustomItem(SlimefunItems.INFERNAL_BONEMEAL, 8)) - .register(true, new ItemInteractionHandler() { - - @Override - public boolean onRightClick(ItemUseEvent e, Player p, ItemStack item) { - if (SlimefunManager.isItemSimiliar(e.getItem(), SlimefunItems.INFERNAL_BONEMEAL, true)) { - if (e.getClickedBlock() != null && e.getClickedBlock().getType() == Material.NETHER_WART) { - Ageable ageable = (Ageable)e.getClickedBlock().getBlockData(); - if (ageable.getAge() < ageable.getMaximumAge()) { - ageable.setAge(ageable.getMaximumAge()); - e.getClickedBlock().setBlockData(ageable); - e.getClickedBlock().getWorld().playEffect(e.getClickedBlock().getLocation(), Effect.STEP_SOUND, Material.REDSTONE_BLOCK); - PlayerInventory.consumeItemInHand(p); - } - } - return true; - } - return false; - } - }); + .register(true); new SlimefunItem(Categories.MAGIC, SlimefunItems.ELYTRA_SCALE, "ELYTRA_SCALE", RecipeType.ANCIENT_ALTAR, new ItemStack[] {SlimefunItems.ENDER_LUMP_3, SlimefunItems.RUNE_AIR, SlimefunItems.ENDER_LUMP_3, SlimefunItems.RUNE_ENDER, new ItemStack(Material.FEATHER), SlimefunItems.RUNE_ENDER, SlimefunItems.ENDER_LUMP_3, SlimefunItems.RUNE_AIR, SlimefunItems.ENDER_LUMP_3}) @@ -3853,9 +3811,8 @@ public final class SlimefunSetup { @Override public boolean onRightClick(final ItemUseEvent e, Player p, ItemStack stack) { if (e.getClickedBlock() == null) return false; - SlimefunItem item = BlockStorage.check(e.getClickedBlock()); - if (item == null) return false; - if (!item.getID().equals("CARGO_NODE")) return false; + String id = BlockStorage.checkID(e.getClickedBlock()); + if (id == null || !id.equals("CARGO_NODE")) return false; if (CargoNet.getNetworkFromLocation(e.getClickedBlock().getLocation()) != null) { p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&7Connected: " + "&2\u2714")); @@ -3886,6 +3843,7 @@ public final class SlimefunSetup { public int getEnergyConsumption() { return 10; } + }.registerChargeableBlock(true, 256); new ReactorAccessPort(Categories.ELECTRICITY, SlimefunItems.REACTOR_ACCESS_PORT, "REACTOR_ACCESS_PORT", RecipeType.ENHANCED_CRAFTING_TABLE, From 01fe51353212300da45ce3ad817daa21e35d755d Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Sun, 1 Sep 2019 20:43:35 +0200 Subject: [PATCH 131/169] Small bug fix --- src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java index 68eef45e2..ce2ab2137 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java @@ -79,7 +79,6 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.ReplacingItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunArmorPiece; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunBackpack; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunBow; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunGadget; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunMachine; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SolarHelmet; @@ -99,6 +98,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.cargo.CargoOutputNode; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.DietCookie; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.ExplosivePickaxe; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.ExplosiveShovel; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.GoldPan; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.GrapplingHook; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.InfernalBonemeal; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.MagicSugar; @@ -357,7 +357,7 @@ public final class SlimefunSetup { new ItemStack[] {new ItemStack(Material.LAPIS_BLOCK), new ItemStack(Material.LAPIS_BLOCK), new ItemStack(Material.LAPIS_BLOCK), new ItemStack(Material.REDSTONE_BLOCK), SlimefunItems.BASIC_CIRCUIT_BOARD, new ItemStack(Material.REDSTONE_BLOCK), new ItemStack(Material.LAPIS_BLOCK), new ItemStack(Material.LAPIS_BLOCK), new ItemStack(Material.LAPIS_BLOCK)}) .register(true); - new SlimefunGadget(Categories.TOOLS, SlimefunItems.GOLD_PAN, "GOLD_PAN", RecipeType.ENHANCED_CRAFTING_TABLE, + new GoldPan(Categories.TOOLS, SlimefunItems.GOLD_PAN, "GOLD_PAN", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {null, null, null, new ItemStack(Material.STONE), new ItemStack(Material.BOWL), new ItemStack(Material.STONE), new ItemStack(Material.STONE), new ItemStack(Material.STONE), new ItemStack(Material.STONE)}, new ItemStack[] {new ItemStack(Material.GRAVEL), new ItemStack(Material.FLINT), new ItemStack(Material.GRAVEL), new ItemStack(Material.CLAY_BALL), new ItemStack(Material.GRAVEL), SlimefunItems.SIFTED_ORE}, new String[] {"chance.FLINT", "chance.CLAY", "chance.SIFTED_ORE"}, new Integer[] {47, 28, 15}) From 7ec49246651d068109b859ef75311b01e60b5423 Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Sun, 1 Sep 2019 21:02:10 +0200 Subject: [PATCH 132/169] Fixed default Items.yml for BlockPlacer --- .../items/TelepositionScroll.java | 40 +++++++++++++++++++ .../machines/HologramProjector.java | 24 +++++------ .../SlimefunItem/machines/InfusedHopper.java | 17 ++++---- .../Slimefun/Setup/SlimefunSetup.java | 28 +++---------- 4 files changed, 65 insertions(+), 44 deletions(-) create mode 100644 src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/TelepositionScroll.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/TelepositionScroll.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/TelepositionScroll.java new file mode 100644 index 000000000..96c161b74 --- /dev/null +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/TelepositionScroll.java @@ -0,0 +1,40 @@ +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items; + +import org.bukkit.Location; +import org.bukkit.entity.ArmorStand; +import org.bukkit.entity.Entity; +import org.bukkit.entity.LivingEntity; +import org.bukkit.inventory.ItemStack; + +import me.mrCookieSlime.Slimefun.Lists.RecipeType; +import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; +import me.mrCookieSlime.Slimefun.Objects.Category; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SimpleSlimefunItem; +import me.mrCookieSlime.Slimefun.Objects.handlers.ItemInteractionHandler; +import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; + +public class TelepositionScroll extends SimpleSlimefunItem { + + public TelepositionScroll(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe) { + super(category, item, id, recipeType, recipe); + } + + @Override + public ItemInteractionHandler getItemHandler() { + return (e, p, item) -> { + if (SlimefunManager.isItemSimiliar(item, SlimefunItems.SCROLL_OF_DIMENSIONAL_TELEPOSITION, true)) { + for (Entity n: p.getNearbyEntities(10.0, 10.0, 10.0)) { + if (n instanceof LivingEntity && !(n instanceof ArmorStand) && !n.getUniqueId().equals(p.getUniqueId())) { + float yaw = n.getLocation().getYaw() + 180.0F; + if (yaw > 360.0F) yaw = yaw - 360.0F; + + n.teleport(new Location(n.getWorld(), n.getLocation().getX(), n.getLocation().getY(), n.getLocation().getZ(), yaw, n.getLocation().getPitch())); + } + } + return true; + } + else return false; + }; + } + +} diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/HologramProjector.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/HologramProjector.java index 404262c91..5b7f2aaa4 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/HologramProjector.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/HologramProjector.java @@ -4,17 +4,17 @@ import org.bukkit.block.Block; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; -import me.mrCookieSlime.CSCoreLibPlugin.events.ItemUseEvent; import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SimpleSlimefunItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason; import me.mrCookieSlime.Slimefun.Objects.handlers.ItemInteractionHandler; import me.mrCookieSlime.Slimefun.api.BlockStorage; import me.mrCookieSlime.Slimefun.holograms.HologramProjectorHologram; -public class HologramProjector extends SlimefunItem { +public class HologramProjector extends SimpleSlimefunItem { public HologramProjector(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe, ItemStack recipeOutput) { super(category, item, id, recipeType, recipe, recipeOutput); @@ -39,14 +39,12 @@ public class HologramProjector extends SlimefunItem { } @Override - public void register(boolean slimefun) { - addItemHandler(new ItemInteractionHandler() { - - @Override - public boolean onRightClick(ItemUseEvent e, Player p, ItemStack stack) { - if (e.getClickedBlock() == null) return false; - SlimefunItem item = BlockStorage.check(e.getClickedBlock()); - if (item == null || !item.getID().equals(getID())) return false; + public ItemInteractionHandler getItemHandler() { + return (e, p, item) -> { + if (e.getClickedBlock() == null) return false; + + String id = BlockStorage.checkID(e.getClickedBlock()); + if (id != null && id.equals(getID())) { e.setCancelled(true); if (BlockStorage.getLocationInfo(e.getClickedBlock().getLocation(), "owner").equals(p.getUniqueId().toString())) { @@ -55,8 +53,8 @@ public class HologramProjector extends SlimefunItem { return true; } - }); - - super.register(slimefun); + + return false; + }; } } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/InfusedHopper.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/InfusedHopper.java index 3e458133e..3e9374ae0 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/InfusedHopper.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/InfusedHopper.java @@ -14,13 +14,14 @@ import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config; import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SimpleSlimefunItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason; import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker; import me.mrCookieSlime.Slimefun.api.BlockStorage; import me.mrCookieSlime.Slimefun.holograms.InfusedHopperHologram; -public class InfusedHopper extends SlimefunItem { +public class InfusedHopper extends SimpleSlimefunItem { public InfusedHopper(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe) { super(category, item, id, recipeType, recipe); @@ -39,10 +40,10 @@ public class InfusedHopper extends SlimefunItem { } }); } - + @Override - public void register(boolean slimefun) { - addItemHandler(new BlockTicker() { + public BlockTicker getItemHandler() { + return new BlockTicker() { @Override public void tick(Block b, SlimefunItem item, Config data) { @@ -63,15 +64,15 @@ public class InfusedHopper extends SlimefunItem { } } - if (sound) b.getWorld().playSound(b.getLocation(), Sound.ENTITY_ENDERMAN_TELEPORT, 5F, 2F); + if (sound) { + b.getWorld().playSound(b.getLocation(), Sound.ENTITY_ENDERMAN_TELEPORT, 5F, 2F); + } } @Override public boolean isSynchronized() { return true; } - }); - - super.register(slimefun); + }; } } diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java index ce2ab2137..aed0c1018 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java @@ -1,7 +1,6 @@ package me.mrCookieSlime.Slimefun.Setup; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; import java.util.Random; import java.util.Set; @@ -22,7 +21,6 @@ import org.bukkit.block.BlockFace; import org.bukkit.block.Chest; import org.bukkit.block.Container; import org.bukkit.block.CreatureSpawner; -import org.bukkit.entity.ArmorStand; import org.bukkit.entity.EnderPearl; import org.bukkit.entity.Entity; import org.bukkit.entity.EntityType; @@ -104,6 +102,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.InfernalBonemeal; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.MagicSugar; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.MonsterJerky; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.PickaxeOfTheSeeker; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.TelepositionScroll; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.SeismicAxe; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.StormStaff; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.BlockPlacer; @@ -1334,7 +1333,7 @@ public final class SlimefunSetup { new ExplosivePickaxe(Categories.TOOLS, SlimefunItems.EXPLOSIVE_PICKAXE, "EXPLOSIVE_PICKAXE", RecipeType.MAGIC_WORKBENCH, new ItemStack[] {new ItemStack(Material.TNT), SlimefunItems.SYNTHETIC_DIAMOND, new ItemStack(Material.TNT), null, SlimefunItems.FERROSILICON, null, null, SlimefunItems.FERROSILICON, null}, - new String[] {"unbreakable-blocks", "damage-on-use"}, new Object[] {Arrays.asList("BEDROCK", "BARRIER", "COMMAND", "COMMAND_CHAIN", "COMMAND_REPEATING"), Boolean.FALSE }) + new String[] {"unbreakable-blocks", "damage-on-use"}, new Object[] {Stream.of(Material.BEDROCK, Material.END_PORTAL_FRAME, Material.END_PORTAL, Material.NETHER_PORTAL, Material.BARRIER, Material.STRUCTURE_BLOCK, Material.COMMAND_BLOCK, Material.CHAIN_COMMAND_BLOCK, Material.REPEATING_COMMAND_BLOCK).map(Material::toString).toArray(String[]::new), Boolean.FALSE }) .register(true); new ExplosiveShovel(Categories.TOOLS, SlimefunItems.EXPLOSIVE_SHOVEL, "EXPLOSIVE_SHOVEL", RecipeType.MAGIC_WORKBENCH, @@ -1661,29 +1660,12 @@ public final class SlimefunSetup { new BlockPlacer(Categories.MACHINES_1, SlimefunItems.BLOCK_PLACER, "BLOCK_PLACER", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {SlimefunItems.GOLD_4K, new ItemStack(Material.PISTON), SlimefunItems.GOLD_4K, new ItemStack(Material.IRON_INGOT), SlimefunItems.ELECTRIC_MOTOR, new ItemStack(Material.IRON_INGOT), SlimefunItems.GOLD_4K, new ItemStack(Material.PISTON), SlimefunItems.GOLD_4K}, - new String[] {"unplaceable-blocks"}, Stream.of(Material.STRUCTURE_BLOCK, Material.COMMAND_BLOCK).map(Material::toString).toArray(Object[]::new)) + new String[] {"unplaceable-blocks"}, new Object[] {Stream.of(Material.STRUCTURE_BLOCK, Material.COMMAND_BLOCK).map(Material::toString).toArray(String[]::new)}) .register(true); - new SlimefunItem(Categories.MAGIC, SlimefunItems.SCROLL_OF_DIMENSIONAL_TELEPOSITION, "SCROLL_OF_DIMENSIONAL_TELEPOSITION", RecipeType.MAGIC_WORKBENCH, + new TelepositionScroll(Categories.MAGIC, SlimefunItems.SCROLL_OF_DIMENSIONAL_TELEPOSITION, "SCROLL_OF_DIMENSIONAL_TELEPOSITION", RecipeType.MAGIC_WORKBENCH, new ItemStack[] {null, SlimefunItems.ENDER_LUMP_3, SlimefunItems.MAGIC_EYE_OF_ENDER, SlimefunItems.ENDER_LUMP_3, SlimefunItems.MAGICAL_BOOK_COVER, SlimefunItems.ENDER_LUMP_3, SlimefunItems.MAGIC_EYE_OF_ENDER, SlimefunItems.ENDER_LUMP_3, null}) - .register(true, new ItemInteractionHandler() { - - @Override - public boolean onRightClick(ItemUseEvent e, Player p, ItemStack item) { - if (SlimefunManager.isItemSimiliar(item, SlimefunItems.SCROLL_OF_DIMENSIONAL_TELEPOSITION, true)) { - for (Entity n: p.getNearbyEntities(10.0, 10.0, 10.0)) { - if (n instanceof LivingEntity && !(n instanceof ArmorStand) && !n.getUniqueId().equals(p.getUniqueId())) { - float yaw = n.getLocation().getYaw() + 180.0F; - if (yaw > 360.0F) yaw = yaw - 360.0F; - - n.teleport(new Location(n.getWorld(), n.getLocation().getX(), n.getLocation().getY(), n.getLocation().getZ(), yaw, n.getLocation().getPitch())); - } - } - return true; - } - else return false; - } - }); + .register(true); new SlimefunBow(SlimefunItems.EXPLOSIVE_BOW, "EXPLOSIVE_BOW", new ItemStack[] {null, new ItemStack(Material.STICK), new ItemStack(Material.GUNPOWDER), SlimefunItems.STAFF_FIRE, null, SlimefunItems.SULFATE, null, new ItemStack(Material.STICK), new ItemStack(Material.GUNPOWDER)}) From 4b821c1559d84554372e6e99ed2142b642daa9ae Mon Sep 17 00:00:00 2001 From: ajan-12 <36973731+ajan-12@users.noreply.github.com> Date: Sun, 1 Sep 2019 22:42:04 +0300 Subject: [PATCH 133/169] Some code cleanup and finally fixed #253. --- .../SlimefunItem/items/GrapplingHook.java | 32 +++++++++++++++---- .../Objects/tasks/GrapplingHookTask.java | 26 --------------- .../Slimefun/listeners/BowListener.java | 8 ++--- 3 files changed, 29 insertions(+), 37 deletions(-) delete mode 100644 src/me/mrCookieSlime/Slimefun/Objects/tasks/GrapplingHookTask.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/GrapplingHook.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/GrapplingHook.java index 21a352f25..a414642f6 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/GrapplingHook.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/GrapplingHook.java @@ -20,11 +20,12 @@ import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Objects.handlers.ItemInteractionHandler; -import me.mrCookieSlime.Slimefun.Objects.tasks.GrapplingHookTask; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.api.Slimefun; import me.mrCookieSlime.Slimefun.utils.Utilities; +import java.util.UUID; + public class GrapplingHook extends SlimefunItem { public GrapplingHook(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe, String[] keys, Object[] values) { @@ -39,13 +40,14 @@ public class GrapplingHook extends SlimefunItem { @Override public boolean onRightClick(ItemUseEvent e, Player p, ItemStack item) { if (SlimefunManager.isItemSimiliar(item, SlimefunItems.GRAPPLING_HOOK, true)) { - if (e.getClickedBlock() == null && !utilities.jumpState.containsKey(p.getUniqueId())) { + UUID uuid = p.getUniqueId(); + if (e.getClickedBlock() == null && !utilities.jumpState.containsKey(uuid)) { e.setCancelled(true); if (p.getInventory().getItemInOffHand().getType() == Material.BOW) { // Cancel, to fix dupe #740 return false; } - utilities.jumpState.put(p.getUniqueId(), p.getInventory().getItemInMainHand().getType() != Material.SHEARS); + utilities.jumpState.put(uuid, p.getInventory().getItemInMainHand().getType() != Material.SHEARS); if (p.getInventory().getItemInMainHand().getType() == Material.LEAD) PlayerInventory.consumeItemInHand(p); Vector direction = p.getEyeLocation().getDirection().multiply(2.0); @@ -55,15 +57,31 @@ public class GrapplingHook extends SlimefunItem { Bat b = (Bat) p.getWorld().spawnEntity(p.getLocation(), EntityType.BAT); b.setCanPickupItems(false); + b.setAI(false); b.addPotionEffect(new PotionEffect(PotionEffectType.INVISIBILITY, 100000, 100000)); b.setLeashHolder(arrow); - utilities.damage.add(p.getUniqueId()); - utilities.remove.put(p.getUniqueId(), new Entity[] {b, arrow}); + utilities.damage.add(uuid); + utilities.remove.put(uuid, new Entity[] {b, arrow}); // To fix issue #253 - GrapplingHookTask task = new GrapplingHookTask(p); - task.setID(Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, task, (int) Slimefun.getItemValue("GRAPPLING_HOOK", "despawn-seconds"))); + Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> { + Utilities utilities = SlimefunPlugin.getUtilities(); + + if (utilities.jumpState.containsKey(uuid)) { + utilities.arrows.remove(uuid); + + for (Entity n : utilities.remove.get(uuid)) { + if (n.isValid()) n.remove(); + } + + Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> { + utilities.damage.remove(uuid); + utilities.jumpState.remove(uuid); + utilities.remove.remove(uuid); + }, 20L); + } + }, (int) Slimefun.getItemValue("GRAPPLING_HOOK", "despawn-seconds") * 20); } return true; } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/tasks/GrapplingHookTask.java b/src/me/mrCookieSlime/Slimefun/Objects/tasks/GrapplingHookTask.java deleted file mode 100644 index 9f530c262..000000000 --- a/src/me/mrCookieSlime/Slimefun/Objects/tasks/GrapplingHookTask.java +++ /dev/null @@ -1,26 +0,0 @@ -package me.mrCookieSlime.Slimefun.Objects.tasks; - -import org.bukkit.entity.Entity; -import org.bukkit.entity.Player; - -import me.mrCookieSlime.Slimefun.SlimefunPlugin; -import me.mrCookieSlime.Slimefun.utils.Utilities; - -public class GrapplingHookTask extends SlimefunTask { - - public GrapplingHookTask(Player p) { - super(p); - } - - @Override - void executeTask() { - Utilities utilities = SlimefunPlugin.getUtilities(); - - for (Entity n: utilities.remove.get(uuid)) { - n.remove(); - } - - utilities.jumpState.remove(uuid); - utilities.remove.remove(uuid); - } -} diff --git a/src/me/mrCookieSlime/Slimefun/listeners/BowListener.java b/src/me/mrCookieSlime/Slimefun/listeners/BowListener.java index 96509a083..244690593 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/BowListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/BowListener.java @@ -28,7 +28,7 @@ public class BowListener implements Listener { plugin.getServer().getPluginManager().registerEvents(this, plugin); utilities = SlimefunPlugin.getUtilities(); } - + @EventHandler public void onBowUse(EntityShootBowEvent e) { if (!(e.getEntity() instanceof Player) || !(e.getProjectile() instanceof Arrow)) return; @@ -39,7 +39,7 @@ public class BowListener implements Listener { public void onArrowHit(final ProjectileHitEvent e) { Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> { if (!e.getEntity().isValid()) return; - if (utilities.arrows.containsKey(e.getEntity().getUniqueId())) utilities.arrows.remove(e.getEntity().getUniqueId()); + utilities.arrows.remove(e.getEntity().getUniqueId()); if (e.getEntity() instanceof Arrow) handleGrapplingHook((Arrow) e.getEntity()); }, 4L); } @@ -55,7 +55,7 @@ public class BowListener implements Listener { else p.setVelocity(arrow.getLocation().toVector().subtract(p.getLocation().toVector())); for (Entity n: utilities.remove.get(p.getUniqueId())) { - n.remove(); + if (n.isValid()) n.remove(); } Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> { @@ -84,7 +84,7 @@ public class BowListener implements Listener { p.setVelocity(v); for (Entity n: utilities.remove.get(p.getUniqueId())) { - n.remove(); + if (n.isValid()) n.remove(); } Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> { From bafd526a79b658e34c63c5ae165c2150cbd24d07 Mon Sep 17 00:00:00 2001 From: ajan-12 <36973731+ajan-12@users.noreply.github.com> Date: Sun, 1 Sep 2019 22:49:27 +0300 Subject: [PATCH 134/169] Syncing with the changes in main repo. --- .../SlimefunItem/items/GrapplingHook.java | 104 +++++++++--------- 1 file changed, 49 insertions(+), 55 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/GrapplingHook.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/GrapplingHook.java index bbae82f08..cc0cef135 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/GrapplingHook.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/GrapplingHook.java @@ -6,13 +6,11 @@ import org.bukkit.entity.Arrow; import org.bukkit.entity.Bat; import org.bukkit.entity.Entity; import org.bukkit.entity.EntityType; -import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; import org.bukkit.potion.PotionEffect; import org.bukkit.potion.PotionEffectType; import org.bukkit.util.Vector; -import me.mrCookieSlime.CSCoreLibPlugin.events.ItemUseEvent; import me.mrCookieSlime.CSCoreLibPlugin.general.Player.PlayerInventory; import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.Lists.RecipeType; @@ -32,61 +30,57 @@ public class GrapplingHook extends SimpleSlimefunItem { super(category, item, id, recipeType, recipe); } - @Override - public void register(boolean slimefun) { - addItemHandler(new ItemInteractionHandler() { - Utilities utilities = SlimefunPlugin.getUtilities(); + @Override + public ItemInteractionHandler getItemHandler() { + Utilities utilities = SlimefunPlugin.getUtilities(); - @Override - public boolean onRightClick(ItemUseEvent e, Player p, ItemStack item) { - if (SlimefunManager.isItemSimiliar(item, SlimefunItems.GRAPPLING_HOOK, true)) { - UUID uuid = p.getUniqueId(); - if (e.getClickedBlock() == null && !utilities.jumpState.containsKey(uuid)) { - e.setCancelled(true); - if (p.getInventory().getItemInOffHand().getType() == Material.BOW) { - // Cancel, to fix dupe #740 - return false; - } - utilities.jumpState.put(uuid, p.getInventory().getItemInMainHand().getType() != Material.SHEARS); - if (p.getInventory().getItemInMainHand().getType() == Material.LEAD) - PlayerInventory.consumeItemInHand(p); - - Vector direction = p.getEyeLocation().getDirection().multiply(2.0); - Arrow arrow = p.getWorld().spawn(p.getEyeLocation().add(direction.getX(), direction.getY(), direction.getZ()), Arrow.class); - arrow.setShooter(p); - arrow.setVelocity(direction); - - Bat b = (Bat) p.getWorld().spawnEntity(p.getLocation(), EntityType.BAT); - b.setCanPickupItems(false); - b.setAI(false); - b.addPotionEffect(new PotionEffect(PotionEffectType.INVISIBILITY, 100000, 100000)); - b.setLeashHolder(arrow); - - utilities.damage.add(uuid); - utilities.remove.put(uuid, new Entity[]{b, arrow}); - - // To fix issue #253 - Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> { - Utilities utilities = SlimefunPlugin.getUtilities(); - - if (utilities.jumpState.containsKey(uuid)) { - utilities.arrows.remove(uuid); - - for (Entity n : utilities.remove.get(uuid)) { - if (n.isValid()) n.remove(); - } - - Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> { - utilities.damage.remove(uuid); - utilities.jumpState.remove(uuid); - utilities.remove.remove(uuid); - }, 20L); - } - }, (int) Slimefun.getItemValue("GRAPPLING_HOOK", "despawn-seconds") * 20); + return (e, p, item) -> { + if (SlimefunManager.isItemSimiliar(item, SlimefunItems.GRAPPLING_HOOK, true)) { + UUID uuid = p.getUniqueId(); + if (e.getClickedBlock() == null && !utilities.jumpState.containsKey(uuid)) { + e.setCancelled(true); + if (p.getInventory().getItemInOffHand().getType() == Material.BOW) { + // Cancel, to fix dupe #740 + return false; } - return true; - } else return false; + utilities.jumpState.put(uuid, p.getInventory().getItemInMainHand().getType() != Material.SHEARS); + if (p.getInventory().getItemInMainHand().getType() == Material.LEAD) + PlayerInventory.consumeItemInHand(p); + + Vector direction = p.getEyeLocation().getDirection().multiply(2.0); + Arrow arrow = p.getWorld().spawn(p.getEyeLocation().add(direction.getX(), direction.getY(), direction.getZ()), Arrow.class); + arrow.setShooter(p); + arrow.setVelocity(direction); + + Bat b = (Bat) p.getWorld().spawnEntity(p.getLocation(), EntityType.BAT); + b.setCanPickupItems(false); + b.setAI(false); + b.addPotionEffect(new PotionEffect(PotionEffectType.INVISIBILITY, 100000, 100000)); + b.setLeashHolder(arrow); + + utilities.damage.add(uuid); + utilities.remove.put(uuid, new Entity[]{b, arrow}); + + // To fix issue #253 + Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> { + if (utilities.jumpState.containsKey(uuid)) { + utilities.arrows.remove(uuid); + + for (Entity n : utilities.remove.get(uuid)) { + if (n.isValid()) n.remove(); + } + + Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> { + utilities.damage.remove(uuid); + utilities.jumpState.remove(uuid); + utilities.remove.remove(uuid); + }, 20L); + } + }, (int) Slimefun.getItemValue("GRAPPLING_HOOK", "despawn-seconds") * 20); + } + return true; } - }); + else return false; + }; } } From 5dc90489836658803d359bb5a4cd7db3fb7239d1 Mon Sep 17 00:00:00 2001 From: Daniel Walsh Date: Sun, 1 Sep 2019 20:55:12 +0100 Subject: [PATCH 135/169] Update features.md --- .github/PULL_REQUEST_TEMPLATE/features.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/PULL_REQUEST_TEMPLATE/features.md b/.github/PULL_REQUEST_TEMPLATE/features.md index 4df69a71d..d260edea3 100644 --- a/.github/PULL_REQUEST_TEMPLATE/features.md +++ b/.github/PULL_REQUEST_TEMPLATE/features.md @@ -14,5 +14,5 @@ ## Testability -[ ] I have fully tested the proposed changes and promise that they will not break everything into chaos. -[ ] I have also tested the proposed changes in combination with various popular addons and can confirm my changes do not break them. +* [ ] I have fully tested the proposed changes and promise that they will not break everything into chaos. +* [ ] I have also tested the proposed changes in combination with various popular addons and can confirm my changes do not break them. From 73896e188564f54be5811b8169dcec52ccf830f4 Mon Sep 17 00:00:00 2001 From: Daniel Walsh Date: Sun, 1 Sep 2019 20:56:08 +0100 Subject: [PATCH 136/169] Fix TODOs --- .github/PULL_REQUEST_TEMPLATE/fix.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/PULL_REQUEST_TEMPLATE/fix.md b/.github/PULL_REQUEST_TEMPLATE/fix.md index ebb8e24f8..de8429877 100644 --- a/.github/PULL_REQUEST_TEMPLATE/fix.md +++ b/.github/PULL_REQUEST_TEMPLATE/fix.md @@ -10,5 +10,5 @@ ## Testability -[ ] I have fully tested the proposed changes and promise that they will not break everything into chaos. -[ ] I have also tested the proposed changes in combination with various popular addons and can confirm my changes do not break them. +* [ ] I have fully tested the proposed changes and promise that they will not break everything into chaos. +* [ ] I have also tested the proposed changes in combination with various popular addons and can confirm my changes do not break them. From 5ed152b1e7364f59fbfb7e54050f526a7aad7120 Mon Sep 17 00:00:00 2001 From: ajan-12 <36973731+ajan-12@users.noreply.github.com> Date: Sun, 1 Sep 2019 22:59:43 +0300 Subject: [PATCH 137/169] Fixing a mistake in syncing. --- .../Slimefun/Objects/SlimefunItem/items/GrapplingHook.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/GrapplingHook.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/GrapplingHook.java index cc0cef135..7ed8226e9 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/GrapplingHook.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/GrapplingHook.java @@ -26,8 +26,8 @@ import java.util.UUID; public class GrapplingHook extends SimpleSlimefunItem { - public GrapplingHook(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe) { - super(category, item, id, recipeType, recipe); + public GrapplingHook(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe, String[] keys, Object[] values) { + super(category, item, id, recipeType, recipe, keys, values); } @Override From 9c9a3bb6ba00a67eff18eeca084686ce7802bc8d Mon Sep 17 00:00:00 2001 From: ajan-12 <36973731+ajan-12@users.noreply.github.com> Date: Sun, 1 Sep 2019 23:07:16 +0300 Subject: [PATCH 138/169] Implementing postRegister() and doing the requested change. --- .../Slimefun/Objects/SlimefunItem/SlimefunItem.java | 4 ++++ .../Objects/SlimefunItem/items/GrapplingHook.java | 8 +++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java index cb67ad359..f44f914bf 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java @@ -261,6 +261,8 @@ public class SlimefunItem { if (this instanceof VanillaItem) this.state = State.VANILLA; else this.state = State.DISABLED; } + + postRegister(); } catch(Exception x) { Slimefun.getLogger().log(Level.WARNING, "Registering the Item '" + id + "' for Slimefun " + Slimefun.getVersion() + " has failed", x); } @@ -506,6 +508,8 @@ public class SlimefunItem { ChargableBlock.registerCapacitor(id, capacity); } + public void postRegister() {} + protected void setItem(ItemStack stack) { this.item = stack; } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/GrapplingHook.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/GrapplingHook.java index 7ed8226e9..58cc198b8 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/GrapplingHook.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/GrapplingHook.java @@ -25,6 +25,7 @@ import me.mrCookieSlime.Slimefun.utils.Utilities; import java.util.UUID; public class GrapplingHook extends SimpleSlimefunItem { + private long despawnTicks; public GrapplingHook(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe, String[] keys, Object[] values) { super(category, item, id, recipeType, recipe, keys, values); @@ -76,11 +77,16 @@ public class GrapplingHook extends SimpleSlimefunItem { utilities.remove.remove(uuid); }, 20L); } - }, (int) Slimefun.getItemValue("GRAPPLING_HOOK", "despawn-seconds") * 20); + }, despawnTicks); } return true; } else return false; }; } + + @Override + public void postRegister() { + despawnTicks = (int) Slimefun.getItemValue("GRAPPLING_HOOK", "despawn-seconds") * 20; + } } From 08f672600a7dce12cabc7b547cef7b1be0de3923 Mon Sep 17 00:00:00 2001 From: ajan-12 <36973731+ajan-12@users.noreply.github.com> Date: Sun, 1 Sep 2019 23:54:59 +0300 Subject: [PATCH 139/169] A little code improvement. --- src/me/mrCookieSlime/Slimefun/utils/DamageableItem.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/me/mrCookieSlime/Slimefun/utils/DamageableItem.java b/src/me/mrCookieSlime/Slimefun/utils/DamageableItem.java index 50347c132..7216451fb 100644 --- a/src/me/mrCookieSlime/Slimefun/utils/DamageableItem.java +++ b/src/me/mrCookieSlime/Slimefun/utils/DamageableItem.java @@ -16,7 +16,7 @@ public interface DamageableItem { if (item == null || item.getType() == null || item.getType() == Material.AIR) { return; } - else if (item.getAmount() > 0 && isDamageable() && !item.getEnchantments().containsKey(Enchantment.DURABILITY) || Math.random() * 100 <= (60 + 40 / (item.getEnchantmentLevel(Enchantment.DURABILITY) + 1))) { + else if (item.getAmount() > 0 && isDamageable() && !item.getEnchantments().containsKey(Enchantment.DURABILITY) || Math.random() * 100 <= (60 + Math.floorDiv(40, (item.getEnchantmentLevel(Enchantment.DURABILITY) + 1)))) { ItemMeta meta = item.getItemMeta(); Damageable damageable = (Damageable) meta; From e971b37c5f6cd41de90eaf4f76ad1843cc93de41 Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Sun, 1 Sep 2019 23:16:51 +0200 Subject: [PATCH 140/169] Update PULL_REQUEST_TEMPLATE.md --- .github/PULL_REQUEST_TEMPLATE.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 86a92e931..b1a6f98a1 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -10,5 +10,5 @@ ## Testability -[ ] I have fully tested the proposed changes and promise that they will not break everything into chaos. -[ ] I have also tested the proposed changes in combination with various popular addons and can confirm my changes do not break them. +- [ ] I have fully tested the proposed changes and promise that they will not break everything into chaos. +- [ ] I have also tested the proposed changes in combination with various popular addons and can confirm my changes do not break them. From 90327e6908dbb94a6f18505815d7d1ac3960d4c8 Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Sun, 1 Sep 2019 23:21:01 +0200 Subject: [PATCH 141/169] 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()]); } From 41bbbdd3dcdc58ee4175eb52eeb896ef4434bb48 Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Sun, 1 Sep 2019 23:35:19 +0200 Subject: [PATCH 142/169] Fixed various Bugs --- .../SlimefunItem/items/ExplosivePickaxe.java | 105 +++++++++--------- .../SlimefunItem/items/ExplosiveShovel.java | 85 +++++++------- .../SlimefunItem/items/GrapplingHook.java | 17 +-- .../SlimefunItem/items/KnowledgeFlask.java | 40 +++++++ .../SlimefunItem/items/KnowledgeTome.java | 53 +++++++++ .../items/PickaxeOfTheSeeker.java | 29 +++-- .../SlimefunItem/items/SeismicAxe.java | 1 + .../Slimefun/Setup/SlimefunSetup.java | 70 ++---------- 8 files changed, 219 insertions(+), 181 deletions(-) create mode 100644 src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/KnowledgeFlask.java create mode 100644 src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/KnowledgeTome.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/ExplosivePickaxe.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/ExplosivePickaxe.java index 5d095d4cb..3fa7954eb 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/ExplosivePickaxe.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/ExplosivePickaxe.java @@ -6,7 +6,6 @@ import org.bukkit.Effect; import org.bukkit.Material; import org.bukkit.Sound; import org.bukkit.block.Block; -import org.bukkit.event.block.BlockBreakEvent; import org.bukkit.inventory.ItemStack; import io.github.thebusybiscuit.cscorelib2.protection.ProtectionModule.Action; @@ -17,6 +16,7 @@ import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.HandledBlock; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SimpleSlimefunItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.Interfaces.NotPlaceable; @@ -26,7 +26,7 @@ import me.mrCookieSlime.Slimefun.api.BlockStorage; import me.mrCookieSlime.Slimefun.api.Slimefun; import me.mrCookieSlime.Slimefun.utils.DamageableItem; -public class ExplosivePickaxe extends SlimefunItem implements NotPlaceable, DamageableItem { +public class ExplosivePickaxe extends SimpleSlimefunItem implements NotPlaceable, DamageableItem { private String[] blacklist; private boolean damageOnUse; @@ -36,64 +36,61 @@ public class ExplosivePickaxe extends SlimefunItem implements NotPlaceable, Dama } @Override - public void register(boolean slimefun) { - - addItemHandler(new BlockBreakHandler() { - - @Override - public boolean onBlockBreak(BlockBreakEvent e, ItemStack item, int fortune, List drops) { - if (SlimefunManager.isItemSimiliar(item, SlimefunItems.EXPLOSIVE_PICKAXE, true)) { - e.getBlock().getWorld().createExplosion(e.getBlock().getLocation(), 0.0F); - e.getBlock().getWorld().playSound(e.getBlock().getLocation(), Sound.ENTITY_GENERIC_EXPLODE, 1F, 1F); - for (int x = -1; x <= 1; x++) { - for (int y = -1; y <= 1; y++) { - for (int z = -1; z <= 1; z++) { - Block b = e.getBlock().getRelative(x, y, z); - - if (b.getType() != Material.AIR && !b.isLiquid() && !StringUtils.equals(b.getType().toString(), blacklist) && SlimefunPlugin.getProtectionManager().hasPermission(e.getPlayer(), b.getLocation(), Action.BREAK_BLOCK)) { - if (SlimefunPlugin.getHooks().isCoreProtectInstalled()) { - SlimefunPlugin.getHooks().getCoreProtectAPI().logRemoval(e.getPlayer().getName(), b.getLocation(), b.getType(), b.getBlockData()); - } - - 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 (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())); - } - } - else if (b.getType() == Material.PLAYER_HEAD) { - b.breakNaturally(); - } - else if (b.getType().name().endsWith("_SHULKER_BOX")) { - b.breakNaturally(); - } - else { - for (ItemStack drop: b.getDrops()) { - b.getWorld().dropItemNaturally(b.getLocation(), (b.getType().toString().endsWith("_ORE") && b.getType() != Material.IRON_ORE && b.getType() != Material.GOLD_ORE) ? new CustomItem(drop, fortune): drop); - } - b.setType(Material.AIR); - } - - damageItem(e.getPlayer(), item); + public BlockBreakHandler getItemHandler() { + return (e, item, fortune, drops) -> { + if (SlimefunManager.isItemSimiliar(item, SlimefunItems.EXPLOSIVE_PICKAXE, true)) { + e.getBlock().getWorld().createExplosion(e.getBlock().getLocation(), 0.0F); + e.getBlock().getWorld().playSound(e.getBlock().getLocation(), Sound.ENTITY_GENERIC_EXPLODE, 1F, 1F); + for (int x = -1; x <= 1; x++) { + for (int y = -1; y <= 1; y++) { + for (int z = -1; z <= 1; z++) { + Block b = e.getBlock().getRelative(x, y, z); + + if (b.getType() != Material.AIR && !b.isLiquid() && !StringUtils.equals(b.getType().toString(), blacklist) && SlimefunPlugin.getProtectionManager().hasPermission(e.getPlayer(), b.getLocation(), Action.BREAK_BLOCK)) { + if (SlimefunPlugin.getHooks().isCoreProtectInstalled()) { + SlimefunPlugin.getHooks().getCoreProtectAPI().logRemoval(e.getPlayer().getName(), b.getLocation(), b.getType(), b.getBlockData()); } + + 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 (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())); + } + } + else if (b.getType() == Material.PLAYER_HEAD) { + b.breakNaturally(); + } + else if (b.getType().name().endsWith("_SHULKER_BOX")) { + b.breakNaturally(); + } + else { + for (ItemStack drop: b.getDrops()) { + b.getWorld().dropItemNaturally(b.getLocation(), (b.getType().toString().endsWith("_ORE") && b.getType() != Material.IRON_ORE && b.getType() != Material.GOLD_ORE) ? new CustomItem(drop, fortune): drop); + } + b.setType(Material.AIR); + } + + damageItem(e.getPlayer(), item); } } } - - return true; } - else return false; + + return true; } - }); - - super.register(slimefun); - damageOnUse = ((Boolean) Slimefun.getItemValue(getID(), "damage-on-use")); + else return false; + }; + } + + @Override + public void postRegister() { + damageOnUse = ((boolean) Slimefun.getItemValue(getID(), "damage-on-use")); List list = (List) Slimefun.getItemValue(getID(), "unbreakable-blocks"); blacklist = list.toArray(new String[list.size()]); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/ExplosiveShovel.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/ExplosiveShovel.java index e88300561..fe05b9073 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/ExplosiveShovel.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/ExplosiveShovel.java @@ -1,12 +1,9 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items; -import java.util.List; - import org.bukkit.Effect; import org.bukkit.Material; import org.bukkit.Sound; import org.bukkit.block.Block; -import org.bukkit.event.block.BlockBreakEvent; import org.bukkit.inventory.ItemStack; import io.github.thebusybiscuit.cscorelib2.materials.MaterialTools; @@ -15,14 +12,14 @@ import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; import me.mrCookieSlime.Slimefun.Objects.Category; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SimpleSlimefunItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.Interfaces.NotPlaceable; import me.mrCookieSlime.Slimefun.Objects.handlers.BlockBreakHandler; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.api.Slimefun; import me.mrCookieSlime.Slimefun.utils.DamageableItem; -public class ExplosiveShovel extends SlimefunItem implements NotPlaceable, DamageableItem { +public class ExplosiveShovel extends SimpleSlimefunItem implements NotPlaceable, DamageableItem { private boolean damageOnUse; @@ -31,55 +28,53 @@ public class ExplosiveShovel extends SlimefunItem implements NotPlaceable, Damag } @Override - public void register(boolean slimefun) { - addItemHandler(new BlockBreakHandler() { - - @Override - public boolean onBlockBreak(BlockBreakEvent e, ItemStack item, int fortune, List drops) { - if (SlimefunManager.isItemSimiliar(item, SlimefunItems.EXPLOSIVE_SHOVEL, true)) { - e.getBlock().getWorld().createExplosion(e.getBlock().getLocation(), 0.0F); - e.getBlock().getWorld().playSound(e.getBlock().getLocation(), Sound.ENTITY_GENERIC_EXPLODE, 1F, 1F); - - for (int x = -1; x <= 1; x++) { - for (int y = -1; y <= 1; y++) { - for (int z = -1; z <= 1; z++) { - Block b = e.getBlock().getRelative(x, y, z); - boolean correctType = false; - - for (Material mat : MaterialTools.getShovelItems()) { - if (b.getType() == mat) { - correctType = true; - break; - } + public BlockBreakHandler getItemHandler() { + return (e, item, fortune, drops) -> { + if (SlimefunManager.isItemSimiliar(item, SlimefunItems.EXPLOSIVE_SHOVEL, true)) { + e.getBlock().getWorld().createExplosion(e.getBlock().getLocation(), 0.0F); + e.getBlock().getWorld().playSound(e.getBlock().getLocation(), Sound.ENTITY_GENERIC_EXPLODE, 1F, 1F); + + for (int x = -1; x <= 1; x++) { + for (int y = -1; y <= 1; y++) { + for (int z = -1; z <= 1; z++) { + Block b = e.getBlock().getRelative(x, y, z); + boolean correctType = false; + + for (Material mat : MaterialTools.getShovelItems()) { + if (b.getType() == mat) { + correctType = true; + break; } - - if (correctType && SlimefunPlugin.getProtectionManager().hasPermission(e.getPlayer(), b.getLocation(), Action.BREAK_BLOCK)) { - if (SlimefunPlugin.getHooks().isCoreProtectInstalled()) { - SlimefunPlugin.getHooks().getCoreProtectAPI().logRemoval(e.getPlayer().getName(), b.getLocation(), b.getType(), b.getBlockData()); - } - - b.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, b.getType()); - for (ItemStack drop: b.getDrops()) { - b.getWorld().dropItemNaturally(b.getLocation(), drop); - } - b.setType(Material.AIR); - - damageItem(e.getPlayer(), item); + } + + if (correctType && SlimefunPlugin.getProtectionManager().hasPermission(e.getPlayer(), b.getLocation(), Action.BREAK_BLOCK)) { + if (SlimefunPlugin.getHooks().isCoreProtectInstalled()) { + SlimefunPlugin.getHooks().getCoreProtectAPI().logRemoval(e.getPlayer().getName(), b.getLocation(), b.getType(), b.getBlockData()); } + + b.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, b.getType()); + for (ItemStack drop: b.getDrops()) { + b.getWorld().dropItemNaturally(b.getLocation(), drop); + } + b.setType(Material.AIR); + + damageItem(e.getPlayer(), item); } } } - - return true; } - else return false; + + return true; } - }); - - super.register(slimefun); - damageOnUse = ((Boolean) Slimefun.getItemValue(getID(), "damage-on-use")); + else return false; + }; } + @Override + public void postRegister() { + damageOnUse = ((boolean) Slimefun.getItemValue(getID(), "damage-on-use")); + } + @Override public boolean isDamageable() { return damageOnUse; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/GrapplingHook.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/GrapplingHook.java index 58cc198b8..970e2b175 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/GrapplingHook.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/GrapplingHook.java @@ -1,5 +1,7 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items; +import java.util.UUID; + import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.entity.Arrow; @@ -11,10 +13,8 @@ import org.bukkit.potion.PotionEffect; import org.bukkit.potion.PotionEffectType; import org.bukkit.util.Vector; -import me.mrCookieSlime.CSCoreLibPlugin.general.Player.PlayerInventory; import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.Lists.RecipeType; -import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SimpleSlimefunItem; import me.mrCookieSlime.Slimefun.Objects.handlers.ItemInteractionHandler; @@ -22,9 +22,8 @@ import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.api.Slimefun; import me.mrCookieSlime.Slimefun.utils.Utilities; -import java.util.UUID; - public class GrapplingHook extends SimpleSlimefunItem { + private long despawnTicks; public GrapplingHook(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe, String[] keys, Object[] values) { @@ -36,17 +35,21 @@ public class GrapplingHook extends SimpleSlimefunItem { Utilities utilities = SlimefunPlugin.getUtilities(); return (e, p, item) -> { - if (SlimefunManager.isItemSimiliar(item, SlimefunItems.GRAPPLING_HOOK, true)) { + if (SlimefunManager.isItemSimiliar(item, getItem(), true)) { UUID uuid = p.getUniqueId(); + if (e.getClickedBlock() == null && !utilities.jumpState.containsKey(uuid)) { e.setCancelled(true); + if (p.getInventory().getItemInOffHand().getType() == Material.BOW) { // Cancel, to fix dupe #740 return false; } utilities.jumpState.put(uuid, p.getInventory().getItemInMainHand().getType() != Material.SHEARS); - if (p.getInventory().getItemInMainHand().getType() == Material.LEAD) - PlayerInventory.consumeItemInHand(p); + + if (item.getType() == Material.LEAD) { + item.setAmount(item.getAmount() - 1); + } Vector direction = p.getEyeLocation().getDirection().multiply(2.0); Arrow arrow = p.getWorld().spawn(p.getEyeLocation().add(direction.getX(), direction.getY(), direction.getZ()), Arrow.class); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/KnowledgeFlask.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/KnowledgeFlask.java new file mode 100644 index 000000000..9935513e2 --- /dev/null +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/KnowledgeFlask.java @@ -0,0 +1,40 @@ +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items; + +import org.bukkit.Material; +import org.bukkit.Sound; +import org.bukkit.block.Container; +import org.bukkit.inventory.ItemStack; + +import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; +import me.mrCookieSlime.Slimefun.Lists.RecipeType; +import me.mrCookieSlime.Slimefun.Objects.Category; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SimpleSlimefunItem; +import me.mrCookieSlime.Slimefun.Objects.handlers.ItemInteractionHandler; +import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; + +public class KnowledgeFlask extends SimpleSlimefunItem { + + public KnowledgeFlask(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe, ItemStack recipeOutput) { + super(category, item, id, recipeType, recipe, recipeOutput); + } + + @Override + public ItemInteractionHandler getItemHandler() { + return (e, p, item) -> { + if (SlimefunManager.isItemSimiliar(item, getItem(), true) && p.getLevel() >= 1) { + if (e.getClickedBlock() == null || !(e.getClickedBlock().getState() instanceof Container)) { + p.setLevel(p.getLevel() - 1); + e.setCancelled(true); + p.getInventory().addItem(new CustomItem(Material.EXPERIENCE_BOTTLE, "&aFlask of Knowledge")); + + p.playSound(p.getLocation(), Sound.ENTITY_EXPERIENCE_ORB_PICKUP, 1F, 0.5F); + + item.setAmount(item.getAmount() - 1); + } + return true; + } + else return false; + }; + } + +} diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/KnowledgeTome.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/KnowledgeTome.java new file mode 100644 index 000000000..833572872 --- /dev/null +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/KnowledgeTome.java @@ -0,0 +1,53 @@ +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items; + +import java.util.List; +import java.util.Set; +import java.util.UUID; + +import org.bukkit.ChatColor; +import org.bukkit.Sound; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; + +import me.mrCookieSlime.CSCoreLibPlugin.general.Player.PlayerInventory; +import me.mrCookieSlime.Slimefun.Lists.RecipeType; +import me.mrCookieSlime.Slimefun.Objects.Category; +import me.mrCookieSlime.Slimefun.Objects.Research; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SimpleSlimefunItem; +import me.mrCookieSlime.Slimefun.Objects.handlers.ItemInteractionHandler; +import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; +import me.mrCookieSlime.Slimefun.api.PlayerProfile; + +public class KnowledgeTome extends SimpleSlimefunItem { + + public KnowledgeTome(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe) { + super(category, item, id, recipeType, recipe); + } + + @Override + public ItemInteractionHandler getItemHandler() { + return (e, p, item) -> { + if (SlimefunManager.isItemSimiliar(item, getItem(), true)) { + List lore = item.getItemMeta().getLore(); + lore.set(0, ChatColor.translateAlternateColorCodes('&', "&7Owner: &b" + p.getName())); + lore.set(1, ChatColor.BLACK + "" + p.getUniqueId()); + ItemMeta im = item.getItemMeta(); + im.setLore(lore); + item.setItemMeta(im); + p.getEquipment().setItemInMainHand(item); + p.getWorld().playSound(p.getLocation(), Sound.ENTITY_PLAYER_LEVELUP, 1F, 1F); + return true; + } + else if (SlimefunManager.isItemSimiliar(item, getItem(), false)) { + PlayerProfile profile = PlayerProfile.fromUUID(p.getUniqueId()); + Set researches = PlayerProfile.fromUUID(UUID.fromString(ChatColor.stripColor(item.getItemMeta().getLore().get(1)))).getResearches(); + researches.forEach(research -> profile.setResearched(research, true)); + + PlayerInventory.consumeItemInHand(p); + return true; + } + else return false; + }; + } + +} diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/PickaxeOfTheSeeker.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/PickaxeOfTheSeeker.java index 4a7301457..712e9d874 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/PickaxeOfTheSeeker.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/PickaxeOfTheSeeker.java @@ -1,22 +1,18 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items; -import java.util.Random; - import org.bukkit.Location; import org.bukkit.block.Block; -import org.bukkit.enchantments.Enchantment; import org.bukkit.inventory.ItemStack; -import me.mrCookieSlime.CSCoreLibPlugin.general.Player.PlayerInventory; import me.mrCookieSlime.Slimefun.Lists.RecipeType; -import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SimpleSlimefunItem; import me.mrCookieSlime.Slimefun.Objects.handlers.ItemInteractionHandler; import me.mrCookieSlime.Slimefun.Setup.Messages; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; +import me.mrCookieSlime.Slimefun.utils.DamageableItem; -public class PickaxeOfTheSeeker extends SimpleSlimefunItem { +public class PickaxeOfTheSeeker extends SimpleSlimefunItem implements DamageableItem { public PickaxeOfTheSeeker(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe) { super(category, item, id, recipeType, recipe); @@ -25,21 +21,24 @@ public class PickaxeOfTheSeeker extends SimpleSlimefunItem { - if (SlimefunManager.isItemSimiliar(item, SlimefunItems.PICKAXE_OF_THE_SEEKER, true)) { + if (SlimefunManager.isItemSimiliar(item, getItem(), true)) { Block closest = null; for (int x = -4; x <= 4; x++) { for (int y = -4; y <= 4; y++) { for (int z = -4; z <= 4; z++) { if (p.getLocation().getBlock().getRelative(x, y, z).getType().toString().endsWith("_ORE")) { - if (closest == null || p.getLocation().distance(closest.getLocation()) < p.getLocation().distance(p.getLocation().getBlock().getRelative(x, y, z).getLocation())) + if (closest == null || p.getLocation().distance(closest.getLocation()) < p.getLocation().distance(p.getLocation().getBlock().getRelative(x, y, z).getLocation())) { closest = p.getLocation().getBlock().getRelative(x, y, z); + } } } } } - if (closest == null) Messages.local.sendTranslation(p, "miner.no-ores", true); + if (closest == null) { + Messages.local.sendTranslation(p, "miner.no-ores", true); + } else { double l = closest.getX() + 0.5 - p.getLocation().getX(); double w = closest.getZ() + 0.5 - p.getLocation().getZ(); @@ -55,16 +54,16 @@ public class PickaxeOfTheSeeker extends SimpleSlimefunItem imple for (int i = 0; i < blocks.size(); i++) { Block b = blocks.get(i); Location ground = b.getLocation(); + if (b.getType() == null || b.getType() == Material.AIR) { for (int y = ground.getBlockY(); y > 0; y--) { if (b.getWorld().getBlockAt(b.getX(), y, b.getZ()) != null && b.getWorld().getBlockAt(b.getX(), y, b.getZ()).getType() != null && b.getWorld().getBlockAt(b.getX(), y, b.getZ()).getType() != Material.AIR) { diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java index 6b7266406..a37cd701f 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java @@ -3,9 +3,9 @@ package me.mrCookieSlime.Slimefun.Setup; import java.util.ArrayList; import java.util.List; import java.util.Random; -import java.util.Set; import java.util.UUID; import java.util.logging.Level; +import java.util.stream.Collectors; import java.util.stream.Stream; import org.bukkit.Bukkit; @@ -19,7 +19,6 @@ import org.bukkit.Tag; import org.bukkit.block.Block; import org.bukkit.block.BlockFace; import org.bukkit.block.Chest; -import org.bukkit.block.Container; import org.bukkit.block.CreatureSpawner; import org.bukkit.entity.EnderPearl; import org.bukkit.entity.Entity; @@ -31,7 +30,6 @@ import org.bukkit.event.block.BlockBreakEvent; import org.bukkit.event.block.BlockPlaceEvent; import org.bukkit.event.entity.EntityDamageByEntityEvent; import org.bukkit.event.entity.FoodLevelChangeEvent; -import org.bukkit.inventory.EquipmentSlot; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; @@ -61,7 +59,6 @@ import me.mrCookieSlime.Slimefun.Lists.Categories; import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; import me.mrCookieSlime.Slimefun.Objects.MultiBlock; -import me.mrCookieSlime.Slimefun.Objects.Research; import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.Alloy; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.EnhancedFurnace; @@ -99,12 +96,14 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.ExplosiveShovel; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.GoldPan; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.GrapplingHook; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.InfernalBonemeal; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.KnowledgeFlask; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.KnowledgeTome; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.MagicSugar; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.MonsterJerky; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.PickaxeOfTheSeeker; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.TelepositionScroll; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.SeismicAxe; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.StormStaff; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.TelepositionScroll; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.BlockPlacer; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.Composter; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.Crucible; @@ -162,7 +161,6 @@ import me.mrCookieSlime.Slimefun.ancient_altar.AncientAltarListener; import me.mrCookieSlime.Slimefun.androids.AndroidType; import me.mrCookieSlime.Slimefun.androids.ProgrammableAndroid; import me.mrCookieSlime.Slimefun.api.BlockStorage; -import me.mrCookieSlime.Slimefun.api.PlayerProfile; import me.mrCookieSlime.Slimefun.api.Slimefun; import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock; import me.mrCookieSlime.Slimefun.api.energy.EnergyTicker; @@ -1334,7 +1332,7 @@ public final class SlimefunSetup { new ExplosivePickaxe(Categories.TOOLS, SlimefunItems.EXPLOSIVE_PICKAXE, "EXPLOSIVE_PICKAXE", RecipeType.MAGIC_WORKBENCH, new ItemStack[] {new ItemStack(Material.TNT), SlimefunItems.SYNTHETIC_DIAMOND, new ItemStack(Material.TNT), null, SlimefunItems.FERROSILICON, null, null, SlimefunItems.FERROSILICON, null}, - new String[] {"unbreakable-blocks", "damage-on-use"}, new Object[] {Stream.of(Material.BEDROCK, Material.END_PORTAL_FRAME, Material.END_PORTAL, Material.NETHER_PORTAL, Material.BARRIER, Material.STRUCTURE_BLOCK, Material.COMMAND_BLOCK, Material.CHAIN_COMMAND_BLOCK, Material.REPEATING_COMMAND_BLOCK).map(Material::toString).toArray(String[]::new), Boolean.FALSE }) + new String[] {"unbreakable-blocks", "damage-on-use"}, new Object[] {Stream.of(Material.BEDROCK, Material.END_PORTAL_FRAME, Material.END_PORTAL, Material.NETHER_PORTAL, Material.BARRIER, Material.STRUCTURE_BLOCK, Material.COMMAND_BLOCK, Material.CHAIN_COMMAND_BLOCK, Material.REPEATING_COMMAND_BLOCK).map(Material::toString).collect(Collectors.toList()), Boolean.FALSE }) .register(true); new ExplosiveShovel(Categories.TOOLS, SlimefunItems.EXPLOSIVE_SHOVEL, "EXPLOSIVE_SHOVEL", RecipeType.MAGIC_WORKBENCH, @@ -1661,7 +1659,7 @@ public final class SlimefunSetup { new BlockPlacer(Categories.MACHINES_1, SlimefunItems.BLOCK_PLACER, "BLOCK_PLACER", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {SlimefunItems.GOLD_4K, new ItemStack(Material.PISTON), SlimefunItems.GOLD_4K, new ItemStack(Material.IRON_INGOT), SlimefunItems.ELECTRIC_MOTOR, new ItemStack(Material.IRON_INGOT), SlimefunItems.GOLD_4K, new ItemStack(Material.PISTON), SlimefunItems.GOLD_4K}, - new String[] {"unplaceable-blocks"}, new Object[] {Stream.of(Material.STRUCTURE_BLOCK, Material.COMMAND_BLOCK).map(Material::toString).toArray(String[]::new)}) + new String[] {"unplaceable-blocks"}, new Object[] {Stream.of(Material.STRUCTURE_BLOCK, Material.COMMAND_BLOCK, Material.CHAIN_COMMAND_BLOCK, Material.REPEATING_COMMAND_BLOCK).map(Material::toString).collect(Collectors.toList())}) .register(true); new TelepositionScroll(Categories.MAGIC, SlimefunItems.SCROLL_OF_DIMENSIONAL_TELEPOSITION, "SCROLL_OF_DIMENSIONAL_TELEPOSITION", RecipeType.MAGIC_WORKBENCH, @@ -1703,61 +1701,13 @@ public final class SlimefunSetup { } }); - new SlimefunItem(Categories.MAGIC, SlimefunItems.TOME_OF_KNOWLEDGE_SHARING, "TOME_OF_KNOWLEDGE_SHARING", RecipeType.MAGIC_WORKBENCH, + new KnowledgeTome(Categories.MAGIC, SlimefunItems.TOME_OF_KNOWLEDGE_SHARING, "TOME_OF_KNOWLEDGE_SHARING", RecipeType.MAGIC_WORKBENCH, new ItemStack[] {null, new ItemStack(Material.FEATHER), null, new ItemStack(Material.INK_SAC), SlimefunItems.MAGICAL_BOOK_COVER, new ItemStack(Material.GLASS_BOTTLE), null, new ItemStack(Material.WRITABLE_BOOK), null}) - .register(true, new ItemInteractionHandler() { + .register(true); - @Override - public boolean onRightClick(ItemUseEvent e, Player p, ItemStack item) { - if (SlimefunManager.isItemSimiliar(item, SlimefunItems.TOME_OF_KNOWLEDGE_SHARING, true)) { - List lore = item.getItemMeta().getLore(); - lore.set(0, ChatColor.translateAlternateColorCodes('&', "&7Owner: &b" + p.getName())); - lore.set(1, ChatColor.BLACK + "" + p.getUniqueId()); - ItemMeta im = item.getItemMeta(); - im.setLore(lore); - item.setItemMeta(im); - p.getEquipment().setItemInMainHand(item); - p.getWorld().playSound(p.getLocation(), Sound.ENTITY_PLAYER_LEVELUP, 1F, 1F); - return true; - } - else if (SlimefunManager.isItemSimiliar(item, SlimefunItems.TOME_OF_KNOWLEDGE_SHARING, false)) { - PlayerProfile profile = PlayerProfile.fromUUID(p.getUniqueId()); - Set researches = PlayerProfile.fromUUID(UUID.fromString(ChatColor.stripColor(item.getItemMeta().getLore().get(1)))).getResearches(); - researches.forEach(research -> profile.setResearched(research, true)); - - PlayerInventory.consumeItemInHand(p); - return true; - } - else return false; - } - }); - - new SlimefunItem(Categories.MAGIC, SlimefunItems.FLASK_OF_KNOWLEDGE, "FLASK_OF_KNOWLEDGE", RecipeType.MAGIC_WORKBENCH, + new KnowledgeFlask(Categories.MAGIC, SlimefunItems.FLASK_OF_KNOWLEDGE, "FLASK_OF_KNOWLEDGE", RecipeType.MAGIC_WORKBENCH, new ItemStack[] {null, null, null, SlimefunItems.MAGIC_LUMP_2, new ItemStack(Material.GLASS_PANE), SlimefunItems.MAGIC_LUMP_2, null, SlimefunItems.MAGIC_LUMP_2, null}, new CustomItem(SlimefunItems.FLASK_OF_KNOWLEDGE, 8)) - .register(true, new ItemInteractionHandler() { - - @Override - public boolean onRightClick(ItemUseEvent e, Player p, ItemStack item) { - if (SlimefunManager.isItemSimiliar(item, SlimefunItems.FLASK_OF_KNOWLEDGE, true) && p.getLevel() >= 1) { - if (e.getClickedBlock() == null || !(e.getClickedBlock().getState() instanceof Container)) { - p.setLevel(p.getLevel() - 1); - e.setCancelled(true); - p.getInventory().addItem(new CustomItem(Material.EXPERIENCE_BOTTLE, "&aFlask of Knowledge")); - - p.playSound(p.getLocation(), Sound.ENTITY_EXPERIENCE_ORB_PICKUP, 1F, 0.5F); - - if (e.getParentEvent().getHand() == EquipmentSlot.HAND) { - p.getInventory().setItemInMainHand(InvUtils.decreaseItem(item, 1)); - } - else { - p.getInventory().setItemInOffHand(InvUtils.decreaseItem(item, 1)); - } - } - return true; - } - else return false; - } - }); + .register(true); new ExcludedBlock(Categories.BIRTHDAY, new CustomItem(new ItemStack(Material.CAKE), "&bBirthday Cake"), "BIRTHDAY_CAKE", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {null, new ItemStack(Material.TORCH), null, new ItemStack(Material.SUGAR), new ItemStack(Material.CAKE), new ItemStack(Material.SUGAR), null, null, null}) From d51e906300c69ee40797b346bebe7be4888b9e85 Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Mon, 2 Sep 2019 00:15:19 +0200 Subject: [PATCH 143/169] Reduced technical debt --- .../SlimefunItem/items/GrapplingHook.java | 2 +- .../SlimefunItem/items/StormStaff.java | 36 +++----- .../SlimefunItem/machines/XPCollector.java | 2 +- .../electric/AnimalGrowthAccelerator.java | 2 +- .../machines/electric/AutoDisenchanter.java | 11 ++- .../machines/electric/AutoDrier.java | 51 ++++++----- .../electric/CropGrowthAccelerator.java | 2 +- .../Slimefun/Objects/tasks/JetpackTask.java | 1 + .../Slimefun/Setup/CSCoreLibLoader.java | 20 +++-- .../Slimefun/Setup/MiscSetup.java | 1 - .../Slimefun/Setup/SlimefunSetup.java | 22 ++++- .../Slimefun/SlimefunPlugin.java | 3 +- .../ancient_altar/AncientAltarListener.java | 13 ++- .../androids/ProgrammableAndroid.java | 3 +- .../Slimefun/api/BlockStorage.java | 7 +- .../api/item_transport/CargoManager.java | 3 +- .../Slimefun/api/item_transport/CargoNet.java | 11 ++- .../api/item_transport/ChannelIndex.java | 4 +- .../Slimefun/api/item_transport/ItemSlot.java | 4 +- .../api/item_transport/StoredItem.java | 4 +- .../Slimefun/commands/SlimefunCommand.java | 2 +- .../Slimefun/listeners/BlockListener.java | 5 +- .../Slimefun/listeners/DamageListener.java | 12 +-- .../Slimefun/listeners/ItemListener.java | 18 ++-- .../Slimefun/utils/DamageableItem.java | 5 +- .../Slimefun/utils/Settings.java | 20 ++--- .../Slimefun/utils/Utilities.java | 88 +++++++++---------- 27 files changed, 192 insertions(+), 160 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/GrapplingHook.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/GrapplingHook.java index 970e2b175..4db0d5357 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/GrapplingHook.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/GrapplingHook.java @@ -90,6 +90,6 @@ public class GrapplingHook extends SimpleSlimefunItem { @Override public void postRegister() { - despawnTicks = (int) Slimefun.getItemValue("GRAPPLING_HOOK", "despawn-seconds") * 20; + despawnTicks = (int) Slimefun.getItemValue("GRAPPLING_HOOK", "despawn-seconds") * 20L; } } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/StormStaff.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/StormStaff.java index 3161d4251..f4f3226a3 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/StormStaff.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/StormStaff.java @@ -9,7 +9,6 @@ import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.Sound; import org.bukkit.event.entity.FoodLevelChangeEvent; -import org.bukkit.inventory.EquipmentSlot; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; @@ -25,7 +24,7 @@ import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; public class StormStaff extends SimpleSlimefunItem { - private final static int MAX_USES = 8; + private static final int MAX_USES = 8; public StormStaff(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe) { super(category, item, id, recipeType, recipe, getCraftedOutput()); @@ -50,17 +49,17 @@ public class StormStaff extends SimpleSlimefunItem { if (SlimefunManager.isItemSimiliar(item, getItem(), false)) { if (!item.hasItemMeta()) return false; - ItemMeta itemM = item.getItemMeta(); - if (!itemM.hasLore()) return false; - List itemML = itemM.getLore(); + ItemMeta itemMeta = item.getItemMeta(); + if (!itemMeta.hasLore()) return false; + List itemLore = itemMeta.getLore(); - ItemStack SFitem = getItem(); - ItemMeta SFitemM = SFitem.getItemMeta(); - List SFitemML = SFitemM.getLore(); + ItemStack sfItem = getItem(); + ItemMeta sfItemMeta = sfItem.getItemMeta(); + List sfItemLore = sfItemMeta.getLore(); - if (itemML.size() < 6) { + if (itemLore.size() < 6) { // Index 1 and 3 in SlimefunItems.STAFF_STORM has lores with words and stuff so we check for them. - if (itemML.get(1).equals(SFitemML.get(1)) && itemML.get(3).equals(SFitemML.get(3))) { + if (itemLore.get(1).equals(sfItemLore.get(1)) && itemLore.get(3).equals(sfItemLore.get(3))) { if (p.getFoodLevel() >= 4 || p.getGameMode() == GameMode.CREATIVE) { // Get a target block with max. 30 blocks of distance Location loc = p.getTargetBlock(null, 30).getLocation(); @@ -76,26 +75,19 @@ public class StormStaff extends SimpleSlimefunItem { } for (int i = MAX_USES; i > 0; i--) { - if (i == 1 && ChatColor.translateAlternateColorCodes('&', "&e1 Use &7left").equals(itemML.get(4))) { + if (i == 1 && ChatColor.translateAlternateColorCodes('&', "&e1 Use &7left").equals(itemLore.get(4))) { e.setCancelled(true); p.playSound(p.getLocation(), Sound.ENTITY_ITEM_BREAK, 1, 1); item.setAmount(0); return true; } - else if (ChatColor.translateAlternateColorCodes('&', "&e" + i + " Uses &7left").equals(itemML.get(4))) { - itemML.set(4, ChatColor.translateAlternateColorCodes('&', "&e" + (i - 1) + " " + (i > 2 ? "Uses": "Use") + " &7left")); + else if (ChatColor.translateAlternateColorCodes('&', "&e" + i + " Uses &7left").equals(itemLore.get(4))) { + itemLore.set(4, ChatColor.translateAlternateColorCodes('&', "&e" + (i - 1) + " " + (i > 2 ? "Uses": "Use") + " &7left")); e.setCancelled(true); // Saving the changes to lore and item. - itemM.setLore(itemML); - item.setItemMeta(itemM); - - if (e.getParentEvent().getHand() == EquipmentSlot.HAND) { - p.getInventory().setItemInMainHand(item); - } - else { - p.getInventory().setItemInOffHand(item); - } + itemMeta.setLore(itemLore); + item.setItemMeta(itemMeta); return true; } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/XPCollector.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/XPCollector.java index e72737304..c0549e9c5 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/XPCollector.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/XPCollector.java @@ -142,7 +142,7 @@ public class XPCollector extends SlimefunItem { super.register(slimefun); } - protected void tick(Block b) throws Exception { + protected void tick(Block b) { Iterator iterator = XPCollectorHologram.getArmorStand(b, true).getNearbyEntities(4D, 4D, 4D).iterator(); while (iterator.hasNext()) { Entity n = iterator.next(); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AnimalGrowthAccelerator.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AnimalGrowthAccelerator.java index bab3be8a4..f49478699 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AnimalGrowthAccelerator.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AnimalGrowthAccelerator.java @@ -114,7 +114,7 @@ public class AnimalGrowthAccelerator extends SlimefunItem { super.register(slimefun); } - protected void tick(Block b) throws Exception { + protected void tick(Block b) { for (Entity n : AnimalGrowthAcceleratorHologram.getArmorStand(b, true).getNearbyEntities(3D, 3D, 3D)) { if (n instanceof Ageable && !((Ageable) n).isAdult()) { for (int slot: getInputSlots()) { 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 a383f8d8a..4a4b937a8 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoDisenchanter.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoDisenchanter.java @@ -81,12 +81,16 @@ public class AutoDisenchanter extends AContainer { // Check if disenchantable SlimefunItem sfItem = null; - if ((item != null) && (item.getType() != Material.BOOK)) { // stops endless checks of getByItem for empty book stacks. + + // stops endless checks of getByItem for empty book stacks. + if ((item != null) && (item.getType() != Material.BOOK)) { sfItem = SlimefunItem.getByItem(item); } - if (sfItem != null && !sfItem.isDisenchantable()) return; + if (sfItem != null && !sfItem.isDisenchantable()) { + return; + } - // Disenchant + // Disenchanting if (item != null && target != null && target.getType() == Material.BOOK) { int amount = 0; @@ -107,6 +111,7 @@ public class AutoDisenchanter extends AContainer { book.setAmount(1); book.setType(Material.ENCHANTED_BOOK); EnchantmentStorageMeta meta = (EnchantmentStorageMeta) book.getItemMeta(); + for (Map.Entry e: enchantments.entrySet()) { newItem.removeEnchantment(e.getKey()); meta.addStoredEnchant(e.getKey(), e.getValue(), true); 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 62e96671c..6d73f8d77 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoDrier.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoDrier.java @@ -56,33 +56,36 @@ public class AutoDrier extends AContainer { else { MachineRecipe r = null; int inputSlot = -1; + for (int slot: getInputSlots()) { ItemStack item = BlockStorage.getInventory(b).getItemInSlot(slot); - if (item == null) continue; - - // Checking if dryable - Material mat = item.getType(); - ItemStack output; - if (mat == Material.ROTTEN_FLESH) { - output = new ItemStack(Material.LEATHER); + if (item != null) { + // Checking if dryable + Material mat = item.getType(); + ItemStack output = null; + + if (mat == Material.ROTTEN_FLESH) { + output = new ItemStack(Material.LEATHER); + } + else if (mat == Material.WATER_BUCKET) { + output = new ItemStack(Material.BUCKET); + } + else if (mat == Material.WET_SPONGE) { + output = new ItemStack(Material.SPONGE); + } + else if (Tag.SAPLINGS.isTagged(mat) || Tag.LEAVES.isTagged(mat)) { + output = new ItemStack(Material.STICK); + } + else if (mat.name().contains("POTION")) { + output = new ItemStack(Material.GLASS_BOTTLE); + } + + if (output != null) { + r = new MachineRecipe(5, new ItemStack[] {item}, new ItemStack[] {output}); + inputSlot = slot; + break; + } } - else if (mat == Material.WATER_BUCKET) { - output = new ItemStack(Material.BUCKET); - } - else if (mat == Material.WET_SPONGE) { - output = new ItemStack(Material.SPONGE); - } - else if (Tag.SAPLINGS.isTagged(mat) || Tag.LEAVES.isTagged(mat)) { - output = new ItemStack(Material.STICK); - } - else if (mat.name().contains("POTION")) { - output = new ItemStack(Material.GLASS_BOTTLE); - } - else continue; - - r = new MachineRecipe(5, new ItemStack[] {item}, new ItemStack[] {output}); - inputSlot = slot; - break; } if (r != null) { diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/CropGrowthAccelerator.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/CropGrowthAccelerator.java index a96ac311b..09c303f16 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/CropGrowthAccelerator.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/CropGrowthAccelerator.java @@ -124,7 +124,7 @@ public abstract class CropGrowthAccelerator extends SlimefunItem { super.register(slimefun); } - protected void tick(Block b) throws Exception { + protected void tick(Block b) { if (work(b) > 0) { for (int slot : getInputSlots()) { if (SlimefunManager.isItemSimiliar(BlockStorage.getInventory(b).getItemInSlot(slot), SlimefunItems.FERTILIZER, false)) { diff --git a/src/me/mrCookieSlime/Slimefun/Objects/tasks/JetpackTask.java b/src/me/mrCookieSlime/Slimefun/Objects/tasks/JetpackTask.java index be9e2366a..9c7707f9a 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/tasks/JetpackTask.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/tasks/JetpackTask.java @@ -17,6 +17,7 @@ public class JetpackTask extends SlimefunTask { this.thrust = thrust; } + @Override public void setID(int id) { this.id = id; } diff --git a/src/me/mrCookieSlime/Slimefun/Setup/CSCoreLibLoader.java b/src/me/mrCookieSlime/Slimefun/Setup/CSCoreLibLoader.java index 766273472..77dc33caf 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/CSCoreLibLoader.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/CSCoreLibLoader.java @@ -32,6 +32,7 @@ public class CSCoreLibLoader { try { this.url = new URL("https://api.curseforge.com/servermods/files?projectIds=88802"); } catch (MalformedURLException e) { + plugin.getLogger().log(Level.SEVERE, "The Auto-Updater URL is malformed!", e); } } @@ -97,18 +98,19 @@ public class CSCoreLibLoader { connection.setInstanceFollowRedirects(false); connection.setConnectTimeout(5000); connection.addRequestProperty("User-Agent", "Auto Updater (by mrCookieSlime)"); - - switch (connection.getResponseCode()) { - case HttpURLConnection.HTTP_MOVED_PERM: - case HttpURLConnection.HTTP_MOVED_TEMP: - String loc = connection.getHeaderField("Location"); - location = new URL(new URL(location), loc).toExternalForm(); - continue; + + int response = connection.getResponseCode(); + + if (response == HttpURLConnection.HTTP_MOVED_PERM || response == HttpURLConnection.HTTP_MOVED_TEMP) { + String loc = connection.getHeaderField("Location"); + location = new URL(new URL(location), loc).toExternalForm(); + } + else { + break; } - break; } - return new URL(connection.getURL().toString().replaceAll(" ", "%20")); + return new URL(connection.getURL().toString().replace(" ", "%20")); } private void install() { diff --git a/src/me/mrCookieSlime/Slimefun/Setup/MiscSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/MiscSetup.java index 6177cde30..30b22e855 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/MiscSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/MiscSetup.java @@ -26,7 +26,6 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.ReplacingAlloy; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunMachine; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.AutomatedCraftingChamber; -import me.mrCookieSlime.Slimefun.Setup.PostSlimefunLoadingHandler; import me.mrCookieSlime.Slimefun.api.Slimefun; import me.mrCookieSlime.Slimefun.api.SlimefunRecipes; import me.mrCookieSlime.Slimefun.utils.Settings; diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java index a37cd701f..e21882358 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java @@ -30,6 +30,7 @@ import org.bukkit.event.block.BlockBreakEvent; import org.bukkit.event.block.BlockPlaceEvent; import org.bukkit.event.entity.EntityDamageByEntityEvent; import org.bukkit.event.entity.FoodLevelChangeEvent; +import org.bukkit.event.player.PlayerItemConsumeEvent; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; @@ -154,6 +155,7 @@ import me.mrCookieSlime.Slimefun.Objects.handlers.BlockBreakHandler; import me.mrCookieSlime.Slimefun.Objects.handlers.BlockPlaceHandler; import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker; import me.mrCookieSlime.Slimefun.Objects.handlers.BowShootHandler; +import me.mrCookieSlime.Slimefun.Objects.handlers.ItemConsumptionHandler; import me.mrCookieSlime.Slimefun.Objects.handlers.ItemInteractionHandler; import me.mrCookieSlime.Slimefun.Objects.handlers.MultiBlockInteractionHandler; import me.mrCookieSlime.Slimefun.Objects.tasks.RainbowTicker; @@ -1061,7 +1063,25 @@ public final class SlimefunSetup { new SlimefunItem(Categories.PORTABLE, SlimefunItems.MEDICINE, "MEDICINE", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {SlimefunItems.VITAMINS, new ItemStack(Material.GLASS_BOTTLE), SlimefunItems.HEAVY_CREAM, null, null, null, null, null, null}) - .register(true); + .register(true, new ItemConsumptionHandler() { + + @Override + public boolean onConsume(PlayerItemConsumeEvent e, Player p, ItemStack item) { + if (SlimefunManager.isItemSimiliar(item, SlimefunItems.MEDICINE, true)) { + if (p.hasPotionEffect(PotionEffectType.POISON)) p.removePotionEffect(PotionEffectType.POISON); + if (p.hasPotionEffect(PotionEffectType.WITHER)) p.removePotionEffect(PotionEffectType.WITHER); + if (p.hasPotionEffect(PotionEffectType.SLOW)) p.removePotionEffect(PotionEffectType.SLOW); + if (p.hasPotionEffect(PotionEffectType.SLOW_DIGGING)) p.removePotionEffect(PotionEffectType.SLOW_DIGGING); + if (p.hasPotionEffect(PotionEffectType.WEAKNESS)) p.removePotionEffect(PotionEffectType.WEAKNESS); + if (p.hasPotionEffect(PotionEffectType.CONFUSION)) p.removePotionEffect(PotionEffectType.CONFUSION); + if (p.hasPotionEffect(PotionEffectType.BLINDNESS)) p.removePotionEffect(PotionEffectType.BLINDNESS); + + p.setFireTicks(0); + return true; + } + else return false; + } + }); new SlimefunArmorPiece(Categories.TECH, SlimefunItems.NIGHT_VISION_GOGGLES, "NIGHT_VISION_GOGGLES", RecipeType.ARMOR_FORGE, new ItemStack[] {new ItemStack(Material.COAL_BLOCK), new ItemStack(Material.COAL_BLOCK), new ItemStack(Material.COAL_BLOCK), new ItemStack(Material.LIME_STAINED_GLASS_PANE), new ItemStack(Material.COAL_BLOCK), new ItemStack(Material.LIME_STAINED_GLASS_PANE), new ItemStack(Material.COAL_BLOCK), null, new ItemStack(Material.COAL_BLOCK)}, diff --git a/src/me/mrCookieSlime/Slimefun/SlimefunPlugin.java b/src/me/mrCookieSlime/Slimefun/SlimefunPlugin.java index 5d8c94f7d..94cedb005 100644 --- a/src/me/mrCookieSlime/Slimefun/SlimefunPlugin.java +++ b/src/me/mrCookieSlime/Slimefun/SlimefunPlugin.java @@ -295,7 +295,8 @@ public final class SlimefunPlugin extends JavaPlugin { p.addPotionEffect(new PotionEffect(PotionEffectType.SLOW, 400, 1)); p.addPotionEffect(new PotionEffect(PotionEffectType.SLOW_DIGGING, 400, 1)); p.setFireTicks(400); - break; // Break the loop to save some calculations + break; + // Break the loop to save some calculations } } } diff --git a/src/me/mrCookieSlime/Slimefun/ancient_altar/AncientAltarListener.java b/src/me/mrCookieSlime/Slimefun/ancient_altar/AncientAltarListener.java index 455fb8c41..2303388ce 100644 --- a/src/me/mrCookieSlime/Slimefun/ancient_altar/AncientAltarListener.java +++ b/src/me/mrCookieSlime/Slimefun/ancient_altar/AncientAltarListener.java @@ -87,7 +87,8 @@ public class AncientAltarListener implements Listener { return; } - utilities.altarinuse.add(b.getLocation()); // make altarinuse simply because that was the last block clicked. + // Make altarinuse simply because that was the last block clicked. + utilities.altarinuse.add(b.getLocation()); e.setCancelled(true); ItemStack catalyst = new CustomItem(e.getPlayer().getInventory().getItemInMainHand(), 1); @@ -118,7 +119,8 @@ public class AncientAltarListener implements Listener { pedestals.forEach(block -> utilities.altarinuse.remove(block.getLocation())); - utilities.altarinuse.remove(b.getLocation()); // bad recipe, no longer in use. + // Bad recipe, no longer in use. + utilities.altarinuse.remove(b.getLocation()); } } else { @@ -127,13 +129,16 @@ public class AncientAltarListener implements Listener { pedestals.forEach(block -> utilities.altarinuse.remove(block.getLocation())); - utilities.altarinuse.remove(b.getLocation()); // unkown catalyst, no longer in use + // Unknown catalyst, no longer in use + utilities.altarinuse.remove(b.getLocation()); } } else { altars.remove(e.getClickedBlock()); Messages.local.sendTranslation(e.getPlayer(), "machines.ANCIENT_ALTAR.not-enough-pedestals", true, new Variable("%pedestals%", String.valueOf(pedestals.size()))); - utilities.altarinuse.remove(b.getLocation()); // not a valid altar so remove from inuse + + // Not a valid altar so remove from inuse + utilities.altarinuse.remove(b.getLocation()); } } } diff --git a/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java b/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java index 61a97d243..241c6938d 100644 --- a/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java +++ b/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java @@ -293,7 +293,7 @@ public abstract class ProgrammableAndroid extends SlimefunItem { b.setBlockData(rotatableLeft); BlockStorage.addBlockInfo(b, "rotation", directions.get(indexLeft).toString()); break; - case TURN_RIGHT: { + case TURN_RIGHT: int indexRight = directions.indexOf(BlockFace.valueOf(BlockStorage.getLocationInfo(b.getLocation(), "rotation"))) + 1; if (indexRight == directions.size()) indexRight = 0; Rotatable rotatableRight = (Rotatable) b.getBlockData(); @@ -301,7 +301,6 @@ public abstract class ProgrammableAndroid extends SlimefunItem { b.setBlockData(rotatableRight); BlockStorage.addBlockInfo(b, "rotation", directions.get(indexRight).toString()); break; - } case DIG_FORWARD: mine(b, b.getRelative(face)); break; diff --git a/src/me/mrCookieSlime/Slimefun/api/BlockStorage.java b/src/me/mrCookieSlime/Slimefun/api/BlockStorage.java index 89c6d162e..dd5ced749 100644 --- a/src/me/mrCookieSlime/Slimefun/api/BlockStorage.java +++ b/src/me/mrCookieSlime/Slimefun/api/BlockStorage.java @@ -147,7 +147,10 @@ public class BlockStorage { long time = (System.currentTimeMillis() - start); Slimefun.getLogger().log(Level.INFO, "Loading Blocks... 100% (FINISHED - " + time + "ms)"); Slimefun.getLogger().log(Level.INFO, "Loaded a total of " + totalBlocks + " Blocks for World \"" + world.getName() + "\""); - if (totalBlocks > 0) System.out.println("[Slimefun] Avg: " + DoubleHandler.fixDouble((double) time / (double) totalBlocks, 3) + "ms/Block"); + + if (totalBlocks > 0) { + Slimefun.getLogger().log(Level.INFO, "Avg: " + DoubleHandler.fixDouble((double) time / (double) totalBlocks, 3) + "ms/Block"); + } } } else f.mkdirs(); @@ -622,7 +625,7 @@ public class BlockStorage { if (menu != null) { for (HumanEntity human : new ArrayList<>(menu.toInventory().getViewers())) { // Prevents "java.lang.IllegalStateException: Asynchronous entity add!" when closing inventory while holding an item - Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> human.closeInventory()); + Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, human::closeInventory); } inventories.get(l).delete(l); diff --git a/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoManager.java b/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoManager.java index 748fd3e08..598981a1b 100644 --- a/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoManager.java +++ b/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoManager.java @@ -196,7 +196,8 @@ public final class CargoManager { String id = BlockStorage.checkID(block); if (id.equals("CARGO_NODE_OUTPUT")) return true; - Config blockInfo = BlockStorage.getLocationInfo(block.getLocation()); // Store the returned Config instance to avoid heavy calls + // Store the returned Config instance to avoid heavy calls + Config blockInfo = BlockStorage.getLocationInfo(block.getLocation()); BlockMenu menu = BlockStorage.getInventory(block.getLocation()); boolean lore = blockInfo.getString("filter-lore").equals("true"); diff --git a/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoNet.java b/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoNet.java index e027967f9..c51eae9a6 100644 --- a/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoNet.java +++ b/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoNet.java @@ -9,6 +9,7 @@ import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; +import java.util.logging.Level; import org.bukkit.ChatColor; import org.bukkit.Location; @@ -27,6 +28,7 @@ import me.mrCookieSlime.CSCoreLibPlugin.general.Math.DoubleHandler; import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.api.BlockStorage; +import me.mrCookieSlime.Slimefun.api.Slimefun; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu; import me.mrCookieSlime.Slimefun.api.inventory.UniversalBlockMenu; import me.mrCookieSlime.Slimefun.api.network.Network; @@ -134,6 +136,8 @@ public class CargoNet extends Network { case "CT_EXPORT_BUS": exports.add(l); break; + default: + break; } } } @@ -529,8 +533,11 @@ public class CargoNet extends Network { private static int getFrequency(Location l) { int freq = 0; try { - freq = Integer.parseInt(BlockStorage.getLocationInfo(l).getString("frequency")); - } catch (Exception e) {} + String str = BlockStorage.getLocationInfo(l).getString("frequency"); + if (str != null) freq = Integer.parseInt(str); + } catch (Exception x) { + Slimefun.getLogger().log(Level.SEVERE, "An Error occured while parsing a Cargo Node Frequency", x); + } return freq; } diff --git a/src/me/mrCookieSlime/Slimefun/api/item_transport/ChannelIndex.java b/src/me/mrCookieSlime/Slimefun/api/item_transport/ChannelIndex.java index eb17c6894..a6d751d36 100644 --- a/src/me/mrCookieSlime/Slimefun/api/item_transport/ChannelIndex.java +++ b/src/me/mrCookieSlime/Slimefun/api/item_transport/ChannelIndex.java @@ -2,8 +2,8 @@ package me.mrCookieSlime.Slimefun.api.item_transport; public class ChannelIndex { - public int channel; - public int index; + private int channel; + private int index; public ChannelIndex(int channel, int index) { this.channel = channel; diff --git a/src/me/mrCookieSlime/Slimefun/api/item_transport/ItemSlot.java b/src/me/mrCookieSlime/Slimefun/api/item_transport/ItemSlot.java index 0b873940e..6e9c0ef9b 100644 --- a/src/me/mrCookieSlime/Slimefun/api/item_transport/ItemSlot.java +++ b/src/me/mrCookieSlime/Slimefun/api/item_transport/ItemSlot.java @@ -4,8 +4,8 @@ import org.bukkit.inventory.ItemStack; public class ItemSlot { - public int slot; - public ItemStack item; + private int slot; + private ItemStack item; public ItemSlot(ItemStack item, int slot) { this.slot = slot; diff --git a/src/me/mrCookieSlime/Slimefun/api/item_transport/StoredItem.java b/src/me/mrCookieSlime/Slimefun/api/item_transport/StoredItem.java index f3e0645de..71fc5621f 100644 --- a/src/me/mrCookieSlime/Slimefun/api/item_transport/StoredItem.java +++ b/src/me/mrCookieSlime/Slimefun/api/item_transport/StoredItem.java @@ -4,8 +4,8 @@ import org.bukkit.inventory.ItemStack; public class StoredItem { - public int amount; - public ItemStack item; + private int amount; + private ItemStack item; public StoredItem(ItemStack item, int amount) { this.amount = amount; diff --git a/src/me/mrCookieSlime/Slimefun/commands/SlimefunCommand.java b/src/me/mrCookieSlime/Slimefun/commands/SlimefunCommand.java index 190db46f1..b7336dc5e 100644 --- a/src/me/mrCookieSlime/Slimefun/commands/SlimefunCommand.java +++ b/src/me/mrCookieSlime/Slimefun/commands/SlimefunCommand.java @@ -41,7 +41,7 @@ import me.mrCookieSlime.Slimefun.api.SlimefunGuideLayout; public class SlimefunCommand implements CommandExecutor, Listener { - public SlimefunPlugin plugin; + private SlimefunPlugin plugin; private List arguments = new ArrayList<>(); private List descriptions = new ArrayList<>(); diff --git a/src/me/mrCookieSlime/Slimefun/listeners/BlockListener.java b/src/me/mrCookieSlime/Slimefun/listeners/BlockListener.java index 3da3d870c..652d5e2e9 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/BlockListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/BlockListener.java @@ -134,12 +134,13 @@ public class BlockListener implements Listener { if (!multiblocks.isEmpty()) { e.setCancelled(true); + MultiBlock multiblock = multiblocks.get(multiblocks.size() - 1); for (ItemHandler handler: SlimefunItem.getHandlers("MultiBlockInteractionHandler")) { - if (((MultiBlockInteractionHandler) handler).onInteract(p, multiblocks.get(multiblocks.size() - 1), b)) continue; + if (((MultiBlockInteractionHandler) handler).onInteract(p, multiblock, b)) break; } - MultiBlockInteractEvent event = new MultiBlockInteractEvent(p, multiblocks.get(multiblocks.size() - 1), b); + MultiBlockInteractEvent event = new MultiBlockInteractEvent(p, multiblock, b); Bukkit.getPluginManager().callEvent(event); } } diff --git a/src/me/mrCookieSlime/Slimefun/listeners/DamageListener.java b/src/me/mrCookieSlime/Slimefun/listeners/DamageListener.java index 8b7b58396..fc0a0cd8f 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/DamageListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/DamageListener.java @@ -85,20 +85,20 @@ public class DamageListener implements Listener { if (item != null && Slimefun.hasUnlocked(p, item, true) && SlimefunManager.isItemSimiliar(item, SlimefunItem.getItem("SWORD_OF_BEHEADING"), true)) { if (e.getEntity() instanceof Zombie) { - if (random.nextInt(100) < (Integer) Slimefun.getItemValue("SWORD_OF_BEHEADING", "chance.ZOMBIE")) { + if (random.nextInt(100) < (int) Slimefun.getItemValue("SWORD_OF_BEHEADING", "chance.ZOMBIE")) { e.getDrops().add(new ItemStack(Material.ZOMBIE_HEAD)); } } else if (e.getEntity() instanceof WitherSkeleton) { - if (random.nextInt(100) < (Integer) Slimefun.getItemValue("SWORD_OF_BEHEADING", "chance.WITHER_SKELETON")) + if (random.nextInt(100) < (int) Slimefun.getItemValue("SWORD_OF_BEHEADING", "chance.WITHER_SKELETON")) e.getDrops().add(new ItemStack(Material.WITHER_SKELETON_SKULL)); } else if (e.getEntity() instanceof Skeleton) { - if (random.nextInt(100) < (Integer) Slimefun.getItemValue("SWORD_OF_BEHEADING", "chance.SKELETON")) + if (random.nextInt(100) < (int) Slimefun.getItemValue("SWORD_OF_BEHEADING", "chance.SKELETON")) e.getDrops().add(new ItemStack(Material.SKELETON_SKULL)); } else if (e.getEntity() instanceof Creeper) { - if (random.nextInt(100) < (Integer) Slimefun.getItemValue("SWORD_OF_BEHEADING", "chance.CREEPER")) { + if (random.nextInt(100) < (int) Slimefun.getItemValue("SWORD_OF_BEHEADING", "chance.CREEPER")) { e.getDrops().add(new ItemStack(Material.CREEPER_HEAD)); } } @@ -126,7 +126,9 @@ public class DamageListener implements Listener { for(ItemStack invItem : ((ChestedHorse) e.getEntity()).getInventory().getStorageContents()) { e.getDrops().remove(invItem); } - e.getDrops().remove(new ItemStack(Material.CHEST)); //The chest is not included in getStorageContents() + + //The chest is not included in getStorageContents() + e.getDrops().remove(new ItemStack(Material.CHEST)); } } } diff --git a/src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java b/src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java index 7e1eca4bc..1157d20eb 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java @@ -222,6 +222,7 @@ public class ItemListener implements Listener { else p.chat("/sf cheat"); } else if (SlimefunManager.isItemSimiliar(e.getPlayer().getInventory().getItemInMainHand(), SlimefunItems.DEBUG_FISH, true) || SlimefunManager.isItemSimiliar(e.getPlayer().getInventory().getItemInOffHand(), SlimefunItems.DEBUG_FISH, true)) { + // Ignore the debug fish in here } else if (Slimefun.hasUnlocked(p, item, true)) { for (ItemHandler handler : SlimefunItem.getHandlers("ItemInteractionHandler")) { @@ -309,18 +310,11 @@ public class ItemListener implements Listener { if (((ItemConsumptionHandler) handler).onConsume(e, p, item)) return; } - if (SlimefunManager.isItemSimiliar(item, SlimefunItems.FORTUNE_COOKIE, true)) p.sendMessage(ChatColor.translateAlternateColorCodes('&', Messages.local.getTranslation("messages.fortune-cookie").get(CSCoreLib.randomizer().nextInt(Messages.local.getTranslation("messages.fortune-cookie").size())))); - else if (SlimefunManager.isItemSimiliar(item, SlimefunItems.BEEF_JERKY, true)) p.setSaturation((Integer) Slimefun.getItemValue("BEEF_JERKY", "Saturation")); - else if (SlimefunManager.isItemSimiliar(item, SlimefunItems.MEDICINE, true)) { - if (p.hasPotionEffect(PotionEffectType.POISON)) p.removePotionEffect(PotionEffectType.POISON); - if (p.hasPotionEffect(PotionEffectType.WITHER)) p.removePotionEffect(PotionEffectType.WITHER); - if (p.hasPotionEffect(PotionEffectType.SLOW)) p.removePotionEffect(PotionEffectType.SLOW); - if (p.hasPotionEffect(PotionEffectType.SLOW_DIGGING)) p.removePotionEffect(PotionEffectType.SLOW_DIGGING); - if (p.hasPotionEffect(PotionEffectType.WEAKNESS)) p.removePotionEffect(PotionEffectType.WEAKNESS); - if (p.hasPotionEffect(PotionEffectType.CONFUSION)) p.removePotionEffect(PotionEffectType.CONFUSION); - if (p.hasPotionEffect(PotionEffectType.BLINDNESS)) p.removePotionEffect(PotionEffectType.BLINDNESS); - - p.setFireTicks(0); + if (SlimefunManager.isItemSimiliar(item, SlimefunItems.FORTUNE_COOKIE, true)) { + p.sendMessage(ChatColor.translateAlternateColorCodes('&', Messages.local.getTranslation("messages.fortune-cookie").get(CSCoreLib.randomizer().nextInt(Messages.local.getTranslation("messages.fortune-cookie").size())))); + } + else if (SlimefunManager.isItemSimiliar(item, SlimefunItems.BEEF_JERKY, true)) { + p.setSaturation((int) Slimefun.getItemValue("BEEF_JERKY", "Saturation")); } else if (item.getType() == Material.POTION) { SlimefunItem sfItem = SlimefunItem.getByItem(item); diff --git a/src/me/mrCookieSlime/Slimefun/utils/DamageableItem.java b/src/me/mrCookieSlime/Slimefun/utils/DamageableItem.java index 7216451fb..2fbc68e4f 100644 --- a/src/me/mrCookieSlime/Slimefun/utils/DamageableItem.java +++ b/src/me/mrCookieSlime/Slimefun/utils/DamageableItem.java @@ -13,10 +13,7 @@ public interface DamageableItem { boolean isDamageable(); default void damageItem(Player p, ItemStack item) { - if (item == null || item.getType() == null || item.getType() == Material.AIR) { - return; - } - else if (item.getAmount() > 0 && isDamageable() && !item.getEnchantments().containsKey(Enchantment.DURABILITY) || Math.random() * 100 <= (60 + Math.floorDiv(40, (item.getEnchantmentLevel(Enchantment.DURABILITY) + 1)))) { + if (item != null && item.getType() != null && item.getType() != Material.AIR && item.getAmount() > 0 && isDamageable() && !item.getEnchantments().containsKey(Enchantment.DURABILITY) || Math.random() * 100 <= (60 + Math.floorDiv(40, (item.getEnchantmentLevel(Enchantment.DURABILITY) + 1)))) { ItemMeta meta = item.getItemMeta(); Damageable damageable = (Damageable) meta; diff --git a/src/me/mrCookieSlime/Slimefun/utils/Settings.java b/src/me/mrCookieSlime/Slimefun/utils/Settings.java index 07246ffcf..422ac66df 100644 --- a/src/me/mrCookieSlime/Slimefun/utils/Settings.java +++ b/src/me/mrCookieSlime/Slimefun/utils/Settings.java @@ -6,22 +6,22 @@ import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config; public final class Settings { - public boolean printOutLoading; + public final boolean printOutLoading; public boolean researchesEnabled; - public boolean researchesFreeInCreative; - public List researchesTitles; + public final boolean researchesFreeInCreative; + public final List researchesTitles; - public int blocksInfoLoadingDelay; - public int blocksAutoSaveDelay; + public final int blocksInfoLoadingDelay; + public final int blocksAutoSaveDelay; - public boolean guideShowVanillaRecipes; + public final boolean guideShowVanillaRecipes; - public int emeraldEnchantsLimit; + public final int emeraldEnchantsLimit; - public boolean legacyDustWasher; - public boolean legacyOreGrinder; - public boolean legacyOreWasher; + public final boolean legacyDustWasher; + public final boolean legacyOreGrinder; + public final boolean legacyOreWasher; public int smelteryFireBreakChance; diff --git a/src/me/mrCookieSlime/Slimefun/utils/Utilities.java b/src/me/mrCookieSlime/Slimefun/utils/Utilities.java index 07992f1f8..eecff290c 100644 --- a/src/me/mrCookieSlime/Slimefun/utils/Utilities.java +++ b/src/me/mrCookieSlime/Slimefun/utils/Utilities.java @@ -43,74 +43,74 @@ public final class Utilities { public int vanillaItems = 0; - public Set radioactiveItems = new HashSet<>(); - public Map> itemHandlers = new HashMap<>(); - public Map blockHandlers = new HashMap<>(); - public Set tickers = new HashSet<>(); + public final Set radioactiveItems = new HashSet<>(); + public final Map> itemHandlers = new HashMap<>(); + public final Map blockHandlers = new HashMap<>(); + public final Set tickers = new HashSet<>(); - public Map blocksEnergyCapacity = new HashMap<>(); - public Set rechargeableItems = new HashSet<>(); - public Set capacitorIDs = new HashSet<>(); + public final Map blocksEnergyCapacity = new HashMap<>(); + public final Set rechargeableItems = new HashSet<>(); + public final Set capacitorIDs = new HashSet<>(); - public Set energyNetInput = new HashSet<>(); - public Set energyNetStorage = new HashSet<>(); - public Set energyNetOutput = new HashSet<>(); + public final Set energyNetInput = new HashSet<>(); + public final Set energyNetStorage = new HashSet<>(); + public final Set energyNetOutput = new HashSet<>(); - public Map roundRobin = new HashMap<>(); - public Set itemRequests = new HashSet<>(); + public final Map roundRobin = new HashMap<>(); + public final Set itemRequests = new HashSet<>(); - public Map blockMenuPresets = new HashMap<>(); + public final Map blockMenuPresets = new HashMap<>(); - public List currentlyEnabledCategories = new ArrayList<>(); + public final List currentlyEnabledCategories = new ArrayList<>(); - public Map worlds = new HashMap<>(); - public Set loadedTickers = new HashSet<>(); + public final Map worlds = new HashMap<>(); + public final Set loadedTickers = new HashSet<>(); - public Map mapChunks = new HashMap<>(); - public Map> tickingChunks = new HashMap<>(); - public Map universalInventories = new HashMap<>(); + public final Map mapChunks = new HashMap<>(); + public final Map> tickingChunks = new HashMap<>(); + public final Map universalInventories = new HashMap<>(); - public Map profiles = new HashMap<>(); + public final Map profiles = new HashMap<>(); - public Map> guideHandlers = new HashMap<>(); - public List postHandlers = new ArrayList<>(); + public final Map> guideHandlers = new HashMap<>(); + public final List postHandlers = new ArrayList<>(); - public Map> drops = new EnumMap<>(EntityType.class); + public final Map> drops = new EnumMap<>(EntityType.class); - public Map jumpState = new HashMap<>(); - public Set damage = new HashSet<>(); - public Map remove = new HashMap<>(); - public Map mode = new HashMap<>(); + public final Map jumpState = new HashMap<>(); + public final Set damage = new HashSet<>(); + public final Map remove = new HashMap<>(); + public final Map mode = new HashMap<>(); - public Map enchanting = new HashMap<>(); - public Map backpack = new HashMap<>(); + public final Map enchanting = new HashMap<>(); + public final Map backpack = new HashMap<>(); - public Set altarinuse = new HashSet<>(); - public Set altarRecipes = new HashSet<>(); + public final Set altarinuse = new HashSet<>(); + public final Set altarRecipes = new HashSet<>(); - public Map> soulbound = new HashMap<>(); - public List blocks = new ArrayList<>(); - public List cancelPlace = new ArrayList<>(); - public Map arrows = new HashMap<>(); + public final Map> soulbound = new HashMap<>(); + public final List blocks = new ArrayList<>(); + public final List cancelPlace = new ArrayList<>(); + public final Map arrows = new HashMap<>(); - public Set elevatorUsers = new HashSet<>(); - public Set teleporterUsers = new HashSet<>(); + public final Set elevatorUsers = new HashSet<>(); + public final Set teleporterUsers = new HashSet<>(); - public Map resources = new HashMap<>(); + public final Map resources = new HashMap<>(); - public Set connectors = new HashSet<>(); - public Map contributorHeads = new HashMap<>(); - public List contributors = new ArrayList<>(); + public final Set connectors = new HashSet<>(); + public final Map contributorHeads = new HashMap<>(); + public final List contributors = new ArrayList<>(); - public Map> guideHistory = new HashMap<>(); + public final Map> guideHistory = new HashMap<>(); - public List cargoTransportEvents = new ArrayList<>(); + public final List cargoTransportEvents = new ArrayList<>(); /** * Contains all the players (UUIDs) that are currently unlocking a research. * @since 4.0 */ - public Set researching = new HashSet<>(); + public final Set researching = new HashSet<>(); /** * Represents the current month of the year From 74ecde2c5831e851bf334bcd0e3bf9fa98467171 Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Mon, 2 Sep 2019 01:07:32 +0200 Subject: [PATCH 144/169] Code cleanup --- .../Objects/SlimefunItem/SlimefunItem.java | 18 ++++++- .../abstractItems/AContainer.java | 28 +++-------- .../machines/ReactorAccessPort.java | 5 +- .../SlimefunItem/machines/TrashCan.java | 35 ++++--------- .../SlimefunItem/machines/XPCollector.java | 31 ++++-------- .../electric/AnimalGrowthAccelerator.java | 33 ++++--------- .../machines/electric/ChargingBench.java | 23 --------- .../machines/electric/FluidPump.java | 49 +++++-------------- .../Slimefun/utils/InventoryBlock.java | 39 +++++++++++++++ 9 files changed, 105 insertions(+), 156 deletions(-) create mode 100644 src/me/mrCookieSlime/Slimefun/utils/InventoryBlock.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java index f44f914bf..f1c6f9591 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java @@ -245,7 +245,8 @@ public class SlimefunItem { items.add(this); if (slimefun) SlimefunPlugin.getUtilities().vanillaItems++; mapID.put(this.id, this); - this.create(); + + create(); for (ItemHandler handler: itemhandlers) { Set handlerset = getHandlers(handler.toCodename()); @@ -389,9 +390,18 @@ public class SlimefunItem { return false; } + @Deprecated public void install() {} + + /** + * @deprecated Use {@link SlimefunItem#postRegister()} instead + */ + @Deprecated public void create() {} + /** + * @deprecated Use {@link SlimefunItem#addItemHandler(ItemHandler...)} instead + */ @Deprecated public void addItemHandler(me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.ItemHandler... handler) { addItemHandler((ItemHandler[]) handler); @@ -423,12 +433,18 @@ public class SlimefunItem { register(false); } + /** + * @deprecated Use {@link SlimefunItem#register(boolean, ItemHandler...)} instead + */ @Deprecated public void register(boolean vanilla, me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.ItemHandler... handlers) { addItemHandler(handlers); register(vanilla); } + /** + * @deprecated Use {@link SlimefunItem#register(ItemHandler...)} instead + */ @Deprecated public void register(me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.ItemHandler... handlers) { register((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 dec4b0b84..d3625a638 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AContainer.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AContainer.java @@ -13,7 +13,6 @@ import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; -import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib; import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ChestMenu.AdvancedMenuClickHandler; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ClickAction; @@ -30,9 +29,9 @@ import me.mrCookieSlime.Slimefun.api.BlockStorage; import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset; -import me.mrCookieSlime.Slimefun.api.item_transport.ItemTransportFlow; +import me.mrCookieSlime.Slimefun.utils.InventoryBlock; -public abstract class AContainer extends SlimefunItem { +public abstract class AContainer extends SlimefunItem implements InventoryBlock { public static Map processing = new HashMap<>(); public static Map progress = new HashMap<>(); @@ -46,24 +45,7 @@ public abstract class AContainer extends SlimefunItem { public AContainer(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe) { super(category, item, id, recipeType, recipe); - new BlockMenuPreset(id, getInventoryTitle()) { - - @Override - public void init() { - constructMenu(this); - } - - @Override - public boolean canOpen(Block b, Player p) { - return p.hasPermission("slimefun.inventory.bypass") || CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true); - } - - @Override - public int[] getSlotsAccessedByItemTransport(ItemTransportFlow flow) { - if (flow == ItemTransportFlow.INSERT) return getInputSlots(); - else return getOutputSlots(); - } - }; + createPreset(id, getInventoryTitle(), this::constructMenu); registerBlockHandler(id, new SlimefunBlockHandler() { @@ -141,10 +123,12 @@ public abstract class AContainer extends SlimefunItem { // Override this method to register your machine recipes } + @Override public int[] getInputSlots() { return new int[] {19, 20}; } - + + @Override public int[] getOutputSlots() { return new int[] {24, 25}; } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ReactorAccessPort.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ReactorAccessPort.java index a82089202..9e999eafd 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ReactorAccessPort.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ReactorAccessPort.java @@ -10,8 +10,9 @@ import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; -import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib; +import io.github.thebusybiscuit.cscorelib2.protection.ProtectionModule.Action; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; import me.mrCookieSlime.Slimefun.Objects.Category; @@ -44,7 +45,7 @@ public class ReactorAccessPort extends SlimefunItem { @Override public boolean canOpen(Block b, Player p) { - if(p.hasPermission("slimefun.inventory.bypass") || CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(),b,true)) { + if(p.hasPermission("slimefun.inventory.bypass") || SlimefunPlugin.getProtectionManager().hasPermission(p, b.getLocation(), Action.ACCESS_INVENTORIES)) { AReactor reactor = getReactor(b.getLocation()); if (reactor != null) { boolean empty = true; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/TrashCan.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/TrashCan.java index 874160095..253c3ab13 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/TrashCan.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/TrashCan.java @@ -2,7 +2,6 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines; import org.bukkit.Material; import org.bukkit.block.Block; -import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config; @@ -14,33 +13,15 @@ import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker; import me.mrCookieSlime.Slimefun.api.BlockStorage; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset; -import me.mrCookieSlime.Slimefun.api.item_transport.ItemTransportFlow; +import me.mrCookieSlime.Slimefun.utils.InventoryBlock; -public class TrashCan extends SlimefunItem { +public class TrashCan extends SlimefunItem implements InventoryBlock { private static final int[] border = {0, 1, 2, 3, 5, 4, 6, 7, 8, 9, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26}; public TrashCan(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) { super(category, item, name, recipeType, recipe); - - new BlockMenuPreset(name, getInventoryTitle()) { - - @Override - public void init() { - constructMenu(this); - } - - @Override - public boolean canOpen(Block b, Player p) { - return true; - } - - @Override - public int[] getSlotsAccessedByItemTransport(ItemTransportFlow flow) { - if (flow == ItemTransportFlow.INSERT) return getInputSlots(); - return new int[0]; - } - }; + createPreset(getID(), "&4Trash Can", this::constructMenu); } private void constructMenu(BlockMenuPreset preset) { @@ -50,14 +31,16 @@ public class TrashCan extends SlimefunItem { ); } } - - public String getInventoryTitle() { - return "&4Trash Can"; - } + @Override public int[] getInputSlots() { return new int[] {10, 11, 12, 13, 14, 15, 16}; } + + @Override + public int[] getOutputSlots() { + return new int[0]; + } @Override public void register(boolean slimefun) { diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/XPCollector.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/XPCollector.java index c0549e9c5..e7e09abb3 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/XPCollector.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/XPCollector.java @@ -12,7 +12,6 @@ import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; -import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib; import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; import me.mrCookieSlime.Slimefun.Lists.RecipeType; @@ -26,34 +25,16 @@ import me.mrCookieSlime.Slimefun.api.Slimefun; import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset; -import me.mrCookieSlime.Slimefun.api.item_transport.ItemTransportFlow; import me.mrCookieSlime.Slimefun.holograms.XPCollectorHologram; +import me.mrCookieSlime.Slimefun.utils.InventoryBlock; -public class XPCollector extends SlimefunItem { +public class XPCollector extends SlimefunItem implements InventoryBlock { private static final int[] border = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26}; public XPCollector(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) { super(category, item, name, recipeType, recipe); - - new BlockMenuPreset(name, "&aEXP Collector") { - - @Override - public void init() { - constructMenu(this); - } - - @Override - public boolean canOpen(Block b, Player p) { - return p.hasPermission("slimefun.inventory.bypass") || CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true); - } - - @Override - public int[] getSlotsAccessedByItemTransport(ItemTransportFlow flow) { - if (flow == ItemTransportFlow.WITHDRAW) return getOutputSlots(); - return new int[0]; - } - }; + createPreset(getID(), "&aEXP Collector", this::constructMenu); registerBlockHandler(name, new SlimefunBlockHandler() { @@ -104,6 +85,12 @@ public class XPCollector extends SlimefunItem { } } + @Override + public int[] getInputSlots() { + return new int[0]; + } + + @Override public int[] getOutputSlots() { return new int[] {12, 13, 14}; } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AnimalGrowthAccelerator.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AnimalGrowthAccelerator.java index f49478699..86e7bfd82 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AnimalGrowthAccelerator.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AnimalGrowthAccelerator.java @@ -11,7 +11,6 @@ import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; -import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib; import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.InvUtils; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; @@ -28,34 +27,16 @@ import me.mrCookieSlime.Slimefun.api.Slimefun; import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset; -import me.mrCookieSlime.Slimefun.api.item_transport.ItemTransportFlow; import me.mrCookieSlime.Slimefun.holograms.AnimalGrowthAcceleratorHologram; +import me.mrCookieSlime.Slimefun.utils.InventoryBlock; -public class AnimalGrowthAccelerator extends SlimefunItem { +public class AnimalGrowthAccelerator extends SlimefunItem implements InventoryBlock { private static final int[] border = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26}; public AnimalGrowthAccelerator(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) { super(category, item, name, recipeType, recipe); - - new BlockMenuPreset(name, "&bGrowth Accelerator") { - - @Override - public void init() { - constructMenu(this); - } - - @Override - public boolean canOpen(Block b, Player p) { - return p.hasPermission("slimefun.inventory.bypass") || CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true); - } - - @Override - public int[] getSlotsAccessedByItemTransport(ItemTransportFlow flow) { - if (flow == ItemTransportFlow.INSERT) return getInputSlots(); - return new int[0]; - } - }; + createPreset(getID(), "&bGrowth Accelerator", this::constructMenu); registerBlockHandler(name, new SlimefunBlockHandler() { @@ -76,7 +57,7 @@ public class AnimalGrowthAccelerator extends SlimefunItem { }); } - protected void constructMenu(BlockMenuPreset preset) { + private void constructMenu(BlockMenuPreset preset) { for (int i : border) { preset.addItem(i, new CustomItem(new ItemStack(Material.CYAN_STAINED_GLASS_PANE), " "), (p, slot, item, action) -> false @@ -88,10 +69,16 @@ public class AnimalGrowthAccelerator extends SlimefunItem { return 14; } + @Override public int[] getInputSlots() { return new int[] {10, 11, 12, 13, 14, 15, 16}; } + @Override + public int[] getOutputSlots() { + return new int[0]; + } + @Override public void register(boolean slimefun) { addItemHandler(new BlockTicker() { diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ChargingBench.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ChargingBench.java index ffcf33723..a58137ac9 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ChargingBench.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ChargingBench.java @@ -2,42 +2,19 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric; import org.bukkit.Material; import org.bukkit.block.Block; -import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; -import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib; import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer; import me.mrCookieSlime.Slimefun.api.BlockStorage; import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock; import me.mrCookieSlime.Slimefun.api.energy.ItemEnergy; -import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset; -import me.mrCookieSlime.Slimefun.api.item_transport.ItemTransportFlow; public class ChargingBench extends AContainer { public ChargingBench(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) { super(category, item, name, recipeType, recipe); - - new BlockMenuPreset(name, getInventoryTitle()) { - - @Override - public void init() { - constructMenu(this); - } - - @Override - public boolean canOpen(Block b, Player p) { - return p.hasPermission("slimefun.inventory.bypass") || CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true); - } - - @Override - public int[] getSlotsAccessedByItemTransport(ItemTransportFlow flow) { - if (flow == ItemTransportFlow.INSERT) return getInputSlots(); - else return getOutputSlots(); - } - }; } @Override diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/FluidPump.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/FluidPump.java index 07d736937..c08804dfd 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/FluidPump.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/FluidPump.java @@ -15,7 +15,6 @@ import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; -import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib; import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config; import me.mrCookieSlime.CSCoreLibPlugin.general.Block.Vein; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ChestMenu.AdvancedMenuClickHandler; @@ -31,9 +30,9 @@ import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.api.BlockStorage; import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset; -import me.mrCookieSlime.Slimefun.api.item_transport.ItemTransportFlow; +import me.mrCookieSlime.Slimefun.utils.InventoryBlock; -public class FluidPump extends SlimefunItem{ +public class FluidPump extends SlimefunItem implements InventoryBlock { public static Map processing = new HashMap<>(); public static Map progress = new HashMap<>(); @@ -45,41 +44,19 @@ public class FluidPump extends SlimefunItem{ public FluidPump(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) { super(category, item, name, recipeType, recipe); - new BlockMenuPreset(name, getInventoryTitle()) { - - @Override - public void init() { - constructMenu(this); - } - - @Override - public boolean canOpen(Block b, Player p) { - return p.hasPermission("slimefun.inventory.bypass") || CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true); - } - - @Override - public int[] getSlotsAccessedByItemTransport(ItemTransportFlow flow) { - if (flow == ItemTransportFlow.INSERT) return getInputSlots(); - else return getOutputSlots(); - } - }; + createPreset(getID(), "&9Fluid Pump", this::constructMenu); } - protected void constructMenu(BlockMenuPreset preset) { + private void constructMenu(BlockMenuPreset preset) { for (int i : border) { - preset.addItem(i, new CustomItem(new ItemStack(Material.GRAY_STAINED_GLASS_PANE), " "), - (p, slot, item, action) -> false - ); + preset.addItem(i, new CustomItem(new ItemStack(Material.GRAY_STAINED_GLASS_PANE), " "), (p, slot, item, action) -> false); } + for (int i : border_in) { - preset.addItem(i, new CustomItem(new ItemStack(Material.CYAN_STAINED_GLASS_PANE), " "), - (p, slot, item, action) -> false - ); + preset.addItem(i, new CustomItem(new ItemStack(Material.CYAN_STAINED_GLASS_PANE), " "), (p, slot, item, action) -> false); } for (int i : border_out) { - preset.addItem(i, new CustomItem(new ItemStack(Material.ORANGE_STAINED_GLASS_PANE), " "), - (p, slot, item, action) -> false - ); + preset.addItem(i, new CustomItem(new ItemStack(Material.ORANGE_STAINED_GLASS_PANE), " "), (p, slot, item, action) -> false); } for (int i : getOutputSlots()) { @@ -97,18 +74,16 @@ public class FluidPump extends SlimefunItem{ }); } } - + + @Override public int[] getInputSlots() { return new int[] {19, 20}; } - + + @Override public int[] getOutputSlots() { return new int[] {24, 25}; } - - public String getInventoryTitle() { - return "&9Fluid Pump"; - } protected void tick(Block b) { Block fluid = b.getRelative(BlockFace.DOWN); diff --git a/src/me/mrCookieSlime/Slimefun/utils/InventoryBlock.java b/src/me/mrCookieSlime/Slimefun/utils/InventoryBlock.java new file mode 100644 index 000000000..393bba999 --- /dev/null +++ b/src/me/mrCookieSlime/Slimefun/utils/InventoryBlock.java @@ -0,0 +1,39 @@ +package me.mrCookieSlime.Slimefun.utils; + +import java.util.function.Consumer; + +import org.bukkit.block.Block; +import org.bukkit.entity.Player; + +import io.github.thebusybiscuit.cscorelib2.protection.ProtectionModule.Action; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; +import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset; +import me.mrCookieSlime.Slimefun.api.item_transport.ItemTransportFlow; + +public interface InventoryBlock { + + int[] getInputSlots(); + int[] getOutputSlots(); + + default void createPreset(String id, String title, Consumer setup) { + new BlockMenuPreset(id, title) { + + @Override + public void init() { + setup.accept(this); + } + + @Override + public int[] getSlotsAccessedByItemTransport(ItemTransportFlow flow) { + if (flow == ItemTransportFlow.INSERT) return getInputSlots(); + else return getOutputSlots(); + } + + @Override + public boolean canOpen(Block b, Player p) { + return p.hasPermission("slimefun.inventory.bypass") || SlimefunPlugin.getProtectionManager().hasPermission(p, b.getLocation(), Action.ACCESS_INVENTORIES); + } + }; + } + +} From 5ba6ea867fac1f6a79ab008fa0b598165fe54a95 Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Mon, 2 Sep 2019 01:31:52 +0200 Subject: [PATCH 145/169] Updated to CS-CoreLib2 v0.3.10 --- pom.xml | 2 +- .../electric/CropGrowthAccelerator.java | 31 ++++++------------- .../machines/electric/WitherAssembler.java | 6 +--- 3 files changed, 11 insertions(+), 28 deletions(-) diff --git a/pom.xml b/pom.xml index 07adc7bd4..4455ca9ce 100644 --- a/pom.xml +++ b/pom.xml @@ -124,7 +124,7 @@ com.github.thebusybiscuit CS-CoreLib2 - 0.3.9 + 0.3.10 compile diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/CropGrowthAccelerator.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/CropGrowthAccelerator.java index 09c303f16..856064390 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/CropGrowthAccelerator.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/CropGrowthAccelerator.java @@ -11,7 +11,6 @@ import org.bukkit.block.data.Ageable; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; -import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib; import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.InvUtils; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; @@ -28,9 +27,9 @@ import me.mrCookieSlime.Slimefun.api.Slimefun; import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset; -import me.mrCookieSlime.Slimefun.api.item_transport.ItemTransportFlow; +import me.mrCookieSlime.Slimefun.utils.InventoryBlock; -public abstract class CropGrowthAccelerator extends SlimefunItem { +public abstract class CropGrowthAccelerator extends SlimefunItem implements InventoryBlock { private static final int[] border = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26}; @@ -48,25 +47,7 @@ public abstract class CropGrowthAccelerator extends SlimefunItem { public CropGrowthAccelerator(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) { super(category, item, name, recipeType, recipe); - - new BlockMenuPreset(name, "&bGrowth Accelerator") { - - @Override - public void init() { - constructMenu(this); - } - - @Override - public boolean canOpen(Block b, Player p) { - return p.hasPermission("slimefun.inventory.bypass") || CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true); - } - - @Override - public int[] getSlotsAccessedByItemTransport(ItemTransportFlow flow) { - if (flow == ItemTransportFlow.INSERT) return getInputSlots(); - return new int[0]; - } - }; + createPreset(getID(), "&bGrowth Accelerator", this::constructMenu); registerBlockHandler(name, new SlimefunBlockHandler() { @@ -98,10 +79,16 @@ public abstract class CropGrowthAccelerator extends SlimefunItem { public abstract int getRadius(); public abstract int getSpeed(); + @Override public int[] getInputSlots() { return new int[] {10, 11, 12, 13, 14, 15, 16}; } + @Override + public int[] getOutputSlots() { + return new int[0]; + } + @Override public void register(boolean slimefun) { addItemHandler(new BlockTicker() { diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/WitherAssembler.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/WitherAssembler.java index 2f19b91a4..417a710e9 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/WitherAssembler.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/WitherAssembler.java @@ -41,7 +41,7 @@ public class WitherAssembler extends SlimefunItem { public WitherAssembler(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) { super(category, item, name, recipeType, recipe); - new BlockMenuPreset(name, getInventoryTitle()) { + new BlockMenuPreset(name, "&5Wither Assembler") { @Override public void init() { @@ -165,10 +165,6 @@ public class WitherAssembler extends SlimefunItem { (p, slot, item, action) -> false ); } - - public String getInventoryTitle() { - return "&5Wither Assembler"; - } public int[] getInputSlots() { return new int[] {19, 28, 25, 34}; From 40f2ef862a992045592a5eacf7c2dd7446124422 Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Mon, 2 Sep 2019 09:56:35 +0200 Subject: [PATCH 146/169] Minor performance improvement --- .../abstractItems/AContainer.java | 30 ----------- .../SlimefunItem/machines/XPCollector.java | 27 ---------- .../electric/AnimalGrowthAccelerator.java | 4 +- .../electric/AutomatedCraftingChamber.java | 50 ++++--------------- .../machines/electric/FluidPump.java | 27 ---------- .../Slimefun/Setup/MiscSetup.java | 2 +- .../Slimefun/utils/InventoryBlock.java | 36 +++++++++++++ .../Slimefun/utils/Utilities.java | 2 + 8 files changed, 50 insertions(+), 128 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AContainer.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AContainer.java index d3625a638..edaf92cec 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AContainer.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AContainer.java @@ -5,12 +5,10 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.block.Block; import org.bukkit.entity.Player; import org.bukkit.event.inventory.InventoryClickEvent; -import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config; @@ -150,34 +148,6 @@ public abstract class AContainer extends SlimefunItem implements InventoryBlock this.registerRecipe(new MachineRecipe(seconds, input, output)); } - private Inventory inject(Block b) { - int size = BlockStorage.getInventory(b).toInventory().getSize(); - Inventory inv = Bukkit.createInventory(null, size); - - for (int i = 0; i < size; i++) { - inv.setItem(i, new CustomItem(Material.COMMAND_BLOCK, " &4ALL YOUR PLACEHOLDERS ARE BELONG TO US")); - } - - for (int slot : getOutputSlots()) { - inv.setItem(slot, BlockStorage.getInventory(b).getItemInSlot(slot)); - } - - return inv; - } - - protected boolean fits(Block b, ItemStack[] items) { - return inject(b).addItem(items).isEmpty(); - } - - protected void pushItems(Block b, ItemStack[] items) { - Inventory inv = inject(b); - inv.addItem(items); - - for (int slot : getOutputSlots()) { - BlockStorage.getInventory(b).replaceExistingItem(slot, inv.getItem(slot)); - } - } - @Override public void register(boolean slimefun) { addItemHandler(new BlockTicker() { diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/XPCollector.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/XPCollector.java index e7e09abb3..d1cb51de8 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/XPCollector.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/XPCollector.java @@ -3,13 +3,11 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines; import java.util.Iterator; import java.util.logging.Level; -import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.block.Block; import org.bukkit.entity.Entity; import org.bukkit.entity.ExperienceOrb; import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config; @@ -59,31 +57,6 @@ public class XPCollector extends SlimefunItem implements InventoryBlock { } }); } - - private Inventory inject(Block b) { - int size = BlockStorage.getInventory(b).toInventory().getSize(); - Inventory inv = Bukkit.createInventory(null, size); - for (int i = 0; i < size; i++) { - inv.setItem(i, new CustomItem(Material.COMMAND_BLOCK, " &4ALL YOUR PLACEHOLDERS ARE BELONG TO US")); - } - for (int slot : getOutputSlots()) { - inv.setItem(slot, BlockStorage.getInventory(b).getItemInSlot(slot)); - } - return inv; - } - - protected boolean fits(Block b, ItemStack... items) { - return inject(b).addItem(items).isEmpty(); - } - - protected void pushItems(Block b, ItemStack... items) { - Inventory inv = inject(b); - inv.addItem(items); - - for (int slot : getOutputSlots()) { - BlockStorage.getInventory(b).replaceExistingItem(slot, inv.getItem(slot)); - } - } @Override public int[] getInputSlots() { diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AnimalGrowthAccelerator.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AnimalGrowthAccelerator.java index 86e7bfd82..585cfe0d1 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AnimalGrowthAccelerator.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AnimalGrowthAccelerator.java @@ -59,9 +59,7 @@ public class AnimalGrowthAccelerator extends SlimefunItem implements InventoryBl private void constructMenu(BlockMenuPreset preset) { for (int i : border) { - preset.addItem(i, new CustomItem(new ItemStack(Material.CYAN_STAINED_GLASS_PANE), " "), - (p, slot, item, action) -> false - ); + preset.addItem(i, new CustomItem(new ItemStack(Material.CYAN_STAINED_GLASS_PANE), " "), (p, slot, item, action) -> false); } } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutomatedCraftingChamber.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutomatedCraftingChamber.java index c7e160477..91f9c90b7 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutomatedCraftingChamber.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutomatedCraftingChamber.java @@ -2,16 +2,12 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric; import java.util.ArrayList; import java.util.Collections; -import java.util.HashMap; import java.util.List; -import java.util.Map; -import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.block.Block; import org.bukkit.entity.Player; import org.bukkit.event.inventory.InventoryClickEvent; -import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib; @@ -22,6 +18,7 @@ import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.InvUtils; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItemSerializer; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItemSerializer.ItemFlag; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler; @@ -34,14 +31,13 @@ import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset; import me.mrCookieSlime.Slimefun.api.item_transport.ItemTransportFlow; import me.mrCookieSlime.Slimefun.api.item_transport.RecipeSorter; +import me.mrCookieSlime.Slimefun.utils.InventoryBlock; -public abstract class AutomatedCraftingChamber extends SlimefunItem { +public abstract class AutomatedCraftingChamber extends SlimefunItem implements InventoryBlock { private static final int[] border = {0, 1, 3, 4, 5, 7, 8, 13, 14, 15, 16, 17, 50, 51, 52, 53}; private static final int[] border_in = {9, 10, 11, 12, 13, 18, 22, 27, 31, 36, 40, 45, 46, 47, 48, 49}; private static final int[] border_out = {23, 24, 25, 26, 32, 35, 41, 42, 43, 44}; - - public static Map recipes = new HashMap<>(); public AutomatedCraftingChamber(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) { super(category, item, name, recipeType, recipe); @@ -164,43 +160,17 @@ public abstract class AutomatedCraftingChamber extends SlimefunItem { } public abstract int getEnergyConsumption(); - + + @Override public int[] getInputSlots() { return new int[] {19, 20, 21, 28, 29, 30, 37, 38, 39}; } + @Override public int[] getOutputSlots() { return new int[] {33, 34}; } - private Inventory inject(Block b) { - int size = BlockStorage.getInventory(b).toInventory().getSize(); - Inventory inv = Bukkit.createInventory(null, size); - - for (int i = 0; i < size; i++) { - inv.setItem(i, new CustomItem(Material.COMMAND_BLOCK, " &4ALL YOUR PLACEHOLDERS ARE BELONG TO US")); - } - - for (int slot : getOutputSlots()) { - inv.setItem(slot, BlockStorage.getInventory(b).getItemInSlot(slot)); - } - - return inv; - } - - protected boolean fits(Block b, ItemStack[] items) { - return inject(b).addItem(items).isEmpty(); - } - - protected void pushItems(Block b, ItemStack[] items) { - Inventory inv = inject(b); - inv.addItem(items); - - for (int slot : getOutputSlots()) { - BlockStorage.getInventory(b).replaceExistingItem(slot, inv.getItem(slot)); - } - } - @Override public void register(boolean slimefun) { addItemHandler(new BlockTicker() { @@ -241,11 +211,11 @@ public abstract class AutomatedCraftingChamber extends SlimefunItem { String input = builder.toString(); - if (recipes.containsKey(input)) { - ItemStack output = recipes.get(input).clone(); + if (SlimefunPlugin.getUtilities().automatedCraftingChamberRecipes.containsKey(input)) { + ItemStack output = SlimefunPlugin.getUtilities().automatedCraftingChamberRecipes.get(input).clone(); - if (fits(b, new ItemStack[] {output})) { - pushItems(b, new ItemStack[] {output}); + if (fits(b, output)) { + pushItems(b, output); ChargableBlock.addCharge(b, -getEnergyConsumption()); for (int j = 0; j < 9; j++) { if (menu.getItemInSlot(getInputSlots()[j]) != null) menu.replaceExistingItem(getInputSlots()[j], InvUtils.decreaseItem(menu.getItemInSlot(getInputSlots()[j]), 1)); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/FluidPump.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/FluidPump.java index c08804dfd..dbded71b0 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/FluidPump.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/FluidPump.java @@ -5,14 +5,12 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.block.Block; import org.bukkit.block.BlockFace; import org.bukkit.entity.Player; import org.bukkit.event.inventory.InventoryClickEvent; -import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config; @@ -151,30 +149,5 @@ public class FluidPump extends SlimefunItem implements InventoryBlock { super.register(slimefun); } - - private Inventory inject(Block b) { - int size = BlockStorage.getInventory(b).toInventory().getSize(); - Inventory inv = Bukkit.createInventory(null, size); - for (int i = 0; i < size; i++) { - inv.setItem(i, new CustomItem(Material.COMMAND_BLOCK, " &4ALL YOUR PLACEHOLDERS ARE BELONG TO US")); - } - for (int slot : getOutputSlots()) { - inv.setItem(slot, BlockStorage.getInventory(b).getItemInSlot(slot)); - } - return inv; - } - - protected boolean fits(Block b, ItemStack... items) { - return inject(b).addItem(items).isEmpty(); - } - - protected void pushItems(Block b, ItemStack... items) { - Inventory inv = inject(b); - inv.addItem(items); - - for (int slot: getOutputSlots()) { - BlockStorage.getInventory(b).replaceExistingItem(slot, inv.getItem(slot)); - } - } } diff --git a/src/me/mrCookieSlime/Slimefun/Setup/MiscSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/MiscSetup.java index 30b22e855..1e3c27c53 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/MiscSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/MiscSetup.java @@ -120,7 +120,7 @@ public final class MiscSetup { i++; } - AutomatedCraftingChamber.recipes.put(builder.toString(), RecipeType.getRecipeOutputList(machine, inputs)); + SlimefunPlugin.getUtilities().automatedCraftingChamberRecipes.put(builder.toString(), RecipeType.getRecipeOutputList(machine, inputs)); } } diff --git a/src/me/mrCookieSlime/Slimefun/utils/InventoryBlock.java b/src/me/mrCookieSlime/Slimefun/utils/InventoryBlock.java index 393bba999..f7f29e111 100644 --- a/src/me/mrCookieSlime/Slimefun/utils/InventoryBlock.java +++ b/src/me/mrCookieSlime/Slimefun/utils/InventoryBlock.java @@ -2,11 +2,18 @@ package me.mrCookieSlime.Slimefun.utils; import java.util.function.Consumer; +import org.bukkit.Bukkit; +import org.bukkit.Material; import org.bukkit.block.Block; import org.bukkit.entity.Player; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.ItemStack; import io.github.thebusybiscuit.cscorelib2.protection.ProtectionModule.Action; +import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; +import me.mrCookieSlime.CSCoreLibPlugin.general.Math.Calculator; import me.mrCookieSlime.Slimefun.SlimefunPlugin; +import me.mrCookieSlime.Slimefun.api.BlockStorage; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset; import me.mrCookieSlime.Slimefun.api.item_transport.ItemTransportFlow; @@ -35,5 +42,34 @@ public interface InventoryBlock { } }; } + + default Inventory inject(Block b) { + int size = getOutputSlots().length; + Inventory inv = Bukkit.createInventory(null, Calculator.formToLine(size)); + + for (int i = 0; i < inv.getSize(); i++) { + if (i < size) { + inv.setItem(i, BlockStorage.getInventory(b).getItemInSlot(getOutputSlots()[i])); + } + else { + inv.setItem(i, new CustomItem(Material.COMMAND_BLOCK, " &4ALL YOUR PLACEHOLDERS ARE BELONG TO US")); + } + } + + return inv; + } + + default boolean fits(Block b, ItemStack... items) { + return inject(b).addItem(items).isEmpty(); + } + + default void pushItems(Block b, ItemStack... items) { + Inventory inv = inject(b); + inv.addItem(items); + + for (int i = 0; i < getOutputSlots().length; i++) { + BlockStorage.getInventory(b).replaceExistingItem(getOutputSlots()[i], inv.getItem(i)); + } + } } diff --git a/src/me/mrCookieSlime/Slimefun/utils/Utilities.java b/src/me/mrCookieSlime/Slimefun/utils/Utilities.java index eecff290c..9a118a67d 100644 --- a/src/me/mrCookieSlime/Slimefun/utils/Utilities.java +++ b/src/me/mrCookieSlime/Slimefun/utils/Utilities.java @@ -63,6 +63,8 @@ public final class Utilities { public final List currentlyEnabledCategories = new ArrayList<>(); + public final Map automatedCraftingChamberRecipes = new HashMap<>(); + public final Map worlds = new HashMap<>(); public final Set loadedTickers = new HashSet<>(); From b075779f6bcd52483b8561575348dc1406d7d5a8 Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Mon, 2 Sep 2019 10:05:17 +0200 Subject: [PATCH 147/169] Fixed Error Reports --- .../abstractItems/Teleporter.java | 2 +- .../Slimefun/Setup/SlimefunSetup.java | 2 +- .../Slimefun/api/BlockStorage.java | 12 +- .../Slimefun/api/ErrorReport.java | 128 +++++++++--------- .../Slimefun/api/TickerTask.java | 18 +-- .../Slimefun/utils/InventoryBlock.java | 2 +- 6 files changed, 83 insertions(+), 81 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/Teleporter.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/Teleporter.java index 5fcc59332..62500edb2 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/Teleporter.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/Teleporter.java @@ -30,6 +30,6 @@ public abstract class Teleporter extends SlimefunItem { }); } - public abstract void onInteract(Player p, Block b) throws Exception; + public abstract void onInteract(Player p, Block b); } diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java index e21882358..916ab3e02 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java @@ -3260,7 +3260,7 @@ public final class SlimefunSetup { new ItemStack[] {SlimefunItems.GPS_TELEPORTER_PYLON, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.GPS_TELEPORTER_PYLON, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.GPS_CONTROL_PANEL, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.GPS_TELEPORTER_PYLON, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.GPS_TELEPORTER_PYLON}) { @Override - public void onInteract(final Player p, final Block b) throws Exception { + public void onInteract(final Player p, final Block b) { GPSNetwork.openTeleporterGUI(p, UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner")), b, Slimefun.getGPSNetwork().getNetworkComplexity(UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner")))); } diff --git a/src/me/mrCookieSlime/Slimefun/api/BlockStorage.java b/src/me/mrCookieSlime/Slimefun/api/BlockStorage.java index dd5ced749..da5d9e6a0 100644 --- a/src/me/mrCookieSlime/Slimefun/api/BlockStorage.java +++ b/src/me/mrCookieSlime/Slimefun/api/BlockStorage.java @@ -43,7 +43,7 @@ public class BlockStorage { private World world; private Map storage = new HashMap<>(); private Map inventories = new HashMap<>(); - private Map cache_blocks = new HashMap<>(); + private Map blocksCache = new HashMap<>(); public static BlockStorage getStorage(World world) { return SlimefunPlugin.getUtilities().worlds.get(world.getName()); @@ -206,7 +206,7 @@ public class BlockStorage { private int changes = 0; public void computeChanges() { - changes = cache_blocks.size() + chunkChanges; + changes = blocksCache.size() + chunkChanges; Map inventories2 = new HashMap<>(inventories); for (Map.Entry entry: inventories2.entrySet()) { @@ -233,10 +233,10 @@ public class BlockStorage { Slimefun.getLogger().log(Level.INFO, "Saving Blocks for World \"" + world.getName() + "\" (" + changes + " Change(s) queued)"); - Map cache = new HashMap<>(cache_blocks); + Map cache = new HashMap<>(blocksCache); for (Map.Entry entry: cache.entrySet()) { - cache_blocks.remove(entry.getKey()); + blocksCache.remove(entry.getKey()); Config cfg = entry.getValue(); if (cfg.getKeys().isEmpty()) { if (!cfg.getFile().delete()) { @@ -526,9 +526,9 @@ public class BlockStorage { } private static void refreshCache(BlockStorage storage, Location l, String key, String value, boolean updateTicker) { - Config cfg = storage.cache_blocks.containsKey(key) ? storage.cache_blocks.get(key): new Config(path_blocks + l.getWorld().getName() + "/" + key + ".sfb"); + Config cfg = storage.blocksCache.containsKey(key) ? storage.blocksCache.get(key): new Config(path_blocks + l.getWorld().getName() + "/" + key + ".sfb"); cfg.setValue(serializeLocation(l), value); - storage.cache_blocks.put(key, cfg); + storage.blocksCache.put(key, cfg); if (updateTicker) { SlimefunItem item = SlimefunItem.getByID(key); diff --git a/src/me/mrCookieSlime/Slimefun/api/ErrorReport.java b/src/me/mrCookieSlime/Slimefun/api/ErrorReport.java index 3b418eb99..546dc2e80 100644 --- a/src/me/mrCookieSlime/Slimefun/api/ErrorReport.java +++ b/src/me/mrCookieSlime/Slimefun/api/ErrorReport.java @@ -25,72 +25,74 @@ public class ErrorReport { private File file; public ErrorReport(Throwable throwable, Consumer printer) { - String path = "plugins/Slimefun/error-reports/" + Clock.getFormattedTime(); - file = new File(path + ".err"); - - if (file.exists()) { - IntStream stream = IntStream.iterate(1, i -> i + 1).filter(i -> !new File(path + " (" + i + ").err").exists()); - int id = stream.findFirst().getAsInt(); + SlimefunPlugin.instance.getServer().getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> { + String path = "plugins/Slimefun/error-reports/" + Clock.getFormattedTime(); + file = new File(path + ".err"); - file = new File(path + " (" + id + ").err"); - } - - try (PrintStream stream = new PrintStream(file)) { - stream.println(); - stream.println("Java Environment:"); - stream.println(" Operating System: " + System.getProperty("os.name")); - stream.println(" Java Version: " + System.getProperty("java.version")); - stream.println(); - stream.println("Server Software: " + Bukkit.getName()); - stream.println(" Build: " + Bukkit.getVersion()); - stream.println(" Minecraft: " + Bukkit.getBukkitVersion()); - stream.println(); - stream.println("Slimefun Environment:"); - stream.println(" CS-CoreLib v" + CSCoreLib.getLib().getDescription().getVersion()); - stream.println(" Slimefun v" + SlimefunPlugin.instance.getDescription().getVersion()); - stream.println(); - - List plugins = new ArrayList<>(); - List addons = new ArrayList<>(); - - for (Plugin p: Bukkit.getPluginManager().getPlugins()) { - if (Bukkit.getPluginManager().isPluginEnabled(p)) { - plugins.add(" + " + p.getName() + " " + p.getDescription().getVersion()); - if (p.getDescription().getDepend().contains("Slimefun") || p.getDescription().getSoftDepend().contains("Slimefun")) - addons.add(" + " + p.getName() + " " + p.getDescription().getVersion()); - } - else { - plugins.add(" - " + p.getName() + " " + p.getDescription().getVersion()); - if (p.getDescription().getDepend().contains("Slimefun") || p.getDescription().getSoftDepend().contains("Slimefun")) - addons.add(" - " + p.getName() + " " + p.getDescription().getVersion()); - } + if (file.exists()) { + IntStream stream = IntStream.iterate(1, i -> i + 1).filter(i -> !new File(path + " (" + i + ").err").exists()); + int id = stream.findFirst().getAsInt(); + + file = new File(path + " (" + id + ").err"); } - stream.println("Installed Addons (" + addons.size() + ")"); - addons.forEach(stream::println); - - stream.println(); - - stream.println("Installed Plugins (" + plugins.size() + "):"); - plugins.forEach(stream::println); - - stream.println(); - - printer.accept(stream); - - stream.println("Stacktrace:"); - stream.println(); - throwable.printStackTrace(stream); - - Slimefun.getLogger().log(Level.WARNING, ""); - Slimefun.getLogger().log(Level.WARNING, "An Error occured! It has been saved as: "); - Slimefun.getLogger().log(Level.WARNING, "/plugins/Slimefun/error-reports/" + file.getName()); - Slimefun.getLogger().log(Level.WARNING, "Please consider sending this File to the developer(s) of Slimefun, this message does not have to be included."); - Slimefun.getLogger().log(Level.WARNING, "You can put the file on Pastebin and then post it here: https://github.com/TheBusyBiscuit/Slimefun4/issues"); - Slimefun.getLogger().log(Level.WARNING, ""); - } catch (FileNotFoundException x) { - Slimefun.getLogger().log(Level.SEVERE, "An Error occured while saving an Error-Report for Slimefun " + Slimefun.getVersion(), x); - } + try (PrintStream stream = new PrintStream(file)) { + stream.println(); + stream.println("Java Environment:"); + stream.println(" Operating System: " + System.getProperty("os.name")); + stream.println(" Java Version: " + System.getProperty("java.version")); + stream.println(); + stream.println("Server Software: " + Bukkit.getName()); + stream.println(" Build: " + Bukkit.getVersion()); + stream.println(" Minecraft: " + Bukkit.getBukkitVersion()); + stream.println(); + stream.println("Slimefun Environment:"); + stream.println(" CS-CoreLib v" + CSCoreLib.getLib().getDescription().getVersion()); + stream.println(" Slimefun v" + SlimefunPlugin.instance.getDescription().getVersion()); + stream.println(); + + List plugins = new ArrayList<>(); + List addons = new ArrayList<>(); + + for (Plugin p: Bukkit.getPluginManager().getPlugins()) { + if (Bukkit.getPluginManager().isPluginEnabled(p)) { + plugins.add(" + " + p.getName() + " " + p.getDescription().getVersion()); + if (p.getDescription().getDepend().contains("Slimefun") || p.getDescription().getSoftDepend().contains("Slimefun")) + addons.add(" + " + p.getName() + " " + p.getDescription().getVersion()); + } + else { + plugins.add(" - " + p.getName() + " " + p.getDescription().getVersion()); + if (p.getDescription().getDepend().contains("Slimefun") || p.getDescription().getSoftDepend().contains("Slimefun")) + addons.add(" - " + p.getName() + " " + p.getDescription().getVersion()); + } + } + + stream.println("Installed Addons (" + addons.size() + ")"); + addons.forEach(stream::println); + + stream.println(); + + stream.println("Installed Plugins (" + plugins.size() + "):"); + plugins.forEach(stream::println); + + stream.println(); + + printer.accept(stream); + + stream.println("Stacktrace:"); + stream.println(); + throwable.printStackTrace(stream); + + Slimefun.getLogger().log(Level.WARNING, ""); + Slimefun.getLogger().log(Level.WARNING, "An Error occured! It has been saved as: "); + Slimefun.getLogger().log(Level.WARNING, "/plugins/Slimefun/error-reports/" + file.getName()); + Slimefun.getLogger().log(Level.WARNING, "Please consider sending this File to the developer(s) of Slimefun, this message does not have to be included."); + Slimefun.getLogger().log(Level.WARNING, "You can put the file on Pastebin and then post it here: https://github.com/TheBusyBiscuit/Slimefun4/issues"); + Slimefun.getLogger().log(Level.WARNING, ""); + } catch (FileNotFoundException x) { + Slimefun.getLogger().log(Level.SEVERE, "An Error occured while saving an Error-Report for Slimefun " + Slimefun.getVersion(), x); + } + }); } public ErrorReport(Throwable throwable, TickerTask task, Location l, SlimefunItem item) { diff --git a/src/me/mrCookieSlime/Slimefun/api/TickerTask.java b/src/me/mrCookieSlime/Slimefun/api/TickerTask.java index 92b46b256..1e19f844a 100644 --- a/src/me/mrCookieSlime/Slimefun/api/TickerTask.java +++ b/src/me/mrCookieSlime/Slimefun/api/TickerTask.java @@ -289,15 +289,15 @@ public class TickerTask implements Runnable { @Override public String toString() { return "TickerTask {\n" - + " HALTED = " + halted + "\n" - + " tickers = " + tickers + "\n" - + " move = " + move + "\n" - + " delete = " + delete + "\n" - + " chunks = " + chunkItemCount + "\n" - + " machines = " + machineCount + "\n" - + " machinetime = " + machineTimings + "\n" - + " chunktime = " + chunkTimings + "\n" - + " skipped = " + chunksSkipped + "\n" + + " HALTED = " + halted + "\n" + + " tickers = " + tickers + "\n" + + " move = " + move + "\n" + + " delete = " + delete + "\n" + + " chunks = " + chunkItemCount + "\n" + + " machines = " + machineCount + "\n" + + " machinetime = " + machineTimings + "\n" + + " chunktime = " + chunkTimings + "\n" + + " skipped = " + chunksSkipped + "\n" + "}"; } diff --git a/src/me/mrCookieSlime/Slimefun/utils/InventoryBlock.java b/src/me/mrCookieSlime/Slimefun/utils/InventoryBlock.java index f7f29e111..d405afe8b 100644 --- a/src/me/mrCookieSlime/Slimefun/utils/InventoryBlock.java +++ b/src/me/mrCookieSlime/Slimefun/utils/InventoryBlock.java @@ -45,7 +45,7 @@ public interface InventoryBlock { default Inventory inject(Block b) { int size = getOutputSlots().length; - Inventory inv = Bukkit.createInventory(null, Calculator.formToLine(size)); + Inventory inv = Bukkit.createInventory(null, Calculator.formToLine(size) * 9); for (int i = 0; i < inv.getSize(); i++) { if (i < size) { From 3368c56c62e58c0721467a1c7973697be243ab95 Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Mon, 2 Sep 2019 10:24:53 +0200 Subject: [PATCH 148/169] Reduced technical debt --- .../Objects/SlimefunItem/SlimefunItem.java | 13 ++++++++++--- .../SlimefunItem/abstractItems/AReactor.java | 4 +++- .../abstractItems/MachineHelper.java | 7 +++---- .../SlimefunItem/machines/Composter.java | 5 +++-- .../SlimefunItem/machines/Crucible.java | 6 ++++-- .../machines/ReactorAccessPort.java | 7 ++----- .../machines/electric/ElectricSmeltery.java | 8 -------- .../Slimefun/Setup/SlimefunSetup.java | 17 ++++++++--------- .../mrCookieSlime/Slimefun/SlimefunGuide.java | 7 +++---- .../ancient_altar/AncientAltarListener.java | 13 ++++++------- .../Slimefun/androids/ProgrammableAndroid.java | 2 +- .../Slimefun/api/GuideHandler.java | 6 +++--- .../api/inventory/BlockMenuPreset.java | 18 +++++++++--------- .../Slimefun/hooks/github/GitHubConnector.java | 6 +++--- .../Slimefun/listeners/DamageListener.java | 3 ++- .../Slimefun/listeners/ToolListener.java | 12 +++++++----- 16 files changed, 67 insertions(+), 67 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java index f1c6f9591..53b0ee567 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java @@ -391,13 +391,17 @@ public class SlimefunItem { } @Deprecated - public void install() {} + public void install() { + // Deprecated + } /** * @deprecated Use {@link SlimefunItem#postRegister()} instead */ @Deprecated - public void create() {} + public void create() { + // Deprecated + } /** * @deprecated Use {@link SlimefunItem#addItemHandler(ItemHandler...)} instead @@ -524,7 +528,10 @@ public class SlimefunItem { ChargableBlock.registerCapacitor(id, capacity); } - public void postRegister() {} + public void postRegister() { + // Override this method to execute code after the Item has been registered + // Useful for calls to Slimefun.getItemValue(...) + } protected void setItem(ItemStack stack) { this.item = stack; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AReactor.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AReactor.java index 4cddf3a39..0db7d9f2a 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AReactor.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AReactor.java @@ -63,7 +63,9 @@ public abstract class AReactor extends SlimefunItem { private static final int[] border_1 = {9, 10, 11, 18, 20, 27, 29, 36, 38, 45, 46, 47}; private static final int[] border_2 = {15, 16, 17, 24, 26, 33, 35, 42, 44, 51, 52, 53}; private static final int[] border_3 = {30, 31, 32, 39, 41, 48, 50}; - private static final int[] border_4 = {25, 34, 43}; // No coolant border + + // No coolant border + private static final int[] border_4 = {25, 34, 43}; private static final int infoSlot = 49; public AReactor(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe) { diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/MachineHelper.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/MachineHelper.java index 79062e06b..cc9ccad25 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/MachineHelper.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/MachineHelper.java @@ -14,14 +14,13 @@ public final class MachineHelper { private MachineHelper() {} - public static String getTimeLeft(int l) { + public static String getTimeLeft(int seconds) { String timeleft = ""; - final int minutes = (int) (l / 60L); + final int minutes = (int) (seconds / 60L); if (minutes > 0) { timeleft = String.valueOf(timeleft) + minutes + "m "; } - l -= minutes * 60; - final int seconds = (int) l; + seconds -= minutes * 60; timeleft = String.valueOf(timeleft) + seconds + "s"; return ChatColor.translateAlternateColorCodes('&', "&7" + timeleft + " left"); } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/Composter.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/Composter.java index f9eb96d9e..1b4f9a46f 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/Composter.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/Composter.java @@ -34,11 +34,12 @@ public class Composter extends SlimefunGadget { @Override public boolean onRightClick(ItemUseEvent e, final Player p, ItemStack item) { if (e.getClickedBlock() != null) { - SlimefunItem machine = BlockStorage.check(e.getClickedBlock()); - if (machine != null && machine.getID().equals(getID())) { + String id = BlockStorage.checkID(e.getClickedBlock()); + if (id != null && id.equals(getID())) { if (CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), e.getClickedBlock(), true)) { final ItemStack input = p.getInventory().getItemInMainHand(); final Block b = e.getClickedBlock(); + SlimefunItem machine = SlimefunItem.getByID(id); for (ItemStack convert: RecipeType.getRecipeInputs(machine)) { if (convert != null && SlimefunManager.isItemSimiliar(input, convert, true)) { diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/Crucible.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/Crucible.java index 71a166c3b..c5b0f234d 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/Crucible.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/Crucible.java @@ -35,11 +35,13 @@ public class Crucible extends SlimefunGadget { @Override public boolean onRightClick(ItemUseEvent e, final Player p, ItemStack item) { if (e.getClickedBlock() != null) { - SlimefunItem machine = BlockStorage.check(e.getClickedBlock()); - if (machine != null && machine.getID().equals("CRUCIBLE")) { + String id = BlockStorage.checkID(e.getClickedBlock()); + if (id != null && id.equals("CRUCIBLE")) { if (CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), e.getClickedBlock(), true)) { final ItemStack input = p.getInventory().getItemInMainHand(); final Block block = e.getClickedBlock().getRelative(BlockFace.UP); + SlimefunItem machine = SlimefunItem.getByID(id); + for (ItemStack convert: RecipeType.getRecipeInputs(machine)) { if (input != null && SlimefunManager.isItemSimiliar(input, convert, true)) { e.setCancelled(true); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ReactorAccessPort.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ReactorAccessPort.java index 9e999eafd..c06ae96b0 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ReactorAccessPort.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ReactorAccessPort.java @@ -184,11 +184,8 @@ public class ReactorAccessPort extends SlimefunItem { public BlockMenu getReactorMenu(Location l) { Location reactorL = new Location(l.getWorld(), l.getX(), l.getY() - 3, l.getZ()); - String id = BlockStorage.checkID(reactorL); - - if(id.equals("NUCLEAR_REACTOR") || id.equals("NETHERSTAR_REACTOR")) { - return BlockStorage.getInventory(reactorL); - } + SlimefunItem item = BlockStorage.check(reactorL.getBlock()); + if (item instanceof AReactor) return BlockStorage.getInventory(l); return null; } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricSmeltery.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricSmeltery.java index 4cd7d97c8..ab3c0354b 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricSmeltery.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricSmeltery.java @@ -2,9 +2,7 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric; import java.util.ArrayList; import java.util.Collections; -import java.util.HashMap; import java.util.List; -import java.util.Map; import org.bukkit.Material; import org.bukkit.block.Block; @@ -22,7 +20,6 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecipe; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.api.BlockStorage; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu; @@ -32,11 +29,6 @@ import me.mrCookieSlime.Slimefun.api.item_transport.RecipeSorter; public abstract class ElectricSmeltery extends AContainer { - public static Map processing = new HashMap<>(); - public static Map progress = new HashMap<>(); - - protected List recipes = new ArrayList<>(); - private static final int[] border = {4, 5, 6, 7, 8, 13, 31, 40, 41, 42, 43, 44}; private static final int[] border_in = {0, 1, 2, 3, 9, 12, 18, 21, 27, 30, 36, 37, 38, 39}; private static final int[] border_out = {14, 15, 16, 17, 23, 26, 32, 33, 34, 35}; diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java index 916ab3e02..11468a605 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java @@ -2718,8 +2718,8 @@ public final class SlimefunSetup { @Override public boolean onRightClick(ItemUseEvent e, Player p, ItemStack stack) { if (e.getClickedBlock() == null) return false; - SlimefunItem item = BlockStorage.check(e.getClickedBlock()); - if (item == null || !item.getID().equals("GPS_CONTROL_PANEL")) return false; + String item = BlockStorage.checkID(e.getClickedBlock()); + if (item == null || !item.equals("GPS_CONTROL_PANEL")) return false; e.setCancelled(true); Slimefun.getGPSNetwork().openTransmitterControlPanel(p); @@ -3137,8 +3137,8 @@ public final class SlimefunSetup { @Override public boolean onRightClick(ItemUseEvent e, Player p, ItemStack stack) { if (e.getClickedBlock() == null) return false; - SlimefunItem item = BlockStorage.check(e.getClickedBlock()); - if (item == null || !item.getID().equals("GPS_GEO_SCANNER")) return false; + String item = BlockStorage.checkID(e.getClickedBlock()); + if (item == null || !item.equals("GPS_GEO_SCANNER")) return false; e.setCancelled(true); Slimefun.getGPSNetwork().scanChunk(p, e.getClickedBlock().getChunk()); @@ -3316,9 +3316,8 @@ public final class SlimefunSetup { @Override public boolean onRightClick(final ItemUseEvent e, Player p, ItemStack stack) { if (e.getClickedBlock() == null) return false; - SlimefunItem item = BlockStorage.check(e.getClickedBlock()); - if (item == null) return false; - if (!item.getID().equals("ELEVATOR_PLATE")) return false; + String item = BlockStorage.checkID(e.getClickedBlock()); + if (item == null || !item.equals("ELEVATOR_PLATE")) return false; if (BlockStorage.getLocationInfo(e.getClickedBlock().getLocation(), "owner").equals(p.getUniqueId().toString())) Elevator.openEditor(p, e.getClickedBlock()); return true; @@ -3732,8 +3731,8 @@ public final class SlimefunSetup { @Override public boolean onRightClick(ItemUseEvent e, Player p, ItemStack stack) { if (e.getClickedBlock() == null) return false; - SlimefunItem item = BlockStorage.check(e.getClickedBlock()); - if (item == null || !item.getID().equals("CARGO_MANAGER")) return false; + String item = BlockStorage.checkID(e.getClickedBlock()); + if (item == null || !item.equals("CARGO_MANAGER")) return false; e.setCancelled(true); if (BlockStorage.getLocationInfo(e.getClickedBlock().getLocation(), "visualizer") == null) { diff --git a/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java b/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java index dd190976a..677b137b3 100644 --- a/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java +++ b/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java @@ -1026,14 +1026,13 @@ public final class SlimefunGuide { getHistory().remove(uuid); } - private static String getTimeLeft(int l) { + private static String getTimeLeft(int seconds) { String timeleft = ""; - final int minutes = (int) (l / 60L); + final int minutes = (int) (seconds / 60L); if (minutes > 0) { timeleft = String.valueOf(timeleft) + minutes + "m "; } - l -= minutes * 60; - final int seconds = (int)l; + seconds -= minutes * 60; timeleft = String.valueOf(timeleft) + seconds + "s"; return "&7" + timeleft; } diff --git a/src/me/mrCookieSlime/Slimefun/ancient_altar/AncientAltarListener.java b/src/me/mrCookieSlime/Slimefun/ancient_altar/AncientAltarListener.java index 2303388ce..1cbb5baba 100644 --- a/src/me/mrCookieSlime/Slimefun/ancient_altar/AncientAltarListener.java +++ b/src/me/mrCookieSlime/Slimefun/ancient_altar/AncientAltarListener.java @@ -30,7 +30,6 @@ import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; import me.mrCookieSlime.CSCoreLibPlugin.general.Player.PlayerInventory; import me.mrCookieSlime.CSCoreLibPlugin.general.String.StringUtils; import me.mrCookieSlime.Slimefun.SlimefunPlugin; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Setup.Messages; import me.mrCookieSlime.Slimefun.api.BlockStorage; import me.mrCookieSlime.Slimefun.utils.Utilities; @@ -52,9 +51,9 @@ public class AncientAltarListener implements Listener { public void onInteract(PlayerInteractEvent e) { if (e.getAction() != Action.RIGHT_CLICK_BLOCK) return; Block b = e.getClickedBlock(); - SlimefunItem item = BlockStorage.check(b); + String item = BlockStorage.checkID(b); if (item != null) { - if (item.getID().equals("ANCIENT_PEDESTAL")) { + if (item.equals("ANCIENT_PEDESTAL")) { if (utilities.altarinuse.contains(b.getLocation())) { e.setCancelled(true); return; @@ -81,7 +80,7 @@ public class AncientAltarListener implements Listener { PlayerInventory.update(e.getPlayer()); } } - else if (item.getID().equals("ANCIENT_ALTAR")) { + else if (item.equals("ANCIENT_ALTAR")) { if (utilities.altarinuse.contains(b.getLocation())) { e.setCancelled(true); return; @@ -185,9 +184,9 @@ public class AncientAltarListener implements Listener { @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) public void onBlockPlace(BlockPlaceEvent e) { Block b = e.getBlockPlaced().getRelative(0, -1, 0); - SlimefunItem item = BlockStorage.check(b); - if(item == null) return; - if(item.getID().equalsIgnoreCase("ANCIENT_PEDESTAL")) { + String item = BlockStorage.checkID(b); + + if (item != null && item.equalsIgnoreCase("ANCIENT_PEDESTAL")) { Messages.local.sendTranslation(e.getPlayer(), "messages.cannot-place", true); e.setCancelled(true); } diff --git a/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java b/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java index 241c6938d..924bf8604 100644 --- a/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java +++ b/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java @@ -498,7 +498,7 @@ public abstract class ProgrammableAndroid extends SlimefunItem { private void mine(Block b, Block block) { Collection drops = block.getDrops(); if (!blockblacklist.contains(block.getType()) && !drops.isEmpty() && CSCoreLib.getLib().getProtectionManager().canBuild(UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner")), block)) { - SlimefunItem item = BlockStorage.check(block); + String item = BlockStorage.checkID(block); if (item == null) { ItemStack[] items = drops.toArray(new ItemStack[drops.size()]); diff --git a/src/me/mrCookieSlime/Slimefun/api/GuideHandler.java b/src/me/mrCookieSlime/Slimefun/api/GuideHandler.java index 4870ba2c6..f2fafefbb 100644 --- a/src/me/mrCookieSlime/Slimefun/api/GuideHandler.java +++ b/src/me/mrCookieSlime/Slimefun/api/GuideHandler.java @@ -8,7 +8,7 @@ import me.mrCookieSlime.CSCoreLibPlugin.PlayerRunnable; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ChestMenu; import me.mrCookieSlime.Slimefun.SlimefunGuide; -public abstract class GuideHandler { +public interface GuideHandler { public abstract void addEntry(List texts, List tooltips); public abstract PlayerRunnable getRunnable(); @@ -17,11 +17,11 @@ public abstract class GuideHandler { public abstract int next(Player p, int index, ChestMenu menu); - public PlayerRunnable getRunnable(boolean book) { + default PlayerRunnable getRunnable(boolean book) { return this.getRunnable(); } - public void run(Player p, boolean survival, boolean book) { + default void run(Player p, boolean survival, boolean book) { this.getRunnable(book).run(p); if (survival && this.trackHistory()) { diff --git a/src/me/mrCookieSlime/Slimefun/api/inventory/BlockMenuPreset.java b/src/me/mrCookieSlime/Slimefun/api/inventory/BlockMenuPreset.java index 9a28e573a..149da1a29 100644 --- a/src/me/mrCookieSlime/Slimefun/api/inventory/BlockMenuPreset.java +++ b/src/me/mrCookieSlime/Slimefun/api/inventory/BlockMenuPreset.java @@ -15,7 +15,7 @@ import me.mrCookieSlime.Slimefun.api.item_transport.ItemTransportFlow; public abstract class BlockMenuPreset extends ChestMenu { - private String title; + private String inventoryTitle; private Set occupied = new HashSet<>(); private String id; private int size = -1; @@ -23,10 +23,10 @@ public abstract class BlockMenuPreset extends ChestMenu { private ItemManipulationEvent event; - public BlockMenuPreset(String id, String title) { - super(title); + public BlockMenuPreset(String id, String inventoryTitle) { + super(inventoryTitle); this.id = id; - this.title = title; + this.inventoryTitle = inventoryTitle; this.init(); this.universal = false; SlimefunPlugin.getUtilities().blockMenuPresets.put(id, this); @@ -36,10 +36,10 @@ public abstract class BlockMenuPreset extends ChestMenu { this.event = event; } - public BlockMenuPreset(String id, String title, boolean universal) { - super(title); + public BlockMenuPreset(String id, String inventoryTitle, boolean universal) { + super(inventoryTitle); this.id = id; - this.title = title; + this.inventoryTitle = inventoryTitle; this.init(); this.universal = universal; SlimefunPlugin.getUtilities().blockMenuPresets.put(id, this); @@ -74,11 +74,11 @@ public abstract class BlockMenuPreset extends ChestMenu { } public int getSize() { - return this.size; + return size; } public String getTitle() { - return this.title; + return inventoryTitle; } public Set getPresetSlots() { diff --git a/src/me/mrCookieSlime/Slimefun/hooks/github/GitHubConnector.java b/src/me/mrCookieSlime/Slimefun/hooks/github/GitHubConnector.java index 98924dd27..ea760b4f6 100644 --- a/src/me/mrCookieSlime/Slimefun/hooks/github/GitHubConnector.java +++ b/src/me/mrCookieSlime/Slimefun/hooks/github/GitHubConnector.java @@ -75,14 +75,14 @@ public abstract class GitHubConnector { public void parseData() { try (BufferedReader reader = new BufferedReader(new FileReader(this.getFile()))) { - String full = ""; + StringBuilder builder = new StringBuilder(); String line; while ((line = reader.readLine()) != null) { - full = full + line; + builder.append(line); } - JsonElement element = new JsonParser().parse(full); + JsonElement element = new JsonParser().parse(builder.toString()); this.onSuccess(element); } catch (IOException x) { diff --git a/src/me/mrCookieSlime/Slimefun/listeners/DamageListener.java b/src/me/mrCookieSlime/Slimefun/listeners/DamageListener.java index fc0a0cd8f..49a09c8e1 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/DamageListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/DamageListener.java @@ -71,8 +71,9 @@ public class DamageListener implements Listener { } } + if (e.getEntity().getKiller() instanceof Player) { - Player p = (Player) e.getEntity().getKiller(); + Player p = e.getEntity().getKiller(); ItemStack item = p.getInventory().getItemInMainHand(); if (SlimefunPlugin.getUtilities().drops.containsKey(e.getEntity().getType())) { diff --git a/src/me/mrCookieSlime/Slimefun/listeners/ToolListener.java b/src/me/mrCookieSlime/Slimefun/listeners/ToolListener.java index 72e5e8f7e..8d24cd790 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/ToolListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/ToolListener.java @@ -251,13 +251,15 @@ public class ToolListener implements Listener { while (blocks.hasNext()) { Block block = blocks.next(); - SlimefunItem item = BlockStorage.check(block); - if (item != null) { + String id = BlockStorage.checkID(block); + if (id != null) { 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")) { + if (!id.equalsIgnoreCase("HARDENED_GLASS") && !id.equalsIgnoreCase("WITHER_PROOF_OBSIDIAN") && !id.equalsIgnoreCase("WITHER_PROOF_GLASS") && !id.equalsIgnoreCase("FORCEFIELD_PROJECTOR") && !id.equalsIgnoreCase("FORCEFIELD_RELAY")) { boolean success = true; - if (utilities.blockHandlers.containsKey(item.getID())) { - success = utilities.blockHandlers.get(item.getID()).onBreak(null, block, item, UnregisterReason.EXPLODE); + SlimefunItem item = SlimefunItem.getByID(id); + + if (utilities.blockHandlers.containsKey(id)) { + success = utilities.blockHandlers.get(id).onBreak(null, block, item, UnregisterReason.EXPLODE); } if (success) { BlockStorage.clearBlockInfo(block); From b5d9e11bad837154ba03615b85fe7820cd222a49 Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Mon, 2 Sep 2019 11:12:34 +0200 Subject: [PATCH 149/169] Added a bunch more machine Recipes to be shown in the guide --- .../Objects/SlimefunItem/SlimefunGadget.java | 10 +-- .../Objects/SlimefunItem/SlimefunMachine.java | 16 +++-- .../machines/electric/AutoDrier.java | 62 ++++++++++++---- .../machines/electric/CarbonPress.java | 19 ++++- .../machines/electric/ElectricGoldPan.java | 22 +++++- .../electric/ElectricIngotFactory.java | 24 +++++-- .../electric/ElectricIngotPulverizer.java | 72 +++++++++++++++++++ .../machines/electric/Freezer.java | 19 ++++- .../machines/electric/Refinery.java | 11 ++- .../Slimefun/Setup/SlimefunSetup.java | 44 ++---------- .../mrCookieSlime/Slimefun/SlimefunGuide.java | 8 +-- .../Slimefun/utils/RecipeDisplayItem.java | 12 ++++ 12 files changed, 243 insertions(+), 76 deletions(-) create mode 100644 src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricIngotPulverizer.java create mode 100644 src/me/mrCookieSlime/Slimefun/utils/RecipeDisplayItem.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunGadget.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunGadget.java index 7a1f63ca9..afff7f633 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunGadget.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunGadget.java @@ -3,12 +3,13 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem; import java.util.ArrayList; import java.util.List; -import me.mrCookieSlime.Slimefun.Lists.RecipeType; -import me.mrCookieSlime.Slimefun.Objects.Category; - import org.bukkit.inventory.ItemStack; -public class SlimefunGadget extends SlimefunItem { +import me.mrCookieSlime.Slimefun.Lists.RecipeType; +import me.mrCookieSlime.Slimefun.Objects.Category; +import me.mrCookieSlime.Slimefun.utils.RecipeDisplayItem; + +public class SlimefunGadget extends SlimefunItem implements RecipeDisplayItem { private List recipes; private List displayRecipes; @@ -40,6 +41,7 @@ public class SlimefunGadget extends SlimefunItem { return this.recipes; } + @Override public List getDisplayRecipes() { return this.displayRecipes; } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunMachine.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunMachine.java index 58b7b478f..70be933dc 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunMachine.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunMachine.java @@ -11,8 +11,9 @@ import org.bukkit.inventory.ItemStack; import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.MultiBlock; +import me.mrCookieSlime.Slimefun.utils.RecipeDisplayItem; -public class SlimefunMachine extends SlimefunItem { +public class SlimefunMachine extends SlimefunItem implements RecipeDisplayItem { private List recipes; private Material trigger; @@ -44,16 +45,17 @@ public class SlimefunMachine extends SlimefunItem { } public List getRecipes() { - return this.recipes; + return recipes; } + @Override public List getDisplayRecipes() { - return this.shownRecipes; + return shownRecipes; } public void addRecipe(ItemStack[] input, ItemStack output) { - this.recipes.add(input); - this.recipes.add(new ItemStack[] {output}); + recipes.add(input); + recipes.add(new ItemStack[] {output}); } @Override @@ -65,9 +67,9 @@ public class SlimefunMachine extends SlimefunItem { public void install() { for (ItemStack i: this.getDisplayRecipes()) { SlimefunItem item = SlimefunItem.getByItem(i); - if (item == null || !SlimefunItem.isDisabled(i)) - + if (item == null || !SlimefunItem.isDisabled(i)) { this.recipes.add(new ItemStack[] {i}); + } } } 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 6d73f8d77..21a10c933 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,8 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric; +import java.util.ArrayList; +import java.util.List; + import org.bukkit.Material; import org.bukkit.Tag; import org.bukkit.block.Block; @@ -8,17 +11,46 @@ 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; +import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineHelper; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecipe; +import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.api.BlockStorage; import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock; +import me.mrCookieSlime.Slimefun.utils.RecipeDisplayItem; -public class AutoDrier extends AContainer { +public class AutoDrier extends AContainer implements RecipeDisplayItem { + + private final List recipes = new ArrayList<>(); public AutoDrier(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe) { super(category, item, id, recipeType, recipe); + + recipes.add(new ItemStack(Material.ROTTEN_FLESH)); + recipes.add(new ItemStack(Material.LEATHER)); + + recipes.add(new ItemStack(Material.WET_SPONGE)); + recipes.add(new ItemStack(Material.SPONGE)); + + recipes.add(new ItemStack(Material.KELP)); + recipes.add(new ItemStack(Material.DRIED_KELP)); + + recipes.add(new ItemStack(Material.COOKED_BEEF)); + recipes.add(SlimefunItems.BEEF_JERKY); + + recipes.add(new ItemStack(Material.POTION)); + recipes.add(new ItemStack(Material.GLASS_BOTTLE)); + + recipes.add(new ItemStack(Material.OAK_SAPLING)); + recipes.add(new ItemStack(Material.STICK, 2)); + + recipes.add(new ItemStack(Material.OAK_LEAVES)); + recipes.add(new ItemStack(Material.STICK)); + + recipes.add(new ItemStack(Material.WATER_BUCKET)); + recipes.add(new ItemStack(Material.BUCKET)); } @Override @@ -30,6 +62,11 @@ public class AutoDrier extends AContainer { public ItemStack getProgressBar() { return new ItemStack(Material.FLINT_AND_STEEL); } + + @Override + public List getDisplayRecipes() { + return recipes; + } @Override protected void tick(Block b) { @@ -60,28 +97,27 @@ public class AutoDrier extends AContainer { for (int slot: getInputSlots()) { ItemStack item = BlockStorage.getInventory(b).getItemInSlot(slot); if (item != null) { - // Checking if dryable Material mat = item.getType(); ItemStack output = null; - if (mat == Material.ROTTEN_FLESH) { - output = new ItemStack(Material.LEATHER); + for (int i = 0; i < recipes.size(); i += 2) { + if (SlimefunManager.isItemSimiliar(item, recipes.get(i), true)) { + output = recipes.get(i + 1); + } } - else if (mat == Material.WATER_BUCKET) { - output = new ItemStack(Material.BUCKET); + + if (Tag.SAPLINGS.isTagged(mat)) { + output = new ItemStack(Material.STICK, 2); } - else if (mat == Material.WET_SPONGE) { - output = new ItemStack(Material.SPONGE); + else if (Tag.LEAVES.isTagged(mat)) { + output = new ItemStack(Material.STICK, 1); } - else if (Tag.SAPLINGS.isTagged(mat) || Tag.LEAVES.isTagged(mat)) { - output = new ItemStack(Material.STICK); - } - else if (mat.name().contains("POTION")) { + else if (mat == Material.SPLASH_POTION || mat == Material.LINGERING_POTION) { output = new ItemStack(Material.GLASS_BOTTLE); } if (output != null) { - r = new MachineRecipe(5, new ItemStack[] {item}, new ItemStack[] {output}); + r = new MachineRecipe(6, new ItemStack[] {item}, new ItemStack[] {output.clone()}); inputSlot = slot; break; } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/CarbonPress.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/CarbonPress.java index 35fce73d4..a0e793913 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/CarbonPress.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/CarbonPress.java @@ -1,5 +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.inventory.ItemStack; @@ -8,8 +11,10 @@ import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecipe; +import me.mrCookieSlime.Slimefun.utils.RecipeDisplayItem; -public abstract class CarbonPress extends AContainer { +public abstract class CarbonPress extends AContainer implements RecipeDisplayItem { public CarbonPress(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) { super(category, item, name, recipeType, recipe); @@ -24,6 +29,18 @@ public abstract class CarbonPress extends AContainer { registerRecipe(60, new ItemStack[] {SlimefunItems.CARBON_CHUNK}, new ItemStack[] {SlimefunItems.SYNTHETIC_DIAMOND}); registerRecipe(90, new ItemStack[] {SlimefunItems.RAW_CARBONADO}, new ItemStack[] {SlimefunItems.CARBONADO}); } + + @Override + public List getDisplayRecipes() { + List displayRecipes = new ArrayList<>(recipes.size() * 2); + + for (MachineRecipe recipe: recipes) { + displayRecipes.add(recipe.getInput()[0]); + displayRecipes.add(recipe.getOutput()[0]); + } + + return displayRecipes; + } @Override public String getMachineIdentifier() { 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 595322b0f..73c245cef 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricGoldPan.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricGoldPan.java @@ -1,5 +1,8 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric; +import java.util.Arrays; +import java.util.List; + import org.bukkit.Material; import org.bukkit.block.Block; import org.bukkit.inventory.ItemStack; @@ -16,9 +19,21 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecip import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.api.BlockStorage; import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock; +import me.mrCookieSlime.Slimefun.utils.RecipeDisplayItem; -public abstract class ElectricGoldPan extends AContainer { +public abstract class ElectricGoldPan extends AContainer implements RecipeDisplayItem { + private final List displayRecipes = Arrays.asList( + new ItemStack(Material.GRAVEL), + SlimefunItems.SIFTED_ORE, + + new ItemStack(Material.GRAVEL), + new ItemStack(Material.FLINT), + + new ItemStack(Material.GRAVEL), + new ItemStack(Material.CLAY_BALL) + ); + public ElectricGoldPan(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) { super(category, item, name, recipeType, recipe); } @@ -82,5 +97,10 @@ public abstract class ElectricGoldPan extends AContainer { public String getMachineIdentifier() { return "ELECTRIC_GOLD_PAN"; } + + @Override + public List getDisplayRecipes() { + return displayRecipes; + } } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricIngotFactory.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricIngotFactory.java index 7dff63c22..2a3b1e7c8 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricIngotFactory.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricIngotFactory.java @@ -1,15 +1,19 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric; +import java.util.ArrayList; +import java.util.List; + +import org.bukkit.Material; +import org.bukkit.inventory.ItemStack; + import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecipe; +import me.mrCookieSlime.Slimefun.utils.RecipeDisplayItem; -import org.bukkit.Material; -import org.bukkit.inventory.ItemStack; - -public abstract class ElectricIngotFactory extends AContainer { +public abstract class ElectricIngotFactory extends AContainer implements RecipeDisplayItem { public ElectricIngotFactory(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) { super(category, item, name, recipeType, recipe); @@ -28,6 +32,18 @@ public abstract class ElectricIngotFactory extends AContainer { registerRecipe(new MachineRecipe(8, new ItemStack[] {SlimefunItems.ZINC_DUST}, new ItemStack[] {SlimefunItems.ZINC_INGOT})); } + @Override + public List getDisplayRecipes() { + List displayRecipes = new ArrayList<>(recipes.size() * 2); + + for (MachineRecipe recipe: recipes) { + displayRecipes.add(recipe.getInput()[0]); + displayRecipes.add(recipe.getOutput()[0]); + } + + return displayRecipes; + } + @Override public String getMachineIdentifier() { return "ELECTRIC_INGOT_FACTORY"; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricIngotPulverizer.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricIngotPulverizer.java new file mode 100644 index 000000000..cb4f4fa88 --- /dev/null +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricIngotPulverizer.java @@ -0,0 +1,72 @@ +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric; + +import java.util.ArrayList; +import java.util.List; + +import org.bukkit.Material; +import org.bukkit.inventory.ItemStack; + +import me.mrCookieSlime.Slimefun.Lists.RecipeType; +import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; +import me.mrCookieSlime.Slimefun.Objects.Category; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecipe; +import me.mrCookieSlime.Slimefun.utils.RecipeDisplayItem; + +public class ElectricIngotPulverizer extends AContainer implements RecipeDisplayItem { + + public ElectricIngotPulverizer(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe) { + super(category, item, id, recipeType, recipe); + } + + @Override + public String getInventoryTitle() { + return "&bElectric Ingot Pulverizer"; + } + + @Override + public ItemStack getProgressBar() { + return new ItemStack(Material.IRON_PICKAXE); + } + + @Override + public void registerDefaultRecipes() { + registerRecipe(3, new ItemStack[]{SlimefunItems.ALUMINUM_INGOT}, new ItemStack[]{SlimefunItems.ALUMINUM_DUST}); + registerRecipe(3, new ItemStack[]{SlimefunItems.COPPER_INGOT}, new ItemStack[]{SlimefunItems.COPPER_DUST}); + registerRecipe(3, new ItemStack[]{SlimefunItems.GOLD_4K}, new ItemStack[]{SlimefunItems.GOLD_DUST}); + registerRecipe(3, new ItemStack[]{new ItemStack(Material.IRON_INGOT)}, new ItemStack[]{SlimefunItems.IRON_DUST}); + registerRecipe(3, new ItemStack[]{SlimefunItems.LEAD_INGOT}, new ItemStack[]{SlimefunItems.LEAD_DUST}); + registerRecipe(3, new ItemStack[]{SlimefunItems.MAGNESIUM_INGOT}, new ItemStack[]{SlimefunItems.MAGNESIUM_DUST}); + registerRecipe(3, new ItemStack[]{SlimefunItems.SILVER_INGOT}, new ItemStack[]{SlimefunItems.SILVER_DUST}); + registerRecipe(3, new ItemStack[]{SlimefunItems.TIN_INGOT}, new ItemStack[]{SlimefunItems.TIN_DUST}); + registerRecipe(3, new ItemStack[]{SlimefunItems.ZINC_INGOT}, new ItemStack[]{SlimefunItems.ZINC_DUST}); + } + + @Override + public List getDisplayRecipes() { + List displayRecipes = new ArrayList<>(recipes.size() * 2); + + for (MachineRecipe recipe: recipes) { + displayRecipes.add(recipe.getInput()[0]); + displayRecipes.add(recipe.getOutput()[0]); + } + + return displayRecipes; + } + + @Override + public int getEnergyConsumption() { + return 7; + } + + @Override + public int getSpeed() { + return 1; + } + + @Override + public String getMachineIdentifier() { + return "ELECTRIC_INGOT_PULVERIZER"; + } + +} diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/Freezer.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/Freezer.java index ac74d60ce..52d177863 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/Freezer.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/Freezer.java @@ -4,11 +4,16 @@ import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecipe; +import me.mrCookieSlime.Slimefun.utils.RecipeDisplayItem; + +import java.util.ArrayList; +import java.util.List; import org.bukkit.Material; import org.bukkit.inventory.ItemStack; -public abstract class Freezer extends AContainer { +public abstract class Freezer extends AContainer implements RecipeDisplayItem { public Freezer(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) { super(category, item, name, recipeType, recipe); @@ -22,6 +27,18 @@ public abstract class Freezer extends AContainer { registerRecipe(6, new ItemStack[] {new ItemStack(Material.PACKED_ICE)}, new ItemStack[] {SlimefunItems.REACTOR_COOLANT_CELL}); } + @Override + public List getDisplayRecipes() { + List displayRecipes = new ArrayList<>(recipes.size() * 2); + + for (MachineRecipe recipe: recipes) { + displayRecipes.add(recipe.getInput()[0]); + displayRecipes.add(recipe.getOutput()[recipe.getOutput().length - 1]); + } + + return displayRecipes; + } + @Override public String getMachineIdentifier() { return "FREEZER"; 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 c05172574..38294d8d6 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/Refinery.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/Refinery.java @@ -1,5 +1,8 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric; +import java.util.Arrays; +import java.util.List; + import org.bukkit.Material; import org.bukkit.block.Block; import org.bukkit.inventory.ItemStack; @@ -15,8 +18,9 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecip import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.api.BlockStorage; import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock; +import me.mrCookieSlime.Slimefun.utils.RecipeDisplayItem; -public abstract class Refinery extends AContainer { +public abstract class Refinery extends AContainer implements RecipeDisplayItem { public Refinery(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) { super(category, item, name, recipeType, recipe); @@ -36,6 +40,11 @@ public abstract class Refinery extends AContainer { public String getMachineIdentifier() { return "REFINERY"; } + + @Override + public List getDisplayRecipes() { + return Arrays.asList(SlimefunItems.BUCKET_OF_OIL, SlimefunItems.BUCKET_OF_FUEL); + } @Override protected void tick(Block b) { diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java index 11468a605..29b595e51 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java @@ -127,6 +127,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.Electric import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.ElectricFurnace; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.ElectricGoldPan; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.ElectricIngotFactory; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.ElectricIngotPulverizer; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.ElectricSmeltery; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.ElectrifiedCrucible; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.EnergyRegulator; @@ -2351,46 +2352,9 @@ public final class SlimefunSetup { }.registerChargeableBlock(true, 256); - new AContainer(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_INGOT_PULVERIZER, "ELECTRIC_INGOT_PULVERIZER", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {null, SlimefunItems.ELECTRIC_ORE_GRINDER, null, SlimefunItems.LEAD_INGOT, SlimefunItems.MEDIUM_CAPACITOR, SlimefunItems.LEAD_INGOT, SlimefunItems.LEAD_INGOT, SlimefunItems.HEATING_COIL, SlimefunItems.LEAD_INGOT}){ - @Override - public String getInventoryTitle() { - return "&bElectric Ingot Pulverizer"; - } - - @Override - public ItemStack getProgressBar() { - return new ItemStack(Material.IRON_PICKAXE); - } - - @Override - public void registerDefaultRecipes() { - registerRecipe(3, new ItemStack[]{SlimefunItems.ALUMINUM_INGOT}, new ItemStack[]{SlimefunItems.ALUMINUM_DUST}); - registerRecipe(3, new ItemStack[]{SlimefunItems.COPPER_INGOT}, new ItemStack[]{SlimefunItems.COPPER_DUST}); - registerRecipe(3, new ItemStack[]{SlimefunItems.GOLD_4K}, new ItemStack[]{SlimefunItems.GOLD_DUST}); - registerRecipe(3, new ItemStack[]{new ItemStack(Material.IRON_INGOT)}, new ItemStack[]{SlimefunItems.IRON_DUST}); - registerRecipe(3, new ItemStack[]{SlimefunItems.LEAD_INGOT}, new ItemStack[]{SlimefunItems.LEAD_DUST}); - registerRecipe(3, new ItemStack[]{SlimefunItems.MAGNESIUM_INGOT}, new ItemStack[]{SlimefunItems.MAGNESIUM_DUST}); - registerRecipe(3, new ItemStack[]{SlimefunItems.SILVER_INGOT}, new ItemStack[]{SlimefunItems.SILVER_DUST}); - registerRecipe(3, new ItemStack[]{SlimefunItems.TIN_INGOT}, new ItemStack[]{SlimefunItems.TIN_DUST}); - registerRecipe(3, new ItemStack[]{SlimefunItems.ZINC_INGOT}, new ItemStack[]{SlimefunItems.ZINC_DUST}); - } - - @Override - public int getEnergyConsumption() { - return 7; - } - - @Override - public int getSpeed() { - return 1; - } - - @Override - public String getMachineIdentifier() { - return "ELECTRIC_INGOT_PULVERIZER"; - } - }.registerChargeableBlock(true, 512); + new ElectricIngotPulverizer(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_INGOT_PULVERIZER, "ELECTRIC_INGOT_PULVERIZER", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {null, SlimefunItems.ELECTRIC_ORE_GRINDER, null, SlimefunItems.LEAD_INGOT, SlimefunItems.MEDIUM_CAPACITOR, SlimefunItems.LEAD_INGOT, SlimefunItems.LEAD_INGOT, SlimefunItems.HEATING_COIL, SlimefunItems.LEAD_INGOT}) + .registerChargeableBlock(true, 512); new AGenerator(Categories.ELECTRICITY, SlimefunItems.COAL_GENERATOR, "COAL_GENERATOR", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {SlimefunItems.HEATING_COIL, new ItemStack(Material.FURNACE), SlimefunItems.HEATING_COIL, SlimefunItems.NICKEL_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.NICKEL_INGOT, null, SlimefunItems.NICKEL_INGOT, null}) { diff --git a/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java b/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java index 677b137b3..e39501c34 100644 --- a/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java +++ b/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java @@ -37,7 +37,6 @@ import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.LockedCategory; import me.mrCookieSlime.Slimefun.Objects.Research; import me.mrCookieSlime.Slimefun.Objects.SeasonalCategory; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunGadget; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunMachine; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AGenerator; @@ -51,6 +50,7 @@ import me.mrCookieSlime.Slimefun.api.Slimefun; import me.mrCookieSlime.Slimefun.api.SlimefunGuideLayout; import me.mrCookieSlime.Slimefun.hooks.github.Contributor; import me.mrCookieSlime.Slimefun.hooks.github.IntegerFormat; +import me.mrCookieSlime.Slimefun.utils.RecipeDisplayItem; public final class SlimefunGuide { @@ -946,7 +946,7 @@ public final class SlimefunGuide { }); if (sfItem != null) { - if ((sfItem instanceof SlimefunMachine && !((SlimefunMachine) sfItem).getDisplayRecipes().isEmpty()) || (sfItem instanceof SlimefunGadget && !((SlimefunGadget) sfItem).getRecipes().isEmpty())) { + if (sfItem instanceof RecipeDisplayItem && !((RecipeDisplayItem) sfItem).getDisplayRecipes().isEmpty()) { for (int i = 27; i < 36; i++) { menu.addItem(i, new CustomItem(Material.LIME_STAINED_GLASS_PANE, SlimefunItem.getByItem(item) instanceof SlimefunMachine ? "&7\u21E9 Recipes made in this Machine \u21E9": " ")); menu.addMenuClickHandler(i, @@ -954,7 +954,7 @@ public final class SlimefunGuide { ); } - List recipes = SlimefunItem.getByItem(item) instanceof SlimefunMachine ? ((SlimefunMachine) SlimefunItem.getByItem(item)).getDisplayRecipes() : ((SlimefunGadget) SlimefunItem.getByItem(item)).getDisplayRecipes(); + List recipes = ((RecipeDisplayItem) SlimefunItem.getByItem(item)).getDisplayRecipes(); int recipeSize = recipes.size(); if (recipeSize > 18) recipeSize = 18; int inputs = -1; @@ -970,7 +970,7 @@ public final class SlimefunGuide { int addition = (i % 2 == 0 ? inputs: outputs); - menu.addItem(slot + addition, recipes.get(i)); + menu.addItem(slot + addition, recipes.get(i).clone()); menu.addMenuClickHandler(slot + addition, (pl, slotn, itemstack, action) -> { displayItem(pl, itemstack, true, book, 0); return false; diff --git a/src/me/mrCookieSlime/Slimefun/utils/RecipeDisplayItem.java b/src/me/mrCookieSlime/Slimefun/utils/RecipeDisplayItem.java new file mode 100644 index 000000000..bfdde8001 --- /dev/null +++ b/src/me/mrCookieSlime/Slimefun/utils/RecipeDisplayItem.java @@ -0,0 +1,12 @@ +package me.mrCookieSlime.Slimefun.utils; + +import java.util.List; + +import org.bukkit.inventory.ItemStack; + +@FunctionalInterface +public interface RecipeDisplayItem { + + List getDisplayRecipes(); + +} From 4d52b034f1ec6fa64aba796315ca60b8ae3dbb82 Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Mon, 2 Sep 2019 11:12:42 +0200 Subject: [PATCH 150/169] Fixed Explosive Tools --- .../SlimefunItem/items/ExplosivePickaxe.java | 3 ++- .../SlimefunItem/items/ExplosiveShovel.java | 3 ++- .../machines/electric/FoodComposter.java | 23 ++++++++++++++++--- .../Slimefun/utils/DamageableItem.java | 3 +-- 4 files changed, 25 insertions(+), 7 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/ExplosivePickaxe.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/ExplosivePickaxe.java index 3fa7954eb..a10c77c78 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/ExplosivePickaxe.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/ExplosivePickaxe.java @@ -39,8 +39,9 @@ public class ExplosivePickaxe extends SimpleSlimefunItem impl public BlockBreakHandler getItemHandler() { return (e, item, fortune, drops) -> { if (SlimefunManager.isItemSimiliar(item, SlimefunItems.EXPLOSIVE_PICKAXE, true)) { + e.setCancelled(true); e.getBlock().getWorld().createExplosion(e.getBlock().getLocation(), 0.0F); - e.getBlock().getWorld().playSound(e.getBlock().getLocation(), Sound.ENTITY_GENERIC_EXPLODE, 1F, 1F); + e.getBlock().getWorld().playSound(e.getBlock().getLocation(), Sound.ENTITY_GENERIC_EXPLODE, 0.3F, 1F); for (int x = -1; x <= 1; x++) { for (int y = -1; y <= 1; y++) { for (int z = -1; z <= 1; z++) { diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/ExplosiveShovel.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/ExplosiveShovel.java index fe05b9073..77e453fc7 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/ExplosiveShovel.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/ExplosiveShovel.java @@ -31,8 +31,9 @@ public class ExplosiveShovel extends SimpleSlimefunItem imple public BlockBreakHandler getItemHandler() { return (e, item, fortune, drops) -> { if (SlimefunManager.isItemSimiliar(item, SlimefunItems.EXPLOSIVE_SHOVEL, true)) { + e.setCancelled(true); e.getBlock().getWorld().createExplosion(e.getBlock().getLocation(), 0.0F); - e.getBlock().getWorld().playSound(e.getBlock().getLocation(), Sound.ENTITY_GENERIC_EXPLODE, 1F, 1F); + e.getBlock().getWorld().playSound(e.getBlock().getLocation(), Sound.ENTITY_GENERIC_EXPLODE, 0.3F, 1F); for (int x = -1; x <= 1; x++) { for (int y = -1; y <= 1; y++) { diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/FoodComposter.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/FoodComposter.java index daa8e4f83..ca225bd0d 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/FoodComposter.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/FoodComposter.java @@ -1,13 +1,18 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric; +import java.util.ArrayList; +import java.util.List; + +import org.bukkit.inventory.ItemStack; + import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecipe; +import me.mrCookieSlime.Slimefun.utils.RecipeDisplayItem; -import org.bukkit.inventory.ItemStack; - -public abstract class FoodComposter extends AContainer { +public abstract class FoodComposter extends AContainer implements RecipeDisplayItem { public FoodComposter(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) { super(category, item, name, recipeType, recipe); @@ -24,6 +29,18 @@ public abstract class FoodComposter extends AContainer { registerRecipe(30, new ItemStack[] {SlimefunItems.APPLE_ORGANIC_FOOD}, new ItemStack[] {SlimefunItems.APPLE_FERTILIZER}); } + @Override + public List getDisplayRecipes() { + List displayRecipes = new ArrayList<>(recipes.size() * 2); + + for (MachineRecipe recipe: recipes) { + displayRecipes.add(recipe.getInput()[0]); + displayRecipes.add(recipe.getOutput()[0]); + } + + return displayRecipes; + } + @Override public String getMachineIdentifier() { return "FOOD_COMPOSTER"; diff --git a/src/me/mrCookieSlime/Slimefun/utils/DamageableItem.java b/src/me/mrCookieSlime/Slimefun/utils/DamageableItem.java index 2fbc68e4f..6db351177 100644 --- a/src/me/mrCookieSlime/Slimefun/utils/DamageableItem.java +++ b/src/me/mrCookieSlime/Slimefun/utils/DamageableItem.java @@ -13,9 +13,8 @@ public interface DamageableItem { boolean isDamageable(); default void damageItem(Player p, ItemStack item) { - if (item != null && item.getType() != null && item.getType() != Material.AIR && item.getAmount() > 0 && isDamageable() && !item.getEnchantments().containsKey(Enchantment.DURABILITY) || Math.random() * 100 <= (60 + Math.floorDiv(40, (item.getEnchantmentLevel(Enchantment.DURABILITY) + 1)))) { + if (item != null && item.getType() != null && item.getType() != Material.AIR && item.getAmount() > 0 && isDamageable() && item.getEnchantments().containsKey(Enchantment.DURABILITY) && Math.random() * 100 <= (60 + Math.floorDiv(40, (item.getEnchantmentLevel(Enchantment.DURABILITY) + 1)))) { ItemMeta meta = item.getItemMeta(); - Damageable damageable = (Damageable) meta; if (damageable.getDamage() >= item.getType().getMaxDurability()) { From dd148165040a6d2508ac27fdc00879d271ea8164 Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Mon, 2 Sep 2019 11:25:06 +0200 Subject: [PATCH 151/169] Added Blue Ice to Freezer --- .../SlimefunItem/machines/electric/Freezer.java | 3 ++- .../SlimefunItem/multiblocks/TableSaw.java | 16 ++++++++++++++++ .../Slimefun/Setup/SlimefunSetup.java | 2 +- 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/Freezer.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/Freezer.java index 52d177863..107d2d939 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/Freezer.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/Freezer.java @@ -24,7 +24,8 @@ public abstract class Freezer extends AContainer implements RecipeDisplayItem { registerRecipe(2, new ItemStack[] {new ItemStack(Material.WATER_BUCKET)}, new ItemStack[] {new ItemStack(Material.BUCKET), new ItemStack(Material.ICE)}); registerRecipe(8, new ItemStack[] {new ItemStack(Material.LAVA_BUCKET)}, new ItemStack[] {new ItemStack(Material.BUCKET), new ItemStack(Material.OBSIDIAN)}); registerRecipe(4, new ItemStack[] {new ItemStack(Material.ICE)}, new ItemStack[] {new ItemStack(Material.PACKED_ICE)}); - registerRecipe(6, new ItemStack[] {new ItemStack(Material.PACKED_ICE)}, new ItemStack[] {SlimefunItems.REACTOR_COOLANT_CELL}); + registerRecipe(6, new ItemStack[] {new ItemStack(Material.PACKED_ICE)}, new ItemStack[] {new ItemStack(Material.BLUE_ICE)}); + registerRecipe(8, new ItemStack[] {new ItemStack(Material.BLUE_ICE)}, new ItemStack[] {SlimefunItems.REACTOR_COOLANT_CELL}); } @Override diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/TableSaw.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/TableSaw.java index dec794fec..79b4ac163 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/TableSaw.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/TableSaw.java @@ -1,7 +1,11 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks; +import java.util.ArrayList; +import java.util.List; + import org.bukkit.Effect; import org.bukkit.Material; +import org.bukkit.Tag; import org.bukkit.block.Block; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; @@ -11,6 +15,8 @@ import me.mrCookieSlime.Slimefun.Lists.Categories; import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; public class TableSaw extends MultiBlockMachine { + + private final List displayRecipes = new ArrayList(); public TableSaw() { super( @@ -21,6 +27,16 @@ public class TableSaw extends MultiBlockMachine { new ItemStack[0], Material.STONECUTTER ); + + for (Material log: Tag.LOGS.getValues()) { + displayRecipes.add(new ItemStack(log)); + displayRecipes.add(new ItemStack(MaterialHelper.getWoodFromLog(log), 8)); + } + } + + @Override + public List getDisplayRecipes() { + return displayRecipes; } @Override diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java index 29b595e51..f08f83c3e 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java @@ -3563,7 +3563,7 @@ public final class SlimefunSetup { }.registerChargeableBlock(true, 256); new SlimefunItem(Categories.TECH_MISC, SlimefunItems.REACTOR_COOLANT_CELL, "REACTOR_COOLANT_CELL", new RecipeType(SlimefunItems.FREEZER), - new ItemStack[] {new ItemStack(Material.PACKED_ICE), null, null, null, null, null, null, null, null}) + new ItemStack[] {new ItemStack(Material.BLUE_ICE), null, null, null, null, null, null, null, null}) .register(true); new SlimefunItem(Categories.TECH_MISC, SlimefunItems.NETHER_ICE_COOLANT_CELL, "NETHER_ICE_COOLANT_CELL", new RecipeType(SlimefunItems.HEATED_PRESSURE_CHAMBER), From 6473988df4e27bd61028d4a7c3acd9b23a325a99 Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Mon, 2 Sep 2019 11:27:32 +0200 Subject: [PATCH 152/169] Fixed Durability Enchantment on damageable Items --- src/me/mrCookieSlime/Slimefun/utils/DamageableItem.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/me/mrCookieSlime/Slimefun/utils/DamageableItem.java b/src/me/mrCookieSlime/Slimefun/utils/DamageableItem.java index 6db351177..2e0db06d2 100644 --- a/src/me/mrCookieSlime/Slimefun/utils/DamageableItem.java +++ b/src/me/mrCookieSlime/Slimefun/utils/DamageableItem.java @@ -13,7 +13,11 @@ public interface DamageableItem { boolean isDamageable(); default void damageItem(Player p, ItemStack item) { - if (item != null && item.getType() != null && item.getType() != Material.AIR && item.getAmount() > 0 && isDamageable() && item.getEnchantments().containsKey(Enchantment.DURABILITY) && Math.random() * 100 <= (60 + Math.floorDiv(40, (item.getEnchantmentLevel(Enchantment.DURABILITY) + 1)))) { + if (item != null && item.getType() != null && item.getType() != Material.AIR && item.getAmount() > 0 && isDamageable()) { + if (item.getEnchantments().containsKey(Enchantment.DURABILITY) && Math.random() * 100 <= (60 + Math.floorDiv(40, (item.getEnchantmentLevel(Enchantment.DURABILITY) + 1)))) { + return; + } + ItemMeta meta = item.getItemMeta(); Damageable damageable = (Damageable) meta; From a8151ec58ba66a98897c9a9b7dfb696536e56466 Mon Sep 17 00:00:00 2001 From: Alex Mercer Date: Mon, 2 Sep 2019 03:19:10 -0700 Subject: [PATCH 153/169] Added item-permission --- src/me/mrCookieSlime/Slimefun/Setup/Messages.java | 1 + src/me/mrCookieSlime/Slimefun/SlimefunGuide.java | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/me/mrCookieSlime/Slimefun/Setup/Messages.java b/src/me/mrCookieSlime/Slimefun/Setup/Messages.java index 718f24b9f..12026bc43 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/Messages.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/Messages.java @@ -30,6 +30,7 @@ public final class Messages { local.setDefault("messages.fortune-cookie", "&7Help me, I am trapped in a Fortune Cookie Factory!", "&7You will die tomorrow... by a Creeper", "&7At some Point in your Life something bad will happen!!!", "&7Next week you will notice that this is not the real World, you are in a kind of \"Matrix\" or lets call it Computer game. Yes you are in a Computer Game", "&7This Cookie will taste good in a few seconds", "&7You will die soon and the last word you will hear is gonna be \"EXTERMINATE!!!\"", "&7Whatever you do, do not hug a Creeper... I tried it. It feels good, but it's not worth it."); local.setDefault("messages.only-players", "&4This Command is only for Players"); local.setDefault("messages.no-permission", "&4You do not have the required Permission to do this"); + local.setDefault("messages.item-permission", "&rYou do not have Permission", "&rto access this Item"); local.setDefault("messages.usage", "&4Usage: &c%usage%"); local.setDefault("messages.not-online", "&4%player% &cis not online!"); local.setDefault("messages.not-valid-item", "&4%item% &cis not a valid Item!"); diff --git a/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java b/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java index e39501c34..440fb8caa 100644 --- a/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java +++ b/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java @@ -716,7 +716,11 @@ public final class SlimefunGuide { index++; } else { - menu.addItem(index, new CustomItem(Material.BARRIER, StringUtils.formatItemName(sfitem.getItem(), false), "", "&rYou do not have Permission", "&rto access this Item")); + if (Messages.local.getTranslation("messages.item-permission").get(1).isEmpty()) { + menu.addItem(index, new CustomItem(Material.BARRIER, StringUtils.formatItemName(sfitem.getItem(), false), "", Messages.local.getTranslation("messages.item-permission").get(0))); + } else { + menu.addItem(index, new CustomItem(Material.BARRIER, StringUtils.formatItemName(sfitem.getItem(), false), "", Messages.local.getTranslation("messages.item-permission").get(0), Messages.local.getTranslation("messages.item-permission").get(1))); + } menu.addMenuClickHandler(index, (pl, slot, item, action) -> false); index++; } From b8e2eede5536ebe52a208815fefbc5d5d5d2e714 Mon Sep 17 00:00:00 2001 From: Alex Mercer Date: Mon, 2 Sep 2019 03:31:06 -0700 Subject: [PATCH 154/169] Changed messages.item-permission to tooltips.item-permission --- src/me/mrCookieSlime/Slimefun/Setup/Messages.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/me/mrCookieSlime/Slimefun/Setup/Messages.java b/src/me/mrCookieSlime/Slimefun/Setup/Messages.java index 12026bc43..0e85d7cd6 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/Messages.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/Messages.java @@ -30,7 +30,6 @@ public final class Messages { local.setDefault("messages.fortune-cookie", "&7Help me, I am trapped in a Fortune Cookie Factory!", "&7You will die tomorrow... by a Creeper", "&7At some Point in your Life something bad will happen!!!", "&7Next week you will notice that this is not the real World, you are in a kind of \"Matrix\" or lets call it Computer game. Yes you are in a Computer Game", "&7This Cookie will taste good in a few seconds", "&7You will die soon and the last word you will hear is gonna be \"EXTERMINATE!!!\"", "&7Whatever you do, do not hug a Creeper... I tried it. It feels good, but it's not worth it."); local.setDefault("messages.only-players", "&4This Command is only for Players"); local.setDefault("messages.no-permission", "&4You do not have the required Permission to do this"); - local.setDefault("messages.item-permission", "&rYou do not have Permission", "&rto access this Item"); local.setDefault("messages.usage", "&4Usage: &c%usage%"); local.setDefault("messages.not-online", "&4%player% &cis not online!"); local.setDefault("messages.not-valid-item", "&4%item% &cis not a valid Item!"); @@ -68,6 +67,8 @@ public final class Messages { local.setDefault("messages.cannot-place" ,"&cYou cannot place that block there!"); local.setDefault("messages.no-pvp" ,"&cYou cannot pvp in here!"); + local.setDefault("tooltips.item-permission", "&rYou do not have Permission", "&rto access this Item"); + local.setDefault("machines.pattern-not-found", "&eSorry, I could not recognize this Pattern. Please place the Items in the correct Pattern into the Dispenser."); local.setDefault("machines.unknown-material", "&eSorry, I could not recognize the Item in my Dispenser. Please put something in that I know."); local.setDefault("machines.wrong-item", "&eSorry, I could not recognize the Item you right clicked me with. Check the Recipes and see which Items you can use."); From 38c4333d72a0db961f2e74732e5b6bf04ee63a85 Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Mon, 2 Sep 2019 13:36:34 +0200 Subject: [PATCH 155/169] Retextured Categories --- .../Slimefun/Lists/Categories.java | 55 +++++++------------ .../Slimefun/Objects/Category.java | 7 +++ 2 files changed, 28 insertions(+), 34 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/Lists/Categories.java b/src/me/mrCookieSlime/Slimefun/Lists/Categories.java index 0935b3387..65e59cace 100644 --- a/src/me/mrCookieSlime/Slimefun/Lists/Categories.java +++ b/src/me/mrCookieSlime/Slimefun/Lists/Categories.java @@ -1,18 +1,13 @@ package me.mrCookieSlime.Slimefun.Lists; -import java.util.logging.Level; - import org.bukkit.Color; import org.bukkit.Material; -import org.bukkit.inventory.ItemStack; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomArmor; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; -import me.mrCookieSlime.CSCoreLibPlugin.general.World.CustomSkull; import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.LockedCategory; import me.mrCookieSlime.Slimefun.Objects.SeasonalCategory; -import me.mrCookieSlime.Slimefun.api.Slimefun; /** * Built-in categories. @@ -25,39 +20,31 @@ public final class Categories { private Categories() {} - private static final String lore = "&a> Click to open"; + private static final String LORE = "&a> Click to open"; - public static final Category WEAPONS = new Category(new CustomItem(Material.GOLDEN_SWORD, "&7Weapons", "", lore), 1); - public static final Category PORTABLE = new Category(new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNDBjYjFlNjdiNTEyYWIyZDRiZjNkN2FjZTBlYWFmNjFjMzJjZDQ2ODFkZGMzOTg3Y2ViMzI2NzA2YTMzZmEifX19"), "&7Items", "", lore), 1); - public static final Category FOOD = new Category(new CustomItem(Material.APPLE, "&7Food", "", lore), 2); - public static final Category MACHINES_1 = new Category(new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTM0M2NlNThkYTU0Yzc5OTI0YTJjOTMzMWNmYzQxN2ZlOGNjYmJlYTliZTQ1YTdhYzg1ODYwYTZjNzMwIn19fQ=="), "&7Basic Machines", "", lore), 1); - public static final LockedCategory ELECTRICITY = new LockedCategory(new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNTU4NDQzMmFmNmYzODIxNjcxMjAyNThkMWVlZThjODdjNmU3NWQ5ZTQ3OWU3YjBkNGM3YjZhZDQ4Y2ZlZWYifX19"), "&bEnergy and Electricity", "", lore), 4, MACHINES_1); - public static final LockedCategory GPS = new LockedCategory(new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjBjOWMxYTAyMmY0MGI3M2YxNGI0Y2JhMzdjNzE4YzZhNTMzZjNhMjg2NGI2NTM2ZDVmNDU2OTM0Y2MxZiJ9fX0="), "&bGPS-based Machines", "", lore), 4, MACHINES_1); - public static final Category ARMOR = new Category(new CustomItem(Material.IRON_CHESTPLATE, "&7Armor", "", lore), 2); - public static final Category LUMPS_AND_MAGIC = new Category(new CustomItem(SlimefunItems.RUNE_ENDER, "&7Magical Items", "", lore), 2); - public static final Category MAGIC = new Category(new CustomItem(SlimefunItems.ENDER_BACKPACK, "&7Magical Gadgets", "", lore), 3); - public static final Category MISC = new Category(new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTRkYTk3ZjA4MGUzOTViODQyYzRjYzgyYTg0MDgyM2Q0ZGJkOGNhNjg4YTIwNjg1M2U1NzgzZTRiZmRjMDEyIn19fQ=="), "&7Miscellaneous", "", lore), 2); - public static final Category TECH = new Category(new CustomArmor(new CustomItem(Material.LEATHER_CHESTPLATE, "&7Technical Gadgets", "", lore), Color.SILVER), 3); - public static final Category RESOURCES = new Category(new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvY2U4ZjVhZGIxNGQ2YzlmNmI4MTBkMDI3NTQzZjFhOGMxZjQxN2UyZmVkOTkzYzk3YmNkODljNzRmNWUyZTgifX19"), "&7Resources", "", lore), 1); - public static final Category CARGO = new LockedCategory(new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZTUxMGJjODUzNjJhMTMwYTZmZjlkOTFmZjExZDZmYTQ2ZDdkMTkxMmEzNDMxZjc1MTU1OGVmM2M0ZDljMiJ9fX0="), "&cCargo Management", "", lore), 4, MACHINES_1); - public static final Category TECH_MISC = new Category(new CustomItem(SlimefunItems.HEATING_COIL, "&7Technical Components", "", lore), 2); - public static final Category MAGIC_ARMOR = new Category(new CustomItem(SlimefunItems.ENDER_HELMET, "&7Magical Armor", "", lore), 2); - public static final Category TALISMANS_1 = new Category(new CustomItem(Material.EMERALD, "&7Talismans - &aTier I", "", lore), 2); - public static final LockedCategory TALISMANS_2 = new LockedCategory(new CustomItem(Material.EMERALD, "&7Talismans - &aTier II", "", lore), 3, TALISMANS_1); - public static final Category TOOLS = new Category(new CustomItem(Material.GOLDEN_PICKAXE, "&7Tools", "", lore), 1); + public static final Category WEAPONS = new Category(new CustomItem(Material.GOLDEN_SWORD, "&7Weapons", "", LORE), 1); + public static final Category PORTABLE = new Category(new CustomItem(SlimefunItems.BACKPACK_MEDIUM, "&7Items", "", LORE), 1); + public static final Category FOOD = new Category(new CustomItem(Material.APPLE, "&7Food", "", LORE), 2); + public static final Category MACHINES_1 = new Category(new CustomItem(Material.SMITHING_TABLE, "&7Basic Machines", "", LORE), 1); + public static final LockedCategory ELECTRICITY = new LockedCategory(new CustomItem(SlimefunItems.NUCLEAR_REACTOR, "&bEnergy and Electricity", "", LORE), 4, MACHINES_1); + public static final LockedCategory GPS = new LockedCategory(new CustomItem(SlimefunItems.GPS_TRANSMITTER, "&bGPS-based Machines", "", LORE), 4, MACHINES_1); + public static final Category ARMOR = new Category(new CustomItem(Material.IRON_CHESTPLATE, "&7Armor", "", LORE), 2); + public static final Category LUMPS_AND_MAGIC = new Category(new CustomItem(SlimefunItems.RUNE_ENDER, "&7Magical Items", "", LORE), 2); + public static final Category MAGIC = new Category(new CustomItem(Material.ELYTRA, "&7Magical Gadgets", "", LORE), 3); + public static final Category MISC = new Category(new CustomItem(SlimefunItems.CAN, "&7Miscellaneous", "", LORE), 2); + public static final Category TECH = new Category(new CustomArmor(new CustomItem(Material.LEATHER_CHESTPLATE, "&7Technical Gadgets", "", LORE), Color.SILVER), 3); + public static final Category RESOURCES = new Category(new CustomItem(SlimefunItems.SYNTHETIC_SAPPHIRE, "&7Resources", "", LORE), 1); + public static final Category CARGO = new LockedCategory(new CustomItem(SlimefunItems.CARGO_MANAGER, "&cCargo Management", "", LORE), 4, MACHINES_1); + public static final Category TECH_MISC = new Category(new CustomItem(SlimefunItems.HEATING_COIL, "&7Technical Components", "", LORE), 2); + public static final Category MAGIC_ARMOR = new Category(new CustomItem(SlimefunItems.ENDER_HELMET, "&7Magical Armor", "", LORE), 2); + public static final Category TALISMANS_1 = new Category(new CustomItem(Material.EMERALD, "&7Talismans - &aTier I", "", LORE), 2); + public static final LockedCategory TALISMANS_2 = new LockedCategory(new CustomItem(Material.EMERALD, "&7Talismans - &aTier II", "", LORE), 3, TALISMANS_1); + public static final Category TOOLS = new Category(new CustomItem(Material.GOLDEN_PICKAXE, "&7Tools", "", LORE), 1); + + // Seasonal Categories public static final SeasonalCategory CHRISTMAS = new SeasonalCategory(12, 1, new CustomItem(Material.NETHER_STAR, "&aC&ch&ar&ci&as&ct&am&ca&as", "", "&c> Click to help &aSanta")); public static final SeasonalCategory VALENTINES_DAY = new SeasonalCategory(2, 2, new CustomItem(Material.POPPY, "&dValentine's Day", "", "&d> Click to celebrate Love")); public static final SeasonalCategory EASTER = new SeasonalCategory(4, 2, new CustomItem(Material.EGG, "&6Easter", "", "&a> Click to paint some Eggs")); public static final SeasonalCategory BIRTHDAY = new SeasonalCategory(10, 1, new CustomItem(Material.FIREWORK_ROCKET, "&a&lTheBusyBiscuit's Birthday &7(26th October)", "", "&a> Click to celebrate with me")); - private static ItemStack getSkull(String texture) { - try { - return CustomSkull.getItem(texture); - } - catch(Exception x) { - Slimefun.getLogger().log(Level.SEVERE, "An Error occured while initializing the Categories for Slimefun " + Slimefun.getVersion(), x); - - return new ItemStack(Material.PLAYER_HEAD); - } - } } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/Category.java b/src/me/mrCookieSlime/Slimefun/Objects/Category.java index 32f200a74..2a0d0472a 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/Category.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/Category.java @@ -5,7 +5,9 @@ import java.util.Collections; import java.util.Comparator; import java.util.List; +import org.bukkit.inventory.ItemFlag; import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.Lists.Categories; @@ -44,6 +46,11 @@ public class Category { */ public Category(ItemStack item) { this.item = item; + + ItemMeta meta = item.getItemMeta(); + meta.addItemFlags(ItemFlag.HIDE_ATTRIBUTES); + this.item.setItemMeta(meta); + this.items = new ArrayList<>(); this.tier = 3; } From 0961c8bf1a8c9873ecba749dd42e400ccc51208c Mon Sep 17 00:00:00 2001 From: Alex Mercer Date: Mon, 2 Sep 2019 04:43:11 -0700 Subject: [PATCH 156/169] Changed code --- src/me/mrCookieSlime/Slimefun/SlimefunGuide.java | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java b/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java index 440fb8caa..428c9037e 100644 --- a/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java +++ b/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java @@ -716,10 +716,9 @@ public final class SlimefunGuide { index++; } else { - if (Messages.local.getTranslation("messages.item-permission").get(1).isEmpty()) { - menu.addItem(index, new CustomItem(Material.BARRIER, StringUtils.formatItemName(sfitem.getItem(), false), "", Messages.local.getTranslation("messages.item-permission").get(0))); - } else { - menu.addItem(index, new CustomItem(Material.BARRIER, StringUtils.formatItemName(sfitem.getItem(), false), "", Messages.local.getTranslation("messages.item-permission").get(0), Messages.local.getTranslation("messages.item-permission").get(1))); + List list = Messages.local.getTranslation("tooltips.item-permission"); + for (int index1 = 0; index1 < list.size(); index1++) { + menu.addItem(index, new CustomItem(Material.BARRIER, StringUtils.formatItemName(sfitem.getItem(), false), "", list.get(index1))); } menu.addMenuClickHandler(index, (pl, slot, item, action) -> false); index++; From a49877964e9a1d8597b683d7a5694ea326b1401f Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Mon, 2 Sep 2019 23:14:48 +0200 Subject: [PATCH 157/169] Reduced technical debt --- .../Objects/SlimefunItem/SlimefunItem.java | 4 ++ .../abstractItems/AContainer.java | 51 ++++++++------- .../SlimefunItem/abstractItems/AFarm.java | 62 +++---------------- .../abstractItems/AGenerator.java | 38 +++++------- .../SlimefunItem/abstractItems/AReactor.java | 56 ++++++++--------- .../machines/ReactorAccessPort.java | 52 +++++++--------- .../electric/AnimalGrowthAccelerator.java | 25 +++----- .../machines/electric/AutoBreeder.java | 24 +++---- .../machines/electric/CarbonPress.java | 16 ----- .../electric/CropGrowthAccelerator.java | 23 +++---- .../electric/ElectricIngotFactory.java | 15 ----- .../machines/electric/ElectricSmeltery.java | 39 +++++------- .../machines/electric/FoodComposter.java | 16 ----- .../Slimefun/SlimefunPlugin.java | 10 +-- .../androids/ProgrammableAndroid.java | 22 ++----- .../mrCookieSlime/Slimefun/api/Slimefun.java | 2 +- .../Slimefun/api/TickerTask.java | 20 ++++-- .../Slimefun/api/energy/EnergyNet.java | 2 +- .../Slimefun/api/item_transport/CargoNet.java | 8 +-- .../Slimefun/utils/Utilities.java | 2 +- 20 files changed, 178 insertions(+), 309 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java index 53b0ee567..2290ce97d 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java @@ -151,7 +151,10 @@ public class SlimefunItem { * @since 4.1.11, rename of {@link #getName()}. */ public String getID() { return id; } + + @Deprecated public String getHash() { return hash; } + public State getState() { return state; } public ItemStack getItem() { return item; } public Category getCategory() { return category; } @@ -278,6 +281,7 @@ public class SlimefunItem { this.research = r; } + @Deprecated public void setHash(String hash) { this.hash = hash; } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AContainer.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AContainer.java index edaf92cec..f5dbaf470 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AContainer.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AContainer.java @@ -18,9 +18,7 @@ import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.InvUtils; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Objects.Category; -import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason; import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.api.BlockStorage; @@ -45,31 +43,27 @@ public abstract class AContainer extends SlimefunItem implements InventoryBlock createPreset(id, getInventoryTitle(), this::constructMenu); - registerBlockHandler(id, new SlimefunBlockHandler() { - - @Override - public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) { - BlockMenu inv = BlockStorage.getInventory(b); - if (inv != null) { - for (int slot : getInputSlots()) { - if (inv.getItemInSlot(slot) != null) { - b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot)); - inv.replaceExistingItem(slot, null); - } - } - - for (int slot : getOutputSlots()) { - if (inv.getItemInSlot(slot) != null) { - b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot)); - inv.replaceExistingItem(slot, null); - } + registerBlockHandler(id, (p, b, tool, reason) -> { + BlockMenu inv = BlockStorage.getInventory(b); + if (inv != null) { + for (int slot : getInputSlots()) { + if (inv.getItemInSlot(slot) != null) { + b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot)); + inv.replaceExistingItem(slot, null); } } - progress.remove(b); - processing.remove(b); - return true; + for (int slot : getOutputSlots()) { + if (inv.getItemInSlot(slot) != null) { + b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot)); + inv.replaceExistingItem(slot, null); + } + } } + + progress.remove(b); + processing.remove(b); + return true; }); this.registerDefaultRecipes(); @@ -121,6 +115,17 @@ public abstract class AContainer extends SlimefunItem implements InventoryBlock // Override this method to register your machine recipes } + public List getDisplayRecipes() { + List displayRecipes = new ArrayList<>(recipes.size() * 2); + + for (MachineRecipe recipe: recipes) { + displayRecipes.add(recipe.getInput()[0]); + displayRecipes.add(recipe.getOutput()[0]); + } + + return displayRecipes; + } + @Override public int[] getInputSlots() { return new int[] {19, 20}; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AFarm.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AFarm.java index 07452a502..e51053087 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AFarm.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AFarm.java @@ -16,9 +16,7 @@ import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ClickAction; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Objects.Category; -import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason; import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker; import me.mrCookieSlime.Slimefun.api.BlockStorage; import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock; @@ -53,61 +51,17 @@ public abstract class AFarm extends SlimefunItem { } }; - registerBlockHandler(id, new SlimefunBlockHandler() { - - @Override - public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) { - BlockMenu inv = BlockStorage.getInventory(b); - if (inv != null) { - for (int slot : getOutputSlots()) { - if (inv.getItemInSlot(slot) != null) { - b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot)); - inv.replaceExistingItem(slot, null); - } + registerBlockHandler(id, (p, b, tool, reason) -> { + BlockMenu inv = BlockStorage.getInventory(b); + if (inv != null) { + for (int slot : getOutputSlots()) { + if (inv.getItemInSlot(slot) != null) { + b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot)); + inv.replaceExistingItem(slot, null); } } - return true; - } - }); - } - - public AFarm(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe, ItemStack recipeOutput) { - super(category, item, id, recipeType, recipe, recipeOutput); - - new BlockMenuPreset(id, getInventoryTitle()) { - - @Override - public void init() { - constructMenu(this); - } - - @Override - public boolean canOpen(Block b, Player p) { - return p.hasPermission("slimefun.inventory.bypass") || CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true); - } - - @Override - public int[] getSlotsAccessedByItemTransport(ItemTransportFlow flow) { - if (flow == ItemTransportFlow.WITHDRAW) return getOutputSlots(); - return new int[0]; - } - }; - - registerBlockHandler(id, new SlimefunBlockHandler() { - - @Override - public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) { - BlockMenu inv = BlockStorage.getInventory(b); - if (inv != null) { - for (int slot: getOutputSlots()) { - if (inv.getItemInSlot(slot) != null) { - b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot)); - inv.replaceExistingItem(slot, null); - } - } - } - return true; } + return true; }); } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AGenerator.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AGenerator.java index 066a8343a..c1570ff5b 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AGenerator.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AGenerator.java @@ -23,9 +23,7 @@ import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; import me.mrCookieSlime.Slimefun.Objects.Category; -import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.api.BlockStorage; import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock; @@ -67,29 +65,25 @@ public abstract class AGenerator extends SlimefunItem { } }; - registerBlockHandler(id, new SlimefunBlockHandler() { - - @Override - public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) { - BlockMenu inv = BlockStorage.getInventory(b); - if (inv != null) { - for (int slot : getInputSlots()) { - if (inv.getItemInSlot(slot) != null) { - b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot)); - inv.replaceExistingItem(slot, null); - } - } - for (int slot : getOutputSlots()) { - if (inv.getItemInSlot(slot) != null) { - b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot)); - inv.replaceExistingItem(slot, null); - } + registerBlockHandler(id, (p, b, tool, reason) -> { + BlockMenu inv = BlockStorage.getInventory(b); + if (inv != null) { + for (int slot : getInputSlots()) { + if (inv.getItemInSlot(slot) != null) { + b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot)); + inv.replaceExistingItem(slot, null); + } + } + for (int slot : getOutputSlots()) { + if (inv.getItemInSlot(slot) != null) { + b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot)); + inv.replaceExistingItem(slot, null); } } - progress.remove(b.getLocation()); - processing.remove(b.getLocation()); - return true; } + progress.remove(b.getLocation()); + processing.remove(b.getLocation()); + return true; }); this.registerDefaultRecipes(); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AReactor.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AReactor.java index 0db7d9f2a..cbe735c1c 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AReactor.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AReactor.java @@ -26,9 +26,7 @@ import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; import me.mrCookieSlime.Slimefun.Objects.Category; -import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.ReactorAccessPort; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.api.BlockStorage; @@ -138,39 +136,35 @@ public abstract class AReactor extends SlimefunItem { } }; - registerBlockHandler(id, new SlimefunBlockHandler() { - - @Override - public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) { - BlockMenu inv = BlockStorage.getInventory(b); - if (inv != null) { - for (int slot : getFuelSlots()) { - if (inv.getItemInSlot(slot) != null) { - b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot)); - inv.replaceExistingItem(slot, null); - } - } - - for (int slot : getCoolantSlots()) { - if (inv.getItemInSlot(slot) != null) { - b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot)); - inv.replaceExistingItem(slot, null); - } - } - - for (int slot : getOutputSlots()) { - if (inv.getItemInSlot(slot) != null) { - b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot)); - inv.replaceExistingItem(slot, null); - } + registerBlockHandler(id, (p, b, tool, reason) -> { + BlockMenu inv = BlockStorage.getInventory(b); + if (inv != null) { + for (int slot : getFuelSlots()) { + if (inv.getItemInSlot(slot) != null) { + b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot)); + inv.replaceExistingItem(slot, null); } } - progress.remove(b.getLocation()); - processing.remove(b.getLocation()); - ReactorHologram.remove(b.getLocation()); - return true; + for (int slot : getCoolantSlots()) { + if (inv.getItemInSlot(slot) != null) { + b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot)); + inv.replaceExistingItem(slot, null); + } + } + + for (int slot : getOutputSlots()) { + if (inv.getItemInSlot(slot) != null) { + b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot)); + inv.replaceExistingItem(slot, null); + } + } } + + progress.remove(b.getLocation()); + processing.remove(b.getLocation()); + ReactorHologram.remove(b.getLocation()); + return true; }); this.registerDefaultRecipes(); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ReactorAccessPort.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ReactorAccessPort.java index c06ae96b0..fe8432bb9 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ReactorAccessPort.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ReactorAccessPort.java @@ -16,9 +16,7 @@ import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; import me.mrCookieSlime.Slimefun.Objects.Category; -import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AReactor; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.api.BlockStorage; @@ -97,36 +95,32 @@ public class ReactorAccessPort extends SlimefunItem { } }; - registerBlockHandler(name, new SlimefunBlockHandler() { - - @Override - public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) { - BlockMenu inv = BlockStorage.getInventory(b); - - if (inv != null) { - for (int slot : getFuelSlots()) { - if (inv.getItemInSlot(slot) != null) { - b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot)); - inv.replaceExistingItem(slot, null); - } - } - - for (int slot : getCoolantSlots()) { - if (inv.getItemInSlot(slot) != null) { - b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot)); - inv.replaceExistingItem(slot, null); - } - } - - for (int slot : getOutputSlots()) { - if (inv.getItemInSlot(slot) != null) { - b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot)); - inv.replaceExistingItem(slot, null); - } + registerBlockHandler(name, (p, b, tool, reason) -> { + BlockMenu inv = BlockStorage.getInventory(b); + + if (inv != null) { + for (int slot : getFuelSlots()) { + if (inv.getItemInSlot(slot) != null) { + b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot)); + inv.replaceExistingItem(slot, null); + } + } + + for (int slot : getCoolantSlots()) { + if (inv.getItemInSlot(slot) != null) { + b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot)); + inv.replaceExistingItem(slot, null); + } + } + + for (int slot : getOutputSlots()) { + if (inv.getItemInSlot(slot) != null) { + b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot)); + inv.replaceExistingItem(slot, null); } } - return true; } + return true; }); } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AnimalGrowthAccelerator.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AnimalGrowthAccelerator.java index 585cfe0d1..a744672a2 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AnimalGrowthAccelerator.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AnimalGrowthAccelerator.java @@ -8,7 +8,6 @@ import org.bukkit.block.Block; import org.bukkit.entity.Ageable; import org.bukkit.entity.Entity; import org.bukkit.entity.LivingEntity; -import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config; @@ -17,9 +16,7 @@ import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; import me.mrCookieSlime.Slimefun.Objects.Category; -import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason; import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.api.BlockStorage; @@ -38,22 +35,18 @@ public class AnimalGrowthAccelerator extends SlimefunItem implements InventoryBl super(category, item, name, recipeType, recipe); createPreset(getID(), "&bGrowth Accelerator", this::constructMenu); - registerBlockHandler(name, new SlimefunBlockHandler() { - - @Override - public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) { - AnimalGrowthAcceleratorHologram.remove(b); - BlockMenu inv = BlockStorage.getInventory(b); - if (inv != null) { - for (int slot : getInputSlots()) { - if (inv.getItemInSlot(slot) != null) { - b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot)); - inv.replaceExistingItem(slot, null); - } + registerBlockHandler(name, (p, b, tool, reason) -> { + AnimalGrowthAcceleratorHologram.remove(b); + BlockMenu inv = BlockStorage.getInventory(b); + if (inv != null) { + for (int slot : getInputSlots()) { + if (inv.getItemInSlot(slot) != null) { + b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot)); + inv.replaceExistingItem(slot, null); } } - return true; } + return true; }); } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoBreeder.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoBreeder.java index 8c773a8d5..98dac1a58 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoBreeder.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoBreeder.java @@ -18,9 +18,7 @@ import me.mrCookieSlime.CSCoreLibPlugin.general.World.Animals; import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; import me.mrCookieSlime.Slimefun.Objects.Category; -import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason; import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.api.BlockStorage; @@ -57,22 +55,18 @@ public class AutoBreeder extends SlimefunItem { } }; - registerBlockHandler(name, new SlimefunBlockHandler() { - - @Override - public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) { - AutoBreederHologram.remove(b); - BlockMenu inv = BlockStorage.getInventory(b); - if (inv != null) { - for (int slot : getInputSlots()) { - if (inv.getItemInSlot(slot) != null) { - b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot)); - inv.replaceExistingItem(slot, null); - } + registerBlockHandler(name, (p, b, tool, reason) -> { + AutoBreederHologram.remove(b); + BlockMenu inv = BlockStorage.getInventory(b); + if (inv != null) { + for (int slot : getInputSlots()) { + if (inv.getItemInSlot(slot) != null) { + b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot)); + inv.replaceExistingItem(slot, null); } } - return true; } + return true; }); } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/CarbonPress.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/CarbonPress.java index a0e793913..a54508bfe 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/CarbonPress.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/CarbonPress.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.inventory.ItemStack; @@ -11,7 +8,6 @@ import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecipe; import me.mrCookieSlime.Slimefun.utils.RecipeDisplayItem; public abstract class CarbonPress extends AContainer implements RecipeDisplayItem { @@ -29,18 +25,6 @@ public abstract class CarbonPress extends AContainer implements RecipeDisplayIte registerRecipe(60, new ItemStack[] {SlimefunItems.CARBON_CHUNK}, new ItemStack[] {SlimefunItems.SYNTHETIC_DIAMOND}); registerRecipe(90, new ItemStack[] {SlimefunItems.RAW_CARBONADO}, new ItemStack[] {SlimefunItems.CARBONADO}); } - - @Override - public List getDisplayRecipes() { - List displayRecipes = new ArrayList<>(recipes.size() * 2); - - for (MachineRecipe recipe: recipes) { - displayRecipes.add(recipe.getInput()[0]); - displayRecipes.add(recipe.getOutput()[0]); - } - - return displayRecipes; - } @Override public String getMachineIdentifier() { diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/CropGrowthAccelerator.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/CropGrowthAccelerator.java index 856064390..086545974 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/CropGrowthAccelerator.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/CropGrowthAccelerator.java @@ -8,7 +8,6 @@ import org.bukkit.Material; import org.bukkit.Particle; import org.bukkit.block.Block; import org.bukkit.block.data.Ageable; -import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config; @@ -17,9 +16,7 @@ import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; import me.mrCookieSlime.Slimefun.Objects.Category; -import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason; import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.api.BlockStorage; @@ -49,21 +46,17 @@ public abstract class CropGrowthAccelerator extends SlimefunItem implements Inve super(category, item, name, recipeType, recipe); createPreset(getID(), "&bGrowth Accelerator", this::constructMenu); - registerBlockHandler(name, new SlimefunBlockHandler() { - - @Override - public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) { - BlockMenu inv = BlockStorage.getInventory(b); - if (inv != null) { - for (int slot: getInputSlots()) { - if (inv.getItemInSlot(slot) != null) { - b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot)); - inv.replaceExistingItem(slot, null); - } + registerBlockHandler(name, (p, b, tool, reason) -> { + BlockMenu inv = BlockStorage.getInventory(b); + if (inv != null) { + for (int slot: getInputSlots()) { + if (inv.getItemInSlot(slot) != null) { + b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot)); + inv.replaceExistingItem(slot, null); } } - return true; } + return true; }); } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricIngotFactory.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricIngotFactory.java index 2a3b1e7c8..2d52548f3 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricIngotFactory.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricIngotFactory.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.inventory.ItemStack; @@ -32,18 +29,6 @@ public abstract class ElectricIngotFactory extends AContainer implements RecipeD registerRecipe(new MachineRecipe(8, new ItemStack[] {SlimefunItems.ZINC_DUST}, new ItemStack[] {SlimefunItems.ZINC_INGOT})); } - @Override - public List getDisplayRecipes() { - List displayRecipes = new ArrayList<>(recipes.size() * 2); - - for (MachineRecipe recipe: recipes) { - displayRecipes.add(recipe.getInput()[0]); - displayRecipes.add(recipe.getOutput()[0]); - } - - return displayRecipes; - } - @Override public String getMachineIdentifier() { return "ELECTRIC_INGOT_FACTORY"; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricSmeltery.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricSmeltery.java index ab3c0354b..9e8c888f6 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricSmeltery.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricSmeltery.java @@ -16,9 +16,6 @@ import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ClickAction; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Objects.Category; -import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.api.BlockStorage; @@ -82,29 +79,25 @@ public abstract class ElectricSmeltery extends AContainer { } }; - registerBlockHandler(name, new SlimefunBlockHandler() { - - @Override - public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) { - BlockMenu inv = BlockStorage.getInventory(b); - if (inv != null) { - for (int slot : getInputSlots()) { - if (inv.getItemInSlot(slot) != null) { - b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot)); - inv.replaceExistingItem(slot, null); - } - } - for (int slot : getOutputSlots()) { - if (inv.getItemInSlot(slot) != null) { - b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot)); - inv.replaceExistingItem(slot, null); - } + registerBlockHandler(name, (p, b, tool, reason) -> { + BlockMenu inv = BlockStorage.getInventory(b); + if (inv != null) { + for (int slot : getInputSlots()) { + if (inv.getItemInSlot(slot) != null) { + b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot)); + inv.replaceExistingItem(slot, null); + } + } + for (int slot : getOutputSlots()) { + if (inv.getItemInSlot(slot) != null) { + b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot)); + inv.replaceExistingItem(slot, null); } } - progress.remove(b); - processing.remove(b); - return true; } + progress.remove(b); + processing.remove(b); + return true; }); this.registerDefaultRecipes(); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/FoodComposter.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/FoodComposter.java index ca225bd0d..1559e9f31 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/FoodComposter.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/FoodComposter.java @@ -1,15 +1,11 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric; -import java.util.ArrayList; -import java.util.List; - import org.bukkit.inventory.ItemStack; import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecipe; import me.mrCookieSlime.Slimefun.utils.RecipeDisplayItem; public abstract class FoodComposter extends AContainer implements RecipeDisplayItem { @@ -29,18 +25,6 @@ public abstract class FoodComposter extends AContainer implements RecipeDisplayI registerRecipe(30, new ItemStack[] {SlimefunItems.APPLE_ORGANIC_FOOD}, new ItemStack[] {SlimefunItems.APPLE_FERTILIZER}); } - @Override - public List getDisplayRecipes() { - List displayRecipes = new ArrayList<>(recipes.size() * 2); - - for (MachineRecipe recipe: recipes) { - displayRecipes.add(recipe.getInput()[0]); - displayRecipes.add(recipe.getOutput()[0]); - } - - return displayRecipes; - } - @Override public String getMachineIdentifier() { return "FOOD_COMPOSTER"; diff --git a/src/me/mrCookieSlime/Slimefun/SlimefunPlugin.java b/src/me/mrCookieSlime/Slimefun/SlimefunPlugin.java index 94cedb005..cbdbf5163 100644 --- a/src/me/mrCookieSlime/Slimefun/SlimefunPlugin.java +++ b/src/me/mrCookieSlime/Slimefun/SlimefunPlugin.java @@ -46,7 +46,6 @@ import me.mrCookieSlime.Slimefun.api.SlimefunBackup; import me.mrCookieSlime.Slimefun.api.TickerTask; import me.mrCookieSlime.Slimefun.api.energy.ItemEnergy; import me.mrCookieSlime.Slimefun.api.inventory.UniversalBlockMenu; -import me.mrCookieSlime.Slimefun.api.item_transport.CargoNet; import me.mrCookieSlime.Slimefun.autosave.BlockAutoSaver; import me.mrCookieSlime.Slimefun.autosave.PlayerAutoSaver; import me.mrCookieSlime.Slimefun.commands.SlimefunCommand; @@ -86,7 +85,7 @@ public final class SlimefunPlugin extends JavaPlugin { private Config whitelist; private Config config; - public GPSNetwork gps = new GPSNetwork(); + private final GPSNetwork gps = new GPSNetwork(); private ProtectionManager protections; private Utilities utilities = new Utilities(); private Settings settings; @@ -331,7 +330,7 @@ public final class SlimefunPlugin extends JavaPlugin { if (ticker != null) { // Finishes all started movements/removals of block data - ticker.halted = true; + ticker.halt(); ticker.run(); } @@ -369,7 +368,6 @@ public final class SlimefunPlugin extends JavaPlugin { SlimefunItem.mapID = null; AContainer.processing = null; AContainer.progress = null; - CargoNet.faces = null; OreWasher.items = null; instance = null; @@ -412,6 +410,10 @@ public final class SlimefunPlugin extends JavaPlugin { return CSCoreLib.randomizer().nextInt(max) <= percentage; } + public GPSNetwork getGPS() { + return gps; + } + public static SlimefunHooks getHooks() { return instance.hooks; } diff --git a/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java b/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java index 924bf8604..f5ad6c723 100644 --- a/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java +++ b/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java @@ -531,16 +531,9 @@ public abstract class ProgrammableAndroid extends SlimefunItem { 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); - Rotatable blockData = (Rotatable) block.getBlockData(); - blockData.setRotation(face.getOppositeFace()); - block.setBlockData(blockData); - try { - CustomSkull.setSkull(block, CustomSkull.getTexture(getItem())); - } catch (Exception x) { - Slimefun.getLogger().log(Level.SEVERE, "An Error occured while moving an Android for Slimefun " + Slimefun.getVersion(), x); - } + block.setType(Material.AIR); + move(b, face, block); b.setType(Material.AIR); BlockStorage.moveBlockInfo(b.getLocation(), block.getLocation()); @@ -551,16 +544,9 @@ public abstract class ProgrammableAndroid extends SlimefunItem { if (fits(b, items)) { pushItems(b, items); block.getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, block.getType()); - block.setType(Material.PLAYER_HEAD); - Rotatable blockData = (Rotatable) block.getBlockData(); - blockData.setRotation(face.getOppositeFace()); - block.setBlockData(blockData); - try { - CustomSkull.setSkull(block, CustomSkull.getTexture(getItem())); - } catch (Exception x) { - Slimefun.getLogger().log(Level.SEVERE, "An Error occured while moving an Android for Slimefun " + Slimefun.getVersion(), x); - } + block.setType(Material.AIR); + move(b, face, block); b.setType(Material.AIR); BlockStorage.moveBlockInfo(b.getLocation(), block.getLocation()); diff --git a/src/me/mrCookieSlime/Slimefun/api/Slimefun.java b/src/me/mrCookieSlime/Slimefun/api/Slimefun.java index 5a993b58d..4afb7deb0 100644 --- a/src/me/mrCookieSlime/Slimefun/api/Slimefun.java +++ b/src/me/mrCookieSlime/Slimefun/api/Slimefun.java @@ -39,7 +39,7 @@ public final class Slimefun { * @return the GPSNetwork instance. */ public static GPSNetwork getGPSNetwork() { - return SlimefunPlugin.instance.gps; + return SlimefunPlugin.instance.getGPS(); } public static Logger getLogger() { diff --git a/src/me/mrCookieSlime/Slimefun/api/TickerTask.java b/src/me/mrCookieSlime/Slimefun/api/TickerTask.java index 1e19f844a..261120a65 100644 --- a/src/me/mrCookieSlime/Slimefun/api/TickerTask.java +++ b/src/me/mrCookieSlime/Slimefun/api/TickerTask.java @@ -24,11 +24,11 @@ import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker; public class TickerTask implements Runnable { - public boolean halted = false; + private boolean halted = false; - public Map move = new HashMap<>(); - public Map delete = new HashMap<>(); - public Map blockTimings = new HashMap<>(); + protected Map move = new HashMap<>(); + protected Map delete = new HashMap<>(); + protected Map blockTimings = new HashMap<>(); private Set tickers = new HashSet<>(); @@ -285,6 +285,18 @@ public class TickerTask implements Runnable { public long getTimings(Chunk c) { return chunkTimings.containsKey(c.toString()) ? chunkTimings.get(c.toString()): 0L; } + + public void addBlockTimings(Location l, long time) { + blockTimings.put(l, time); + } + + public boolean isHalted() { + return halted; + } + + public void halt() { + halted = true; + } @Override public String toString() { diff --git a/src/me/mrCookieSlime/Slimefun/api/energy/EnergyNet.java b/src/me/mrCookieSlime/Slimefun/api/energy/EnergyNet.java index 8819f161f..0df5f304e 100644 --- a/src/me/mrCookieSlime/Slimefun/api/energy/EnergyNet.java +++ b/src/me/mrCookieSlime/Slimefun/api/energy/EnergyNet.java @@ -145,7 +145,7 @@ public class EnergyNet extends Network { else { supply = supply + energy; } - SlimefunPlugin.getTicker().blockTimings.put(source, System.currentTimeMillis() - timestamp); + SlimefunPlugin.getTicker().addBlockTimings(source, System.currentTimeMillis() - timestamp); } input.removeAll(exploded); diff --git a/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoNet.java b/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoNet.java index c51eae9a6..fa9cac3dc 100644 --- a/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoNet.java +++ b/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoNet.java @@ -1,7 +1,6 @@ package me.mrCookieSlime.Slimefun.api.item_transport; import java.util.ArrayList; -import java.util.Arrays; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; @@ -15,7 +14,6 @@ import org.bukkit.ChatColor; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.block.Block; -import org.bukkit.block.BlockFace; import org.bukkit.block.data.Directional; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.InventoryHolder; @@ -40,14 +38,14 @@ public class CargoNet extends Network { public static boolean extraChannels = false; private static final int RANGE = 5; - public static List faces = Arrays.asList(BlockFace.NORTH, BlockFace.EAST, BlockFace.SOUTH, BlockFace.WEST); private static final int[] slots = new int[] {19, 20, 21, 28, 29, 30, 37, 38, 39}; // Chest Terminal Stuff - private static final ChestTerminalSorter sorter = new ChestTerminalSorter(); public static final int[] terminal_slots = new int[] {0, 1, 2, 3, 4, 5, 6, 9, 10, 11, 12, 13, 14, 15, 18, 19, 20, 21, 22, 23, 24, 27, 28, 29, 30, 31, 32, 33, 36, 37, 38, 39, 40, 41, 42}; - private static final int TERMINAL_OUT_SLOT = 17; + public static final int TERMINAL_OUT_SLOT = 17; + + private static final ChestTerminalSorter sorter = new ChestTerminalSorter(); private static final ItemStack terminal_noitem_item = new CustomItem(new ItemStack(Material.BARRIER), "&4No Item cached"); private static final MenuClickHandler terminal_noitem_handler = (p, slot, item, action) -> false; diff --git a/src/me/mrCookieSlime/Slimefun/utils/Utilities.java b/src/me/mrCookieSlime/Slimefun/utils/Utilities.java index 9a118a67d..9117f25c9 100644 --- a/src/me/mrCookieSlime/Slimefun/utils/Utilities.java +++ b/src/me/mrCookieSlime/Slimefun/utils/Utilities.java @@ -42,7 +42,7 @@ import me.mrCookieSlime.Slimefun.hooks.github.GitHubConnector; public final class Utilities { public int vanillaItems = 0; - + public final Set radioactiveItems = new HashSet<>(); public final Map> itemHandlers = new HashMap<>(); public final Map blockHandlers = new HashMap<>(); From b694c9edac6422101d8e2db40496141609900f43 Mon Sep 17 00:00:00 2001 From: Alex Mercer Date: Tue, 3 Sep 2019 01:51:20 -0700 Subject: [PATCH 158/169] Changed code again --- src/me/mrCookieSlime/Slimefun/SlimefunGuide.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java b/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java index 428c9037e..ffc0a66db 100644 --- a/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java +++ b/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java @@ -717,9 +717,11 @@ public final class SlimefunGuide { } else { List list = Messages.local.getTranslation("tooltips.item-permission"); - for (int index1 = 0; index1 < list.size(); index1++) { - menu.addItem(index, new CustomItem(Material.BARRIER, StringUtils.formatItemName(sfitem.getItem(), false), "", list.get(index1))); - } + StringBuilder sb = new StringBuilder(65536); + for (String strings : list) { + sb.append("\n" + strings); + menu.addItem(index, new CustomItem(Material.BARRIER, StringUtils.formatItemName(sfitem.getItem(), false), "", sb.toString())); + } menu.addMenuClickHandler(index, (pl, slot, item, action) -> false); index++; } From 4282bfee5d5c504fb6535f528d2facf06a63deaa Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Tue, 3 Sep 2019 13:06:24 +0200 Subject: [PATCH 159/169] Reduced technical debt --- pom.xml | 2 +- .../Slimefun/GEO/OreGenResource.java | 16 +- .../Slimefun/Objects/MultiBlock.java | 16 +- .../Slimefun/Objects/Research.java | 18 +- .../Objects/SlimefunItem/EnhancedFurnace.java | 43 ++-- .../Objects/SlimefunItem/ExcludedBlock.java | 2 +- .../Objects/SlimefunItem/ExcludedGadget.java | 2 +- .../SlimefunItem/ExcludedSoulboundTool.java | 2 +- .../Objects/SlimefunItem/ExcludedTool.java | 2 +- .../SlimefunItem/Interfaces/NotPlaceable.java | 5 - .../Objects/SlimefunItem/SlimefunGadget.java | 2 +- .../Objects/SlimefunItem/SlimefunItem.java | 13 +- .../Objects/SlimefunItem/SlimefunMachine.java | 2 +- .../abstractItems/AContainer.java | 4 +- .../interfaces}/DamageableItem.java | 2 +- .../interfaces}/InventoryBlock.java | 10 +- .../SlimefunItem/interfaces/NotPlaceable.java | 5 + .../interfaces}/RecipeDisplayItem.java | 2 +- .../SlimefunItem/items/ExplosivePickaxe.java | 4 +- .../SlimefunItem/items/ExplosiveShovel.java | 4 +- .../items/PickaxeOfTheSeeker.java | 2 +- .../SlimefunItem/items/SeismicAxe.java | 4 +- .../SlimefunItem/items/SwordOfBeheading.java | 83 +++++++ .../SlimefunItem/machines/TrashCan.java | 4 +- .../SlimefunItem/machines/XPCollector.java | 4 +- .../electric/AnimalGrowthAccelerator.java | 4 +- .../machines/electric/AutoBreeder.java | 32 +-- .../machines/electric/AutoDrier.java | 2 +- .../electric/AutomatedCraftingChamber.java | 2 +- .../machines/electric/CarbonPress.java | 2 +- .../electric/CropGrowthAccelerator.java | 7 +- .../machines/electric/ElectricGoldPan.java | 2 +- .../electric/ElectricIngotFactory.java | 2 +- .../electric/ElectricIngotPulverizer.java | 2 +- .../machines/electric/FluidPump.java | 10 +- .../machines/electric/FoodComposter.java | 2 +- .../machines/electric/Freezer.java | 2 +- .../machines/electric/Refinery.java | 2 +- .../Objects/handlers/EntityKillHandler.java | 16 ++ .../Slimefun/Setup/SlimefunSetup.java | 3 +- .../mrCookieSlime/Slimefun/SlimefunGuide.java | 2 +- .../Slimefun/SlimefunPlugin.java | 5 - .../androids/ProgrammableAndroid.java | 203 ++++++------------ .../Slimefun/listeners/DamageListener.java | 66 ++---- .../Slimefun/listeners/ItemListener.java | 15 +- .../Slimefun/listeners/ToolListener.java | 2 +- .../Slimefun/utils/Utilities.java | 8 + 47 files changed, 317 insertions(+), 327 deletions(-) delete mode 100644 src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/Interfaces/NotPlaceable.java rename src/me/mrCookieSlime/Slimefun/{utils => Objects/SlimefunItem/interfaces}/DamageableItem.java (93%) rename src/me/mrCookieSlime/Slimefun/{utils => Objects/SlimefunItem/interfaces}/InventoryBlock.java (78%) create mode 100644 src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/interfaces/NotPlaceable.java rename src/me/mrCookieSlime/Slimefun/{utils => Objects/SlimefunItem/interfaces}/RecipeDisplayItem.java (71%) create mode 100644 src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/SwordOfBeheading.java create mode 100644 src/me/mrCookieSlime/Slimefun/Objects/handlers/EntityKillHandler.java diff --git a/pom.xml b/pom.xml index 4455ca9ce..19336b0a1 100644 --- a/pom.xml +++ b/pom.xml @@ -124,7 +124,7 @@ com.github.thebusybiscuit CS-CoreLib2 - 0.3.10 + 0.3.11 compile diff --git a/src/me/mrCookieSlime/Slimefun/GEO/OreGenResource.java b/src/me/mrCookieSlime/Slimefun/GEO/OreGenResource.java index daf92475a..71e50e7c0 100644 --- a/src/me/mrCookieSlime/Slimefun/GEO/OreGenResource.java +++ b/src/me/mrCookieSlime/Slimefun/GEO/OreGenResource.java @@ -5,16 +5,24 @@ import org.bukkit.inventory.ItemStack; public interface OreGenResource { - // Returns the default supply of this resource in that biome + /** + * Returns the default supply of this resource in that biome + */ int getDefaultSupply(Biome biome); - // Name/ID e.g. "Oil" + /** + * Name/ID e.g. "Oil" + */ String getName(); - // For the GEO-Scanner + /** + * For the GEO-Scanner + */ ItemStack getIcon(); - // Measurement Unit e.g. "Buckets" + /** + * Measurement Unit e.g. "Buckets" + */ String getMeasurementUnit(); } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/MultiBlock.java b/src/me/mrCookieSlime/Slimefun/Objects/MultiBlock.java index 988d37656..d1630e1a4 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/MultiBlock.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/MultiBlock.java @@ -1,18 +1,16 @@ package me.mrCookieSlime.Slimefun.Objects; -import java.util.ArrayList; import java.util.List; -import me.mrCookieSlime.CSCoreLibPlugin.compatibility.MaterialHelper; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunMachine; - import org.bukkit.Material; +import me.mrCookieSlime.CSCoreLibPlugin.compatibility.MaterialHelper; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunMachine; + public class MultiBlock { - public static List list = new ArrayList<>(); - private Material[] blocks; private Material trigger; @@ -30,11 +28,11 @@ public class MultiBlock { } public void register() { - list.add(this); + SlimefunPlugin.getUtilities().allMultiblocks.add(this); } public static List list() { - return list; + return SlimefunPlugin.getUtilities().allMultiblocks; } public boolean isMultiBlock(SlimefunItem machine) { diff --git a/src/me/mrCookieSlime/Slimefun/Objects/Research.java b/src/me/mrCookieSlime/Slimefun/Objects/Research.java index 19f048602..8392cee84 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/Research.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/Research.java @@ -3,7 +3,6 @@ package me.mrCookieSlime.Slimefun.Objects; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; -import java.util.LinkedList; import java.util.List; import java.util.Set; import java.util.UUID; @@ -40,13 +39,6 @@ import me.mrCookieSlime.Slimefun.api.Slimefun; public class Research { private static final int[] research_progress = {23, 44, 57, 92}; - - /** - * Contains all the registered researches; - * @since 4.0 - * @see ResearchSetup - */ - public static List list = new LinkedList<>(); private int id; private String name; @@ -116,7 +108,7 @@ public class Research { */ @Deprecated public int getLevel() { - return cost; + return getCost(); } /** @@ -129,7 +121,7 @@ public class Research { */ @Deprecated public void setLevel(int level) { - this.cost = level; + setCost(level); } /** @@ -303,7 +295,7 @@ public class Research { this.cost = SlimefunPlugin.getResearchCfg().getInt(this.getID() + ".cost"); this.enabled = SlimefunPlugin.getResearchCfg().getBoolean(this.getID() + ".enabled"); - list.add(this); + SlimefunPlugin.getUtilities().allResearches.add(this); if (SlimefunPlugin.getSettings().printOutLoading) { Slimefun.getLogger().log(Level.INFO, "Loaded Research \"" + this.getName() + "\""); } @@ -318,7 +310,7 @@ public class Research { * @see ResearchSetup */ public static List list() { - return list; + return SlimefunPlugin.getUtilities().allResearches; } /** @@ -388,7 +380,7 @@ public class Research { * @since 4.0 */ public static Research getByID(int id) { - for (Research research: list) { + for (Research research: list()) { if (research.getID() == id) return research; } return null; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/EnhancedFurnace.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/EnhancedFurnace.java index be3a6c28e..b01620841 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/EnhancedFurnace.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/EnhancedFurnace.java @@ -12,7 +12,7 @@ import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker; import me.mrCookieSlime.Slimefun.api.BlockStorage; -public class EnhancedFurnace extends SlimefunItem { +public class EnhancedFurnace extends SimpleSlimefunItem { private int speed; private int efficiency; @@ -24,8 +24,27 @@ public class EnhancedFurnace extends SlimefunItem { this.speed = speed - 1; this.efficiency = efficiency - 1; this.fortune = fortune - 1; - - addItemHandler(new BlockTicker() { + } + + public int getSpeed() { + return speed; + } + + public int getFuelEfficiency() { + return efficiency; + } + + public int getOutput() { + int fortune = this.fortune; + fortune = new Random().nextInt(fortune + 2) - 1; + if (fortune <= 0) fortune = 0; + fortune++; + return fortune; + } + + @Override + public BlockTicker getItemHandler() { + return new BlockTicker() { @Override public void tick(Block b, SlimefunItem item, Config data) { @@ -49,22 +68,6 @@ public class EnhancedFurnace extends SlimefunItem { public boolean isSynchronized() { return true; } - }); - } - - public int getSpeed() { - return speed; - } - - public int getFuelEfficiency() { - return efficiency; - } - - public int getOutput() { - int fortune = this.fortune; - fortune = new Random().nextInt(fortune + 2) - 1; - if (fortune <= 0) fortune = 0; - fortune++; - return fortune; + }; } } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/ExcludedBlock.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/ExcludedBlock.java index 8a75fee13..c20512b9a 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/ExcludedBlock.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/ExcludedBlock.java @@ -4,7 +4,7 @@ import org.bukkit.inventory.ItemStack; import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Objects.Category; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.Interfaces.NotPlaceable; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.NotPlaceable; public class ExcludedBlock extends SlimefunItem implements NotPlaceable { diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/ExcludedGadget.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/ExcludedGadget.java index 6bd151202..1a35ecc55 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/ExcludedGadget.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/ExcludedGadget.java @@ -4,7 +4,7 @@ import org.bukkit.inventory.ItemStack; import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Objects.Category; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.Interfaces.NotPlaceable; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.NotPlaceable; public class ExcludedGadget extends SlimefunGadget implements NotPlaceable { diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/ExcludedSoulboundTool.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/ExcludedSoulboundTool.java index 8be575860..120ab916f 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/ExcludedSoulboundTool.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/ExcludedSoulboundTool.java @@ -4,7 +4,7 @@ import org.bukkit.inventory.ItemStack; import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Objects.Category; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.Interfaces.NotPlaceable; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.NotPlaceable; public class ExcludedSoulboundTool extends SoulboundItem implements NotPlaceable { diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/ExcludedTool.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/ExcludedTool.java index 6f2e49c7d..06dba6a1e 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/ExcludedTool.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/ExcludedTool.java @@ -4,7 +4,7 @@ import org.bukkit.inventory.ItemStack; import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Objects.Category; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.Interfaces.NotPlaceable; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.NotPlaceable; public class ExcludedTool extends SlimefunItem implements NotPlaceable { diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/Interfaces/NotPlaceable.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/Interfaces/NotPlaceable.java deleted file mode 100644 index 41c515d34..000000000 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/Interfaces/NotPlaceable.java +++ /dev/null @@ -1,5 +0,0 @@ -package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.Interfaces; - -public interface NotPlaceable { - -} diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunGadget.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunGadget.java index afff7f633..26da5ca11 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunGadget.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunGadget.java @@ -7,7 +7,7 @@ import org.bukkit.inventory.ItemStack; import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Objects.Category; -import me.mrCookieSlime.Slimefun.utils.RecipeDisplayItem; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.RecipeDisplayItem; public class SlimefunGadget extends SlimefunItem implements RecipeDisplayItem { diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java index 2290ce97d..b6f07219e 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java @@ -2,10 +2,8 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem; import java.util.ArrayList; import java.util.Arrays; -import java.util.HashMap; import java.util.HashSet; import java.util.List; -import java.util.Map; import java.util.Set; import java.util.logging.Level; @@ -37,7 +35,6 @@ import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu; public class SlimefunItem { public static List items = new ArrayList<>(); - public static Map mapID = new HashMap<>(); public static List all = new ArrayList<>(); private String id; @@ -208,7 +205,9 @@ public class SlimefunItem { public void register(boolean slimefun) { this.addon = !slimefun; try { - if (mapID.containsKey(this.id)) throw new IllegalArgumentException("ID \"" + this.id + "\" already exists"); + if (SlimefunPlugin.getUtilities().itemIDs.containsKey(this.id)) { + throw new IllegalArgumentException("ID \"" + this.id + "\" already exists"); + } if (this.recipe.length < 9) this.recipe = new ItemStack[] {null, null, null, null, null, null, null, null, null}; all.add(this); @@ -247,7 +246,7 @@ public class SlimefunItem { this.permission = SlimefunPlugin.getItemCfg().getString(this.id + ".required-permission"); items.add(this); if (slimefun) SlimefunPlugin.getUtilities().vanillaItems++; - mapID.put(this.id, this); + SlimefunPlugin.getUtilities().itemIDs.put(this.id, this); create(); @@ -312,14 +311,14 @@ public class SlimefunItem { */ @Deprecated public static SlimefunItem getByName(String name) { - return mapID.get(name); + return getByID(name); } /** * @since 4.1.11, rename of {@link #getByName(String)}. */ public static SlimefunItem getByID(String id) { - return mapID.get(id); + return SlimefunPlugin.getUtilities().itemIDs.get(id); } public static SlimefunItem getByItem(ItemStack item) { diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunMachine.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunMachine.java index 70be933dc..a986a7245 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunMachine.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunMachine.java @@ -11,7 +11,7 @@ import org.bukkit.inventory.ItemStack; import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.MultiBlock; -import me.mrCookieSlime.Slimefun.utils.RecipeDisplayItem; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.RecipeDisplayItem; public class SlimefunMachine extends SlimefunItem implements RecipeDisplayItem { diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AContainer.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AContainer.java index f5dbaf470..31924ee9f 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AContainer.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AContainer.java @@ -19,13 +19,13 @@ import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.InventoryBlock; import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.api.BlockStorage; import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset; -import me.mrCookieSlime.Slimefun.utils.InventoryBlock; public abstract class AContainer extends SlimefunItem implements InventoryBlock { @@ -41,7 +41,7 @@ public abstract class AContainer extends SlimefunItem implements InventoryBlock public AContainer(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe) { super(category, item, id, recipeType, recipe); - createPreset(id, getInventoryTitle(), this::constructMenu); + createPreset(this, getInventoryTitle(), this::constructMenu); registerBlockHandler(id, (p, b, tool, reason) -> { BlockMenu inv = BlockStorage.getInventory(b); diff --git a/src/me/mrCookieSlime/Slimefun/utils/DamageableItem.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/interfaces/DamageableItem.java similarity index 93% rename from src/me/mrCookieSlime/Slimefun/utils/DamageableItem.java rename to src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/interfaces/DamageableItem.java index 2e0db06d2..0c0ace468 100644 --- a/src/me/mrCookieSlime/Slimefun/utils/DamageableItem.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/interfaces/DamageableItem.java @@ -1,4 +1,4 @@ -package me.mrCookieSlime.Slimefun.utils; +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces; import org.bukkit.Material; import org.bukkit.enchantments.Enchantment; diff --git a/src/me/mrCookieSlime/Slimefun/utils/InventoryBlock.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/interfaces/InventoryBlock.java similarity index 78% rename from src/me/mrCookieSlime/Slimefun/utils/InventoryBlock.java rename to src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/interfaces/InventoryBlock.java index d405afe8b..b6dddcef2 100644 --- a/src/me/mrCookieSlime/Slimefun/utils/InventoryBlock.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/interfaces/InventoryBlock.java @@ -1,4 +1,4 @@ -package me.mrCookieSlime.Slimefun.utils; +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces; import java.util.function.Consumer; @@ -13,7 +13,9 @@ import io.github.thebusybiscuit.cscorelib2.protection.ProtectionModule.Action; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; import me.mrCookieSlime.CSCoreLibPlugin.general.Math.Calculator; import me.mrCookieSlime.Slimefun.SlimefunPlugin; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.api.BlockStorage; +import me.mrCookieSlime.Slimefun.api.Slimefun; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset; import me.mrCookieSlime.Slimefun.api.item_transport.ItemTransportFlow; @@ -22,8 +24,8 @@ public interface InventoryBlock { int[] getInputSlots(); int[] getOutputSlots(); - default void createPreset(String id, String title, Consumer setup) { - new BlockMenuPreset(id, title) { + default void createPreset(SlimefunItem item, String title, Consumer setup) { + new BlockMenuPreset(item.getID(), title) { @Override public void init() { @@ -38,7 +40,7 @@ public interface InventoryBlock { @Override public boolean canOpen(Block b, Player p) { - return p.hasPermission("slimefun.inventory.bypass") || SlimefunPlugin.getProtectionManager().hasPermission(p, b.getLocation(), Action.ACCESS_INVENTORIES); + return p.hasPermission("slimefun.inventory.bypass") || (SlimefunPlugin.getProtectionManager().hasPermission(p, b.getLocation(), Action.ACCESS_INVENTORIES) && Slimefun.hasUnlocked(p, item, false)); } }; } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/interfaces/NotPlaceable.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/interfaces/NotPlaceable.java new file mode 100644 index 000000000..e06465fac --- /dev/null +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/interfaces/NotPlaceable.java @@ -0,0 +1,5 @@ +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces; + +public interface NotPlaceable { + +} diff --git a/src/me/mrCookieSlime/Slimefun/utils/RecipeDisplayItem.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/interfaces/RecipeDisplayItem.java similarity index 71% rename from src/me/mrCookieSlime/Slimefun/utils/RecipeDisplayItem.java rename to src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/interfaces/RecipeDisplayItem.java index bfdde8001..a52363b7f 100644 --- a/src/me/mrCookieSlime/Slimefun/utils/RecipeDisplayItem.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/interfaces/RecipeDisplayItem.java @@ -1,4 +1,4 @@ -package me.mrCookieSlime.Slimefun.utils; +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces; import java.util.List; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/ExplosivePickaxe.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/ExplosivePickaxe.java index a10c77c78..9e3f8a116 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/ExplosivePickaxe.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/ExplosivePickaxe.java @@ -19,12 +19,12 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.HandledBlock; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SimpleSlimefunItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.Interfaces.NotPlaceable; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.DamageableItem; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.NotPlaceable; import me.mrCookieSlime.Slimefun.Objects.handlers.BlockBreakHandler; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.api.BlockStorage; import me.mrCookieSlime.Slimefun.api.Slimefun; -import me.mrCookieSlime.Slimefun.utils.DamageableItem; public class ExplosivePickaxe extends SimpleSlimefunItem implements NotPlaceable, DamageableItem { diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/ExplosiveShovel.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/ExplosiveShovel.java index 77e453fc7..69b2c432e 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/ExplosiveShovel.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/ExplosiveShovel.java @@ -13,11 +13,11 @@ import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SimpleSlimefunItem; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.Interfaces.NotPlaceable; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.DamageableItem; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.NotPlaceable; import me.mrCookieSlime.Slimefun.Objects.handlers.BlockBreakHandler; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.api.Slimefun; -import me.mrCookieSlime.Slimefun.utils.DamageableItem; public class ExplosiveShovel extends SimpleSlimefunItem implements NotPlaceable, DamageableItem { diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/PickaxeOfTheSeeker.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/PickaxeOfTheSeeker.java index 712e9d874..39db089c7 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/PickaxeOfTheSeeker.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/PickaxeOfTheSeeker.java @@ -7,10 +7,10 @@ import org.bukkit.inventory.ItemStack; 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.interfaces.DamageableItem; import me.mrCookieSlime.Slimefun.Objects.handlers.ItemInteractionHandler; import me.mrCookieSlime.Slimefun.Setup.Messages; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; -import me.mrCookieSlime.Slimefun.utils.DamageableItem; public class PickaxeOfTheSeeker extends SimpleSlimefunItem implements DamageableItem { diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/SeismicAxe.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/SeismicAxe.java index d24641b4b..9c1d5b67e 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/SeismicAxe.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/SeismicAxe.java @@ -21,10 +21,10 @@ import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SimpleSlimefunItem; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.Interfaces.NotPlaceable; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.DamageableItem; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.NotPlaceable; import me.mrCookieSlime.Slimefun.Objects.handlers.ItemInteractionHandler; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; -import me.mrCookieSlime.Slimefun.utils.DamageableItem; public class SeismicAxe extends SimpleSlimefunItem implements NotPlaceable, DamageableItem { diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/SwordOfBeheading.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/SwordOfBeheading.java new file mode 100644 index 000000000..dae0619fe --- /dev/null +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/SwordOfBeheading.java @@ -0,0 +1,83 @@ +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items; + +import java.util.Random; + +import org.bukkit.Material; +import org.bukkit.entity.Creeper; +import org.bukkit.entity.Player; +import org.bukkit.entity.Skeleton; +import org.bukkit.entity.WitherSkeleton; +import org.bukkit.entity.Zombie; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; +import org.bukkit.inventory.meta.SkullMeta; + +import me.mrCookieSlime.Slimefun.Lists.RecipeType; +import me.mrCookieSlime.Slimefun.Objects.Category; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SimpleSlimefunItem; +import me.mrCookieSlime.Slimefun.Objects.handlers.EntityKillHandler; +import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; +import me.mrCookieSlime.Slimefun.api.Slimefun; + +public class SwordOfBeheading extends SimpleSlimefunItem { + + private final Random random = new Random(); + + private int chanceZombie; + private int chanceSkeleton; + private int chanceCreeper; + private int chanceWitherSkeleton; + private int chancePlayer; + + public SwordOfBeheading(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe, String[] keys, Object[] values) { + super(category, item, id, recipeType, recipe, keys, values); + } + + @Override + public EntityKillHandler getItemHandler() { + return (e, entity, killer, item) -> { + if (SlimefunManager.isItemSimiliar(item, getItem(), true)) { + if (e.getEntity() instanceof Zombie) { + if (random.nextInt(100) < chanceZombie) { + e.getDrops().add(new ItemStack(Material.ZOMBIE_HEAD)); + } + } + else if (e.getEntity() instanceof WitherSkeleton) { + if (random.nextInt(100) < chanceWitherSkeleton) + e.getDrops().add(new ItemStack(Material.WITHER_SKELETON_SKULL)); + } + else if (e.getEntity() instanceof Skeleton) { + if (random.nextInt(100) < chanceSkeleton) + e.getDrops().add(new ItemStack(Material.SKELETON_SKULL)); + } + else if (e.getEntity() instanceof Creeper) { + if (random.nextInt(100) < chanceCreeper) { + e.getDrops().add(new ItemStack(Material.CREEPER_HEAD)); + } + } + else if (e.getEntity() instanceof Player) { + if (random.nextInt(100) < chancePlayer) { + ItemStack skull = new ItemStack(Material.PLAYER_HEAD); + ItemMeta meta = skull.getItemMeta(); + ((SkullMeta) meta).setOwningPlayer((Player) e.getEntity()); + skull.setItemMeta(meta); + + e.getDrops().add(skull); + } + } + return true; + } + else return false; + }; + } + + @Override + public void postRegister() { + chanceZombie = (int) Slimefun.getItemValue("SWORD_OF_BEHEADING", "chance.ZOMBIE"); + chanceSkeleton = (int) Slimefun.getItemValue("SWORD_OF_BEHEADING", "chance.SKELETON"); + chanceCreeper = (int) Slimefun.getItemValue("SWORD_OF_BEHEADING", "chance.CREEPER"); + chanceWitherSkeleton = (int) Slimefun.getItemValue("SWORD_OF_BEHEADING", "chance.WITHER_SKELETON"); + chancePlayer = (int) Slimefun.getItemValue("SWORD_OF_BEHEADING", "chance.PLAYER"); + } + +} diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/TrashCan.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/TrashCan.java index 253c3ab13..fe77c876f 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/TrashCan.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/TrashCan.java @@ -9,11 +9,11 @@ import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.InventoryBlock; import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker; import me.mrCookieSlime.Slimefun.api.BlockStorage; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset; -import me.mrCookieSlime.Slimefun.utils.InventoryBlock; public class TrashCan extends SlimefunItem implements InventoryBlock { @@ -21,7 +21,7 @@ public class TrashCan extends SlimefunItem implements InventoryBlock { public TrashCan(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) { super(category, item, name, recipeType, recipe); - createPreset(getID(), "&4Trash Can", this::constructMenu); + createPreset(this, "&4Trash Can", this::constructMenu); } private void constructMenu(BlockMenuPreset preset) { diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/XPCollector.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/XPCollector.java index d1cb51de8..768176a42 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/XPCollector.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/XPCollector.java @@ -17,6 +17,7 @@ import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.InventoryBlock; import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker; import me.mrCookieSlime.Slimefun.api.BlockStorage; import me.mrCookieSlime.Slimefun.api.Slimefun; @@ -24,7 +25,6 @@ import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset; import me.mrCookieSlime.Slimefun.holograms.XPCollectorHologram; -import me.mrCookieSlime.Slimefun.utils.InventoryBlock; public class XPCollector extends SlimefunItem implements InventoryBlock { @@ -32,7 +32,7 @@ public class XPCollector extends SlimefunItem implements InventoryBlock { public XPCollector(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) { super(category, item, name, recipeType, recipe); - createPreset(getID(), "&aEXP Collector", this::constructMenu); + createPreset(this, "&aEXP Collector", this::constructMenu); registerBlockHandler(name, new SlimefunBlockHandler() { diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AnimalGrowthAccelerator.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AnimalGrowthAccelerator.java index a744672a2..87ac9b391 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AnimalGrowthAccelerator.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AnimalGrowthAccelerator.java @@ -17,6 +17,7 @@ import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.InventoryBlock; import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.api.BlockStorage; @@ -25,7 +26,6 @@ import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset; import me.mrCookieSlime.Slimefun.holograms.AnimalGrowthAcceleratorHologram; -import me.mrCookieSlime.Slimefun.utils.InventoryBlock; public class AnimalGrowthAccelerator extends SlimefunItem implements InventoryBlock { @@ -33,7 +33,7 @@ public class AnimalGrowthAccelerator extends SlimefunItem implements InventoryBl public AnimalGrowthAccelerator(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) { super(category, item, name, recipeType, recipe); - createPreset(getID(), "&bGrowth Accelerator", this::constructMenu); + createPreset(this, "&bGrowth Accelerator", this::constructMenu); registerBlockHandler(name, (p, b, tool, reason) -> { AnimalGrowthAcceleratorHologram.remove(b); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoBreeder.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoBreeder.java index 98dac1a58..b1bd79961 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoBreeder.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoBreeder.java @@ -7,10 +7,8 @@ import org.bukkit.Particle; import org.bukkit.block.Block; import org.bukkit.entity.Entity; import org.bukkit.entity.LivingEntity; -import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; -import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib; import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.InvUtils; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; @@ -19,6 +17,7 @@ import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.InventoryBlock; import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.api.BlockStorage; @@ -26,34 +25,15 @@ import me.mrCookieSlime.Slimefun.api.Slimefun; import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset; -import me.mrCookieSlime.Slimefun.api.item_transport.ItemTransportFlow; import me.mrCookieSlime.Slimefun.holograms.AutoBreederHologram; -public class AutoBreeder extends SlimefunItem { +public class AutoBreeder extends SlimefunItem implements InventoryBlock { private static final int[] border = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26}; public AutoBreeder(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) { super(category, item, name, recipeType, recipe); - - new BlockMenuPreset(name, "&6Auto Breeder") { - - @Override - public void init() { - constructMenu(this); - } - - @Override - public boolean canOpen(Block b, Player p) { - return p.hasPermission("slimefun.inventory.bypass") || CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true); - } - - @Override - public int[] getSlotsAccessedByItemTransport(ItemTransportFlow flow) { - if (flow == ItemTransportFlow.INSERT) return getInputSlots(); - return new int[0]; - } - }; + createPreset(this, "&6Auto Breeder", this::constructMenu); registerBlockHandler(name, (p, b, tool, reason) -> { AutoBreederHologram.remove(b); @@ -80,10 +60,16 @@ public class AutoBreeder extends SlimefunItem { return 60; } + @Override public int[] getInputSlots() { return new int[] {10, 11, 12, 13, 14, 15, 16}; } + @Override + public int[] getOutputSlots() { + return new int[0]; + } + @Override public void register(boolean slimefun) { addItemHandler(new BlockTicker() { 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 21a10c933..c72346212 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoDrier.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoDrier.java @@ -16,10 +16,10 @@ import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineHelper; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecipe; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.RecipeDisplayItem; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.api.BlockStorage; import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock; -import me.mrCookieSlime.Slimefun.utils.RecipeDisplayItem; public class AutoDrier extends AContainer implements RecipeDisplayItem { diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutomatedCraftingChamber.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutomatedCraftingChamber.java index 91f9c90b7..49fdf68ec 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutomatedCraftingChamber.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutomatedCraftingChamber.java @@ -24,6 +24,7 @@ import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.InventoryBlock; import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker; import me.mrCookieSlime.Slimefun.api.BlockStorage; import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock; @@ -31,7 +32,6 @@ import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset; import me.mrCookieSlime.Slimefun.api.item_transport.ItemTransportFlow; import me.mrCookieSlime.Slimefun.api.item_transport.RecipeSorter; -import me.mrCookieSlime.Slimefun.utils.InventoryBlock; public abstract class AutomatedCraftingChamber extends SlimefunItem implements InventoryBlock { diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/CarbonPress.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/CarbonPress.java index a54508bfe..483946cbb 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/CarbonPress.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/CarbonPress.java @@ -8,7 +8,7 @@ import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer; -import me.mrCookieSlime.Slimefun.utils.RecipeDisplayItem; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.RecipeDisplayItem; public abstract class CarbonPress extends AContainer implements RecipeDisplayItem { diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/CropGrowthAccelerator.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/CropGrowthAccelerator.java index 086545974..c080ec1d3 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/CropGrowthAccelerator.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/CropGrowthAccelerator.java @@ -17,6 +17,7 @@ import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.InventoryBlock; import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.api.BlockStorage; @@ -24,13 +25,11 @@ import me.mrCookieSlime.Slimefun.api.Slimefun; import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset; -import me.mrCookieSlime.Slimefun.utils.InventoryBlock; public abstract class CropGrowthAccelerator extends SlimefunItem implements InventoryBlock { private static final int[] border = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26}; - - public static final Map crops = new EnumMap<>(Material.class); + private static final Map crops = new EnumMap<>(Material.class); static { crops.put(Material.WHEAT, 7); @@ -44,7 +43,7 @@ public abstract class CropGrowthAccelerator extends SlimefunItem implements Inve public CropGrowthAccelerator(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) { super(category, item, name, recipeType, recipe); - createPreset(getID(), "&bGrowth Accelerator", this::constructMenu); + createPreset(this, "&bGrowth Accelerator", this::constructMenu); registerBlockHandler(name, (p, b, tool, reason) -> { BlockMenu inv = BlockStorage.getInventory(b); 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 73c245cef..6da65a837 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricGoldPan.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricGoldPan.java @@ -16,10 +16,10 @@ import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineHelper; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecipe; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.RecipeDisplayItem; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.api.BlockStorage; import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock; -import me.mrCookieSlime.Slimefun.utils.RecipeDisplayItem; public abstract class ElectricGoldPan extends AContainer implements RecipeDisplayItem { diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricIngotFactory.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricIngotFactory.java index 2d52548f3..e4d891d36 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricIngotFactory.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricIngotFactory.java @@ -8,7 +8,7 @@ import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecipe; -import me.mrCookieSlime.Slimefun.utils.RecipeDisplayItem; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.RecipeDisplayItem; public abstract class ElectricIngotFactory extends AContainer implements RecipeDisplayItem { diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricIngotPulverizer.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricIngotPulverizer.java index cb4f4fa88..319f53474 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricIngotPulverizer.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricIngotPulverizer.java @@ -11,7 +11,7 @@ import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecipe; -import me.mrCookieSlime.Slimefun.utils.RecipeDisplayItem; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.RecipeDisplayItem; public class ElectricIngotPulverizer extends AContainer implements RecipeDisplayItem { diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/FluidPump.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/FluidPump.java index dbded71b0..494f594e5 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/FluidPump.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/FluidPump.java @@ -1,9 +1,7 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric; import java.util.ArrayList; -import java.util.HashMap; import java.util.List; -import java.util.Map; import org.bukkit.Location; import org.bukkit.Material; @@ -22,19 +20,15 @@ import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecipe; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.InventoryBlock; import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.api.BlockStorage; import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset; -import me.mrCookieSlime.Slimefun.utils.InventoryBlock; public class FluidPump extends SlimefunItem implements InventoryBlock { - public static Map processing = new HashMap<>(); - public static Map progress = new HashMap<>(); - private static final int[] border = {0, 1, 2, 3, 4, 5, 6, 7, 8, 13, 31, 36, 37, 38, 39, 40, 41, 42, 43, 44, 22}; private static final int[] border_in = {9, 10, 11, 12, 18, 21, 27, 28, 29, 30}; private static final int[] border_out = {14, 15, 16, 17, 23, 26, 32, 33, 34, 35}; @@ -42,7 +36,7 @@ public class FluidPump extends SlimefunItem implements InventoryBlock { public FluidPump(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) { super(category, item, name, recipeType, recipe); - createPreset(getID(), "&9Fluid Pump", this::constructMenu); + createPreset(this, "&9Fluid Pump", this::constructMenu); } private void constructMenu(BlockMenuPreset preset) { diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/FoodComposter.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/FoodComposter.java index 1559e9f31..aab8479c8 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/FoodComposter.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/FoodComposter.java @@ -6,7 +6,7 @@ import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer; -import me.mrCookieSlime.Slimefun.utils.RecipeDisplayItem; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.RecipeDisplayItem; public abstract class FoodComposter extends AContainer implements RecipeDisplayItem { diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/Freezer.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/Freezer.java index 107d2d939..946c2b7d4 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/Freezer.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/Freezer.java @@ -5,7 +5,7 @@ import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecipe; -import me.mrCookieSlime.Slimefun.utils.RecipeDisplayItem; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.RecipeDisplayItem; import java.util.ArrayList; import java.util.List; 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 38294d8d6..49129e58a 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/Refinery.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/Refinery.java @@ -15,10 +15,10 @@ import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineHelper; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecipe; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.RecipeDisplayItem; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.api.BlockStorage; import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock; -import me.mrCookieSlime.Slimefun.utils.RecipeDisplayItem; public abstract class Refinery extends AContainer implements RecipeDisplayItem { diff --git a/src/me/mrCookieSlime/Slimefun/Objects/handlers/EntityKillHandler.java b/src/me/mrCookieSlime/Slimefun/Objects/handlers/EntityKillHandler.java new file mode 100644 index 000000000..7dd695a97 --- /dev/null +++ b/src/me/mrCookieSlime/Slimefun/Objects/handlers/EntityKillHandler.java @@ -0,0 +1,16 @@ +package me.mrCookieSlime.Slimefun.Objects.handlers; + +import org.bukkit.entity.Entity; +import org.bukkit.entity.Player; +import org.bukkit.event.entity.EntityDeathEvent; +import org.bukkit.inventory.ItemStack; + +@FunctionalInterface +public interface EntityKillHandler extends ItemHandler { + + boolean onKill(EntityDeathEvent e, Entity entity, Player killer, ItemStack item); + + default String toCodename() { + return "EntityKillHandler"; + } +} diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java index f08f83c3e..f81937003 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java @@ -104,6 +104,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.MonsterJerky; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.PickaxeOfTheSeeker; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.SeismicAxe; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.StormStaff; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.SwordOfBeheading; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.TelepositionScroll; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.BlockPlacer; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.Composter; @@ -341,7 +342,7 @@ public final class SlimefunSetup { new PotionEffect[] {new PotionEffect(PotionEffectType.JUMP, 300, 5)}) .register(true); - new SlimefunItem(Categories.WEAPONS, SlimefunItems.SWORD_OF_BEHEADING, "SWORD_OF_BEHEADING", RecipeType.ENHANCED_CRAFTING_TABLE, + new SwordOfBeheading(Categories.WEAPONS, SlimefunItems.SWORD_OF_BEHEADING, "SWORD_OF_BEHEADING", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {null, new ItemStack(Material.EMERALD), null, SlimefunItems.MAGIC_LUMP_2, new ItemStack(Material.EMERALD), SlimefunItems.MAGIC_LUMP_2, null, new ItemStack(Material.BLAZE_ROD), null}, new String[] {"chance.PLAYER", "chance.SKELETON", "chance.WITHER_SKELETON", "chance.ZOMBIE", "chance.CREEPER"}, new Integer[] {70, 40, 25, 40, 40}) .register(true); diff --git a/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java b/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java index e39501c34..08f0edb04 100644 --- a/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java +++ b/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java @@ -42,6 +42,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunMachine; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AGenerator; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AReactor; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineFuel; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.RecipeDisplayItem; import me.mrCookieSlime.Slimefun.Setup.Messages; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.api.GuideHandler; @@ -50,7 +51,6 @@ import me.mrCookieSlime.Slimefun.api.Slimefun; import me.mrCookieSlime.Slimefun.api.SlimefunGuideLayout; import me.mrCookieSlime.Slimefun.hooks.github.Contributor; import me.mrCookieSlime.Slimefun.hooks.github.IntegerFormat; -import me.mrCookieSlime.Slimefun.utils.RecipeDisplayItem; public final class SlimefunGuide { diff --git a/src/me/mrCookieSlime/Slimefun/SlimefunPlugin.java b/src/me/mrCookieSlime/Slimefun/SlimefunPlugin.java index cbdbf5163..7cef6b1d5 100644 --- a/src/me/mrCookieSlime/Slimefun/SlimefunPlugin.java +++ b/src/me/mrCookieSlime/Slimefun/SlimefunPlugin.java @@ -25,8 +25,6 @@ import me.mrCookieSlime.Slimefun.GEO.Resources.NetherIceResource; import me.mrCookieSlime.Slimefun.GEO.Resources.OilResource; import me.mrCookieSlime.Slimefun.GPS.GPSNetwork; import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; -import me.mrCookieSlime.Slimefun.Objects.MultiBlock; -import me.mrCookieSlime.Slimefun.Objects.Research; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunArmorPiece; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer; @@ -361,11 +359,8 @@ public final class SlimefunPlugin extends JavaPlugin { // Prevent Memory Leaks Messages.local = null; - MultiBlock.list = null; - Research.list = null; SlimefunItem.all = null; SlimefunItem.items = null; - SlimefunItem.mapID = null; AContainer.processing = null; AContainer.progress = null; OreWasher.items = null; diff --git a/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java b/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java index f5ad6c723..e615a2e43 100644 --- a/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java +++ b/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java @@ -8,6 +8,7 @@ import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Optional; +import java.util.Random; import java.util.Set; import java.util.UUID; import java.util.function.Predicate; @@ -33,7 +34,6 @@ import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Monster; import org.bukkit.entity.Player; import org.bukkit.event.inventory.InventoryClickEvent; -import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; import org.bukkit.metadata.FixedMetadataValue; @@ -57,6 +57,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineFuel; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.InventoryBlock; import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker; import me.mrCookieSlime.Slimefun.Setup.Messages; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; @@ -68,7 +69,7 @@ import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset; import me.mrCookieSlime.Slimefun.api.item_transport.ItemTransportFlow; import me.mrCookieSlime.Slimefun.holograms.AndroidHologram; -public abstract class ProgrammableAndroid extends SlimefunItem { +public abstract class ProgrammableAndroid extends SlimefunItem implements InventoryBlock { private static final int[] border = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 18, 24, 25, 26, 27, 33, 35, 36, 42, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53}; private static final int[] border_out = {10, 11, 12, 13, 14, 19, 23, 28, 32, 37, 38, 39, 40, 41}; @@ -83,6 +84,8 @@ public abstract class ProgrammableAndroid extends SlimefunItem { blockblacklist.add(Material.BEDROCK); blockblacklist.add(Material.BARRIER); blockblacklist.add(Material.END_PORTAL_FRAME); + blockblacklist.add(Material.END_PORTAL); + blockblacklist.add(Material.NETHER_PORTAL); blockblacklist.add(Material.COMMAND_BLOCK); blockblacklist.add(Material.CHAIN_COMMAND_BLOCK); blockblacklist.add(Material.REPEATING_COMMAND_BLOCK); @@ -90,11 +93,18 @@ public abstract class ProgrammableAndroid extends SlimefunItem { } private Set recipes = new HashSet<>(); + private Random random = new Random(); public String getInventoryTitle() { return "Programmable Android"; } + + @Override + public int[] getInputSlots() { + return new int[0]; + } + @Override public int[] getOutputSlots() { return new int[] {20, 21, 22, 29, 30, 31}; } @@ -247,13 +257,16 @@ public abstract class ProgrammableAndroid extends SlimefunItem { float fuel = Float.parseFloat(BlockStorage.getLocationInfo(b.getLocation(), "fuel")); if (fuel < 0.001) { ItemStack item = BlockStorage.getInventory(b).getItemInSlot(43); + if (item != null) { for (MachineFuel recipe: recipes) { if (SlimefunManager.isItemSimiliar(item, recipe.getInput(), true)) { BlockStorage.getInventory(b).replaceExistingItem(43, InvUtils.decreaseItem(item, 1)); + if (getTier() == 2) { pushItems(b, new ItemStack(Material.BUCKET)); } + BlockStorage.addBlockInfo(b, "fuel", String.valueOf((int) (recipe.getTicks() * this.getFuelEfficiency()))); break; } @@ -264,6 +277,7 @@ public abstract class ProgrammableAndroid extends SlimefunItem { String[] script = BlockStorage.getLocationInfo(b.getLocation(), "script").split("-"); int index = Integer.parseInt(BlockStorage.getLocationInfo(b.getLocation(), "index")) + 1; if (index >= script.length) index = 0; + boolean refresh = true; BlockStorage.addBlockInfo(b, "fuel", String.valueOf(fuel - 1)); ScriptPart part = ScriptPart.valueOf(script[index]); @@ -314,8 +328,8 @@ public abstract class ProgrammableAndroid extends SlimefunItem { Block water = b.getRelative(BlockFace.DOWN); if (water.getType() == Material.WATER) { water.getWorld().playSound(water.getLocation(), Sound.ENTITY_PLAYER_SPLASH, 1F, 1F); - if (CSCoreLib.randomizer().nextInt(100) < 10 * getTier()) { - ItemStack drop = fish[CSCoreLib.randomizer().nextInt(fish.length)]; + if (random.nextInt(100) < 10 * getTier()) { + ItemStack drop = fish[random.nextInt(fish.length)]; if (fits(b, drop)) pushItems(b, drop); } @@ -394,11 +408,14 @@ public abstract class ProgrammableAndroid extends SlimefunItem { Block log = list.get(list.size() - 1).getBlock(); Collection drops = log.getDrops(); log.getWorld().playEffect(log.getLocation(), Effect.STEP_SOUND, log.getType()); + if (!drops.isEmpty() && CSCoreLib.getLib().getProtectionManager().canBuild(UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner")), log)) { ItemStack[] items = drops.toArray(new ItemStack[drops.size()]); + if (fits(b, items)) { pushItems(b, items); log.getWorld().playEffect(log.getLocation(), Effect.STEP_SOUND, log.getType()); + if (log.getY() == b.getRelative(face).getY()) { log.setType(MaterialHelper.getSaplingFromLog(log.getType())); } @@ -433,46 +450,32 @@ public abstract class ProgrammableAndroid extends SlimefunItem { private void killEntities(Block b, double damage, Predicate predicate) { for (Entity n: AndroidHologram.getNearbyEntities(b, 4D + getTier())) { if (n instanceof LivingEntity && !(n instanceof ArmorStand) && !(n instanceof Player) && predicate.test(n)) { + boolean attack = false; + switch (BlockFace.valueOf(BlockStorage.getLocationInfo(b.getLocation(), "rotation"))) { case NORTH: - if (n.getLocation().getZ() < b.getZ()) { - if (n.hasMetadata("android_killer")) n.removeMetadata("android_killer", SlimefunPlugin.instance); - n.setMetadata("android_killer", new FixedMetadataValue(SlimefunPlugin.instance, new AndroidObject(this, b))); - - ((LivingEntity) n).damage(damage); - return; - } + attack = n.getLocation().getZ() < b.getZ(); break; case EAST: - if (n.getLocation().getX() > b.getX()) { - if (n.hasMetadata("android_killer")) n.removeMetadata("android_killer", SlimefunPlugin.instance); - n.setMetadata("android_killer", new FixedMetadataValue(SlimefunPlugin.instance, new AndroidObject(this, b))); - - ((LivingEntity) n).damage(damage); - return; - } + attack = n.getLocation().getX() > b.getX(); break; case SOUTH: - if (n.getLocation().getZ() > b.getZ()) { - if (n.hasMetadata("android_killer")) n.removeMetadata("android_killer", SlimefunPlugin.instance); - n.setMetadata("android_killer", new FixedMetadataValue(SlimefunPlugin.instance, new AndroidObject(this, b))); - - ((LivingEntity) n).damage(damage); - return; - } + attack = n.getLocation().getZ() > b.getZ(); break; case WEST: - if (n.getLocation().getX() < b.getX()) { - if (n.hasMetadata("android_killer")) n.removeMetadata("android_killer", SlimefunPlugin.instance); - n.setMetadata("android_killer", new FixedMetadataValue(SlimefunPlugin.instance, new AndroidObject(this, b))); - - ((LivingEntity) n).damage(damage); - return; - } + attack = n.getLocation().getX() < b.getX(); break; default: break; } + + if (attack) { + if (n.hasMetadata("android_killer")) n.removeMetadata("android_killer", SlimefunPlugin.instance); + n.setMetadata("android_killer", new FixedMetadataValue(SlimefunPlugin.instance, new AndroidObject(this, b))); + + ((LivingEntity) n).damage(damage); + break; + } } } } @@ -559,86 +562,47 @@ public abstract class ProgrammableAndroid extends SlimefunItem { } private boolean isFullGrown(Block block){ + if (!(block.getBlockData() instanceof Ageable)) return false; Ageable ageable = ((Ageable) block.getBlockData()); return ageable.getAge() >= ageable.getMaximumAge(); } private void farm(Block b, Block block) { - switch (block.getType()) { + if (isFullGrown(block)) { + ItemStack drop = null; + switch (block.getType()) { case WHEAT: - if (isFullGrown(block)) { - ItemStack drop = new ItemStack(Material.WHEAT, CSCoreLib.randomizer().nextInt(3) + 1); - if (fits(b, drop)) { - pushItems(b, drop); - Ageable ageable = (Ageable) block.getBlockData(); - ageable.setAge(0); - block.setBlockData(ageable); - block.getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, block.getType()); - } - } + drop = new ItemStack(Material.WHEAT, random.nextInt(2) + 1); break; case POTATOES: - if (isFullGrown(block)) { - ItemStack drop = new ItemStack(Material.POTATO, CSCoreLib.randomizer().nextInt(3) + 1); - if (fits(b, drop)) { - pushItems(b, drop); - Ageable ageable = (Ageable) block.getBlockData(); - ageable.setAge(0); - block.setBlockData(ageable); - block.getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, block.getType()); - } - } + drop = new ItemStack(Material.POTATO, random.nextInt(3) + 1); break; case CARROTS: - if (isFullGrown(block)) { - ItemStack drop = new ItemStack(Material.CARROT, CSCoreLib.randomizer().nextInt(3) + 1); - if (fits(b, drop)) { - pushItems(b, drop); - Ageable ageable = (Ageable) block.getBlockData(); - ageable.setAge(0); - block.setBlockData(ageable); - block.getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, block.getType()); - } - } + drop = new ItemStack(Material.CARROT, random.nextInt(3) + 1); break; case BEETROOTS: - if (isFullGrown(block)) { - ItemStack drop = new ItemStack(Material.BEETROOT, CSCoreLib.randomizer().nextInt(3) + 1); - if (fits(b, drop)) { - pushItems(b, drop); - Ageable ageable = (Ageable) block.getBlockData(); - ageable.setAge(0); - block.setBlockData(ageable); - block.getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, block.getType()); - } - } + drop = new ItemStack(Material.BEETROOT, random.nextInt(3) + 1); break; case COCOA: - if (isFullGrown(block)) { - ItemStack drop = new ItemStack(Material.COCOA_BEANS, CSCoreLib.randomizer().nextInt(3) + 1); - if (fits(b, drop)) { - pushItems(b, drop); - Ageable ageable = (Ageable) block.getBlockData(); - ageable.setAge(0); - block.setBlockData(ageable); - block.getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, block.getType()); - } - } + drop = new ItemStack(Material.COCOA_BEANS, random.nextInt(3) + 1); break; case NETHER_WART: - if (isFullGrown(block)) { - ItemStack drop = new ItemStack(Material.NETHER_WART, CSCoreLib.randomizer().nextInt(3) + 1); - if (fits(b, drop)) { - pushItems(b, drop); - Ageable ageable = (Ageable) block.getBlockData(); - ageable.setAge(0); - block.setBlockData(ageable); - block.getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, block.getType()); - } - } + drop = new ItemStack(Material.NETHER_WART, random.nextInt(3) + 1); + break; + case SWEET_BERRY_BUSH: + drop = new ItemStack(Material.SWEET_BERRIES, random.nextInt(3) + 1); break; default: break; + } + + if (drop != null && fits(b, drop)) { + pushItems(b, drop); + Ageable ageable = (Ageable) block.getBlockData(); + ageable.setAge(0); + block.setBlockData(ageable); + block.getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, block.getType()); + } } } @@ -655,14 +619,10 @@ public abstract class ProgrammableAndroid extends SlimefunItem { private void constructMenu(BlockMenuPreset preset) throws Exception { for (int i : border) { - preset.addItem(i, new CustomItem(new ItemStack(Material.GRAY_STAINED_GLASS_PANE), " "), - (p, slot, item, action) -> false - ); + preset.addItem(i, new CustomItem(new ItemStack(Material.GRAY_STAINED_GLASS_PANE), " "), (p, slot, item, action) -> false); } for (int i : border_out) { - preset.addItem(i, new CustomItem(new ItemStack(Material.ORANGE_STAINED_GLASS_PANE), " "), - (p, slot, item, action) -> false - ); + preset.addItem(i, new CustomItem(new ItemStack(Material.ORANGE_STAINED_GLASS_PANE), " "), (p, slot, item, action) -> false); } for (int i : getOutputSlots()) { @@ -681,19 +641,13 @@ public abstract class ProgrammableAndroid extends SlimefunItem { } if (getTier() == 1) { - preset.addItem(34, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTM0M2NlNThkYTU0Yzc5OTI0YTJjOTMzMWNmYzQxN2ZlOGNjYmJlYTliZTQ1YTdhYzg1ODYwYTZjNzMwIn19fQ=="), "&8\u21E9 &cFuel Input &8\u21E9", "", "&rThis Android runs on solid Fuel", "&re.g. Coal, Wood, etc..."), - (p, slot, item, action) -> false - ); + preset.addItem(34, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTM0M2NlNThkYTU0Yzc5OTI0YTJjOTMzMWNmYzQxN2ZlOGNjYmJlYTliZTQ1YTdhYzg1ODYwYTZjNzMwIn19fQ=="), "&8\u21E9 &cFuel Input &8\u21E9", "", "&rThis Android runs on solid Fuel", "&re.g. Coal, Wood, etc..."), (p, slot, item, action) -> false); } else if (getTier() == 2){ - preset.addItem(34, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTM0M2NlNThkYTU0Yzc5OTI0YTJjOTMzMWNmYzQxN2ZlOGNjYmJlYTliZTQ1YTdhYzg1ODYwYTZjNzMwIn19fQ=="), "&8\u21E9 &cFuel Input &8\u21E9", "", "&rThis Android runs on liquid Fuel", "&re.g. Lava, Oil, Fuel, etc..."), - (p, slot, item, action) -> false - ); + preset.addItem(34, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTM0M2NlNThkYTU0Yzc5OTI0YTJjOTMzMWNmYzQxN2ZlOGNjYmJlYTliZTQ1YTdhYzg1ODYwYTZjNzMwIn19fQ=="), "&8\u21E9 &cFuel Input &8\u21E9", "", "&rThis Android runs on liquid Fuel", "&re.g. Lava, Oil, Fuel, etc..."), (p, slot, item, action) -> false); } else { - preset.addItem(34, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTM0M2NlNThkYTU0Yzc5OTI0YTJjOTMzMWNmYzQxN2ZlOGNjYmJlYTliZTQ1YTdhYzg1ODYwYTZjNzMwIn19fQ=="), "&8\u21E9 &cFuel Input &8\u21E9", "", "&rThis Android runs on radioactive Fuel", "&re.g. Uranium, Neptunium or Boosted Uranium"), - (p, slot, item, action) -> false - ); + preset.addItem(34, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTM0M2NlNThkYTU0Yzc5OTI0YTJjOTMzMWNmYzQxN2ZlOGNjYmJlYTliZTQ1YTdhYzg1ODYwYTZjNzMwIn19fQ=="), "&8\u21E9 &cFuel Input &8\u21E9", "", "&rThis Android runs on radioactive Fuel", "&re.g. Uranium, Neptunium or Boosted Uranium"), (p, slot, item, action) -> false); } } @@ -744,6 +698,7 @@ public abstract class ProgrammableAndroid extends SlimefunItem { for (int i = 1; i < commands.length; i++) { final int index = i; + if (i == commands.length - 1) { int additional = commands.length == 54 ? 0: 1; @@ -838,8 +793,7 @@ public abstract class ProgrammableAndroid extends SlimefunItem { return false; }); - try { - + try { menu.addItem(48, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMTA1YTJjYWI4YjY4ZWE1N2UzYWY5OTJhMzZlNDdjOGZmOWFhODdjYzg3NzYyODE5NjZmOGMzY2YzMWEzOCJ9fX0="), "&eUpload a Script", "", "&6Click &7to upload your Android's Script", "&7to the Database")); menu.addMenuClickHandler(48, (pl, slot, item, action) -> { final String code = BlockStorage.getLocationInfo(b.getLocation(), "script"); @@ -900,6 +854,7 @@ public abstract class ProgrammableAndroid extends SlimefunItem { } int categoryIndex = 45 * (page - 1); + for (int i = 0; i < 45; i++) { int target = categoryIndex + i; if (target >= scripts.size()) break; @@ -1049,34 +1004,6 @@ public abstract class ProgrammableAndroid extends SlimefunItem { menu.open(p); } - private Inventory inject(Block b) { - int size = BlockStorage.getInventory(b).toInventory().getSize(); - Inventory inv = Bukkit.createInventory(null, size); - - for (int i = 0; i < size; i++) { - inv.setItem(i, new CustomItem(Material.COMMAND_BLOCK, " &4ALL YOUR PLACEHOLDERS ARE BELONG TO US")); - } - - for (int slot: getOutputSlots()) { - inv.setItem(slot, BlockStorage.getInventory(b).getItemInSlot(slot)); - } - - return inv; - } - - protected boolean fits(Block b, ItemStack... items) { - return inject(b).addItem(items).isEmpty(); - } - - protected void pushItems(Block b, ItemStack... items) { - Inventory inv = inject(b); - inv.addItem(items); - - for (int slot : getOutputSlots()) { - BlockStorage.getInventory(b).replaceExistingItem(slot, inv.getItem(slot)); - } - } - public void addItems(Block b, ItemStack... items) { this.pushItems(b, items); } diff --git a/src/me/mrCookieSlime/Slimefun/listeners/DamageListener.java b/src/me/mrCookieSlime/Slimefun/listeners/DamageListener.java index 49a09c8e1..81bdc4773 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/DamageListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/DamageListener.java @@ -5,16 +5,11 @@ import java.util.ArrayList; import java.util.Date; import java.util.Iterator; import java.util.List; -import java.util.Random; import org.bukkit.Material; import org.bukkit.enchantments.Enchantment; import org.bukkit.entity.ChestedHorse; -import org.bukkit.entity.Creeper; import org.bukkit.entity.Player; -import org.bukkit.entity.Skeleton; -import org.bukkit.entity.WitherSkeleton; -import org.bukkit.entity.Zombie; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.entity.EntityDamageEvent; @@ -22,8 +17,6 @@ import org.bukkit.event.entity.EntityDamageEvent.DamageCause; import org.bukkit.event.entity.EntityDeathEvent; import org.bukkit.event.player.PlayerRespawnEvent; import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.meta.ItemMeta; -import org.bukkit.inventory.meta.SkullMeta; import me.mrCookieSlime.EmeraldEnchants.EmeraldEnchants; import me.mrCookieSlime.EmeraldEnchants.ItemEnchantment; @@ -32,6 +25,8 @@ import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SoulboundItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.Talisman; +import me.mrCookieSlime.Slimefun.Objects.handlers.EntityKillHandler; +import me.mrCookieSlime.Slimefun.Objects.handlers.ItemHandler; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.api.Slimefun; import me.mrCookieSlime.Slimefun.api.Soul; @@ -41,7 +36,6 @@ public class DamageListener implements Listener { private SimpleDateFormat format = new SimpleDateFormat("(MMM d, yyyy @ hh:mm)"); private Utilities utilities; - private Random random = new Random(); public DamageListener(SlimefunPlugin plugin) { plugin.getServer().getPluginManager().registerEvents(this, plugin); @@ -78,59 +72,33 @@ public class DamageListener implements Listener { if (SlimefunPlugin.getUtilities().drops.containsKey(e.getEntity().getType())) { for (ItemStack drop : SlimefunPlugin.getUtilities().drops.get(e.getEntity().getType())) { - if (Slimefun.hasUnlocked(p, item, true)) { + if (Slimefun.hasUnlocked(p, drop, true)) { e.getDrops().add(drop); } } } - - if (item != null && Slimefun.hasUnlocked(p, item, true) && SlimefunManager.isItemSimiliar(item, SlimefunItem.getItem("SWORD_OF_BEHEADING"), true)) { - if (e.getEntity() instanceof Zombie) { - if (random.nextInt(100) < (int) Slimefun.getItemValue("SWORD_OF_BEHEADING", "chance.ZOMBIE")) { - e.getDrops().add(new ItemStack(Material.ZOMBIE_HEAD)); - } - } - else if (e.getEntity() instanceof WitherSkeleton) { - if (random.nextInt(100) < (int) Slimefun.getItemValue("SWORD_OF_BEHEADING", "chance.WITHER_SKELETON")) - e.getDrops().add(new ItemStack(Material.WITHER_SKELETON_SKULL)); - } - else if (e.getEntity() instanceof Skeleton) { - if (random.nextInt(100) < (int) Slimefun.getItemValue("SWORD_OF_BEHEADING", "chance.SKELETON")) - e.getDrops().add(new ItemStack(Material.SKELETON_SKULL)); - } - else if (e.getEntity() instanceof Creeper) { - if (random.nextInt(100) < (int) Slimefun.getItemValue("SWORD_OF_BEHEADING", "chance.CREEPER")) { - e.getDrops().add(new ItemStack(Material.CREEPER_HEAD)); - } - } - else if (e.getEntity() instanceof Player && random.nextInt(100) < (Integer) Slimefun.getItemValue("SWORD_OF_BEHEADING", "chance.PLAYER")) { - ItemStack skull = new ItemStack(Material.PLAYER_HEAD); - ItemMeta meta = skull.getItemMeta(); - ((SkullMeta) meta).setOwningPlayer((Player) e.getEntity()); - skull.setItemMeta(meta); - - e.getDrops().add(skull); - } + + if (item != null && item.getType() != null && item.getType() != Material.AIR) { + for (ItemHandler handler : SlimefunItem.getHandlers("EntityKillHandler")) { + if (((EntityKillHandler) handler).onKill(e, e.getEntity(), p, item)) return; + } } if (!e.getEntity().getCanPickupItems() && Talisman.checkFor(e, SlimefunItem.getByID("HUNTER_TALISMAN")) && !(e.getEntity() instanceof Player)) { - - List newDrops = new ArrayList<>(); - for (ItemStack drop : e.getDrops()) { - newDrops.add(drop); - } - for (ItemStack drop : newDrops) { - e.getDrops().add(drop); - } + List extraDrops = new ArrayList<>(e.getDrops()); - if(e.getEntity() instanceof ChestedHorse) { - for(ItemStack invItem : ((ChestedHorse) e.getEntity()).getInventory().getStorageContents()) { - e.getDrops().remove(invItem); + if (e.getEntity() instanceof ChestedHorse) { + for (ItemStack invItem : ((ChestedHorse) e.getEntity()).getInventory().getStorageContents()) { + extraDrops.remove(invItem); } //The chest is not included in getStorageContents() - e.getDrops().remove(new ItemStack(Material.CHEST)); + extraDrops.remove(new ItemStack(Material.CHEST)); } + + for (ItemStack drop: extraDrops) { + e.getDrops().add(drop); + } } } } diff --git a/src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java b/src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java index 1157d20eb..e4136f4b3 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java @@ -228,6 +228,7 @@ public class ItemListener implements Listener { for (ItemHandler handler : SlimefunItem.getHandlers("ItemInteractionHandler")) { if (((ItemInteractionHandler) handler).onRightClick(e, p, item)) return; } + if (SlimefunManager.isItemSimiliar(item, SlimefunItems.DURALUMIN_MULTI_TOOL, false) || SlimefunManager.isItemSimiliar(item, SlimefunItems.SOLDER_MULTI_TOOL, false) || SlimefunManager.isItemSimiliar(item, SlimefunItems.BILLON_MULTI_TOOL, false) @@ -274,11 +275,21 @@ public class ItemListener implements Listener { if (storage.hasUniversalInventory(id)) { UniversalBlockMenu menu = storage.getUniversalInventory(id); - if (menu.canOpen(e.getClickedBlock(), p)) menu.open(p); + if (menu.canOpen(e.getClickedBlock(), p)) { + menu.open(p); + } + else { + Messages.local.sendTranslation(p, "inventory.no-access", true); + } } else if (storage.hasInventory(e.getClickedBlock().getLocation())) { BlockMenu menu = BlockStorage.getInventory(e.getClickedBlock().getLocation()); - if (menu.canOpen(e.getClickedBlock(), p)) menu.open(p); + if (menu.canOpen(e.getClickedBlock(), p)) { + menu.open(p); + } + else { + Messages.local.sendTranslation(p, "inventory.no-access", true); + } } } } diff --git a/src/me/mrCookieSlime/Slimefun/listeners/ToolListener.java b/src/me/mrCookieSlime/Slimefun/listeners/ToolListener.java index 8d24cd790..c73f414e0 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/ToolListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/ToolListener.java @@ -29,7 +29,7 @@ import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.HandledBlock; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.Interfaces.NotPlaceable; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.NotPlaceable; import me.mrCookieSlime.Slimefun.Objects.handlers.BlockBreakHandler; import me.mrCookieSlime.Slimefun.Objects.handlers.BlockPlaceHandler; import me.mrCookieSlime.Slimefun.Objects.handlers.ItemHandler; diff --git a/src/me/mrCookieSlime/Slimefun/utils/Utilities.java b/src/me/mrCookieSlime/Slimefun/utils/Utilities.java index 9117f25c9..5b2024847 100644 --- a/src/me/mrCookieSlime/Slimefun/utils/Utilities.java +++ b/src/me/mrCookieSlime/Slimefun/utils/Utilities.java @@ -5,6 +5,7 @@ import java.util.Date; import java.util.EnumMap; import java.util.HashMap; import java.util.HashSet; +import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Set; @@ -17,7 +18,10 @@ import org.bukkit.inventory.ItemStack; import me.mrCookieSlime.Slimefun.GEO.OreGenResource; import me.mrCookieSlime.Slimefun.Objects.Category; +import me.mrCookieSlime.Slimefun.Objects.MultiBlock; +import me.mrCookieSlime.Slimefun.Objects.Research; import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Objects.handlers.ItemHandler; import me.mrCookieSlime.Slimefun.Setup.PostSlimefunLoadingHandler; import me.mrCookieSlime.Slimefun.ancient_altar.AltarRecipe; @@ -42,6 +46,10 @@ import me.mrCookieSlime.Slimefun.hooks.github.GitHubConnector; public final class Utilities { public int vanillaItems = 0; + + public final Map itemIDs = new HashMap<>(); + public final List allMultiblocks = new LinkedList<>(); + public final List allResearches = new LinkedList<>(); public final Set radioactiveItems = new HashSet<>(); public final Map> itemHandlers = new HashMap<>(); From 00de4d93612ad2bb6f82b8b6bee9480845d3ea43 Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Tue, 3 Sep 2019 13:09:58 +0200 Subject: [PATCH 160/169] Refactored Code --- .../GEO/{Resources => resources}/NetherIceResource.java | 2 +- .../Slimefun/GEO/{Resources => resources}/OilResource.java | 2 +- src/me/mrCookieSlime/Slimefun/SlimefunPlugin.java | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) rename src/me/mrCookieSlime/Slimefun/GEO/{Resources => resources}/NetherIceResource.java (92%) rename src/me/mrCookieSlime/Slimefun/GEO/{Resources => resources}/OilResource.java (97%) diff --git a/src/me/mrCookieSlime/Slimefun/GEO/Resources/NetherIceResource.java b/src/me/mrCookieSlime/Slimefun/GEO/resources/NetherIceResource.java similarity index 92% rename from src/me/mrCookieSlime/Slimefun/GEO/Resources/NetherIceResource.java rename to src/me/mrCookieSlime/Slimefun/GEO/resources/NetherIceResource.java index 4c2cac513..2a86ea450 100644 --- a/src/me/mrCookieSlime/Slimefun/GEO/Resources/NetherIceResource.java +++ b/src/me/mrCookieSlime/Slimefun/GEO/resources/NetherIceResource.java @@ -1,4 +1,4 @@ -package me.mrCookieSlime.Slimefun.GEO.Resources; +package me.mrCookieSlime.Slimefun.GEO.resources; import org.bukkit.block.Biome; import org.bukkit.inventory.ItemStack; diff --git a/src/me/mrCookieSlime/Slimefun/GEO/Resources/OilResource.java b/src/me/mrCookieSlime/Slimefun/GEO/resources/OilResource.java similarity index 97% rename from src/me/mrCookieSlime/Slimefun/GEO/Resources/OilResource.java rename to src/me/mrCookieSlime/Slimefun/GEO/resources/OilResource.java index 26b3c4cd3..cac4cbd09 100644 --- a/src/me/mrCookieSlime/Slimefun/GEO/Resources/OilResource.java +++ b/src/me/mrCookieSlime/Slimefun/GEO/resources/OilResource.java @@ -1,4 +1,4 @@ -package me.mrCookieSlime.Slimefun.GEO.Resources; +package me.mrCookieSlime.Slimefun.GEO.resources; import org.bukkit.block.Biome; import org.bukkit.inventory.ItemStack; diff --git a/src/me/mrCookieSlime/Slimefun/SlimefunPlugin.java b/src/me/mrCookieSlime/Slimefun/SlimefunPlugin.java index 7cef6b1d5..6af513583 100644 --- a/src/me/mrCookieSlime/Slimefun/SlimefunPlugin.java +++ b/src/me/mrCookieSlime/Slimefun/SlimefunPlugin.java @@ -21,8 +21,8 @@ import me.mrCookieSlime.CSCoreLibPlugin.PluginUtils; import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config; import me.mrCookieSlime.CSCoreLibPlugin.general.Reflection.ReflectionUtils; import me.mrCookieSlime.Slimefun.GEO.OreGenSystem; -import me.mrCookieSlime.Slimefun.GEO.Resources.NetherIceResource; -import me.mrCookieSlime.Slimefun.GEO.Resources.OilResource; +import me.mrCookieSlime.Slimefun.GEO.resources.NetherIceResource; +import me.mrCookieSlime.Slimefun.GEO.resources.OilResource; import me.mrCookieSlime.Slimefun.GPS.GPSNetwork; import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunArmorPiece; From 9277b120e18fea3eb2a5aa3da30fba2800c0a5f7 Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Tue, 3 Sep 2019 16:29:46 +0200 Subject: [PATCH 161/169] Refactored Code --- pom.xml | 2 +- .../SlimefunItem/SimpleSlimefunItem.java | 3 +- .../Objects/SlimefunItem/SlimefunItem.java | 9 +++- .../Objects/SlimefunItem/Talisman.java | 2 +- .../abstractItems/AContainer.java | 4 +- .../SlimefunItem/abstractItems/AFarm.java | 4 +- .../abstractItems/AGenerator.java | 4 +- .../SlimefunItem/abstractItems/AReactor.java | 4 +- .../SlimefunItem/items/HunterTalisman.java | 54 +++++++++++++++++++ .../SlimefunItem/machines/Composter.java | 4 +- .../SlimefunItem/machines/Crucible.java | 4 +- .../SlimefunItem/machines/TrashCan.java | 4 +- .../SlimefunItem/machines/XPCollector.java | 4 +- .../electric/AnimalGrowthAccelerator.java | 4 +- .../machines/electric/AutoBreeder.java | 4 +- .../electric/AutomatedCraftingChamber.java | 4 +- .../electric/CropGrowthAccelerator.java | 4 +- .../machines/electric/EnergyRegulator.java | 4 +- .../machines/electric/FluidPump.java | 4 +- .../electric/HeatedPressureChamber.java | 4 +- .../machines/electric/WitherAssembler.java | 4 +- .../Slimefun/listeners/DamageListener.java | 23 +------- .../Slimefun/listeners/ItemListener.java | 25 ++++----- 23 files changed, 95 insertions(+), 87 deletions(-) create mode 100644 src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/HunterTalisman.java diff --git a/pom.xml b/pom.xml index 19336b0a1..d50ff0df5 100644 --- a/pom.xml +++ b/pom.xml @@ -124,7 +124,7 @@ com.github.thebusybiscuit CS-CoreLib2 - 0.3.11 + 0.3.12 compile diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SimpleSlimefunItem.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SimpleSlimefunItem.java index 2a91594a0..5e8f4c29b 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SimpleSlimefunItem.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SimpleSlimefunItem.java @@ -21,9 +21,8 @@ public abstract class SimpleSlimefunItem extends Slimefun } @Override - public void register(boolean slimefun) { + public void preRegister() { addItemHandler(getItemHandler()); - super.register(slimefun); } public abstract T getItemHandler(); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java index b6f07219e..31420ffa8 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java @@ -201,10 +201,12 @@ public class SlimefunItem { public void register() { register(false); } - + public void register(boolean slimefun) { this.addon = !slimefun; try { + preRegister(); + if (SlimefunPlugin.getUtilities().itemIDs.containsKey(this.id)) { throw new IllegalArgumentException("ID \"" + this.id + "\" already exists"); } @@ -531,6 +533,11 @@ public class SlimefunItem { ChargableBlock.registerCapacitor(id, capacity); } + public void preRegister() { + // Override this method to execute code before the Item has been registered + // Useful for calls to addItemHandler(...) + } + public void postRegister() { // Override this method to execute code after the Item has been registered // Useful for calls to Slimefun.getItemValue(...) diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/Talisman.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/Talisman.java index 11ec3e485..598a51d9a 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/Talisman.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/Talisman.java @@ -124,7 +124,7 @@ public class Talisman extends SlimefunItem { @Override public void create() { EnderTalisman talisman = new EnderTalisman(this); - talisman.register(true); + talisman.register(!isAddonItem()); } @Override diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AContainer.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AContainer.java index 31924ee9f..083e24d10 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AContainer.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AContainer.java @@ -154,7 +154,7 @@ public abstract class AContainer extends SlimefunItem implements InventoryBlock } @Override - public void register(boolean slimefun) { + public void preRegister() { addItemHandler(new BlockTicker() { @Override @@ -167,8 +167,6 @@ public abstract class AContainer extends SlimefunItem implements InventoryBlock return false; } }); - - super.register(slimefun); } protected void tick(Block b) { diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AFarm.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AFarm.java index e51053087..a5a780fd9 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AFarm.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AFarm.java @@ -128,7 +128,7 @@ public abstract class AFarm extends SlimefunItem { } @Override - public void register(boolean slimefun) { + public void preRegister() { addItemHandler(new BlockTicker() { @Override @@ -141,8 +141,6 @@ public abstract class AFarm extends SlimefunItem { return true; } }); - - super.register(slimefun); } private Inventory inject(Block b) { diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AGenerator.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AGenerator.java index c1570ff5b..9512702b9 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AGenerator.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AGenerator.java @@ -151,7 +151,7 @@ public abstract class AGenerator extends SlimefunItem { } @Override - public void register(boolean slimefun) { + public void preRegister() { addItemHandler(new EnergyTicker() { @Override @@ -210,8 +210,6 @@ public abstract class AGenerator extends SlimefunItem { return false; } }); - - super.register(slimefun); } private MachineFuel findRecipe(BlockMenu menu, Map found) { diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AReactor.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AReactor.java index cbe735c1c..933360392 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AReactor.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AReactor.java @@ -246,7 +246,7 @@ public abstract class AReactor extends SlimefunItem { } @Override - public void register(boolean slimefun) { + public void preRegister() { addItemHandler(new EnergyTicker() { private Set explode = new HashSet<>(); @@ -359,8 +359,6 @@ public abstract class AReactor extends SlimefunItem { return explosion; } }); - - super.register(slimefun); } private void restockCoolant(Location l, BlockMenu port) { diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/HunterTalisman.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/HunterTalisman.java new file mode 100644 index 000000000..4c62a098c --- /dev/null +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/HunterTalisman.java @@ -0,0 +1,54 @@ +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items; + +import java.util.ArrayList; +import java.util.List; + +import org.bukkit.Material; +import org.bukkit.entity.ChestedHorse; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; + +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.Talisman; +import me.mrCookieSlime.Slimefun.Objects.handlers.EntityKillHandler; + +public class HunterTalisman extends Talisman { + + public HunterTalisman(ItemStack item, String id, ItemStack[] recipe, String messageSuffix) { + super(item, id, recipe, messageSuffix, 0); + } + + @Override + public void preRegister() { + addItemHandler(getItemHandler()); + } + + public EntityKillHandler getItemHandler() { + return (e, entity, killer, item) -> { + if (Talisman.checkFor(e, SlimefunItem.getByID("HUNTER_TALISMAN")) && !(e.getEntity() instanceof Player)) { + if (!e.getEntity().getCanPickupItems()) { + List extraDrops = new ArrayList<>(e.getDrops()); + + if (e.getEntity() instanceof ChestedHorse) { + for (ItemStack invItem : ((ChestedHorse) e.getEntity()).getInventory().getStorageContents()) { + extraDrops.remove(invItem); + } + + //The chest is not included in getStorageContents() + extraDrops.remove(new ItemStack(Material.CHEST)); + } + + for (ItemStack drop: extraDrops) { + e.getDrops().add(drop); + } + } + + return true; + } + else { + return false; + } + }; + } + +} diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/Composter.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/Composter.java index 1b4f9a46f..f68893a66 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/Composter.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/Composter.java @@ -28,7 +28,7 @@ public class Composter extends SlimefunGadget { } @Override - public void register(boolean slimefun) { + public void preRegister() { addItemHandler(new ItemInteractionHandler() { @Override @@ -73,8 +73,6 @@ public class Composter extends SlimefunGadget { return false; } }); - - super.register(slimefun); } } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/Crucible.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/Crucible.java index c5b0f234d..d349db5f0 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/Crucible.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/Crucible.java @@ -29,7 +29,7 @@ public class Crucible extends SlimefunGadget { } @Override - public void register(boolean slimefun) { + public void preRegister() { addItemHandler(new ItemInteractionHandler() { @Override @@ -81,8 +81,6 @@ public class Crucible extends SlimefunGadget { return false; } }); - - super.register(slimefun); } } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/TrashCan.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/TrashCan.java index fe77c876f..25721f1f9 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/TrashCan.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/TrashCan.java @@ -43,7 +43,7 @@ public class TrashCan extends SlimefunItem implements InventoryBlock { } @Override - public void register(boolean slimefun) { + public void preRegister() { addItemHandler(new BlockTicker() { @Override @@ -59,8 +59,6 @@ public class TrashCan extends SlimefunItem implements InventoryBlock { return false; } }); - - super.register(slimefun); } } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/XPCollector.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/XPCollector.java index 768176a42..183faa3b9 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/XPCollector.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/XPCollector.java @@ -81,7 +81,7 @@ public class XPCollector extends SlimefunItem implements InventoryBlock { } @Override - public void register(boolean slimefun) { + public void preRegister() { addItemHandler(new BlockTicker() { @Override @@ -98,8 +98,6 @@ public class XPCollector extends SlimefunItem implements InventoryBlock { return true; } }); - - super.register(slimefun); } protected void tick(Block b) { diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AnimalGrowthAccelerator.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AnimalGrowthAccelerator.java index 87ac9b391..e0d2774d4 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AnimalGrowthAccelerator.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AnimalGrowthAccelerator.java @@ -71,7 +71,7 @@ public class AnimalGrowthAccelerator extends SlimefunItem implements InventoryBl } @Override - public void register(boolean slimefun) { + public void preRegister() { addItemHandler(new BlockTicker() { @Override @@ -88,8 +88,6 @@ public class AnimalGrowthAccelerator extends SlimefunItem implements InventoryBl return true; } }); - - super.register(slimefun); } protected void tick(Block b) { diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoBreeder.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoBreeder.java index b1bd79961..9f334880b 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoBreeder.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoBreeder.java @@ -71,7 +71,7 @@ public class AutoBreeder extends SlimefunItem implements InventoryBlock { } @Override - public void register(boolean slimefun) { + public void preRegister() { addItemHandler(new BlockTicker() { @Override @@ -88,8 +88,6 @@ public class AutoBreeder extends SlimefunItem implements InventoryBlock { return true; } }); - - super.register(slimefun); } protected void tick(Block b) throws Exception { diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutomatedCraftingChamber.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutomatedCraftingChamber.java index 49fdf68ec..8ac0a250f 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutomatedCraftingChamber.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutomatedCraftingChamber.java @@ -172,7 +172,7 @@ public abstract class AutomatedCraftingChamber extends SlimefunItem implements I } @Override - public void register(boolean slimefun) { + public void preRegister() { addItemHandler(new BlockTicker() { @Override @@ -185,8 +185,6 @@ public abstract class AutomatedCraftingChamber extends SlimefunItem implements I return false; } }); - - super.register(slimefun); } protected void tick(Block b) { diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/CropGrowthAccelerator.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/CropGrowthAccelerator.java index c080ec1d3..493b2805b 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/CropGrowthAccelerator.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/CropGrowthAccelerator.java @@ -82,7 +82,7 @@ public abstract class CropGrowthAccelerator extends SlimefunItem implements Inve } @Override - public void register(boolean slimefun) { + public void preRegister() { addItemHandler(new BlockTicker() { @Override @@ -99,8 +99,6 @@ public abstract class CropGrowthAccelerator extends SlimefunItem implements Inve return true; } }); - - super.register(slimefun); } protected void tick(Block b) { diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/EnergyRegulator.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/EnergyRegulator.java index 11ca83572..d4bd78166 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/EnergyRegulator.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/EnergyRegulator.java @@ -36,7 +36,7 @@ public class EnergyRegulator extends SlimefunItem { } @Override - public void register(boolean slimefun) { + public void preRegister() { addItemHandler(new BlockTicker() { @Override @@ -49,8 +49,6 @@ public class EnergyRegulator extends SlimefunItem { EnergyNet.getNetworkFromLocationOrCreate(b.getLocation()).tick(b); } }); - - super.register(slimefun); } } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/FluidPump.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/FluidPump.java index 494f594e5..da7f5fb29 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/FluidPump.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/FluidPump.java @@ -127,7 +127,7 @@ public class FluidPump extends SlimefunItem implements InventoryBlock { } @Override - public void register(boolean slimefun) { + public void preRegister() { addItemHandler(new BlockTicker() { @Override @@ -140,8 +140,6 @@ public class FluidPump extends SlimefunItem implements InventoryBlock { return true; } }); - - super.register(slimefun); } } 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 bef4a3c05..cf41b2a35 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/HeatedPressureChamber.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/HeatedPressureChamber.java @@ -117,7 +117,7 @@ public abstract class HeatedPressureChamber extends AContainer { } @Override - public void register(boolean slimefun) { + public void preRegister() { addItemHandler(new BlockTicker() { @Override @@ -130,8 +130,6 @@ public abstract class HeatedPressureChamber extends AContainer { return false; } }); - - super.register(slimefun); } @Override diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/WitherAssembler.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/WitherAssembler.java index 417a710e9..91f4633d7 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/WitherAssembler.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/WitherAssembler.java @@ -179,7 +179,7 @@ public class WitherAssembler extends SlimefunItem { } @Override - public void register(boolean slimefun) { + public void preRegister() { addItemHandler(new BlockTicker() { @Override @@ -259,8 +259,6 @@ public class WitherAssembler extends SlimefunItem { return false; } }); - - super.register(slimefun); } public int getEnergyConsumption() { diff --git a/src/me/mrCookieSlime/Slimefun/listeners/DamageListener.java b/src/me/mrCookieSlime/Slimefun/listeners/DamageListener.java index 81bdc4773..e64d53b3b 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/DamageListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/DamageListener.java @@ -1,14 +1,11 @@ package me.mrCookieSlime.Slimefun.listeners; import java.text.SimpleDateFormat; -import java.util.ArrayList; import java.util.Date; import java.util.Iterator; -import java.util.List; import org.bukkit.Material; import org.bukkit.enchantments.Enchantment; -import org.bukkit.entity.ChestedHorse; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; @@ -24,7 +21,6 @@ import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SoulboundItem; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.Talisman; import me.mrCookieSlime.Slimefun.Objects.handlers.EntityKillHandler; import me.mrCookieSlime.Slimefun.Objects.handlers.ItemHandler; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; @@ -78,28 +74,11 @@ public class DamageListener implements Listener { } } - if (item != null && item.getType() != null && item.getType() != Material.AIR) { + if (item != null && item.getType() != null && item.getType() != Material.AIR && Slimefun.hasUnlocked(p, item, true)) { for (ItemHandler handler : SlimefunItem.getHandlers("EntityKillHandler")) { if (((EntityKillHandler) handler).onKill(e, e.getEntity(), p, item)) return; } } - - if (!e.getEntity().getCanPickupItems() && Talisman.checkFor(e, SlimefunItem.getByID("HUNTER_TALISMAN")) && !(e.getEntity() instanceof Player)) { - List extraDrops = new ArrayList<>(e.getDrops()); - - if (e.getEntity() instanceof ChestedHorse) { - for (ItemStack invItem : ((ChestedHorse) e.getEntity()).getInventory().getStorageContents()) { - extraDrops.remove(invItem); - } - - //The chest is not included in getStorageContents() - extraDrops.remove(new ItemStack(Material.CHEST)); - } - - for (ItemStack drop: extraDrops) { - e.getDrops().add(drop); - } - } } } diff --git a/src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java b/src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java index e4136f4b3..4b0b9a7d6 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java @@ -25,6 +25,7 @@ import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.event.inventory.InventoryMoveItemEvent; import org.bukkit.event.inventory.InventoryType; import org.bukkit.event.inventory.PrepareItemCraftEvent; +import org.bukkit.event.player.PlayerBucketEmptyEvent; import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.event.player.PlayerItemConsumeEvent; import org.bukkit.inventory.BrewerInventory; @@ -113,13 +114,14 @@ public class ItemListener implements Listener { e.setCancelled(true); } } + @EventHandler public void debug(PlayerInteractEvent e) { if (e.getAction() == Action.PHYSICAL || e.getHand() != EquipmentSlot.HAND) return; Player p = e.getPlayer(); - if (SlimefunManager.isItemSimiliar(e.getPlayer().getInventory().getItemInMainHand(), SlimefunItems.DEBUG_FISH, true) || SlimefunManager.isItemSimiliar(e.getPlayer().getInventory().getItemInOffHand(), SlimefunItems.DEBUG_FISH, true)) { + if (SlimefunManager.isItemSimiliar(e.getItem(), SlimefunItems.DEBUG_FISH, true)) { e.setCancelled(true); if (p.isOp()) { switch (e.getAction()) { @@ -189,6 +191,15 @@ public class ItemListener implements Listener { } } } + + @EventHandler + public void onBucketUse(PlayerBucketEmptyEvent e) { + // Fix for placing water on player heads + Location l = e.getBlockClicked().getRelative(e.getBlockFace()).getLocation(); + if (BlockStorage.hasBlockInfo(l)) { + e.setCancelled(true); + } + } @EventHandler(priority = EventPriority.NORMAL) public void onRightClick(ItemUseEvent e) { @@ -199,16 +210,6 @@ public class ItemListener implements Listener { final Player p = e.getPlayer(); ItemStack item = e.getItem(); - // Fix for placing water on player heads - if (e.getParentEvent().getAction() == Action.RIGHT_CLICK_BLOCK && item != null && item.getType() == Material.WATER_BUCKET) { - Location water = e.getClickedBlock().getRelative(e.getParentEvent().getBlockFace()).getLocation(); - if ((p.getWorld().getBlockAt(water).getType() == Material.PLAYER_HEAD || p.getWorld().getBlockAt(water).getType() == Material.PLAYER_WALL_HEAD) && BlockStorage.hasBlockInfo(water)) { - e.setCancelled(true); - p.getWorld().getBlockAt(water).getState().update(true, false); - return; - } - } - if (SlimefunManager.isItemSimiliar(item, SlimefunGuide.getItem(SlimefunGuideLayout.BOOK), true)) { if (p.isSneaking()) SlimefunGuide.openSettings(p, item); else SlimefunGuide.openGuide(p, true); @@ -221,7 +222,7 @@ public class ItemListener implements Listener { if (p.isSneaking()) SlimefunGuide.openSettings(p, item); else p.chat("/sf cheat"); } - else if (SlimefunManager.isItemSimiliar(e.getPlayer().getInventory().getItemInMainHand(), SlimefunItems.DEBUG_FISH, true) || SlimefunManager.isItemSimiliar(e.getPlayer().getInventory().getItemInOffHand(), SlimefunItems.DEBUG_FISH, true)) { + else if (SlimefunManager.isItemSimiliar(item, SlimefunItems.DEBUG_FISH, true)) { // Ignore the debug fish in here } else if (Slimefun.hasUnlocked(p, item, true)) { From 4651baf13fc78ed206be18b6535a1fcc7aa1e722 Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Tue, 3 Sep 2019 16:44:59 +0200 Subject: [PATCH 162/169] Code Cleanup --- .../Objects/SlimefunItem/ExcludedTool.java | 1 + .../SlimefunItem/items/HerculesPickaxe.java | 41 +++++ .../SlimefunItem/items/HunterTalisman.java | 7 +- .../Objects/SlimefunItem/items/LumberAxe.java | 55 ++++++ .../items/PickaxeOfContainment.java | 61 +++++++ .../items/PickaxeOfVeinMining.java | 56 +++++++ .../SlimefunItem/items/SmeltersPickaxe.java | 50 ++++++ .../Slimefun/Setup/SlimefunSetup.java | 157 ++---------------- 8 files changed, 284 insertions(+), 144 deletions(-) create mode 100644 src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/HerculesPickaxe.java create mode 100644 src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/LumberAxe.java create mode 100644 src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/PickaxeOfContainment.java create mode 100644 src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/PickaxeOfVeinMining.java create mode 100644 src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/SmeltersPickaxe.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/ExcludedTool.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/ExcludedTool.java index 06dba6a1e..2ac5f15cb 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/ExcludedTool.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/ExcludedTool.java @@ -6,6 +6,7 @@ import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.NotPlaceable; +@Deprecated public class ExcludedTool extends SlimefunItem implements NotPlaceable { public ExcludedTool(Category category, ItemStack item, String id,RecipeType recipeType, ItemStack[] recipe) { diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/HerculesPickaxe.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/HerculesPickaxe.java new file mode 100644 index 000000000..5d6bd4d7b --- /dev/null +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/HerculesPickaxe.java @@ -0,0 +1,41 @@ +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items; + +import org.bukkit.Material; +import org.bukkit.inventory.ItemStack; + +import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; +import me.mrCookieSlime.Slimefun.Lists.RecipeType; +import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; +import me.mrCookieSlime.Slimefun.Objects.Category; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SimpleSlimefunItem; +import me.mrCookieSlime.Slimefun.Objects.handlers.BlockBreakHandler; +import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; + +public class HerculesPickaxe extends SimpleSlimefunItem { + + public HerculesPickaxe(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe) { + super(category, item, id, recipeType, recipe); + } + + @Override + public BlockBreakHandler getItemHandler() { + return (e, item, fortune, drops) -> { + if (SlimefunManager.isItemSimiliar(item, SlimefunItems.HERCULES_PICKAXE, true) && e.getBlock().getType().toString().endsWith("_ORE")) { + if (e.getBlock().getType() == Material.IRON_ORE) { + drops.add(new CustomItem(SlimefunItems.IRON_DUST, 2)); + } + else if (e.getBlock().getType() == Material.GOLD_ORE) { + drops.add(new CustomItem(SlimefunItems.GOLD_DUST, 2)); + } + else { + for (ItemStack drop: e.getBlock().getDrops()) { + drops.add(new CustomItem(drop, drop.getAmount() * 2)); + } + } + return true; + } + else return false; + }; + } + +} diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/HunterTalisman.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/HunterTalisman.java index 4c62a098c..0db06913d 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/HunterTalisman.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/HunterTalisman.java @@ -8,14 +8,13 @@ import org.bukkit.entity.ChestedHorse; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.Talisman; import me.mrCookieSlime.Slimefun.Objects.handlers.EntityKillHandler; public class HunterTalisman extends Talisman { - public HunterTalisman(ItemStack item, String id, ItemStack[] recipe, String messageSuffix) { - super(item, id, recipe, messageSuffix, 0); + public HunterTalisman(ItemStack item, String id, ItemStack[] recipe, boolean consumable, boolean cancelEvent, String messageSuffix, int chance) { + super(item, id, recipe, consumable, cancelEvent, messageSuffix, chance); } @Override @@ -25,7 +24,7 @@ public class HunterTalisman extends Talisman { public EntityKillHandler getItemHandler() { return (e, entity, killer, item) -> { - if (Talisman.checkFor(e, SlimefunItem.getByID("HUNTER_TALISMAN")) && !(e.getEntity() instanceof Player)) { + if (Talisman.checkFor(e, this) && !(e.getEntity() instanceof Player)) { if (!e.getEntity().getCanPickupItems()) { List extraDrops = new ArrayList<>(e.getDrops()); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/LumberAxe.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/LumberAxe.java new file mode 100644 index 000000000..67b763b92 --- /dev/null +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/LumberAxe.java @@ -0,0 +1,55 @@ +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items; + +import java.util.ArrayList; +import java.util.List; + +import org.bukkit.Effect; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.inventory.ItemStack; + +import io.github.thebusybiscuit.cscorelib2.protection.ProtectionModule.Action; +import me.mrCookieSlime.CSCoreLibPlugin.compatibility.MaterialHelper; +import me.mrCookieSlime.CSCoreLibPlugin.general.Block.TreeCalculator; +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.interfaces.NotPlaceable; +import me.mrCookieSlime.Slimefun.Objects.handlers.BlockBreakHandler; +import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; + +public class LumberAxe extends SimpleSlimefunItem implements NotPlaceable { + + public LumberAxe(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe) { + super(category, item, id, recipeType, recipe); + } + + @Override + public BlockBreakHandler getItemHandler() { + return (e, item, fortune, drops) -> { + if (SlimefunManager.isItemSimiliar(e.getPlayer().getInventory().getItemInMainHand(), getItem(), true)) { + if (MaterialHelper.isLog( e.getBlock().getType())) { + List logs = new ArrayList<>(); + TreeCalculator.getTree(e.getBlock().getLocation(), e.getBlock().getLocation(), logs); + + if (logs.contains(e.getBlock().getLocation())) logs.remove(e.getBlock().getLocation()); + for (Location b: logs) { + if (SlimefunPlugin.getProtectionManager().hasPermission(e.getPlayer(), b, Action.BREAK_BLOCK)) { + b.getWorld().playEffect(b, Effect.STEP_SOUND, b.getBlock().getType()); + + for (ItemStack drop: b.getBlock().getDrops()) { + b.getWorld().dropItemNaturally(b, drop); + } + + b.getBlock().setType(Material.AIR); + } + } + } + return true; + } + else return false; + }; + } + +} diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/PickaxeOfContainment.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/PickaxeOfContainment.java new file mode 100644 index 000000000..13c235d4c --- /dev/null +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/PickaxeOfContainment.java @@ -0,0 +1,61 @@ +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items; + +import java.util.List; + +import org.bukkit.Material; +import org.bukkit.block.Block; +import org.bukkit.block.CreatureSpawner; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; + +import me.mrCookieSlime.CSCoreLibPlugin.general.String.StringUtils; +import me.mrCookieSlime.Slimefun.Lists.RecipeType; +import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; +import me.mrCookieSlime.Slimefun.Objects.Category; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SimpleSlimefunItem; +import me.mrCookieSlime.Slimefun.Objects.handlers.BlockBreakHandler; +import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; +import me.mrCookieSlime.Slimefun.api.BlockStorage; + +public class PickaxeOfContainment extends SimpleSlimefunItem { + + public PickaxeOfContainment(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe) { + super(category, item, id, recipeType, recipe); + } + + @Override + public BlockBreakHandler getItemHandler() { + return (e, item, fortune, drops) -> { + if (SlimefunManager.isItemSimiliar(item, getItem(), true)) { + // Refactored it into this so we don't need to call e.getBlock() all the time. + Block b = e.getBlock(); + if (b.getType() != Material.SPAWNER) return true; + + // If the spawner's BlockStorage has BlockInfo, then it's not a vanilla spawner and shouldn't give a broken spawner. + ItemStack spawner = SlimefunItems.BROKEN_SPAWNER.clone(); + if (BlockStorage.hasBlockInfo(b)) { + spawner = SlimefunItems.REPAIRED_SPAWNER.clone(); + } + + ItemMeta im = spawner.getItemMeta(); + List lore = im.getLore(); + + for (int i = 0; i < lore.size(); i++) { + if (lore.get(i).contains("")) lore.set(i, lore.get(i).replace("", StringUtils.format(((CreatureSpawner) b.getState()).getSpawnedType().toString()))); + } + + im.setLore(lore); + spawner.setItemMeta(im); + b.getLocation().getWorld().dropItemNaturally(b.getLocation(), spawner); + e.setExpToDrop(0); + e.setDropItems(false); + return true; + } + else { + if (e.getBlock().getType() == Material.SPAWNER) e.setDropItems(false); + return false; + } + }; + } + +} diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/PickaxeOfVeinMining.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/PickaxeOfVeinMining.java new file mode 100644 index 000000000..58353ddb9 --- /dev/null +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/PickaxeOfVeinMining.java @@ -0,0 +1,56 @@ +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items; + +import java.util.ArrayList; +import java.util.List; + +import org.bukkit.Effect; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.block.Block; +import org.bukkit.inventory.ItemStack; + +import io.github.thebusybiscuit.cscorelib2.protection.ProtectionModule.Action; +import me.mrCookieSlime.CSCoreLibPlugin.general.Block.Vein; +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.handlers.BlockBreakHandler; +import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; + +public class PickaxeOfVeinMining extends SimpleSlimefunItem { + + public PickaxeOfVeinMining(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe) { + super(category, item, id, recipeType, recipe); + } + + @Override + public BlockBreakHandler getItemHandler() { + return (e, item, fortune, drops) -> { + if (SlimefunManager.isItemSimiliar(item, getItem(), true)) { + if (e.getBlock().getType().toString().endsWith("_ORE")) { + List blocks = new ArrayList<>(); + Vein.calculate(e.getBlock().getLocation(), e.getBlock().getLocation(), blocks, 16); + + for (Location block: blocks) { + if (SlimefunPlugin.getProtectionManager().hasPermission(e.getPlayer(), block, Action.BREAK_BLOCK)) { + Block b = block.getBlock(); + b.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, b.getType()); + + for (ItemStack drop: b.getDrops()) { + b.getWorld().dropItemNaturally(b.getLocation(), drop.getType().isBlock() ? drop: new CustomItem(drop, fortune)); + } + + b.setType(Material.AIR); + } + } + } + + return true; + } + else return false; + }; + } + +} diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/SmeltersPickaxe.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/SmeltersPickaxe.java new file mode 100644 index 000000000..9309af0d4 --- /dev/null +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/SmeltersPickaxe.java @@ -0,0 +1,50 @@ +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items; + +import java.util.List; + +import org.bukkit.Effect; +import org.bukkit.Material; +import org.bukkit.inventory.ItemStack; + +import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; +import me.mrCookieSlime.CSCoreLibPlugin.general.Recipe.RecipeCalculator; +import me.mrCookieSlime.Slimefun.Lists.RecipeType; +import me.mrCookieSlime.Slimefun.Objects.Category; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SimpleSlimefunItem; +import me.mrCookieSlime.Slimefun.Objects.handlers.BlockBreakHandler; +import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; +import me.mrCookieSlime.Slimefun.api.BlockStorage; + +public class SmeltersPickaxe extends SimpleSlimefunItem { + + public SmeltersPickaxe(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe) { + super(category, item, id, recipeType, recipe); + } + + @Override + public BlockBreakHandler getItemHandler() { + return (e, item, fortune, drops) -> { + if (SlimefunManager.isItemSimiliar(item, getItem(), true)) { + if (BlockStorage.hasBlockInfo(e.getBlock())) return true; + if (e.getBlock().getType() == Material.PLAYER_HEAD) return true; + + int j = -1; + List dropsList = (List) e.getBlock().getDrops(); + for (int i = 0; i < dropsList.size(); i++) { + if (dropsList.get(i) != null) { + j++; + drops.add(e.getBlock().getType().toString().endsWith("_ORE") ? new CustomItem(dropsList.get(i), fortune): dropsList.get(i)); + if (RecipeCalculator.getSmeltedOutput(drops.get(i).getType()) != null) { + e.getBlock().getWorld().playEffect(e.getBlock().getLocation(), Effect.MOBSPAWNER_FLAMES, 1); + drops.set(j, new CustomItem(RecipeCalculator.getSmeltedOutput(drops.get(i).getType()), drops.get(i).getAmount())); + } + } + } + + return true; + } + else return false; + }; + } + +} diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java index f81937003..32ccae43c 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java @@ -26,31 +26,24 @@ import org.bukkit.entity.EntityType; import org.bukkit.entity.Item; import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; -import org.bukkit.event.block.BlockBreakEvent; import org.bukkit.event.block.BlockPlaceEvent; import org.bukkit.event.entity.EntityDamageByEntityEvent; import org.bukkit.event.entity.FoodLevelChangeEvent; import org.bukkit.event.player.PlayerItemConsumeEvent; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.potion.PotionEffect; import org.bukkit.potion.PotionEffectType; import org.bukkit.util.Vector; import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib; import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config; -import me.mrCookieSlime.CSCoreLibPlugin.compatibility.MaterialHelper; import me.mrCookieSlime.CSCoreLibPlugin.events.ItemUseEvent; -import me.mrCookieSlime.CSCoreLibPlugin.general.Block.TreeCalculator; -import me.mrCookieSlime.CSCoreLibPlugin.general.Block.Vein; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.InvUtils; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; import me.mrCookieSlime.CSCoreLibPlugin.general.Math.DoubleHandler; import me.mrCookieSlime.CSCoreLibPlugin.general.Particles.FireworkShow; import me.mrCookieSlime.CSCoreLibPlugin.general.Player.PlayerInventory; -import me.mrCookieSlime.CSCoreLibPlugin.general.Recipe.RecipeCalculator; -import me.mrCookieSlime.CSCoreLibPlugin.general.String.StringUtils; import me.mrCookieSlime.CSCoreLibPlugin.general.World.CustomSkull; import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.GPS.Elevator; @@ -65,7 +58,6 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.Alloy; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.EnhancedFurnace; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.ExcludedBlock; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.ExcludedSoulboundTool; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.ExcludedTool; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.JetBoots; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.Jetpack; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.Juice; @@ -96,13 +88,19 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.ExplosivePickaxe; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.ExplosiveShovel; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.GoldPan; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.GrapplingHook; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.HerculesPickaxe; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.HunterTalisman; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.InfernalBonemeal; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.KnowledgeFlask; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.KnowledgeTome; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.LumberAxe; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.MagicSugar; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.MonsterJerky; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.PickaxeOfContainment; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.PickaxeOfTheSeeker; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.PickaxeOfVeinMining; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.SeismicAxe; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.SmeltersPickaxe; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.StormStaff; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.SwordOfBeheading; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.TelepositionScroll; @@ -153,7 +151,6 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.OreWasher; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.PressureChamber; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.Smeltery; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.TableSaw; -import me.mrCookieSlime.Slimefun.Objects.handlers.BlockBreakHandler; import me.mrCookieSlime.Slimefun.Objects.handlers.BlockPlaceHandler; import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker; import me.mrCookieSlime.Slimefun.Objects.handlers.BowShootHandler; @@ -775,34 +772,9 @@ public final class SlimefunSetup { new ItemStack[] {SlimefunItems.RUNE_LIGHTNING, SlimefunItems.ENDER_LUMP_3, SlimefunItems.RUNE_LIGHTNING, SlimefunItems.STAFF_WATER, SlimefunItems.MAGIC_SUGAR, SlimefunItems.STAFF_WIND, SlimefunItems.RUNE_LIGHTNING, SlimefunItems.ENDER_LUMP_3, SlimefunItems.RUNE_LIGHTNING}) .register(true); - new SlimefunItem(Categories.TOOLS, SlimefunItems.AUTO_SMELT_PICKAXE, "SMELTERS_PICKAXE", RecipeType.ENHANCED_CRAFTING_TABLE, + new SmeltersPickaxe(Categories.TOOLS, SlimefunItems.AUTO_SMELT_PICKAXE, "SMELTERS_PICKAXE", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {SlimefunItems.LAVA_CRYSTAL, SlimefunItems.LAVA_CRYSTAL, SlimefunItems.LAVA_CRYSTAL, null, SlimefunItems.FERROSILICON, null, null, SlimefunItems.FERROSILICON, null}) - .register(true, new BlockBreakHandler() { - - @Override - public boolean onBlockBreak(BlockBreakEvent e, ItemStack item, int fortune, List drops) { - if (SlimefunManager.isItemSimiliar(item, SlimefunItems.AUTO_SMELT_PICKAXE, true)) { - if (BlockStorage.hasBlockInfo(e.getBlock())) return true; - if (e.getBlock().getType() == Material.PLAYER_HEAD) return true; - - int j = -1; - List dropsList = (List) e.getBlock().getDrops(); - for (int i = 0; i < dropsList.size(); i++) { - if (dropsList.get(i) != null) { - j++; - drops.add(e.getBlock().getType().toString().endsWith("_ORE") ? new CustomItem(dropsList.get(i), fortune): dropsList.get(i)); - if (RecipeCalculator.getSmeltedOutput(drops.get(i).getType()) != null) { - e.getBlock().getWorld().playEffect(e.getBlock().getLocation(), Effect.MOBSPAWNER_FLAMES, 1); - drops.set(j, new CustomItem(RecipeCalculator.getSmeltedOutput(drops.get(i).getType()), drops.get(i).getAmount())); - } - } - } - - return true; - } - else return false; - } - }); + .register(true); new SlimefunItem(Categories.LUMPS_AND_MAGIC, SlimefunItems.TALISMAN, "COMMON_TALISMAN", RecipeType.MAGIC_WORKBENCH, new ItemStack[] {SlimefunItems.MAGIC_LUMP_2, SlimefunItems.GOLD_8K, SlimefunItems.MAGIC_LUMP_2, null, new ItemStack(Material.EMERALD), null, SlimefunItems.MAGIC_LUMP_2, SlimefunItems.GOLD_8K, SlimefunItems.MAGIC_LUMP_2}, @@ -819,7 +791,7 @@ public final class SlimefunSetup { false, false, "miner", 20) .register(true); - new Talisman(SlimefunItems.TALISMAN_HUNTER, "HUNTER_TALISMAN", + new HunterTalisman(SlimefunItems.TALISMAN_HUNTER, "HUNTER_TALISMAN", new ItemStack[] {SlimefunItems.MAGIC_LUMP_3, null, SlimefunItems.MAGIC_LUMP_3, SlimefunItems.SYNTHETIC_SAPPHIRE, SlimefunItems.TALISMAN, SlimefunItems.MONSTER_JERKY, SlimefunItems.MAGIC_LUMP_3, null, SlimefunItems.MAGIC_LUMP_3}, false, false, "hunter", 20) .register(true); @@ -884,33 +856,9 @@ public final class SlimefunSetup { false, false, "wizard", 60) .register(true); - new ExcludedTool(Categories.TOOLS, SlimefunItems.LUMBER_AXE, "LUMBER_AXE", RecipeType.MAGIC_WORKBENCH, + new LumberAxe(Categories.TOOLS, SlimefunItems.LUMBER_AXE, "LUMBER_AXE", RecipeType.MAGIC_WORKBENCH, new ItemStack[] {SlimefunItems.SYNTHETIC_DIAMOND, SlimefunItems.SYNTHETIC_DIAMOND, null, SlimefunItems.SYNTHETIC_EMERALD, SlimefunItems.GILDED_IRON, null, null, SlimefunItems.GILDED_IRON, null}) - .register(true, new BlockBreakHandler() { - - @Override - public boolean onBlockBreak(BlockBreakEvent e, ItemStack item, int fortune, List drops) { - if (SlimefunManager.isItemSimiliar(e.getPlayer().getInventory().getItemInMainHand(), SlimefunItems.LUMBER_AXE, true)) { - if (MaterialHelper.isLog( e.getBlock().getType())) { - List logs = new ArrayList<>(); - TreeCalculator.getTree(e.getBlock().getLocation(), e.getBlock().getLocation(), logs); - - if (logs.contains(e.getBlock().getLocation())) logs.remove(e.getBlock().getLocation()); - for (Location b: logs) { - if (CSCoreLib.getLib().getProtectionManager().canBuild(e.getPlayer().getUniqueId(), b.getBlock())) { - b.getWorld().playEffect(b, Effect.STEP_SOUND, b.getBlock().getType()); - for (ItemStack drop: b.getBlock().getDrops()) { - b.getWorld().dropItemNaturally(b, drop); - } - b.getBlock().setType(Material.AIR); - } - } - } - return true; - } - else return false; - } - }); + .register(true); new SlimefunItem(Categories.MISC, SlimefunItems.SALT, "SALT", RecipeType.ORE_WASHER, new ItemStack[] {null, null, null, null, new ItemStack(Material.SAND, 4), null, null, null, null}) @@ -1090,63 +1038,13 @@ public final class SlimefunSetup { new PotionEffect[] {new PotionEffect(PotionEffectType.NIGHT_VISION, 600, 20)}) .register(true); - new SlimefunItem(Categories.TOOLS, SlimefunItems.PICKAXE_OF_CONTAINMENT, "PICKAXE_OF_CONTAINMENT", RecipeType.MAGIC_WORKBENCH, + new PickaxeOfContainment(Categories.TOOLS, SlimefunItems.PICKAXE_OF_CONTAINMENT, "PICKAXE_OF_CONTAINMENT", RecipeType.MAGIC_WORKBENCH, new ItemStack[] {SlimefunItems.FERROSILICON, SlimefunItems.FERROSILICON, SlimefunItems.FERROSILICON, null, SlimefunItems.GILDED_IRON, null, null, SlimefunItems.GILDED_IRON, null}) - .register(true, new BlockBreakHandler() { + .register(true); - @Override - public boolean onBlockBreak(BlockBreakEvent e, ItemStack item, int fortune, List drops) { - if (SlimefunManager.isItemSimiliar(item, SlimefunItems.PICKAXE_OF_CONTAINMENT, true)) { - // Refactored it into this so we don't need to call e.getBlock() all the time. - Block b = e.getBlock(); - if (b.getType() != Material.SPAWNER) return true; - - // If the spawner's BlockStorage has BlockInfo, then it's not a vanilla spawner and shouldn't give a broken spawner. - ItemStack spawner = SlimefunItems.BROKEN_SPAWNER.clone(); - if (BlockStorage.hasBlockInfo(b)) { - spawner = SlimefunItems.REPAIRED_SPAWNER.clone(); - } - - ItemMeta im = spawner.getItemMeta(); - List lore = im.getLore(); - - for (int i = 0; i < lore.size(); i++) { - if (lore.get(i).contains("")) lore.set(i, lore.get(i).replace("", StringUtils.format(((CreatureSpawner) b.getState()).getSpawnedType().toString()))); - } - - im.setLore(lore); - spawner.setItemMeta(im); - b.getLocation().getWorld().dropItemNaturally(b.getLocation(), spawner); - e.setExpToDrop(0); - e.setDropItems(false); - return true; - } - else { - if (e.getBlock().getType() == Material.SPAWNER) e.setDropItems(false); - return false; - } - } - }); - - new SlimefunItem(Categories.TOOLS, SlimefunItems.HERCULES_PICKAXE, "HERCULES_PICKAXE", RecipeType.MAGIC_WORKBENCH, + new HerculesPickaxe(Categories.TOOLS, SlimefunItems.HERCULES_PICKAXE, "HERCULES_PICKAXE", RecipeType.MAGIC_WORKBENCH, new ItemStack[] {SlimefunItems.HARDENED_METAL_INGOT, SlimefunItems.HARDENED_METAL_INGOT, SlimefunItems.HARDENED_METAL_INGOT, null, SlimefunItems.FERROSILICON, null, null, SlimefunItems.FERROSILICON, null}) - .register(true, new BlockBreakHandler() { - - @Override - public boolean onBlockBreak(BlockBreakEvent e, ItemStack item, int fortune, List drops) { - if (SlimefunManager.isItemSimiliar(e.getPlayer().getInventory().getItemInMainHand(), SlimefunItems.HERCULES_PICKAXE, true) && e.getBlock().getType().toString().endsWith("_ORE")) { - if (e.getBlock().getType() == Material.IRON_ORE) drops.add(new CustomItem(SlimefunItems.IRON_DUST, 2)); - else if (e.getBlock().getType() == Material.GOLD_ORE) drops.add(new CustomItem(SlimefunItems.GOLD_DUST, 2)); - else { - for (ItemStack drop: e.getBlock().getDrops()) { - drops.add(new CustomItem(drop, 2)); - } - } - return true; - } - else return false; - } - }); + .register(true); new TableSaw().register(); @@ -1496,30 +1394,9 @@ public final class SlimefunSetup { new ItemStack[] {SlimefunItems.HARDENED_METAL_INGOT, SlimefunItems.HARDENED_METAL_INGOT, null, SlimefunItems.HARDENED_METAL_INGOT, SlimefunItems.STAFF_ELEMENTAL, null, null, SlimefunItems.STAFF_ELEMENTAL, null}) .register(true); - new SlimefunItem(Categories.TOOLS, SlimefunItems.PICKAXE_OF_VEIN_MINING, "PICKAXE_OF_VEIN_MINING", RecipeType.MAGIC_WORKBENCH, + new PickaxeOfVeinMining(Categories.TOOLS, SlimefunItems.PICKAXE_OF_VEIN_MINING, "PICKAXE_OF_VEIN_MINING", RecipeType.MAGIC_WORKBENCH, new ItemStack[] {new ItemStack(Material.EMERALD_ORE), SlimefunItems.SYNTHETIC_DIAMOND, new ItemStack(Material.EMERALD_ORE), null, SlimefunItems.GILDED_IRON, null, null, SlimefunItems.GILDED_IRON, null}) - .register(true, new BlockBreakHandler() { - - @Override - public boolean onBlockBreak(BlockBreakEvent e, ItemStack item, int fortune, List drops) { - if (SlimefunManager.isItemSimiliar(e.getPlayer().getInventory().getItemInMainHand(), SlimefunItems.PICKAXE_OF_VEIN_MINING, true)) { - if (e.getBlock().getType().toString().endsWith("_ORE")) { - List blocks = new ArrayList<>(); - Vein.calculate(e.getBlock().getLocation(), e.getBlock().getLocation(), blocks, 16); - for (Location block: blocks) { - Block b = block.getBlock(); - b.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, b.getType()); - for (ItemStack drop: b.getDrops()) { - b.getWorld().dropItemNaturally(b.getLocation(), drop.getType().isBlock() ? drop: new CustomItem(drop, fortune)); - } - b.setType(Material.AIR); - } - } - return true; - } - else return false; - } - }); + .register(true); new SoulboundItem(Categories.WEAPONS, SlimefunItems.SOULBOUND_SWORD, "SOULBOUND_SWORD", new ItemStack[] {null, SlimefunItems.ESSENCE_OF_AFTERLIFE, null, null, new ItemStack(Material.DIAMOND_SWORD), null, null, SlimefunItems.ESSENCE_OF_AFTERLIFE, null}) From a1a3ee68ef7216fe269c1b50606f1e30aeefdd48 Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Tue, 3 Sep 2019 20:35:21 +0200 Subject: [PATCH 163/169] Added Tier 2 Coal and Lava Generators --- .../Slimefun/Lists/SlimefunItems.java | 14 +- .../SlimefunItem/cargo/CargoManagerBlock.java | 66 ++++ .../machines/electric/CarbonPress.java | 10 +- .../electric/ElectricIngotFactory.java | 10 + .../machines/electric/ElectricOreGrinder.java | 32 ++ .../machines/electric/ElevatorPlate.java | 52 +++ .../machines/electric/FoodComposter.java | 11 + .../machines/electric/FoodFabricator.java | 16 +- .../machines/electric/Freezer.java | 10 + .../electric/generators/CoalGenerator.java | 46 +++ .../generators/CombustionGenerator.java | 34 ++ .../electric/generators/LavaGenerator.java | 32 ++ .../Slimefun/Setup/SlimefunSetup.java | 363 +++--------------- 13 files changed, 374 insertions(+), 322 deletions(-) create mode 100644 src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/cargo/CargoManagerBlock.java create mode 100644 src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricOreGrinder.java create mode 100644 src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElevatorPlate.java create mode 100644 src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/generators/CoalGenerator.java create mode 100644 src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/generators/CombustionGenerator.java create mode 100644 src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/generators/LavaGenerator.java diff --git a/src/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java b/src/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java index 9096d7832..cc02ae1c6 100644 --- a/src/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java +++ b/src/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java @@ -8,8 +8,8 @@ import org.bukkit.ChatColor; import org.bukkit.Color; import org.bukkit.FireworkEffect; import org.bukkit.FireworkEffect.Type; -import org.bukkit.enchantments.Enchantment; import org.bukkit.Material; +import org.bukkit.enchantments.Enchantment; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.FireworkEffectMeta; import org.bukkit.potion.PotionEffect; @@ -486,8 +486,13 @@ public final class SlimefunItems { public static final ItemStack SOLAR_PANEL = new CustomItem(Material.DAYLIGHT_DETECTOR, "&bSolar Panel", "", "&a&oTransforms Sunlight to Energy"); public static final ItemStack SOLAR_ARRAY = new CustomItem(Material.DAYLIGHT_DETECTOR, "&bSolar Array", "", "&a&oTransforms Sunlight to Energy"); - public static final ItemStack DIGITAL_MINER = new CustomItem(Material.IRON_PICKAXE, "&bDigital Miner", "", "&a&oDigs out everything!"); - public static final ItemStack ADVANCED_DIGITAL_MINER = new CustomItem(Material.DIAMOND_PICKAXE, "&6Advanced Digital Miner", "", "&a&oDigs out everything!", "&a&oAutomatically crushes your Ores"); + + @Deprecated + public static final ItemStack DIGITAL_MINER = new CustomItem(Material.IRON_PICKAXE, "&bDigital Miner", "", "&4DEPRECATED", "&cThis machine will soon be removed!"); + + @Deprecated + public static final ItemStack ADVANCED_DIGITAL_MINER = new CustomItem(Material.DIAMOND_PICKAXE, "&6Advanced Digital Miner", "", "&4DEPRECATED", "&cThis machine will soon be removed!"); + public static final ItemStack AUTOMATED_PANNING_MACHINE = new CustomItem(Material.BOWL, "&aAutomated Panning Machine", "", "&a&oA MultiBlock Version of the Gold Pan"); public static final ItemStack OUTPUT_CHEST = new CustomItem(Material.CHEST, "&4Output Chest", "", "&c&oA basic machine will try to put", "&c&oitems in this chest if it's placed", "&c&oadjacent to the dispenser."); public static final ItemStack HOLOGRAM_PROJECTOR = new CustomItem(Material.QUARTZ_SLAB, "&bHologram Projector", "", "&rProjects an Editable Hologram"); @@ -597,7 +602,10 @@ public final class SlimefunItems { public static final ItemStack SOLAR_GENERATOR_4 = new CustomItem(Material.DAYLIGHT_DETECTOR, "&eEnergized Solar Generator", "", "&9Works at Night", "", "&4End-Game Generator", "&8\u21E8 &e\u26A1 &70 J Buffer", "&8\u21E8 &e\u26A1 &7256 J/s (Day)", "&8\u21E8 &e\u26A1 &7128 J/s (Night)"); public static final ItemStack COAL_GENERATOR = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTM0M2NlNThkYTU0Yzc5OTI0YTJjOTMzMWNmYzQxN2ZlOGNjYmJlYTliZTQ1YTdhYzg1ODYwYTZjNzMwIn19fQ=="), "&cCoal Generator", "", "&6Average Generator", "&8\u21E8 &e\u26A1 &764 J Buffer", "&8\u21E8 &e\u26A1 &716 J/s"); + public static final ItemStack COAL_GENERATOR_2 = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTM0M2NlNThkYTU0Yzc5OTI0YTJjOTMzMWNmYzQxN2ZlOGNjYmJlYTliZTQ1YTdhYzg1ODYwYTZjNzMwIn19fQ=="), "&cCoal Generator &7(&eII&7)", "", "&6Advanced Generator", "&8\u21E8 &e\u26A1 &7256 J Buffer", "&8\u21E8 &e\u26A1 &730 J/s"); + public static final ItemStack LAVA_GENERATOR = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTM0M2NlNThkYTU0Yzc5OTI0YTJjOTMzMWNmYzQxN2ZlOGNjYmJlYTliZTQ1YTdhYzg1ODYwYTZjNzMwIn19fQ=="), "&4Lava Generator", "", "&6Average Generator", "&8\u21E8 &e\u26A1 &7512 J Buffer", "&8\u21E8 &e\u26A1 &720 J/s"); + public static final ItemStack LAVA_GENERATOR_2 = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTM0M2NlNThkYTU0Yzc5OTI0YTJjOTMzMWNmYzQxN2ZlOGNjYmJlYTliZTQ1YTdhYzg1ODYwYTZjNzMwIn19fQ=="), "&4Lava Generator &7&eII&7)", "", "&6Advanced Generator", "&8\u21E8 &e\u26A1 &71024 J Buffer", "&8\u21E8 &e\u26A1 &740 J/s"); public static final ItemStack ELECTRIC_FURNACE = new CustomItem(Material.FURNACE, "&cElectric Furnace", "", "&eBasic Machine", "&8\u21E8 &7Speed: 1x", "&8\u21E8 &e\u26A1 &74 J/s"); public static final ItemStack ELECTRIC_FURNACE_2 = new CustomItem(Material.FURNACE, "&cElectric Furnace &7- &eII", "", "&aMedium Machine", "&8\u21E8 &7Speed: 2x", "&8\u21E8 &e\u26A1 &76 J/s"); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/cargo/CargoManagerBlock.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/cargo/CargoManagerBlock.java new file mode 100644 index 000000000..817715d95 --- /dev/null +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/cargo/CargoManagerBlock.java @@ -0,0 +1,66 @@ +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.cargo; + +import org.bukkit.ChatColor; +import org.bukkit.block.Block; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; + +import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config; +import me.mrCookieSlime.CSCoreLibPlugin.events.ItemUseEvent; +import me.mrCookieSlime.Slimefun.Lists.RecipeType; +import me.mrCookieSlime.Slimefun.Objects.Category; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; +import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker; +import me.mrCookieSlime.Slimefun.Objects.handlers.ItemInteractionHandler; +import me.mrCookieSlime.Slimefun.api.BlockStorage; +import me.mrCookieSlime.Slimefun.api.item_transport.CargoNet; +import me.mrCookieSlime.Slimefun.holograms.CargoHologram; + +public class CargoManagerBlock extends SlimefunItem { + + public CargoManagerBlock(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe) { + super(category, item, id, recipeType, recipe); + + SlimefunItem.registerBlockHandler("CARGO_MANAGER", (p, b, tool, reason) -> { + CargoHologram.remove(b); + return true; + }); + } + + @Override + public void preRegister() { + addItemHandler(new BlockTicker() { + + @Override + public void tick(Block b, SlimefunItem item, Config data) { + CargoNet.getNetworkFromLocationOrCreate(b.getLocation()).tick(b); + } + + @Override + public boolean isSynchronized() { + return false; + } + + }, new ItemInteractionHandler() { + + @Override + public boolean onRightClick(ItemUseEvent e, Player p, ItemStack stack) { + if (e.getClickedBlock() == null) return false; + String item = BlockStorage.checkID(e.getClickedBlock()); + if (item == null || !item.equals(getID())) return false; + e.setCancelled(true); + + if (BlockStorage.getLocationInfo(e.getClickedBlock().getLocation(), "visualizer") == null) { + BlockStorage.addBlockInfo(e.getClickedBlock(), "visualizer", "disabled"); + p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&cCargo Net Visualizer: " + "&4\u2718")); + } + else { + BlockStorage.addBlockInfo(e.getClickedBlock(), "visualizer", null); + p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&cCargo Net Visualizer: " + "&2\u2714")); + } + return true; + } + }); + } + +} diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/CarbonPress.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/CarbonPress.java index 483946cbb..831200b03 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/CarbonPress.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/CarbonPress.java @@ -31,6 +31,14 @@ public abstract class CarbonPress extends AContainer implements RecipeDisplayIte return "CARBON_PRESS"; } - + @Override + public ItemStack getProgressBar() { + return new ItemStack(Material.DIAMOND_PICKAXE); + } + + @Override + public String getInventoryTitle() { + return "&cCarbon Press"; + } } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricIngotFactory.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricIngotFactory.java index e4d891d36..ee0c76b9c 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricIngotFactory.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricIngotFactory.java @@ -33,5 +33,15 @@ public abstract class ElectricIngotFactory extends AContainer implements RecipeD public String getMachineIdentifier() { return "ELECTRIC_INGOT_FACTORY"; } + + @Override + public ItemStack getProgressBar() { + return new ItemStack(Material.FLINT_AND_STEEL); + } + + @Override + public String getInventoryTitle() { + return "&cElectric Ingot Factory"; + } } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricOreGrinder.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricOreGrinder.java new file mode 100644 index 000000000..f2439dcd4 --- /dev/null +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricOreGrinder.java @@ -0,0 +1,32 @@ +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric; + +import org.bukkit.Material; +import org.bukkit.inventory.ItemStack; + +import me.mrCookieSlime.Slimefun.Lists.RecipeType; +import me.mrCookieSlime.Slimefun.Objects.Category; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.RecipeDisplayItem; + +public abstract class ElectricOreGrinder extends AContainer implements RecipeDisplayItem { + + public ElectricOreGrinder(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) { + super(category, item, name, recipeType, recipe); + } + + @Override + public String getMachineIdentifier() { + return "ELECTRIC_ORE_GRINDER"; + } + + @Override + public ItemStack getProgressBar() { + return new ItemStack(Material.IRON_PICKAXE); + } + + @Override + public String getInventoryTitle() { + return "&bElectric Ore Grinder"; + } + +} diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElevatorPlate.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElevatorPlate.java new file mode 100644 index 000000000..5a08dceca --- /dev/null +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElevatorPlate.java @@ -0,0 +1,52 @@ +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric; + +import org.bukkit.block.Block; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; + +import me.mrCookieSlime.Slimefun.GPS.Elevator; +import me.mrCookieSlime.Slimefun.Lists.RecipeType; +import me.mrCookieSlime.Slimefun.Objects.Category; +import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SimpleSlimefunItem; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason; +import me.mrCookieSlime.Slimefun.Objects.handlers.ItemInteractionHandler; +import me.mrCookieSlime.Slimefun.api.BlockStorage; + +public class ElevatorPlate extends SimpleSlimefunItem { + + public ElevatorPlate(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe, ItemStack recipeOutput) { + super(category, item, id, recipeType, recipe, recipeOutput); + + SlimefunItem.registerBlockHandler("ELEVATOR_PLATE", new SlimefunBlockHandler() { + + @Override + public void onPlace(Player p, Block b, SlimefunItem item) { + BlockStorage.addBlockInfo(b, "floor", "&rFloor #0"); + BlockStorage.addBlockInfo(b, "owner", p.getUniqueId().toString()); + } + + @Override + public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) { + return true; + } + }); + } + + @Override + public ItemInteractionHandler getItemHandler() { + return (e, p, item) -> { + if (e.getClickedBlock() == null) return false; + String id = BlockStorage.checkID(e.getClickedBlock()); + if (id == null || !id.equals(getID())) return false; + + if (BlockStorage.getLocationInfo(e.getClickedBlock().getLocation(), "owner").equals(p.getUniqueId().toString())) { + Elevator.openEditor(p, e.getClickedBlock()); + } + + return true; + }; + } + +} diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/FoodComposter.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/FoodComposter.java index aab8479c8..962d9738b 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/FoodComposter.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/FoodComposter.java @@ -1,5 +1,6 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric; +import org.bukkit.Material; import org.bukkit.inventory.ItemStack; import me.mrCookieSlime.Slimefun.Lists.RecipeType; @@ -29,5 +30,15 @@ public abstract class FoodComposter extends AContainer implements RecipeDisplayI public String getMachineIdentifier() { return "FOOD_COMPOSTER"; } + + @Override + public ItemStack getProgressBar() { + return new ItemStack(Material.GOLDEN_HOE); + } + + @Override + public String getInventoryTitle() { + return "&cFood Composter"; + } } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/FoodFabricator.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/FoodFabricator.java index eea001c0b..bdd210f5f 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/FoodFabricator.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/FoodFabricator.java @@ -1,13 +1,13 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric; +import org.bukkit.Material; +import org.bukkit.inventory.ItemStack; + import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer; -import org.bukkit.Material; -import org.bukkit.inventory.ItemStack; - public abstract class FoodFabricator extends AContainer { public FoodFabricator(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) { @@ -28,5 +28,15 @@ public abstract class FoodFabricator extends AContainer { public String getMachineIdentifier() { return "FOOD_FABRICATOR"; } + + @Override + public ItemStack getProgressBar() { + return new ItemStack(Material.GOLDEN_HOE); + } + + @Override + public String getInventoryTitle() { + return "&cFood Fabricator"; + } } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/Freezer.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/Freezer.java index 946c2b7d4..d0fc50fba 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/Freezer.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/Freezer.java @@ -40,6 +40,16 @@ public abstract class Freezer extends AContainer implements RecipeDisplayItem { return displayRecipes; } + @Override + public ItemStack getProgressBar() { + return new ItemStack(Material.GOLDEN_PICKAXE); + } + + @Override + public String getInventoryTitle() { + return "&bFreezer"; + } + @Override public String getMachineIdentifier() { return "FREEZER"; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/generators/CoalGenerator.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/generators/CoalGenerator.java new file mode 100644 index 000000000..11db7221d --- /dev/null +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/generators/CoalGenerator.java @@ -0,0 +1,46 @@ +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.generators; + +import org.bukkit.Material; +import org.bukkit.Tag; +import org.bukkit.inventory.ItemStack; + +import me.mrCookieSlime.Slimefun.Lists.RecipeType; +import me.mrCookieSlime.Slimefun.Objects.Category; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AGenerator; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineFuel; + +public abstract class CoalGenerator extends AGenerator { + + public CoalGenerator(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe) { + super(category, item, id, recipeType, recipe); + } + + @Override + public void registerDefaultRecipes() { + registerFuel(new MachineFuel(8, new ItemStack(Material.COAL))); + registerFuel(new MachineFuel(8, new ItemStack(Material.CHARCOAL))); + registerFuel(new MachineFuel(80, new ItemStack(Material.COAL_BLOCK))); + registerFuel(new MachineFuel(12, new ItemStack(Material.BLAZE_ROD))); + + // Logs + for (Material mat: Tag.LOGS.getValues()) { + registerFuel(new MachineFuel(2, new ItemStack(mat))); + } + + // Wooden Planks + for (Material mat: Tag.PLANKS.getValues()) { + registerFuel(new MachineFuel(1, new ItemStack(mat))); + } + } + + @Override + public ItemStack getProgressBar() { + return new ItemStack(Material.FLINT_AND_STEEL); + } + + @Override + public String getInventoryTitle() { + return "&cCoal Generator"; + } + +} diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/generators/CombustionGenerator.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/generators/CombustionGenerator.java new file mode 100644 index 000000000..080e9bc86 --- /dev/null +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/generators/CombustionGenerator.java @@ -0,0 +1,34 @@ +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.generators; + +import org.bukkit.Material; +import org.bukkit.inventory.ItemStack; + +import me.mrCookieSlime.Slimefun.Lists.RecipeType; +import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; +import me.mrCookieSlime.Slimefun.Objects.Category; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AGenerator; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineFuel; + +public abstract class CombustionGenerator extends AGenerator { + + public CombustionGenerator(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe) { + super(category, item, id, recipeType, recipe); + } + + @Override + public void registerDefaultRecipes() { + registerFuel(new MachineFuel(30, SlimefunItems.BUCKET_OF_OIL)); + registerFuel(new MachineFuel(90, SlimefunItems.BUCKET_OF_FUEL)); + } + + @Override + public ItemStack getProgressBar() { + return new ItemStack(Material.FLINT_AND_STEEL); + } + + @Override + public String getInventoryTitle() { + return "&cCombustion Reactor"; + } + +} diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/generators/LavaGenerator.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/generators/LavaGenerator.java new file mode 100644 index 000000000..a6705e8f9 --- /dev/null +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/generators/LavaGenerator.java @@ -0,0 +1,32 @@ +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.generators; + +import org.bukkit.Material; +import org.bukkit.inventory.ItemStack; + +import me.mrCookieSlime.Slimefun.Lists.RecipeType; +import me.mrCookieSlime.Slimefun.Objects.Category; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AGenerator; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineFuel; + +public abstract class LavaGenerator extends AGenerator { + + public LavaGenerator(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe) { + super(category, item, id, recipeType, recipe); + } + + @Override + public void registerDefaultRecipes() { + registerFuel(new MachineFuel(40, new ItemStack(Material.LAVA_BUCKET))); + } + + @Override + public ItemStack getProgressBar() { + return new ItemStack(Material.FLINT_AND_STEEL); + } + + @Override + public String getInventoryTitle() { + return "&4Lava Generator"; + } + +} diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java index 32ccae43c..bce313dad 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java @@ -46,7 +46,6 @@ import me.mrCookieSlime.CSCoreLibPlugin.general.Particles.FireworkShow; import me.mrCookieSlime.CSCoreLibPlugin.general.Player.PlayerInventory; import me.mrCookieSlime.CSCoreLibPlugin.general.World.CustomSkull; import me.mrCookieSlime.Slimefun.SlimefunPlugin; -import me.mrCookieSlime.Slimefun.GPS.Elevator; import me.mrCookieSlime.Slimefun.GPS.GPSNetwork; import me.mrCookieSlime.Slimefun.GPS.NetworkStatus; import me.mrCookieSlime.Slimefun.Lists.Categories; @@ -75,13 +74,13 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SoulboundItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.Talisman; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.VanillaItem; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AGenerator; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AReactor; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineFuel; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.Teleporter; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.cargo.AdvancedCargoOutputNode; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.cargo.CargoInputNode; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.cargo.CargoManagerBlock; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.cargo.CargoOutputNode; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.DietCookie; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.ExplosivePickaxe; @@ -127,8 +126,10 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.Electric import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.ElectricGoldPan; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.ElectricIngotFactory; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.ElectricIngotPulverizer; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.ElectricOreGrinder; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.ElectricSmeltery; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.ElectrifiedCrucible; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.ElevatorPlate; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.EnergyRegulator; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.FluidPump; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.FoodComposter; @@ -139,6 +140,9 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.NetherDr import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.OilPump; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.Refinery; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.WitherAssembler; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.generators.CoalGenerator; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.generators.CombustionGenerator; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.generators.LavaGenerator; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.ArmorForge; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.AutomatedPanningMachine; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.Compressor; @@ -166,7 +170,6 @@ import me.mrCookieSlime.Slimefun.api.Slimefun; import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock; import me.mrCookieSlime.Slimefun.api.energy.EnergyTicker; import me.mrCookieSlime.Slimefun.api.item_transport.CargoNet; -import me.mrCookieSlime.Slimefun.holograms.CargoHologram; import me.mrCookieSlime.Slimefun.holograms.ReactorHologram; public final class SlimefunSetup { @@ -1002,8 +1005,8 @@ public final class SlimefunSetup { if (p.hasPotionEffect(PotionEffectType.WEAKNESS)) p.removePotionEffect(PotionEffectType.WEAKNESS); if (p.hasPotionEffect(PotionEffectType.CONFUSION)) p.removePotionEffect(PotionEffectType.CONFUSION); if (p.hasPotionEffect(PotionEffectType.BLINDNESS)) p.removePotionEffect(PotionEffectType.BLINDNESS); - p.addPotionEffect(new PotionEffect(PotionEffectType.HEAL, 1, 2)); p.setFireTicks(0); + p.addPotionEffect(new PotionEffect(PotionEffectType.HEAL, 1, 2)); e.setCancelled(true); return true; } @@ -1101,6 +1104,7 @@ public final class SlimefunSetup { @Override public boolean onInteract(final Player p, MultiBlock mb, final Block b) { if (mb.isMultiBlock(SlimefunItem.getByID("DIGITAL_MINER"))) { + p.sendMessage(ChatColor.DARK_RED + "THIS MACHINE WILL SOON BE REMOVED!"); if (CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true) && Slimefun.hasUnlocked(p, SlimefunItems.DIGITAL_MINER, true)) { Block chestBlock = b.getRelative(BlockFace.UP); @@ -1158,6 +1162,7 @@ public final class SlimefunSetup { @Override public boolean onInteract(final Player p, MultiBlock mb, final Block b) { if (mb.isMultiBlock(SlimefunItem.getByID("ADVANCED_DIGITAL_MINER"))) { + p.sendMessage(ChatColor.DARK_RED + "THIS MACHINE WILL SOON BE REMOVED!"); if (CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true) && Slimefun.hasUnlocked(p, SlimefunItems.ADVANCED_DIGITAL_MINER, true)) { Block chestBlock = b.getRelative(BlockFace.UP); @@ -2012,17 +2017,7 @@ public final class SlimefunSetup { new ElectricIngotFactory(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_INGOT_FACTORY, "ELECTRIC_INGOT_FACTORY", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {null, new ItemStack(Material.FLINT_AND_STEEL), null, SlimefunItems.HEATING_COIL, SlimefunItems.ELECTRIC_DUST_WASHER, SlimefunItems.HEATING_COIL, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.DAMASCUS_STEEL_INGOT}) { - - @Override - public ItemStack getProgressBar() { - return new ItemStack(Material.FLINT_AND_STEEL); - } - - @Override - public String getInventoryTitle() { - return "&cElectric Ingot Factory"; - } - + @Override public int getEnergyConsumption() { return 4; @@ -2038,16 +2033,6 @@ public final class SlimefunSetup { new ElectricIngotFactory(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_INGOT_FACTORY_2, "ELECTRIC_INGOT_FACTORY_2", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {SlimefunItems.GILDED_IRON, new ItemStack(Material.FLINT_AND_STEEL), SlimefunItems.GILDED_IRON, SlimefunItems.HEATING_COIL, SlimefunItems.ELECTRIC_INGOT_FACTORY, SlimefunItems.HEATING_COIL, SlimefunItems.BRASS_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.BRASS_INGOT}) { - @Override - public ItemStack getProgressBar() { - return new ItemStack(Material.FLINT_AND_STEEL); - } - - @Override - public String getInventoryTitle() { - return "&cElectric Ingot Factory"; - } - @Override public int getEnergyConsumption() { return 7; @@ -2063,16 +2048,6 @@ public final class SlimefunSetup { new ElectricIngotFactory(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_INGOT_FACTORY_3, "ELECTRIC_INGOT_FACTORY_3", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {SlimefunItems.GILDED_IRON, new ItemStack(Material.FLINT_AND_STEEL), SlimefunItems.GILDED_IRON, SlimefunItems.HEATING_COIL, SlimefunItems.ELECTRIC_INGOT_FACTORY_2, SlimefunItems.HEATING_COIL, SlimefunItems.BRASS_INGOT, SlimefunItems.BLISTERING_INGOT_3, SlimefunItems.BRASS_INGOT}) { - @Override - public ItemStack getProgressBar() { - return new ItemStack(Material.FLINT_AND_STEEL); - } - - @Override - public String getInventoryTitle() { - return "&cElectric Ingot Factory"; - } - @Override public int getEnergyConsumption() { return 20; @@ -2130,19 +2105,9 @@ public final class SlimefunSetup { }.registerChargeableBlock(true, 1024); - new AContainer(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_ORE_GRINDER, "ELECTRIC_ORE_GRINDER", RecipeType.ENHANCED_CRAFTING_TABLE, + new ElectricOreGrinder(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_ORE_GRINDER, "ELECTRIC_ORE_GRINDER", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {null, new ItemStack(Material.DIAMOND_PICKAXE), null, SlimefunItems.GILDED_IRON, SlimefunItems.HEATING_COIL, SlimefunItems.GILDED_IRON, SlimefunItems.GILDED_IRON, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.GILDED_IRON}) { - @Override - public ItemStack getProgressBar() { - return new ItemStack(Material.STONE_PICKAXE); - } - - @Override - public String getInventoryTitle() { - return "&bElectric Ore Grinder"; - } - @Override public int getEnergyConsumption() { return 6; @@ -2153,26 +2118,11 @@ public final class SlimefunSetup { return 1; } - @Override - public String getMachineIdentifier() { - return "ELECTRIC_ORE_GRINDER"; - } - }.registerChargeableBlock(true, 128); - new AContainer(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_ORE_GRINDER_2, "ELECTRIC_ORE_GRINDER_2", RecipeType.ENHANCED_CRAFTING_TABLE, + new ElectricOreGrinder(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_ORE_GRINDER_2, "ELECTRIC_ORE_GRINDER_2", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {null, new ItemStack(Material.DIAMOND_PICKAXE), null, SlimefunItems.HEATING_COIL, SlimefunItems.ELECTRIC_ORE_GRINDER, SlimefunItems.HEATING_COIL, SlimefunItems.GILDED_IRON, SlimefunItems.BLISTERING_INGOT_3, SlimefunItems.GILDED_IRON}) { - @Override - public ItemStack getProgressBar() { - return new ItemStack(Material.DIAMOND_PICKAXE); - } - - @Override - public String getInventoryTitle() { - return "&bElectric Ore Grinder"; - } - @Override public int getEnergyConsumption() { return 15; @@ -2183,21 +2133,11 @@ public final class SlimefunSetup { return 4; } - @Override - public String getMachineIdentifier() { - return "ELECTRIC_ORE_GRINDER"; - } - }.registerChargeableBlock(true, 512); new HeatedPressureChamber(Categories.ELECTRICITY, SlimefunItems.HEATED_PRESSURE_CHAMBER, "HEATED_PRESSURE_CHAMBER", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {SlimefunItems.LEAD_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.LEAD_INGOT, SlimefunItems.LEAD_INGOT, new ItemStack(Material.GLASS), SlimefunItems.LEAD_INGOT, SlimefunItems.LEAD_INGOT, SlimefunItems.HEATING_COIL, SlimefunItems.LEAD_INGOT}) { - - @Override - public ItemStack getProgressBar() { - return new ItemStack(Material.FLINT_AND_STEEL); - } - + @Override public int getEnergyConsumption() { return 5; @@ -2213,11 +2153,6 @@ public final class SlimefunSetup { new HeatedPressureChamber(Categories.ELECTRICITY, SlimefunItems.HEATED_PRESSURE_CHAMBER_2, "HEATED_PRESSURE_CHAMBER_2", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {SlimefunItems.LEAD_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.LEAD_INGOT, SlimefunItems.LEAD_INGOT, SlimefunItems.HEATED_PRESSURE_CHAMBER, SlimefunItems.LEAD_INGOT, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.HEATING_COIL, SlimefunItems.REINFORCED_ALLOY_INGOT}) { - @Override - public ItemStack getProgressBar() { - return new ItemStack(Material.FLINT_AND_STEEL); - } - @Override public int getEnergyConsumption() { return 22; @@ -2234,43 +2169,9 @@ public final class SlimefunSetup { new ItemStack[] {null, SlimefunItems.ELECTRIC_ORE_GRINDER, null, SlimefunItems.LEAD_INGOT, SlimefunItems.MEDIUM_CAPACITOR, SlimefunItems.LEAD_INGOT, SlimefunItems.LEAD_INGOT, SlimefunItems.HEATING_COIL, SlimefunItems.LEAD_INGOT}) .registerChargeableBlock(true, 512); - new AGenerator(Categories.ELECTRICITY, SlimefunItems.COAL_GENERATOR, "COAL_GENERATOR", RecipeType.ENHANCED_CRAFTING_TABLE, + new CoalGenerator(Categories.ELECTRICITY, SlimefunItems.COAL_GENERATOR, "COAL_GENERATOR", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {SlimefunItems.HEATING_COIL, new ItemStack(Material.FURNACE), SlimefunItems.HEATING_COIL, SlimefunItems.NICKEL_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.NICKEL_INGOT, null, SlimefunItems.NICKEL_INGOT, null}) { - - @Override - public void registerDefaultRecipes() { - registerFuel(new MachineFuel(8, new ItemStack(Material.COAL))); - registerFuel(new MachineFuel(8, new ItemStack(Material.CHARCOAL))); - registerFuel(new MachineFuel(80, new ItemStack(Material.COAL_BLOCK))); - registerFuel(new MachineFuel(12, new ItemStack(Material.BLAZE_ROD))); - - // Logs - registerFuel(new MachineFuel(1, new ItemStack(Material.OAK_LOG))); - registerFuel(new MachineFuel(1, new ItemStack(Material.SPRUCE_LOG))); - registerFuel(new MachineFuel(1, new ItemStack(Material.BIRCH_LOG))); - registerFuel(new MachineFuel(1, new ItemStack(Material.JUNGLE_LOG))); - registerFuel(new MachineFuel(1, new ItemStack(Material.ACACIA_LOG))); - registerFuel(new MachineFuel(1, new ItemStack(Material.DARK_OAK_LOG))); - - // Wooden Planks - registerFuel(new MachineFuel(1, new ItemStack(Material.OAK_WOOD))); - registerFuel(new MachineFuel(1, new ItemStack(Material.SPRUCE_WOOD))); - registerFuel(new MachineFuel(1, new ItemStack(Material.BIRCH_WOOD))); - registerFuel(new MachineFuel(1, new ItemStack(Material.JUNGLE_WOOD))); - registerFuel(new MachineFuel(1, new ItemStack(Material.ACACIA_WOOD))); - registerFuel(new MachineFuel(1, new ItemStack(Material.DARK_OAK_WOOD))); - } - - @Override - public ItemStack getProgressBar() { - return new ItemStack(Material.FLINT_AND_STEEL); - } - - @Override - public String getInventoryTitle() { - return "&cCoal Generator"; - } - + @Override public int getEnergyProduction() { return 8; @@ -2278,6 +2179,16 @@ public final class SlimefunSetup { }.registerUnrechargeableBlock(true, 64); + new CoalGenerator(Categories.ELECTRICITY, SlimefunItems.COAL_GENERATOR_2, "COAL_GENERATOR_2", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {new ItemStack(Material.MAGMA_BLOCK), SlimefunItems.HEATING_COIL, new ItemStack(Material.MAGMA_BLOCK), SlimefunItems.HARDENED_METAL_INGOT, SlimefunItems.COAL_GENERATOR, SlimefunItems.HARDENED_METAL_INGOT, null, SlimefunItems.ELECTRIC_MOTOR, null}) { + + @Override + public int getEnergyProduction() { + return 15; + } + + }.registerUnrechargeableBlock(true, 256); + new AGenerator(Categories.ELECTRICITY, SlimefunItems.BIO_REACTOR, "BIO_REACTOR", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {SlimefunItems.HEATING_COIL, SlimefunItems.COMPOSTER, SlimefunItems.HEATING_COIL, SlimefunItems.ALUMINUM_BRASS_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.ALUMINUM_BRASS_INGOT, null, SlimefunItems.ALUMINUM_BRASS_INGOT, null}) { @@ -3043,24 +2954,9 @@ public final class SlimefunSetup { }.registerChargeableBlock(true, 256); - new AGenerator(Categories.ELECTRICITY, SlimefunItems.LAVA_GENERATOR, "LAVA_GENERATOR", RecipeType.ENHANCED_CRAFTING_TABLE, + new LavaGenerator(Categories.ELECTRICITY, SlimefunItems.LAVA_GENERATOR, "LAVA_GENERATOR", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {null, SlimefunItems.GOLD_16K, null, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.HEATING_COIL, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.HEATING_COIL}) { - - @Override - public void registerDefaultRecipes() { - registerFuel(new MachineFuel(40, new ItemStack(Material.LAVA_BUCKET))); - } - - @Override - public ItemStack getProgressBar() { - return new ItemStack(Material.FLINT_AND_STEEL); - } - - @Override - public String getInventoryTitle() { - return "&4Lava Generator"; - } - + @Override public int getEnergyProduction() { return 10; @@ -3068,25 +2964,19 @@ public final class SlimefunSetup { }.registerUnrechargeableBlock(true, 512); - new AGenerator(Categories.ELECTRICITY, SlimefunItems.COMBUSTION_REACTOR, "COMBUSTION_REACTOR", RecipeType.ENHANCED_CRAFTING_TABLE, + new LavaGenerator(Categories.ELECTRICITY, SlimefunItems.LAVA_GENERATOR_2, "LAVA_GENERATOR_2", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.CORINTHIAN_BRONZE_INGOT, SlimefunItems.CORINTHIAN_BRONZE_INGOT, SlimefunItems.CORINTHIAN_BRONZE_INGOT, SlimefunItems.COMPRESSED_CARBON, SlimefunItems.LAVA_GENERATOR, SlimefunItems.COMPRESSED_CARBON, SlimefunItems.HEATING_COIL, SlimefunItems.COMPRESSED_CARBON, SlimefunItems.HEATING_COIL}) { + + @Override + public int getEnergyProduction() { + return 20; + } + + }.registerUnrechargeableBlock(true, 1024); + + new CombustionGenerator(Categories.ELECTRICITY, SlimefunItems.COMBUSTION_REACTOR, "COMBUSTION_REACTOR", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {null, SlimefunItems.STEEL_INGOT, null, SlimefunItems.STEEL_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.STEEL_INGOT, SlimefunItems.HEATING_COIL, SlimefunItems.STEEL_INGOT, SlimefunItems.HEATING_COIL}) { - - @Override - public void registerDefaultRecipes() { - registerFuel(new MachineFuel(30, SlimefunItems.BUCKET_OF_OIL)); - registerFuel(new MachineFuel(90, SlimefunItems.BUCKET_OF_FUEL)); - } - - @Override - public ItemStack getProgressBar() { - return new ItemStack(Material.FLINT_AND_STEEL); - } - - @Override - public String getInventoryTitle() { - return "&cCombustion Reactor"; - } - + @Override public int getEnergyProduction() { return 12; @@ -3150,49 +3040,14 @@ public final class SlimefunSetup { new ItemStack[]{SlimefunItems.NETHER_ICE, SlimefunItems.PLUTONIUM, null, null, null, null, null, null, null}) .register(true); - new SlimefunItem(Categories.GPS, SlimefunItems.ELEVATOR, "ELEVATOR_PLATE", RecipeType.ENHANCED_CRAFTING_TABLE, + new ElevatorPlate(Categories.GPS, SlimefunItems.ELEVATOR, "ELEVATOR_PLATE", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {null, new ItemStack(Material.STONE_PRESSURE_PLATE), null, new ItemStack(Material.PISTON), SlimefunItems.ELECTRIC_MOTOR, new ItemStack(Material.PISTON), SlimefunItems.ALUMINUM_BRONZE_INGOT, SlimefunItems.ALUMINUM_BRONZE_INGOT, SlimefunItems.ALUMINUM_BRONZE_INGOT}, new CustomItem(SlimefunItems.ELEVATOR, 2)) - .register(true, new ItemInteractionHandler() { - - @Override - public boolean onRightClick(final ItemUseEvent e, Player p, ItemStack stack) { - if (e.getClickedBlock() == null) return false; - String item = BlockStorage.checkID(e.getClickedBlock()); - if (item == null || !item.equals("ELEVATOR_PLATE")) return false; - - if (BlockStorage.getLocationInfo(e.getClickedBlock().getLocation(), "owner").equals(p.getUniqueId().toString())) Elevator.openEditor(p, e.getClickedBlock()); - return true; - } - }); - - SlimefunItem.registerBlockHandler("ELEVATOR_PLATE", new SlimefunBlockHandler() { - - @Override - public void onPlace(Player p, Block b, SlimefunItem item) { - BlockStorage.addBlockInfo(b, "floor", "&rFloor #0"); - BlockStorage.addBlockInfo(b, "owner", p.getUniqueId().toString()); - } - - @Override - public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) { - return true; - } - }); + .register(true); new FoodFabricator(Categories.ELECTRICITY, SlimefunItems.FOOD_FABRICATOR, "FOOD_FABRICATOR", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {SlimefunItems.BILLON_INGOT, SlimefunItems.SILVER_INGOT, SlimefunItems.BILLON_INGOT, SlimefunItems.CAN, SlimefunItems.SMALL_CAPACITOR, SlimefunItems.CAN, null, SlimefunItems.ELECTRIC_MOTOR, null}) { - @Override - public ItemStack getProgressBar() { - return new ItemStack(Material.GOLDEN_HOE); - } - - @Override - public String getInventoryTitle() { - return "&cFood Fabricator"; - } - @Override public int getEnergyConsumption() { return 7; @@ -3207,17 +3062,7 @@ public final class SlimefunSetup { new FoodFabricator(Categories.ELECTRICITY, SlimefunItems.FOOD_FABRICATOR_2, "FOOD_FABRICATOR_2", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {SlimefunItems.HARDENED_METAL_INGOT, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.HARDENED_METAL_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.FOOD_FABRICATOR, SlimefunItems.ELECTRIC_MOTOR, null, SlimefunItems.ELECTRO_MAGNET, null}) { - - @Override - public ItemStack getProgressBar() { - return new ItemStack(Material.DIAMOND_HOE); - } - - @Override - public String getInventoryTitle() { - return "&cFood Fabricator"; - } - + @Override public int getEnergyConsumption() { return 24; @@ -3272,17 +3117,7 @@ public final class SlimefunSetup { new FoodComposter(Categories.ELECTRICITY, SlimefunItems.FOOD_COMPOSTER, "FOOD_COMPOSTER", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.FOOD_FABRICATOR, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.CAN, SlimefunItems.MEDIUM_CAPACITOR, SlimefunItems.CAN, null, SlimefunItems.ELECTRIC_MOTOR, null}) { - - @Override - public ItemStack getProgressBar() { - return new ItemStack(Material.GOLDEN_HOE); - } - - @Override - public String getInventoryTitle() { - return "&cFood Composter"; - } - + @Override public int getEnergyConsumption() { return 8; @@ -3298,16 +3133,6 @@ public final class SlimefunSetup { new FoodComposter(Categories.ELECTRICITY, SlimefunItems.FOOD_COMPOSTER_2, "FOOD_COMPOSTER_2", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {SlimefunItems.HARDENED_METAL_INGOT, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.HARDENED_METAL_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.FOOD_COMPOSTER, SlimefunItems.ELECTRIC_MOTOR, null, SlimefunItems.ELECTRO_MAGNET, null}) { - @Override - public ItemStack getProgressBar() { - return new ItemStack(Material.DIAMOND_HOE); - } - - @Override - public String getInventoryTitle() { - return "&cFood Composter"; - } - @Override public int getEnergyConsumption() { return 26; @@ -3349,8 +3174,7 @@ public final class SlimefunSetup { .register(true); new CropGrowthAccelerator(Categories.ELECTRICITY, SlimefunItems.CROP_GROWTH_ACCELERATOR, "CROP_GROWTH_ACCELERATOR", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {null, SlimefunItems.BLISTERING_INGOT_3, null, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.PROGRAMMABLE_ANDROID_FARMER, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.ANIMAL_GROWTH_ACCELERATOR, SlimefunItems.ELECTRO_MAGNET}) - { + new ItemStack[] {null, SlimefunItems.BLISTERING_INGOT_3, null, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.PROGRAMMABLE_ANDROID_FARMER, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.ANIMAL_GROWTH_ACCELERATOR, SlimefunItems.ELECTRO_MAGNET}) { @Override public int getEnergyConsumption() { @@ -3370,8 +3194,7 @@ public final class SlimefunSetup { }.registerChargeableBlock(true, 1024); new CropGrowthAccelerator(Categories.ELECTRICITY, SlimefunItems.CROP_GROWTH_ACCELERATOR_2, "CROP_GROWTH_ACCELERATOR_2", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {null, SlimefunItems.BLISTERING_INGOT_3, null, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.CROP_GROWTH_ACCELERATOR, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.ADVANCED_CIRCUIT_BOARD, SlimefunItems.ELECTRO_MAGNET}) - { + new ItemStack[] {null, SlimefunItems.BLISTERING_INGOT_3, null, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.CROP_GROWTH_ACCELERATOR, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.ADVANCED_CIRCUIT_BOARD, SlimefunItems.ELECTRO_MAGNET}) { @Override public int getEnergyConsumption() { @@ -3392,17 +3215,7 @@ public final class SlimefunSetup { new Freezer(Categories.ELECTRICITY, SlimefunItems.FREEZER, "FREEZER", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {null, SlimefunItems.SILVER_INGOT, null, SlimefunItems.ELECTRIC_MOTOR, new ItemStack(Material.PACKED_ICE), SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.COOLING_UNIT, SlimefunItems.MEDIUM_CAPACITOR, SlimefunItems.COOLING_UNIT}) { - - @Override - public ItemStack getProgressBar() { - return new ItemStack(Material.GOLDEN_PICKAXE); - } - - @Override - public String getInventoryTitle() { - return "&bFreezer"; - } - + @Override public int getEnergyConsumption() { return 9; @@ -3418,16 +3231,6 @@ public final class SlimefunSetup { new Freezer(Categories.ELECTRICITY, SlimefunItems.FREEZER_2, "FREEZER_2", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {null, SlimefunItems.SILVER_INGOT, null, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.FREEZER, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.COOLING_UNIT, SlimefunItems.ALUMINUM_BRASS_INGOT, SlimefunItems.COOLING_UNIT}) { - @Override - public ItemStack getProgressBar() { - return new ItemStack(Material.DIAMOND_PICKAXE); - } - - @Override - public String getInventoryTitle() { - return "&bFreezer"; - } - @Override public int getEnergyConsumption() { return 15; @@ -3554,49 +3357,9 @@ public final class SlimefunSetup { new ItemStack[] {SlimefunItems.HARDENED_GLASS, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.HARDENED_GLASS, SlimefunItems.SILVER_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.SILVER_INGOT, SlimefunItems.HARDENED_GLASS, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.HARDENED_GLASS}, new CustomItem(SlimefunItems.CARGO_MOTOR, 4)) .register(true); - new SlimefunItem(Categories.CARGO, SlimefunItems.CARGO_MANAGER, "CARGO_MANAGER", RecipeType.ENHANCED_CRAFTING_TABLE, + new CargoManagerBlock(Categories.CARGO, SlimefunItems.CARGO_MANAGER, "CARGO_MANAGER", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {null, SlimefunItems.HOLOGRAM_PROJECTOR, null, SlimefunItems.REINFORCED_PLATE, SlimefunItems.CARGO_MOTOR, SlimefunItems.REINFORCED_PLATE, SlimefunItems.ALUMINUM_BRONZE_INGOT, SlimefunItems.ANDROID_MEMORY_CORE, SlimefunItems.ALUMINUM_BRONZE_INGOT}) - .register(true, new BlockTicker() { - - @Override - public void tick(Block b, SlimefunItem item, Config data) { - CargoNet.getNetworkFromLocationOrCreate(b.getLocation()).tick(b); - } - - @Override - public boolean isSynchronized() { - return false; - } - - }, new ItemInteractionHandler() { - - @Override - public boolean onRightClick(ItemUseEvent e, Player p, ItemStack stack) { - if (e.getClickedBlock() == null) return false; - String item = BlockStorage.checkID(e.getClickedBlock()); - if (item == null || !item.equals("CARGO_MANAGER")) return false; - e.setCancelled(true); - - if (BlockStorage.getLocationInfo(e.getClickedBlock().getLocation(), "visualizer") == null) { - BlockStorage.addBlockInfo(e.getClickedBlock(), "visualizer", "disabled"); - p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&cCargo Net Visualizer: " + "&4\u2718")); - } - else { - BlockStorage.addBlockInfo(e.getClickedBlock(), "visualizer", null); - p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&cCargo Net Visualizer: " + "&2\u2714")); - } - return true; - } - }); - - SlimefunItem.registerBlockHandler("CARGO_MANAGER", new SlimefunBlockHandler() { - - @Override - public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) { - CargoHologram.remove(b); - return true; - } - }); + .register(true); new SlimefunItem(Categories.CARGO, SlimefunItems.CARGO_NODE, "CARGO_NODE", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {SlimefunItems.BRONZE_INGOT, SlimefunItems.SILVER_INGOT, SlimefunItems.BRONZE_INGOT, SlimefunItems.SILVER_INGOT, SlimefunItems.CARGO_MOTOR, SlimefunItems.SILVER_INGOT, SlimefunItems.BRONZE_INGOT, SlimefunItems.SILVER_INGOT, SlimefunItems.BRONZE_INGOT}, new CustomItem(SlimefunItems.CARGO_NODE, 4)) @@ -3656,16 +3419,6 @@ public final class SlimefunSetup { new CarbonPress(Categories.ELECTRICITY, SlimefunItems.CARBON_PRESS, "CARBON_PRESS", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {SlimefunItems.CARBON, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.CARBON, SlimefunItems.CARBON, SlimefunItems.HEATED_PRESSURE_CHAMBER, SlimefunItems.CARBON, SlimefunItems.HEATING_COIL, SlimefunItems.CARBONADO, SlimefunItems.HEATING_COIL}) { - @Override - public ItemStack getProgressBar() { - return new ItemStack(Material.DIAMOND_PICKAXE); - } - - @Override - public String getInventoryTitle() { - return "&cCarbon Press"; - } - @Override public int getEnergyConsumption() { return 10; @@ -3681,16 +3434,6 @@ public final class SlimefunSetup { new CarbonPress(Categories.ELECTRICITY, SlimefunItems.CARBON_PRESS_2, "CARBON_PRESS_2", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {SlimefunItems.CARBONADO, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.CARBONADO, SlimefunItems.CARBON, SlimefunItems.CARBON_PRESS, SlimefunItems.CARBON, SlimefunItems.HEATING_COIL, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.HEATING_COIL}) { - @Override - public ItemStack getProgressBar() { - return new ItemStack(Material.DIAMOND_PICKAXE); - } - - @Override - public String getInventoryTitle() { - return "&cCarbon Press"; - } - @Override public int getEnergyConsumption() { return 25; @@ -3706,16 +3449,6 @@ public final class SlimefunSetup { new CarbonPress(Categories.ELECTRICITY, SlimefunItems.CARBON_PRESS_3, "CARBON_PRESS_3", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {SlimefunItems.CARBONADO, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.CARBONADO, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.CARBON_PRESS_2, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.HEATING_COIL, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.HEATING_COIL}) { - @Override - public ItemStack getProgressBar() { - return new ItemStack(Material.DIAMOND_PICKAXE); - } - - @Override - public String getInventoryTitle() { - return "&cCarbon Press"; - } - @Override public int getEnergyConsumption() { return 90; From 681114729258ba8e40e35e5eca4c4e0a42e93745 Mon Sep 17 00:00:00 2001 From: Alex Mercer Date: Tue, 3 Sep 2019 23:55:20 -0700 Subject: [PATCH 164/169] Changed the code one more time --- src/me/mrCookieSlime/Slimefun/Setup/Messages.java | 2 +- src/me/mrCookieSlime/Slimefun/SlimefunGuide.java | 8 +++----- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/Setup/Messages.java b/src/me/mrCookieSlime/Slimefun/Setup/Messages.java index 0e85d7cd6..df3fd95a1 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/Messages.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/Messages.java @@ -67,7 +67,7 @@ public final class Messages { local.setDefault("messages.cannot-place" ,"&cYou cannot place that block there!"); local.setDefault("messages.no-pvp" ,"&cYou cannot pvp in here!"); - local.setDefault("tooltips.item-permission", "&rYou do not have Permission", "&rto access this Item"); + local.setDefault("tooltips.item-permission", "", "&rYou do not have Permission", "&rto access this Item"); local.setDefault("machines.pattern-not-found", "&eSorry, I could not recognize this Pattern. Please place the Items in the correct Pattern into the Dispenser."); local.setDefault("machines.unknown-material", "&eSorry, I could not recognize the Item in my Dispenser. Please put something in that I know."); diff --git a/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java b/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java index ffc0a66db..91827cce6 100644 --- a/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java +++ b/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java @@ -717,11 +717,9 @@ public final class SlimefunGuide { } else { List list = Messages.local.getTranslation("tooltips.item-permission"); - StringBuilder sb = new StringBuilder(65536); - for (String strings : list) { - sb.append("\n" + strings); - menu.addItem(index, new CustomItem(Material.BARRIER, StringUtils.formatItemName(sfitem.getItem(), false), "", sb.toString())); - } + String[] strings = list.toArray(new String[list.size()]); + CustomItem display = new CustomItem(Material.BARRIER, StringUtils.formatItemName(sfitem.getItem(), false), strings); + menu.addItem(index, display); menu.addMenuClickHandler(index, (pl, slot, item, action) -> false); index++; } From af401864186a9eb0cbc3886d2d71a156bcd8914b Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Wed, 4 Sep 2019 09:54:24 +0200 Subject: [PATCH 165/169] Updated dependencies --- pom.xml | 2 +- src/me/mrCookieSlime/Slimefun/Objects/Research.java | 5 +++++ src/me/mrCookieSlime/Slimefun/api/PlayerProfile.java | 5 +++++ 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index d50ff0df5..73cf906c1 100644 --- a/pom.xml +++ b/pom.xml @@ -124,7 +124,7 @@ com.github.thebusybiscuit CS-CoreLib2 - 0.3.12 + 0.4 compile diff --git a/src/me/mrCookieSlime/Slimefun/Objects/Research.java b/src/me/mrCookieSlime/Slimefun/Objects/Research.java index 8392cee84..ceae58924 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/Research.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/Research.java @@ -418,4 +418,9 @@ public class Research { public static List getResearches(String uuid) { return getResearches(UUID.fromString(uuid)); } + + @Override + public String toString() { + return "Research {" + id + "," + name + "}"; + } } \ No newline at end of file diff --git a/src/me/mrCookieSlime/Slimefun/api/PlayerProfile.java b/src/me/mrCookieSlime/Slimefun/api/PlayerProfile.java index 159c5b006..d551985b0 100644 --- a/src/me/mrCookieSlime/Slimefun/api/PlayerProfile.java +++ b/src/me/mrCookieSlime/Slimefun/api/PlayerProfile.java @@ -212,5 +212,10 @@ public final class PlayerProfile { return null; } } + + @Override + public String toString() { + return "PlayerProfile {" + uuid + "}"; + } } From f623c5d2ea477a0162eb4dd7aaaedc72ca8796b4 Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Wed, 4 Sep 2019 19:42:17 +0200 Subject: [PATCH 166/169] Reduced technical debt --- .../Slimefun/Objects/Category.java | 43 ++++++------------- .../Objects/SlimefunItem/SlimefunItem.java | 17 +++----- .../abstractItems/MachineHelper.java | 2 +- .../machines/AncientPedestal.java | 27 ++++++++++++ .../machines/electric/AutoDrier.java | 42 +++++++++--------- .../SlimefunItem/multiblocks/TableSaw.java | 2 +- .../Slimefun/Setup/MiscSetup.java | 2 +- .../Slimefun/Setup/SlimefunManager.java | 18 +++++--- .../Slimefun/Setup/SlimefunSetup.java | 19 +------- .../mrCookieSlime/Slimefun/SlimefunGuide.java | 2 +- .../Slimefun/SlimefunPlugin.java | 2 - .../Slimefun/api/SlimefunRecipes.java | 7 +-- .../holograms/HologramProjectorHologram.java | 4 ++ .../Slimefun/utils/CategorySorter.java | 17 ++++++++ .../Slimefun/utils/Utilities.java | 17 ++++++-- 15 files changed, 126 insertions(+), 95 deletions(-) create mode 100644 src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AncientPedestal.java create mode 100644 src/me/mrCookieSlime/Slimefun/utils/CategorySorter.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/Category.java b/src/me/mrCookieSlime/Slimefun/Objects/Category.java index 2a0d0472a..20acc458f 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/Category.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/Category.java @@ -2,7 +2,6 @@ package me.mrCookieSlime.Slimefun.Objects; import java.util.ArrayList; import java.util.Collections; -import java.util.Comparator; import java.util.List; import org.bukkit.inventory.ItemFlag; @@ -25,13 +24,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; * @see SeasonalCategory */ public class Category { - /** - * List of the registered Categories. - * @since 4.0 - * @see Categories - */ - public static List list = new ArrayList<>(); - + private ItemStack item; private List items; private int tier; @@ -79,15 +72,19 @@ public class Category { * @since 4.0 */ public void register() { - list.add(this); - Collections.sort(list, new CategorySorter()); + SlimefunPlugin.getUtilities().allCategories.add(this); + Collections.sort(list(), SlimefunPlugin.getUtilities().categorySorter); if (this instanceof SeasonalCategory) { - if (((SeasonalCategory) this).isUnlocked()) SlimefunPlugin.getUtilities().currentlyEnabledCategories.add(this); + if (((SeasonalCategory) this).isUnlocked()) { + SlimefunPlugin.getUtilities().enabledCategories.add(this); + } + } + else { + SlimefunPlugin.getUtilities().enabledCategories.add(this); } - else SlimefunPlugin.getUtilities().currentlyEnabledCategories.add(this); - Collections.sort(SlimefunPlugin.getUtilities().currentlyEnabledCategories, new CategorySorter()); + Collections.sort(SlimefunPlugin.getUtilities().enabledCategories, SlimefunPlugin.getUtilities().categorySorter); } /** @@ -99,7 +96,7 @@ public class Category { * @see Categories */ public static List list() { - return list; + return SlimefunPlugin.getUtilities().allCategories; } /** @@ -143,8 +140,9 @@ public class Category { * * @since 4.0 */ + @Deprecated public static Category getByItem(ItemStack item) { - for (Category c: list) { + for (Category c: list()) { if (c.getItem().isSimilar(item)) return c; } return null; @@ -161,19 +159,4 @@ public class Category { return tier; } - /** - * @since 4.0 - */ - class CategorySorter implements Comparator { - - /** - * @since 4.0 - */ - @Override - public int compare(Category c1, Category c2) { - return Integer.compare(c1.getTier(), c2.getTier()); - } - - } - } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java index 31420ffa8..f41d29cc8 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java @@ -33,10 +33,7 @@ import me.mrCookieSlime.Slimefun.api.energy.EnergyTicker; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu; public class SlimefunItem { - - public static List items = new ArrayList<>(); - public static List all = new ArrayList<>(); - + private String id; private String hash; private State state; @@ -211,7 +208,7 @@ public class SlimefunItem { throw new IllegalArgumentException("ID \"" + this.id + "\" already exists"); } if (this.recipe.length < 9) this.recipe = new ItemStack[] {null, null, null, null, null, null, null, null, null}; - all.add(this); + SlimefunPlugin.getUtilities().allItems.add(this); SlimefunPlugin.getItemCfg().setDefaultValue(this.id + ".enabled", true); SlimefunPlugin.getItemCfg().setDefaultValue(this.id + ".can-be-used-in-workbenches", this.replacing); @@ -246,7 +243,7 @@ public class SlimefunItem { this.enchantable = SlimefunPlugin.getItemCfg().getBoolean(this.id + ".allow-enchanting"); this.disenchantable = SlimefunPlugin.getItemCfg().getBoolean(this.id + ".allow-disenchanting"); this.permission = SlimefunPlugin.getItemCfg().getString(this.id + ".required-permission"); - items.add(this); + SlimefunPlugin.getUtilities().enabledItems.add(this); if (slimefun) SlimefunPlugin.getUtilities().vanillaItems++; SlimefunPlugin.getUtilities().itemIDs.put(this.id, this); @@ -274,7 +271,7 @@ public class SlimefunItem { } public static List list() { - return items; + return SlimefunPlugin.getUtilities().enabledItems; } public void bindToResearch(Research r) { @@ -325,7 +322,7 @@ public class SlimefunItem { public static SlimefunItem getByItem(ItemStack item) { if (item == null) return null; - for (SlimefunItem sfi: items) { + for (SlimefunItem sfi: SlimefunPlugin.getUtilities().enabledItems) { if ((sfi instanceof ChargableItem && SlimefunManager.isItemSimiliar(item, sfi.getItem(), false)) || (sfi instanceof DamagableChargableItem && SlimefunManager.isItemSimiliar(item, sfi.getItem(), false)) || (sfi instanceof ChargedItem && SlimefunManager.isItemSimiliar(item, sfi.getItem(), false)) || @@ -378,7 +375,7 @@ public class SlimefunItem { } public static State getState(ItemStack item) { - for (SlimefunItem i: all) { + for (SlimefunItem i: SlimefunPlugin.getUtilities().allItems) { if (i.isItem(item)) { return i.getState(); } @@ -387,7 +384,7 @@ public class SlimefunItem { } public static boolean isDisabled(ItemStack item) { - for (SlimefunItem i: all) { + for (SlimefunItem i: SlimefunPlugin.getUtilities().allItems) { if (i.isItem(item)) { return i.isDisabled(); } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/MachineHelper.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/MachineHelper.java index cc9ccad25..90c042baa 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/MachineHelper.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/MachineHelper.java @@ -98,7 +98,7 @@ public final class MachineHelper { im.setLore(lore); item.setItemMeta(im); - menu.replaceExistingItem(22, item); + menu.replaceExistingItem(slot, item); } } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AncientPedestal.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AncientPedestal.java new file mode 100644 index 000000000..6086c4a2c --- /dev/null +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AncientPedestal.java @@ -0,0 +1,27 @@ +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines; + +import org.bukkit.entity.Item; +import org.bukkit.inventory.ItemStack; + +import me.mrCookieSlime.Slimefun.SlimefunPlugin; +import me.mrCookieSlime.Slimefun.Lists.RecipeType; +import me.mrCookieSlime.Slimefun.Objects.Category; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; +import me.mrCookieSlime.Slimefun.ancient_altar.AncientAltarListener; + +public class AncientPedestal extends SlimefunItem { + + public AncientPedestal(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe, ItemStack recipeOutput) { + super(category, item, id, recipeType, recipe, recipeOutput); + + SlimefunItem.registerBlockHandler(getID(), (p, b, tool, reason) -> { + Item stack = AncientAltarListener.findItem(b); + if (stack != null) { + stack.removeMetadata("item_placed", SlimefunPlugin.instance); + b.getWorld().dropItem(b.getLocation(), AncientAltarListener.fixItemStack(stack.getItemStack(), stack.getCustomName())); + stack.remove(); + } + return true; + }); + } +} 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 c72346212..43e08855d 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoDrier.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoDrier.java @@ -23,34 +23,34 @@ import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock; public class AutoDrier extends AContainer implements RecipeDisplayItem { - private final List recipes = new ArrayList<>(); + private final List recipeList = new ArrayList<>(); public AutoDrier(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe) { super(category, item, id, recipeType, recipe); - recipes.add(new ItemStack(Material.ROTTEN_FLESH)); - recipes.add(new ItemStack(Material.LEATHER)); + recipeList.add(new ItemStack(Material.ROTTEN_FLESH)); + recipeList.add(new ItemStack(Material.LEATHER)); - recipes.add(new ItemStack(Material.WET_SPONGE)); - recipes.add(new ItemStack(Material.SPONGE)); + recipeList.add(new ItemStack(Material.WET_SPONGE)); + recipeList.add(new ItemStack(Material.SPONGE)); - recipes.add(new ItemStack(Material.KELP)); - recipes.add(new ItemStack(Material.DRIED_KELP)); + recipeList.add(new ItemStack(Material.KELP)); + recipeList.add(new ItemStack(Material.DRIED_KELP)); - recipes.add(new ItemStack(Material.COOKED_BEEF)); - recipes.add(SlimefunItems.BEEF_JERKY); + recipeList.add(new ItemStack(Material.COOKED_BEEF)); + recipeList.add(SlimefunItems.BEEF_JERKY); - recipes.add(new ItemStack(Material.POTION)); - recipes.add(new ItemStack(Material.GLASS_BOTTLE)); + recipeList.add(new ItemStack(Material.POTION)); + recipeList.add(new ItemStack(Material.GLASS_BOTTLE)); - recipes.add(new ItemStack(Material.OAK_SAPLING)); - recipes.add(new ItemStack(Material.STICK, 2)); + recipeList.add(new ItemStack(Material.OAK_SAPLING)); + recipeList.add(new ItemStack(Material.STICK, 2)); - recipes.add(new ItemStack(Material.OAK_LEAVES)); - recipes.add(new ItemStack(Material.STICK)); + recipeList.add(new ItemStack(Material.OAK_LEAVES)); + recipeList.add(new ItemStack(Material.STICK)); - recipes.add(new ItemStack(Material.WATER_BUCKET)); - recipes.add(new ItemStack(Material.BUCKET)); + recipeList.add(new ItemStack(Material.WATER_BUCKET)); + recipeList.add(new ItemStack(Material.BUCKET)); } @Override @@ -65,7 +65,7 @@ public class AutoDrier extends AContainer implements RecipeDisplayItem { @Override public List getDisplayRecipes() { - return recipes; + return recipeList; } @Override @@ -100,9 +100,9 @@ public class AutoDrier extends AContainer implements RecipeDisplayItem { Material mat = item.getType(); ItemStack output = null; - for (int i = 0; i < recipes.size(); i += 2) { - if (SlimefunManager.isItemSimiliar(item, recipes.get(i), true)) { - output = recipes.get(i + 1); + for (int i = 0; i < recipeList.size(); i += 2) { + if (SlimefunManager.isItemSimiliar(item, recipeList.get(i), true)) { + output = recipeList.get(i + 1); } } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/TableSaw.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/TableSaw.java index 79b4ac163..259077952 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/TableSaw.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/TableSaw.java @@ -16,7 +16,7 @@ import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; public class TableSaw extends MultiBlockMachine { - private final List displayRecipes = new ArrayList(); + private final List displayRecipes = new ArrayList<>(); public TableSaw() { super( diff --git a/src/me/mrCookieSlime/Slimefun/Setup/MiscSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/MiscSetup.java index 1e3c27c53..c859aaeaf 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/MiscSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/MiscSetup.java @@ -49,7 +49,7 @@ public final class MiscSetup { } public static void loadItems(Settings settings) { - Iterator iterator = SlimefunItem.items.iterator(); + Iterator iterator = SlimefunItem.list().iterator(); while (iterator.hasNext()) { SlimefunItem item = iterator.next(); if (item == null) { diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunManager.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunManager.java index f05aa753d..185f8fd4f 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunManager.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunManager.java @@ -3,6 +3,7 @@ package me.mrCookieSlime.Slimefun.Setup; import java.util.ArrayList; import java.util.List; +import org.bukkit.ChatColor; import org.bukkit.inventory.ItemStack; import org.bukkit.potion.PotionEffect; @@ -116,14 +117,21 @@ public final class SlimefunManager { } private static boolean equalsLore(List lore, List lore2) { - String string1 = ""; - String string2 = ""; + StringBuilder string1 = new StringBuilder(); + StringBuilder string2 = new StringBuilder(); + for (String string: lore) { - if (!string.startsWith("&e&e&7")) string1 = string1 + "-NEW LINE-" + string; + if (!string.startsWith(ChatColor.translateAlternateColorCodes('&', "&e&e&7"))) { + string1.append("-NEW LINE-" + string); + } } + for (String string: lore2) { - if (!string.startsWith("&e&e&7")) string2 = string2 + "-NEW LINE-" + string; + if (!string.startsWith(ChatColor.translateAlternateColorCodes('&', "&e&e&7"))) { + string2.append("-NEW LINE-" + string); + } } - return string1.equals(string2); + + return string1.toString().equals(string2.toString()); } } diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java index bce313dad..334e2469f 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java @@ -23,7 +23,6 @@ import org.bukkit.block.CreatureSpawner; import org.bukkit.entity.EnderPearl; import org.bukkit.entity.Entity; import org.bukkit.entity.EntityType; -import org.bukkit.entity.Item; import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; import org.bukkit.event.block.BlockPlaceEvent; @@ -103,6 +102,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.SmeltersPickaxe; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.StormStaff; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.SwordOfBeheading; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.TelepositionScroll; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.AncientPedestal; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.BlockPlacer; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.Composter; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.Crucible; @@ -162,7 +162,6 @@ import me.mrCookieSlime.Slimefun.Objects.handlers.ItemConsumptionHandler; import me.mrCookieSlime.Slimefun.Objects.handlers.ItemInteractionHandler; import me.mrCookieSlime.Slimefun.Objects.handlers.MultiBlockInteractionHandler; import me.mrCookieSlime.Slimefun.Objects.tasks.RainbowTicker; -import me.mrCookieSlime.Slimefun.ancient_altar.AncientAltarListener; import me.mrCookieSlime.Slimefun.androids.AndroidType; import me.mrCookieSlime.Slimefun.androids.ProgrammableAndroid; import me.mrCookieSlime.Slimefun.api.BlockStorage; @@ -1732,24 +1731,10 @@ public final class SlimefunSetup { new CustomItem(SlimefunItems.WITHER_PROOF_OBSIDIAN, 4)) .register(true); - new SlimefunItem(Categories.LUMPS_AND_MAGIC, SlimefunItems.ANCIENT_PEDESTAL, "ANCIENT_PEDESTAL", RecipeType.MAGIC_WORKBENCH, + new AncientPedestal(Categories.LUMPS_AND_MAGIC, SlimefunItems.ANCIENT_PEDESTAL, "ANCIENT_PEDESTAL", RecipeType.MAGIC_WORKBENCH, new ItemStack[] {new ItemStack(Material.OBSIDIAN), SlimefunItems.GOLD_8K, new ItemStack(Material.OBSIDIAN), null, new ItemStack(Material.STONE), null, new ItemStack(Material.OBSIDIAN), SlimefunItems.GOLD_8K, new ItemStack(Material.OBSIDIAN)}, new CustomItem(SlimefunItems.ANCIENT_PEDESTAL, 4)) .register(true); - SlimefunItem.registerBlockHandler("ANCIENT_PEDESTAL", new SlimefunBlockHandler() { - - @Override - public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) { - Item stack = AncientAltarListener.findItem(b); - if (stack != null) { - stack.removeMetadata("item_placed", SlimefunPlugin.instance); - b.getWorld().dropItem(b.getLocation(), AncientAltarListener.fixItemStack(stack.getItemStack(), stack.getCustomName())); - stack.remove(); - } - return true; - } - }); - new SlimefunItem(Categories.MAGIC, SlimefunItems.ANCIENT_ALTAR, "ANCIENT_ALTAR", RecipeType.MAGIC_WORKBENCH, new ItemStack[] {null, new ItemStack(Material.ENCHANTING_TABLE), null, SlimefunItems.MAGIC_LUMP_3, SlimefunItems.GOLD_8K, SlimefunItems.MAGIC_LUMP_3, new ItemStack(Material.OBSIDIAN), SlimefunItems.GOLD_8K, new ItemStack(Material.OBSIDIAN)}) .register(true); diff --git a/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java b/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java index 08f0edb04..eefc6c453 100644 --- a/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java +++ b/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java @@ -404,7 +404,7 @@ public final class SlimefunGuide { pl -> pl.playSound(pl.getLocation(), Sound.ENTITY_BAT_TAKEOFF, 0.7F, 0.7F) ); - List categories = SlimefunPlugin.getUtilities().currentlyEnabledCategories; + List categories = SlimefunPlugin.getUtilities().enabledCategories; List handlers = SlimefunPlugin.getUtilities().guideHandlers.values().stream().flatMap(List::stream).collect(Collectors.toList()); int index = 9; diff --git a/src/me/mrCookieSlime/Slimefun/SlimefunPlugin.java b/src/me/mrCookieSlime/Slimefun/SlimefunPlugin.java index 6af513583..0e4000e04 100644 --- a/src/me/mrCookieSlime/Slimefun/SlimefunPlugin.java +++ b/src/me/mrCookieSlime/Slimefun/SlimefunPlugin.java @@ -359,8 +359,6 @@ public final class SlimefunPlugin extends JavaPlugin { // Prevent Memory Leaks Messages.local = null; - SlimefunItem.all = null; - SlimefunItem.items = null; AContainer.processing = null; AContainer.progress = null; OreWasher.items = null; diff --git a/src/me/mrCookieSlime/Slimefun/api/SlimefunRecipes.java b/src/me/mrCookieSlime/Slimefun/api/SlimefunRecipes.java index a14229ac2..5b17246d6 100644 --- a/src/me/mrCookieSlime/Slimefun/api/SlimefunRecipes.java +++ b/src/me/mrCookieSlime/Slimefun/api/SlimefunRecipes.java @@ -1,16 +1,17 @@ package me.mrCookieSlime.Slimefun.api; +import org.bukkit.inventory.ItemStack; + +import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer; -import org.bukkit.inventory.ItemStack; - public final class SlimefunRecipes { private SlimefunRecipes() {} public static void registerMachineRecipe(String machine, int seconds, ItemStack[] input, ItemStack[] output) { - for (SlimefunItem item: SlimefunItem.all) { + for (SlimefunItem item: SlimefunPlugin.getUtilities().allItems) { if (item instanceof AContainer && ((AContainer) item).getMachineIdentifier().equals(machine)) { ((AContainer) item).registerRecipe(seconds, input, output); } diff --git a/src/me/mrCookieSlime/Slimefun/holograms/HologramProjectorHologram.java b/src/me/mrCookieSlime/Slimefun/holograms/HologramProjectorHologram.java index 24a73f8e1..b04a86d0d 100644 --- a/src/me/mrCookieSlime/Slimefun/holograms/HologramProjectorHologram.java +++ b/src/me/mrCookieSlime/Slimefun/holograms/HologramProjectorHologram.java @@ -30,6 +30,10 @@ public final class HologramProjectorHologram { if (n instanceof ArmorStand && n.getCustomName() != null && n.getCustomName().equals(nametag) && l.distanceSquared(n.getLocation()) < 0.4D) return (ArmorStand) n; } + if (!createIfNoneExists) { + return null; + } + ArmorStand hologram = ArmorStandFactory.createHidden(l); hologram.setCustomName(nametag); return hologram; diff --git a/src/me/mrCookieSlime/Slimefun/utils/CategorySorter.java b/src/me/mrCookieSlime/Slimefun/utils/CategorySorter.java new file mode 100644 index 000000000..64cf469c4 --- /dev/null +++ b/src/me/mrCookieSlime/Slimefun/utils/CategorySorter.java @@ -0,0 +1,17 @@ +package me.mrCookieSlime.Slimefun.utils; + +import java.util.Comparator; + +import me.mrCookieSlime.Slimefun.Objects.Category; + +public class CategorySorter implements Comparator { + + /** + * @since 4.0 + */ + @Override + public int compare(Category c1, Category c2) { + return Integer.compare(c1.getTier(), c2.getTier()); + } + +} \ No newline at end of file diff --git a/src/me/mrCookieSlime/Slimefun/utils/Utilities.java b/src/me/mrCookieSlime/Slimefun/utils/Utilities.java index 5b2024847..98ad43ece 100644 --- a/src/me/mrCookieSlime/Slimefun/utils/Utilities.java +++ b/src/me/mrCookieSlime/Slimefun/utils/Utilities.java @@ -17,6 +17,7 @@ import org.bukkit.entity.EntityType; import org.bukkit.inventory.ItemStack; import me.mrCookieSlime.Slimefun.GEO.OreGenResource; +import me.mrCookieSlime.Slimefun.Lists.Categories; import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.MultiBlock; import me.mrCookieSlime.Slimefun.Objects.Research; @@ -46,11 +47,23 @@ import me.mrCookieSlime.Slimefun.hooks.github.GitHubConnector; public final class Utilities { public int vanillaItems = 0; - + + public final List allItems = new ArrayList<>(); + public final List enabledItems = new ArrayList<>(); public final Map itemIDs = new HashMap<>(); + public final List allMultiblocks = new LinkedList<>(); public final List allResearches = new LinkedList<>(); + /** + * List of the registered Categories. + * @since 4.0 + * @see Categories + */ + public final List allCategories = new ArrayList<>(); + public final List enabledCategories = new ArrayList<>(); + public final CategorySorter categorySorter = new CategorySorter(); + public final Set radioactiveItems = new HashSet<>(); public final Map> itemHandlers = new HashMap<>(); public final Map blockHandlers = new HashMap<>(); @@ -69,8 +82,6 @@ public final class Utilities { public final Map blockMenuPresets = new HashMap<>(); - public final List currentlyEnabledCategories = new ArrayList<>(); - public final Map automatedCraftingChamberRecipes = new HashMap<>(); public final Map worlds = new HashMap<>(); From b4dff80dcc8c2fa505b0a4da5a1d1ad5b6a7a328 Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Wed, 4 Sep 2019 19:51:03 +0200 Subject: [PATCH 167/169] Reduced technical debt --- .../Objects/SlimefunItem/EnderTalisman.java | 29 +++++-------------- .../Objects/SlimefunItem/Talisman.java | 17 +++++++---- 2 files changed, 19 insertions(+), 27 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/EnderTalisman.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/EnderTalisman.java index b133b19c9..f8cad8cc6 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/EnderTalisman.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/EnderTalisman.java @@ -1,38 +1,25 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem; import org.bukkit.inventory.ItemStack; -import org.bukkit.potion.PotionEffect; import me.mrCookieSlime.Slimefun.Lists.Categories; -import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; import me.mrCookieSlime.Slimefun.api.Slimefun; /** * @since 4.0 */ -public class EnderTalisman extends SlimefunItem { - - private String suffix; - private boolean consumable; - private boolean cancel; - private PotionEffect[] effects; - private int chance; +public class EnderTalisman extends Talisman { public EnderTalisman(Talisman parent) { - super(Categories.TALISMANS_2, parent.upgrade(), "ENDER_" + parent.getID(), RecipeType.MAGIC_WORKBENCH, new ItemStack[] {SlimefunItems.ENDER_LUMP_3, null, SlimefunItems.ENDER_LUMP_3, null, parent.getItem(), null, SlimefunItems.ENDER_LUMP_3, null, SlimefunItems.ENDER_LUMP_3}, parent.upgrade()); - this.consumable = parent.isConsumable(); - this.cancel = parent.isEventCancelled(); - this.suffix = parent.getSuffix(); - this.effects = parent.getEffects(); - this.chance = parent.getChance(); + super(Categories.TALISMANS_2, parent.upgrade(), "ENDER_" + parent.getID(), new ItemStack[] {SlimefunItems.ENDER_LUMP_3, null, SlimefunItems.ENDER_LUMP_3, null, parent.getItem(), null, SlimefunItems.ENDER_LUMP_3, null, SlimefunItems.ENDER_LUMP_3}); + + consumable = parent.isConsumable(); + cancel = parent.isEventCancelled(); + suffix = parent.getSuffix(); + effects = parent.getEffects(); + chance = parent.getChance(); Slimefun.addHint("ENDER_" + parent.getID(), "&eEnder Talismans have the advantage", "&eof still working while they", "&eare in your Ender Chest"); } - - public String getSuffix() { return this.suffix; } - public boolean isConsumable() { return this.consumable; } - public boolean isEventCancelled() { return this.cancel; } - public PotionEffect[] getEffects() { return this.effects; } - public int getChance() { return this.chance; } } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/Talisman.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/Talisman.java index 598a51d9a..7d437e575 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/Talisman.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/Talisman.java @@ -19,6 +19,7 @@ import org.bukkit.potion.PotionEffect; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; import me.mrCookieSlime.Slimefun.Lists.Categories; import me.mrCookieSlime.Slimefun.Lists.RecipeType; +import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.Research; import me.mrCookieSlime.Slimefun.Setup.Messages; import me.mrCookieSlime.Slimefun.api.Slimefun; @@ -28,11 +29,11 @@ import me.mrCookieSlime.Slimefun.api.Slimefun; */ public class Talisman extends SlimefunItem { - private String suffix; - private boolean consumable = true; - private boolean cancel = true; - private PotionEffect[] effects; - private int chance = 100; + protected String suffix; + protected boolean consumable = true; + protected boolean cancel = true; + protected PotionEffect[] effects; + protected int chance = 100; public Talisman(ItemStack item, String id, ItemStack[] recipe, boolean consumable, boolean cancelEvent, String messageSuffix, PotionEffect... effects) { super(Categories.TALISMANS_1, item, id, RecipeType.MAGIC_WORKBENCH, recipe, new CustomItem(item, consumable ? 4 : 1)); @@ -52,12 +53,16 @@ public class Talisman extends SlimefunItem { } public Talisman(ItemStack item, String id, ItemStack[] recipe, String messageSuffix, int chance, PotionEffect... effects) { - super(Categories.TALISMANS_1, item, id, RecipeType.MAGIC_WORKBENCH, recipe, item); + super(Categories.TALISMANS_1, item, id, RecipeType.MAGIC_WORKBENCH, recipe); this.suffix = messageSuffix; this.effects = effects; this.chance = chance; } + protected Talisman(Category category, ItemStack item, String id, ItemStack[] recipe) { + super(category, item, id, RecipeType.MAGIC_WORKBENCH, recipe); + } + public String getSuffix() { return this.suffix; } From 861ddba8695f36d8f9f430f6adc50f63c5ffa937 Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Wed, 4 Sep 2019 20:55:45 +0200 Subject: [PATCH 168/169] Fixes #1084 --- .../Objects/SlimefunItem/EnderTalisman.java | 17 +++++ .../Objects/SlimefunItem/Talisman.java | 65 +++++++++---------- .../SlimefunItem/multiblocks/Juicer.java | 3 +- .../Slimefun/Setup/SlimefunSetup.java | 2 +- 4 files changed, 52 insertions(+), 35 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/EnderTalisman.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/EnderTalisman.java index f8cad8cc6..f6b515413 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/EnderTalisman.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/EnderTalisman.java @@ -22,4 +22,21 @@ public class EnderTalisman extends Talisman { Slimefun.addHint("ENDER_" + parent.getID(), "&eEnder Talismans have the advantage", "&eof still working while they", "&eare in your Ender Chest"); } + + @Override + public ItemStack upgrade() { + throw new UnsupportedOperationException(); + } + + @Override + public void install() { + // Let's override that, otherwise we would be creating Ender Talismans + // for every Ender Talisman + } + + @Override + public void create() { + // Let's override that, otherwise we would be creating Ender Talismans + // for every Ender Talisman + } } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/Talisman.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/Talisman.java index 7d437e575..ef0d493e4 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/Talisman.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/Talisman.java @@ -83,39 +83,6 @@ public class Talisman extends SlimefunItem { return this.chance; } - public static boolean checkFor(Event e, SlimefunItem item) { - if (!(item instanceof Talisman)) { - return false; - } - - Talisman talisman = (Talisman) item; - if (new Random().nextInt(100) < talisman.getChance()) { - return false; - } - - Player p = getPlayerByEventType(e); - if (p == null || !pass(p, talisman)) { - return false; - } - - if (p.getInventory().containsAtLeast(talisman.getItem(), 1)) { - if (Slimefun.hasUnlocked(p, talisman.getItem(), true)) { - executeTalismanAttributes(e,p,talisman); - return true; - } - else return false; - } - else if (p.getEnderChest().containsAtLeast(talisman.upgrade(), 1)) { - if (Slimefun.hasUnlocked(p, talisman.upgrade(), true)) { - executeTalismanAttributes(e,p,talisman); - return true; - } - else return false; - } - else return false; - - } - public ItemStack upgrade() { List lore = new ArrayList<>(); lore.add("&7&oEnder Infused"); @@ -147,6 +114,38 @@ public class Talisman extends SlimefunItem { private static boolean isTalismanMessage(Talisman talisman){ return !("").equalsIgnoreCase(talisman.getSuffix()); } + + public static boolean checkFor(Event e, SlimefunItem item) { + if (!(item instanceof Talisman)) { + return false; + } + + Talisman talisman = (Talisman) item; + if (new Random().nextInt(100) < talisman.getChance()) { + return false; + } + + Player p = getPlayerByEventType(e); + if (p == null || !pass(p, talisman)) { + return false; + } + + if (p.getInventory().containsAtLeast(talisman.getItem(), 1)) { + if (Slimefun.hasUnlocked(p, talisman.getItem(), true)) { + executeTalismanAttributes(e,p,talisman); + return true; + } + else return false; + } + else if (p.getEnderChest().containsAtLeast(talisman.upgrade(), 1)) { + if (Slimefun.hasUnlocked(p, talisman.upgrade(), true)) { + executeTalismanAttributes(e,p,talisman); + return true; + } + else return false; + } + else return false; + } private static void executeTalismanAttributes(Event e, Player p, Talisman talisman){ consumeItem(p,talisman); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/Juicer.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/Juicer.java index e3222e9cb..789434a83 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/Juicer.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/Juicer.java @@ -29,7 +29,8 @@ public class Juicer extends MultiBlockMachine { new ItemStack(Material.APPLE), SlimefunItems.APPLE_JUICE, new ItemStack(Material.MELON), SlimefunItems.MELON_JUICE, new ItemStack(Material.CARROT), SlimefunItems.CARROT_JUICE, - new ItemStack(Material.PUMPKIN), SlimefunItems.PUMPKIN_JUICE + new ItemStack(Material.PUMPKIN), SlimefunItems.PUMPKIN_JUICE, + new ItemStack(Material.GOLDEN_APPLE), SlimefunItems.GOLDEN_APPLE_JUICE }, Material.NETHER_BRICK_FENCE ); diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java index 334e2469f..7f8196b71 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java @@ -1461,7 +1461,7 @@ public final class SlimefunSetup { .register(true); new Juice(Categories.FOOD, SlimefunItems.GOLDEN_APPLE_JUICE, "GOLDEN_APPLE_JUICE", RecipeType.JUICER, - new ItemStack[] {new ItemStack(Material.GOLDEN_APPLE), null, null, null, null, null, null, null, null}) + new ItemStack[] {null, null, null, null, new ItemStack(Material.GOLDEN_APPLE), null, null, null, null}) .register(true); new SlimefunItem(Categories.LUMPS_AND_MAGIC, SlimefunItems.BROKEN_SPAWNER, "BROKEN_SPAWNER", new RecipeType(SlimefunItems.PICKAXE_OF_CONTAINMENT), From ed2d86403b16b82a26933e02afd4b6815dc527a2 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Wed, 4 Sep 2019 20:33:44 +0000 Subject: [PATCH 169/169] Update dependency com.github.thebusybiscuit:CS-CoreLib2 to v0.4.1 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 73cf906c1..e2aed4a93 100644 --- a/pom.xml +++ b/pom.xml @@ -124,7 +124,7 @@ com.github.thebusybiscuit CS-CoreLib2 - 0.4 + 0.4.1 compile