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 diff --git a/src/me/mrCookieSlime/Slimefun/GEO/OreGenSystem.java b/src/me/mrCookieSlime/Slimefun/GEO/OreGenSystem.java index 1ec6e4ab5..31c75f4de 100644 --- a/src/me/mrCookieSlime/Slimefun/GEO/OreGenSystem.java +++ b/src/me/mrCookieSlime/Slimefun/GEO/OreGenSystem.java @@ -1,25 +1,27 @@ package me.mrCookieSlime.Slimefun.GEO; import java.util.Collection; +import java.util.logging.Level; 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; +import me.mrCookieSlime.Slimefun.api.Slimefun; 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); - System.out.println("[Slimefun - GEO] Registering Ore Gen: " + resource.getName()); + SlimefunPlugin.getUtilities().resources.put(resource.getName(), resource); + 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()) { @@ -29,7 +31,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..88ecba204 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; @@ -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:")); @@ -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..bc0425cc4 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; @@ -24,7 +25,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; @@ -69,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) { @@ -78,37 +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 { - openWaypointControlPanel(pl); - } catch (Exception e) { - e.printStackTrace(); - } - 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 + try { + menu.addItem(2, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjBjOWMxYTAyMmY0MGI3M2YxNGI0Y2JhMzdjNzE4YzZhNTMzZjNhMjg2NGI2NTM2ZDVmNDU2OTM0Y2MxZiJ9fX0="), "&7Transmitter Overview &e(Selected)")); + menu.addMenuClickHandler(2, + (pl, slot, item, action) -> 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 &r(Select)")); + menu.addMenuClickHandler(6, (pl, slot, item, action) -> { + openWaypointControlPanel(pl); + 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); @@ -131,57 +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(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 e) { - e.printStackTrace(); - } - 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 e) { - e.printStackTrace(); - } 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); } @@ -239,24 +234,22 @@ 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++; } menu.open(p); } - public static void openTeleporterGUI(Player p, UUID uuid, Block b, final int complexity) throws Exception { - if (SlimefunStartup.instance.getUtilities().teleporterUsers.contains(p.getUniqueId())) return; + 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); - 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), " "), @@ -264,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/GPS/TeleportationSequence.java b/src/me/mrCookieSlime/Slimefun/GPS/TeleportationSequence.java index 7572a62c8..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; @@ -13,14 +14,15 @@ 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; +import me.mrCookieSlime.Slimefun.api.Slimefun; 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 +50,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 { @@ -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); } } } @@ -83,7 +85,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,10 +97,10 @@ 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(); + } 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 9e8ee5c68..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. @@ -22,24 +25,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")); @@ -50,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 8e562ff70..84b71c975 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 { @@ -773,7 +775,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/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/Category.java b/src/me/mrCookieSlime/Slimefun/Objects/Category.java index 366e3aad1..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.current_categories.add(this); + if (((SeasonalCategory) this).isUnlocked()) SlimefunPlugin.getUtilities().currentlyEnabledCategories.add(this); } - else Slimefun.current_categories.add(this); + else SlimefunPlugin.getUtilities().currentlyEnabledCategories.add(this); - Collections.sort(Slimefun.current_categories, new CategorySorter()); + Collections.sort(SlimefunPlugin.getUtilities().currentlyEnabledCategories, new CategorySorter()); } /** 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 c832015d7..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; @@ -17,7 +18,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 +81,7 @@ public class Research { } public boolean isEnabled() { - return SlimefunStartup.instance.getSettings().RESEARCHES_ENABLED && enabled; + return SlimefunPlugin.getSettings().researchesEnabled && enabled; } /** @@ -214,7 +215,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 && SlimefunPlugin.getSettings().researchesFreeInCreative) || p.getLevel() >= this.cost; } /** @@ -247,29 +248,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 +283,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 +295,18 @@ 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.getSettings().printOutLoading) { + Slimefun.getLogger().log(Level.INFO, "Loaded Research \"" + this.getName() + "\""); + } } /** @@ -327,7 +330,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 2324f1b7e..c3dc11e02 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; @@ -15,7 +16,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; @@ -29,7 +30,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; @@ -37,7 +38,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<>(); @@ -67,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. @@ -209,46 +211,46 @@ 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); - 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++; - map_id.put(this.id, this); + if (slimefun) SlimefunPlugin.getUtilities().vanillaItems++; + mapID.put(this.id, this); this.create(); for (ItemHandler handler: itemhandlers) { @@ -257,15 +259,16 @@ 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.getSettings().printOutLoading) { + Slimefun.getLogger().log(Level.INFO, "Loaded Item \"{0}\"", this.id); + } } else { if (this instanceof VanillaItem) this.state = State.VANILLA; 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); } } @@ -308,24 +311,26 @@ 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) { 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"); @@ -347,13 +352,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())) { @@ -362,9 +368,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() + ")"); } } @@ -405,7 +412,7 @@ public class SlimefunItem { } else if (h instanceof EnergyTicker) { this.energyTicker = (EnergyTicker) h; - EnergyNet.registerComponent(getID(), NetworkComponent.SOURCE); + EnergyNet.registerComponent(getID(), EnergyNetComponent.SOURCE); } } } @@ -458,13 +465,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, "Patching existing Item... {0}", 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; } @@ -480,7 +488,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 +503,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); } @@ -526,7 +534,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/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/Objects/SlimefunItem/abstractItems/AContainer.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AContainer.java index 54b585c27..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); @@ -73,10 +69,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); @@ -87,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)); @@ -94,6 +87,7 @@ public abstract class AContainer extends SlimefunItem { } } } + progress.remove(b); processing.remove(b); return true; @@ -141,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/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 efda7dbb0..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); @@ -60,10 +55,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); @@ -89,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); @@ -108,10 +95,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..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); @@ -77,10 +73,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..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; @@ -24,7 +25,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; @@ -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); } } @@ -135,10 +141,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); @@ -149,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)); @@ -162,6 +166,7 @@ public abstract class AReactor extends SlimefunItem { } } } + progress.remove(b.getLocation()); processing.remove(b.getLocation()); ReactorHologram.remove(b.getLocation()); @@ -174,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()) { @@ -212,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); } } } @@ -284,7 +275,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); }); @@ -377,7 +368,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/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/Objects/SlimefunItem/machines/AdvancedCargoOutputNode.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/cargo/AdvancedCargoOutputNode.java similarity index 93% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AdvancedCargoOutputNode.java rename to src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/cargo/AdvancedCargoOutputNode.java index 8f4ee7b96..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,6 @@ -package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines; +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.cargo; + +import java.util.logging.Level; import org.bukkit.Material; import org.bukkit.block.Block; @@ -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; @@ -105,7 +108,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 +135,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 { @@ -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/CargoInputNode.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/cargo/CargoInputNode.java similarity index 93% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/CargoInputNode.java rename to src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/cargo/CargoInputNode.java index d45135d47..1e7b0aae5 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/CargoInputNode.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/cargo/CargoInputNode.java @@ -1,6 +1,9 @@ -package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines; +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"); @@ -121,7 +127,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 +154,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 { @@ -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/machines/CargoOutputNode.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/cargo/CargoOutputNode.java similarity index 91% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/CargoOutputNode.java rename to src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/cargo/CargoOutputNode.java index 60d0b24eb..bedb1bc78 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/CargoOutputNode.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/cargo/CargoOutputNode.java @@ -1,4 +1,6 @@ -package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines; +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.cargo; + +import java.util.logging.Level; import org.bukkit.Material; import org.bukkit.block.Block; @@ -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,12 +43,11 @@ 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; 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 +74,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 { @@ -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/BlockPlacer.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/BlockPlacer.java new file mode 100644 index 000000000..371cb5b3c --- /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.SlimefunPlugin; +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(SlimefunPlugin.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(SlimefunPlugin.instance, () -> d.getInventory().removeItem(e.getItem()), 2L); + } + } + } + return true; + } + else return false; + } + }); + + super.register(slimefun); + } +} 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/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/ReactorAccessPort.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ReactorAccessPort.java index 2439cfaa1..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)) { @@ -103,11 +98,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/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..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; @@ -41,10 +43,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); @@ -130,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/Objects/SlimefunItem/machines/AnimalGrowthAccelerator.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AnimalGrowthAccelerator.java similarity index 93% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AnimalGrowthAccelerator.java rename to src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AnimalGrowthAccelerator.java index 1429e2fce..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,6 @@ -package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines; +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric; + +import java.util.logging.Level; import org.bukkit.Material; import org.bukkit.Particle; @@ -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; @@ -42,10 +45,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); @@ -60,11 +59,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); @@ -106,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/AutoAnvil.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoAnvil.java similarity index 97% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoAnvil.java rename to src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoAnvil.java index 755ce962d..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; @@ -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/electric/AutoBreeder.java similarity index 91% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoBreeder.java rename to src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoBreeder.java index 3ce75529c..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,6 @@ -package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines; +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric; + +import java.util.logging.Level; import org.bukkit.Material; import org.bukkit.Particle; @@ -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; @@ -42,10 +45,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); @@ -60,10 +59,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); @@ -83,9 +78,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); } } @@ -105,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/AutoDisenchanter.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoDisenchanter.java similarity index 96% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoDisenchanter.java rename to src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoDisenchanter.java index c48bef084..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; @@ -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; @@ -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; @@ -112,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/AutoDrier.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoDrier.java similarity index 94% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoDrier.java rename to src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoDrier.java index a28129d4a..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; @@ -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/electric/AutoEnchanter.java similarity index 91% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoEnchanter.java rename to src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoEnchanter.java index bb4bdf1af..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; @@ -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; @@ -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; @@ -47,9 +46,6 @@ public class AutoEnchanter extends AContainer { return new ItemStack(Material.GOLDEN_CHESTPLATE); } - @Override - public void registerDefaultRecipes() {} - @Override public int getEnergyConsumption() { return 9; @@ -105,7 +101,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()) { @@ -115,18 +111,18 @@ 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++; - 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 <= 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/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 92% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ChargingBench.java rename to src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ChargingBench.java index 3fc221bdb..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,9 @@ -package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines; +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; @@ -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/electric/CropGrowthAccelerator.java similarity index 94% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/CropGrowthAccelerator.java rename to src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/CropGrowthAccelerator.java index 08d426521..a96ac311b 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/CropGrowthAccelerator.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/CropGrowthAccelerator.java @@ -1,7 +1,8 @@ -package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines; +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric; 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; @@ -54,10 +56,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); @@ -72,10 +70,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); @@ -116,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/ElectricDustWasher.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricDustWasher.java similarity index 90% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricDustWasher.java rename to src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricDustWasher.java index d15d05cef..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; @@ -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; @@ -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(); @@ -84,20 +81,21 @@ 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) { - boolean empty_slot = false; + if (!SlimefunPlugin.getSettings().legacyDustWasher) { + 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)]; 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 (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/ElectricFurnace.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricFurnace.java similarity index 88% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricFurnace.java rename to src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricFurnace.java index 12b736ab1..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; @@ -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/electric/ElectricGoldPan.java similarity index 96% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricGoldPan.java rename to src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricGoldPan.java index efcf6d781..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; @@ -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/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 96% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricSmeltery.java rename to src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricSmeltery.java index 5424bbdf0..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; @@ -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); @@ -96,10 +92,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/ElectrifiedCrucible.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectrifiedCrucible.java similarity index 96% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectrifiedCrucible.java rename to src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectrifiedCrucible.java index 1afe95e87..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; @@ -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/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 97% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/FluidPump.java rename to src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/FluidPump.java index 56e2e88bf..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; @@ -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/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 857cca671..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; @@ -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/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 94% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/OilPump.java rename to src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/OilPump.java index 9ddf1086b..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; @@ -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/Refinery.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/Refinery.java similarity index 96% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/Refinery.java rename to src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/Refinery.java index fb84f4f6c..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; @@ -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/WitherAssembler.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/WitherAssembler.java similarity index 94% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/WitherAssembler.java rename to src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/WitherAssembler.java index bce6377c7..2f19b91a4 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,6 @@ -package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines; +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric; + +import java.util.logging.Level; import org.bukkit.Bukkit; import org.bukkit.Location; @@ -13,7 +15,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; @@ -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); } } @@ -245,7 +248,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 new file mode 100644 index 000000000..26d2dd234 --- /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.SlimefunPlugin; +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(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); + 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/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 45367927f..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().ORE_WASHER_LEGACY) { + 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 d64d6cd68..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; @@ -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)) { @@ -52,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..8ebaa1237 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().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/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/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/Setup/Files.java b/src/me/mrCookieSlime/Slimefun/Setup/Files.java index 82d9beb62..7df6b97b4 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/Files.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/Files.java @@ -1,40 +1,41 @@ package me.mrCookieSlime.Slimefun.Setup; import java.io.File; +import java.util.logging.Level; + +import me.mrCookieSlime.Slimefun.api.Slimefun; 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() { - 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!"); + public void cleanup() { + if (!researches.exists()) { + 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")); } - if (!DATABASE.exists()) { - DATABASE.mkdirs(); + if (!database.exists()) { + database.mkdirs(); } } - 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/Messages.java b/src/me/mrCookieSlime/Slimefun/Setup/Messages.java index 0b396e336..dd86d6d02 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/Messages.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/Messages.java @@ -10,6 +10,7 @@ public final class Messages { public static void setup() { local.setPrefix("&aSlimefun &7> "); + 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/MiscSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/MiscSetup.java index c37bf5a0d..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; @@ -16,16 +17,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.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; @@ -34,8 +35,6 @@ public final class MiscSetup { private MiscSetup() {} - public static List post_handlers = 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}); @@ -55,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(); } } @@ -127,7 +126,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 +135,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 +149,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,9 +157,9 @@ 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) { + if (!settings.legacyOreGrinder) { stream = stream.sorted((a, b) -> Integer.compare(b[0].getAmount(), a[0].getAmount())); } @@ -205,22 +204,22 @@ public final class MiscSetup { CommandSender sender = Bukkit.getConsoleSender(); ChatColor color = Colors.getRandom(); - for (PostSlimefunLoadingHandler handler: post_handlers) { + 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 5748b5c94..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.SlimefunStartup; 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 SlimefunStartup 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; @@ -74,36 +66,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 +111,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/Setup/SlimefunSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java index bdf083663..eb866290d 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java @@ -2,11 +2,12 @@ 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.logging.Level; +import java.util.stream.Stream; import org.bukkit.Bukkit; import org.bukkit.ChatColor; @@ -21,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.Dispenser; import org.bukkit.block.data.Ageable; import org.bukkit.enchantments.Enchantment; import org.bukkit.entity.ArmorStand; @@ -36,7 +36,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; @@ -66,14 +65,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; @@ -106,43 +104,45 @@ 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.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.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; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.EnhancedCraftingTable; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.GrindStone; @@ -152,7 +152,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.handlers.AutonomousMachineHandler; +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; @@ -681,7 +681,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) { @@ -975,17 +975,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", @@ -1000,7 +1000,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", @@ -1010,7 +1010,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", @@ -1040,12 +1040,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, @@ -1294,35 +1294,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 @@ -1406,7 +1378,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 { @@ -1475,7 +1447,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); } @@ -1545,8 +1517,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()); @@ -1610,8 +1582,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()); @@ -1637,48 +1609,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)}) @@ -1697,8 +1628,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); } } } @@ -1859,7 +1790,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(); @@ -1876,7 +1807,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())) { @@ -2089,53 +2020,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}) @@ -2164,7 +2053,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); @@ -2182,7 +2071,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)); @@ -2374,15 +2263,11 @@ 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); 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(); } @@ -2777,11 +2662,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); @@ -2812,10 +2693,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); @@ -2906,8 +2783,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 @@ -3255,11 +3130,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; } }); @@ -3691,11 +3563,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; } }); @@ -4199,16 +4068,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); } } @@ -4217,6 +4082,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); @@ -4240,7 +4111,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)); @@ -4302,10 +4173,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); @@ -4446,10 +4313,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; @@ -4464,11 +4327,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; @@ -4488,7 +4347,7 @@ public final class SlimefunSetup { } public static void registerPostHandler(PostSlimefunLoadingHandler handler) { - MiscSetup.post_handlers.add(handler); + SlimefunPlugin.getUtilities().postHandlers.add(handler); } } diff --git a/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java b/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java index 396c31940..dd190976a 100644 --- a/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java +++ b/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java @@ -2,11 +2,11 @@ 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; import java.util.UUID; +import java.util.logging.Level; import java.util.stream.Collectors; import org.bukkit.Bukkit; @@ -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; @@ -49,6 +48,7 @@ import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; 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; @@ -56,26 +56,14 @@ 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 code_bytes = 0; - public static Date last_update = new Date(); - private static final int category_size = 36; @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 +78,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 +104,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 +116,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,29 +134,29 @@ 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; }); 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(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(""); @@ -176,11 +164,11 @@ 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")); + 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(""); @@ -219,18 +207,18 @@ 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 { 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(); @@ -269,8 +257,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 +340,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 +351,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); } }); } @@ -416,8 +404,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 = SlimefunPlugin.getUtilities().currentlyEnabledCategories; + List handlers = SlimefunPlugin.getUtilities().guideHandlers.values().stream().flatMap(List::stream).collect(Collectors.toList()); int index = 9; int pages = 1; @@ -567,19 +555,19 @@ 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 && 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 +622,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); @@ -687,9 +675,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)) { @@ -706,17 +694,17 @@ 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 && SlimefunPlugin.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, 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); } } } @@ -728,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++; } @@ -780,7 +768,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 && !SlimefunPlugin.getSettings().guideShowVanillaRecipes) return; ItemStack[] recipe = new ItemStack[9]; ItemStack recipeType = null; @@ -884,18 +872,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 +897,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); } } } @@ -967,12 +955,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; @@ -1031,7 +1019,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 81% rename from src/me/mrCookieSlime/Slimefun/SlimefunStartup.java rename to src/me/mrCookieSlime/Slimefun/SlimefunPlugin.java index dbada7c7e..6fa0972e6 100644 --- a/src/me/mrCookieSlime/Slimefun/SlimefunStartup.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; @@ -21,6 +22,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 +78,17 @@ 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; - - public static TickerTask ticker; + private TickerTask ticker; + private Config researches; + private Config items; + private Config whitelist; + private Config config; + public GPSNetwork gps = new GPSNetwork(); private Utilities utilities = new Utilities(); private Settings settings; private SlimefunHooks hooks; @@ -120,38 +122,41 @@ public final class SlimefunStartup 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..."); - Files.cleanup(); + getLogger().log(Level.INFO, "Loading Files..."); + Files files = new Files(); + files.cleanup(); - System.out.println("[Slimefun] Loading Config..."); + 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); + 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(); @@ -178,28 +183,26 @@ public final class SlimefunStartup 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..."); + getLogger().log(Level.INFO, "Loading Items..."); MiscSetup.setupItemSettings(); try { SlimefunSetup.setupItems(); } catch (Exception x) { - x.printStackTrace(); + getLogger().log(Level.SEVERE, "An Error occured while initializing SlimefunItems for Slimefun " + Slimefun.getVersion()); } + MiscSetup.loadDescriptions(); - settings = new Settings(config); - settings.RESEARCHES_ENABLED = getResearchCfg().getBoolean("enable-researching"); - settings.SMELTERY_FIRE_BREAK_CHANCE = (Integer) Slimefun.getItemValue("SMELTERY", "chance.fireBreak"); + 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()); @@ -240,14 +243,13 @@ public final 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"); MiscSetup.loadItems(settings); for (World world: Bukkit.getWorlds()) { 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)); @@ -301,16 +303,16 @@ 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); // 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}; @@ -342,36 +344,26 @@ public final class SlimefunStartup 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()); } } - for (UniversalBlockMenu menu: BlockStorage.universal_inventories.values()) { + for (UniversalBlockMenu menu: utilities.universalInventories.values()) { menu.save(); } SlimefunBackup.start(); // Prevent Memory Leaks - config = null; - researches = null; - items = null; - whitelist = null; - instance = null; 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; SlimefunItem.items = null; - SlimefunItem.map_id = null; + SlimefunItem.mapID = null; SlimefunItem.handlers = null; SlimefunItem.radioactive = null; SlimefunCommand.arguments = null; @@ -379,22 +371,18 @@ public final class SlimefunStartup extends JavaPlugin { SlimefunCommand.tabs = null; SlimefunItem.blockhandler = null; BlockMenuPreset.presets = null; - BlockStorage.loaded_tickers = null; - BlockStorage.ticking_chunks = 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; + EnergyNet.machinesInput = null; + EnergyNet.machinesOutput = null; + EnergyNet.machinesStorage = null; CargoNet.faces = null; - BlockStorage.universal_inventories = null; - PlayerProfile.profiles = null; OreWasher.items = null; + instance = null; + for (Player p: Bukkit.getOnlinePlayers()) { p.closeInventory(); } @@ -406,19 +394,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 +421,24 @@ 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; + } + + public static TickerTask getTicker() { + return instance.ticker; + } + + public static boolean isActive() { + return instance != null; } } 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..455fb8c41 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,9 +73,7 @@ public class AncientAltarListener implements Listener { final UUID uuid = stack.getUniqueId(); removedItems.add(uuid); - SlimefunStartup.instance.getServer().getScheduler().scheduleSyncDelayedTask(SlimefunStartup.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())); @@ -112,7 +110,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 +170,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..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.SlimefunStartup; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; +import me.mrCookieSlime.Slimefun.api.Slimefun; import me.mrCookieSlime.Slimefun.utils.Utilities; import org.bukkit.Effect; @@ -33,7 +35,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 +74,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() { @@ -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,14 +115,14 @@ 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); 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 456901ef5..4b5e6d87b 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; @@ -48,7 +49,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; @@ -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); } } @@ -177,17 +179,13 @@ 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 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 +238,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 +274,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)); @@ -457,8 +437,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 +446,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 +455,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 +464,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; @@ -498,15 +478,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()); } @@ -543,45 +527,49 @@ 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 { - try { - move(b, face, block); - } catch (Exception e) { - e.printStackTrace(); - } + move(b, face, block); } } @@ -592,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)) { @@ -604,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)) { @@ -617,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)) { @@ -630,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)) { @@ -643,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)) { @@ -656,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)) { @@ -669,7 +652,6 @@ public abstract class ProgrammableAndroid extends SlimefunItem { } } break; - } default: break; } @@ -677,7 +659,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); @@ -730,57 +712,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("-"); @@ -796,15 +763,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")); @@ -835,11 +803,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; @@ -850,18 +814,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; }); @@ -871,7 +828,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)); @@ -883,9 +840,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 + ")")); @@ -893,85 +848,75 @@ 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 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); @@ -1001,11 +946,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); @@ -1019,11 +960,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); @@ -1031,15 +968,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; }); @@ -1074,7 +1007,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("-"); @@ -1082,51 +1015,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/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 c72523af4..89c6d162e 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; @@ -27,7 +29,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; @@ -37,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> ticking_chunks = new HashMap<>(); - public static Set loaded_tickers = new HashSet<>(); private World world; - private Map storage = new HashMap<>(); - private static Map map_chunks = new HashMap<>(); - private Map inventories = new HashMap<>(); - public static Map universal_inventories = 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) { @@ -74,18 +67,23 @@ 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; } 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..."); + + 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()) { @@ -98,20 +96,21 @@ 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 + 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() + "\")"); + if (timestamp + SlimefunPlugin.getSettings().blocksInfoLoadingDelay < System.currentTimeMillis()) { + Slimefun.getLogger().log(Level.INFO, "Loading Blocks... " + Math.round((((done * 100.0F) / total) * 100.0F) / 100.0F) + "% done (\"" + w.getName() + "\")"); timestamp = System.currentTimeMillis(); } 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); @@ -121,22 +120,24 @@ 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); if (SlimefunItem.isTicking(file.getName().replace(".sfb", ""))) { - Set locations = ticking_chunks.containsKey(chunk_string) ? ticking_chunks.get(chunk_string): new HashSet<>(); + Set locations = SlimefunPlugin.getUtilities().tickingChunks.getOrDefault(chunkString, new HashSet<>()); locations.add(l); - ticking_chunks.put(chunk_string, locations); - if (!loaded_tickers.contains(chunk_string)) loaded_tickers.add(chunk_string); + SlimefunPlugin.getUtilities().tickingChunks.put(chunkString, locations); + + if (!SlimefunPlugin.getUtilities().loadedTickers.contains(chunkString)) { + SlimefunPlugin.getUtilities().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++; @@ -144,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"); } } @@ -156,31 +157,32 @@ 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])) SlimefunPlugin.getUtilities().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); } } } - 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")) { 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); } } } @@ -191,25 +193,25 @@ public class BlockStorage { BlockMenuPreset preset = BlockMenuPreset.getPreset(cfg.getString("preset")); if (preset != null) { - universal_inventories.put(preset.getID(), new UniversalBlockMenu(preset, cfg)); + SlimefunPlugin.getUtilities().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 universal_inventories2 = new HashMap<>(universal_inventories); - for (Map.Entry entry: universal_inventories2.entrySet()) { + Map universalInventories2 = new HashMap<>(SlimefunPlugin.getUtilities().universalInventories); + for (Map.Entry entry: universalInventories2.entrySet()) { changes += entry.getValue().getUnsavedChanges(); } } @@ -224,10 +226,9 @@ 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)"); + Slimefun.getLogger().log(Level.INFO, "Saving Blocks for World \"" + world.getName() + "\" (" + changes + " Change(s) queued)"); Map cache = new HashMap<>(cache_blocks); @@ -235,15 +236,18 @@ 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"); 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); } } } @@ -254,29 +258,29 @@ public class BlockStorage { entry.getValue().save(entry.getKey()); } - Map universal_inventories2 = new HashMap<>(universal_inventories); + Map universalInventories2 = new HashMap<>(SlimefunPlugin.getUtilities().universalInventories); - for (Map.Entry entry: universal_inventories2.entrySet()) { + 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: 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()); } } changes = 0; - chunk_changes = 0; + chunkChanges = 0; } public static void store(Block block, ItemStack item) { @@ -340,13 +344,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; } } @@ -360,7 +365,8 @@ public class BlockStorage { } private static String getJSONData(Chunk chunk) { - return map_chunks.get(serializeChunk(chunk)); + if (chunk == null) return null; + return SlimefunPlugin.getUtilities().mapChunks.get(serializeChunk(chunk)); } @Deprecated @@ -413,7 +419,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 (!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"); @@ -446,7 +452,7 @@ public class BlockStorage { } public static void clearBlockInfo(Location l, boolean destroy) { - SlimefunStartup.ticker.delete.put(l, destroy); + SlimefunPlugin.getTicker().delete.put(l, destroy); } public static void _integrated_removeBlockInfo(Location l, boolean destroy) { @@ -462,15 +468,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 (SlimefunPlugin.getUtilities().tickingChunks.containsKey(chunkString)) { + Set locations = SlimefunPlugin.getUtilities().tickingChunks.get(chunkString); locations.remove(l); if (locations.isEmpty()) { - ticking_chunks.remove(chunk_string); - loaded_tickers.remove(chunk_string); + SlimefunPlugin.getUtilities().tickingChunks.remove(chunkString); + SlimefunPlugin.getUtilities().loadedTickers.remove(chunkString); } - else ticking_chunks.put(chunk_string, locations); + else SlimefunPlugin.getUtilities().tickingChunks.put(chunkString, locations); } } } @@ -481,7 +487,7 @@ public class BlockStorage { } public static void moveBlockInfo(Location from, Location to) { - SlimefunStartup.ticker.move.put(from, to); + SlimefunPlugin.getTicker().move.put(from, to); } @Deprecated @@ -504,15 +510,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 (SlimefunPlugin.getUtilities().tickingChunks.containsKey(chunkString)) { + Set locations = SlimefunPlugin.getUtilities().tickingChunks.get(chunkString); locations.remove(from); if (locations.isEmpty()) { - ticking_chunks.remove(chunk_string); - loaded_tickers.remove(chunk_string); + SlimefunPlugin.getUtilities().tickingChunks.remove(chunkString); + SlimefunPlugin.getUtilities().loadedTickers.remove(chunkString); } - else ticking_chunks.put(chunk_string, locations); + else SlimefunPlugin.getUtilities().tickingChunks.put(chunkString, locations); } } @@ -524,14 +530,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 = SlimefunPlugin.getUtilities().tickingChunks.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); + SlimefunPlugin.getUtilities().tickingChunks.put(chunkString, locations); + if (!SlimefunPlugin.getUtilities().loadedTickers.contains(chunkString)) SlimefunPlugin.getUtilities().loadedTickers.add(chunkString); } } } @@ -571,11 +577,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<>(loaded_tickers); + return new HashSet<>(SlimefunPlugin.getUtilities().loadedTickers); } @Deprecated @@ -597,7 +603,7 @@ public class BlockStorage { } public static Set getTickingLocations(String chunk) { - return new HashSet<>(ticking_chunks.get(chunk)); + return new HashSet<>(SlimefunPlugin.getUtilities().tickingChunks.get(chunk)); } public BlockMenu loadInventory(Location l, BlockMenuPreset preset) { @@ -607,7 +613,7 @@ public class BlockStorage { } public void loadUniversalInventory(BlockMenuPreset preset) { - universal_inventories.put(preset.getID(), new UniversalBlockMenu(preset)); + SlimefunPlugin.getUtilities().universalInventories.put(preset.getID(), new UniversalBlockMenu(preset)); } public void clearInventory(Location l) { @@ -616,7 +622,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); @@ -629,7 +635,7 @@ public class BlockStorage { } public boolean hasUniversalInventory(String id) { - return universal_inventories.containsKey(id); + return SlimefunPlugin.getUtilities().universalInventories.containsKey(id); } public UniversalBlockMenu getUniversalInventory(Block block) { @@ -642,7 +648,7 @@ public class BlockStorage { } public UniversalBlockMenu getUniversalInventory(String id) { - return universal_inventories.get(id); + return SlimefunPlugin.getUtilities().universalInventories.get(id); } public static BlockMenu getInventory(Block b) { @@ -659,7 +665,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 (!SlimefunPlugin.getUtilities().mapChunks.containsKey(serializeChunk(chunk))) return cfg; for (Map.Entry entry: parseJSON(getJSONData(chunk)).entrySet()) { cfg.setValue(entry.getKey(), entry.getValue()); @@ -667,20 +673,13 @@ 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"); } } public static boolean hasChunkInfo(Chunk chunk) { - return map_chunks.containsKey(serializeChunk(chunk)); + return SlimefunPlugin.getUtilities().mapChunks.containsKey(serializeChunk(chunk)); } public static void setChunkInfo(Chunk chunk, String key, String value) { @@ -693,9 +692,9 @@ public class BlockStorage { json.add(path, new JsonPrimitive(cfg.getString(path))); } - map_chunks.put(serializeChunk(chunk), json.toString()); + SlimefunPlugin.getUtilities().mapChunks.put(serializeChunk(chunk), json.toString()); - chunk_changes++; + chunkChanges++; } public static String getChunkInfo(Chunk chunk, String key) { @@ -707,7 +706,7 @@ public class BlockStorage { } public static void clearChunkInfo(Chunk chunk) { - map_chunks.remove(serializeChunk(chunk)); + SlimefunPlugin.getUtilities().mapChunks.remove(serializeChunk(chunk)); } public static String getBlockInfoAsJson(Block block) { diff --git a/src/me/mrCookieSlime/Slimefun/api/ErrorReport.java b/src/me/mrCookieSlime/Slimefun/api/ErrorReport.java index 3624c00be..3b418eb99 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; @@ -16,7 +17,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 +47,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<>(); @@ -81,13 +82,14 @@ 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] "); - } catch (FileNotFoundException e) { - e.printStackTrace(); + 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); } } diff --git a/src/me/mrCookieSlime/Slimefun/api/PlayerProfile.java b/src/me/mrCookieSlime/Slimefun/api/PlayerProfile.java index 5b30bc2b0..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().RESEARCHES_TITLES; + 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 7e30f866c..5a993b58d 100644 --- a/src/me/mrCookieSlime/Slimefun/api/Slimefun.java +++ b/src/me/mrCookieSlime/Slimefun/api/Slimefun.java @@ -2,15 +2,14 @@ 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; 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; @@ -24,30 +23,14 @@ import me.mrCookieSlime.Slimefun.Setup.Messages; * * @since 4.0 */ -public class Slimefun { +public final class Slimefun { - public static Map> guide_handlers = new HashMap<>(); - - /** - * Instance of the GPSNetwork. - */ - private static GPSNetwork gps = new GPSNetwork(); + private Slimefun() {} - /** - * Whether EmeraldEnchants is enabled or not. - */ - public static boolean emeraldenchants = false; - - /** - * Lists all the registered categories. - */ - public static List current_categories = new ArrayList<>(); - public static void registerGuideHandler(GuideHandler handler) { - List handlers = new ArrayList<>(); - if (guide_handlers.containsKey(handler.getTier())) handlers = guide_handlers.get(handler.getTier()); + List handlers = SlimefunPlugin.getUtilities().guideHandlers.getOrDefault(handler.getTier(), new ArrayList<>()); handlers.add(handler); - guide_handlers.put(handler.getTier(), handlers); + SlimefunPlugin.getUtilities().guideHandlers.put(handler.getTier(), handlers); } /** @@ -56,7 +39,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 +78,7 @@ public class Slimefun { * @return the Items.yml Config instance. */ public static Config getItemConfig() { - return SlimefunStartup.getItemCfg(); + return SlimefunPlugin.getItemCfg(); } /** @@ -207,10 +194,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 +223,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; @@ -270,7 +257,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<>(); @@ -335,19 +322,11 @@ 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 SlimefunPlugin.getUtilities().guideHandlers.getOrDefault(tier, new ArrayList<>()); } - public static List getGuideHandlers(int tier) { - return guide_handlers.containsKey(tier) ? guide_handlers.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..7193ba6d6 100644 --- a/src/me/mrCookieSlime/Slimefun/api/SlimefunBackup.java +++ b/src/me/mrCookieSlime/Slimefun/api/SlimefunBackup.java @@ -10,13 +10,16 @@ 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; 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()); @@ -31,85 +34,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 e) { - e.printStackTrace(); } } 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/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/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..92b46b256 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; @@ -17,7 +18,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; @@ -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() { @@ -85,7 +86,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)); @@ -107,22 +108,17 @@ 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); - Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> { - l.getBlock().setType(Material.AIR); - }); + Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> l.getBlock().setType(Material.AIR)); } else { buggedBlocks.put(l, errors); @@ -148,23 +144,17 @@ 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); - Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> { - l.getBlock().setType(Material.AIR); - }); + Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> l.getBlock().setType(Material.AIR)); } else { buggedBlocks.put(l, errors); @@ -231,8 +221,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 +258,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 6bff96a18..2d63552ce 100644 --- a/src/me/mrCookieSlime/Slimefun/api/energy/ChargableBlock.java +++ b/src/me/mrCookieSlime/Slimefun/api/energy/ChargableBlock.java @@ -4,31 +4,35 @@ 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.SlimefunStartup; +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 { - public static Map max_charges = new HashMap<>(); + 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) { - 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 +43,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 +67,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) { @@ -96,17 +100,13 @@ 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 { - Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> { + private static void updateTexture(final Location l) { + Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> { try { Block b = l.getBlock(); int charge = getCharge(b); @@ -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/api/energy/EnergyNet.java b/src/me/mrCookieSlime/Slimefun/api/energy/EnergyNet.java index 6912116f2..c8e585566 100644 --- a/src/me/mrCookieSlime/Slimefun/api/energy/EnergyNet.java +++ b/src/me/mrCookieSlime/Slimefun/api/energy/EnergyNet.java @@ -9,57 +9,51 @@ 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; +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; - 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) { + public static EnergyNetComponent 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; - 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 (machines_input.contains(id)) return NetworkComponent.SOURCE; - if (machines_storage.contains(id)) return NetworkComponent.DISTRIBUTOR; - if (machines_output.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: - 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; @@ -71,12 +65,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<>(); @@ -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); @@ -146,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); }); @@ -154,7 +149,7 @@ public class EnergyNet extends Network { else { supply = supply + energy; } - SlimefunStartup.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/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/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/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/api/inventory/BlockMenuPreset.java b/src/me/mrCookieSlime/Slimefun/api/inventory/BlockMenuPreset.java index 4e1da54a6..0bbe6985a 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 { @@ -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); } @@ -101,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) { @@ -157,9 +161,7 @@ public abstract class BlockMenuPreset extends ChestMenu { } public void newInstance(final BlockMenu menu, final Location l) { - Bukkit.getScheduler().runTask(SlimefunStartup.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/api/item_transport/CargoNet.java b/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoNet.java index cfd2daecf..66c2063f0 100644 --- a/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoNet.java +++ b/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoNet.java @@ -24,21 +24,22 @@ 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; 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 { - 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}; @@ -55,12 +56,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 @@ -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); @@ -187,12 +188,12 @@ 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(); } //Chest Terminal Code - if (EXTRA_CHANNELS) { + if (extraChannels) { for (Location bus : imports) { BlockMenu menu = BlockStorage.getInventory(bus); @@ -242,9 +243,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)); } } @@ -345,23 +346,23 @@ 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 c_index = round_robin.get(input); + int cIndex = roundRobin.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); + roundRobin.put(input, cIndex); } for (Location out : outputlist) { @@ -389,7 +390,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/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 1f5dd3e72..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; @@ -10,14 +11,15 @@ 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; +import me.mrCookieSlime.Slimefun.api.Slimefun; 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 +29,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 +38,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) { @@ -49,16 +51,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 +89,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 +106,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); } @@ -147,8 +142,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); } } @@ -162,12 +157,12 @@ 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); - } 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/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 diff --git a/src/me/mrCookieSlime/Slimefun/autosave/BlockAutoSaver.java b/src/me/mrCookieSlime/Slimefun/autosave/BlockAutoSaver.java index db39f8bbf..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.SlimefunStartup; +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: " + SlimefunStartup.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/commands/SlimefunCommand.java b/src/me/mrCookieSlime/Slimefun/commands/SlimefunCommand.java index 5a9efbfd0..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; @@ -27,26 +28,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 +108,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 +144,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())); @@ -153,15 +154,15 @@ 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); } } } } else if (args[0].equalsIgnoreCase("timings")) { if (sender.hasPermission("slimefun.command.timings")|| sender instanceof ConsoleCommandSender) { - SlimefunStartup.ticker.info(sender); + SlimefunPlugin.getTicker().info(sender); } else Messages.local.sendTranslation(sender, "messages.no-permission", true); } @@ -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/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/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/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..f8bf8b952 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.getTicker().getTime() + "ms"; } return null; diff --git a/src/me/mrCookieSlime/Slimefun/hooks/SlimefunHooks.java b/src/me/mrCookieSlime/Slimefun/hooks/SlimefunHooks.java index b3147e044..0f074b8ba 100644 --- a/src/me/mrCookieSlime/Slimefun/hooks/SlimefunHooks.java +++ b/src/me/mrCookieSlime/Slimefun/hooks/SlimefunHooks.java @@ -1,12 +1,18 @@ package me.mrCookieSlime.Slimefun.hooks; -import me.mrCookieSlime.Slimefun.SlimefunStartup; +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; private boolean clearLag = false; private boolean worldEdit = false; @@ -14,42 +20,63 @@ public final class SlimefunHooks { private CoreProtectAPI coreProtectAPI; - public SlimefunHooks(SlimefunStartup plugin) { - if (plugin.getServer().getPluginManager().isPluginEnabled("PlaceholderAPI")) { + public SlimefunHooks(SlimefunPlugin plugin) { + 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. + 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; } + + public boolean isEmeraldEnchantsInstalled() { + return emeraldEnchants; + } public boolean isCoreProtectInstalled() { return coreProtect; 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..98924dd27 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.SlimefunStartup; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; +import me.mrCookieSlime.Slimefun.api.Slimefun; public abstract class GitHubConnector { @@ -21,7 +23,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,8 +33,10 @@ 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")) { + 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()); @@ -48,7 +52,9 @@ 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")) { + Slimefun.getLogger().log(Level.WARNING, "Could not connect to GitHub in time."); + } if (hasData()) { this.parseData(); @@ -79,8 +85,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 e31557de3..23613a607 100644 --- a/src/me/mrCookieSlime/Slimefun/hooks/github/GitHubSetup.java +++ b/src/me/mrCookieSlime/Slimefun/hooks/github/GitHubSetup.java @@ -3,14 +3,15 @@ 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; 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; +import me.mrCookieSlime.Slimefun.api.Slimefun; public final class GitHubSetup { @@ -21,7 +22,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,52 +36,52 @@ 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; } - 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")) { - 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); + if (SlimefunPlugin.isActive()) SlimefunPlugin.getUtilities().contributorHeads.put(name, null); } finally { - if (profile_reader != null) { + if (profileReader != null) { try { - profile_reader.close(); + 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 (session_reader != null) { + if (sessionReader != null) { try { - session_reader.close(); + sessionReader.close(); } catch (IOException x) { - x.printStackTrace(); + Slimefun.getLogger().log(Level.SEVERE, "An Error occured while closing GitHub-Stream for Slimefun " + Slimefun.getVersion(), x); } } } @@ -90,10 +91,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 @@ -117,14 +118,15 @@ 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.last_update = 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 public void onFailure() { + // We don't have to do anything on failure } @Override @@ -148,11 +150,12 @@ public final class GitHubSetup { @Override public void onSuccess(JsonElement element) { JsonObject object = element.getAsJsonObject(); - SlimefunGuide.code_bytes = object.get("Java").getAsInt(); + SlimefunPlugin.getUtilities().codeBytes = object.get("Java").getAsInt(); } @Override public void onFailure() { + // We don't have to do anything on failure } @Override 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/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 a3b7bf598..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 @@ -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 31c740f13..3da3d870c 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,9 +19,18 @@ 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.SlimefunPlugin; +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) { + public BlockListener(SlimefunPlugin plugin) { plugin.getServer().getPluginManager().registerEvents(this, plugin); } @@ -49,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; } } } @@ -64,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; } } } @@ -139,7 +134,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; } diff --git a/src/me/mrCookieSlime/Slimefun/listeners/BowListener.java b/src/me/mrCookieSlime/Slimefun/listeners/BowListener.java index 5f62f26db..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); @@ -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); @@ -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..8b7b58396 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 @@ -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); } @@ -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/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 c1b162fcc..002ca8a4c 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; @@ -41,9 +42,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 +52,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 +65,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 +88,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); } } @@ -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())) { @@ -158,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" + 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.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" + 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.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")); @@ -209,15 +210,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 +362,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)); @@ -418,32 +419,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(SlimefunGuideLayout.BOOK), true) || + SlimefunManager.isItemSimiliar(slot0, SlimefunGuide.getItem(SlimefunGuideLayout.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(SlimefunGuideLayout.BOOK), true) || + SlimefunManager.isItemSimiliar(slot1, SlimefunGuide.getItem(SlimefunGuideLayout.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); } } } 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..5e0b4ea45 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,9 +98,7 @@ public class TalismanListener implements Listener { item.setItemMeta(meta); final int itemSlot = slot; - SlimefunStartup.instance.getServer().getScheduler().runTaskLater(SlimefunStartup.instance, () -> { - inv.setItem(itemSlot, item); - }, 1L); + 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..8791d446b 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/TeleporterListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/TeleporterListener.java @@ -1,10 +1,13 @@ 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; 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; @@ -17,19 +20,18 @@ 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); } @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()); } } 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..4b2cc295c 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/WorldListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/WorldListener.java @@ -1,16 +1,19 @@ 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; import org.bukkit.event.world.WorldUnloadEvent; -import me.mrCookieSlime.Slimefun.SlimefunStartup; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.api.BlockStorage; +import me.mrCookieSlime.Slimefun.api.Slimefun; public class WorldListener implements Listener { - public WorldListener(SlimefunStartup plugin) { + public WorldListener(SlimefunPlugin plugin) { plugin.getServer().getPluginManager().registerEvents(this, plugin); } @@ -18,16 +21,20 @@ 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 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 76081b083..07246ffcf 100644 --- a/src/me/mrCookieSlime/Slimefun/utils/Settings.java +++ b/src/me/mrCookieSlime/Slimefun/utils/Settings.java @@ -6,37 +6,41 @@ 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 printOutLoading; - public int BLOCK_LOADING_INFO_DELAY; - public int BLOCK_AUTO_SAVE_DELAY; + public boolean researchesEnabled; + public boolean researchesFreeInCreative; + public List researchesTitles; - public boolean GUIDE_SHOW_VANILLA_RECIPES; + public int blocksInfoLoadingDelay; + public int blocksAutoSaveDelay; - public int EMERALD_ENCHANTS_LIMIT; + public boolean guideShowVanillaRecipes; - public boolean DUST_WASHER_LEGACY; - public boolean ORE_GRINDER_LEGACY; - public boolean ORE_WASHER_LEGACY; + public int emeraldEnchantsLimit; - public int SMELTERY_FIRE_BREAK_CHANCE; + public boolean legacyDustWasher; + public boolean legacyOreGrinder; + public boolean legacyOreWasher; + + public int smelteryFireBreakChance; public Settings(Config cfg) { - RESEARCHES_FREE_IN_CREATIVE = cfg.getBoolean("options.allow-free-creative-research"); - RESEARCHES_TITLES = cfg.getStringList("research-ranks"); + printOutLoading = cfg.getBoolean("options.print-out-loading"); - BLOCK_LOADING_INFO_DELAY = cfg.getInt("URID.info-delay"); - BLOCK_AUTO_SAVE_DELAY = cfg.getInt("options.auto-save-delay-in-minutes"); + researchesFreeInCreative = cfg.getBoolean("options.allow-free-creative-research"); + researchesTitles = cfg.getStringList("research-ranks"); - GUIDE_SHOW_VANILLA_RECIPES = cfg.getBoolean("options.show-vanilla-recipes-in-guide"); + blocksInfoLoadingDelay = cfg.getInt("URID.info-delay"); + blocksAutoSaveDelay = cfg.getInt("options.auto-save-delay-in-minutes"); - EMERALD_ENCHANTS_LIMIT = cfg.getInt("options.emerald-enchantment-limit"); + guideShowVanillaRecipes = cfg.getBoolean("options.show-vanilla-recipes-in-guide"); - 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"); + emeraldEnchantsLimit = cfg.getInt("options.emerald-enchantment-limit"); + + legacyDustWasher = cfg.getBoolean("options.legacy-dust-washer"); + legacyOreWasher = cfg.getBoolean("options.legacy-ore-washer"); + legacyOreGrinder = cfg.getBoolean("options.legacy-ore-grinder"); } } diff --git a/src/me/mrCookieSlime/Slimefun/utils/Utilities.java b/src/me/mrCookieSlime/Slimefun/utils/Utilities.java index 937d26451..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,10 +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; @@ -30,6 +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<>(); @@ -64,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(); } 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