diff --git a/src/de/anura/core/API/Core.java b/src/de/anura/core/API/Core.java index 4f25656..77e3ee9 100644 --- a/src/de/anura/core/API/Core.java +++ b/src/de/anura/core/API/Core.java @@ -1,6 +1,7 @@ package de.anura.core.API; import de.anura.core.AnuraCore; +import de.anura.core.util.Data; import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; import java.sql.ResultSet; @@ -34,7 +35,7 @@ public class Core { if (AnuraCore.getSql() == null) { return null; } - if (!AnuraCore.getSql().isValid) { + if (!AnuraCore.getSql().hasConnection()) { return null; } return AnuraCore.getSql(); @@ -48,9 +49,9 @@ public class Core { * @return Returns the text for this id */ public static String getl(String id, String lang) { - String val = AnuraCore.getInstance().lang.get(id, lang); + String val = AnuraCore.lang.get(id, lang); if (val == null || val.isEmpty()) { - val = AnuraCore.getInstance().lang.get(id, "en"); + val = AnuraCore.lang.get(id, "en"); } return val; } @@ -124,7 +125,7 @@ public class Core { } Player p = (Player) P; if (!Core.cachedPlayerLanguage.containsKey(p)) { - ResultSet rs = AnuraCore.sql.querySelect("SELECT lang FROM players WHERE uuid = '" + p.getUniqueId().toString() + "'"); + ResultSet rs = Core.getMySql().querySelect("SELECT lang FROM players WHERE uuid = '" + p.getUniqueId().toString() + "'"); if (!rs.next()) { //This is a weird bug Core.cachedPlayerLanguage.put(p, "de"); @@ -148,7 +149,7 @@ public class Core { * @return Returns an iterable set of strings like de or en */ public static Set getAvailLangs() { - return AnuraCore.getInstance().lang.languages.keySet(); + return AnuraCore.lang.languages.keySet(); } /** @@ -196,26 +197,26 @@ public class Core { */ public static void endSitting(Player P, boolean noRemove) { try { - if (getMainClass().sittingPlayer.containsKey(P)) { - MaterialData md = getMainClass().sittingBlocks.get(P).getState().getData(); + if (Data.sittingPlayer.containsKey(P)) { + MaterialData md = Data.sittingBlocks.get(P).getState().getData(); if (md instanceof Stairs) { Stairs s = (Stairs) md; - Location loc = getMainClass().sittingBlocks.get(P).getRelative(s.getFacing()).getLocation(); - Entity a = getMainClass().sittingPlayer.get(P); + Location loc = Data.sittingBlocks.get(P).getRelative(s.getFacing()).getLocation(); + Entity a = Data.sittingPlayer.get(P); P.teleport(loc); a.remove(); if (!noRemove) { - getMainClass().sittingPlayer.remove(P); + Data.sittingPlayer.remove(P); } - getMainClass().sittingBlocks.remove(P); + Data.sittingBlocks.remove(P); } else { - Location loc = getMainClass().sittingPlayer.get(P).getLocation(); + Location loc = Data.sittingPlayer.get(P).getLocation(); P.teleport(loc); - getMainClass().sittingPlayer.get(P).remove(); + Data.sittingPlayer.get(P).remove(); if (!noRemove) { - getMainClass().sittingPlayer.remove(P); + Data.sittingPlayer.remove(P); } - getMainClass().sittingBlocks.remove(P); + Data.sittingBlocks.remove(P); } } } catch (Throwable e) { @@ -264,7 +265,7 @@ public class Core { * @return The level class object */ public static Level getLevel() { - return getMainClass().level; + return AnuraCore.level; } /** diff --git a/src/de/anura/core/API/Errors.java b/src/de/anura/core/API/Errors.java index 96f0031..7fb99bf 100644 --- a/src/de/anura/core/API/Errors.java +++ b/src/de/anura/core/API/Errors.java @@ -7,7 +7,7 @@ import java.util.UUID; import org.bukkit.entity.Player; public class Errors { - + /** * Reports an exception to the database * @param exc A Throwable to get the error data from @@ -16,6 +16,7 @@ public class Errors { public static void reportException(Throwable exc, String info) { if (Core.getMySql() == null) { System.err.println("FATAL ERROR: Error handler fired before init of mysql connection!!"); + exc.printStackTrace(); return; } try { @@ -25,7 +26,7 @@ public class Errors { String errorSql = "INSERT INTO coreErrors (server, exception, msg, info, timestamp) VALUES('" + server + "', '" + name + "', '" + Core.getMySql().escapeString(message) + "', '" + info + "', '" + System.currentTimeMillis() / 1000 + "')"; Core.getMySql().queryUpdate(errorSql); ResultSet rs = Core.getMySql().querySelect("SELECT id FROM coreErrors ORDER BY id DESC LIMIT 1"); - rs.first(); + rs.first(); int id = rs.getInt("id"); String elemSql = "INSERT INTO coreErrorStack(errorId, className, fileName, methodName, lineNumber, nativeMethod) VALUES"; boolean first = true; @@ -43,7 +44,7 @@ public class Errors { ex.printStackTrace(); } } - + /** * Reports an exception to the database * @param exc A Throwable to get the error from @@ -51,7 +52,7 @@ public class Errors { public static void reportException(Throwable exc) { reportException(exc, ""); } - + /** * Method to report a bug * @param P The reporter @@ -66,7 +67,7 @@ public class Errors { } Core.getMySql().queryUpdate("INSERT INTO serverBugs(player, msg, data, timestamp) VALUES ((SELECT id FROM players WHERE uuid = '" + uuid.toString() + "'), '" + Core.getMySql().escapeString(msg) + "', '" + dataText + "', '" + System.currentTimeMillis() / 1000 + "')"); } - + /** * Generates an error entry * @param key The key for this object diff --git a/src/de/anura/core/API/Inventories.java b/src/de/anura/core/API/Inventories.java index c7b5305..2364835 100644 --- a/src/de/anura/core/API/Inventories.java +++ b/src/de/anura/core/API/Inventories.java @@ -59,7 +59,7 @@ public class Inventories implements Listener { } invs.put(type, langInvs); invType.put(type, true); - invActions.put(type, new HashMap>()); + invActions.put(type, new HashMap<>()); } public static void registerInventory(String type, String name, ChatColor nameColor, boolean multilang, String lang) { @@ -74,9 +74,9 @@ public class Inventories implements Listener { invNames.put(nameColor + Core.getl(name, lang), type); invs.put(type, langInvs); invLang.put(type, lang); - invActions.put(type, new HashMap>()); - } - + invActions.put(type, new HashMap<>()); + } + public static void buildInvItem(String type, Material m, String name, ChatColor nameColor, ChatColor loreColor, String... lores) { //INV!! HashMap stacks = new HashMap<>(); for (String lang : Core.getAvailLangs()) { @@ -93,7 +93,7 @@ public class Inventories implements Listener { itemNames.put(display, type); stack.setItemMeta(meta); stacks.put(lang, stack); - } + } items.put(type, stacks); } @@ -134,11 +134,11 @@ public class Inventories implements Listener { stacks.put("global", stack); return stacks; } - + public static HashMap buildItems(Material m, String name, ChatColor nameColor, String lang) { return buildItems(m, name, nameColor, lang, null, "none"); } - + public static HashMap buildItems(Material m, String name, ChatColor nameColor) { return buildItems(m, name, nameColor, null, "none"); } @@ -191,7 +191,7 @@ public class Inventories implements Listener { itemActions.put(type, new AbstractMap.SimpleEntry<>(action, data)); } - public static void executeAction(Player P, Action action, Object data) { + public static void executeAction(Player P, Action action, Object data) { try { if (action == Action.SERVER) { ByteArrayOutputStream b = new ByteArrayOutputStream(); @@ -210,7 +210,7 @@ public class Inventories implements Listener { } else if (action == Action.LANGUAGE) { String lang = (String) data; Core.cachedPlayerLanguage.put(P, lang); - AnuraCore.sql.queryUpdate("UPDATE players SET lang = '" + lang + "' WHERE uuid = '" + P.getUniqueId().toString() + "'"); + Core.getMySql().queryUpdate("UPDATE players SET lang = '" + lang + "' WHERE uuid = '" + P.getUniqueId().toString() + "'"); PlayerInventory pi = P.getInventory(); for (Entry item : itemPositions.entrySet()) { pi.setItem(item.getValue(), getItem(item.getKey(), P)); @@ -254,12 +254,9 @@ public class Inventories implements Listener { Entry action = invActions.get(invNames.get(invName)).get(event.getSlot()); executeAction(player, action.getKey(), action.getValue()); } else { - Bukkit.getScheduler().scheduleSyncDelayedTask(AnuraCore.getInstance(), new Runnable() { - @Override - public void run() { - player.setItemOnCursor(new ItemStack(Material.AIR)); - player.updateInventory(); - } + Bukkit.getScheduler().scheduleSyncDelayedTask(AnuraCore.getInstance(), () -> { + player.setItemOnCursor(new ItemStack(Material.AIR)); + player.updateInventory(); }, 1); } } else if (invNames.containsKey(event.getInventory().getName())) { @@ -275,7 +272,7 @@ public class Inventories implements Listener { @EventHandler public void onPlayerInteract(PlayerInteractEvent event) { try { - if (checkInteracts.containsKey((Player) event.getPlayer()) && !checkInteracts.get((Player) event.getPlayer())) { + if (checkInteracts.containsKey(event.getPlayer()) && !checkInteracts.get(event.getPlayer())) { return; } if (event.hasItem()) { @@ -285,12 +282,7 @@ public class Inventories implements Listener { if (itemActions.containsKey(type)) { event.setCancelled(true); executeAction(P, itemActions.get(type).getKey(), itemActions.get(type).getValue()); - Bukkit.getScheduler().scheduleSyncDelayedTask(AnuraCore.getInstance(), new Runnable() { - @Override - public void run() { - P.updateInventory(); - } - }, 1); + Bukkit.getScheduler().scheduleSyncDelayedTask(AnuraCore.getInstance(), P::updateInventory, 1); } } } diff --git a/src/de/anura/core/API/Level.java b/src/de/anura/core/API/Level.java index 21b4610..298f484 100644 --- a/src/de/anura/core/API/Level.java +++ b/src/de/anura/core/API/Level.java @@ -1,5 +1,6 @@ package de.anura.core.API; +import de.anura.core.util.Data; import java.sql.ResultSet; import java.util.HashMap; import org.bukkit.Bukkit; @@ -15,18 +16,11 @@ public final class Level { public Level() { try { for (Player P : Bukkit.getOnlinePlayers()) { - Core.getMainClass().joinTime.put(P, (int) (System.currentTimeMillis() / 1000)); - Core.getMainClass().aimTheWaterWins.put(P, 0); + Data.joinTime.put(P, (int) (System.currentTimeMillis() / 1000)); + Data.aimTheWaterWins.put(P, 0); } loadLevelAll(); - Bukkit.getScheduler().scheduleSyncRepeatingTask(Core.getMainClass(), new Runnable() { - - @Override - public void run() { - update(); - } - - }, 20 * 60, 20 * 60); + Bukkit.getScheduler().scheduleSyncRepeatingTask(Core.getMainClass(), this::update, 20 * 60, 20 * 60); } catch(Throwable e) { Errors.reportException(e); } @@ -40,15 +34,15 @@ public final class Level { public void saveStuff(Player P) { int walkedMeters = P.getStatistic(Statistic.WALK_ONE_CM) / 100; - int playedTime = (int) ((System.currentTimeMillis() / 1000 - Core.getMainClass().joinTime.get(P)) / 60); + int playedTime = (int) ((System.currentTimeMillis() / 1000 - Data.joinTime.get(P)) / 60); Core.getMySql().queryUpdate("UPDATE coreStats " + "SET onlineTime = onlineTime + " + playedTime + "" + ", walkedMeters = walkedMeters + " + walkedMeters + "" - + ", aimTheWaterWins = aimTheWaterWins + " + Core.getMainClass().aimTheWaterWins.get(P) + " " + + ", aimTheWaterWins = aimTheWaterWins + " + Data.aimTheWaterWins.get(P) + " " + "WHERE player = (SELECT id FROM players WHERE uuid = '" + P.getUniqueId().toString() + "')"); - Core.getMainClass().joinTime.put(P, (int) (System.currentTimeMillis() / 1000)); + Data.joinTime.put(P, (int) (System.currentTimeMillis() / 1000)); P.setStatistic(Statistic.WALK_ONE_CM, 0); - Core.getMainClass().aimTheWaterWins.put(P, 0); + Data.aimTheWaterWins.put(P, 0); } public void loadLevelAll() { @@ -74,7 +68,7 @@ public final class Level { update(P); } } - + public void update(Player P) { try { if (!anuraLevel.containsKey(P)) { @@ -132,7 +126,7 @@ public final class Level { } public static void updateLevel(Player P) { - Core.getMainClass().level.update(P); + Core.getLevel().update(P); } public static int getSmashLevel(Player P) { diff --git a/src/de/anura/core/API/MySQL.java b/src/de/anura/core/API/MySQL.java index 73544e4..e5f204d 100644 --- a/src/de/anura/core/API/MySQL.java +++ b/src/de/anura/core/API/MySQL.java @@ -10,28 +10,19 @@ import java.sql.ResultSet; import java.sql.SQLException; import org.bukkit.Bukkit; import org.bukkit.ChatColor; - import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.configuration.file.YamlConfiguration; public class MySQL { - private final String host; - private final int port; - private final String username; - private final String pw; - private final String db; private Connection conn; + private static final String dbLoc = "database."; public FileConfiguration config; - private final AnuraCore plugin; - public boolean isValid = true; private boolean reconnecting = false; - public MySQL(AnuraCore plugin) { - this.plugin = plugin; + public MySQL() { File file = new File("plugins/Core/", "database.yml"); FileConfiguration cfg = YamlConfiguration.loadConfiguration(file); - String dbLoc = "database."; cfg.addDefault(dbLoc + "host", "localhost"); cfg.addDefault(dbLoc + "port", 3306); cfg.addDefault(dbLoc + "username", "username"); @@ -42,17 +33,10 @@ public class MySQL { cfg.save(file); } catch (IOException e) { } - this.host = cfg.getString(dbLoc + "host"); - this.port = cfg.getInt(dbLoc + "port"); - this.username = cfg.getString(dbLoc + "username"); - this.pw = cfg.getString(dbLoc + "pw"); - this.db = cfg.getString(dbLoc + "db"); + this.config = cfg; if (!this.openConnection()) { Bukkit.broadcastMessage(ChatColor.RED + "No database connection available, please contact a server administrator!"); - this.isValid = false; - return; } - this.config = cfg; } public String escapeString(String text) { @@ -60,9 +44,14 @@ public class MySQL { } private Boolean openConnection() { + String host = config.getString(dbLoc + "host"); + int port = config.getInt(dbLoc + "port"); + String username = config.getString(dbLoc + "username"); + String pw = config.getString(dbLoc + "pw"); + String db = config.getString(dbLoc + "db"); try { Class.forName("com.mysql.jdbc.Driver"); - Connection connLoc = DriverManager.getConnection("jdbc:mysql://" + this.host + ":" + this.port + "/" + this.db, this.username, this.pw); + Connection connLoc = DriverManager.getConnection("jdbc:mysql://" + host + ":" + port + "/" + db, username, pw); this.conn = connLoc; return true; } catch (ClassNotFoundException | SQLException e) { @@ -70,7 +59,7 @@ public class MySQL { } } - private boolean hasConnection() { + public boolean hasConnection() { try { Boolean validConn = true; if (this.conn == null) { @@ -90,7 +79,6 @@ public class MySQL { } this.reconnecting = true; System.out.println("Reconnecting..."); - Bukkit.broadcastMessage(ChatColor.YELLOW + "Bitte warten... Plugin-Daten werden geladen..."); this.closeConnection(); if (!this.openConnection()) { Bukkit.broadcastMessage(ChatColor.RED + "Database reconnect failed! Please contact a server administrator!"); @@ -101,27 +89,17 @@ public class MySQL { return true; } - private void queryRedo(final String query, final String type) { + private void queryRedo(final String query) { if (!this.reconnect()) { - this.plugin.getServer().getScheduler().scheduleSyncDelayedTask(this.plugin, new Runnable() { - @Override - public void run() { - switch (type) { - case "update": - AnuraCore.sql.queryUpdate(query); - break; - case "select": - AnuraCore.sql.querySelect(query); - break; - } - } + Bukkit.getScheduler().scheduleSyncDelayedTask(AnuraCore.getInstance(), () -> { + Core.getMySql().queryUpdate(query); }, 4); } } public void queryUpdate(String query) { if (!this.hasConnection()) { - queryRedo(query, "update"); + queryRedo(query); } Connection connLoc = this.conn; PreparedStatement st = null; @@ -136,33 +114,27 @@ public class MySQL { public ResultSet querySelect(final String query) { if (!this.hasConnection()) { - queryRedo(query, "select"); - return null; + reconnect(); } try { PreparedStatement st = this.conn.prepareStatement(query); ResultSet returns = this.querySelect(st); - if (returns == null) { - queryRedo(query, "select"); - } else { - return returns; - } + return returns; } catch (SQLException e) { System.err.println("Unknown error whilst trying to build Prepared Statement!"); - queryRedo(query, "select"); } return null; } private ResultSet querySelect(PreparedStatement st) { if (!this.hasConnection()) { - return null; + reconnect(); } ResultSet rs; try { rs = st.executeQuery(); } catch (SQLException e) { - System.err.println("Failed to send 'SELECT'-Query!(" + st.toString() + ") Will try to reconnect to database just in case... you know..."); + System.err.println("Failed to send 'SELECT'-Query!(" + st.toString() + ")"); System.err.println("Caused by: " + e.getMessage()); return null; } @@ -173,16 +145,12 @@ public class MySQL { if (rs != null) { try { rs.close(); - } catch (SQLException e) { - - } + } catch (SQLException e) {} } if (st != null) { try { st.close(); - } catch (SQLException e) { - - } + } catch (SQLException e) {} } } diff --git a/src/de/anura/core/AnuraCore.java b/src/de/anura/core/AnuraCore.java index 2464872..1e00123 100644 --- a/src/de/anura/core/AnuraCore.java +++ b/src/de/anura/core/AnuraCore.java @@ -6,15 +6,10 @@ import de.anura.core.API.Level; import de.anura.core.API.Money; import de.anura.core.API.MySQL; import de.anura.core.API.Tools; -import java.awt.image.BufferedImage; +import de.anura.core.util.Data; import java.io.File; -import java.util.ArrayList; -import java.util.HashMap; import org.bukkit.Bukkit; -import org.bukkit.Location; import org.bukkit.World; -import org.bukkit.block.Block; -import org.bukkit.entity.Arrow; import org.bukkit.entity.Entity; import org.bukkit.entity.EntityType; import org.bukkit.entity.Player; @@ -22,39 +17,22 @@ import org.bukkit.plugin.java.JavaPlugin; public class AnuraCore extends JavaPlugin { - public static MySQL sql; - public HashMap selectableJumper = new HashMap<>(); - public HashMap permGroup = new HashMap<>(); + private static MySQL sql; private static AnuraCore instance; - public HashMap sittingPlayer = new HashMap<>(); - public HashMap sittingBlocks = new HashMap<>(); - public LanguageSupport lang; - public HashMap flowerPots = new HashMap<>(); - public HashMap flowerPotsWait = new HashMap<>(); - public HashMap lastLoc = new HashMap<>(); - public FlowerPots pots; - public HashMap renderedImgs = new HashMap<>(); - public ArrayList stairMode = new ArrayList<>(); - public ArrayList sittableBlocks = new ArrayList<>(); - public HashMap golfPower = new HashMap<>(); - public HashMap releaseGolf = new HashMap<>(); - public HashMap golfBall = new HashMap<>(); - public HashMap disableCommandsAdventure = new HashMap<>(); - public HashMap joinTime = new HashMap<>(); - public HashMap aimTheWaterWins = new HashMap<>(); - public ArrayList denySit = new ArrayList<>(); - public Features features; - public Permissions perms; - public Signs signs; - public Tools tools; - public Level level; + public static Features features; + public static Permissions perms; + public static Signs signs; + public static Tools tools; + public static Level level; + public static LanguageSupport lang; + public static FlowerPots pots; @Override public void onEnable() { try { - AnuraCore.sql = new MySQL(this); - AnuraCore.instance = this; - if (AnuraCore.sql.isValid) { + sql = new MySQL(); + instance = this; + if (sql.hasConnection()) { if (AnuraCore.getInstance().getConfig().getBoolean("is-main-lobby")) { for (World w : Bukkit.getWorlds()) { for (Entity e : w.getEntities()) { @@ -94,7 +72,7 @@ public class AnuraCore extends JavaPlugin { @Override public void onDisable() { try { - if (!AnuraCore.sql.isValid) { + if (!sql.hasConnection()) { return; } for (Player P : getServer().getOnlinePlayers()) { @@ -107,10 +85,11 @@ public class AnuraCore extends JavaPlugin { sql.queryUpdate("DELETE FROM coreServers WHERE name = '" + this.getConfig().getString("server-name") + "'"); features.reset(); level.update(); - for (Player P : this.sittingPlayer.keySet()) { + for (Player P : Data.sittingPlayer.keySet()) { Core.endSitting(P, true); } - sittingPlayer.clear(); + Data.sittingPlayer.clear(); + sql.closeConnection(); } catch (Throwable e) { Errors.reportException(e); } diff --git a/src/de/anura/core/AnuraVillager.java b/src/de/anura/core/AnuraVillager.java index 898a884..7607125 100644 --- a/src/de/anura/core/AnuraVillager.java +++ b/src/de/anura/core/AnuraVillager.java @@ -8,41 +8,41 @@ import org.bukkit.ChatColor; import org.bukkit.Location; import org.bukkit.entity.Entity; import org.bukkit.entity.EntityType; -import org.bukkit.potion.PotionEffect; -import org.bukkit.potion.PotionEffectType; import org.bukkit.entity.Villager; import org.bukkit.entity.Villager.Profession; +import org.bukkit.potion.PotionEffect; +import org.bukkit.potion.PotionEffectType; public class AnuraVillager { - + private final VillagerType type; private Villager villager; private Location loc; - + public AnuraVillager(VillagerType type) { this.type = type; villagers.put(type, this); } - + public AnuraVillager(VillagerType type, Villager villager) { this(type); setVillager(villager); loc = villager.getLocation(); } - + public void spawn(Location loc) { Villager v = buildVillager(loc, type.getName()); setVillager(v); this.loc = loc; } - + private void setVillager(Villager v) { villager = v; byEntity.put(v, this); } - + private Villager buildVillager(Location loc, String name) { - Villager vi = (Villager) loc.getWorld().spawn(loc, Villager.class); + Villager vi = loc.getWorld().spawn(loc, Villager.class); vi.setProfession(Profession.PRIEST); vi.setBaby(); vi.setAgeLock(true); @@ -53,24 +53,24 @@ public class AnuraVillager { vi.addPotionEffect(new PotionEffect(PotionEffectType.SLOW, 999999999, 999)); return vi; } - + public void remove() { byEntity.remove(villager); villagers.remove(type); } - + public VillagerType getType() { return type; } - + public void tp() { villager.teleport(loc); } - + public static void addVillagers(Entity[] entities) { addVillagers(Arrays.asList(entities)); } - + public static void addVillagers(List entities) { for (Entity e : entities) { if (e.isValid() && e.getType().equals(EntityType.VILLAGER)) { @@ -81,7 +81,7 @@ public class AnuraVillager { } } } - + public static void removeVillagers(Entity[] entities) { for (Entity e : entities) { if (e.isValid() && e.getType().equals(EntityType.VILLAGER)) { @@ -94,53 +94,53 @@ public class AnuraVillager { } } } - + public static AnuraVillager getByEntity(Villager v) { return byEntity.get(v); } - + public static AnuraVillager getByType(VillagerType type) { return villagers.get(type); } - + private static final HashMap byEntity = new HashMap<>(); public static final HashMap villagers = new HashMap<>(); - - + + public enum VillagerType { DOUBLE_JUMP(Feature.DOUBLE_JUMP, "Double jump"), AUTO_BOAT(Feature.BOAT, "AutoBoat"); - + private VillagerType(Feature feature, String name) { this.feature = feature; this.name = name; } - + private final Feature feature; private final String name; - + public String getName() { return name; } - + public Feature getFeature() { return feature; } - + private final static HashMap BY_FEATURE = new HashMap<>(); private final static HashMap BY_NAME = new HashMap<>(); - + static { for (VillagerType type : values()) { BY_FEATURE.put(type.getFeature(), type); BY_NAME.put(type.getName(), type); } } - + public static VillagerType getByFeature(Feature feature) { return BY_FEATURE.get(feature); } - + public static VillagerType getByName(String name) { return BY_NAME.containsKey(name) ? BY_NAME.get(name) : BY_NAME.get(name.substring(2)); } diff --git a/src/de/anura/core/Features.java b/src/de/anura/core/Features.java index 363f59b..6786076 100644 --- a/src/de/anura/core/Features.java +++ b/src/de/anura/core/Features.java @@ -12,7 +12,6 @@ import org.bukkit.GameMode; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.entity.Boat; -import org.bukkit.entity.Entity; import org.bukkit.entity.EntityType; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; @@ -24,7 +23,7 @@ import org.bukkit.event.vehicle.VehicleExitEvent; import org.bukkit.util.Vector; public class Features implements Listener { - + private final Location atwCenter; public enum Feature { @@ -35,9 +34,9 @@ public class Features implements Listener { private Feature(int id) { this.featureId = id; } - private final int featureId; + public final int featureId; private static final HashMap BY_ID = new HashMap<>(); - + public int getId() { return featureId; } @@ -54,7 +53,7 @@ public class Features implements Listener { } public Features() { - Bukkit.getPluginManager().registerEvents(this, AnuraCore.getInstance()); + Bukkit.getPluginManager().registerEvents(this, AnuraCore.getInstance()); atwCenter = new Location(Bukkit.getWorld("lobby"), -297, 31, -1742); } @@ -70,8 +69,8 @@ public class Features implements Listener { } ResultSet rs = Core.getMySql().querySelect("SELECT featureId FROM coreFeatures WHERE playerId = (SELECT id FROM players WHERE uuid = '" + P.getUniqueId().toString() + "')"); resetPlayerFeatures(P); - playerFeatures.put(P, new ArrayList()); - featureEnabled.put(P, new HashMap()); + playerFeatures.put(P, new ArrayList<>()); + featureEnabled.put(P, new HashMap<>()); boolean added = false; while (rs.next()) { if (!added) { @@ -169,11 +168,12 @@ public class Features implements Listener { return false; } + @SuppressWarnings("unchecked") private void resetPlayerFeatures(Player P) { if (!playerFeatures.containsKey(P)) { return; } - for (Feature f : (ArrayList) playerFeatures.get(P).clone()) { + for (Feature f : (Iterable) playerFeatures.get(P).clone()) { removeFeature(P, f); } } @@ -220,7 +220,7 @@ public class Features implements Listener { } Player P = event.getPlayer(); if (this.hasFeature(P, Feature.DOUBLE_JUMP)) { - if (this.canDoubleJump.containsKey(P) && !this.canDoubleJump.get(P) && ((Entity) P).isOnGround() && this.featureEnabled.get(P).get(Feature.DOUBLE_JUMP)) { + if (this.canDoubleJump.containsKey(P) && !this.canDoubleJump.get(P) && P.isOnGround() && this.featureEnabled.get(P).get(Feature.DOUBLE_JUMP)) { this.canDoubleJump.put(P, true); P.setExp(1); } diff --git a/src/de/anura/core/FlowerPots.java b/src/de/anura/core/FlowerPots.java index 58bd82d..92c2fda 100644 --- a/src/de/anura/core/FlowerPots.java +++ b/src/de/anura/core/FlowerPots.java @@ -3,6 +3,7 @@ package de.anura.core; import de.anura.core.API.Core; import de.anura.core.API.Errors; import de.anura.core.API.Money; +import de.anura.core.util.Data; import java.sql.ResultSet; import java.util.HashMap; import java.util.Map; @@ -15,10 +16,10 @@ import org.bukkit.entity.Player; public class FlowerPots { - private final HashMap> foundCache = new HashMap<>(); - private final HashMap> foundTimestamp = new HashMap<>(); + private final static HashMap> foundCache = new HashMap<>(); + private final static HashMap> foundTimestamp = new HashMap<>(); - public boolean foundPot(Player P, Integer pot) { + public static boolean foundPot(Player P, Integer pot) { if (!foundCache.containsKey(P)) { refreshCache(P); } @@ -32,18 +33,18 @@ public class FlowerPots { } return false; } - - private int getPotWaitTime(Integer pot) { - if (AnuraCore.getInstance().flowerPots.containsKey(pot)) { - if (AnuraCore.getInstance().flowerPotsWait.containsKey(pot)) { - return AnuraCore.getInstance().flowerPotsWait.get(pot); + + private static int getPotWaitTime(Integer pot) { + if (Data.flowerPots.containsKey(pot)) { + if (Data.flowerPotsWait.containsKey(pot)) { + return Data.flowerPotsWait.get(pot); } return -1; } return 0; } - public void refreshCache(Player P) { + public static void refreshCache(Player P) { try { ResultSet rs = AnuraCore.getSql().querySelect("SELECT id, timestamp, type FROM coreFoundPots WHERE player = (SELECT id FROM players WHERE uuid = '" + P.getUniqueId().toString() + "')"); HashMap list = new HashMap<>(); @@ -54,15 +55,15 @@ public class FlowerPots { listTimes.put(rs.getInt("id"), rs.getInt("timestamp")); } } - this.foundCache.put(P, list); - this.foundTimestamp.put(P, listTimes); + foundCache.put(P, list); + foundTimestamp.put(P, listTimes); } catch (Throwable e) { Errors.reportException(e); } } - public void refreshPot(Integer pot) { - Location l = AnuraCore.getInstance().flowerPots.get(pot); + public static void refreshPot(Integer pot) { + Location l = Data.flowerPots.get(pot); for (Player P : l.getWorld().getPlayers()) { if (P.getLocation().distance(l) < 20) { refreshPlayerPot(P, pot, l); @@ -70,24 +71,24 @@ public class FlowerPots { } } - public void refreshPlayerPot(Player p, Integer pot, Location l) { - if (!this.foundPot(p, pot)) { + public static void refreshPlayerPot(Player p, Integer pot, Location l) { + if (!foundPot(p, pot)) { p.sendBlockChange(l, Material.FLOWER_POT, (byte) 0); } else { p.sendBlockChange(l, Material.AIR, (byte) 0); } } - public void refreshPlayer(Player p) { - for (Map.Entry pots : AnuraCore.getInstance().flowerPots.entrySet()) { + public static void refreshPlayer(Player p) { + for (Map.Entry pots : Data.flowerPots.entrySet()) { if (pots.getValue().getWorld().equals(p.getLocation().getWorld()) && pots.getValue().distance(p.getLocation()) < 20) { refreshPlayerPot(p, pots.getKey(), pots.getValue()); } } - AnuraCore.getInstance().lastLoc.put(p, p.getLocation()); + Data.lastLoc.put(p, p.getLocation()); } - public void playerFoundPot(Player P, Integer pot) { + public static void playerFoundPot(Player P, Integer pot) { try { if (!foundPot(P, pot)) { Integer time = getPotWaitTime(pot); @@ -107,7 +108,7 @@ public class FlowerPots { sql = "INSERT INTO coreFoundPots(id, player, timestamp, type) VALUES('" + pot + "', (SELECT id FROM players WHERE uuid = '" + P.getUniqueId().toString() + "'),'" + (int) (System.currentTimeMillis() / 1000) + "'," + type + ")"; } AnuraCore.getSql().queryUpdate(sql); - Location loc = AnuraCore.getInstance().flowerPots.get(pot); + Location loc = Data.flowerPots.get(pot); for (int i = 0; i < 20; i++) { loc.getWorld().playEffect(loc, Effect.FIREWORKS_SPARK, 4); } diff --git a/src/de/anura/core/ImgRenderer.java b/src/de/anura/core/ImgRenderer.java deleted file mode 100644 index 7d35a57..0000000 --- a/src/de/anura/core/ImgRenderer.java +++ /dev/null @@ -1,21 +0,0 @@ -package de.anura.core; - -import org.bukkit.entity.Player; -import org.bukkit.map.MapCanvas; -import org.bukkit.map.MapRenderer; -import org.bukkit.map.MapView; - -public class ImgRenderer extends MapRenderer { - - private final String name; - - public ImgRenderer(String name) { - this.name = name; - } - - @Override - public void render(MapView mv, MapCanvas mc, Player player) { - mc.drawImage(0, 0, AnuraCore.getInstance().renderedImgs.get(this.name)); - } - -} diff --git a/src/de/anura/core/LanguageSupport.java b/src/de/anura/core/LanguageSupport.java index 1c8e7e0..ba79d2a 100644 --- a/src/de/anura/core/LanguageSupport.java +++ b/src/de/anura/core/LanguageSupport.java @@ -1,5 +1,6 @@ package de.anura.core; +import de.anura.core.API.Core; import de.anura.core.API.Errors; import java.sql.ResultSet; import java.util.HashMap; @@ -12,7 +13,7 @@ public class LanguageSupport { public LanguageSupport() { try { - ResultSet al = AnuraCore.sql.querySelect("SELECT name, short_name FROM coreAvailableLanguages WHERE `show` = 1"); + ResultSet al = Core.getMySql().querySelect("SELECT name, short_name FROM coreAvailableLanguages WHERE `show` = 1"); if (!al.next()) { return; } @@ -21,9 +22,9 @@ public class LanguageSupport { while (al.next()) { languages.put(al.getString("short_name"), al.getString("name")); languageString += ", " + al.getString("short_name"); - languageValues.put(al.getString("short_name"), new HashMap()); + languageValues.put(al.getString("short_name"), new HashMap<>()); } - ResultSet lv = AnuraCore.sql.querySelect("SELECT id" + languageString + " FROM coreLanguages"); + ResultSet lv = Core.getMySql().querySelect("SELECT id" + languageString + " FROM coreLanguages"); while (lv.next()) { for (String lang : languages.keySet()) { languageValues.get(lang).put(lv.getString("id"), lv.getString(lang)); diff --git a/src/de/anura/core/Permissions.java b/src/de/anura/core/Permissions.java index 4bf5ad4..fb1807d 100644 --- a/src/de/anura/core/Permissions.java +++ b/src/de/anura/core/Permissions.java @@ -1,12 +1,11 @@ package de.anura.core; +import de.anura.core.API.Core; import de.anura.core.API.Errors; import java.sql.ResultSet; - import java.util.ArrayList; import java.util.HashMap; import java.util.UUID; - import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.entity.Player; @@ -87,7 +86,7 @@ public final class Permissions implements Listener { pa.unsetPermission(p); } if (!this.playerGroups.containsKey(P.getUniqueId())) { - this.playerGroups.put(P.getUniqueId(), new ArrayList()); + this.playerGroups.put(P.getUniqueId(), new ArrayList<>()); } ArrayList groups = this.playerGroups.get(P.getUniqueId()); ArrayList assignedGroups = new ArrayList<>(); @@ -143,9 +142,9 @@ public final class Permissions implements Listener { public String reload() { try { - ResultSet groupsRs = AnuraCore.sql.querySelect("SELECT prefix, suffix, parent, name, id, listColor FROM permGroups"); - ResultSet permsRs = AnuraCore.sql.querySelect("SELECT `group`, name FROM permPerms"); - ResultSet userRs = AnuraCore.sql.querySelect("SELECT playerUUID, `group` FROM permPlayerGroups"); + ResultSet groupsRs = Core.getMySql().querySelect("SELECT prefix, suffix, parent, name, id, listColor FROM permGroups"); + ResultSet permsRs = Core.getMySql().querySelect("SELECT `group`, name FROM permPerms"); + ResultSet userRs = Core.getMySql().querySelect("SELECT playerUUID, `group` FROM permPlayerGroups"); this.groupNames.clear(); this.groupPerms.clear(); this.playerGroups.clear(); @@ -160,7 +159,7 @@ public final class Permissions implements Listener { while (groupsRs.next()) { int id = this.groupAutoIncrement; this.groupNames.put(id, groupsRs.getString("name")); - this.groupPerms.put(id, new ArrayList()); + this.groupPerms.put(id, new ArrayList<>()); this.groupParents.put(id, groupsRs.getInt("parent")); if (groupsRs.getString("prefix") != null) { this.groupPrefix.put(id, groupsRs.getString("prefix")); diff --git a/src/de/anura/core/RealTime.java b/src/de/anura/core/RealTime.java index 09fe37c..a05c016 100644 --- a/src/de/anura/core/RealTime.java +++ b/src/de/anura/core/RealTime.java @@ -17,13 +17,10 @@ public class RealTime { world.setGameRuleValue("doDaylightCycle", "false"); world.setTime(0); } - Bukkit.getScheduler().scheduleSyncRepeatingTask(Core.getMainClass(), new Runnable() { - @Override - public void run() { - Integer[] time = getSystemTime(); - int TTime = convertTime(time[0], time[1]); - setWorldTime(TTime); - } + Bukkit.getScheduler().scheduleSyncRepeatingTask(Core.getMainClass(), () -> { + Integer[] time = getSystemTime(); + int TTime = convertTime(time[0], time[1]); + setWorldTime(TTime); }, 0, (20 * 60 * 10)); } } catch (Throwable e) { diff --git a/src/de/anura/core/Setup.java b/src/de/anura/core/Setup.java index 09642b0..cf38d73 100644 --- a/src/de/anura/core/Setup.java +++ b/src/de/anura/core/Setup.java @@ -7,6 +7,7 @@ import de.anura.core.API.Level; import de.anura.core.API.Tools; import de.anura.core.commands.*; import de.anura.core.events.*; +import de.anura.core.util.Data; import java.sql.ResultSet; import org.bukkit.Bukkit; import org.bukkit.ChatColor; @@ -15,7 +16,6 @@ import org.bukkit.Material; import org.bukkit.World; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.entity.Arrow; -import org.bukkit.entity.Entity; import org.bukkit.entity.Player; import org.bukkit.material.Stairs; import org.bukkit.scoreboard.Scoreboard; @@ -39,6 +39,7 @@ public class Setup { c.addDefault("golf", false); c.addDefault("realtime-day", false); c.addDefault("no-snow-melt", false); + c.addDefault("no-bed-explode", false); c.addDefault("spawn.world", "none"); c.addDefault("spawn.X", 0); c.addDefault("spawn.Y", 0); @@ -79,14 +80,14 @@ public class Setup { public static void setupClasses() { try { - Core.getMainClass().lang = new LanguageSupport(); + AnuraCore.lang = new LanguageSupport(); new Inventories(Core.getMainClass()); setupInventories(); - Core.getMainClass().perms = new Permissions(Core.getMainClass()); - Core.getMainClass().tools = new Tools(); - Core.getMainClass().pots = new FlowerPots(); - Core.getMainClass().signs = new Signs(); - Core.getMainClass().level = new Level(); + AnuraCore.perms = new Permissions(Core.getMainClass()); + AnuraCore.tools = new Tools(); + AnuraCore.pots = new FlowerPots(); + AnuraCore.signs = new Signs(); + AnuraCore.level = new Level(); RealTime.setup(); ResultSet rs = Core.getMySql().querySelect("SELECT id, X, Y, Z, world, type, waitTime FROM corePots"); while (rs.next()) { @@ -95,14 +96,14 @@ public class Setup { continue; } Location l = new Location(w, rs.getInt("X"), rs.getInt("Y"), rs.getInt("Z")); - Core.getMainClass().flowerPots.put(rs.getInt("id"), l); + Data.flowerPots.put(rs.getInt("id"), l); if (rs.getBoolean("type")) { - Core.getMainClass().flowerPotsWait.put(rs.getInt("id"), rs.getInt("waitTime")); + Data.flowerPotsWait.put(rs.getInt("id"), rs.getInt("waitTime")); } l.getBlock().setType(Material.BROWN_MUSHROOM); } - Core.getMainClass().features = new Features(); - Core.getMainClass().features.updateFeaturesAll(); + AnuraCore.features = new Features(); + AnuraCore.features.updateFeaturesAll(); } catch (Throwable e) { Errors.reportException(e); } @@ -110,29 +111,6 @@ public class Setup { public static void setupTasks() { try { - Bukkit.getScheduler().scheduleSyncRepeatingTask(Core.getMainClass(), new Runnable() { - - @Override - public void run() { - for (Player P : Core.getMainClass().golfPower.keySet()) { - if (Core.getMainClass().releaseGolf.get(P)) { - P.setExp(0); - int power = Core.getMainClass().golfPower.get(P); - Entity i = Core.getMainClass().golfBall.get(P); - if (i != null && i.isValid()) { - Vector v = P.getLocation().getDirection(); - v.multiply(new Vector(power / 10 + 1, 1.2, power / 10 + 1)); - i.setVelocity(v); - } - Core.getMainClass().golfPower.remove(P); - Core.getMainClass().releaseGolf.remove(P); - } else { - Core.getMainClass().releaseGolf.put(P, true); - } - } - } - - }, 5, 5); ResultSet rs = Core.getMySql().querySelect("SELECT world, X, Y, Z FROM coreStairs WHERE server = '" + Core.getMainClass().getConfig().getString("server-name") + "'"); while (rs.next()) { World w = Bukkit.getWorld(rs.getString("world")); @@ -141,30 +119,20 @@ public class Setup { } Location l = new Location(w, rs.getInt("X"), rs.getInt("Y"), rs.getInt("Z")); if (l.getBlock().getState().getData() instanceof Stairs) { - Core.getMainClass().sittableBlocks.add(l.getBlock()); + Data.sittableBlocks.add(l.getBlock()); } } - Bukkit.getScheduler().scheduleSyncRepeatingTask(Core.getMainClass(), new Runnable() { - - @Override - public void run() { - for (Player p : AnuraCore.getInstance().sittingPlayer.keySet()) { - Location loc = AnuraCore.getInstance().sittingPlayer.get(p).getLocation(); - Arrow a = loc.getWorld().spawnArrow(loc, new Vector(0, 0, 0), 0, 0); - a.setPassenger(p); - AnuraCore.getInstance().sittingPlayer.get(p).remove(); - AnuraCore.getInstance().sittingPlayer.put(p, a); - } + Bukkit.getScheduler().scheduleSyncRepeatingTask(Core.getMainClass(), () -> { + for (Player p : Data.sittingPlayer.keySet()) { + Location loc = Data.sittingPlayer.get(p).getLocation(); + Arrow a = loc.getWorld().spawnArrow(loc, new Vector(0, 0, 0), 0, 0); + a.setPassenger(p); + Data.sittingPlayer.get(p).remove(); + Data.sittingPlayer.put(p, a); } - }, 600, 600); - Bukkit.getScheduler().scheduleSyncRepeatingTask(Core.getMainClass(), new Runnable() { - @Override - public void run() { - AnuraCore.getInstance().signs.updateServerSigns(); - } - }, 20 * 5, 20 * 5); + Bukkit.getScheduler().runTaskTimerAsynchronously(Core.getMainClass(), AnuraCore.signs::updateServerSigns, 20 * 5, 20 * 5); Bukkit.getScheduler().scheduleSyncRepeatingTask(Core.getMainClass(), new VillagerTask(), 20, 20); } catch (Throwable e) { Errors.reportException(e); @@ -276,7 +244,7 @@ public class Setup { Inventories.registerInventory("LANGUAGE", "Select language", ChatColor.DARK_BLUE); int i = 0; - for (String langu : Core.getMainClass().lang.languages.keySet()) { + for (String langu : AnuraCore.lang.languages.keySet()) { Inventories.putIntoInventory("LANGUAGE", i, Inventories.buildItems(Material.BOOK_AND_QUILL, Core.getMainClass().lang.languages.get(langu), ChatColor.DARK_GREEN, ChatColor.GOLD, "set_lang_to", Core.getMainClass().lang.languages.get(langu))); Inventories.registerAction("LANGUAGE", i, Inventories.Action.LANGUAGE, langu); i++; diff --git a/src/de/anura/core/Signs.java b/src/de/anura/core/Signs.java index 9c28177..051e265 100644 --- a/src/de/anura/core/Signs.java +++ b/src/de/anura/core/Signs.java @@ -2,7 +2,6 @@ package de.anura.core; import de.anura.core.API.Core; import de.anura.core.API.Errors; -import static de.anura.core.AnuraCore.sql; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.DataInputStream; @@ -24,7 +23,7 @@ public class Signs implements PluginMessageListener { if (Bukkit.getOnlinePlayers().isEmpty()) { return; } - ResultSet rs = sql.querySelect("SELECT DISTINCT value FROM coreWarpSigns WHERE type = 'server' AND server = '" + Core.getMainClass().getConfig().getString("server-name") + "'"); + ResultSet rs = Core.getMySql().querySelect("SELECT DISTINCT value FROM coreWarpSigns WHERE type = 'server' AND server = '" + Core.getMainClass().getConfig().getString("server-name") + "'"); rs.last(); if (rs.getRow() == 0) { return; @@ -36,9 +35,9 @@ public class Signs implements PluginMessageListener { out.writeUTF("PlayerCount"); out.writeUTF(rs.getString("value")); Bukkit.getOnlinePlayers().iterator().next().sendPluginMessage(Core.getMainClass(), "BungeeCord", b.toByteArray()); - ResultSet rs2 = sql.querySelect("SELECT maxPlayers FROM coreServers WHERE name = LOWER('" + rs.getString("value") + "')"); + ResultSet rs2 = Core.getMySql().querySelect("SELECT maxPlayers FROM coreServers WHERE name = LOWER('" + rs.getString("value") + "')"); rs2.last(); - Boolean online = true; + boolean online = true; int maxPlayers = 0; if (rs2.getRow() == 0) { online = false; @@ -46,8 +45,9 @@ public class Signs implements PluginMessageListener { rs2.first(); maxPlayers = rs2.getInt("maxPlayers"); } - - rs2 = sql.querySelect("SELECT X,Y,Z,world,info FROM coreWarpSigns WHERE type = 'server' AND server = '" + Core.getMainClass().getConfig().getString("server-name") + "' AND value = '" + rs.getString("value") + "'"); + final boolean onlineF = online; + final int maxPlayersF = maxPlayers; + rs2 = Core.getMySql().querySelect("SELECT X,Y,Z,world,info FROM coreWarpSigns WHERE type = 'server' AND server = '" + Core.getMainClass().getConfig().getString("server-name") + "' AND value = '" + rs.getString("value") + "'"); rs2.last(); if (rs2.getRow() == 0) { continue; @@ -69,26 +69,26 @@ public class Signs implements PluginMessageListener { } if (remove) { String anotherSQL = "DELETE FROM coreWarpSigns WHERE server = '" + Core.getMainClass().getConfig().getString("server-name") + "' AND type = 'server' AND value = '" + rs.getString("value") + "'"; - sql.queryUpdate(anotherSQL); + Core.getMySql().queryUpdate(anotherSQL); continue; } if (bs == null) { continue; } - Sign s = (Sign) bs; - String rest = s.getLine(1).substring(0, s.getLine(1).length() - 2); - String info = rs2.getString("info"); - if (s.getLocation().getWorld().isChunkLoaded(s.getLocation().getBlockX() / 16, s.getLocation().getBlockZ() / 16)) { - if (!online) { + final Sign s = (Sign) bs; + final String rest = s.getLine(1).substring(0, s.getLine(1).length() - 2); + final String info = rs2.getString("info"); + Bukkit.getScheduler().runTask(AnuraCore.getInstance(), () -> { + if (!onlineF) { s.setLine(1, ChatColor.RED + "--" + ChatColor.DARK_GRAY + "/" + ChatColor.RED + "--"); s.setLine(3, ChatColor.RED + "Offline"); s.update(); - continue; + return; } - s.setLine(1, rest + maxPlayers); + s.setLine(1, rest + maxPlayersF); s.setLine(3, info); s.update(); - } + }); } } } catch (Throwable e) { @@ -109,7 +109,7 @@ public class Signs implements PluginMessageListener { String server = in.readUTF(); int playercount = in.readInt(); String sqlQ = "SELECT X,Y,Z,world FROM coreWarpSigns WHERE server = '" + Core.getMainClass().getConfig().getString("server-name") + "' AND type = 'server' AND value = '" + server + "'"; - ResultSet rs = sql.querySelect(sqlQ); + ResultSet rs = Core.getMySql().querySelect(sqlQ); rs.last(); if (rs.getRow() == 0) { return; @@ -131,7 +131,7 @@ public class Signs implements PluginMessageListener { } if (remove) { String anotherSQL = "DELETE FROM coreWarpSigns WHERE server = '" + Core.getMainClass().getConfig().getString("server-name") + "' AND type = 'server' AND value = '" + server + "'"; - sql.queryUpdate(anotherSQL); + Core.getMySql().queryUpdate(anotherSQL); continue; } if (bs == null) { @@ -159,8 +159,8 @@ public class Signs implements PluginMessageListener { } } } else if (subchannel.equals("updatePermissions")) { - Core.getMainClass().perms.reload(); - Core.getMainClass().perms.updateAllPlayers(); + AnuraCore.perms.reload(); + AnuraCore.perms.updateAllPlayers(); } } catch (Throwable e) { Errors.reportException(e); diff --git a/src/de/anura/core/commands/AdminCommands.java b/src/de/anura/core/commands/AdminCommands.java index 9e2385f..bd0ef82 100644 --- a/src/de/anura/core/commands/AdminCommands.java +++ b/src/de/anura/core/commands/AdminCommands.java @@ -8,6 +8,7 @@ import de.anura.core.AnuraVillager; import de.anura.core.AnuraVillager.VillagerType; import de.anura.core.Features.Feature; import de.anura.core.LanguageSupport; +import de.anura.core.util.Data; import java.io.File; import java.io.IOException; import org.bukkit.Location; @@ -39,7 +40,7 @@ public class AdminCommands implements CommandExecutor { Core.statusMsg(sender, "no_perms", false); return true; } - for (Player pl : Core.getMainClass().sittingPlayer.keySet()) { + for (Player pl : Data.sittingPlayer.keySet()) { Core.endSitting(pl); } for (Arrow a : P.getWorld().getEntitiesByClass(Arrow.class)) { @@ -59,7 +60,7 @@ public class AdminCommands implements CommandExecutor { if ((args[0].equalsIgnoreCase("reload") || args[0].equalsIgnoreCase("rl")) && sender.isOp()) { try { Core.getMainClass().getConfig().load(new File("plugins/Core/", "config.yml")); - Core.getMainClass().lang = new LanguageSupport(); + AnuraCore.lang = new LanguageSupport(); Core.statusMsg(sender, "config_rl_done", true); } catch (IOException ex) { Core.statusMsg(sender, "config_rl_error_io", false); @@ -75,7 +76,7 @@ public class AdminCommands implements CommandExecutor { Core.statusMsg(sender, "config_save_io_err", false); } } else if (args[0].equalsIgnoreCase("debugclosemysql") && sender.isOp()) { - AnuraCore.sql.closeConnection(); + Core.getMySql().closeConnection(); Core.statusMsg(sender, "debug_mysql_closed", true); return true; } diff --git a/src/de/anura/core/commands/OtherCommands.java b/src/de/anura/core/commands/OtherCommands.java index 4f89e0f..ab12b89 100644 --- a/src/de/anura/core/commands/OtherCommands.java +++ b/src/de/anura/core/commands/OtherCommands.java @@ -4,6 +4,7 @@ import de.anura.core.API.Core; import de.anura.core.API.Errors; import de.anura.core.API.Inventories; import de.anura.core.API.Tools; +import de.anura.core.util.Data; import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; import org.bukkit.command.BlockCommandSender; @@ -39,7 +40,7 @@ public class OtherCommands implements CommandExecutor { return true; } Boolean b = action.equals("disable"); - Core.getMainClass().disableCommandsAdventure.put(op.getPlayer(), b); + Data.disableCommandsAdventure.put(op.getPlayer(), b); return true; } else if (cmd.getName().equalsIgnoreCase("none")) { Core.statusMsg(sender, "cmd_not_found", false); @@ -53,7 +54,7 @@ public class OtherCommands implements CommandExecutor { String p = args[0]; if (Bukkit.getOfflinePlayer(p).isOnline()) { Player player = Bukkit.getPlayer(p); - Core.getMainClass().aimTheWaterWins.put(player, Core.getMainClass().aimTheWaterWins.get(player) + 1); + Data.aimTheWaterWins.put(player, Data.aimTheWaterWins.get(player) + 1); return true; } } else if (cmd.getName().equalsIgnoreCase("addInvItems")) { diff --git a/src/de/anura/core/commands/PlayerCommands.java b/src/de/anura/core/commands/PlayerCommands.java index d443ae0..f78675b 100644 --- a/src/de/anura/core/commands/PlayerCommands.java +++ b/src/de/anura/core/commands/PlayerCommands.java @@ -4,7 +4,6 @@ import de.anura.core.API.Core; import de.anura.core.API.Errors; import de.anura.core.API.Money; import de.anura.core.API.Tools; -import static de.anura.core.AnuraCore.sql; import de.anura.core.Features; import java.sql.ResultSet; import org.bukkit.Bukkit; @@ -216,7 +215,7 @@ public class PlayerCommands implements CommandExecutor { P = Bukkit.getPlayer(p); } String warpName = args[0]; - ResultSet rs = sql.querySelect("SELECT world, X, Y, Z, userWarp, server FROM coreWarps WHERE name = '" + warpName + "'"); + ResultSet rs = Core.getMySql().querySelect("SELECT world, X, Y, Z, userWarp, server FROM coreWarps WHERE name = '" + warpName + "'"); rs.last(); if (rs.getRow() == 0) { Core.statusMsg(P, "warp_not_exist", false); diff --git a/src/de/anura/core/commands/TeamCommands.java b/src/de/anura/core/commands/TeamCommands.java index 25b1a74..13f4bb0 100644 --- a/src/de/anura/core/commands/TeamCommands.java +++ b/src/de/anura/core/commands/TeamCommands.java @@ -3,19 +3,11 @@ package de.anura.core.commands; import de.anura.core.API.Core; import de.anura.core.API.Errors; import de.anura.core.API.Tools; -import de.anura.core.AnuraCore; -import static de.anura.core.AnuraCore.sql; import de.anura.core.Features; -import de.anura.core.ImgRenderer; -import java.awt.Image; -import java.awt.image.BufferedImage; -import java.io.IOException; -import java.net.MalformedURLException; -import java.net.URI; -import java.net.URL; +import de.anura.core.FlowerPots; +import de.anura.core.util.Data; import java.sql.ResultSet; import java.util.HashSet; -import javax.imageio.ImageIO; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.Location; @@ -28,8 +20,6 @@ import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; -import org.bukkit.map.MapRenderer; -import org.bukkit.map.MapView; public class TeamCommands implements CommandExecutor { @@ -115,10 +105,10 @@ public class TeamCommands implements CommandExecutor { Core.statusMsg(sender, "no_perms", false); return true; } - if (Core.getMainClass().stairMode.contains(P)) { - Core.getMainClass().stairMode.remove(P); + if (Data.stairMode.contains(P)) { + Data.stairMode.remove(P); } else { - Core.getMainClass().stairMode.add(P); + Data.stairMode.add(P); } Tools.sendStatusMsg(sender, "Done!", true); return true; @@ -136,78 +126,18 @@ public class TeamCommands implements CommandExecutor { return false; } Location l = P.getLocation(); - if (Core.getMainClass().flowerPots.containsValue(l)) { + if (Data.flowerPots.containsValue(l)) { Core.statusMsg(sender, "set_arch_exists", false); return true; } Core.getMySql().queryUpdate("INSERT INTO corePots(X,Y,Z,world,url,name,money,type) VALUES('" + l.getBlockX() + "','" + l.getBlockY() + "','" + l.getBlockZ() + "','" + l.getWorld().getName() + "','http://mc-anura.de','" + args[0] + "','1','0')"); ResultSet rs = Core.getMySql().querySelect("SELECT id FROM corePots WHERE X = '" + l.getBlockX() + "' AND Y = '" + l.getBlockY() + "' AND Z = '" + l.getBlockZ() + "' AND world = '" + l.getWorld().getName() + "'"); rs.first(); - Core.getMainClass().flowerPots.put(rs.getInt("id"), new Location(l.getWorld(), l.getBlockX(), l.getBlockY(), l.getBlockZ())); + Data.flowerPots.put(rs.getInt("id"), new Location(l.getWorld(), l.getBlockX(), l.getBlockY(), l.getBlockZ())); l.getBlock().setType(Material.BROWN_MUSHROOM); - Core.getMainClass().pots.refreshPot(rs.getInt("id")); + FlowerPots.refreshPot(rs.getInt("id")); Core.statusMsg(sender, "set_arch_ok", true); return true; - } else if (cmd.getName().equalsIgnoreCase("renderMap")) { - if (!sender.hasPermission("core.commands.addmap")) { - Core.statusMsg(sender, "no_perms", false); - return true; - } - if (args.length != 2) { - Core.statusMsg(sender, "wrong_args_count", false); - return false; - } - final CommandSender cs = sender; - final String url = args[0]; - final String name = args[1]; - Tools.sendStatusMsg(cs, "The rendering is starting...", true); - Bukkit.getScheduler().scheduleSyncDelayedTask(Core.getMainClass(), new Runnable() { - - @Override - public void run() { - try { - URI uri = URI.create(url); - URL locUrl = uri.toURL(); - BufferedImage imgSrc = ImageIO.read(locUrl.openStream()); - Image i = imgSrc.getScaledInstance(128, 128, Image.SCALE_SMOOTH); - BufferedImage imgScaled = new BufferedImage(128, 128, BufferedImage.TYPE_INT_ARGB); - imgScaled.getGraphics().drawImage(i, 0, 0, null); - AnuraCore.getInstance().renderedImgs.put(name, imgScaled); - Tools.sendStatusMsg(cs, "The rendering has finished!", true); - } catch (MalformedURLException ex) { - Tools.sendStatusMsg(cs, "Please provide a valid image url!", false); - } catch (IOException ex) { - Tools.sendStatusMsg(cs, "Image rendering not working! Did you provide a valid url?", false); - } - } - - }, 1); - return true; - } else if (cmd.getName().equalsIgnoreCase("addMap")) { - if (P == null) { - Core.statusMsg(sender, "only_player_cmd", false); - return true; - } - if (!P.hasPermission("core.commands.addmap")) { - Core.statusMsg(sender, "no_perms", false); - return true; - } - if (args.length != 1) { - Core.statusMsg(sender, "wrong_args_count", false); - return false; - } - if (!Core.getMainClass().renderedImgs.containsKey(args[0])) { - Tools.sendStatusMsg(sender, "The image with the given name does not exist or this not rendered yet.", true); - return true; - } - MapView mv = Bukkit.createMap(P.getWorld()); - for (MapRenderer mr : mv.getRenderers()) { - mv.removeRenderer(mr); - } - mv.addRenderer(new ImgRenderer(args[0])); - P.setItemInHand(new ItemStack(Material.MAP, 0, mv.getId())); - Core.statusMsg(sender, "addmap_done", true); - return true; } else if (cmd.getName().equalsIgnoreCase("sun")) { if (P != null) { if (P.hasPermission("core.commands.sun")) { @@ -235,7 +165,7 @@ public class TeamCommands implements CommandExecutor { Core.statusMsg(sender, "setjumper_wrong_number", false); return true; } - Core.getMainClass().selectableJumper.put(P, Double.valueOf(args[0])); + Data.selectableJumper.put(P, Double.valueOf(args[0])); sender.sendMessage(ChatColor.GRAY + "[Anura] " + ChatColor.GREEN + Core.getl("setjumper_select_now", sender) + " " + Double.valueOf(args[0]) + ")"); return true; } else if (cmd.getName().equalsIgnoreCase("flyspeed")) { @@ -283,13 +213,13 @@ public class TeamCommands implements CommandExecutor { String world = loc.getWorld().getName(); String server = Core.getMainClass().getConfig().getString("server-name"); String name = args[0]; - ResultSet rs = sql.querySelect("SELECT `name` FROM coreWarps WHERE name = '" + name + "'"); + ResultSet rs = Core.getMySql().querySelect("SELECT `name` FROM coreWarps WHERE name = '" + name + "'"); rs.last(); if (rs.getRow() != 0) { Core.statusMsg(P, "warp_alr_exist", false); return true; } - sql.queryUpdate("INSERT INTO coreWarps(`name`, server, world, X, Y, Z, userWarp) VALUES('" + name + "', '" + server + "', '" + world + "', '" + X + "', '" + Y + "', '" + Z + "', '" + userWarp + "')"); + Core.getMySql().queryUpdate("INSERT INTO coreWarps(`name`, server, world, X, Y, Z, userWarp) VALUES('" + name + "', '" + server + "', '" + world + "', '" + X + "', '" + Y + "', '" + Z + "', '" + userWarp + "')"); Core.statusMsg(P, "warp_set", true); return true; } else if (cmd.getName().equalsIgnoreCase("remwarp")) { @@ -302,13 +232,13 @@ public class TeamCommands implements CommandExecutor { return true; } String map = args[0]; - ResultSet rs = sql.querySelect("SELECT name FROM coreWarps WHERE name = '" + map + "'"); + ResultSet rs = Core.getMySql().querySelect("SELECT name FROM coreWarps WHERE name = '" + map + "'"); rs.last(); if (rs.getRow() == 0) { Core.statusMsg(P, "warp_not_exist", false); return true; } - sql.queryUpdate("DELETE FROM coreWarps WHERE name = '" + map + "'"); + Core.getMySql().queryUpdate("DELETE FROM coreWarps WHERE name = '" + map + "'"); Core.statusMsg(P, "warp_rem_done", true); return true; } else if (cmd.getName().equalsIgnoreCase("toggleBoatFlight")) { diff --git a/src/de/anura/core/events/BlockBreak.java b/src/de/anura/core/events/BlockBreak.java index c2acd95..f4abb70 100644 --- a/src/de/anura/core/events/BlockBreak.java +++ b/src/de/anura/core/events/BlockBreak.java @@ -1,7 +1,10 @@ package de.anura.core.events; +import de.anura.core.API.Core; import de.anura.core.API.Errors; import de.anura.core.AnuraCore; +import de.anura.core.util.Data; +import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.block.Sign; @@ -26,7 +29,7 @@ public class BlockBreak implements Listener { return; } } - if (plugin.flowerPots.containsValue(event.getBlock().getLocation())) { + if (Data.flowerPots.containsValue(event.getBlock().getLocation())) { event.setCancelled(true); } if ((event.getBlock().getType() == Material.ENDER_CHEST || event.getBlock().getType() == Material.RAILS)) { @@ -35,7 +38,9 @@ public class BlockBreak implements Listener { int Z = (int) event.getBlock().getLocation().getZ(); String world = event.getBlock().getLocation().getWorld().getName(); String sql = "DELETE FROM coreJumpers WHERE X = '" + X + "' AND Y = '" + Y + "' AND Z = '" + Z + "' AND world = '" + world + "'"; - AnuraCore.getSql().queryUpdate(sql); + Bukkit.getScheduler().runTaskAsynchronously(plugin, () -> { + AnuraCore.getSql().queryUpdate(sql); + }); } else if (event.getBlock().getState() instanceof Sign) { Sign s = (Sign) event.getBlock().getState(); Location loc = s.getLocation(); @@ -44,9 +49,11 @@ public class BlockBreak implements Listener { int Z = loc.getBlockZ(); String world = loc.getWorld().getName(); String server = plugin.getConfig().getString("server-name"); - AnuraCore.sql.queryUpdate("DELETE FROM coreWarpSigns WHERE X = '" + X + "' AND Y = '" + Y + "' AND Z = '" + Z + "' AND world = '" + world + "' AND server = '" + server + "'"); + Bukkit.getScheduler().runTaskAsynchronously(plugin, () -> { + Core.getMySql().queryUpdate("DELETE FROM coreWarpSigns WHERE X = '" + X + "' AND Y = '" + Y + "' AND Z = '" + Z + "' AND world = '" + world + "' AND server = '" + server + "'"); + }); } else if (event.getBlock().getState().getData() instanceof Stairs) { - if (plugin.sittingBlocks.containsValue(event.getBlock())) { + if (Data.sittingBlocks.containsValue(event.getBlock())) { event.setCancelled(true); } } diff --git a/src/de/anura/core/events/BlockPlace.java b/src/de/anura/core/events/BlockPlace.java index e6e1785..1077a39 100644 --- a/src/de/anura/core/events/BlockPlace.java +++ b/src/de/anura/core/events/BlockPlace.java @@ -3,6 +3,8 @@ package de.anura.core.events; import de.anura.core.API.Core; import de.anura.core.API.Errors; import de.anura.core.AnuraCore; +import de.anura.core.FlowerPots; +import de.anura.core.util.Data; import org.bukkit.Material; import org.bukkit.block.Block; import org.bukkit.event.EventHandler; @@ -24,18 +26,13 @@ public class BlockPlace implements Listener { event.setCancelled(true); } } - if (plugin.flowerPots.containsValue(event.getBlock().getLocation())) { + if (Data.flowerPots.containsValue(event.getBlock().getLocation())) { event.setCancelled(true); final Block b = event.getBlock(); - final int pot = Core.getKeyByValue(plugin.flowerPots, b.getLocation()); - plugin.getServer().getScheduler().scheduleSyncDelayedTask(plugin, new Runnable() { - - @Override - public void run() { - b.setType(Material.BROWN_MUSHROOM); - AnuraCore.getInstance().pots.refreshPot(pot); - } - + final int pot = Core.getKeyByValue(Data.flowerPots, b.getLocation()); + plugin.getServer().getScheduler().scheduleSyncDelayedTask(plugin, () -> { + b.setType(Material.BROWN_MUSHROOM); + FlowerPots.refreshPot(pot); }, 3); } } catch(Throwable e) { diff --git a/src/de/anura/core/events/CmdPreprocess.java b/src/de/anura/core/events/CmdPreprocess.java index 6aa612e..eefaa6d 100644 --- a/src/de/anura/core/events/CmdPreprocess.java +++ b/src/de/anura/core/events/CmdPreprocess.java @@ -3,6 +3,7 @@ package de.anura.core.events; import de.anura.core.API.Core; import de.anura.core.API.Errors; import de.anura.core.AnuraCore; +import de.anura.core.util.Data; import org.bukkit.ChatColor; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; @@ -12,7 +13,6 @@ public class CmdPreprocess implements Listener { public CmdPreprocess(AnuraCore plugin) { plugin.getServer().getPluginManager().registerEvents(this, plugin); - this.plugin = plugin; } @EventHandler @@ -23,7 +23,7 @@ public class CmdPreprocess implements Listener { event.setCancelled(true); Core.statusMsg(event.getPlayer(), "help_command_info", true); } - } else if (plugin.disableCommandsAdventure.containsKey(event.getPlayer()) && plugin.disableCommandsAdventure.get(event.getPlayer())) { + } else if (Data.disableCommandsAdventure.containsKey(event.getPlayer()) && Data.disableCommandsAdventure.get(event.getPlayer())) { event.setCancelled(true); Core.statusMsg(event.getPlayer(), "no_command_red_mg", ChatColor.YELLOW); } @@ -31,5 +31,4 @@ public class CmdPreprocess implements Listener { Errors.reportException(e); } } - private final AnuraCore plugin; } diff --git a/src/de/anura/core/events/DropItem.java b/src/de/anura/core/events/DropItem.java index fe6fdbe..c3179ce 100644 --- a/src/de/anura/core/events/DropItem.java +++ b/src/de/anura/core/events/DropItem.java @@ -20,12 +20,7 @@ public class DropItem implements Listener { if (AnuraCore.getInstance().getConfig().getBoolean("is-main-lobby") && !event.getPlayer().hasPermission("core.inventory.interact")) { event.setCancelled(true); final Player P = event.getPlayer(); - Bukkit.getScheduler().scheduleSyncDelayedTask(AnuraCore.getInstance(), new Runnable() { - @Override - public void run() { - P.updateInventory(); - } - }, 2); + Bukkit.getScheduler().scheduleSyncDelayedTask(AnuraCore.getInstance(), P::updateInventory, 1); } } catch(Throwable e) { Errors.reportException(e); diff --git a/src/de/anura/core/events/EntityDamageByE.java b/src/de/anura/core/events/EntityDamageByE.java index 34b80eb..dad8cdf 100644 --- a/src/de/anura/core/events/EntityDamageByE.java +++ b/src/de/anura/core/events/EntityDamageByE.java @@ -21,7 +21,7 @@ public class EntityDamageByE implements Listener { try { if ((event.getEntity() instanceof ItemFrame || event.getEntity() instanceof ArmorStand) && plugin.getConfig().getBoolean("no-change-blocks")) { if (event.getDamager() instanceof Player) { - if (!((Player) event.getDamager()).hasPermission("core.rules.blocks.break")) { + if (!event.getDamager().hasPermission("core.rules.blocks.break")) { event.setCancelled(true); } } diff --git a/src/de/anura/core/events/InvClick.java b/src/de/anura/core/events/InvClick.java index eef3db2..d1ba749 100644 --- a/src/de/anura/core/events/InvClick.java +++ b/src/de/anura/core/events/InvClick.java @@ -26,12 +26,9 @@ public class InvClick implements Listener { if (!player.hasPermission("core.inventory.interact") && plugin.getConfig().getBoolean("is-main-lobby")) { event.setCancelled(true); final Player p = player; - Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, new Runnable() { - @Override - public void run() { - p.setItemOnCursor(new ItemStack(Material.AIR)); - p.updateInventory(); - } + Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, () -> { + p.setItemOnCursor(new ItemStack(Material.AIR)); + p.updateInventory(); }, 1); } } catch(Throwable e) { diff --git a/src/de/anura/core/events/PlayerInteract.java b/src/de/anura/core/events/PlayerInteract.java index fddb07b..eeb6f87 100644 --- a/src/de/anura/core/events/PlayerInteract.java +++ b/src/de/anura/core/events/PlayerInteract.java @@ -4,10 +4,13 @@ import de.anura.core.API.Core; import de.anura.core.API.Errors; import de.anura.core.API.Tools; import de.anura.core.AnuraCore; +import de.anura.core.FlowerPots; +import de.anura.core.util.Data; import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; import java.sql.ResultSet; import java.util.Arrays; +import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.block.Block; @@ -32,7 +35,7 @@ public class PlayerInteract implements Listener { public void onPlayerInteract(PlayerInteractEvent event) { try { final Block block = event.getClickedBlock(); - if (plugin.selectableJumper.containsKey(event.getPlayer())) { + if (Data.selectableJumper.containsKey(event.getPlayer())) { if (event.getPlayer().hasPermission("core.commands.setjumper")) { if (event.getAction().equals(Action.RIGHT_CLICK_BLOCK) || event.getAction().equals(Action.LEFT_CLICK_BLOCK)) { String type; @@ -42,16 +45,18 @@ public class PlayerInteract implements Listener { type = "far"; } else { Core.statusMsg(event.getPlayer(), "setjumper_block_not_supported", false); - plugin.selectableJumper.remove(event.getPlayer()); + Data.selectableJumper.remove(event.getPlayer()); return; - } - Double X = event.getClickedBlock().getLocation().getX(); - Double Y = event.getClickedBlock().getLocation().getY(); - Double Z = event.getClickedBlock().getLocation().getZ(); + } + double X = event.getClickedBlock().getLocation().getX(); + double Y = event.getClickedBlock().getLocation().getY(); + double Z = event.getClickedBlock().getLocation().getZ(); String world = event.getClickedBlock().getLocation().getWorld().getName(); - String sql = "INSERT INTO coreJumpers(X,Y,Z,world,height,type) VALUES('" + X + "','" + Y + "','" + Z + "','" + world + "','" + plugin.selectableJumper.get(event.getPlayer()) + "','" + type + "')"; - AnuraCore.getSql().queryUpdate(sql); - plugin.selectableJumper.remove(event.getPlayer()); + String sql = "INSERT INTO coreJumpers(X,Y,Z,world,height,type) VALUES('" + X + "','" + Y + "','" + Z + "','" + world + "','" + Data.selectableJumper.get(event.getPlayer()) + "','" + type + "')"; + Bukkit.getScheduler().runTaskAsynchronously(plugin, () -> { + AnuraCore.getSql().queryUpdate(sql); + }); + Data.selectableJumper.remove(event.getPlayer()); Core.statusMsg(event.getPlayer(), "setjumper_done", true); event.setCancelled(true); } @@ -66,13 +71,13 @@ public class PlayerInteract implements Listener { int Z = loc.getBlockZ(); String world = loc.getWorld().getName(); String server = plugin.getConfig().getString("server-name"); - ResultSet rs = AnuraCore.sql.querySelect("SELECT type, value FROM coreWarpSigns WHERE X = '" + X + "' AND Y = '" + Y + "' AND Z = '" + Z + "' AND world = '" + world + "' AND server = '" + server + "'"); + ResultSet rs = Core.getMySql().querySelect("SELECT type, value FROM coreWarpSigns WHERE X = '" + X + "' AND Y = '" + Y + "' AND Z = '" + Z + "' AND world = '" + world + "' AND server = '" + server + "'"); rs.last(); if (rs.getRow() != 0) { rs.first(); if (rs.getString("type").equalsIgnoreCase("warp")) { String warp = rs.getString("value"); - ResultSet rs2 = AnuraCore.sql.querySelect("SELECT world, X, Y, Z FROM coreWarps WHERE name = '" + warp + "' AND server = '" + plugin.getConfig().getString("server-name") + "'"); + ResultSet rs2 = Core.getMySql().querySelect("SELECT world, X, Y, Z FROM coreWarps WHERE name = '" + warp + "' AND server = '" + plugin.getConfig().getString("server-name") + "'"); rs2.last(); if (rs2.getRow() == 0) { Core.statusMsg(P, "warpsign_warp_not_exist", false); @@ -95,28 +100,32 @@ public class PlayerInteract implements Listener { event.setCancelled(true); } } else if (block.getState().getData() instanceof Stairs) { - if (plugin.stairMode.contains(event.getPlayer()) && event.getAction().equals(Action.RIGHT_CLICK_BLOCK)) { + if (Data.stairMode.contains(event.getPlayer()) && event.getAction().equals(Action.RIGHT_CLICK_BLOCK)) { event.setCancelled(true); - if (plugin.sittableBlocks.contains(block)) { - plugin.sittableBlocks.remove(block); + if (Data.sittableBlocks.contains(block)) { + Data.sittableBlocks.remove(block); Tools.sendStatusMsg(event.getPlayer(), "Removed!", false); int X = block.getLocation().getBlockX(); int Y = block.getLocation().getBlockY(); int Z = block.getLocation().getBlockZ(); - Core.getMySql().queryUpdate("DELETE FROM coreStairs WHERE server = '" + plugin.getConfig().getString("server-name") + "' AND world = '" + block.getWorld().getName() + "' AND X = '" + X + "' AND Y = '" + Y + "' AND Z = '" + Z + "'"); + Bukkit.getScheduler().runTaskAsynchronously(plugin, () -> { + Core.getMySql().queryUpdate("DELETE FROM coreStairs WHERE server = '" + plugin.getConfig().getString("server-name") + "' AND world = '" + block.getWorld().getName() + "' AND X = '" + X + "' AND Y = '" + Y + "' AND Z = '" + Z + "'"); + }); } else { - plugin.sittableBlocks.add(block); + Data.sittableBlocks.add(block); Tools.sendStatusMsg(event.getPlayer(), "Added!", true); int X = block.getLocation().getBlockX(); int Y = block.getLocation().getBlockY(); int Z = block.getLocation().getBlockZ(); - Core.getMySql().queryUpdate("INSERT INTO coreStairs(server,world,X,Y,Z) VALUES('" + plugin.getConfig().getString("server-name") + "','" + block.getWorld().getName() + "','" + X + "','" + Y + "','" + Z + "')"); + Bukkit.getScheduler().runTaskAsynchronously(plugin, () -> { + Core.getMySql().queryUpdate("INSERT INTO coreStairs(server,world,X,Y,Z) VALUES('" + plugin.getConfig().getString("server-name") + "','" + block.getWorld().getName() + "','" + X + "','" + Y + "','" + Z + "')"); + }); } - } else if (plugin.getConfig().getBoolean("allow-stairs-sit") && event.getAction().equals(Action.RIGHT_CLICK_BLOCK) && plugin.sittableBlocks.contains(block) && !plugin.denySit.contains(event.getPlayer())) { - if (plugin.sittingPlayer.containsKey(event.getPlayer())) { + } else if (plugin.getConfig().getBoolean("allow-stairs-sit") && event.getAction().equals(Action.RIGHT_CLICK_BLOCK) && Data.sittableBlocks.contains(block) && !Data.denySit.contains(event.getPlayer())) { + if (Data.sittingPlayer.containsKey(event.getPlayer())) { Core.statusMsg(event.getPlayer(), "sitting_already", false); event.setCancelled(true); - } else if (plugin.sittingBlocks.containsValue(block)) { + } else if (Data.sittingBlocks.containsValue(block)) { Core.statusMsg(event.getPlayer(), "sitting_occupied", false); event.setCancelled(true); } else { @@ -127,24 +136,19 @@ public class PlayerInteract implements Listener { loc.add(s.getFacing().getModX() * 0.2, 0, s.getFacing().getModZ() * 0.2); Arrow a = loc.getWorld().spawnArrow(loc, new Vector(0, 0, 0), 0, 0); a.setPassenger(event.getPlayer()); - plugin.sittingPlayer.put(event.getPlayer(), a); - plugin.sittingBlocks.put(event.getPlayer(), block); + Data.sittingPlayer.put(event.getPlayer(), a); + Data.sittingBlocks.put(event.getPlayer(), block); event.setCancelled(true); } } } - } else if (plugin.flowerPots.containsValue(block.getLocation())) { + } else if (Data.flowerPots.containsValue(block.getLocation())) { event.setCancelled(true); final Player p = event.getPlayer(); - plugin.getServer().getScheduler().scheduleSyncDelayedTask(plugin, new Runnable() { - - @Override - public void run() { - p.sendBlockChange(block.getLocation(), Material.AIR, (byte) 0); - } - + plugin.getServer().getScheduler().scheduleSyncDelayedTask(plugin, () -> { + p.sendBlockChange(block.getLocation(), Material.AIR, (byte) 0); }, 3); - plugin.pots.playerFoundPot(event.getPlayer(), Core.getKeyByValue(plugin.flowerPots, block.getLocation())); + FlowerPots.playerFoundPot(event.getPlayer(), Core.getKeyByValue(Data.flowerPots, block.getLocation())); } } if (plugin.getConfig().getBoolean("no-change-blocks")) { @@ -183,6 +187,10 @@ public class PlayerInteract implements Listener { } event.setCancelled(cancelled); } + } else if (plugin.getConfig().getBoolean("no-bed-explode")) { + if (event.getAction() == Action.RIGHT_CLICK_BLOCK && event.getClickedBlock().getType() == Material.BED_BLOCK) { + event.setCancelled(true); + } } } catch(Throwable e) { Errors.reportException(e); diff --git a/src/de/anura/core/events/PlayerInteractE.java b/src/de/anura/core/events/PlayerInteractE.java index d7ebc32..595ae10 100644 --- a/src/de/anura/core/events/PlayerInteractE.java +++ b/src/de/anura/core/events/PlayerInteractE.java @@ -2,11 +2,8 @@ package de.anura.core.events; import de.anura.core.API.Errors; import de.anura.core.AnuraCore; -import org.bukkit.Material; import org.bukkit.entity.ArmorStand; -import org.bukkit.entity.Chicken; import org.bukkit.entity.EntityType; -import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerInteractEntityEvent; @@ -25,27 +22,6 @@ public class PlayerInteractE implements Listener { if (!event.getPlayer().hasPermission("core.rules.blocks.interact")) { event.setCancelled(true); } - } else if (event.getRightClicked().getType().equals(EntityType.CHICKEN) && plugin.getConfig().getBoolean("golf")) { - Player P = event.getPlayer(); - Chicken b = (Chicken) event.getRightClicked(); - if (P.getItemInHand().getType().equals(Material.STICK)) { - int power; - - if (!plugin.golfPower.containsKey(P)) { - power = 1; - } else { - power = plugin.golfPower.get(P); - power++; - } - if (power > 40) { - power = 40; - } - System.out.println(power); - plugin.golfPower.put(P, power); - plugin.releaseGolf.put(P, false); - plugin.golfBall.put(P, b); - - } } else if (event.getRightClicked() instanceof ArmorStand && plugin.getConfig().getBoolean("no-change-blocks")) { if (!event.getPlayer().hasPermission("core.rules.blocks.interact")) { event.setCancelled(true); diff --git a/src/de/anura/core/events/PlayerJoin.java b/src/de/anura/core/events/PlayerJoin.java index 414715d..5f1589d 100644 --- a/src/de/anura/core/events/PlayerJoin.java +++ b/src/de/anura/core/events/PlayerJoin.java @@ -3,11 +3,13 @@ package de.anura.core.events; import de.anura.core.API.Core; import de.anura.core.API.Errors; import de.anura.core.AnuraCore; +import de.anura.core.FlowerPots; import de.anura.core.Teleports; +import de.anura.core.util.Data; import java.sql.ResultSet; import java.util.UUID; +import org.bukkit.Bukkit; import org.bukkit.configuration.file.FileConfiguration; - import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerJoinEvent; @@ -37,16 +39,20 @@ public class PlayerJoin implements Listener { } rs.last(); if (rs.getRow() != 1) { - AnuraCore.getSql().queryUpdate("INSERT INTO players(`uuid`,`game`,`waiting`,`gameName`) VALUES('" + uuid.toString() + "','none','none','')"); + Bukkit.getScheduler().runTaskAsynchronously(plugin, () -> { + AnuraCore.getSql().queryUpdate("INSERT INTO players(`uuid`,`game`,`waiting`,`gameName`) VALUES('" + uuid.toString() + "','none','none','')"); + }); } event.setJoinMessage(null); - plugin.pots.refreshCache(event.getPlayer()); - plugin.pots.refreshPlayer(event.getPlayer()); + Bukkit.getScheduler().runTaskAsynchronously(plugin, () -> { + FlowerPots.refreshCache(event.getPlayer()); + FlowerPots.refreshPlayer(event.getPlayer()); + Data.disableCommandsAdventure.put(event.getPlayer(), false); + Data.joinTime.put(event.getPlayer(), (int) (System.currentTimeMillis() / 1000)); + Data.aimTheWaterWins.put(event.getPlayer(), 0); + Core.getLevel().loadLevel(event.getPlayer()); + }); plugin.getFeatures().updateFeatures(event.getPlayer()); - plugin.disableCommandsAdventure.put(event.getPlayer(), false); - plugin.joinTime.put(event.getPlayer(), (int) (System.currentTimeMillis() / 1000)); - plugin.aimTheWaterWins.put(event.getPlayer(), 0); - Core.getLevel().loadLevel(event.getPlayer()); String name = event.getPlayer().getName(); if (Teleports.queuedLocs.containsKey(name)) { event.getPlayer().teleport(Teleports.queuedLocs.get(name)); @@ -54,7 +60,7 @@ public class PlayerJoin implements Listener { } else if (c.getBoolean("on-join-to-spawn")) { Core.toSpawn(event.getPlayer()); } - + } catch(Throwable e) { Errors.reportException(e); } diff --git a/src/de/anura/core/events/PlayerKick.java b/src/de/anura/core/events/PlayerKick.java index 235ca68..3842641 100644 --- a/src/de/anura/core/events/PlayerKick.java +++ b/src/de/anura/core/events/PlayerKick.java @@ -3,6 +3,7 @@ package de.anura.core.events; import de.anura.core.API.Core; import de.anura.core.API.Errors; import de.anura.core.AnuraCore; +import de.anura.core.util.Data; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerKickEvent; @@ -17,7 +18,7 @@ public class PlayerKick implements Listener { @EventHandler public void onPlayerKick(PlayerKickEvent event) { try { - AnuraCore.getInstance().disableCommandsAdventure.remove(event.getPlayer()); + Data.disableCommandsAdventure.remove(event.getPlayer()); if (plugin.getConfig().getBoolean("allow-stairs-sit")) { Core.endSitting(event.getPlayer()); } diff --git a/src/de/anura/core/events/PlayerMove.java b/src/de/anura/core/events/PlayerMove.java index a34c7a9..a4e6a41 100644 --- a/src/de/anura/core/events/PlayerMove.java +++ b/src/de/anura/core/events/PlayerMove.java @@ -2,17 +2,20 @@ package de.anura.core.events; import de.anura.core.API.Errors; import de.anura.core.AnuraCore; +import de.anura.core.FlowerPots; +import de.anura.core.util.Data; import java.sql.ResultSet; +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.material.Sign; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerMoveEvent; +import org.bukkit.material.Sign; import org.bukkit.util.Vector; public class PlayerMove implements Listener { @@ -33,8 +36,7 @@ public class PlayerMove implements Listener { if (event.getTo().getY() <= -40 && plugin.getConfig().getBoolean("no-void-death")) { p.performCommand("spawn"); - } - if (block.getType().equals(Material.CARPET) && under.getType().equals(Material.SIGN_POST)) { + } else if (block.getType().equals(Material.CARPET) && under.getType().equals(Material.SIGN_POST)) { p.setWalkSpeed(0.6F); } else if (block.getType().equals(Material.CARPET) && under.getType().equals(Material.ENDER_CHEST)) { double X = under.getLocation().getX(); @@ -42,28 +44,39 @@ public class PlayerMove implements Listener { double Z = under.getLocation().getZ(); String world = under.getLocation().getWorld().getName(); String sql = "SELECT * FROM coreJumpers WHERE X = '" + (int) X + "' AND Y = '" + (int) Y + "' AND Z = '" + (int) Z + "' AND world = '" + world + "' AND type = 'high'"; - ResultSet rs = AnuraCore.getSql().querySelect(sql); - rs.last(); - if (rs.getRow() > 0) { - p.setVelocity(new Vector(0, rs.getDouble("height"), 0)); - p.getWorld().spigot().playEffect(p.getLocation(), Effect.FIREWORKS_SPARK, 0, 0, (float) 0.1, (float) 0.1, (float) 0.1, (float) 0.3, 10, 1); - } + Bukkit.getScheduler().runTaskAsynchronously(plugin, () -> { + try { + ResultSet rs = AnuraCore.getSql().querySelect(sql); + rs.last(); + if (rs.getRow() > 0) { + p.setVelocity(new Vector(0, rs.getDouble("height"), 0)); + p.getWorld().spigot().playEffect(p.getLocation(), Effect.FIREWORKS_SPARK, 0, 0, (float) 0.1, (float) 0.1, (float) 0.1, (float) 0.3, 10, 1); + } + } catch(Throwable ex) { + Errors.reportException(ex); + } + }); p.setWalkSpeed(0.2F); - } else if (block.getType().equals(Material.CARPET) && under.getType().equals(Material.RAILS)) { double X = under.getLocation().getX(); double Y = under.getLocation().getY(); double Z = under.getLocation().getZ(); String world = under.getLocation().getWorld().getName(); String sql = "SELECT * FROM coreJumpers WHERE X = '" + (int) X + "' AND Y = '" + (int) Y + "' AND Z = '" + (int) Z + "' AND world = '" + world + "' AND type = 'far'"; - ResultSet rs = AnuraCore.getSql().querySelect(sql); - rs.last(); - if (rs.getRow() > 0) { - p.setVelocity(p.getLocation().getDirection().multiply(new Vector(rs.getDouble("height"), 1, rs.getDouble("height")))); - p.setVelocity(p.getVelocity().setY(1.3)); - p.getWorld().spigot().playEffect(p.getLocation(), Effect.LAVA_POP, 0, 0, (float) 0.1, (float) 0.1, (float) 0.1, (float) 0.3, 10, 1); - p.playSound(p.getLocation(), Sound.EXPLODE, 1, 1); - } + Bukkit.getScheduler().runTaskAsynchronously(plugin, () -> { + try { + ResultSet rs = AnuraCore.getSql().querySelect(sql); + rs.last(); + if (rs.getRow() > 0) { + p.setVelocity(p.getLocation().getDirection().multiply(new Vector(rs.getDouble("height"), 1, rs.getDouble("height")))); + p.setVelocity(p.getVelocity().setY(1.3)); + p.getWorld().spigot().playEffect(p.getLocation(), Effect.LAVA_POP, 0, 0, (float) 0.1, (float) 0.1, (float) 0.1, (float) 0.3, 10, 1); + p.playSound(p.getLocation(), Sound.EXPLODE, 1, 1); + } + } catch(Throwable ex) { + Errors.reportException(ex); + } + }); p.setWalkSpeed(0.2F); } else { p.setWalkSpeed(0.2F); @@ -91,8 +104,8 @@ public class PlayerMove implements Listener { event.getPlayer().setVelocity(new Vector(0, 0, -0.3)); } } - if (!plugin.lastLoc.containsKey(p) || !plugin.lastLoc.get(p).getWorld().equals(p.getLocation().getWorld()) || plugin.lastLoc.get(p).distance(p.getLocation()) > 1) { - plugin.pots.refreshPlayer(p); + if (!Data.lastLoc.containsKey(p) || !Data.lastLoc.get(p).getWorld().equals(p.getLocation().getWorld()) || Data.lastLoc.get(p).distance(p.getLocation()) > 1) { + FlowerPots.refreshPlayer(p); } } catch(Throwable e) { Errors.reportException(e); diff --git a/src/de/anura/core/events/PlayerQuit.java b/src/de/anura/core/events/PlayerQuit.java index ef288ba..4a081b0 100644 --- a/src/de/anura/core/events/PlayerQuit.java +++ b/src/de/anura/core/events/PlayerQuit.java @@ -4,6 +4,7 @@ import de.anura.core.API.Core; import de.anura.core.API.Errors; import de.anura.core.API.Money; import de.anura.core.AnuraCore; +import de.anura.core.util.Data; import org.bukkit.Bukkit; import org.bukkit.entity.Boat; import org.bukkit.entity.EntityType; @@ -28,8 +29,10 @@ public class PlayerQuit implements Listener { } event.setQuitMessage(null); Core.endSitting(event.getPlayer()); - AnuraCore.getInstance().disableCommandsAdventure.remove(event.getPlayer()); - Money.saveMoney(event.getPlayer()); + Data.disableCommandsAdventure.remove(event.getPlayer()); + Bukkit.getScheduler().runTaskAsynchronously(Core.getMainClass(), () -> { + Money.saveMoney(event.getPlayer()); + }); Core.getLevel().update(event.getPlayer()); Bukkit.getScoreboardManager().getMainScoreboard().resetScores(event.getPlayer()); } catch(Throwable e) { diff --git a/src/de/anura/core/events/PlayerTeleport.java b/src/de/anura/core/events/PlayerTeleport.java index 4592331..585245f 100644 --- a/src/de/anura/core/events/PlayerTeleport.java +++ b/src/de/anura/core/events/PlayerTeleport.java @@ -1,8 +1,11 @@ package de.anura.core.events; import de.anura.core.AnuraCore; +import de.anura.core.util.Data; import org.bukkit.Location; +import org.bukkit.Material; import org.bukkit.block.Block; +import org.bukkit.block.BlockFace; import org.bukkit.entity.Arrow; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; @@ -17,31 +20,42 @@ public class PlayerTeleport implements Listener { public PlayerTeleport(AnuraCore plugin) { plugin.getServer().getPluginManager().registerEvents(this, plugin); - this.plugin = plugin; } @EventHandler(priority = EventPriority.LOWEST) public void onPlayerTeleport(PlayerTeleportEvent event) { - - if (plugin.sittingPlayer.containsKey(event.getPlayer()) && !event.getCause().equals(TeleportCause.PLUGIN)) { + if (Data.sittingPlayer.containsKey(event.getPlayer()) && !event.getCause().equals(TeleportCause.PLUGIN)) { if (event.getPlayer().isSneaking()) { Player P = event.getPlayer(); - Block b = plugin.sittingBlocks.get(P); + Block b = Data.sittingBlocks.get(P); MaterialData md = b.getState().getData(); if (md instanceof Stairs) { Stairs s = (Stairs) md; Location loc = b.getRelative(s.getFacing()).getLocation(); - Arrow a = plugin.sittingPlayer.get(P); + if (!hasPlace(loc)) { + for (BlockFace f : new BlockFace[] {BlockFace.SOUTH, BlockFace.WEST, BlockFace.NORTH, BlockFace.EAST}) { + if (f == s.getFacing()) continue; + if (hasPlace(b.getRelative(f).getLocation())) { + loc = b.getRelative(f).getLocation(); + break; + } + } + } + loc.add(0.5, 0, 0.5); + Arrow a = Data.sittingPlayer.get(P); event.setTo(loc); P.setSneaking(false); a.remove(); - plugin.sittingPlayer.remove(P); - plugin.sittingBlocks.remove(P); + Data.sittingPlayer.remove(P); + Data.sittingBlocks.remove(P); return; } } event.setCancelled(true); } } - private final AnuraCore plugin; + + private boolean hasPlace(Location loc) { + return loc.getBlock().getType() == Material.AIR && loc.clone().add(0, 1, 0).getBlock().getType() == Material.AIR; + } } diff --git a/src/de/anura/core/events/SignChange.java b/src/de/anura/core/events/SignChange.java index baf43f5..3cbb3d1 100644 --- a/src/de/anura/core/events/SignChange.java +++ b/src/de/anura/core/events/SignChange.java @@ -32,7 +32,7 @@ public class SignChange implements Listener { return; } if (event.getLine(1).endsWith("Warp")) { - ResultSet rs = AnuraCore.sql.querySelect("SELECT name FROM coreWarps WHERE name = '" + event.getLine(2) + "'"); + ResultSet rs = Core.getMySql().querySelect("SELECT name FROM coreWarps WHERE name = '" + event.getLine(2) + "'"); rs.last(); if (rs.getRow() == 0) { event.setLine(0, ChatColor.STRIKETHROUGH + "[Warp]"); @@ -46,7 +46,7 @@ public class SignChange implements Listener { int Z = loc.getBlockZ(); String world = loc.getWorld().getName(); String server = plugin.getConfig().getString("server-name"); - AnuraCore.sql.queryUpdate("INSERT INTO coreWarpSigns(X,Y,Z,world,server,type,value,info) VALUES('" + X + "','" + Y + "','" + Z + "','" + world + "','" + server + "','warp','" + event.getLine(2) + "','" + event.getLine(3) + "')"); + Core.getMySql().queryUpdate("INSERT INTO coreWarpSigns(X,Y,Z,world,server,type,value,info) VALUES('" + X + "','" + Y + "','" + Z + "','" + world + "','" + server + "','warp','" + event.getLine(2) + "','" + event.getLine(3) + "')"); event.setLine(0, "[" + ChatColor.GREEN + "Warp" + ChatColor.BLACK + "]"); event.setLine(1, ChatColor.DARK_GRAY + "--------"); event.setLine(2, ChatColor.AQUA + event.getLine(2)); @@ -60,7 +60,7 @@ public class SignChange implements Listener { int Z = loc.getBlockZ(); String world = loc.getWorld().getName(); String server = plugin.getConfig().getString("server-name"); - AnuraCore.sql.queryUpdate("INSERT INTO coreWarpSigns(X,Y,Z,world,server,type,value,info) VALUES('" + X + "','" + Y + "','" + Z + "','" + world + "','" + server + "','spawn','none','" + event.getLine(3) + "')"); + Core.getMySql().queryUpdate("INSERT INTO coreWarpSigns(X,Y,Z,world,server,type,value,info) VALUES('" + X + "','" + Y + "','" + Z + "','" + world + "','" + server + "','spawn','none','" + event.getLine(3) + "')"); event.setLine(0, ChatColor.DARK_GRAY + "---------"); event.setLine(1, ChatColor.BLACK + "[" + ChatColor.GREEN + "Spawn" + ChatColor.BLACK + "]"); event.setLine(2, ChatColor.DARK_GRAY + "---------"); @@ -74,7 +74,7 @@ public class SignChange implements Listener { String world = loc.getWorld().getName(); String server = event.getLine(2); String curServer = plugin.getConfig().getString("server-name"); - AnuraCore.sql.queryUpdate("INSERT INTO coreWarpSigns(X,Y,Z,world,server,type,value,info) VALUES('" + X + "','" + Y + "','" + Z + "','" + world + "','" + curServer + "','server','" + server + "','" + event.getLine(3) + "')"); + Core.getMySql().queryUpdate("INSERT INTO coreWarpSigns(X,Y,Z,world,server,type,value,info) VALUES('" + X + "','" + Y + "','" + Z + "','" + world + "','" + curServer + "','server','" + server + "','" + event.getLine(3) + "')"); event.setLine(0, ChatColor.BLACK + "[" + ChatColor.GREEN + "Server" + ChatColor.BLACK + "]"); event.setLine(1, ChatColor.GREEN + "--" + ChatColor.DARK_GRAY + "/" + ChatColor.GREEN + "--"); event.setLine(2, ChatColor.AQUA + event.getLine(2)); diff --git a/src/de/anura/core/util/Data.java b/src/de/anura/core/util/Data.java new file mode 100644 index 0000000..a7d2bee --- /dev/null +++ b/src/de/anura/core/util/Data.java @@ -0,0 +1,30 @@ +package de.anura.core.util; + +import java.awt.image.BufferedImage; +import java.util.ArrayList; +import java.util.HashMap; +import org.bukkit.Location; +import org.bukkit.block.Block; +import org.bukkit.entity.Arrow; +import org.bukkit.entity.Entity; +import org.bukkit.entity.Player; + +public class Data { + public static HashMap selectableJumper = new HashMap<>(); + public static HashMap permGroup = new HashMap<>(); + public static HashMap sittingPlayer = new HashMap<>(); + public static HashMap sittingBlocks = new HashMap<>(); + public static HashMap flowerPots = new HashMap<>(); + public static HashMap flowerPotsWait = new HashMap<>(); + public static HashMap lastLoc = new HashMap<>(); + public static HashMap renderedImgs = new HashMap<>(); + public static ArrayList stairMode = new ArrayList<>(); + public static ArrayList sittableBlocks = new ArrayList<>(); + public static HashMap golfPower = new HashMap<>(); + public static HashMap releaseGolf = new HashMap<>(); + public static HashMap golfBall = new HashMap<>(); + public static HashMap disableCommandsAdventure = new HashMap<>(); + public static HashMap joinTime = new HashMap<>(); + public static HashMap aimTheWaterWins = new HashMap<>(); + public static ArrayList denySit = new ArrayList<>(); +}