From f98ff821314f25a4fe878e615e8263d15a063b3e Mon Sep 17 00:00:00 2001 From: kaenganxt Date: Tue, 18 Nov 2014 21:36:08 +0100 Subject: [PATCH] Implement new error handler and bug reporting system --- src/de/anura/core/API/Core.java | 70 +-- src/de/anura/core/API/Errors.java | 58 +++ src/de/anura/core/API/Inventories.java | 139 +++--- src/de/anura/core/API/Level.java | 47 +- src/de/anura/core/API/Money.java | 7 +- src/de/anura/core/API/MySQL.java | 45 +- src/de/anura/core/AnuraCore.java | 75 +-- src/de/anura/core/Features.java | 178 ++++--- src/de/anura/core/FlowerPots.java | 102 ++-- src/de/anura/core/LanguageSupport.java | 8 +- src/de/anura/core/Permissions.java | 104 ++-- src/de/anura/core/RealTime.java | 29 +- src/de/anura/core/Setup.java | 230 ++++----- src/de/anura/core/Signs.java | 29 +- src/de/anura/core/commands/AdminCommands.java | 115 ++--- src/de/anura/core/commands/OtherCommands.java | 76 +-- .../anura/core/commands/PlayerCommands.java | 434 ++++++++-------- src/de/anura/core/commands/TeamCommands.java | 464 +++++++++--------- src/de/anura/core/events/BlockBreak.java | 57 ++- src/de/anura/core/events/BlockPlace.java | 37 +- src/de/anura/core/events/BlockSpread.java | 9 +- src/de/anura/core/events/CmdPreprocess.java | 17 +- src/de/anura/core/events/DropItem.java | 23 +- src/de/anura/core/events/EntityDamage.java | 9 +- src/de/anura/core/events/EntityDamageByE.java | 13 +- src/de/anura/core/events/FoodChange.java | 13 +- src/de/anura/core/events/HangingEBreak.java | 23 +- src/de/anura/core/events/InvClick.java | 27 +- src/de/anura/core/events/LeavesDecay.java | 19 +- src/de/anura/core/events/PlayerChat.java | 10 +- src/de/anura/core/events/PlayerInteract.java | 210 ++++---- src/de/anura/core/events/PlayerInteractE.java | 49 +- src/de/anura/core/events/PlayerJoin.java | 32 +- src/de/anura/core/events/PlayerKick.java | 14 +- src/de/anura/core/events/PlayerMove.java | 89 ++-- src/de/anura/core/events/PlayerQuit.java | 23 +- src/de/anura/core/events/PlayerTeleport.java | 1 + src/de/anura/core/events/SignChange.java | 127 +++-- src/de/anura/core/events/WeatherChange.java | 10 +- 39 files changed, 1602 insertions(+), 1420 deletions(-) create mode 100644 src/de/anura/core/API/Errors.java diff --git a/src/de/anura/core/API/Core.java b/src/de/anura/core/API/Core.java index 20c342c..da3d8a2 100644 --- a/src/de/anura/core/API/Core.java +++ b/src/de/anura/core/API/Core.java @@ -2,7 +2,6 @@ package de.anura.core.API; import de.anura.core.AnuraCore; import java.sql.ResultSet; -import java.sql.SQLException; import java.util.HashMap; import java.util.Map; import java.util.Set; @@ -27,6 +26,9 @@ public class Core { * @return The working MySQL Object */ public static MySQL getMySql() { + if (AnuraCore.getSql() == null) { + return null; + } if (!AnuraCore.getSql().isValid) { return null; } @@ -111,21 +113,23 @@ public class Core { * @return Returns the short language name of the player (like de or en) */ public static String getPlayerLang(CommandSender P) { - if (!(P instanceof Player)) { - return "en"; - } - Player p = (Player) P; - if (!Core.cachedPlayerLanguage.containsKey(p)) { - ResultSet rs = AnuraCore.sql.querySelect("SELECT lang FROM players WHERE uuid = '" + p.getUniqueId().toString() + "'"); - try { - rs.first(); - Core.cachedPlayerLanguage.put(p, rs.getString("lang")); - return rs.getString("lang"); - } catch (SQLException ex) { - System.out.println("SQLException in getPlayerLang of API: " + ex.getLocalizedMessage()); + try { + if (!(P instanceof Player)) { + return "en"; } - } else { - return Core.cachedPlayerLanguage.get(p); + Player p = (Player) P; + if (!Core.cachedPlayerLanguage.containsKey(p)) { + ResultSet rs = AnuraCore.sql.querySelect("SELECT lang FROM players WHERE uuid = '" + p.getUniqueId().toString() + "'"); + + rs.first(); + Core.cachedPlayerLanguage.put(p, rs.getString("lang")); + return rs.getString("lang"); + + } else { + return Core.cachedPlayerLanguage.get(p); + } + } catch (Throwable e) { + Errors.reportException(e); } return "en"; } @@ -187,23 +191,27 @@ public class Core { } public static void endSitting(Player P) { - if (getMainClass().sittingPlayer.containsKey(P)) { - MaterialData md = getMainClass().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 = (Entity) getMainClass().sittingPlayer.get(P); - P.teleport(loc); - a.remove(); - getMainClass().sittingPlayer.remove(P); - getMainClass().sittingBlocks.remove(P); - } else { - Location loc = getMainClass().sittingPlayer.get(P).getLocation(); - P.teleport(loc); - getMainClass().sittingPlayer.get(P).remove(); - getMainClass().sittingPlayer.remove(P); - getMainClass().sittingBlocks.remove(P); + try { + if (getMainClass().sittingPlayer.containsKey(P)) { + MaterialData md = getMainClass().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 = (Entity) getMainClass().sittingPlayer.get(P); + P.teleport(loc); + a.remove(); + getMainClass().sittingPlayer.remove(P); + getMainClass().sittingBlocks.remove(P); + } else { + Location loc = getMainClass().sittingPlayer.get(P).getLocation(); + P.teleport(loc); + getMainClass().sittingPlayer.get(P).remove(); + getMainClass().sittingPlayer.remove(P); + getMainClass().sittingBlocks.remove(P); + } } + } catch (Throwable e) { + Errors.reportException(e); } } diff --git a/src/de/anura/core/API/Errors.java b/src/de/anura/core/API/Errors.java new file mode 100644 index 0000000..2b33191 --- /dev/null +++ b/src/de/anura/core/API/Errors.java @@ -0,0 +1,58 @@ +package de.anura.core.API; + +import java.sql.ResultSet; +import java.util.AbstractMap; +import java.util.Map.Entry; +import java.util.UUID; +import org.bukkit.entity.Player; + +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!!"); + return; + } + try { + String message = exc.getLocalizedMessage(); + String name = exc.getClass().toString(); + String server = Core.getMainClass() == null ? "~not available~" : Core.getMainClass().getConfig().getString("server-name"); + String errorSql = "INSERT INTO coreErrors (server, exception, msg, info, timestamp) VALUES('" + server + "', '" + name + "', '" + 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(); + int id = rs.getInt("id"); + String elemSql = "INSERT INTO coreErrorStack(errorId, className, fileName, methodName, lineNumber, nativeMethod) VALUES"; + boolean first = true; + for(StackTraceElement elem : exc.getStackTrace()) { + if (!first) { + elemSql += ","; + } else { + first = false; + } + elemSql += "('" + id + "', '" + elem.getClassName() + "', '" + elem.getFileName() + "', '" + elem.getMethodName() + "', '" + elem.getLineNumber() + "', " + elem.isNativeMethod() + ")"; + } + Core.getMySql().queryUpdate(elemSql); + } catch (Throwable ex) { + System.err.println("FATAL ERROR: Error handler generated an exception!! (" + ex.getLocalizedMessage() + ")"); + ex.printStackTrace(); + } + } + + public static void reportException(Throwable exc) { + reportException(exc, ""); + } + + public static void bugReport(Player P, String msg, Entry... data) { + UUID uuid = P.getUniqueId(); + String dataText = ""; + for(Entry date : data) { + dataText += date.getKey() + ":" + date.getValue().toString() + ";"; + } + Core.getMySql().queryUpdate("INSERT INTO serverBugs(player, msg, data, timestamp) VALUES ((SELECT id FROM players WHERE uuid = '" + uuid.toString() + "'), '" + msg + "', '" + dataText + "', '" + System.currentTimeMillis() / 1000 + "')"); + } + + public static Entry make(String key, Object value) { + return new AbstractMap.SimpleEntry<>(key, value); + } +} diff --git a/src/de/anura/core/API/Inventories.java b/src/de/anura/core/API/Inventories.java index 0914c97..28206cd 100644 --- a/src/de/anura/core/API/Inventories.java +++ b/src/de/anura/core/API/Inventories.java @@ -3,7 +3,6 @@ package de.anura.core.API; import de.anura.core.AnuraCore; import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; -import java.io.IOException; import java.util.AbstractMap; import java.util.Arrays; import java.util.HashMap; @@ -192,34 +191,34 @@ public class Inventories implements Listener { itemActions.put(type, new AbstractMap.SimpleEntry<>(action, data)); } - public static void executeAction(Player P, Action action, Object data) { - if (action == Action.SERVER) { - try { + public static void executeAction(Player P, Action action, Object data) { + try { + if (action == Action.SERVER) { ByteArrayOutputStream b = new ByteArrayOutputStream(); DataOutputStream out = new DataOutputStream(b); out.writeUTF("Connect"); out.writeUTF((String) data); P.sendPluginMessage(AnuraCore.getInstance(), "BungeeCord", b.toByteArray()); - } catch (IOException ex) { - System.err.println("IOException whilst trying to connect to " + data); + } else if (action == Action.MESSAGE) { + Core.statusMsg(P, (String) data, true); + } else if (action == Action.OPEN_INV) { + P.openInventory(getInventory((String) data, P)); + } else if (action == Action.TELEPORT) { + P.teleport((Location) data); + } else if (action == Action.COMMAND) { + Bukkit.getServer().dispatchCommand(P, (String) data); + } 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() + "'"); + PlayerInventory pi = P.getInventory(); + for (Entry item : itemPositions.entrySet()) { + pi.setItem(item.getValue(), getItem(item.getKey(), P)); + } + Core.statusMsg(P, "lang_changed", true); } - } else if (action == Action.MESSAGE) { - Core.statusMsg(P, (String) data, true); - } else if (action == Action.OPEN_INV) { - P.openInventory(getInventory((String) data, P)); - } else if (action == Action.TELEPORT) { - P.teleport((Location) data); - } else if (action == Action.COMMAND) { - Bukkit.getServer().dispatchCommand(P, (String) data); - } 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() + "'"); - PlayerInventory pi = P.getInventory(); - for (Entry item : itemPositions.entrySet()) { - pi.setItem(item.getValue(), getItem(item.getKey(), P)); - } - Core.statusMsg(P, "lang_changed", true); + } catch(Throwable e) { + Errors.reportException(e); } } @@ -235,57 +234,65 @@ public class Inventories implements Listener { @EventHandler public void onInvClick(InventoryClickEvent event) { - if (checkInteracts.containsKey((Player) event.getWhoClicked()) && !checkInteracts.get((Player) event.getWhoClicked())) { - return; - } - final Player player = (Player) event.getWhoClicked(); - Inventory inventory = event.getClickedInventory(); - if (inventory == null) return; - String invName = inventory.getName(); - if (invNames.containsKey(invName)) { - event.setCancelled(true); - player.setItemOnCursor(new ItemStack(Material.AIR)); - player.updateInventory(); - if (invActions.get(invNames.get(invName)).containsKey(event.getSlot())) { - player.closeInventory(); - 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(); - } - }, 1); + try { + if (checkInteracts.containsKey((Player) event.getWhoClicked()) && !checkInteracts.get((Player) event.getWhoClicked())) { + return; } - } else if (invNames.containsKey(event.getInventory().getName())) { - event.setCancelled(true); - player.setItemOnCursor(new ItemStack(Material.AIR)); - player.updateInventory(); + final Player player = (Player) event.getWhoClicked(); + Inventory inventory = event.getClickedInventory(); + if (inventory == null) return; + String invName = inventory.getName(); + if (invNames.containsKey(invName)) { + event.setCancelled(true); + player.setItemOnCursor(new ItemStack(Material.AIR)); + player.updateInventory(); + if (invActions.get(invNames.get(invName)).containsKey(event.getSlot())) { + player.closeInventory(); + 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(); + } + }, 1); + } + } else if (invNames.containsKey(event.getInventory().getName())) { + event.setCancelled(true); + player.setItemOnCursor(new ItemStack(Material.AIR)); + player.updateInventory(); + } + } catch(Throwable e) { + Errors.reportException(e); } } @EventHandler public void onPlayerInteract(PlayerInteractEvent event) { - if (checkInteracts.containsKey((Player) event.getPlayer()) && !checkInteracts.get((Player) event.getPlayer())) { - return; - } - if (event.hasItem()) { - if (event.getAction().equals(org.bukkit.event.block.Action.RIGHT_CLICK_AIR) || event.getAction().equals(org.bukkit.event.block.Action.RIGHT_CLICK_BLOCK)) { - final Player P = event.getPlayer(); - String type = itemNames.get(P.getItemInHand().getItemMeta().getDisplayName()); - 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); + try { + if (checkInteracts.containsKey((Player) event.getPlayer()) && !checkInteracts.get((Player) event.getPlayer())) { + return; + } + if (event.hasItem()) { + if (event.getAction().equals(org.bukkit.event.block.Action.RIGHT_CLICK_AIR) || event.getAction().equals(org.bukkit.event.block.Action.RIGHT_CLICK_BLOCK)) { + final Player P = event.getPlayer(); + String type = itemNames.get(P.getItemInHand().getItemMeta().getDisplayName()); + 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); + } } } + } catch(Throwable e) { + Errors.reportException(e); } } diff --git a/src/de/anura/core/API/Level.java b/src/de/anura/core/API/Level.java index 73471a1..26f0954 100644 --- a/src/de/anura/core/API/Level.java +++ b/src/de/anura/core/API/Level.java @@ -1,7 +1,6 @@ package de.anura.core.API; import java.sql.ResultSet; -import java.sql.SQLException; import java.util.HashMap; import org.bukkit.Bukkit; import org.bukkit.Statistic; @@ -14,19 +13,23 @@ public final class Level { private static final HashMap ffLevel = new HashMap<>(); public Level() { - for (Player P : Bukkit.getOnlinePlayers()) { - Core.getMainClass().joinTime.put(P, (int) (System.currentTimeMillis() / 1000)); - Core.getMainClass().aimTheWaterWins.put(P, 0); - } - loadLevelAll(); - Bukkit.getScheduler().scheduleSyncRepeatingTask(Core.getMainClass(), new Runnable() { - - @Override - public void run() { - update(); + try { + for (Player P : Bukkit.getOnlinePlayers()) { + Core.getMainClass().joinTime.put(P, (int) (System.currentTimeMillis() / 1000)); + Core.getMainClass().aimTheWaterWins.put(P, 0); } + loadLevelAll(); + Bukkit.getScheduler().scheduleSyncRepeatingTask(Core.getMainClass(), new Runnable() { - }, 20 * 60, 20 * 60); + @Override + public void run() { + update(); + } + + }, 20 * 60, 20 * 60); + } catch(Throwable e) { + Errors.reportException(e); + } } public void saveStuffAll() { @@ -61,8 +64,8 @@ public final class Level { anuraLevel.put(P, (int) rs.getDouble("level")); smashLevel.put(P, rs.getInt("smashLevel")); ffLevel.put(P, rs.getInt("ffLevel")); - } catch (SQLException ex) { - System.err.println("Error whilst loading player level"); + } catch(Throwable e) { + Errors.reportException(e); } } @@ -71,18 +74,18 @@ public final class Level { update(P); } } - + public void update(Player P) { - if (!anuraLevel.containsKey(P)) { - return; - } - saveStuff(P); try { + if (!anuraLevel.containsKey(P)) { + return; + } + saveStuff(P); String whereClause = " = (SELECT id FROM players WHERE uuid = '" + P.getUniqueId().toString() + "')"; ResultSet stats = Core.getMySql().querySelect("SELECT * FROM coreStats WHERE player" + whereClause); ResultSet features = Core.getMySql().querySelect("SELECT count(*) as features FROM coreFeatures WHERE playerId" + whereClause); ResultSet pots = Core.getMySql().querySelect("SELECT count(*) as pots FROM coreFoundPots WHERE player" + whereClause); - ResultSet stages = Core.getMySql().querySelect("SELECT count(*) as stages FROM jumpUsers WHERE userId" + whereClause); + ResultSet stages = Core.getMySql().querySelect("SELECT count(*) as stages FROM jumpUsers WHERE playerId" + whereClause); ResultSet smashClasses = Core.getMySql().querySelect("SELECT count(*) as classes FROM smashClasses WHERE playerId" + whereClause); stats.first(); features.first(); @@ -105,8 +108,8 @@ public final class Level { anuraLevel.put(P, (int) level); smashLevel.put(P, (int) sLevel); Core.getMySql().queryUpdate("UPDATE coreStats SET level = '" + level + "', smashLevel = '" + sLevel + "' WHERE player" + whereClause); - } catch (SQLException ex) { - System.err.println("SQLException whilst updating player level (" + ex.getLocalizedMessage() + ")"); + } catch(Throwable e) { + Errors.reportException(e); } } diff --git a/src/de/anura/core/API/Money.java b/src/de/anura/core/API/Money.java index bf5b0cf..78f617e 100644 --- a/src/de/anura/core/API/Money.java +++ b/src/de/anura/core/API/Money.java @@ -1,7 +1,6 @@ package de.anura.core.API; import java.sql.ResultSet; -import java.sql.SQLException; import java.util.HashMap; import org.bukkit.OfflinePlayer; @@ -27,13 +26,13 @@ public class Money { } public static boolean loadMoney(OfflinePlayer P) { - ResultSet rs = Core.getMySql().querySelect("SELECT money FROM coreStats WHERE player = (SELECT id FROM players WHERE uuid = '" + P.getUniqueId().toString() + "')"); try { + ResultSet rs = Core.getMySql().querySelect("SELECT money FROM coreStats WHERE player = (SELECT id FROM players WHERE uuid = '" + P.getUniqueId().toString() + "')"); rs.first(); playerMoney.put(P, rs.getInt("money")); return true; - } catch (SQLException ex) { - System.err.println("Could not load money for player " + P.getName()); + } catch(Throwable e) { + Errors.reportException(e); } return false; } diff --git a/src/de/anura/core/API/MySQL.java b/src/de/anura/core/API/MySQL.java index 5454ffd..b119e37 100644 --- a/src/de/anura/core/API/MySQL.java +++ b/src/de/anura/core/API/MySQL.java @@ -40,7 +40,8 @@ public class MySQL { cfg.options().copyDefaults(true); try { cfg.save(file); - } catch (IOException e) { + } catch(Throwable e) { + Errors.reportException(e); } this.host = cfg.getString(dbLoc + "host"); this.port = cfg.getInt(dbLoc + "port"); @@ -65,9 +66,10 @@ public class MySQL { Connection connLoc = DriverManager.getConnection("jdbc:mysql://" + this.host + ":" + this.port + "/" + this.db, this.username, this.pw); this.conn = connLoc; return true; - } catch (ClassNotFoundException | SQLException e) { - return false; + } catch(Throwable e) { + Errors.reportException(e); } + return false; } private boolean hasConnection() { @@ -79,9 +81,10 @@ public class MySQL { validConn = false; } return validConn; - } catch (SQLException e) { - return false; + } catch(Throwable e) { + Errors.reportException(e); } + return false; } private Boolean reconnect() { @@ -128,8 +131,8 @@ public class MySQL { try { st = connLoc.prepareStatement(query); st.executeUpdate(); - } catch (SQLException e) { - System.err.println("Failed to send Update '" + query + "'! (" + e.getLocalizedMessage() + ")"); + } catch(Throwable e) { + Errors.reportException(e); } this.closeRessources(null, st); } @@ -147,8 +150,8 @@ public class MySQL { } else { return returns; } - } catch (SQLException e) { - System.err.println("Unknown error whilst trying to build Prepared Statement!"); + } catch(Throwable e) { + Errors.reportException(e); queryRedo(query, "select"); } return null; @@ -161,28 +164,23 @@ public class MySQL { 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("Caused by: " + e.getMessage()); + } catch(Throwable e) { + Errors.reportException(e); return null; } return rs; } private void closeRessources(ResultSet rs, PreparedStatement st) { - if (rs != null) { - try { + try { + if (rs != null) { rs.close(); - } catch (SQLException e) { - } - } - if (st != null) { - try { + if (st != null) { st.close(); - } catch (SQLException e) { - - } + } + } catch(Throwable e) { + Errors.reportException(e); } } @@ -191,7 +189,8 @@ public class MySQL { if (this.conn != null) { this.conn.close(); } - } catch (SQLException e) { + } catch (Throwable e) { + Errors.reportException(e); } finally { this.conn = null; } diff --git a/src/de/anura/core/AnuraCore.java b/src/de/anura/core/AnuraCore.java index 9483b32..b59a9a1 100644 --- a/src/de/anura/core/AnuraCore.java +++ b/src/de/anura/core/AnuraCore.java @@ -1,13 +1,13 @@ package de.anura.core; import de.anura.core.API.Core; +import de.anura.core.API.Errors; 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 java.io.File; -import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import org.bukkit.Bukkit; @@ -50,52 +50,57 @@ public class AnuraCore extends JavaPlugin { @Override public void onEnable() { - AnuraCore.sql = new MySQL(this); - AnuraCore.instance = this; - if (AnuraCore.sql.isValid) { - if (AnuraCore.getInstance().getConfig().getBoolean("is-main-lobby")) { - for (World w : Bukkit.getWorlds()) { - for (Entity e : w.getEntities()) { - if (e.getType().equals(EntityType.BOAT)) { - e.remove(); + try { + AnuraCore.sql = new MySQL(this); + AnuraCore.instance = this; + if (AnuraCore.sql.isValid) { + if (AnuraCore.getInstance().getConfig().getBoolean("is-main-lobby")) { + for (World w : Bukkit.getWorlds()) { + for (Entity e : w.getEntities()) { + if (e.getType().equals(EntityType.BOAT)) { + e.remove(); + } } } } + this.getServer().getMessenger().registerOutgoingPluginChannel(this, "BungeeCord"); + Setup.setupConfig(); + Setup.setupEvents(); + Setup.setupClasses(); + Setup.setupTasks(); + Setup.setupCommands(); + this.getServer().getMessenger().registerIncomingPluginChannel(this, "BungeeCord", signs); + sql.queryUpdate("DELETE FROM coreServers WHERE name = '" + this.getConfig().getString("server-name") + "'"); + sql.queryUpdate("INSERT INTO coreServers (name, maxPlayers) VALUES ('" + this.getConfig().getString("server-name") + "','" + this.getServer().getMaxPlayers() + "')"); + } else { + Bukkit.getPluginManager().disablePlugin(this); } - this.getServer().getMessenger().registerOutgoingPluginChannel(this, "BungeeCord"); - Setup.setupConfig(); - Setup.setupEvents(); - Setup.setupClasses(); - Setup.setupTasks(); - Setup.setupCommands(); - this.getServer().getMessenger().registerIncomingPluginChannel(this, "BungeeCord", signs); - sql.queryUpdate("DELETE FROM coreServers WHERE name = '" + this.getConfig().getString("server-name") + "'"); - sql.queryUpdate("INSERT INTO coreServers (name, maxPlayers) VALUES ('" + this.getConfig().getString("server-name") + "','" + this.getServer().getMaxPlayers() + "')"); - } else { - Bukkit.getPluginManager().disablePlugin(this); + } catch (Throwable e) { + Errors.reportException(e); } } @Override public void onDisable() { - if (!AnuraCore.sql.isValid) { - return; - } - for (Player P : getServer().getOnlinePlayers()) { - Money.saveMoney(P); - } - File configFile = new File("plugins/Core/", "config.yml"); - File dbFile = new File("plugins/Core", "database.yml"); try { + if (!AnuraCore.sql.isValid) { + return; + } + for (Player P : getServer().getOnlinePlayers()) { + Money.saveMoney(P); + } + File configFile = new File("plugins/Core/", "config.yml"); + File dbFile = new File("plugins/Core", "database.yml"); AnuraCore.sql.config.save(dbFile); this.getConfig().save(configFile); - } catch (IOException e) { - } - sql.queryUpdate("DELETE FROM coreServers WHERE name = '" + this.getConfig().getString("server-name") + "'"); - features.reset(); - level.update(); - for (Player P : this.sittingPlayer.keySet()) { - Core.endSitting(P); + sql.queryUpdate("DELETE FROM coreServers WHERE name = '" + this.getConfig().getString("server-name") + "'"); + features.reset(); + level.update(); + for (Player P : this.sittingPlayer.keySet()) { + Core.endSitting(P); + } + } catch (Throwable e) { + Errors.reportException(e); } } diff --git a/src/de/anura/core/Features.java b/src/de/anura/core/Features.java index d44e819..de7fb0b 100644 --- a/src/de/anura/core/Features.java +++ b/src/de/anura/core/Features.java @@ -1,9 +1,9 @@ package de.anura.core; import de.anura.core.API.Core; +import de.anura.core.API.Errors; import de.anura.core.API.Inventories; import java.sql.ResultSet; -import java.sql.SQLException; import java.util.ArrayList; import java.util.HashMap; import java.util.UUID; @@ -56,10 +56,10 @@ public class Features implements Listener { public static ArrayList wantFlight = new ArrayList<>(); public void updateFeatures(Player P) { - if (!mainLobby()) { - return; - } try { + if (!mainLobby()) { + return; + } 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()); @@ -75,8 +75,8 @@ public class Features implements Listener { featureEnabled.get(P).put(Feature.getById(rs.getInt("featureId")), true); } } - } catch (SQLException ex) { - System.err.println("Could not update player features because of a sql exception: " + ex.getLocalizedMessage()); + } catch (Throwable e) { + Errors.reportException(e); } } @@ -96,50 +96,58 @@ public class Features implements Listener { } public void disableFeature(Player P, Feature f) { - if (!mainLobby()) { - return; - } - if (f == Feature.DOUBLE_JUMP) { - if (!hasFeature(P, f)) { - Core.statusMsg(P, "dont_have_dbl_jump", false); + try { + if (!mainLobby()) { return; } - featureEnabled.get(P).put(f, false); - canDoubleJump.put(P, false); - Core.statusMsg(P, "dbl_jump_off", true); - P.setExp(0); - if (P.getGameMode() != GameMode.CREATIVE) { - P.setAllowFlight(false); + if (f == Feature.DOUBLE_JUMP) { + if (!hasFeature(P, f)) { + Core.statusMsg(P, "dont_have_dbl_jump", false); + return; + } + featureEnabled.get(P).put(f, false); + canDoubleJump.put(P, false); + Core.statusMsg(P, "dbl_jump_off", true); + P.setExp(0); + if (P.getGameMode() != GameMode.CREATIVE) { + P.setAllowFlight(false); + } + } else if (f == Feature.BOAT) { + if (!hasFeature(P, f)) { + Core.statusMsg(P, "dont_have_boats", false); + } + featureEnabled.get(P).put(f, false); + Core.statusMsg(P, "boat_off", true); } - } else if (f == Feature.BOAT) { - if (!hasFeature(P, f)) { - Core.statusMsg(P, "dont_have_boats", false); - } - featureEnabled.get(P).put(f, false); - Core.statusMsg(P, "boat_off", true); + } catch (Throwable e) { + Errors.reportException(e); } } public void enableFeature(Player P, Feature f) { - if (!mainLobby()) { - return; - } - if (f == Feature.DOUBLE_JUMP) { - if (!hasFeature(P, f)) { - Core.statusMsg(P, "dont_have_dbl_jump", false); + try { + if (!mainLobby()) { return; } - featureEnabled.get(P).put(f, true); - P.setAllowFlight(true); - P.setExp(1); - canDoubleJump.put(P, true); - Core.statusMsg(P, "dbl_jump_on", true); - } else if (f == Feature.BOAT) { - if (!hasFeature(P, f)) { - Core.statusMsg(P, "dont_have_boats", false); + if (f == Feature.DOUBLE_JUMP) { + if (!hasFeature(P, f)) { + Core.statusMsg(P, "dont_have_dbl_jump", false); + return; + } + featureEnabled.get(P).put(f, true); + P.setAllowFlight(true); + P.setExp(1); + canDoubleJump.put(P, true); + Core.statusMsg(P, "dbl_jump_on", true); + } else if (f == Feature.BOAT) { + if (!hasFeature(P, f)) { + Core.statusMsg(P, "dont_have_boats", false); + } + featureEnabled.get(P).put(f, true); + Core.statusMsg(P, "boat_on", true); } - featureEnabled.get(P).put(f, true); - Core.statusMsg(P, "boat_on", true); + } catch (Throwable e) { + Errors.reportException(e); } } @@ -198,63 +206,79 @@ public class Features implements Listener { @EventHandler public void onPlayerMove(PlayerMoveEvent event) { - if (!mainLobby()) { - return; - } - 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)) { - this.canDoubleJump.put(P, true); - P.setExp(1); + try { + if (!mainLobby()) { + return; + } + 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)) { + this.canDoubleJump.put(P, true); + P.setExp(1); + } } - } - if (this.hasFeature(P, Feature.BOAT) && featureEnabled.get(P).get(Feature.BOAT)) { - if (P.getLocation().getBlock().getType().equals(Material.STATIONARY_WATER) && P.getVehicle() == null) { - Boat b = (Boat) P.getWorld().spawnEntity(event.getTo(), EntityType.BOAT); - b.setPassenger(P); + if (this.hasFeature(P, Feature.BOAT) && featureEnabled.get(P).get(Feature.BOAT)) { + if (P.getLocation().getBlock().getType().equals(Material.STATIONARY_WATER) && P.getVehicle() == null) { + Boat b = (Boat) P.getWorld().spawnEntity(event.getTo(), EntityType.BOAT); + b.setPassenger(P); + } } + } catch (Throwable e) { + Errors.reportException(e); } } @EventHandler public void onToggleFlight(PlayerToggleFlightEvent event) { - if (!mainLobby()) { - return; - } - Player P = event.getPlayer(); - - if (this.hasFeature(P, Feature.DOUBLE_JUMP) && !P.getGameMode().equals(GameMode.CREATIVE)) { - if (this.canDoubleJump.containsKey(P) && this.canDoubleJump.get(P)) { - this.canDoubleJump.put(P, false); - P.setExp(0); - Vector v = P.getLocation().getDirection(); - P.setVelocity(v.multiply(new Vector(1, 2, 1))); - P.setVelocity(P.getVelocity().setY(1)); - } else { - Vector v = P.getVelocity(); - P.setVelocity(v.setY(-0.4)); + try { + if (!mainLobby()) { + return; } - event.setCancelled(true); + Player P = event.getPlayer(); + + if (this.hasFeature(P, Feature.DOUBLE_JUMP) && !P.getGameMode().equals(GameMode.CREATIVE)) { + if (this.canDoubleJump.containsKey(P) && this.canDoubleJump.get(P)) { + this.canDoubleJump.put(P, false); + P.setExp(0); + Vector v = P.getLocation().getDirection(); + P.setVelocity(v.multiply(new Vector(1, 2, 1))); + P.setVelocity(P.getVelocity().setY(1)); + } else { + Vector v = P.getVelocity(); + P.setVelocity(v.setY(-0.4)); + } + event.setCancelled(true); + } + } catch (Throwable e) { + Errors.reportException(e); } } @EventHandler public void onBoatDestory(VehicleDestroyEvent event) { - if (event.getVehicle().getType().equals(EntityType.BOAT) && AnuraCore.getInstance().getConfig().getBoolean("is-main-lobby")) { - event.setCancelled(true); + try { + if (event.getVehicle().getType().equals(EntityType.BOAT) && AnuraCore.getInstance().getConfig().getBoolean("is-main-lobby")) { + event.setCancelled(true); + } + } catch (Throwable e) { + Errors.reportException(e); } } @EventHandler public void onExit(VehicleExitEvent event) { - if (event.getVehicle().getType().equals(EntityType.BOAT) && AnuraCore.getInstance().getConfig().getBoolean("is-main-lobby")) { - event.getVehicle().remove(); - Player p = (Player) event.getExited(); - p.setVelocity(p.getVelocity().add(new Vector(0D, 1D, 0D))); - if (p.getGameMode().equals(GameMode.CREATIVE) && wantFlight.contains(p.getUniqueId())) { - p.setFlying(true); + try { + if (event.getVehicle().getType().equals(EntityType.BOAT) && AnuraCore.getInstance().getConfig().getBoolean("is-main-lobby")) { + event.getVehicle().remove(); + Player p = (Player) event.getExited(); + p.setVelocity(p.getVelocity().add(new Vector(0D, 1D, 0D))); + if (p.getGameMode().equals(GameMode.CREATIVE) && wantFlight.contains(p.getUniqueId())) { + p.setFlying(true); + } } + } catch (Throwable e) { + Errors.reportException(e); } } } diff --git a/src/de/anura/core/FlowerPots.java b/src/de/anura/core/FlowerPots.java index d4a606f..2c6bd20 100644 --- a/src/de/anura/core/FlowerPots.java +++ b/src/de/anura/core/FlowerPots.java @@ -1,9 +1,9 @@ package de.anura.core; import de.anura.core.API.Core; +import de.anura.core.API.Errors; import de.anura.core.API.Money; import java.sql.ResultSet; -import java.sql.SQLException; import java.util.HashMap; import java.util.Map; import org.bukkit.ChatColor; @@ -56,8 +56,8 @@ public class FlowerPots { } this.foundCache.put(P, list); this.foundTimestamp.put(P, listTimes); - } catch (SQLException ex) { - System.out.println("Error refreshCache(FlowerPots)"); + } catch (Throwable e) { + Errors.reportException(e); } } @@ -88,31 +88,31 @@ public class FlowerPots { } public void playerFoundPot(Player P, Integer pot) { - if (!foundPot(P, pot)) { - Integer time = getPotWaitTime(pot); - boolean alreadyFound = foundCache.get(P).containsKey(pot); - int type = 0; - if (time == -1) { - foundCache.get(P).put(pot, false); - } else { - type = 1; - foundCache.get(P).put(pot, true); - foundTimestamp.get(P).put(pot, (int) (System.currentTimeMillis() / 1000)); - } - String sql; - if (alreadyFound) { - sql = "UPDATE coreFoundPots SET timestamp = '" + (System.currentTimeMillis() / 1000) + "', type = 1 WHERE player = (SELECT id FROM players WHERE uuid = '" + P.getUniqueId().toString() + "') AND id = '" + pot + "'"; - } else { - 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); - for (int i = 0; i < 20; i++) { - loc.getWorld().playEffect(loc, Effect.FIREWORKS_SPARK, 4); - } - P.playSound(loc, Sound.LEVEL_UP, 1, (float) 1.5); - ResultSet rs = AnuraCore.getSql().querySelect("SELECT url, name, money FROM corePots WHERE id = '" + pot + "'"); - try { + try { + if (!foundPot(P, pot)) { + Integer time = getPotWaitTime(pot); + boolean alreadyFound = foundCache.get(P).containsKey(pot); + int type = 0; + if (time == -1) { + foundCache.get(P).put(pot, false); + } else { + type = 1; + foundCache.get(P).put(pot, true); + foundTimestamp.get(P).put(pot, (int) (System.currentTimeMillis() / 1000)); + } + String sql; + if (alreadyFound) { + sql = "UPDATE coreFoundPots SET timestamp = '" + (System.currentTimeMillis() / 1000) + "', type = 1 WHERE player = (SELECT id FROM players WHERE uuid = '" + P.getUniqueId().toString() + "') AND id = '" + pot + "'"; + } else { + 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); + for (int i = 0; i < 20; i++) { + loc.getWorld().playEffect(loc, Effect.FIREWORKS_SPARK, 4); + } + P.playSound(loc, Sound.LEVEL_UP, 1, (float) 1.5); + ResultSet rs = AnuraCore.getSql().querySelect("SELECT url, name, money FROM corePots WHERE id = '" + pot + "'"); rs.first(); Money.payMoney(P, rs.getInt("money")); P.sendMessage(ChatColor.RED + "---------- " + ChatColor.YELLOW + "Achievement" + ChatColor.RED + " ----------"); @@ -120,30 +120,30 @@ public class FlowerPots { P.sendMessage("" + ChatColor.GOLD + ChatColor.UNDERLINE + rs.getString("url")); P.sendMessage(""); P.sendMessage(ChatColor.RED + "---------- " + ChatColor.YELLOW + "Achievement" + ChatColor.RED + " ----------"); - } catch (SQLException ex) { - System.out.println("Error playerFoundPot(FlowerPot)"); - } - } else if (getPotWaitTime(pot) != -1 && foundCache.containsKey(P) && foundCache.get(P).containsKey(pot) && foundTimestamp.containsKey(P) && foundTimestamp.get(P).containsKey(pot)) { - int current = (int) (System.currentTimeMillis() / 1000); - int found = foundTimestamp.get(P).get(pot); - int waitTime = getPotWaitTime(pot); - int toWait = (found + waitTime) - current; - if (toWait <= 0) { - return; - } - String text = ChatColor.RED + Core.getl("ach_wait_1", P); - if (toWait < 60) { - text += " " + ChatColor.GREEN + toWait + " " + ChatColor.RED + Core.getl("ach_wait_seconds", P); - } else if (toWait < 60 * 60) { - text += " " + ChatColor.GREEN + Math.round(toWait / 60) + " " + ChatColor.RED + Core.getl("ach_wait_minutes", P); - } else if (toWait < 60 * 60 * 24) { - text += " " + ChatColor.GREEN + Math.round(toWait / 60 / 60) + " " + ChatColor.RED + Core.getl("ach_wait_hours", P); - } else { - text += " " + ChatColor.GREEN + Math.round(toWait / 60 / 60 / 24) + " " + ChatColor.RED + Core.getl("ach_wait_days", P); - } - text += " " + Core.getl("ach_wait_2", P); + } else if (getPotWaitTime(pot) != -1 && foundCache.containsKey(P) && foundCache.get(P).containsKey(pot) && foundTimestamp.containsKey(P) && foundTimestamp.get(P).containsKey(pot)) { + int current = (int) (System.currentTimeMillis() / 1000); + int found = foundTimestamp.get(P).get(pot); + int waitTime = getPotWaitTime(pot); + int toWait = (found + waitTime) - current; + if (toWait <= 0) { + return; + } + String text = ChatColor.RED + Core.getl("ach_wait_1", P); + if (toWait < 60) { + text += " " + ChatColor.GREEN + toWait + " " + ChatColor.RED + Core.getl("ach_wait_seconds", P); + } else if (toWait < 60 * 60) { + text += " " + ChatColor.GREEN + Math.round(toWait / 60) + " " + ChatColor.RED + Core.getl("ach_wait_minutes", P); + } else if (toWait < 60 * 60 * 24) { + text += " " + ChatColor.GREEN + Math.round(toWait / 60 / 60) + " " + ChatColor.RED + Core.getl("ach_wait_hours", P); + } else { + text += " " + ChatColor.GREEN + Math.round(toWait / 60 / 60 / 24) + " " + ChatColor.RED + Core.getl("ach_wait_days", P); + } + text += " " + Core.getl("ach_wait_2", P); - P.sendMessage(text); + P.sendMessage(text); + } + } catch (Throwable e) { + Errors.reportException(e); } } } diff --git a/src/de/anura/core/LanguageSupport.java b/src/de/anura/core/LanguageSupport.java index b022cd8..89204cb 100644 --- a/src/de/anura/core/LanguageSupport.java +++ b/src/de/anura/core/LanguageSupport.java @@ -1,7 +1,7 @@ package de.anura.core; +import de.anura.core.API.Errors; import java.sql.ResultSet; -import java.sql.SQLException; import java.util.HashMap; import org.bukkit.ChatColor; @@ -13,8 +13,8 @@ public class LanguageSupport { public LanguageSupport(AnuraCore plugin) { this.plugin = plugin; - ResultSet al = AnuraCore.sql.querySelect("SELECT name, short_name FROM coreAvailableLanguages"); try { + ResultSet al = AnuraCore.sql.querySelect("SELECT name, short_name FROM coreAvailableLanguages"); if (!al.next()) { return; } @@ -31,8 +31,8 @@ public class LanguageSupport { languageValues.get(lang).put(lv.getString("id"), lv.getString(lang)); } } - } catch (SQLException ex) { - System.out.println("Language data could not be loaded: " + ex.getLocalizedMessage()); + } catch (Throwable e) { + Errors.reportException(e); } } diff --git a/src/de/anura/core/Permissions.java b/src/de/anura/core/Permissions.java index c8749b1..4bf5ad4 100644 --- a/src/de/anura/core/Permissions.java +++ b/src/de/anura/core/Permissions.java @@ -1,7 +1,7 @@ package de.anura.core; +import de.anura.core.API.Errors; import java.sql.ResultSet; -import java.sql.SQLException; import java.util.ArrayList; import java.util.HashMap; @@ -81,43 +81,47 @@ public final class Permissions implements Listener { } public void updatePlayer(Player P) { - PermissionAttachment pa = this.permAttachments.get(P); - for (String p : pa.getPermissions().keySet()) { - pa.unsetPermission(p); + try { + PermissionAttachment pa = this.permAttachments.get(P); + for (String p : pa.getPermissions().keySet()) { + pa.unsetPermission(p); + } + if (!this.playerGroups.containsKey(P.getUniqueId())) { + this.playerGroups.put(P.getUniqueId(), new ArrayList()); + } + ArrayList groups = this.playerGroups.get(P.getUniqueId()); + ArrayList assignedGroups = new ArrayList<>(); + String prefixes = ""; + String suffixes = ""; + String listColor = ""; + for (Integer g : groups) { + if (assignedGroups.contains(g)) { + continue; + } + assignedGroups.add(g); + for (String perm : this.groupPerms.get(g)) { + pa.setPermission(perm, true); + } + ArrayList perms = this.getParentPerms(g, assignedGroups); + for (String perm : perms) { + pa.setPermission(perm, true); + } + if (this.groupPrefix.containsKey(g)) { + prefixes += this.groupPrefix.get(g); + } + if (this.groupSuffix.containsKey(g)) { + suffixes += this.groupSuffix.get(g); + } + if (this.groupListColor.containsKey(g)) { + listColor = this.groupListColor.get(g); + } + } + String name = prefixes + P.getName() + suffixes; + P.setDisplayName(name); + P.setPlayerListName(listColor + P.getName()); + } catch (Throwable e) { + Errors.reportException(e); } - if (!this.playerGroups.containsKey(P.getUniqueId())) { - this.playerGroups.put(P.getUniqueId(), new ArrayList()); - } - ArrayList groups = this.playerGroups.get(P.getUniqueId()); - ArrayList assignedGroups = new ArrayList<>(); - String prefixes = ""; - String suffixes = ""; - String listColor = ""; - for (Integer g : groups) { - if (assignedGroups.contains(g)) { - continue; - } - assignedGroups.add(g); - for (String perm : this.groupPerms.get(g)) { - pa.setPermission(perm, true); - } - ArrayList perms = this.getParentPerms(g, assignedGroups); - for (String perm : perms) { - pa.setPermission(perm, true); - } - if (this.groupPrefix.containsKey(g)) { - prefixes += this.groupPrefix.get(g); - } - if (this.groupSuffix.containsKey(g)) { - suffixes += this.groupSuffix.get(g); - } - if (this.groupListColor.containsKey(g)) { - listColor = this.groupListColor.get(g); - } - } - String name = prefixes + P.getName() + suffixes; - P.setDisplayName(name); - P.setPlayerListName(listColor + P.getName()); } private ArrayList getParentPerms(Integer group, ArrayList assigned) { @@ -138,18 +142,18 @@ public final class Permissions implements Listener { } public String reload() { - 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"); - this.groupNames.clear(); - this.groupPerms.clear(); - this.playerGroups.clear(); - this.groupParents.clear(); - this.groupPrefix.clear(); - this.groupSuffix.clear(); - HashMap groupIds = new HashMap<>(); - this.groupAutoIncrement = 0; 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"); + this.groupNames.clear(); + this.groupPerms.clear(); + this.playerGroups.clear(); + this.groupParents.clear(); + this.groupPrefix.clear(); + this.groupSuffix.clear(); + HashMap groupIds = new HashMap<>(); + this.groupAutoIncrement = 0; groupsRs.last(); if (groupsRs.getRow() != 0) { groupsRs.beforeFirst(); @@ -198,8 +202,8 @@ public final class Permissions implements Listener { } } - } catch (SQLException ex) { - System.err.println("Was not able to load permissions. Sorry. (" + ex.getLocalizedMessage() + ")"); + } catch (Throwable e) { + Errors.reportException(e); } return ChatColor.GREEN + "Permissions reloaded!"; } diff --git a/src/de/anura/core/RealTime.java b/src/de/anura/core/RealTime.java index f98cb28..09fe37c 100644 --- a/src/de/anura/core/RealTime.java +++ b/src/de/anura/core/RealTime.java @@ -1,6 +1,7 @@ package de.anura.core; import de.anura.core.API.Core; +import de.anura.core.API.Errors; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; @@ -10,19 +11,23 @@ import org.bukkit.World; public class RealTime { public static void setup() { - if (Core.getMainClass().getConfig().getBoolean("realtime-day")) { - for (World world : Bukkit.getWorlds()) { - 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); + try { + if (Core.getMainClass().getConfig().getBoolean("realtime-day")) { + for (World world : Bukkit.getWorlds()) { + world.setGameRuleValue("doDaylightCycle", "false"); + world.setTime(0); } - }, 0, (20 * 60 * 10)); + Bukkit.getScheduler().scheduleSyncRepeatingTask(Core.getMainClass(), new Runnable() { + @Override + public void run() { + Integer[] time = getSystemTime(); + int TTime = convertTime(time[0], time[1]); + setWorldTime(TTime); + } + }, 0, (20 * 60 * 10)); + } + } catch (Throwable e) { + Errors.reportException(e); } } diff --git a/src/de/anura/core/Setup.java b/src/de/anura/core/Setup.java index aa13bfb..accab6b 100644 --- a/src/de/anura/core/Setup.java +++ b/src/de/anura/core/Setup.java @@ -1,6 +1,7 @@ package de.anura.core; import de.anura.core.API.Core; +import de.anura.core.API.Errors; import de.anura.core.API.Inventories; import de.anura.core.API.Level; import de.anura.core.API.Tools; @@ -31,7 +32,6 @@ import de.anura.core.events.PlayerTeleport; import de.anura.core.events.SignChange; import de.anura.core.events.WeatherChange; import java.sql.ResultSet; -import java.sql.SQLException; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.Location; @@ -53,7 +53,7 @@ public class Setup { Core.getMainClass().getConfig().addDefault("no-hunger", false); Core.getMainClass().getConfig().addDefault("no-rain", false); Core.getMainClass().getConfig().addDefault("enable-leaves-decay", true); - Core.getMainClass().getConfig().addDefault("server-name", "lobby"); + Core.getMainClass().getConfig().addDefault("server-name", "none"); Core.getMainClass().getConfig().addDefault("allow-stairs-sit", false); Core.getMainClass().getConfig().addDefault("disable-mushroom-spread", false); Core.getMainClass().getConfig().addDefault("on-join-to-spawn", false); @@ -88,17 +88,17 @@ public class Setup { } public static void setupClasses() { - Core.getMainClass().lang = new LanguageSupport(Core.getMainClass()); - 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(); - RealTime.setup(); - ResultSet rs = sql.querySelect("SELECT id, X, Y, Z, world, type, waitTime FROM corePots"); try { + Core.getMainClass().lang = new LanguageSupport(Core.getMainClass()); + 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(); + RealTime.setup(); + ResultSet rs = sql.querySelect("SELECT id, X, Y, Z, world, type, waitTime FROM corePots"); while (rs.next()) { World w = Bukkit.getWorld(rs.getString("world")); if (w == null) { @@ -111,39 +111,39 @@ public class Setup { } l.getBlock().setType(Material.BROWN_MUSHROOM); } - } catch (SQLException ex) { - System.err.println("Error whilst trying to setup flower pots"); + Core.getMainClass().features = new Features(); + Core.getMainClass().features.updateFeaturesAll(); + } catch (Throwable e) { + Errors.reportException(e); } - Core.getMainClass().features = new Features(); - Core.getMainClass().features.updateFeaturesAll(); } public static void setupTasks() { - Bukkit.getScheduler().scheduleSyncRepeatingTask(Core.getMainClass(), new Runnable() { + 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); + @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); } - Core.getMainClass().golfPower.remove(P); - Core.getMainClass().releaseGolf.remove(P); - } else { - Core.getMainClass().releaseGolf.put(P, true); } } - } - }, 5, 5); - ResultSet rs = sql.querySelect("SELECT world, X, Y, Z FROM coreStairs WHERE server = '" + Core.getMainClass().getConfig().getString("server-name") + "'"); - try { + }, 5, 5); + ResultSet rs = sql.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")); if (w == null) { @@ -154,30 +154,30 @@ public class Setup { Core.getMainClass().sittableBlocks.add(l.getBlock()); } } - } catch (SQLException ex) { - System.err.println("Error whilst trying to setup stairs"); - } + + Bukkit.getScheduler().scheduleSyncRepeatingTask(Core.getMainClass(), new Runnable() { - 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); + @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); + } } - } - }, 600, 600); - Bukkit.getScheduler().scheduleSyncRepeatingTask(Core.getMainClass(), new Runnable() { - @Override - public void run() { - AnuraCore.getInstance().signs.updateServerSigns(); - } - }, 20 * 5, 20 * 5); + }, 600, 600); + Bukkit.getScheduler().scheduleSyncRepeatingTask(Core.getMainClass(), new Runnable() { + @Override + public void run() { + AnuraCore.getInstance().signs.updateServerSigns(); + } + }, 20 * 5, 20 * 5); + } catch (Throwable e) { + Errors.reportException(e); + } } public static void setupCommands() { @@ -218,69 +218,73 @@ public class Setup { } private static void setupInventories() { - Inventories.registerInventory("GAMEMODES", "select_gamemode_inv", ChatColor.DARK_BLUE); - Inventories.putIntoInventory("GAMEMODES", 0, Inventories.buildItems(Material.RED_ROSE, "inv_lobby_tps", ChatColor.DARK_GREEN)); - Inventories.putIntoInventory("GAMEMODES", 2, Inventories.buildItems(Material.CARROT_STICK, "inv_lobby_minigames", ChatColor.BLUE)); - Inventories.putIntoInventory("GAMEMODES", 4, Inventories.buildItems(Material.IRON_PICKAXE, "inv_lobby_freebuild", ChatColor.GOLD)); + try { + Inventories.registerInventory("GAMEMODES", "select_gamemode_inv", ChatColor.DARK_BLUE); + Inventories.putIntoInventory("GAMEMODES", 0, Inventories.buildItems(Material.RED_ROSE, "inv_lobby_tps", ChatColor.DARK_GREEN)); + Inventories.putIntoInventory("GAMEMODES", 2, Inventories.buildItems(Material.CARROT_STICK, "inv_lobby_minigames", ChatColor.BLUE)); + Inventories.putIntoInventory("GAMEMODES", 4, Inventories.buildItems(Material.IRON_PICKAXE, "inv_lobby_freebuild", ChatColor.GOLD)); - Inventories.registerAction("GAMEMODES", 0, Inventories.Action.OPEN_INV, "LOBBY"); - Inventories.registerAction("GAMEMODES", 2, Inventories.Action.OPEN_INV, "MINIGAMES"); - Inventories.registerAction("GAMEMODES", 4, Inventories.Action.SERVER, "freebuild"); + Inventories.registerAction("GAMEMODES", 0, Inventories.Action.OPEN_INV, "LOBBY"); + Inventories.registerAction("GAMEMODES", 2, Inventories.Action.OPEN_INV, "MINIGAMES"); + Inventories.registerAction("GAMEMODES", 4, Inventories.Action.SERVER, "freebuild"); - Inventories.registerInventory("MINIGAMES", "minigames_inv", ChatColor.DARK_BLUE); - Inventories.putIntoInventory("MINIGAMES", 0, Inventories.buildItems(Material.BOW, "inv_lobby_smash", ChatColor.GREEN, ChatColor.BLUE, "smash_description_1", "smash_description_2", "smash_description_3", "smash_description_4", "smash_description_5", "smash_description_6")); - Inventories.putIntoInventory("MINIGAMES", 2, Inventories.buildItems(Material.WHEAT, "inv_lobby_farmfight", ChatColor.YELLOW)); - Inventories.putIntoInventory("MINIGAMES", 4, Inventories.buildItems(Material.FIREWORK, "inv_lobby_rocketmatch", ChatColor.DARK_AQUA)); - Inventories.putIntoInventory("MINIGAMES", 8, Inventories.buildItems(Material.ENDER_PEARL, "inv_lobby_back", ChatColor.YELLOW)); + Inventories.registerInventory("MINIGAMES", "minigames_inv", ChatColor.DARK_BLUE); + Inventories.putIntoInventory("MINIGAMES", 0, Inventories.buildItems(Material.BOW, "inv_lobby_smash", ChatColor.GREEN, ChatColor.BLUE, "smash_description_1", "smash_description_2", "smash_description_3", "smash_description_4", "smash_description_5", "smash_description_6")); + Inventories.putIntoInventory("MINIGAMES", 2, Inventories.buildItems(Material.WHEAT, "inv_lobby_farmfight", ChatColor.YELLOW)); + Inventories.putIntoInventory("MINIGAMES", 4, Inventories.buildItems(Material.FIREWORK, "inv_lobby_rocketmatch", ChatColor.DARK_AQUA)); + Inventories.putIntoInventory("MINIGAMES", 8, Inventories.buildItems(Material.ENDER_PEARL, "inv_lobby_back", ChatColor.YELLOW)); - Inventories.registerAction("MINIGAMES", 0, Inventories.Action.SERVER, "smash"); - Inventories.registerAction("MINIGAMES", 2, Inventories.Action.SERVER, "farmfight"); - Inventories.registerAction("MINIGAMES", 4, Inventories.Action.SERVER, "rocketmatch"); - Inventories.registerAction("MINIGAMES", 8, Inventories.Action.OPEN_INV, "GAMEMODES"); + Inventories.registerAction("MINIGAMES", 0, Inventories.Action.SERVER, "smash"); + Inventories.registerAction("MINIGAMES", 2, Inventories.Action.SERVER, "farmfight"); + Inventories.registerAction("MINIGAMES", 4, Inventories.Action.SERVER, "rocketmatch"); + Inventories.registerAction("MINIGAMES", 8, Inventories.Action.OPEN_INV, "GAMEMODES"); - Inventories.registerInventory("LOBBY", "lobby_inv", ChatColor.DARK_BLUE); - Inventories.putIntoInventory("LOBBY", 0, Inventories.buildItems(Material.SLIME_BALL, "inv_lobby_jump", ChatColor.DARK_GREEN)); - Inventories.putIntoInventory("LOBBY", 1, Inventories.buildItems(Material.WATER_BUCKET, "inv_lobby_swim", ChatColor.DARK_AQUA)); - Inventories.putIntoInventory("LOBBY", 3, Inventories.buildItems(Material.EXP_BOTTLE, "inv_lobby_xpbattle", ChatColor.GREEN)); - Inventories.putIntoInventory("LOBBY", 4, Inventories.buildItems(Material.POTION, "inv_lobby_pool", ChatColor.BLUE)); - Inventories.putIntoInventory("LOBBY", 6, Inventories.buildItems(Material.WOOD_DOOR, "tp_to_spawn", ChatColor.GOLD)); - Inventories.putIntoInventory("LOBBY", 8, Inventories.buildItems(Material.ENDER_PEARL, "inv_lobby_back", ChatColor.YELLOW)); + Inventories.registerInventory("LOBBY", "lobby_inv", ChatColor.DARK_BLUE); + Inventories.putIntoInventory("LOBBY", 0, Inventories.buildItems(Material.SLIME_BALL, "inv_lobby_jump", ChatColor.DARK_GREEN)); + Inventories.putIntoInventory("LOBBY", 1, Inventories.buildItems(Material.WATER_BUCKET, "inv_lobby_swim", ChatColor.DARK_AQUA)); + Inventories.putIntoInventory("LOBBY", 3, Inventories.buildItems(Material.EXP_BOTTLE, "inv_lobby_xpbattle", ChatColor.GREEN)); + Inventories.putIntoInventory("LOBBY", 4, Inventories.buildItems(Material.POTION, "inv_lobby_pool", ChatColor.BLUE)); + Inventories.putIntoInventory("LOBBY", 6, Inventories.buildItems(Material.WOOD_DOOR, "tp_to_spawn", ChatColor.GOLD)); + Inventories.putIntoInventory("LOBBY", 8, Inventories.buildItems(Material.ENDER_PEARL, "inv_lobby_back", ChatColor.YELLOW)); - Inventories.registerAction("LOBBY", 0, Inventories.Action.COMMAND, "jumpinv"); - Inventories.registerAction("LOBBY", 1, Inventories.Action.TELEPORT, new Location(Bukkit.getWorld("lobby"), -288, 32, -1714)); - Inventories.registerAction("LOBBY", 3, Inventories.Action.COMMAND, "toggleminigame xpbattle"); - Inventories.registerAction("LOBBY", 1, Inventories.Action.COMMAND, "toggleminigame pool"); - Inventories.registerAction("LOBBY", 6, Inventories.Action.COMMAND, "spawn"); - Inventories.registerAction("LOBBY", 8, Inventories.Action.OPEN_INV, "GAMEMODES"); + Inventories.registerAction("LOBBY", 0, Inventories.Action.COMMAND, "jumpinv"); + Inventories.registerAction("LOBBY", 1, Inventories.Action.TELEPORT, new Location(Bukkit.getWorld("lobby"), -288, 32, -1714)); + Inventories.registerAction("LOBBY", 3, Inventories.Action.COMMAND, "toggleminigame xpbattle"); + Inventories.registerAction("LOBBY", 1, Inventories.Action.COMMAND, "toggleminigame pool"); + Inventories.registerAction("LOBBY", 6, Inventories.Action.COMMAND, "spawn"); + Inventories.registerAction("LOBBY", 8, Inventories.Action.OPEN_INV, "GAMEMODES"); - Inventories.registerInventory("FEATURES", "features_inv", ChatColor.DARK_BLUE); - Inventories.putIntoInventory("FEATURES", 2, Inventories.buildItems(Material.LEATHER_BOOTS, "inv_lobby_double_jump", ChatColor.DARK_AQUA)); - Inventories.putIntoInventory("FEATURES", 4, Inventories.buildItems(Material.BOAT, "inv_lobby_boat", ChatColor.DARK_AQUA)); - Inventories.registerAction("FEATURES", 2, Inventories.Action.COMMAND, "toggledbljump"); - Inventories.registerAction("FEATURES", 4, Inventories.Action.COMMAND, "toggleboat"); + Inventories.registerInventory("FEATURES", "features_inv", ChatColor.DARK_BLUE); + Inventories.putIntoInventory("FEATURES", 2, Inventories.buildItems(Material.LEATHER_BOOTS, "inv_lobby_double_jump", ChatColor.DARK_AQUA)); + Inventories.putIntoInventory("FEATURES", 4, Inventories.buildItems(Material.BOAT, "inv_lobby_boat", ChatColor.DARK_AQUA)); + Inventories.registerAction("FEATURES", 2, Inventories.Action.COMMAND, "toggledbljump"); + Inventories.registerAction("FEATURES", 4, Inventories.Action.COMMAND, "toggleboat"); - Inventories.registerInventory("LANGUAGE", "Select language", ChatColor.DARK_BLUE); - int i = 0; - for (String langu : Core.getMainClass().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++; + Inventories.registerInventory("LANGUAGE", "Select language", ChatColor.DARK_BLUE); + int i = 0; + for (String langu : Core.getMainClass().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++; + } + + Inventories.buildInvItem("COMPASS", Material.COMPASS, "select_game", ChatColor.DARK_AQUA); + Inventories.buildInvItem("SIGN", Material.SIGN, "Change language", ChatColor.DARK_GREEN); + Inventories.buildInvItem("CHARGE", Material.FIREBALL, "features_item", ChatColor.BLUE); + Inventories.buildInvItem("DOOR", Material.WOOD_DOOR, "tp_to_spawn", ChatColor.YELLOW); + Inventories.buildInvItem("EYE", Material.EYE_OF_ENDER, "inv_to_lobby", ChatColor.YELLOW); + if (Core.getMainClass().getConfig().getString("server-name").equals("lobby")) { + Inventories.setItemInPlayerInv("COMPASS", 0); + Inventories.setItemInPlayerInv("SIGN", 1); + Inventories.setItemInPlayerInv("DOOR", 8); + } + Inventories.registerItemAction("COMPASS", Inventories.Action.OPEN_INV, "GAMEMODES"); + Inventories.registerItemAction("SIGN", Inventories.Action.OPEN_INV, "LANGUAGE"); + Inventories.registerItemAction("CHARGE", Inventories.Action.OPEN_INV, "FEATURES"); + Inventories.registerItemAction("DOOR", Inventories.Action.COMMAND, "spawn"); + Inventories.registerItemAction("EYE", Inventories.Action.SERVER, "lobby"); + } catch (Throwable e) { + Errors.reportException(e); } - - Inventories.buildInvItem("COMPASS", Material.COMPASS, "select_game", ChatColor.DARK_AQUA); - Inventories.buildInvItem("SIGN", Material.SIGN, "Change language", ChatColor.DARK_GREEN); - Inventories.buildInvItem("CHARGE", Material.FIREBALL, "features_item", ChatColor.BLUE); - Inventories.buildInvItem("DOOR", Material.WOOD_DOOR, "tp_to_spawn", ChatColor.YELLOW); - Inventories.buildInvItem("EYE", Material.EYE_OF_ENDER, "inv_to_lobby", ChatColor.YELLOW); - if (Core.getMainClass().getConfig().getString("server-name").equals("lobby")) { - Inventories.setItemInPlayerInv("COMPASS", 0); - Inventories.setItemInPlayerInv("SIGN", 1); - Inventories.setItemInPlayerInv("DOOR", 8); - } - Inventories.registerItemAction("COMPASS", Inventories.Action.OPEN_INV, "GAMEMODES"); - Inventories.registerItemAction("SIGN", Inventories.Action.OPEN_INV, "LANGUAGE"); - Inventories.registerItemAction("CHARGE", Inventories.Action.OPEN_INV, "FEATURES"); - Inventories.registerItemAction("DOOR", Inventories.Action.COMMAND, "spawn"); - Inventories.registerItemAction("EYE", Inventories.Action.SERVER, "lobby"); } } diff --git a/src/de/anura/core/Signs.java b/src/de/anura/core/Signs.java index c181357..79c8c0d 100644 --- a/src/de/anura/core/Signs.java +++ b/src/de/anura/core/Signs.java @@ -1,6 +1,7 @@ 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; @@ -21,11 +22,11 @@ import org.bukkit.plugin.messaging.PluginMessageListener; public class Signs implements PluginMessageListener { public void updateServerSigns() { - if (Bukkit.getOnlinePlayers().length == 0) { - return; - } - ResultSet rs = sql.querySelect("SELECT DISTINCT value FROM coreWarpSigns WHERE type = 'server' AND server = '" + Core.getMainClass().getConfig().getString("server-name") + "'"); try { + if (Bukkit.getOnlinePlayers().length == 0) { + return; + } + ResultSet rs = sql.querySelect("SELECT DISTINCT value FROM coreWarpSigns WHERE type = 'server' AND server = '" + Core.getMainClass().getConfig().getString("server-name") + "'"); rs.last(); if (rs.getRow() == 0) { return; @@ -92,21 +93,19 @@ public class Signs implements PluginMessageListener { } } } - } catch (SQLException | IOException ex) { - System.err.println("Exception in updateServerSigns()(Core): " + ex.getLocalizedMessage()); + } catch (Throwable e) { + Errors.reportException(e); } - } @Override public void onPluginMessageReceived(String channel, Player player, byte[] message) { - if (!channel.equals("BungeeCord")) { - return; - } - - DataInputStream in = new DataInputStream(new ByteArrayInputStream(message)); - try { + if (!channel.equals("BungeeCord")) { + return; + } + + DataInputStream in = new DataInputStream(new ByteArrayInputStream(message)); String subchannel = in.readUTF(); if (subchannel.equals("PlayerCount")) { String server = in.readUTF(); @@ -165,8 +164,8 @@ public class Signs implements PluginMessageListener { Core.getMainClass().perms.reload(); Core.getMainClass().perms.updateAllPlayers(); } - } catch (IOException | SQLException ex) { - System.err.println("Exception in updateServerSigns()(Core): " + ex.getLocalizedMessage()); + } 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 a0e02bd..f02f700 100644 --- a/src/de/anura/core/commands/AdminCommands.java +++ b/src/de/anura/core/commands/AdminCommands.java @@ -1,6 +1,7 @@ package de.anura.core.commands; import de.anura.core.API.Core; +import de.anura.core.API.Errors; import de.anura.core.AnuraCore; import de.anura.core.LanguageSupport; import java.io.File; @@ -17,66 +18,70 @@ public class AdminCommands implements CommandExecutor { @Override public boolean onCommand(CommandSender sender, Command cmd, String alias, String[] args) { - Player P = null; - if (sender instanceof Player) { - P = (Player) sender; - } - if (cmd.getName().equalsIgnoreCase("clearArrows")) { - if (P == null) { - Core.statusMsg(sender, "only_player_cmd", false); - return true; + try { + Player P = null; + if (sender instanceof Player) { + P = (Player) sender; } - if (!sender.hasPermission("core.commands.cleararrows")) { - Core.statusMsg(sender, "no_perms", false); - return true; - } - for (Player pl : Core.getMainClass().sittingPlayer.keySet()) { - Core.endSitting(pl); - } - for (Arrow a : P.getWorld().getEntitiesByClass(Arrow.class)) { - a.remove(); - } - Core.getTools().sendStatusMsg(sender, "Done!", true); - return true; - } else if (cmd.getName().equalsIgnoreCase("core")) { - if (!sender.hasPermission("core.commands.core")) { - Core.statusMsg(sender, "no_perms", false); - return true; - } - if (args.length != 1) { - Core.statusMsg(sender, "wrong_args_count", false); - return false; - } - 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(Core.getMainClass()); - Core.statusMsg(sender, "config_rl_done", true); - } catch (IOException ex) { - Core.statusMsg(sender, "config_rl_error_io", false); - } catch (InvalidConfigurationException ex) { - Core.statusMsg(sender, "config_rl_invalid", false); + if (cmd.getName().equalsIgnoreCase("clearArrows")) { + if (P == null) { + Core.statusMsg(sender, "only_player_cmd", false); + return true; } - return true; - } else if (args[0].equalsIgnoreCase("save") && sender.isOp()) { - try { - Core.getMainClass().getConfig().save(new File("plugins/Core/", "config.yml")); - Core.statusMsg(sender, "config_save", true); - } catch (IOException ex) { - Core.statusMsg(sender, "config_save_io_err", false); + if (!sender.hasPermission("core.commands.cleararrows")) { + Core.statusMsg(sender, "no_perms", false); + return true; } - } else if (args[0].equalsIgnoreCase("debugclosemysql") && sender.isOp()) { - AnuraCore.sql.closeConnection(); - Core.statusMsg(sender, "debug_mysql_closed", true); - return true; - } - } else if (cmd.getName().equalsIgnoreCase("setspawn")) { - if (P != null && P.hasPermission("core.commands.setspawn")) { - Location l = P.getLocation(); - l.getWorld().setSpawnLocation((int) l.getX(), (int) l.getY(), (int) l.getZ()); - Core.statusMsg(P, "spawn_set", true); + for (Player pl : Core.getMainClass().sittingPlayer.keySet()) { + Core.endSitting(pl); + } + for (Arrow a : P.getWorld().getEntitiesByClass(Arrow.class)) { + a.remove(); + } + Core.getTools().sendStatusMsg(sender, "Done!", true); return true; + } else if (cmd.getName().equalsIgnoreCase("core")) { + if (!sender.hasPermission("core.commands.core")) { + Core.statusMsg(sender, "no_perms", false); + return true; + } + if (args.length != 1) { + Core.statusMsg(sender, "wrong_args_count", false); + return false; + } + 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(Core.getMainClass()); + Core.statusMsg(sender, "config_rl_done", true); + } catch (IOException ex) { + Core.statusMsg(sender, "config_rl_error_io", false); + } catch (InvalidConfigurationException ex) { + Core.statusMsg(sender, "config_rl_invalid", false); + } + return true; + } else if (args[0].equalsIgnoreCase("save") && sender.isOp()) { + try { + Core.getMainClass().getConfig().save(new File("plugins/Core/", "config.yml")); + Core.statusMsg(sender, "config_save", true); + } catch (IOException ex) { + Core.statusMsg(sender, "config_save_io_err", false); + } + } else if (args[0].equalsIgnoreCase("debugclosemysql") && sender.isOp()) { + AnuraCore.sql.closeConnection(); + Core.statusMsg(sender, "debug_mysql_closed", true); + return true; + } + } else if (cmd.getName().equalsIgnoreCase("setspawn")) { + if (P != null && P.hasPermission("core.commands.setspawn")) { + Location l = P.getLocation(); + l.getWorld().setSpawnLocation((int) l.getX(), (int) l.getY(), (int) l.getZ()); + Core.statusMsg(P, "spawn_set", true); + return true; + } } + } catch(Throwable e) { + Errors.reportException(e); } return false; } diff --git a/src/de/anura/core/commands/OtherCommands.java b/src/de/anura/core/commands/OtherCommands.java index cc1beaa..1cd7b53 100644 --- a/src/de/anura/core/commands/OtherCommands.java +++ b/src/de/anura/core/commands/OtherCommands.java @@ -1,6 +1,7 @@ package de.anura.core.commands; import de.anura.core.API.Core; +import de.anura.core.API.Errors; import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; import org.bukkit.command.BlockCommandSender; @@ -14,45 +15,48 @@ public class OtherCommands implements CommandExecutor { @Override public boolean onCommand(CommandSender sender, Command cmd, String alias, String[] args) { - Player P = null; - if (sender instanceof Player) { - P = (Player) sender; - } - if (cmd.getName().equalsIgnoreCase("togglecommands")) { - if (!(sender instanceof BlockCommandSender) && !(sender instanceof ConsoleCommandSender)) { - Core.getTools().sendStatusMsg(sender, "Only command block cmd!", false); + try { + Player P = null; + if (sender instanceof Player) { + P = (Player) sender; + } + if (cmd.getName().equalsIgnoreCase("togglecommands")) { + if (!(sender instanceof BlockCommandSender) && !(sender instanceof ConsoleCommandSender)) { + Core.getTools().sendStatusMsg(sender, "Only command block cmd!", false); + return true; + } + if (args.length != 2) { + return false; + } + String action = args[1]; + if (!action.equals("disable") && !action.equals("enable")) { + return true; + } + OfflinePlayer op = Bukkit.getOfflinePlayer(args[0]); + if (!op.isOnline()) { + return true; + } + Boolean b = action.equals("disable"); + Core.getMainClass().disableCommandsAdventure.put(op.getPlayer(), b); return true; - } - if (args.length != 2) { - return false; - } - String action = args[1]; - if (!action.equals("disable") && !action.equals("enable")) { + } else if (cmd.getName().equalsIgnoreCase("none")) { + Core.statusMsg(sender, "cmd_not_found", false); return true; + } else if (cmd.getName().equalsIgnoreCase("addAimTWWin")) { + if (!(sender instanceof BlockCommandSender) && !(sender instanceof ConsoleCommandSender)) { + Core.getTools().sendStatusMsg(sender, "Only command block cmd!", false); + return true; + } + if (args.length != 1) return false; + 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); + return true; + } } - OfflinePlayer op = Bukkit.getOfflinePlayer(args[0]); - if (!op.isOnline()) { - return true; - } - Boolean b = action.equals("disable"); - Core.getMainClass().disableCommandsAdventure.put(op.getPlayer(), b); - return true; - } else if (cmd.getName().equalsIgnoreCase("none")) { - Core.statusMsg(sender, "cmd_not_found", false); - return true; - } else if (cmd.getName().equalsIgnoreCase("addAimTWWin")) { - if (!(sender instanceof BlockCommandSender) && !(sender instanceof ConsoleCommandSender)) { - Core.getTools().sendStatusMsg(sender, "Only command block cmd!", false); - return true; - } - if (args.length != 1) return false; - 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); - return true; - } - + } catch(Throwable e) { + Errors.reportException(e); } return false; } diff --git a/src/de/anura/core/commands/PlayerCommands.java b/src/de/anura/core/commands/PlayerCommands.java index 2b6a8c6..ba53db9 100644 --- a/src/de/anura/core/commands/PlayerCommands.java +++ b/src/de/anura/core/commands/PlayerCommands.java @@ -1,11 +1,11 @@ package de.anura.core.commands; import de.anura.core.API.Core; +import de.anura.core.API.Errors; import de.anura.core.API.Money; import static de.anura.core.AnuraCore.sql; import de.anura.core.Features; import java.sql.ResultSet; -import java.sql.SQLException; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.Location; @@ -22,172 +22,172 @@ public class PlayerCommands implements CommandExecutor { @Override public boolean onCommand(CommandSender sender, Command cmd, String cmdLabel, String[] args) { - Player P = null; - if (sender instanceof Player) { - P = (Player) sender; - } - if (cmd.getName().equalsIgnoreCase("toggledbljump")) { - if (P == null) { - Core.statusMsg(sender, "only_player_cmd", false); - return true; + try { + Player P = null; + if (sender instanceof Player) { + P = (Player) sender; } - if (P.getAllowFlight()) { - Core.getMainClass().getFeatures().disableFeature(P, Features.Feature.DOUBLE_JUMP); - } else { - Core.getMainClass().getFeatures().enableFeature(P, Features.Feature.DOUBLE_JUMP); - } - return true; - } else if (cmd.getName().equalsIgnoreCase("toggleboat")) { - if (P == null) { - Core.statusMsg(sender, "only_player_cmd", false); - return true; - } - if (Core.getMainClass().getFeatures().featureEnabled.get(P).get(Features.Feature.BOAT)) { - Core.getMainClass().getFeatures().disableFeature(P, Features.Feature.BOAT); - } else { - Core.getMainClass().getFeatures().enableFeature(P, Features.Feature.BOAT); - } - return true; - } else if (cmd.getName().equalsIgnoreCase("joinminigame")) { - if (P == null) { - Core.statusMsg(sender, "only_player_cmd", false); - return true; - } - if (args.length != 1) { - return false; - } - if (args[0].equalsIgnoreCase("xpbattle")) { - Objective o = Bukkit.getScoreboardManager().getMainScoreboard().getObjective("xpBattleJoin"); - if (o == null) { + if (cmd.getName().equalsIgnoreCase("toggledbljump")) { + if (P == null) { + Core.statusMsg(sender, "only_player_cmd", false); return true; } - o.getScore(P).setScore(1); - Core.statusMsg(sender, "joined_xpBattle", true); - return true; - } else if (args[0].equalsIgnoreCase("pool")) { - Objective o = Bukkit.getScoreboardManager().getMainScoreboard().getObjective("poolJoin"); - if (o == null) { - return true; - } - o.getScore(P).setScore(1); - Core.statusMsg(sender, "joined_pool", true); - return true; - } - } else if (cmd.getName().equalsIgnoreCase("leaveminigame")) { - if (P == null) { - Core.statusMsg(sender, "only_player_cmd", false); - return true; - } - if (args.length != 1) { - return false; - } - if (args[0].equalsIgnoreCase("xpbattle")) { - Objective o = Bukkit.getScoreboardManager().getMainScoreboard().getObjective("xpBattleJoin"); - if (o == null) { - return true; - } - o.getScore(P).setScore(0); - Core.statusMsg(sender, "left_xpBattle", true); - return true; - } else if (args[0].equalsIgnoreCase("pool")) { - Objective o = Bukkit.getScoreboardManager().getMainScoreboard().getObjective("poolJoin"); - if (o == null) { - return true; - } - o.getScore(P).setScore(0); - Core.statusMsg(sender, "left_pool", true); - return true; - } - } else if (cmd.getName().equalsIgnoreCase("toggleminigame")) { - if (P == null) { - Core.statusMsg(sender, "only_player_cmd", false); - return true; - } - if (args.length != 1) { - return false; - } - if (args[0].equalsIgnoreCase("xpbattle")) { - Objective o = Bukkit.getScoreboardManager().getMainScoreboard().getObjective("xpBattleJoin"); - if (o == null) { - return true; - } - if (o.getScore(P).getScore() == 0) { - Bukkit.dispatchCommand(sender, "joinminigame xpBattle"); - return true; + if (P.getAllowFlight()) { + Core.getMainClass().getFeatures().disableFeature(P, Features.Feature.DOUBLE_JUMP); } else { - Bukkit.dispatchCommand(sender, "leaveminigame xpBattle"); + Core.getMainClass().getFeatures().enableFeature(P, Features.Feature.DOUBLE_JUMP); + } + return true; + } else if (cmd.getName().equalsIgnoreCase("toggleboat")) { + if (P == null) { + Core.statusMsg(sender, "only_player_cmd", false); return true; } - } else if (args[0].equalsIgnoreCase("pool")) { - Objective o = Bukkit.getScoreboardManager().getMainScoreboard().getObjective("poolJoin"); - if (o == null) { - return true; - } - if (o.getScore(P).getScore() == 0) { - Bukkit.dispatchCommand(sender, "joinminigame pool"); - return true; + if (Core.getMainClass().getFeatures().featureEnabled.get(P).get(Features.Feature.BOAT)) { + Core.getMainClass().getFeatures().disableFeature(P, Features.Feature.BOAT); } else { - Bukkit.dispatchCommand(sender, "leaveminigame pool"); + Core.getMainClass().getFeatures().enableFeature(P, Features.Feature.BOAT); + } + return true; + } else if (cmd.getName().equalsIgnoreCase("joinminigame")) { + if (P == null) { + Core.statusMsg(sender, "only_player_cmd", false); return true; } - } - } else if (cmd.getName().equalsIgnoreCase("hilfe")) { - if (!cmdLabel.equals("hilfe") && !cmdLabel.equals("help") && !cmdLabel.equals("?")) { - cmdLabel = "hilfe"; - } - if (sender.hasPermission("core.commands.help")) { - sender.sendMessage(ChatColor.RED + "Achtung: " + ChatColor.YELLOW + "Die echte Hilfe gibts mit " + ChatColor.BLUE + "/?" + ChatColor.YELLOW + "!"); - } - if (args.length == 0) { - sender.sendMessage(ChatColor.YELLOW + "-----------" + ChatColor.AQUA + "Hilfe" + ChatColor.YELLOW + "-----------"); - sender.sendMessage(ChatColor.GREEN + "Hilfe zu den Befehlen gibt es mit " + ChatColor.BLUE + "/" + cmdLabel + " commands"); - sender.sendMessage(ChatColor.GOLD + "Informationen zu unseren GameModes erhälst du mit " + ChatColor.BLUE + "/" + cmdLabel + " gamemodes"); - } else if (args.length == 1) { - if (args[0].equalsIgnoreCase("commands")) { - sender.sendMessage(ChatColor.YELLOW + "-----------" + ChatColor.AQUA + "Befehle" + ChatColor.YELLOW + "-----------"); - sender.sendMessage(ChatColor.BLUE + "/lobby " + ChatColor.GREEN + "Bringt dich jederzeit zurück zur Lobby."); - sender.sendMessage(ChatColor.BLUE + "/spawn " + ChatColor.GOLD + "Teleportiert dich zum Spawn."); - sender.sendMessage(ChatColor.BLUE + "/money " + ChatColor.GREEN + "Zeigt dein Geld an."); - sender.sendMessage(ChatColor.RED + "Befehle für den Smash-Gamemode siehst du mit " + ChatColor.BLUE + "/" + cmdLabel + " commands smash"); - } else if (args[0].equalsIgnoreCase("gamemodes")) { - sender.sendMessage(ChatColor.YELLOW + "-----------" + ChatColor.AQUA + "Gamemodes" + ChatColor.YELLOW + "-----------"); - sender.sendMessage(ChatColor.GRAY + "----------" + ChatColor.GREEN + "Smash PvP" + ChatColor.GRAY + "-----------"); - sender.sendMessage(ChatColor.BLUE + "In Smash PvP geht es darum, mithilfe von verschiedenen Klassen deine " - + "Gegner ins Wasser, in die Lava oder aus der Welt zu schlagen. " - + "Du kannst verschiedenen Arenen beitreten. Es gibt keine Begrenzung, wie " - + "lange du spielen kannst. Jeder Kill gibt dir Münzen. Stirbst du, verlierst du " - + "eine Münze."); - sender.sendMessage(ChatColor.GOLD + "Mit " + ChatColor.RED + "/" + cmdLabel + " commands smash" + ChatColor.GOLD + " kannst du dir"); - sender.sendMessage(ChatColor.GOLD + "alle Befehle des Minigames anzeigen lassen."); + if (args.length != 1) { + return false; } - } else if (args.length == 2) { - if (args[0].equalsIgnoreCase("commands") && args[1].equalsIgnoreCase("smash")) { - sender.sendMessage(ChatColor.YELLOW + "-----------" + ChatColor.AQUA + "Smash Befehle" + ChatColor.YELLOW + "-----------"); - sender.sendMessage(ChatColor.BLUE + "/join " + ChatColor.GREEN + "Hiermit kannst du einem Smash Game beitreten."); - sender.sendMessage(ChatColor.BLUE + "/leave " + ChatColor.GREEN + "Lässt dich ein Spiel verlassen."); - sender.sendMessage(ChatColor.BLUE + "/class " + ChatColor.GREEN + "Damit kannst du während eines Spiels die Klasse wechseln."); - sender.sendMessage(ChatColor.BLUE + "/classes " + ChatColor.GREEN + "Teleportiert dich in einen Raum, in dem du Klassen kaufen kannst."); - sender.sendMessage(ChatColor.BLUE + "/bug " + ChatColor.GREEN + "Wenn du einen Bug gefunden hast, kannst du ihn so reporten."); + if (args[0].equalsIgnoreCase("xpbattle")) { + Objective o = Bukkit.getScoreboardManager().getMainScoreboard().getObjective("xpBattleJoin"); + if (o == null) { + return true; + } + o.getScore(P).setScore(1); + Core.statusMsg(sender, "joined_xpBattle", true); + return true; + } else if (args[0].equalsIgnoreCase("pool")) { + Objective o = Bukkit.getScoreboardManager().getMainScoreboard().getObjective("poolJoin"); + if (o == null) { + return true; + } + o.getScore(P).setScore(1); + Core.statusMsg(sender, "joined_pool", true); + return true; } - } - return true; - } else if (cmd.getName().equalsIgnoreCase("spawn")) { - if (args.length == 1) { - if (sender.hasPermission("core.commands.spawn-other") || sender instanceof BlockCommandSender) { - if (Bukkit.getOfflinePlayer(args[0]).isOnline()) { - P = Bukkit.getPlayer(args[0]); + } else if (cmd.getName().equalsIgnoreCase("leaveminigame")) { + if (P == null) { + Core.statusMsg(sender, "only_player_cmd", false); + return true; + } + if (args.length != 1) { + return false; + } + if (args[0].equalsIgnoreCase("xpbattle")) { + Objective o = Bukkit.getScoreboardManager().getMainScoreboard().getObjective("xpBattleJoin"); + if (o == null) { + return true; + } + o.getScore(P).setScore(0); + Core.statusMsg(sender, "left_xpBattle", true); + return true; + } else if (args[0].equalsIgnoreCase("pool")) { + Objective o = Bukkit.getScoreboardManager().getMainScoreboard().getObjective("poolJoin"); + if (o == null) { + return true; + } + o.getScore(P).setScore(0); + Core.statusMsg(sender, "left_pool", true); + return true; + } + } else if (cmd.getName().equalsIgnoreCase("toggleminigame")) { + if (P == null) { + Core.statusMsg(sender, "only_player_cmd", false); + return true; + } + if (args.length != 1) { + return false; + } + if (args[0].equalsIgnoreCase("xpbattle")) { + Objective o = Bukkit.getScoreboardManager().getMainScoreboard().getObjective("xpBattleJoin"); + if (o == null) { + return true; + } + if (o.getScore(P).getScore() == 0) { + Bukkit.dispatchCommand(sender, "joinminigame xpBattle"); + return true; + } else { + Bukkit.dispatchCommand(sender, "leaveminigame xpBattle"); + return true; + } + } else if (args[0].equalsIgnoreCase("pool")) { + Objective o = Bukkit.getScoreboardManager().getMainScoreboard().getObjective("poolJoin"); + if (o == null) { + return true; + } + if (o.getScore(P).getScore() == 0) { + Bukkit.dispatchCommand(sender, "joinminigame pool"); + return true; + } else { + Bukkit.dispatchCommand(sender, "leaveminigame pool"); + return true; + } + } + } else if (cmd.getName().equalsIgnoreCase("hilfe")) { + if (!cmdLabel.equals("hilfe") && !cmdLabel.equals("help") && !cmdLabel.equals("?")) { + cmdLabel = "hilfe"; + } + if (sender.hasPermission("core.commands.help")) { + sender.sendMessage(ChatColor.RED + "Achtung: " + ChatColor.YELLOW + "Die echte Hilfe gibts mit " + ChatColor.BLUE + "/?" + ChatColor.YELLOW + "!"); + } + if (args.length == 0) { + sender.sendMessage(ChatColor.YELLOW + "-----------" + ChatColor.AQUA + "Hilfe" + ChatColor.YELLOW + "-----------"); + sender.sendMessage(ChatColor.GREEN + "Hilfe zu den Befehlen gibt es mit " + ChatColor.BLUE + "/" + cmdLabel + " commands"); + sender.sendMessage(ChatColor.GOLD + "Informationen zu unseren GameModes erhälst du mit " + ChatColor.BLUE + "/" + cmdLabel + " gamemodes"); + } else if (args.length == 1) { + if (args[0].equalsIgnoreCase("commands")) { + sender.sendMessage(ChatColor.YELLOW + "-----------" + ChatColor.AQUA + "Befehle" + ChatColor.YELLOW + "-----------"); + sender.sendMessage(ChatColor.BLUE + "/lobby " + ChatColor.GREEN + "Bringt dich jederzeit zurück zur Lobby."); + sender.sendMessage(ChatColor.BLUE + "/spawn " + ChatColor.GOLD + "Teleportiert dich zum Spawn."); + sender.sendMessage(ChatColor.BLUE + "/money " + ChatColor.GREEN + "Zeigt dein Geld an."); + sender.sendMessage(ChatColor.RED + "Befehle für den Smash-Gamemode siehst du mit " + ChatColor.BLUE + "/" + cmdLabel + " commands smash"); + } else if (args[0].equalsIgnoreCase("gamemodes")) { + sender.sendMessage(ChatColor.YELLOW + "-----------" + ChatColor.AQUA + "Gamemodes" + ChatColor.YELLOW + "-----------"); + sender.sendMessage(ChatColor.GRAY + "----------" + ChatColor.GREEN + "Smash PvP" + ChatColor.GRAY + "-----------"); + sender.sendMessage(ChatColor.BLUE + "In Smash PvP geht es darum, mithilfe von verschiedenen Klassen deine " + + "Gegner ins Wasser, in die Lava oder aus der Welt zu schlagen. " + + "Du kannst verschiedenen Arenen beitreten. Es gibt keine Begrenzung, wie " + + "lange du spielen kannst. Jeder Kill gibt dir Münzen. Stirbst du, verlierst du " + + "eine Münze."); + sender.sendMessage(ChatColor.GOLD + "Mit " + ChatColor.RED + "/" + cmdLabel + " commands smash" + ChatColor.GOLD + " kannst du dir"); + sender.sendMessage(ChatColor.GOLD + "alle Befehle des Minigames anzeigen lassen."); + } + } else if (args.length == 2) { + if (args[0].equalsIgnoreCase("commands") && args[1].equalsIgnoreCase("smash")) { + sender.sendMessage(ChatColor.YELLOW + "-----------" + ChatColor.AQUA + "Smash Befehle" + ChatColor.YELLOW + "-----------"); + sender.sendMessage(ChatColor.BLUE + "/join " + ChatColor.GREEN + "Hiermit kannst du einem Smash Game beitreten."); + sender.sendMessage(ChatColor.BLUE + "/leave " + ChatColor.GREEN + "Lässt dich ein Spiel verlassen."); + sender.sendMessage(ChatColor.BLUE + "/class " + ChatColor.GREEN + "Damit kannst du während eines Spiels die Klasse wechseln."); + sender.sendMessage(ChatColor.BLUE + "/classes " + ChatColor.GREEN + "Teleportiert dich in einen Raum, in dem du Klassen kaufen kannst."); + sender.sendMessage(ChatColor.BLUE + "/bug " + ChatColor.GREEN + "Wenn du einen Bug gefunden hast, kannst du ihn so reporten."); } } - } - if (P == null) { - Core.statusMsg(sender, "only_player_cmd", false); return true; - } - P.teleport(P.getLocation().getWorld().getSpawnLocation()); - Core.statusMsg(P, "spawn_tp_done", true); - return true; - } else if (cmd.getName().equalsIgnoreCase("warp")) { - try { + } else if (cmd.getName().equalsIgnoreCase("spawn")) { + if (args.length == 1) { + if (sender.hasPermission("core.commands.spawn-other") || sender instanceof BlockCommandSender) { + if (Bukkit.getOfflinePlayer(args[0]).isOnline()) { + P = Bukkit.getPlayer(args[0]); + } + } + } + if (P == null) { + Core.statusMsg(sender, "only_player_cmd", false); + return true; + } + P.teleport(P.getLocation().getWorld().getSpawnLocation()); + Core.statusMsg(P, "spawn_tp_done", true); + return true; + } else if (cmd.getName().equalsIgnoreCase("warp")) { if (args.length == 0 || args.length > 2) { Core.statusMsg(P, "wrong_args_count", false); return false; @@ -240,76 +240,76 @@ public class PlayerCommands implements CommandExecutor { P.teleport(loc); Core.statusMsg(P, "warp_tp_done", true); return true; - } catch (SQLException ex) { - System.out.println("Error: " + ex.getLocalizedMessage()); - } - } else if (cmd.getName().equalsIgnoreCase("money")) { - if (args.length == 0) { - if (P == null) { - Core.getTools().sendStatusMsg(sender, "only_player_cmd", false); - return true; - } - Integer money = Money.getMoney(P); - Core.getTools().sendStatusMsg(P, Core.getl("you_have", P) + " " + money + " " + Core.getl("coins", P), true); - return true; - } else if ((args[0].equalsIgnoreCase("pay")) && (args.length == 3)) { - Integer money = Integer.parseInt(args[2]); - boolean canPay; - Integer geld = 0; - if (sender.hasPermission("core.money.endless")) { - if (P != null) { - canPay = P.hasPermission("core.money.endless"); - } else { - canPay = true; - } - } else { + } else if (cmd.getName().equalsIgnoreCase("money")) { + if (args.length == 0) { if (P == null) { - Core.statusMsg(sender, "only_player_cmd", false); + Core.getTools().sendStatusMsg(sender, "only_player_cmd", false); return true; } - if (P.getName().equals(args[1])) { - Core.statusMsg(P, "money_pay_yourself", false); - return true; - } - if (!(money > 0)) { - Core.statusMsg(P, "number_must_positive", false); - return true; - } - int currentMoney = Money.getMoney(P); - if (currentMoney < money) { - Core.statusMsg(P, "not_enough_money", false); - canPay = false; - } else { - geld = currentMoney; - canPay = true; - } - } - if (canPay) { - OfflinePlayer oP = Bukkit.getOfflinePlayer(args[1]); - if (!oP.hasPlayedBefore() && !oP.isOnline()) { - Core.statusMsg(P, "never_seen_player", false); - return true; - } - int currentMoney2 = Money.getMoney(oP); - if (currentMoney2 != -1) { - Money.payMoney(oP, money); - if (P == null) { - } else if (!P.hasPermission("core.money.endless")) { - Money.payMoney(P, -money); - } - Core.getTools().sendStatusMsg(sender, Core.getl("money_payed_1", sender) + " " + args[1] + " " + Core.getl("money_payed_2", sender) + " " + args[2] + " " + Core.getl("money_payed_3", sender), true); - if (oP.isOnline()) { - Core.getTools().sendStatusMsg(oP.getPlayer(), Core.getl("money_got_1", oP.getPlayer()) + " " + args[2] + " " + Core.getl("money_got_2", oP.getPlayer()) + " " + sender.getName() + " " + Core.getl("money_got_3", oP.getPlayer()), true); - } - return true; - } else { - Core.statusMsg(sender, "never_seen_player", false); - return true; - } - } else { + Integer money = Money.getMoney(P); + Core.getTools().sendStatusMsg(P, Core.getl("you_have", P) + " " + money + " " + Core.getl("coins", P), true); return true; + } else if ((args[0].equalsIgnoreCase("pay")) && (args.length == 3)) { + Integer money = Integer.parseInt(args[2]); + boolean canPay; + Integer geld = 0; + if (sender.hasPermission("core.money.endless")) { + if (P != null) { + canPay = P.hasPermission("core.money.endless"); + } else { + canPay = true; + } + } else { + if (P == null) { + Core.statusMsg(sender, "only_player_cmd", false); + return true; + } + if (P.getName().equals(args[1])) { + Core.statusMsg(P, "money_pay_yourself", false); + return true; + } + if (!(money > 0)) { + Core.statusMsg(P, "number_must_positive", false); + return true; + } + int currentMoney = Money.getMoney(P); + if (currentMoney < money) { + Core.statusMsg(P, "not_enough_money", false); + canPay = false; + } else { + geld = currentMoney; + canPay = true; + } + } + if (canPay) { + OfflinePlayer oP = Bukkit.getOfflinePlayer(args[1]); + if (!oP.hasPlayedBefore() && !oP.isOnline()) { + Core.statusMsg(P, "never_seen_player", false); + return true; + } + int currentMoney2 = Money.getMoney(oP); + if (currentMoney2 != -1) { + Money.payMoney(oP, money); + if (P == null) { + } else if (!P.hasPermission("core.money.endless")) { + Money.payMoney(P, -money); + } + Core.getTools().sendStatusMsg(sender, Core.getl("money_payed_1", sender) + " " + args[1] + " " + Core.getl("money_payed_2", sender) + " " + args[2] + " " + Core.getl("money_payed_3", sender), true); + if (oP.isOnline()) { + Core.getTools().sendStatusMsg(oP.getPlayer(), Core.getl("money_got_1", oP.getPlayer()) + " " + args[2] + " " + Core.getl("money_got_2", oP.getPlayer()) + " " + sender.getName() + " " + Core.getl("money_got_3", oP.getPlayer()), true); + } + return true; + } else { + Core.statusMsg(sender, "never_seen_player", false); + return true; + } + } else { + return true; + } } } + } catch(Throwable e) { + Errors.reportException(e); } return false; } diff --git a/src/de/anura/core/commands/TeamCommands.java b/src/de/anura/core/commands/TeamCommands.java index 644aa35..5ee7847 100644 --- a/src/de/anura/core/commands/TeamCommands.java +++ b/src/de/anura/core/commands/TeamCommands.java @@ -1,6 +1,7 @@ package de.anura.core.commands; import de.anura.core.API.Core; +import de.anura.core.API.Errors; import de.anura.core.AnuraCore; import static de.anura.core.AnuraCore.sql; import de.anura.core.Features; @@ -12,7 +13,6 @@ import java.net.MalformedURLException; import java.net.URI; import java.net.URL; import java.sql.ResultSet; -import java.sql.SQLException; import javax.imageio.ImageIO; import org.bukkit.Bukkit; import org.bukkit.ChatColor; @@ -33,230 +33,225 @@ public class TeamCommands implements CommandExecutor { @Override public boolean onCommand(CommandSender sender, Command cmd, String alias, String[] args) { - Player P = null; - if (sender instanceof Player) { - P = (Player) sender; - } - if (cmd.getName().equalsIgnoreCase("setcmd")) { - if (P == null) { - Core.statusMsg(sender, "only_player_cmd", false); - return true; + try { + Player P = null; + if (sender instanceof Player) { + P = (Player) sender; } - if (!sender.hasPermission("core.commands.editcmd")) { - Core.statusMsg(sender, "no_perms", false); - return true; - } - if (args.length < 1) { - Core.statusMsg(sender, "wrong_args_count", false); - return false; - } - Block b = P.getTargetBlock(null, 100); - if (b.getType().equals(Material.COMMAND)) { - String command = ""; - for (String arg : args) { - if (!command.equals("")) { - command += " "; - } - command += arg; + if (cmd.getName().equalsIgnoreCase("setcmd")) { + if (P == null) { + Core.statusMsg(sender, "only_player_cmd", false); + return true; } - CommandBlock cb = (CommandBlock) b.getState(); - cb.setCommand(command); - cb.update(); - } - return true; - } else if (cmd.getName().equalsIgnoreCase("addcmd")) { - if (P == null) { - Core.statusMsg(sender, "only_player_cmd", false); - return true; - } - if (!sender.hasPermission("core.commands.editcmd")) { - Core.statusMsg(sender, "no_perms", false); - return true; - } - if (args.length != 1) { - Core.statusMsg(sender, "wrong_args_count", false); - return false; - } - Block b = P.getTargetBlock(null, 100); - if (b.getType().equals(Material.COMMAND)) { - CommandBlock cb = (CommandBlock) b.getState(); - String command = ""; - for (String arg : args) { - if (!command.equals("")) { - command += " "; - } - command += arg; + if (!sender.hasPermission("core.commands.editcmd")) { + Core.statusMsg(sender, "no_perms", false); + return true; + } + if (args.length < 1) { + Core.statusMsg(sender, "wrong_args_count", false); + return false; + } + Block b = P.getTargetBlock(null, 100); + if (b.getType().equals(Material.COMMAND)) { + String command = ""; + for (String arg : args) { + if (!command.equals("")) { + command += " "; + } + command += arg; + } + CommandBlock cb = (CommandBlock) b.getState(); + cb.setCommand(command); + cb.update(); } - command = cb.getCommand() + command; - cb.setCommand(command); - cb.update(); - } - return true; - } else if (cmd.getName().equalsIgnoreCase("gm")) { - String command = "gamemode "; - for (String arg : args) { - command += arg + " "; - } - Bukkit.dispatchCommand(sender, command); - return true; - } else if (cmd.getName().equalsIgnoreCase("stairmode")) { - if (P == null) { - Core.statusMsg(sender, "only_player_cmd", false); return true; - } - if (!P.hasPermission("core.commands.stairmode")) { - Core.statusMsg(sender, "no_perms", false); + } else if (cmd.getName().equalsIgnoreCase("addcmd")) { + if (P == null) { + Core.statusMsg(sender, "only_player_cmd", false); + return true; + } + if (!sender.hasPermission("core.commands.editcmd")) { + Core.statusMsg(sender, "no_perms", false); + return true; + } + if (args.length != 1) { + Core.statusMsg(sender, "wrong_args_count", false); + return false; + } + Block b = P.getTargetBlock(null, 100); + if (b.getType().equals(Material.COMMAND)) { + CommandBlock cb = (CommandBlock) b.getState(); + String command = ""; + for (String arg : args) { + if (!command.equals("")) { + command += " "; + } + command += arg; + } + command = cb.getCommand() + command; + cb.setCommand(command); + cb.update(); + } return true; - } - if (Core.getMainClass().stairMode.contains(P)) { - Core.getMainClass().stairMode.remove(P); - } else { - Core.getMainClass().stairMode.add(P); - } - Core.getTools().sendStatusMsg(sender, "Done!", true); - return true; - } else if (cmd.getName().equalsIgnoreCase("flowerpot")) { - if (P == null) { - Core.statusMsg(sender, "only_player_cmd", false); + } else if (cmd.getName().equalsIgnoreCase("gm")) { + String command = "gamemode "; + for (String arg : args) { + command += arg + " "; + } + Bukkit.dispatchCommand(sender, command); return true; - } - if (!P.hasPermission("core.commands.flowerpot")) { - Core.statusMsg(sender, "no_perms", false); + } else if (cmd.getName().equalsIgnoreCase("stairmode")) { + if (P == null) { + Core.statusMsg(sender, "only_player_cmd", false); + return true; + } + if (!P.hasPermission("core.commands.stairmode")) { + Core.statusMsg(sender, "no_perms", false); + return true; + } + if (Core.getMainClass().stairMode.contains(P)) { + Core.getMainClass().stairMode.remove(P); + } else { + Core.getMainClass().stairMode.add(P); + } + Core.getTools().sendStatusMsg(sender, "Done!", true); return true; - } - if (args.length != 1) { - Core.statusMsg(sender, "wrong_args_count", false); - return false; - } - Location l = P.getLocation(); - if (Core.getMainClass().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() + "'"); - try { + } else if (cmd.getName().equalsIgnoreCase("flowerpot")) { + if (P == null) { + Core.statusMsg(sender, "only_player_cmd", false); + return true; + } + if (!P.hasPermission("core.commands.flowerpot")) { + Core.statusMsg(sender, "no_perms", false); + return true; + } + if (args.length != 1) { + Core.statusMsg(sender, "wrong_args_count", false); + return false; + } + Location l = P.getLocation(); + if (Core.getMainClass().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())); l.getBlock().setType(Material.BROWN_MUSHROOM); Core.getMainClass().pots.refreshPot(rs.getInt("id")); Core.statusMsg(sender, "set_arch_ok", true); return true; - } catch (SQLException ex) { - System.out.println("Error onCommand. Setpot"); - - } - } 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]; - Core.getTools().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); - Core.getTools().sendStatusMsg(cs, "The rendering has finished!", true); - } catch (MalformedURLException ex) { - Core.getTools().sendStatusMsg(cs, "Please provide a valid image url!", false); - } catch (IOException ex) { - Core.getTools().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])) { - Core.getTools().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")) { - World w = P.getLocation().getWorld(); - w.setTime(2000); - w.setThundering(false); - w.setStorm(false); - Core.getMainClass().tools.sendStatusMsg(sender, "Sun!", true); + } else if (cmd.getName().equalsIgnoreCase("renderMap")) { + if (!sender.hasPermission("core.commands.addmap")) { + Core.statusMsg(sender, "no_perms", false); return true; } - } - } else if (cmd.getName().equalsIgnoreCase("setjumper")) { - if (P == null) { - Core.statusMsg(sender, "only_player_cmd", false); + 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]; + Core.getTools().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); + Core.getTools().sendStatusMsg(cs, "The rendering has finished!", true); + } catch (MalformedURLException ex) { + Core.getTools().sendStatusMsg(cs, "Please provide a valid image url!", false); + } catch (IOException ex) { + Core.getTools().sendStatusMsg(cs, "Image rendering not working! Did you provide a valid url?", false); + } + } + + }, 1); return true; - } - if (args.length != 1) { - return false; - } - if (!P.hasPermission("core.commands.setjumper")) { - Core.statusMsg(sender, "no_perms", false); + } 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])) { + Core.getTools().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; - } - if (Double.valueOf(args[0]) > 10 || Double.valueOf(args[0]) < 0.2) { - Core.statusMsg(sender, "setjumper_wrong_number", false); + } else if (cmd.getName().equalsIgnoreCase("sun")) { + if (P != null) { + if (P.hasPermission("core.commands.sun")) { + World w = P.getLocation().getWorld(); + w.setTime(2000); + w.setThundering(false); + w.setStorm(false); + Core.getMainClass().tools.sendStatusMsg(sender, "Sun!", true); + return true; + } + } + } else if (cmd.getName().equalsIgnoreCase("setjumper")) { + if (P == null) { + Core.statusMsg(sender, "only_player_cmd", false); + return true; + } + if (args.length != 1) { + return false; + } + if (!P.hasPermission("core.commands.setjumper")) { + Core.statusMsg(sender, "no_perms", false); + return true; + } + if (Double.valueOf(args[0]) > 10 || Double.valueOf(args[0]) < 0.2) { + Core.statusMsg(sender, "setjumper_wrong_number", false); + return true; + } + Core.getMainClass().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; - } - Core.getMainClass().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")) { - if (P == null) { - Core.statusMsg(sender, "only_player_cmd", false); + } else if (cmd.getName().equalsIgnoreCase("flyspeed")) { + if (P == null) { + Core.statusMsg(sender, "only_player_cmd", false); + return true; + } + if (!P.hasPermission("core.commands.flyspeed")) { + Core.statusMsg(P, "no_perms", false); + return true; + } + if (args.length != 1) { + return false; + } + if (Float.parseFloat(args[0]) >= 10 || Float.parseFloat(args[0]) < 0) { + Core.statusMsg(P, "flyspeed_wrong_number", false); + return true; + } + P.setFlySpeed(Float.parseFloat(args[0]) / 10); + Core.getTools().sendStatusMsg(P, Core.getl("flyspeed_set_1", P) + " " + args[0] + Core.getl("flyspeed_set_2", P), true); return true; - } - if (!P.hasPermission("core.commands.flyspeed")) { - Core.statusMsg(P, "no_perms", false); - return true; - } - if (args.length != 1) { - return false; - } - if (Float.parseFloat(args[0]) >= 10 || Float.parseFloat(args[0]) < 0) { - Core.statusMsg(P, "flyspeed_wrong_number", false); - return true; - } - P.setFlySpeed(Float.parseFloat(args[0]) / 10); - Core.getTools().sendStatusMsg(P, Core.getl("flyspeed_set_1", P) + " " + args[0] + Core.getl("flyspeed_set_2", P), true); - return true; - } else if (cmd.getName().equalsIgnoreCase("setwarp")) { - try { + } else if (cmd.getName().equalsIgnoreCase("setwarp")) { if (P == null) { Core.statusMsg(sender, "only_player_cmd", false); return true; @@ -291,21 +286,17 @@ public class TeamCommands implements CommandExecutor { sql.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; - } catch (SQLException ex) { - System.out.println("Error: " + ex.getLocalizedMessage()); - } - } else if (cmd.getName().equalsIgnoreCase("remwarp")) { - if (args.length != 1) { - Core.statusMsg(P, "wrong_args_count", false); - return false; - } - if (!sender.hasPermission("core.commands.remwarp")) { - Core.statusMsg(P, "no_perms", false); - return true; - } - String map = args[0]; - ResultSet rs = sql.querySelect("SELECT name FROM coreWarps WHERE name = '" + map + "'"); - try { + } else if (cmd.getName().equalsIgnoreCase("remwarp")) { + if (args.length != 1) { + Core.statusMsg(P, "wrong_args_count", false); + return false; + } + if (!sender.hasPermission("core.commands.remwarp")) { + Core.statusMsg(P, "no_perms", false); + return true; + } + String map = args[0]; + ResultSet rs = sql.querySelect("SELECT name FROM coreWarps WHERE name = '" + map + "'"); rs.last(); if (rs.getRow() == 0) { Core.statusMsg(P, "warp_not_exist", false); @@ -314,25 +305,24 @@ public class TeamCommands implements CommandExecutor { sql.queryUpdate("DELETE FROM coreWarps WHERE name = '" + map + "'"); Core.statusMsg(P, "warp_rem_done", true); return true; - } catch (SQLException ex) { - System.out.println("Error: " + ex.getLocalizedMessage()); - } - - } else if (cmd.getName().equalsIgnoreCase("toggleBoatFlight")) { - if (P != null && P.hasPermission("core.boat.toggleflight")) { - if (Features.wantFlight.contains(P.getUniqueId())) { - Features.wantFlight.remove(P.getUniqueId()); - P.sendMessage("Du wurdest aus der Liste entfernt!"); + } else if (cmd.getName().equalsIgnoreCase("toggleBoatFlight")) { + if (P != null && P.hasPermission("core.boat.toggleflight")) { + if (Features.wantFlight.contains(P.getUniqueId())) { + Features.wantFlight.remove(P.getUniqueId()); + P.sendMessage("Du wurdest aus der Liste entfernt!"); + } else { + Features.wantFlight.add(P.getUniqueId()); + P.sendMessage("Du wurdest zu der Liste hinzugefügt!"); + } + return true; } else { - Features.wantFlight.add(P.getUniqueId()); - P.sendMessage("Du wurdest zu der Liste hinzugefügt!"); + Core.statusMsg(P, "no_perms", false); + return true; } - return true; - } else { - Core.statusMsg(P, "no_perms", false); - return true; } - } + } catch(Throwable e) { + Errors.reportException(e); + } return false; } } diff --git a/src/de/anura/core/events/BlockBreak.java b/src/de/anura/core/events/BlockBreak.java index b1df423..c2acd95 100644 --- a/src/de/anura/core/events/BlockBreak.java +++ b/src/de/anura/core/events/BlockBreak.java @@ -1,5 +1,6 @@ package de.anura.core.events; +import de.anura.core.API.Errors; import de.anura.core.AnuraCore; import org.bukkit.Location; import org.bukkit.Material; @@ -18,35 +19,39 @@ public class BlockBreak implements Listener { @EventHandler public void onBlockBreak(BlockBreakEvent event) { - if (plugin.getConfig().getBoolean("no-change-blocks")) { - if (!event.getPlayer().hasPermission("core.rules.blocks.break")) { - event.setCancelled(true); - return; + try { + if (plugin.getConfig().getBoolean("no-change-blocks")) { + if (!event.getPlayer().hasPermission("core.rules.blocks.break")) { + event.setCancelled(true); + return; + } } - } - if (plugin.flowerPots.containsValue(event.getBlock().getLocation())) { - event.setCancelled(true); - } - if ((event.getBlock().getType() == Material.ENDER_CHEST || event.getBlock().getType() == Material.RAILS)) { - int X = (int) event.getBlock().getLocation().getX(); - int Y = (int) event.getBlock().getLocation().getY(); - 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); - } else if (event.getBlock().getState() instanceof Sign) { - Sign s = (Sign) event.getBlock().getState(); - Location loc = s.getLocation(); - int X = loc.getBlockX(); - int Y = loc.getBlockY(); - 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 + "'"); - } else if (event.getBlock().getState().getData() instanceof Stairs) { - if (plugin.sittingBlocks.containsValue(event.getBlock())) { + if (plugin.flowerPots.containsValue(event.getBlock().getLocation())) { event.setCancelled(true); } + if ((event.getBlock().getType() == Material.ENDER_CHEST || event.getBlock().getType() == Material.RAILS)) { + int X = (int) event.getBlock().getLocation().getX(); + int Y = (int) event.getBlock().getLocation().getY(); + 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); + } else if (event.getBlock().getState() instanceof Sign) { + Sign s = (Sign) event.getBlock().getState(); + Location loc = s.getLocation(); + int X = loc.getBlockX(); + int Y = loc.getBlockY(); + 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 + "'"); + } else if (event.getBlock().getState().getData() instanceof Stairs) { + if (plugin.sittingBlocks.containsValue(event.getBlock())) { + event.setCancelled(true); + } + } + } catch(Throwable e) { + Errors.reportException(e); } } private final AnuraCore plugin; diff --git a/src/de/anura/core/events/BlockPlace.java b/src/de/anura/core/events/BlockPlace.java index b990d10..e6e1785 100644 --- a/src/de/anura/core/events/BlockPlace.java +++ b/src/de/anura/core/events/BlockPlace.java @@ -1,6 +1,7 @@ package de.anura.core.events; import de.anura.core.API.Core; +import de.anura.core.API.Errors; import de.anura.core.AnuraCore; import org.bukkit.Material; import org.bukkit.block.Block; @@ -17,24 +18,28 @@ public class BlockPlace implements Listener { @EventHandler public void onBlockPlace(BlockPlaceEvent event) { - if (plugin.getConfig().getBoolean("no-change-blocks")) { - if (!event.getPlayer().hasPermission("core.rules.blocks.place")) { - event.setCancelled(true); - } - } - if (plugin.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); + try { + if (plugin.getConfig().getBoolean("no-change-blocks")) { + if (!event.getPlayer().hasPermission("core.rules.blocks.place")) { + event.setCancelled(true); } + } + if (plugin.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() { - }, 3); + @Override + public void run() { + b.setType(Material.BROWN_MUSHROOM); + AnuraCore.getInstance().pots.refreshPot(pot); + } + + }, 3); + } + } catch(Throwable e) { + Errors.reportException(e); } } private final AnuraCore plugin; diff --git a/src/de/anura/core/events/BlockSpread.java b/src/de/anura/core/events/BlockSpread.java index 9186b5e..80bc1ba 100644 --- a/src/de/anura/core/events/BlockSpread.java +++ b/src/de/anura/core/events/BlockSpread.java @@ -1,5 +1,6 @@ package de.anura.core.events; +import de.anura.core.API.Errors; import de.anura.core.AnuraCore; import org.bukkit.Material; import org.bukkit.event.EventHandler; @@ -15,8 +16,12 @@ public class BlockSpread implements Listener { @EventHandler public void onBlockSpread(BlockSpreadEvent event) { - if (event.getNewState().getType().equals(Material.BROWN_MUSHROOM) && plugin.getConfig().getBoolean("disable-mushroom-spread")) { - event.setCancelled(true); + try { + if (event.getNewState().getType().equals(Material.BROWN_MUSHROOM) && plugin.getConfig().getBoolean("disable-mushroom-spread")) { + event.setCancelled(true); + } + } catch(Throwable e) { + Errors.reportException(e); } } private final AnuraCore plugin; diff --git a/src/de/anura/core/events/CmdPreprocess.java b/src/de/anura/core/events/CmdPreprocess.java index 66d7adf..6aa612e 100644 --- a/src/de/anura/core/events/CmdPreprocess.java +++ b/src/de/anura/core/events/CmdPreprocess.java @@ -1,6 +1,7 @@ package de.anura.core.events; import de.anura.core.API.Core; +import de.anura.core.API.Errors; import de.anura.core.AnuraCore; import org.bukkit.ChatColor; import org.bukkit.event.EventHandler; @@ -16,14 +17,18 @@ public class CmdPreprocess implements Listener { @EventHandler public void onCommandPreprocess(PlayerCommandPreprocessEvent event) { - if (event.getMessage().startsWith("/?")) { - if (!event.getPlayer().hasPermission("core.commands.help")) { + try { + if (event.getMessage().startsWith("/?")) { + if (!event.getPlayer().hasPermission("core.commands.help")) { + event.setCancelled(true); + Core.statusMsg(event.getPlayer(), "help_command_info", true); + } + } else if (plugin.disableCommandsAdventure.containsKey(event.getPlayer()) && plugin.disableCommandsAdventure.get(event.getPlayer())) { event.setCancelled(true); - Core.statusMsg(event.getPlayer(), "help_command_info", true); + Core.statusMsg(event.getPlayer(), "no_command_red_mg", ChatColor.YELLOW); } - } else if (plugin.disableCommandsAdventure.containsKey(event.getPlayer()) && plugin.disableCommandsAdventure.get(event.getPlayer())) { - event.setCancelled(true); - Core.statusMsg(event.getPlayer(), "no_command_red_mg", ChatColor.YELLOW); + } catch(Throwable e) { + 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 d311043..fe6fdbe 100644 --- a/src/de/anura/core/events/DropItem.java +++ b/src/de/anura/core/events/DropItem.java @@ -1,5 +1,6 @@ package de.anura.core.events; +import de.anura.core.API.Errors; import de.anura.core.AnuraCore; import org.bukkit.Bukkit; import org.bukkit.entity.Player; @@ -15,15 +16,19 @@ public class DropItem implements Listener { @EventHandler public void onPlayerDropItem(PlayerDropItemEvent event) { - 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); + try { + 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); + } + } catch(Throwable e) { + Errors.reportException(e); } } } diff --git a/src/de/anura/core/events/EntityDamage.java b/src/de/anura/core/events/EntityDamage.java index f4e3fb7..8f3c095 100644 --- a/src/de/anura/core/events/EntityDamage.java +++ b/src/de/anura/core/events/EntityDamage.java @@ -1,5 +1,6 @@ package de.anura.core.events; +import de.anura.core.API.Errors; import de.anura.core.AnuraCore; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; @@ -15,8 +16,12 @@ public class EntityDamage implements Listener { @EventHandler public void onEntityDamage(EntityDamageEvent event) { - if (event.getEntity() instanceof Player && plugin.getConfig().getBoolean("no-damage")) { - event.setCancelled(true); + try { + if (event.getEntity() instanceof Player && plugin.getConfig().getBoolean("no-damage")) { + event.setCancelled(true); + } + } catch(Throwable e) { + Errors.reportException(e); } } private final AnuraCore plugin; diff --git a/src/de/anura/core/events/EntityDamageByE.java b/src/de/anura/core/events/EntityDamageByE.java index b7634f4..ca33290 100644 --- a/src/de/anura/core/events/EntityDamageByE.java +++ b/src/de/anura/core/events/EntityDamageByE.java @@ -1,5 +1,6 @@ package de.anura.core.events; +import de.anura.core.API.Errors; import de.anura.core.AnuraCore; import org.bukkit.entity.ItemFrame; import org.bukkit.entity.Player; @@ -16,12 +17,16 @@ public class EntityDamageByE implements Listener { @EventHandler public void onEntityDamageByE(EntityDamageByEntityEvent event) { - if (event.getEntity() instanceof ItemFrame && plugin.getConfig().getBoolean("no-change-blocks")) { - if (event.getDamager() instanceof Player) { - if (!((Player) event.getDamager()).hasPermission("core.rules.blocks.break")) { - event.setCancelled(true); + try { + if (event.getEntity() instanceof ItemFrame && plugin.getConfig().getBoolean("no-change-blocks")) { + if (event.getDamager() instanceof Player) { + if (!((Player) event.getDamager()).hasPermission("core.rules.blocks.break")) { + event.setCancelled(true); + } } } + } catch(Throwable e) { + Errors.reportException(e); } } private final AnuraCore plugin; diff --git a/src/de/anura/core/events/FoodChange.java b/src/de/anura/core/events/FoodChange.java index 9cafd8c..c37def7 100644 --- a/src/de/anura/core/events/FoodChange.java +++ b/src/de/anura/core/events/FoodChange.java @@ -1,5 +1,6 @@ package de.anura.core.events; +import de.anura.core.API.Errors; import de.anura.core.AnuraCore; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; @@ -15,11 +16,15 @@ public class FoodChange implements Listener { @EventHandler public void onFoodLChange(FoodLevelChangeEvent event) { - if (plugin.getConfig().getBoolean("no-hunger")) { - if (event.getEntity() instanceof Player) { - ((Player) event.getEntity()).setFoodLevel(20); + try { + if (plugin.getConfig().getBoolean("no-hunger")) { + if (event.getEntity() instanceof Player) { + ((Player) event.getEntity()).setFoodLevel(20); + } + event.setCancelled(true); } - event.setCancelled(true); + } catch(Throwable e) { + Errors.reportException(e); } } private final AnuraCore plugin; diff --git a/src/de/anura/core/events/HangingEBreak.java b/src/de/anura/core/events/HangingEBreak.java index 29d9c7f..2c0e13d 100644 --- a/src/de/anura/core/events/HangingEBreak.java +++ b/src/de/anura/core/events/HangingEBreak.java @@ -1,5 +1,6 @@ package de.anura.core.events; +import de.anura.core.API.Errors; import de.anura.core.AnuraCore; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; @@ -15,16 +16,20 @@ public class HangingEBreak implements Listener { @EventHandler public void onHangingBreakByE(HangingBreakByEntityEvent event) { - Player P; - if (event.getRemover() instanceof Player) { - P = (Player) event.getRemover(); - } else { - return; - } - if (plugin.getConfig().getBoolean("no-change-blocks")) { - if (!P.hasPermission("core.rules.blocks.break")) { - event.setCancelled(true); + try { + Player P; + if (event.getRemover() instanceof Player) { + P = (Player) event.getRemover(); + } else { + return; } + if (plugin.getConfig().getBoolean("no-change-blocks")) { + if (!P.hasPermission("core.rules.blocks.break")) { + event.setCancelled(true); + } + } + } catch(Throwable e) { + Errors.reportException(e); } } private final AnuraCore plugin; diff --git a/src/de/anura/core/events/InvClick.java b/src/de/anura/core/events/InvClick.java index b40dd09..eef3db2 100644 --- a/src/de/anura/core/events/InvClick.java +++ b/src/de/anura/core/events/InvClick.java @@ -1,5 +1,6 @@ package de.anura.core.events; +import de.anura.core.API.Errors; import de.anura.core.AnuraCore; import org.bukkit.Bukkit; import org.bukkit.Material; @@ -20,17 +21,21 @@ public class InvClick implements Listener { @EventHandler public void onInvClick(InventoryClickEvent event) { - Player player = (Player) event.getWhoClicked(); - 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(); - } - }, 1); + try { + Player player = (Player) event.getWhoClicked(); + 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(); + } + }, 1); + } + } catch(Throwable e) { + Errors.reportException(e); } } } diff --git a/src/de/anura/core/events/LeavesDecay.java b/src/de/anura/core/events/LeavesDecay.java index 53bfbf1..6d9c413 100644 --- a/src/de/anura/core/events/LeavesDecay.java +++ b/src/de/anura/core/events/LeavesDecay.java @@ -1,5 +1,6 @@ package de.anura.core.events; +import de.anura.core.API.Errors; import de.anura.core.AnuraCore; import org.bukkit.block.Block; import org.bukkit.event.EventHandler; @@ -15,14 +16,18 @@ public class LeavesDecay implements Listener { @EventHandler public void onLeavesDecay(LeavesDecayEvent event) { - if (!plugin.getConfig().getBoolean("enable-leaves-decay")) { - Block b = event.getBlock(); - byte data = b.getData(); - if ((data & 0x4) == 0) { - data = (byte) (data | 0x4); + try { + if (!plugin.getConfig().getBoolean("enable-leaves-decay")) { + Block b = event.getBlock(); + byte data = b.getData(); + if ((data & 0x4) == 0) { + data = (byte) (data | 0x4); + } + b.setData(data); + event.setCancelled(true); } - b.setData(data); - event.setCancelled(true); + } catch(Throwable e) { + Errors.reportException(e); } } private final AnuraCore plugin; diff --git a/src/de/anura/core/events/PlayerChat.java b/src/de/anura/core/events/PlayerChat.java index 0adc91d..7a82613 100644 --- a/src/de/anura/core/events/PlayerChat.java +++ b/src/de/anura/core/events/PlayerChat.java @@ -1,6 +1,8 @@ package de.anura.core.events; +import de.anura.core.API.Errors; import de.anura.core.AnuraCore; +import java.util.IllegalFormatException; import org.bukkit.ChatColor; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; @@ -15,8 +17,12 @@ public class PlayerChat implements Listener { @EventHandler public void onPlayerChat(AsyncPlayerChatEvent event) { - if (event.isAsynchronous()) { - event.setFormat(event.getPlayer().getDisplayName() + ChatColor.GRAY + ":" + ChatColor.WHITE + " " + event.getMessage()); + try { + if (event.isAsynchronous()) { + event.setFormat(event.getPlayer().getDisplayName() + ChatColor.GRAY + ":" + ChatColor.WHITE + " " + event.getMessage()); + } + } catch(IllegalFormatException | NullPointerException e) { + Errors.reportException(e); } } private final AnuraCore plugin; diff --git a/src/de/anura/core/events/PlayerInteract.java b/src/de/anura/core/events/PlayerInteract.java index 67a3b0f..5a6b498 100644 --- a/src/de/anura/core/events/PlayerInteract.java +++ b/src/de/anura/core/events/PlayerInteract.java @@ -1,12 +1,11 @@ package de.anura.core.events; import de.anura.core.API.Core; +import de.anura.core.API.Errors; import de.anura.core.AnuraCore; import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; -import java.io.IOException; import java.sql.ResultSet; -import java.sql.SQLException; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.block.Block; @@ -29,43 +28,43 @@ public class PlayerInteract implements Listener { @EventHandler public void onPlayerInteract(PlayerInteractEvent event) { - final Block block = event.getClickedBlock(); - if (plugin.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; - if (event.getClickedBlock().getType().equals(Material.ENDER_CHEST)) { - type = "high"; - } else if (event.getClickedBlock().getType().equals(Material.RAILS)) { - type = "far"; - } else { - Core.statusMsg(event.getPlayer(), "setjumper_block_not_supported", false); + try { + final Block block = event.getClickedBlock(); + if (plugin.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; + if (event.getClickedBlock().getType().equals(Material.ENDER_CHEST)) { + type = "high"; + } else if (event.getClickedBlock().getType().equals(Material.RAILS)) { + type = "far"; + } else { + Core.statusMsg(event.getPlayer(), "setjumper_block_not_supported", false); + plugin.selectableJumper.remove(event.getPlayer()); + return; + } + 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()); - return; + Core.statusMsg(event.getPlayer(), "setjumper_done", true); + event.setCancelled(true); } - 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()); - Core.statusMsg(event.getPlayer(), "setjumper_done", true); - event.setCancelled(true); } - } - } else if (block != null) { - if (block.getState() instanceof Sign && event.getAction().equals(Action.RIGHT_CLICK_BLOCK)) { - Sign sign = (Sign) block.getState(); - Location loc = sign.getLocation(); - Player P = event.getPlayer(); - int X = loc.getBlockX(); - int Y = loc.getBlockY(); - 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 + "'"); - try { + } else if (block != null) { + if (block.getState() instanceof Sign && event.getAction().equals(Action.RIGHT_CLICK_BLOCK)) { + Sign sign = (Sign) block.getState(); + Location loc = sign.getLocation(); + Player P = event.getPlayer(); + int X = loc.getBlockX(); + int Y = loc.getBlockY(); + 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 + "'"); rs.last(); if (rs.getRow() != 0) { rs.first(); @@ -92,86 +91,83 @@ public class PlayerInteract implements Listener { P.sendPluginMessage(plugin, "BungeeCord", b.toByteArray()); } } - } catch (SQLException ex) { - System.out.println("SQLException in playerInteract: " + ex.getLocalizedMessage()); - } catch (IOException ex) { - System.out.println("IOException in playerInteract: " + ex.getLocalizedMessage()); - } - - event.setCancelled(true); - } else if (block.getState().getData() instanceof Stairs) { - if (plugin.stairMode.contains(event.getPlayer()) && event.getAction().equals(Action.RIGHT_CLICK_BLOCK)) { event.setCancelled(true); - if (plugin.sittableBlocks.contains(block)) { - plugin.sittableBlocks.remove(block); - Core.getTools().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 + "'"); - } else { - plugin.sittableBlocks.add(block); - Core.getTools().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 + "')"); - } - } else if (plugin.getConfig().getBoolean("allow-stairs-sit") && event.getAction().equals(Action.RIGHT_CLICK_BLOCK) && plugin.sittableBlocks.contains(block)) { - if (plugin.sittingPlayer.containsKey(event.getPlayer())) { - Core.statusMsg(event.getPlayer(), "sitting_already", false); + } else if (block.getState().getData() instanceof Stairs) { + if (plugin.stairMode.contains(event.getPlayer()) && event.getAction().equals(Action.RIGHT_CLICK_BLOCK)) { event.setCancelled(true); - } else if (plugin.sittingBlocks.containsValue(block)) { - Core.statusMsg(event.getPlayer(), "sitting_occupied", false); - event.setCancelled(true); - } else { - Stairs s = (Stairs) block.getState().getData(); - if (!s.isInverted()) { - Location loc = block.getLocation(); - loc = loc.add(0.5, 0.05, 0.5); - 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); + if (plugin.sittableBlocks.contains(block)) { + plugin.sittableBlocks.remove(block); + Core.getTools().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 + "'"); + } else { + plugin.sittableBlocks.add(block); + Core.getTools().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 + "')"); + } + } else if (plugin.getConfig().getBoolean("allow-stairs-sit") && event.getAction().equals(Action.RIGHT_CLICK_BLOCK) && plugin.sittableBlocks.contains(block)) { + if (plugin.sittingPlayer.containsKey(event.getPlayer())) { + Core.statusMsg(event.getPlayer(), "sitting_already", false); event.setCancelled(true); + } else if (plugin.sittingBlocks.containsValue(block)) { + Core.statusMsg(event.getPlayer(), "sitting_occupied", false); + event.setCancelled(true); + } else { + Stairs s = (Stairs) block.getState().getData(); + if (!s.isInverted()) { + Location loc = block.getLocation(); + loc = loc.add(0.5, 0.05, 0.5); + 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); + event.setCancelled(true); + } } } - } - } else if (plugin.flowerPots.containsValue(block.getLocation())) { - event.setCancelled(true); - final Player p = event.getPlayer(); - plugin.getServer().getScheduler().scheduleSyncDelayedTask(plugin, new Runnable() { + } else if (plugin.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); - } + @Override + public void run() { + p.sendBlockChange(block.getLocation(), Material.AIR, (byte) 0); + } - }, 3); - plugin.pots.playerFoundPot(event.getPlayer(), Core.getKeyByValue(plugin.flowerPots, block.getLocation())); - } - } - if (plugin.getConfig().getBoolean("no-change-blocks")) { - if (!event.getPlayer().hasPermission("core.rules.blocks.interact")) { - Boolean cancelled = true; - if (event.getAction().equals(Action.RIGHT_CLICK_BLOCK)) { - if (event.getClickedBlock().getType().equals(Material.STONE_BUTTON)) { - cancelled = false; - } else if (event.getClickedBlock().getType().equals(Material.WOOD_BUTTON)) { - cancelled = false; - } - } else if (event.getAction().equals(Action.PHYSICAL)) { - cancelled = false; - } else if (event.getAction().equals(Action.RIGHT_CLICK_AIR)) { - if (event.getPlayer().getItemInHand().getType().equals(Material.BOW)) { - cancelled = false; - } else if (event.getPlayer().getItemInHand().getType().equals(Material.EXP_BOTTLE)) { - cancelled = false; - } + }, 3); + plugin.pots.playerFoundPot(event.getPlayer(), Core.getKeyByValue(plugin.flowerPots, block.getLocation())); } - event.setCancelled(cancelled); } + if (plugin.getConfig().getBoolean("no-change-blocks")) { + if (!event.getPlayer().hasPermission("core.rules.blocks.interact")) { + Boolean cancelled = true; + if (event.getAction().equals(Action.RIGHT_CLICK_BLOCK)) { + if (event.getClickedBlock().getType().equals(Material.STONE_BUTTON)) { + cancelled = false; + } else if (event.getClickedBlock().getType().equals(Material.WOOD_BUTTON)) { + cancelled = false; + } + } else if (event.getAction().equals(Action.PHYSICAL)) { + cancelled = false; + } else if (event.getAction().equals(Action.RIGHT_CLICK_AIR)) { + if (event.getPlayer().getItemInHand().getType().equals(Material.BOW)) { + cancelled = false; + } else if (event.getPlayer().getItemInHand().getType().equals(Material.EXP_BOTTLE)) { + cancelled = false; + } + } + event.setCancelled(cancelled); + } + } + } catch(Throwable e) { + Errors.reportException(e); } } private final AnuraCore plugin; diff --git a/src/de/anura/core/events/PlayerInteractE.java b/src/de/anura/core/events/PlayerInteractE.java index 4dbc0d2..d4b252c 100644 --- a/src/de/anura/core/events/PlayerInteractE.java +++ b/src/de/anura/core/events/PlayerInteractE.java @@ -1,5 +1,6 @@ package de.anura.core.events; +import de.anura.core.API.Errors; import de.anura.core.AnuraCore; import org.bukkit.Material; import org.bukkit.entity.Chicken; @@ -18,31 +19,35 @@ public class PlayerInteractE implements Listener { @EventHandler public void onPlayerInteractE(PlayerInteractEntityEvent event) { - if (event.getRightClicked().getType().equals(EntityType.ITEM_FRAME) && plugin.getConfig().getBoolean("no-change-blocks")) { - 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++; + try { + if (event.getRightClicked().getType().equals(EntityType.ITEM_FRAME) && plugin.getConfig().getBoolean("no-change-blocks")) { + if (!event.getPlayer().hasPermission("core.rules.blocks.interact")) { + event.setCancelled(true); } - 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().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); + + } } + } catch(Throwable e) { + Errors.reportException(e); } } private final AnuraCore plugin; diff --git a/src/de/anura/core/events/PlayerJoin.java b/src/de/anura/core/events/PlayerJoin.java index 8808c74..0ff429d 100644 --- a/src/de/anura/core/events/PlayerJoin.java +++ b/src/de/anura/core/events/PlayerJoin.java @@ -1,6 +1,7 @@ package de.anura.core.events; import de.anura.core.API.Core; +import de.anura.core.API.Errors; import de.anura.core.AnuraCore; import java.sql.ResultSet; import java.sql.SQLException; @@ -19,9 +20,9 @@ public class PlayerJoin implements Listener { @EventHandler public void onPlayerJoin(PlayerJoinEvent event) { - UUID uuid = event.getPlayer().getUniqueId(); - ResultSet rs; try { + UUID uuid = event.getPlayer().getUniqueId(); + ResultSet rs; rs = AnuraCore.getSql().querySelect("SELECT name FROM players WHERE uuid LIKE '" + uuid.toString() + "'"); if (rs == null) { event.getPlayer().kickPlayer("Please try again"); @@ -32,19 +33,20 @@ public class PlayerJoin implements Listener { if (rs.getRow() != 1) { AnuraCore.getSql().queryUpdate("INSERT INTO players(`uuid`,`game`,`waiting`,`gameName`) VALUES('" + uuid.toString() + "','none','none','')"); } - } catch (SQLException e) { - } - event.setJoinMessage(null); - event.getPlayer().getInventory().clear(); - plugin.pots.refreshCache(event.getPlayer()); - plugin.pots.refreshPlayer(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()); - if (plugin.getConfig().getBoolean("on-join-to-spawn")) { - event.getPlayer().teleport(event.getPlayer().getWorld().getSpawnLocation()); + event.setJoinMessage(null); + event.getPlayer().getInventory().clear(); + plugin.pots.refreshCache(event.getPlayer()); + plugin.pots.refreshPlayer(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()); + if (plugin.getConfig().getBoolean("on-join-to-spawn")) { + event.getPlayer().teleport(event.getPlayer().getWorld().getSpawnLocation()); + } + } catch(Throwable e) { + Errors.reportException(e); } } private final AnuraCore plugin; diff --git a/src/de/anura/core/events/PlayerKick.java b/src/de/anura/core/events/PlayerKick.java index 43b3b92..15dab6f 100644 --- a/src/de/anura/core/events/PlayerKick.java +++ b/src/de/anura/core/events/PlayerKick.java @@ -1,10 +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 java.io.ByteArrayOutputStream; import java.io.DataOutputStream; -import java.io.IOException; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerKickEvent; @@ -18,9 +18,9 @@ public class PlayerKick implements Listener { @EventHandler public void onPlayerKick(PlayerKickEvent event) { - AnuraCore.getInstance().disableCommandsAdventure.remove(event.getPlayer()); - if (!plugin.getConfig().getBoolean("is-main-lobby")) { - try { + try { + AnuraCore.getInstance().disableCommandsAdventure.remove(event.getPlayer()); + if (!plugin.getConfig().getBoolean("is-main-lobby")) { Core.endSitting(event.getPlayer()); event.setCancelled(true); ByteArrayOutputStream b = new ByteArrayOutputStream(); @@ -28,11 +28,11 @@ public class PlayerKick implements Listener { out.writeUTF("Connect"); out.writeUTF("lobby"); event.getPlayer().sendPluginMessage(plugin, "BungeeCord", b.toByteArray()); - - } catch (IOException ex) { } + event.setLeaveMessage(null); + } catch(Throwable e) { + Errors.reportException(e); } - event.setLeaveMessage(null); } private final AnuraCore plugin; } diff --git a/src/de/anura/core/events/PlayerMove.java b/src/de/anura/core/events/PlayerMove.java index ffe7b00..d591bb8 100644 --- a/src/de/anura/core/events/PlayerMove.java +++ b/src/de/anura/core/events/PlayerMove.java @@ -1,9 +1,9 @@ package de.anura.core.events; +import de.anura.core.API.Errors; import de.anura.core.AnuraCore; import de.anura.core.ParticleEffect; import java.sql.ResultSet; -import java.sql.SQLException; import org.bukkit.Material; import org.bukkit.Sound; import org.bukkit.block.Block; @@ -26,17 +26,17 @@ public class PlayerMove implements Listener { @EventHandler public void onPlayerMove(PlayerMoveEvent event) { - Player p = event.getPlayer(); - Block block = event.getTo().clone().getBlock(); - Block under = block.getLocation().subtract(0, 1, 0).getBlock(); + try { + Player p = event.getPlayer(); + Block block = event.getTo().clone().getBlock(); + Block under = block.getLocation().subtract(0, 1, 0).getBlock(); - 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)) { - p.setWalkSpeed(0.6F); - } else if (block.getType().equals(Material.CARPET) && under.getType().equals(Material.ENDER_CHEST)) { - try { + 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)) { + p.setWalkSpeed(0.6F); + } else if (block.getType().equals(Material.CARPET) && under.getType().equals(Material.ENDER_CHEST)) { double X = under.getLocation().getX(); double Y = under.getLocation().getY(); double Z = under.getLocation().getZ(); @@ -49,12 +49,8 @@ public class PlayerMove implements Listener { ParticleEffect.FIREWORKS_SPARK.display(p.getLocation(), (float) 0.1, (float) 0.1, (float) 0.1, (float) 0.3, 10); } p.setWalkSpeed(0.2F); - } catch (SQLException ex) { - System.err.println(ex.getLocalizedMessage()); - } - } else if (block.getType().equals(Material.CARPET) && under.getType().equals(Material.RAILS)) { - try { + } 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(); @@ -69,38 +65,37 @@ public class PlayerMove implements Listener { p.playSound(p.getLocation(), Sound.EXPLODE, 1, 1); } p.setWalkSpeed(0.2F); - } catch (SQLException ex) { - System.err.println(ex.getLocalizedMessage()); + } else { + p.setWalkSpeed(0.2F); } - } else { - p.setWalkSpeed(0.2F); + Block sign = null; + Block isSign = block.getLocation().getWorld().getBlockAt(block.getLocation().add(0, 1, 0)); + if (isSign.getType().equals(Material.WALL_SIGN)) { + sign = isSign; + } else if (block.getType().equals(Material.WALL_SIGN)) { + sign = block; + } + if (sign != null && !event.getPlayer().hasPermission("core.rules.hideSign")) { + Sign s = (Sign) sign.getState().getData(); + BlockFace bf = s.getFacing(); + if (bf.equals(BlockFace.EAST)) { + event.getPlayer().setVelocity(new Vector(0.3, 0, 0)); + } + if (bf.equals(BlockFace.WEST)) { + event.getPlayer().setVelocity(new Vector(-0.3, 0, 0)); + } + if (bf.equals(BlockFace.SOUTH)) { + event.getPlayer().setVelocity(new Vector(0, 0, 0.3)); + } + if (bf.equals(BlockFace.NORTH)) { + 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); + } + } catch(Throwable e) { + Errors.reportException(e); } - Block sign = null; - Block isSign = block.getLocation().getWorld().getBlockAt(block.getLocation().add(0, 1, 0)); - if (isSign.getType().equals(Material.WALL_SIGN)) { - sign = isSign; - } else if (block.getType().equals(Material.WALL_SIGN)) { - sign = block; - } - if (sign != null && !event.getPlayer().hasPermission("core.rules.hideSign")) { - Sign s = (Sign) sign.getState().getData(); - BlockFace bf = s.getFacing(); - if (bf.equals(BlockFace.EAST)) { - event.getPlayer().setVelocity(new Vector(0.3, 0, 0)); - } - if (bf.equals(BlockFace.WEST)) { - event.getPlayer().setVelocity(new Vector(-0.3, 0, 0)); - } - if (bf.equals(BlockFace.SOUTH)) { - event.getPlayer().setVelocity(new Vector(0, 0, 0.3)); - } - if (bf.equals(BlockFace.NORTH)) { - 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); - } - } } diff --git a/src/de/anura/core/events/PlayerQuit.java b/src/de/anura/core/events/PlayerQuit.java index d255915..cb6601b 100644 --- a/src/de/anura/core/events/PlayerQuit.java +++ b/src/de/anura/core/events/PlayerQuit.java @@ -1,6 +1,7 @@ package de.anura.core.events; import de.anura.core.API.Core; +import de.anura.core.API.Errors; import de.anura.core.API.Money; import de.anura.core.AnuraCore; import org.bukkit.entity.Boat; @@ -17,16 +18,20 @@ public class PlayerQuit implements Listener { @EventHandler public void onPlayerQuit(PlayerQuitEvent event) { - if(event.getPlayer().getVehicle() != null){ - if(event.getPlayer().getVehicle().getType().equals(EntityType.BOAT)){ - Boat b = (Boat) event.getPlayer().getVehicle(); - b.remove(); + try { + if(event.getPlayer().getVehicle() != null){ + if(event.getPlayer().getVehicle().getType().equals(EntityType.BOAT)){ + Boat b = (Boat) event.getPlayer().getVehicle(); + b.remove(); + } } + event.setQuitMessage(null); + Core.endSitting(event.getPlayer()); + AnuraCore.getInstance().disableCommandsAdventure.remove(event.getPlayer()); + Money.saveMoney(event.getPlayer()); + Core.getLevel().update(event.getPlayer()); + } catch(Throwable e) { + Errors.reportException(e); } - event.setQuitMessage(null); - Core.endSitting(event.getPlayer()); - AnuraCore.getInstance().disableCommandsAdventure.remove(event.getPlayer()); - Money.saveMoney(event.getPlayer()); - Core.getLevel().update(event.getPlayer()); } } diff --git a/src/de/anura/core/events/PlayerTeleport.java b/src/de/anura/core/events/PlayerTeleport.java index 8caf99e..4592331 100644 --- a/src/de/anura/core/events/PlayerTeleport.java +++ b/src/de/anura/core/events/PlayerTeleport.java @@ -22,6 +22,7 @@ public class PlayerTeleport implements Listener { @EventHandler(priority = EventPriority.LOWEST) public void onPlayerTeleport(PlayerTeleportEvent event) { + if (plugin.sittingPlayer.containsKey(event.getPlayer()) && !event.getCause().equals(TeleportCause.PLUGIN)) { if (event.getPlayer().isSneaking()) { Player P = event.getPlayer(); diff --git a/src/de/anura/core/events/SignChange.java b/src/de/anura/core/events/SignChange.java index 6b5221c..00506b2 100644 --- a/src/de/anura/core/events/SignChange.java +++ b/src/de/anura/core/events/SignChange.java @@ -1,9 +1,9 @@ package de.anura.core.events; import de.anura.core.API.Core; +import de.anura.core.API.Errors; import de.anura.core.AnuraCore; import java.sql.ResultSet; -import java.sql.SQLException; import java.util.AbstractMap.SimpleEntry; import java.util.ArrayList; import java.util.Map.Entry; @@ -22,18 +22,17 @@ public class SignChange implements Listener { @EventHandler public void onSignChange(SignChangeEvent event) { - - if (event.getLine(0).equalsIgnoreCase("[Warp]")) { - if (!event.getPlayer().hasPermission("core.signs.warp")) { - event.setLine(0, ChatColor.STRIKETHROUGH + "[Warp]"); - event.setLine(1, ChatColor.RED + "You don't"); - event.setLine(2, ChatColor.RED + "have"); - event.setLine(3, ChatColor.RED + "Permission!"); - return; - } - if (event.getLine(1).equalsIgnoreCase("warp")) { - ResultSet rs = AnuraCore.sql.querySelect("SELECT name FROM coreWarps WHERE name = '" + event.getLine(2) + "'"); - try { + try { + if (event.getLine(0).equalsIgnoreCase("[Warp]")) { + if (!event.getPlayer().hasPermission("core.signs.warp")) { + event.setLine(0, ChatColor.STRIKETHROUGH + "[Warp]"); + event.setLine(1, ChatColor.RED + "You don't"); + event.setLine(2, ChatColor.RED + "have"); + event.setLine(3, ChatColor.RED + "Permission!"); + return; + } + if (event.getLine(1).equalsIgnoreCase("warp")) { + ResultSet rs = AnuraCore.sql.querySelect("SELECT name FROM coreWarps WHERE name = '" + event.getLine(2) + "'"); rs.last(); if (rs.getRow() == 0) { event.setLine(0, ChatColor.STRIKETHROUGH + "[Warp]"); @@ -54,64 +53,64 @@ public class SignChange implements Listener { event.setLine(3, ChatColor.BLUE + event.getLine(3)); Core.statusMsg(event.getPlayer(), "warpsign_created", true); } - } catch (SQLException ex) { - System.out.println("Error: " + ex.getLocalizedMessage()); + } else if (event.getLine(1).equalsIgnoreCase("spawn")) { + Location loc = event.getBlock().getLocation(); + int X = loc.getBlockX(); + int Y = loc.getBlockY(); + 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) + "')"); + event.setLine(0, ChatColor.DARK_GRAY + "---------"); + event.setLine(1, ChatColor.BLACK + "[" + ChatColor.GREEN + "Spawn" + ChatColor.BLACK + "]"); + event.setLine(2, ChatColor.DARK_GRAY + "---------"); + event.setLine(3, ChatColor.BLUE + event.getLine(3)); + Core.statusMsg(event.getPlayer(), "spawnsign_created", true); + } else if (event.getLine(1).equalsIgnoreCase("server")) { + Location loc = event.getBlock().getLocation(); + int X = loc.getBlockX(); + int Y = loc.getBlockY(); + int Z = loc.getBlockZ(); + 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) + "')"); + 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)); + event.setLine(3, ChatColor.BLUE + event.getLine(3)); + Core.statusMsg(event.getPlayer(), "serversign_created", true); } - } else if (event.getLine(1).equalsIgnoreCase("spawn")) { - Location loc = event.getBlock().getLocation(); - int X = loc.getBlockX(); - int Y = loc.getBlockY(); - 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) + "')"); - event.setLine(0, ChatColor.DARK_GRAY + "---------"); - event.setLine(1, ChatColor.BLACK + "[" + ChatColor.GREEN + "Spawn" + ChatColor.BLACK + "]"); - event.setLine(2, ChatColor.DARK_GRAY + "---------"); - event.setLine(3, ChatColor.BLUE + event.getLine(3)); - Core.statusMsg(event.getPlayer(), "spawnsign_created", true); - } else if (event.getLine(1).equalsIgnoreCase("server")) { - Location loc = event.getBlock().getLocation(); - int X = loc.getBlockX(); - int Y = loc.getBlockY(); - int Z = loc.getBlockZ(); - 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) + "')"); - 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)); - event.setLine(3, ChatColor.BLUE + event.getLine(3)); - Core.statusMsg(event.getPlayer(), "serversign_created", true); - } - } else { - if (event.getPlayer().hasPermission("core.signs.chars")) { - for (int i = 0; i < 4; i++) { - String l = event.getLine(i); - l = ChatColor.translateAlternateColorCodes('&', l); - if (l.contains("%")) { - String[] parts = l.split("%"); - ArrayList> toReplace = new ArrayList<>(); - Boolean first = true; - for (String s : parts) { - if (!first) { - String num = s.split(" ")[0]; - if (Core.isInteger(num)) { - int number = Integer.valueOf(num); - Entry e = new SimpleEntry<>("%" + number, Character.toString((char) number)); - toReplace.add(e); + } else { + if (event.getPlayer().hasPermission("core.signs.chars")) { + for (int i = 0; i < 4; i++) { + String l = event.getLine(i); + l = ChatColor.translateAlternateColorCodes('&', l); + if (l.contains("%")) { + String[] parts = l.split("%"); + ArrayList> toReplace = new ArrayList<>(); + Boolean first = true; + for (String s : parts) { + if (!first) { + String num = s.split(" ")[0]; + if (Core.isInteger(num)) { + int number = Integer.valueOf(num); + Entry e = new SimpleEntry<>("%" + number, Character.toString((char) number)); + toReplace.add(e); + } } + first = false; + } + for (Entry entry : toReplace) { + l = l.replace(entry.getKey(), entry.getValue()); } - first = false; - } - for (Entry entry : toReplace) { - l = l.replace(entry.getKey(), entry.getValue()); } + event.setLine(i, l); } - event.setLine(i, l); } } + } catch(Throwable e) { + Errors.reportException(e); } } private final AnuraCore plugin; diff --git a/src/de/anura/core/events/WeatherChange.java b/src/de/anura/core/events/WeatherChange.java index f0f0441..51e8a95 100644 --- a/src/de/anura/core/events/WeatherChange.java +++ b/src/de/anura/core/events/WeatherChange.java @@ -1,5 +1,6 @@ package de.anura.core.events; +import de.anura.core.API.Errors; import de.anura.core.AnuraCore; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; @@ -14,9 +15,12 @@ public class WeatherChange implements Listener { @EventHandler public void onWeatherChange(WeatherChangeEvent event) { - if (event.toWeatherState() && plugin.getConfig().getBoolean("no-rain")) { - event.setCancelled(true); - System.out.println("Stopped rain!"); + try { + if (event.toWeatherState() && plugin.getConfig().getBoolean("no-rain")) { + event.setCancelled(true); + } + } catch(Throwable e) { + Errors.reportException(e); } } private final AnuraCore plugin;