From 4a82c6f6ea5db5ca6de8a5b25232280c2c176f6a Mon Sep 17 00:00:00 2001 From: Your Name Date: Sat, 19 Mar 2011 19:21:41 +0100 Subject: [PATCH] 0.8 --- .../ItemResolver/myGeneralItemResolver.java | 24 -- com/nidefawl/Stats/Messaging.java | 14 ++ .../Stats/Permissions/GroupUserResolver.java | 7 + .../Permissions/NijiPermissionsResolver.java | 6 + com/nidefawl/Stats/PropertiesFile.java | 4 +- com/nidefawl/Stats/Stats.java | 219 ++++++++---------- com/nidefawl/Stats/StatsBlockListener.java | 50 ++-- com/nidefawl/Stats/StatsEntityListener.java | 116 +++++----- com/nidefawl/Stats/StatsPlayerListener.java | 106 +++++---- com/nidefawl/Stats/StatsSettings.java | 43 +--- com/nidefawl/Stats/StatsVehicleListener.java | 14 +- com/nidefawl/Stats/datasource/Category.java | 10 - com/nidefawl/Stats/datasource/PlayerStat.java | 36 ++- .../Stats/datasource/PlayerStatFile.java | 6 + .../Stats/datasource/PlayerStatSQL.java | 49 ++-- .../datasource/StatsSQLConnectionManager.java | 69 +++--- com/nidefawl/Stats/event/StatsListener.java | 14 +- .../event/StatsMobDeathByPlayerEvent.java | 38 +-- .../event/StatsPlayerDamagedPlayerEvent.java | 14 +- .../event/StatsPlayerDeathByEntityEvent.java | 23 +- .../event/StatsPlayerDeathByOtherEvent.java | 22 +- .../event/StatsPlayerDeathByPlayerEvent.java | 25 +- .../Stats/event/StatsPlayerMoveEvent.java | 15 +- com/nidefawl/Stats/util/Updater.java | 45 ++-- 24 files changed, 514 insertions(+), 455 deletions(-) delete mode 100755 com/nidefawl/Stats/ItemResolver/myGeneralItemResolver.java diff --git a/com/nidefawl/Stats/ItemResolver/myGeneralItemResolver.java b/com/nidefawl/Stats/ItemResolver/myGeneralItemResolver.java deleted file mode 100755 index 48e1a55..0000000 --- a/com/nidefawl/Stats/ItemResolver/myGeneralItemResolver.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.nidefawl.Stats.ItemResolver; - -import org.bukkit.plugin.Plugin; - -import com.nidefawl.MyGeneral.MyGeneral; - -public class myGeneralItemResolver implements itemResolver { - public MyGeneral plugin; - - public myGeneralItemResolver(Plugin plugin) { - this.plugin = (MyGeneral) plugin; - } - - @Override - public int getItem(String name) { - return plugin.getDataSource().getItem(name); - } - - @Override - public String getItem(int id) { - return plugin.getDataSource().getItem(id); - } - -} diff --git a/com/nidefawl/Stats/Messaging.java b/com/nidefawl/Stats/Messaging.java index bb2d759..c55f476 100755 --- a/com/nidefawl/Stats/Messaging.java +++ b/com/nidefawl/Stats/Messaging.java @@ -1,6 +1,7 @@ package com.nidefawl.Stats; import org.bukkit.Server; +import org.bukkit.World; import org.bukkit.entity.Player; /** @@ -181,4 +182,17 @@ public class Messaging { p.sendMessage(parse(message)); } } + + /** + * Brodcast a message to every player in given world. + * + * @param message + * - The message to be sent. + */ + + public static void worldbroadcast(World world, String message) { + for (Player p : world.getPlayers()) { + p.sendMessage(parse(message)); + } + } } \ No newline at end of file diff --git a/com/nidefawl/Stats/Permissions/GroupUserResolver.java b/com/nidefawl/Stats/Permissions/GroupUserResolver.java index 90950c4..ac38b95 100755 --- a/com/nidefawl/Stats/Permissions/GroupUserResolver.java +++ b/com/nidefawl/Stats/Permissions/GroupUserResolver.java @@ -17,6 +17,7 @@ public class GroupUserResolver implements PermissionsResolver { check(); } + @Override public boolean check() { if (perms == null) { Plugin checkPlugin = plugin.getServer().getPluginManager().getPlugin("GroupUsers"); @@ -30,28 +31,34 @@ public class GroupUserResolver implements PermissionsResolver { return true; } + @Override public boolean permission(Player player, String permCmd) { if (!check()) return false; return perms.playerCanUseCommand(player, permCmd); } + @Override public String getGroup(String player) { return ""; } + @Override public String getGroupPrefix(String player) { return ""; } + @Override public String getGroupSuffix(String player) { return ""; } + @Override public boolean canGroupBuild(String group) { return true; } + @Override public boolean inGroup(Player player, String group) { if (!check()) return false; diff --git a/com/nidefawl/Stats/Permissions/NijiPermissionsResolver.java b/com/nidefawl/Stats/Permissions/NijiPermissionsResolver.java index 00dab6b..f154c51 100755 --- a/com/nidefawl/Stats/Permissions/NijiPermissionsResolver.java +++ b/com/nidefawl/Stats/Permissions/NijiPermissionsResolver.java @@ -16,6 +16,7 @@ public class NijiPermissionsResolver implements PermissionsResolver { check(); } + @Override public boolean check() { if (perms == null) { Plugin checkPlugin = plugin.getServer().getPluginManager().getPlugin("Permissions"); @@ -30,6 +31,7 @@ public class NijiPermissionsResolver implements PermissionsResolver { return true; } + @Override public boolean permission(Player player, String permCmd) { if (!check()) @@ -37,24 +39,28 @@ public class NijiPermissionsResolver implements PermissionsResolver { return perms.getHandler().permission(player, permCmd); } + @Override public String getGroup(String player) { if (!check()) return ""; return perms.getHandler().getGroup(player); } + @Override public String getGroupPrefix(String player) { if (!check()) return ""; return perms.getHandler().getGroupPrefix(player); } + @Override public String getGroupSuffix(String player) { if (!check()) return ""; return perms.getHandler().getGroupSuffix(player); } + @Override public boolean canGroupBuild(String group) { if (!check()) return false; diff --git a/com/nidefawl/Stats/PropertiesFile.java b/com/nidefawl/Stats/PropertiesFile.java index bfbc57a..2513923 100755 --- a/com/nidefawl/Stats/PropertiesFile.java +++ b/com/nidefawl/Stats/PropertiesFile.java @@ -65,11 +65,10 @@ public class PropertiesFile { public boolean getBoolean(String key) { if (map.containsKey(key)) { return Boolean.parseBoolean(map.get(key).value); - } + } return false; } - public void remove(String key) { map.remove(key); } @@ -125,6 +124,7 @@ public class PropertiesFile { fwriter = new FileWriter(file); bwriter = new BufferedWriter(fwriter); SortedSet> results = new TreeSet>(new Comparator>() { + @Override public int compare(Map.Entry a, Map.Entry b) { // int d = a.getValue().compareTo(b.getValue()); int d = a.getKey().compareTo(b.getKey()); diff --git a/com/nidefawl/Stats/Stats.java b/com/nidefawl/Stats/Stats.java index 2db1e6c..4456e82 100755 --- a/com/nidefawl/Stats/Stats.java +++ b/com/nidefawl/Stats/Stats.java @@ -28,10 +28,8 @@ import org.bukkit.event.Event; import org.bukkit.plugin.Plugin; import org.bukkit.plugin.java.JavaPlugin; -import com.nidefawl.Achievements.Achievements; import com.nidefawl.Stats.ItemResolver.hModItemResolver; import com.nidefawl.Stats.ItemResolver.itemResolver; -import com.nidefawl.Stats.ItemResolver.myGeneralItemResolver; import com.nidefawl.Stats.Permissions.GroupUserResolver; import com.nidefawl.Stats.Permissions.NijiPermissionsResolver; import com.nidefawl.Stats.Permissions.PermissionsResolver; @@ -44,12 +42,13 @@ import com.nidefawl.Stats.util.Updater; public class Stats extends JavaPlugin { public final static Logger log = Logger.getLogger("Minecraft"); - public final static double version = 0.7; + public final static double version = 0.8; public final static String logprefix = "[Stats-" + version + "]"; public final static String defaultCategory = "stats"; public boolean enabled = false; public boolean updated = false; protected HashMap stats = new HashMap(); + protected HashMap lastPlayerActivity = new HashMap(); protected itemResolver items = new hModItemResolver("items.txt"); private static PermissionsResolver perms = null; private static StatsPlayerListener playerListener; @@ -175,6 +174,8 @@ public class Stats extends JavaPlugin { rs.close(); if (ps != null) ps.close(); + if (conn != null) + conn.close(); } catch (SQLException ex) { log.log(Level.SEVERE, logprefix + " " + this.getClass().getName() + " SQL exception on close", ex); Messaging.send(admin, StatsSettings.premessage + ex.getMessage()); @@ -448,7 +449,6 @@ public class Stats extends JavaPlugin { } public void convertFlatFiles() { - File dir = new File(StatsSettings.directory); FilenameFilter filter = new FilenameFilter() { public boolean accept(File dir, String name) { return name.endsWith(".txt"); @@ -460,31 +460,29 @@ public class Stats extends JavaPlugin { return name.endsWith(".txt.old"); } }; - String[] files = dir.list(filterOld); + String[] files = getDataFolder().list(filterOld); if (files != null && files.length > 0) { for (int i = 0; i < files.length; i++) { - String location = StatsSettings.directory + File.separator + files[i]; String basename = files[i].substring(0, files[i].lastIndexOf(".")); - File fnew = new File(location); - File fold = new File(StatsSettings.directory + File.separator + basename); + File fnew = new File(getDataFolder(), files[i]); + File fold = new File(getDataFolder(), basename); fnew.renameTo(fold); } } - files = dir.list(filter); + files = getDataFolder().list(filter); if (files == null || files.length == 0) { } int count = 0; PlayerStatSQL ps; for (int i = 0; i < files.length; i++) { - String location = StatsSettings.directory + File.separator + files[i]; - File fold = new File(location); + File fold = new File(getDataFolder(), files[i]); if (!fold.exists()) continue; String basename = files[i].substring(0, files[i].lastIndexOf(".")); ps = new PlayerStatSQL(basename, this); - ps.convertFlatFile(StatsSettings.directory); + ps.convertFlatFile(getDataFolder().getPath()); ps.save(); count++; } @@ -492,20 +490,39 @@ public class Stats extends JavaPlugin { } public Stats() { - StatsSettings.initialize(); - updater = new Updater(); + + } + + public void onEnable() { + getDataFolder().mkdirs(); + File statsDirectory = new File("stats"); + if (statsDirectory.exists() && statsDirectory.isDirectory()) { + File intSettings = new File("stats", "internal.ini"); + if (intSettings.exists()) { + intSettings.delete(); + } + LogInfo("Moving ./stats/ directory to " + getDataFolder().getPath()); + if (!statsDirectory.renameTo(new File(getDataFolder().getPath()))) { + LogError("Moving ./stats/ directory to " + getDataFolder().getPath() + " failed"); + LogError("Please move your files manually and delete the old 'stats' directory. Thanks"); + LogError("Disabling Stats"); + getServer().getPluginManager().disablePlugin(this); + return; + } + } + StatsSettings.load(this); + updater = new Updater(this); System.setProperty("org.sqlite.lib.path", updater.getOSSpecificFolder()); - StatsSQLConnectionManager.getConnection(); try { if (StatsSettings.autoUpdate) { - + updated = updater.checkDist(); updated |= updater.checkAchDist(); - if(updated) { + if (updated) { LogInfo("UPDATE INSTALLED. PLEASE RESTART...."); return; } - + } else { updater.check(); } @@ -513,32 +530,18 @@ public class Stats extends JavaPlugin { } catch (Exception e) { e.printStackTrace(); } - try { - if (StatsSettings.useMySQL) { - Class.forName("com.mysql.jdbc.Driver"); - } else { - Class.forName("org.sqlite.JDBC"); - } - } catch (ClassNotFoundException e) { - LogError("JDBC driver for " + (StatsSettings.useMySQL ? "MySQL" : "SQLite") + " not found. Disabling Stats"); - getServer().getPluginManager().disablePlugin(this); - e.printStackTrace(); - return; - } Connection conn = StatsSQLConnectionManager.getConnection(); - if (conn == null) { - LogError("Could not establish SQL connection. Disabling Stats"); - getServer().getPluginManager().disablePlugin(this); - return; - } else { - try { - if (conn != null) { - conn.close(); - } - } catch (SQLException e) { - e.printStackTrace(); + try { + if (conn == null || conn.isClosed()) { + LogError("Could not establish SQL connection. Disabling Stats"); + getServer().getPluginManager().disablePlugin(this); return; } + } catch (SQLException e) { + LogError("Could not establish SQL connection. Disabling Stats"); + e.printStackTrace(); + getServer().getPluginManager().disablePlugin(this); + return; } if (!checkSchema()) { LogError("Could not create table. Disabling Stats"); @@ -546,17 +549,8 @@ public class Stats extends JavaPlugin { return; } convertFlatFiles(); - } - - public void onEnable() { - if(updated) return; - if (new File("plugins/MyGeneral.jar").exists()) { - Plugin myPlug = this.getServer().getPluginManager().getPlugin("MyGeneral"); - if (myPlug != null) { - LogInfo("Using MyGeneral Item Resolver"); - setItems(new myGeneralItemResolver(myPlug)); - } - } + if (updated) + return; stats = new HashMap(); CreatePermissionResolver(); enabled = true; @@ -570,18 +564,7 @@ public class Stats extends JavaPlugin { load(p); } - getServer().getScheduler().scheduleAsyncRepeatingTask(this, new SaveTask(this), StatsSettings.delay * 20, StatsSettings.delay * 20); - - Plugin ach = this.getServer().getPluginManager().getPlugin("Achievements"); - if(ach!=null) { - if(((Achievements)ach).enabled) { - ((Achievements)ach).Disable(); - } else if(!ach.isEnabled()) { - ach.onEnable(); - } - - ((Achievements)ach).Enable(); - } + getServer().getScheduler().scheduleSyncRepeatingTask(this, new SaveTask(this), StatsSettings.delay * 20, StatsSettings.delay * 20); } public Player playerMatch(String name) { @@ -608,22 +591,19 @@ public class Stats extends JavaPlugin { } public void onDisable() { - saveAll(); - Plugin ach = this.getServer().getPluginManager().getPlugin("Achievements"); - if(ach!=null) { - if(((Achievements)ach).enabled) { - ((Achievements)ach).Disable(); - } + if (enabled) { + saveAll(); + enabled = false; + getServer().getScheduler().cancelTasks(this); + stats = null; + updater.saveInternal(); + StatsSQLConnectionManager.closeConnection(); } - enabled = false; - getServer().getScheduler().cancelTasks(this); - stats = null; - updater.saveInternal(); log.info(logprefix + " " + version + " Plugin Disabled"); } public void initialize() { - getServer().getPluginManager().registerEvent(Event.Type.PLAYER_JOIN, playerListener, Priority.Normal, this); + getServer().getPluginManager().registerEvent(Event.Type.PLAYER_JOIN, playerListener, Priority.Highest, this); getServer().getPluginManager().registerEvent(Event.Type.PLAYER_COMMAND_PREPROCESS, playerListener, Priority.Normal, this); getServer().getPluginManager().registerEvent(Event.Type.PLAYER_QUIT, playerListener, Priority.Normal, this); getServer().getPluginManager().registerEvent(Event.Type.PLAYER_CHAT, playerListener, Priority.Monitor, this); @@ -639,36 +619,36 @@ public class Stats extends JavaPlugin { getServer().getPluginManager().registerEvent(Event.Type.BLOCK_INTERACT, blockListener, Priority.Monitor, this); getServer().getPluginManager().registerEvent(Event.Type.BLOCK_IGNITE, blockListener, Priority.Monitor, this); getServer().getPluginManager().registerEvent(Event.Type.BLOCK_BREAK, blockListener, Priority.Monitor, this); - getServer().getPluginManager().registerEvent(Event.Type.ENTITY_DEATH, entityListener, Priority.Monitor, this); + getServer().getPluginManager().registerEvent(Event.Type.ENTITY_DEATH, entityListener, Priority.Lowest, this); getServer().getPluginManager().registerEvent(Event.Type.ENTITY_DAMAGED, entityListener, Priority.Monitor, this); getServer().getPluginManager().registerEvent(Event.Type.VEHICLE_ENTER, vehicleListener, Priority.Monitor, this); getServer().getPluginManager().registerEvent(Event.Type.VEHICLE_MOVE, vehicleListener, Priority.Monitor, this); } - public void updateStat(Player player, String statType) { - updateStat(player, statType, 1); + public void updateStat(Player player, String statType, boolean resetAfkTimer) { + updateStat(player, statType, 1, resetAfkTimer); } - public void updateStat(Player player, String statType, int num) { - updateStat(player.getName(), defaultCategory, statType, num); + public void updateStat(Player player, String statType, int num, boolean resetAfkTimer) { + updateStat(player.getName(), defaultCategory, statType, num, resetAfkTimer); } - public void updateStat(Player player, String statType, Block block) { - updateStat(player, statType, block, 1); + public void updateStat(Player player, String statType, Block block, boolean resetAfkTimer) { + updateStat(player, statType, block, 1, resetAfkTimer); } - public void updateStat(Player player, String statType, Block block, int num) { + public void updateStat(Player player, String statType, Block block, int num, boolean resetAfkTimer) { if (block.getTypeId() <= 0) return; String blockName = getItems().getItem(block.getTypeId()); - updateStat(player.getName(), statType, blockName, num); + updateStat(player.getName(), statType, blockName, num, resetAfkTimer); } - public void updateStat(Player player, String category, String key, int val) { - updateStat(player.getName(), category, key, val); + public void updateStat(Player player, String category, String key, int val, boolean resetAfkTimer) { + updateStat(player.getName(), category, key, val, resetAfkTimer); } - public void updateStat(String player, String category, String key, int val) { + public void updateStat(String player, String category, String key, int val, boolean resetAfkTimer) { if (!enabled) return; if (player == null || player.length() < 1) { @@ -683,30 +663,13 @@ public class Stats extends JavaPlugin { if (cat == null) cat = ps.newCategory(category); cat.add(key, val); + if (resetAfkTimer) + ps.setLastUpdate(); if (StatsSettings.debugOutput) log.info(logprefix + " [DEBUG]: adding " + val + " to " + category + "/" + key + " of " + player); } - public void updateStatUnsafe(String player, String category, String key, int val) { - if (!enabled) - return; - if (player == null || player.length() < 1) { - log.log(Level.SEVERE, logprefix + " updateStat got empty player for [" + category + "] [" + key + "] [" + val + "]"); - return; - } - - PlayerStat ps = stats.get(player); - if (ps == null) - return; - Category cat = ps.get(category); - if (cat == null) - cat = ps.newCategory(category); - cat.addUnsafe(key, val); - if (StatsSettings.debugOutput) - log.info(logprefix + " [DEBUG]: adding " + val + " to " + category + "/" + key + " of " + player + " without touching modifed flag"); - } - - protected void setStat(String player, String category, String key, int val) { + public void setStat(String player, String category, String key, int val) { PlayerStat ps = stats.get(player); if (ps == null) return; @@ -867,17 +830,36 @@ public class Stats extends JavaPlugin { } } - private void saveAll() { + public boolean isAfk(Player p) { + if (!stats.containsKey(p.getName())) + return false; + return stats.get(p.getName()).isAfk(); + } + + private synchronized void saveAll() { if (StatsSettings.debugOutput) log.info("Stats debug: saving " + stats.size() + " players stats"); + try { + Connection conn = StatsSQLConnectionManager.getConnection(); + if (conn == null) + return; + conn.setAutoCommit(false); + } catch (SQLException e) { + e.printStackTrace(); + } for (PlayerStat stat : stats.values()) { if (stat == null || playerMatch(stat.getName()) == null) { stat.unload = true; continue; } - updateStat(stat.getName(), defaultCategory, "playedfor", (int) StatsSettings.delay); - stat.save(); + if (StatsSettings.afkTimer > 0 && !stat.isAfk()) { + updateStat(stat.getName(), defaultCategory, "playedfor", (int) StatsSettings.delay, false); + } else if (StatsSettings.debugOutput) { + log.info("Stats debug: not updating playedfor for afk player " + stat.getName()); + } + stat.save(false); } + StatsSQLConnectionManager.closeConnection(); for (PlayerStat stat : stats.values()) { if (!stat.unload) continue; @@ -893,11 +875,7 @@ public class Stats extends JavaPlugin { public itemResolver getItems() { if (items == null) { - Plugin myPlug = this.getServer().getPluginManager().getPlugin("MyGeneral"); - if (myPlug != null) { - setItems(new myGeneralItemResolver(myPlug)); - } else - setItems(new hModItemResolver("items.txt")); + setItems(new hModItemResolver("items.txt")); } return items; } @@ -906,7 +884,7 @@ public class Stats extends JavaPlugin { int lastLog = get(player.getName(), defaultCategory, "lastlogin"); int now = (int) (System.currentTimeMillis() / 1000L); if (now - lastLog > StatsSettings.loginRateLimit) { - updateStat(player, "login"); + updateStat(player, "login", true); } setStat(player.getName(), defaultCategory, "lastlogin", now); } @@ -930,16 +908,21 @@ public class Stats extends JavaPlugin { if (vhc instanceof org.bukkit.entity.Boat) { if (now - ps.getLastBoatEnter() > 60) { - updateStat(player, "boat", "enter", 1); + updateStat(player, "boat", "enter", 1, true); ps.setLastBoatEnter(now); } } else if (vhc instanceof org.bukkit.entity.Minecart) { if (now - ps.getLastMinecartEnter() > 60) { - updateStat(player, "minecart", "enter", 1); + updateStat(player, "minecart", "enter", 1, true); ps.setLastMinecartEnter(now); } } } + public void onLoad() { + // TODO Auto-generated method stub + + } + } \ No newline at end of file diff --git a/com/nidefawl/Stats/StatsBlockListener.java b/com/nidefawl/Stats/StatsBlockListener.java index bec6599..deaf1f3 100755 --- a/com/nidefawl/Stats/StatsBlockListener.java +++ b/com/nidefawl/Stats/StatsBlockListener.java @@ -30,7 +30,7 @@ public class StatsBlockListener extends BlockListener { * @param event * Relevant event details */ - @Override + @Override public void onBlockDamage(BlockDamageEvent event) { } @@ -40,8 +40,8 @@ public class StatsBlockListener extends BlockListener { * @param event * Relevant event details */ - @Override - public void onSignChange(SignChangeEvent event) { + @Override + public void onSignChange(SignChangeEvent event) { } /** @@ -50,8 +50,8 @@ public class StatsBlockListener extends BlockListener { * @param event * Relevant event details */ - @Override - public void onBlockBurn(BlockBurnEvent event) { + @Override + public void onBlockBurn(BlockBurnEvent event) { } /** @@ -60,21 +60,21 @@ public class StatsBlockListener extends BlockListener { * @param event * Relevant event details */ - @Override - public void onBlockBreak(BlockBreakEvent event) { + @Override + public void onBlockBreak(BlockBreakEvent event) { if (event.isCancelled()) return; if (!(event.getPlayer() instanceof Player)) return; - plugin.updateStat(event.getPlayer(), "blockdestroy", event.getBlock()); - plugin.updateStat(event.getPlayer(), "totalblockdestroy"); + plugin.updateStat(event.getPlayer(), "blockdestroy", event.getBlock(), true); + plugin.updateStat(event.getPlayer(), "totalblockdestroy", true); } /** * Called when we try to place a block, to see if we can build it */ - @Override - public void onBlockCanBuild(BlockCanBuildEvent event) { + @Override + public void onBlockCanBuild(BlockCanBuildEvent event) { } /** @@ -83,8 +83,8 @@ public class StatsBlockListener extends BlockListener { * @param event * Relevant event details */ - @Override - public void onBlockFlow(BlockFromToEvent event) { + @Override + public void onBlockFlow(BlockFromToEvent event) { } /** @@ -93,13 +93,13 @@ public class StatsBlockListener extends BlockListener { * @param event * Relevant event details */ - @Override - public void onBlockIgnite(BlockIgniteEvent event) { + @Override + public void onBlockIgnite(BlockIgniteEvent event) { if (event.isCancelled()) return; if (!(event.getPlayer() instanceof Player)) return; - plugin.updateStat(event.getPlayer(), "lighter"); + plugin.updateStat(event.getPlayer(), "lighter", true); } @@ -109,7 +109,7 @@ public class StatsBlockListener extends BlockListener { * @param event * Relevant event details */ - @Override + @Override public void onBlockPhysics(BlockPhysicsEvent event) { } @@ -119,14 +119,14 @@ public class StatsBlockListener extends BlockListener { * @param event * Relevant event details */ - @Override + @Override public void onBlockPlace(BlockPlaceEvent event) { if (event.isCancelled()) return; if (!(event.getPlayer() instanceof Player)) return; - plugin.updateStat(event.getPlayer(), "blockcreate", event.getBlockPlaced()); - plugin.updateStat(event.getPlayer(), "totalblockcreate"); + plugin.updateStat(event.getPlayer(), "blockcreate", event.getBlockPlaced(), true); + plugin.updateStat(event.getPlayer(), "totalblockcreate", true); } /** @@ -135,14 +135,14 @@ public class StatsBlockListener extends BlockListener { * @param event * Relevant event details */ - @Override + @Override public void onBlockInteract(BlockInteractEvent event) { if (event.isCancelled()) return; if (!event.isPlayer()) return; if (event.getBlock().getType() == Material.CHEST) { - plugin.updateStat((Player) event.getEntity(), "openchest"); + plugin.updateStat((Player) event.getEntity(), "openchest", true); } } @@ -152,7 +152,7 @@ public class StatsBlockListener extends BlockListener { * @param event * Relevant event details */ - @Override + @Override public void onBlockRightClick(BlockRightClickEvent event) { } @@ -164,8 +164,8 @@ public class StatsBlockListener extends BlockListener { * @param event * Relevant event details */ - @Override - public void onBlockRedstoneChange(BlockRedstoneEvent event) { + @Override + public void onBlockRedstoneChange(BlockRedstoneEvent event) { } /** diff --git a/com/nidefawl/Stats/StatsEntityListener.java b/com/nidefawl/Stats/StatsEntityListener.java index 565a63a..d21af65 100755 --- a/com/nidefawl/Stats/StatsEntityListener.java +++ b/com/nidefawl/Stats/StatsEntityListener.java @@ -28,7 +28,7 @@ public class StatsEntityListener extends EntityListener { ArrayList removeThat = new ArrayList(); for (Entity ee : entsKilledByEnt.keySet()) { // cycle through Ents that // dealt damage - + if (ee == null) continue; @@ -46,7 +46,7 @@ public class StatsEntityListener extends EntityListener { break; } } - if(res!=null) { + if (res != null) { if (setNull) { entsKilledByEnt.get(res).remove(entity); if (entsKilledByEnt.get(res).size() == 0) @@ -118,25 +118,27 @@ public class StatsEntityListener extends EntityListener { entsKilledByEnt.put(damager, ents); } } + public String getNiceDamageString(String cause) { - if(cause.equals("fire")) + if (cause.equals("fire")) return "burned to death"; - if(cause.equals("fall")) + if (cause.equals("fall")) return "died by falling down a cliff"; - if(cause.equals("drowning")) + if (cause.equals("drowning")) return "died by drowning"; - if(cause.equals("entityexplosion")||cause.equals("explosion")) + if (cause.equals("entityexplosion") || cause.equals("explosion")) return "was hit by an explosion"; - if(cause.equals("lava")) + if (cause.equals("lava")) return "had a bath in lava"; - if(cause.equals("suffocation")) + if (cause.equals("suffocation")) return "suffocated"; - if(cause.equals("entityattack")) + if (cause.equals("entityattack")) return "was hunt down by some creature"; - if(cause.equals("unknown")) + if (cause.equals("unknown")) return "was killed by Herobrine"; - return "was killed by "+cause.toLowerCase(); + return "was killed by " + cause.toLowerCase(); } + private void checkOtherDamage(EntityDamageEvent event) { if (event.getEntity() instanceof Player) { String cause = "unknown"; @@ -176,8 +178,8 @@ public class StatsEntityListener extends EntityListener { default: cause = "unknown"; } - plugin.updateStat((Player) event.getEntity(), "damagetaken", cause, event.getDamage()); - plugin.updateStat((Player) event.getEntity(), "damagetaken", "total", event.getDamage()); + plugin.updateStat((Player) event.getEntity(), "damagetaken", cause, event.getDamage(), false); + plugin.updateStat((Player) event.getEntity(), "damagetaken", "total", event.getDamage(), false); if (event.getDamage() >= ((Player) event.getEntity()).getHealth() && plugin.stats.keySet().contains(((Player) event.getEntity()).getName())) { otherDeathCauses.put((Player) event.getEntity(), cause); } @@ -185,6 +187,7 @@ public class StatsEntityListener extends EntityListener { } } + public void sendEntList(Player player) { int LoadedEnts = 0; int nullEnts = 0; @@ -203,7 +206,7 @@ public class StatsEntityListener extends EntityListener { if (ee instanceof Player) entsList += ((Player) ee).getName() + ", "; else - entsList += StatsEntityListener.EntToString(ee) + " (" + ee.getEntityId() + ","+((LivingEntity)ee).getHealth()+"), "; + entsList += StatsEntityListener.EntToString(ee) + " (" + ee.getEntityId() + "," + ((LivingEntity) ee).getHealth() + "), "; } if (entsList.length() > 2) @@ -224,14 +227,14 @@ public class StatsEntityListener extends EntityListener { String typeName = null; if ((damager instanceof Player) && (entity instanceof Player)) { typeName = "Player"; - if(((LivingEntity) entity).getHealth()>0 ) { - StatsPlayerDamagedPlayerEvent damageevent = new StatsPlayerDamagedPlayerEvent((Player)damager,(Player)entity,amount); + if (((LivingEntity) entity).getHealth() > 0) { + StatsPlayerDamagedPlayerEvent damageevent = new StatsPlayerDamagedPlayerEvent((Player) damager, (Player) entity, amount); plugin.getServer().getPluginManager().callEvent(damageevent); - if(damageevent.isCancelled()) { + if (damageevent.isCancelled()) { return false; } - plugin.updateStat((Player) damager, "damagedealt", typeName, amount); - plugin.updateStat((Player) entity, "damagetaken", typeName, amount); + plugin.updateStat((Player) damager, "damagedealt", typeName, amount, false); + plugin.updateStat((Player) entity, "damagetaken", typeName, amount, false); if (amount >= ((LivingEntity) entity).getHealth() && plugin.stats.keySet().contains(((Player) damager).getName())) { if (getEntFromEnt(entity, false) == null) saveEntToEnt(damager, entity); @@ -242,13 +245,13 @@ public class StatsEntityListener extends EntityListener { if (damager instanceof Player) { typeName = EntToString(entity); if (!(entity instanceof LivingEntity)) { - plugin.updateStat((Player) damager, "damagedealt", typeName, amount); - plugin.updateStat((Player) damager, "damagedealt", "total", amount); + plugin.updateStat((Player) damager, "damagedealt", typeName, amount, false); + plugin.updateStat((Player) damager, "damagedealt", "total", amount, false); return true; } else { if (((LivingEntity) entity).getHealth() > 0) { - plugin.updateStat((Player) damager, "damagedealt", typeName, amount); - plugin.updateStat((Player) damager, "damagedealt", "total", amount); + plugin.updateStat((Player) damager, "damagedealt", typeName, amount, false); + plugin.updateStat((Player) damager, "damagedealt", "total", amount, false); if (amount >= ((LivingEntity) entity).getHealth() && plugin.stats.keySet().contains(((Player) damager).getName())) { if (getEntFromEnt(entity, false) == null) saveEntToEnt(damager, entity); @@ -256,13 +259,12 @@ public class StatsEntityListener extends EntityListener { } } - } if (entity instanceof Player) { typeName = EntToString(damager); if (((LivingEntity) entity).getHealth() > 0) { - plugin.updateStat((Player) entity, "damagetaken", typeName, amount); - plugin.updateStat((Player) entity, "damagetaken", "total", amount); + plugin.updateStat((Player) entity, "damagetaken", typeName, amount, false); + plugin.updateStat((Player) entity, "damagetaken", "total", amount, false); if (amount >= ((Player) entity).getHealth() && plugin.stats.keySet().contains(((Player) entity).getName())) { if (getEntFromEnt(entity, false) == null) saveEntToEnt(damager, entity); @@ -276,7 +278,7 @@ public class StatsEntityListener extends EntityListener { this.plugin = plugin; } - @Override + @Override public void onEntityDeath(EntityDeathEvent event) { Entity e = getEntFromEnt(event.getEntity(), true); if (event.getEntity() instanceof Player) { @@ -286,44 +288,46 @@ public class StatsEntityListener extends EntityListener { if (ps == null) return; ps.skipTeleports = 1; - plugin.updateStat(p, "deaths", "total", 1); + plugin.updateStat(p, "deaths", "total", 1, false); String otherReason = otherDeathCauses.get(p); otherReason = otherReason != null ? otherReason : "unknown"; if (StatsSettings.deathNotifying) { + String name = p.getDisplayName(); + String message = name + " &4died"; if (e instanceof Player) { - - plugin.updateStat(((Player) e), "kills", "total", 1); - plugin.updateStat(((Player) e), "kills", "player", 1); - Messaging.broadcast(plugin.getServer(), p.getName() + " &4was killed by &8" + ((Player) e).getName()); + plugin.updateStat(((Player) e), "kills", "total", 1, false); + plugin.updateStat(((Player) e), "kills", "player", 1, false); + message = name + " &4was killed by &8" + ((Player) e).getDisplayName(); } else if (e instanceof LivingEntity) { - Messaging.broadcast(plugin.getServer(), p.getName() + " &4was killed by &8" + EntToString(e)); + message = name + " &4was killed by &8" + EntToString(e); } else if (otherReason != null) { - Messaging.broadcast(plugin.getServer(), p.getName() + " &4"+getNiceDamageString(otherReason)); + message = name + " &4" + getNiceDamageString(otherReason); } else { - Messaging.broadcast(plugin.getServer(), p.getName() + " &4died"); + message = name + " &4died"; } + Messaging.worldbroadcast(event.getEntity().getWorld(), message); } if (e instanceof LivingEntity) { - plugin.updateStat(p, "deaths", EntToString(e), 1); - if(e instanceof Player) { - StatsPlayerDeathByPlayerEvent ev = new StatsPlayerDeathByPlayerEvent((Player)event.getEntity(),(Player)e); + plugin.updateStat(p, "deaths", EntToString(e), 1, false); + if (e instanceof Player) { + StatsPlayerDeathByPlayerEvent ev = new StatsPlayerDeathByPlayerEvent(event, (Player) event.getEntity(), (Player) e); plugin.getServer().getPluginManager().callEvent(ev); - } else { - StatsPlayerDeathByEntityEvent ev = new StatsPlayerDeathByEntityEvent((Player)event.getEntity(),e); + } else { + StatsPlayerDeathByEntityEvent ev = new StatsPlayerDeathByEntityEvent(event, (Player) event.getEntity(), e); plugin.getServer().getPluginManager().callEvent(ev); } } else if (otherReason != null) { - plugin.updateStat(p, "deaths", otherReason, 1); - StatsPlayerDeathByOtherEvent ev = new StatsPlayerDeathByOtherEvent((Player)event.getEntity(),otherReason); + plugin.updateStat(p, "deaths", otherReason, 1, false); + StatsPlayerDeathByOtherEvent ev = new StatsPlayerDeathByOtherEvent(event, (Player) event.getEntity(), otherReason); plugin.getServer().getPluginManager().callEvent(ev); } otherDeathCauses.remove(p); } else if (event.getEntity() instanceof LivingEntity) { if (e instanceof Player) { - plugin.updateStat((Player) e, "kills", "total", 1); - plugin.updateStat((Player) e, "kills", EntToString(event.getEntity()), 1); - StatsMobDeathByPlayerEvent ev = new StatsMobDeathByPlayerEvent((Player)e,event.getEntity()); + plugin.updateStat((Player) e, "kills", "total", 1, false); + plugin.updateStat((Player) e, "kills", EntToString(event.getEntity()), 1, false); + StatsMobDeathByPlayerEvent ev = new StatsMobDeathByPlayerEvent(event, (Player) e, event.getEntity()); plugin.getServer().getPluginManager().callEvent(ev); } entsKilledByEnt.remove(e); @@ -331,35 +335,31 @@ public class StatsEntityListener extends EntityListener { entsKilledByEnt.remove(event.getEntity()); } - - - @Override + @Override public void onEntityCombust(EntityCombustEvent event) { } - @Override + @Override public void onEntityDamage(EntityDamageEvent event) { if (event.isCancelled()) return; - if(event instanceof EntityDamageByProjectileEvent) { - if(!checkEntDamage(event.getEntity(), ((EntityDamageByProjectileEvent)event).getDamager(), event.getDamage())) { + if (event instanceof EntityDamageByProjectileEvent) { + if (!checkEntDamage(event.getEntity(), ((EntityDamageByProjectileEvent) event).getDamager(), event.getDamage())) { event.setCancelled(true); - return; } - } else if(event instanceof EntityDamageByEntityEvent) { - if(!checkEntDamage(((EntityDamageByEntityEvent)event).getEntity(), ((EntityDamageByEntityEvent)event).getDamager(), event.getDamage())) { + } else if (event instanceof EntityDamageByEntityEvent) { + if (!checkEntDamage(((EntityDamageByEntityEvent) event).getEntity(), ((EntityDamageByEntityEvent) event).getDamager(), event.getDamage())) { event.setCancelled(true); - return; } - } else if(event instanceof EntityDamageByBlockEvent) { - checkOtherDamage((EntityDamageByBlockEvent)event); + } else if (event instanceof EntityDamageByBlockEvent) { + checkOtherDamage((EntityDamageByBlockEvent) event); } else { checkOtherDamage(event); } } - @Override + @Override public void onEntityExplode(EntityExplodeEvent event) { } diff --git a/com/nidefawl/Stats/StatsPlayerListener.java b/com/nidefawl/Stats/StatsPlayerListener.java index 9756005..9bdcc43 100755 --- a/com/nidefawl/Stats/StatsPlayerListener.java +++ b/com/nidefawl/Stats/StatsPlayerListener.java @@ -19,7 +19,7 @@ public class StatsPlayerListener extends PlayerListener { * @param event * Relevant event details */ - @Override + @Override public void onPlayerQuit(PlayerEvent event) { plugin.logout(event.getPlayer().getName()); plugin.unload(event.getPlayer().getName()); @@ -32,12 +32,12 @@ public class StatsPlayerListener extends PlayerListener { * @param event * Relevant event details */ - @Override + @Override public void onPlayerChat(PlayerChatEvent event) { if (event.isCancelled()) return; - plugin.updateStat(event.getPlayer(), "chat"); - plugin.updateStat(event.getPlayer(), "chatletters", event.getMessage().length()); + plugin.updateStat(event.getPlayer(), "chat", true); + plugin.updateStat(event.getPlayer(), "chatletters", event.getMessage().length(), true); } /** @@ -46,11 +46,11 @@ public class StatsPlayerListener extends PlayerListener { * @param event * Relevant event details */ - @Override - public void onPlayerCommandPreprocess(PlayerChatEvent event) { + @Override + public void onPlayerCommandPreprocess(PlayerChatEvent event) { if (event.isCancelled()) return; - plugin.updateStat(event.getPlayer(), "command"); + plugin.updateStat(event.getPlayer(), "command", true); } /** @@ -59,7 +59,7 @@ public class StatsPlayerListener extends PlayerListener { * @param event * Relevant event details */ - @Override + @Override public void onPlayerMove(PlayerMoveEvent event) { if (event.isCancelled()) return; @@ -73,7 +73,7 @@ public class StatsPlayerListener extends PlayerListener { * @param event * Relevant event details */ - @Override + @Override public void onPlayerTeleport(PlayerMoveEvent event) { if (event.isCancelled()) return; @@ -82,11 +82,11 @@ public class StatsPlayerListener extends PlayerListener { PlayerStat ps = plugin.stats.get(event.getPlayer().getName()); if (ps == null) return; - if (ps.skipTeleports>0) { + if (ps.skipTeleports > 0) { ps.skipTeleports--; return; } - plugin.updateStat(event.getPlayer(), "teleport"); + plugin.updateStat(event.getPlayer(), "teleport", false); } /** @@ -95,24 +95,24 @@ public class StatsPlayerListener extends PlayerListener { * @param event * Relevant event details */ - @Override + @Override public void onPlayerItem(PlayerItemEvent event) { - if (event.isCancelled()||event.getBlockFace()==null) + if (event.isCancelled() || event.getBlockFace() == null) return; - switch (event.getMaterial()) { - case LAVA_BUCKET: - case WATER_BUCKET: - case SIGN: - case BUCKET: - case CAKE_BLOCK: - case FLINT_AND_STEEL: - case TNT: - plugin.updateStat(event.getPlayer(), "itemuse", plugin.getItems().getItem(event.getMaterial().getId()), 1); - break; - default: - break; - } - + switch (event.getMaterial()) { + case LAVA_BUCKET: + case WATER_BUCKET: + case SIGN: + case BUCKET: + case CAKE_BLOCK: + case FLINT_AND_STEEL: + case TNT: + plugin.updateStat(event.getPlayer(), "itemuse", plugin.getItems().getItem(event.getMaterial().getId()), 1, false); + break; + default: + break; + } + } /** @@ -121,7 +121,7 @@ public class StatsPlayerListener extends PlayerListener { * @param event * Relevant event details */ - @Override + @Override public void onPlayerJoin(PlayerEvent event) { plugin.load(event.getPlayer()); plugin.login(event.getPlayer()); @@ -133,10 +133,10 @@ public class StatsPlayerListener extends PlayerListener { * @param event * Relevant event details */ - @Override + @Override public void onPlayerAnimation(PlayerAnimationEvent event) { if (event.getAnimationType() == PlayerAnimationType.ARM_SWING && event.getPlayer().getItemInHand().getType() == Material.AIR) { - plugin.updateStat(event.getPlayer(), "armswing"); + plugin.updateStat(event.getPlayer(), "armswing", false); } } @@ -146,9 +146,9 @@ public class StatsPlayerListener extends PlayerListener { * @param event * Relevant event details */ - @Override + @Override public void onPlayerEggThrow(PlayerEggThrowEvent event) { - plugin.updateStat(event.getPlayer(), "eggthrow"); + plugin.updateStat(event.getPlayer(), "eggthrow", false); } /** @@ -157,14 +157,18 @@ public class StatsPlayerListener extends PlayerListener { * @param event * Relevant event details */ - @Override + @Override public void onPlayerDropItem(PlayerDropItemEvent event) { - if(event.getItemDrop()==null) return; + if (event.isCancelled()) + return; + if (event.getItemDrop() == null) + return; if (event.getItemDrop() instanceof CraftItem) { - if(((CraftItem)event.getItemDrop()).getItemStack() == null) return; - plugin.updateStat(event.getPlayer(), "itemdrop", plugin.getItems().getItem(((CraftItem)event.getItemDrop()).getItemStack().getTypeId()), 1); + if (((CraftItem) event.getItemDrop()).getItemStack() == null) + return; + plugin.updateStat(event.getPlayer(), "itemdrop", plugin.getItems().getItem(((CraftItem) event.getItemDrop()).getItemStack().getTypeId()), 1, false); } - + } /** @@ -173,11 +177,11 @@ public class StatsPlayerListener extends PlayerListener { * @param event * Relevant event details */ - @Override + @Override public void onPlayerKick(PlayerKickEvent event) { if (event.isCancelled()) return; - plugin.updateStat(event.getPlayer(), "kick"); + plugin.updateStat(event.getPlayer(), "kick", false); } /** @@ -186,9 +190,9 @@ public class StatsPlayerListener extends PlayerListener { * @param event * Relevant event details */ - @Override + @Override public void onPlayerRespawn(PlayerRespawnEvent event) { - plugin.updateStat(event.getPlayer(), "respawn"); + plugin.updateStat(event.getPlayer(), "respawn", false); } /** @@ -197,7 +201,7 @@ public class StatsPlayerListener extends PlayerListener { * @param event * Relevant event details */ - @Override + @Override public void onPlayerLogin(PlayerLoginEvent event) { } @@ -207,12 +211,16 @@ public class StatsPlayerListener extends PlayerListener { * @param event * Relevant event details */ - @Override + @Override public void onPlayerPickupItem(PlayerPickupItemEvent event) { - if(event.getItem()==null) return; + if (event.isCancelled()) + return; + if (event.getItem() == null) + return; if (event.getItem() instanceof CraftItem) { - if(((CraftItem)event.getItem()).getItemStack() == null) return; - plugin.updateStat(event.getPlayer(), "itempickup", plugin.getItems().getItem(((CraftItem)event.getItem()).getItemStack().getTypeId()), 1); + if (((CraftItem) event.getItem()).getItemStack() == null) + return; + plugin.updateStat(event.getPlayer(), "itempickup", plugin.getItems().getItem(((CraftItem) event.getItem()).getItemStack().getTypeId()), 1, false); } } @@ -222,7 +230,7 @@ public class StatsPlayerListener extends PlayerListener { * @param event * Relevant event details */ - @Override + @Override public void onInventoryOpen(PlayerInventoryEvent event) { } @@ -232,7 +240,7 @@ public class StatsPlayerListener extends PlayerListener { * @param event * Relevant event details */ - @Override + @Override public void onItemHeldChange(PlayerItemHeldEvent event) { } @@ -242,7 +250,7 @@ public class StatsPlayerListener extends PlayerListener { * @param event * Relevant event details */ - @Override + @Override public void onPlayerToggleSneak(PlayerToggleSneakEvent event) { } } diff --git a/com/nidefawl/Stats/StatsSettings.java b/com/nidefawl/Stats/StatsSettings.java index e442d1f..659de20 100755 --- a/com/nidefawl/Stats/StatsSettings.java +++ b/com/nidefawl/Stats/StatsSettings.java @@ -4,14 +4,12 @@ import java.io.File; import org.bukkit.ChatColor; - - public class StatsSettings { - public static String directory = "stats"; public static String liteDb; public static int loginRateLimit = 3600; public static long delay = 30; + public static long afkTimer = 300; public static String dbUrl; public static String dbUsername; public static String dbPassword; @@ -23,47 +21,30 @@ public class StatsSettings { public static String libPath; public static String premessage = ChatColor.YELLOW + "[Stats]" + ChatColor.WHITE; - public static void initialize() { - if (!new File(directory).exists()) { - try { - (new File(directory)).mkdir(); - } catch (Exception ex) { - Stats.LogError("Unable to create " + directory + " directory"); - } - Stats.LogInfo("directory '" + directory + "' created!"); - Stats.LogInfo("make sure to check stats/stats.properties and mysql.properties "); - } - liteDb = "jdbc:sqlite:" + directory + File.separator + "stats.db"; - loadPropertiesFiles(); - } - - public static void onDisable() { - } + public static void load(Stats plugin) { - private static void loadPropertiesFiles() { - - PropertiesFile properties = new PropertiesFile(new File(directory + File.separator + "stats.properties")); - delay = (long) properties.getInt("stats-save-delay", 30, "delay between automatic saving (seconds)"); + PropertiesFile properties = new PropertiesFile(new File(plugin.getDataFolder(), "stats.properties")); + liteDb = "jdbc:sqlite:" + plugin.getDataFolder().getPath() + File.separator + "stats.db"; + delay = properties.getInt("stats-save-delay", 30, "delay between automatic saving (seconds)"); loginRateLimit = properties.getInt("stats-login-delay", 3600, "limit between login-count increases"); - + afkTimer = properties.getInt("stats-afk-delay", 300, " (seconds) If there is no player-activity in this time playedfor does not get updated. Set to 0 to disable."); + boolean useSQL = properties.getBoolean("stats-use-sql"); properties.remove("stats-use-sql"); - String dataSource = properties.getString("stats-datasource", useSQL?"mysql":"sqlite", "dropped flatfile support"); - if(dataSource.toLowerCase().equals("mysql")) { - useMySQL = true; + String dataSource = properties.getString("stats-datasource", useSQL ? "mysql" : "sqlite", "dropped flatfile support"); + if (dataSource.toLowerCase().equals("mysql")) { + useMySQL = true; } else { - useMySQL = false; + useMySQL = false; } - + premessage = properties.getString("stats-message-prefix", "&e[Stats]&f", ""); debugOutput = properties.getBoolean("stats-debug", false, ""); deathNotifying = properties.getBoolean("stats-deathnotify", true, ""); autoUpdate = properties.getBoolean("stats-autoUpdate", true, ""); - properties.save(); if (premessage.length() > 0) if (premessage.charAt(premessage.length() - 1) != ' ') premessage += " "; - properties = new PropertiesFile(new File("mysql.properties")); dbUrl = properties.getString("sql-db", "jdbc:mysql://localhost:3306/minecraft", ""); dbUsername = properties.getString("sql-user", "root", ""); dbPassword = properties.getString("sql-pass", "root", ""); diff --git a/com/nidefawl/Stats/StatsVehicleListener.java b/com/nidefawl/Stats/StatsVehicleListener.java index 1c1d5d8..59008dd 100755 --- a/com/nidefawl/Stats/StatsVehicleListener.java +++ b/com/nidefawl/Stats/StatsVehicleListener.java @@ -21,7 +21,7 @@ public class StatsVehicleListener extends VehicleListener { * * @param event */ - @Override + @Override public void onVehicleCreate(VehicleCreateEvent event) { } @@ -30,7 +30,7 @@ public class StatsVehicleListener extends VehicleListener { * * @param event */ - @Override + @Override public void onVehicleDamage(VehicleDamageEvent event) { } @@ -39,7 +39,7 @@ public class StatsVehicleListener extends VehicleListener { * * @param event */ - @Override + @Override public void onVehicleBlockCollision(VehicleBlockCollisionEvent event) { } @@ -48,7 +48,7 @@ public class StatsVehicleListener extends VehicleListener { * * @param event */ - @Override + @Override public void onVehicleEntityCollision(VehicleEntityCollisionEvent event) { } @@ -57,7 +57,7 @@ public class StatsVehicleListener extends VehicleListener { * * @param event */ - @Override + @Override public void onVehicleEnter(VehicleEnterEvent event) { if (!(event.getEntered() instanceof Player)) return; @@ -69,7 +69,7 @@ public class StatsVehicleListener extends VehicleListener { * * @param event */ - @Override + @Override public void onVehicleExit(VehicleExitEvent event) { } @@ -78,7 +78,7 @@ public class StatsVehicleListener extends VehicleListener { * * @param event */ - @Override + @Override public void onVehicleMove(VehicleMoveEvent event) { if (event.getVehicle() == null) return; diff --git a/com/nidefawl/Stats/datasource/Category.java b/com/nidefawl/Stats/datasource/Category.java index 9921763..ffce6d1 100755 --- a/com/nidefawl/Stats/datasource/Category.java +++ b/com/nidefawl/Stats/datasource/Category.java @@ -5,7 +5,6 @@ import java.util.Iterator; import java.util.Set; import java.util.logging.Logger; - public class Category { public boolean modified = false; protected HashMap stats; @@ -44,15 +43,6 @@ public class Category { Integer oldval = stats.get(name); put(name, value + oldval); } - - public void addUnsafe(String name, Integer value) { - if (!stats.containsKey(name)) { - put(name, value); - return; - } - Integer oldval = stats.get(name); - stats.put(name, value+oldval); - } Iterator iterator() { return stats.keySet().iterator(); diff --git a/com/nidefawl/Stats/datasource/PlayerStat.java b/com/nidefawl/Stats/datasource/PlayerStat.java index 01d78db..cbc5547 100755 --- a/com/nidefawl/Stats/datasource/PlayerStat.java +++ b/com/nidefawl/Stats/datasource/PlayerStat.java @@ -6,6 +6,7 @@ import java.util.Set; import java.util.logging.Logger; import org.bukkit.block.Block; +import com.nidefawl.Stats.StatsSettings; public abstract class PlayerStat { private String name; @@ -16,6 +17,7 @@ public abstract class PlayerStat { private double boatDistance = 0; private int lastBoatEnter = 0; private int lastMinecartEnter = 0; + private long lastUpdate = System.currentTimeMillis(); public int skipTeleports = 0; Block lastFace = null; public boolean unload = false; @@ -51,8 +53,7 @@ public abstract class PlayerStat { cat.put(key, val); } - protected void copy(PlayerStat from) - { + protected void copy(PlayerStat from) { this.name = from.name; this.categories = new HashMap(from.categories); } @@ -70,37 +71,43 @@ public abstract class PlayerStat { public abstract void save(); + public abstract void save(boolean close); + public abstract void load(); public void UpdateMove(double distance) { moveDistance += distance; - if(moveDistance>10.0F) { + if (moveDistance > 10.0F) { Category cat = categories.get("stats"); if (cat == null) cat = newCategory("stats"); cat.add("move", 10); moveDistance = 0; + setLastUpdate(); } } + public void UpdateMinecartMove(double distance) { minecartDistance += distance; - if(minecartDistance>=10.0F) { + if (minecartDistance >= 10.0F) { Category cat = categories.get("minecart"); if (cat == null) cat = newCategory("minecart"); cat.add("move", 10); minecartDistance = 0; + setLastUpdate(); } } public void UpdateBoatMove(double distance) { boatDistance += distance; - if(boatDistance>=10.0F) { + if (boatDistance >= 10.0F) { Category cat = categories.get("boat"); if (cat == null) cat = newCategory("boat"); cat.add("move", 10); boatDistance = 0; + setLastUpdate(); } } @@ -121,7 +128,8 @@ public abstract class PlayerStat { } /** - * @param name the name to set + * @param name + * the name to set */ public void setName(String name) { this.name = name; @@ -133,4 +141,20 @@ public abstract class PlayerStat { public String getName() { return name; } + + /** + * @param lastUpdate + * the lastUpdate to set + */ + public void setLastUpdate() { + this.lastUpdate = System.currentTimeMillis(); + + } + + /** + * @return the lastUpdate + */ + public boolean isAfk() { + return System.currentTimeMillis() - lastUpdate > StatsSettings.afkTimer * 1000; + } } \ No newline at end of file diff --git a/com/nidefawl/Stats/datasource/PlayerStatFile.java b/com/nidefawl/Stats/datasource/PlayerStatFile.java index 07a4f61..c0b0545 100755 --- a/com/nidefawl/Stats/datasource/PlayerStatFile.java +++ b/com/nidefawl/Stats/datasource/PlayerStatFile.java @@ -19,9 +19,11 @@ public class PlayerStatFile extends PlayerStat { this.directory = directory; } + @Override public void save() { } + @Override public void load() { String location = directory + File.separator + getName() + ".txt"; @@ -51,4 +53,8 @@ public class PlayerStatFile extends PlayerStat { return; } } + + @Override + public void save(boolean close) { + } } \ No newline at end of file diff --git a/com/nidefawl/Stats/datasource/PlayerStatSQL.java b/com/nidefawl/Stats/datasource/PlayerStatSQL.java index f969303..9c7d1d2 100755 --- a/com/nidefawl/Stats/datasource/PlayerStatSQL.java +++ b/com/nidefawl/Stats/datasource/PlayerStatSQL.java @@ -6,7 +6,6 @@ import java.sql.*; import com.nidefawl.Stats.Stats; import com.nidefawl.Stats.StatsSettings; - public class PlayerStatSQL extends PlayerStat { static final Logger log = Logger.getLogger("Minecraft"); public final String logprefix = "[Stats-" + Stats.version + "]"; @@ -17,36 +16,40 @@ public class PlayerStatSQL extends PlayerStat { this.plugin = plugin; } - public void save() { + @Override + public void save(boolean close) { Connection conn = null; PreparedStatement ps = null; try { conn = StatsSQLConnectionManager.getConnection(); - conn.setAutoCommit(false); - for(String catName : categories.keySet()) { + if (close) { + conn.setAutoCommit(false); + } + for (String catName : categories.keySet()) { Category cat = categories.get(catName); if (!cat.modified) { continue; } - for(String statName : cat.stats.keySet()) { + for (String statName : cat.stats.keySet()) { int value = cat.get(statName); - ps = conn.prepareStatement("UPDATE " + StatsSettings.dbTable + " set value=? where player = ? and category = ? and stat = ?;", Statement.RETURN_GENERATED_KEYS); - + ps = conn.prepareStatement(StatsSQLConnectionManager.getPreparedPlayerStatUpdateStatement()); + ps.setInt(1, value); ps.setString(2, getName()); ps.setString(3, catName); ps.setString(4, statName); - if(ps.executeUpdate()==0) { - ps = conn.prepareStatement("INSERT INTO " + StatsSettings.dbTable + " (player,category,stat,value) VALUES(?,?,?,?);", Statement.RETURN_GENERATED_KEYS); + if (ps.executeUpdate() == 0) { + Stats.LogInfo("new stat!!!!"); + ps = conn.prepareStatement(StatsSQLConnectionManager.getPreparedPlayerStatInsertStatement()); ps.setString(1, getName()); ps.setString(2, catName); - ps.setString(3, statName); + ps.setString(3, statName); ps.setInt(4, value); ps.executeUpdate(); } } - cat.modified=false; + cat.modified = false; } conn.commit(); } catch (SQLException ex) { @@ -54,12 +57,12 @@ public class PlayerStatSQL extends PlayerStat { ex.printStackTrace(); } finally { try { - if (ps != null) { - ps.close(); - } - if(conn != null) { - conn.close(); - } + if (ps != null) { + ps.close(); + } + if (conn != null && close) { + conn.close(); + } } catch (SQLException ex) { Stats.LogError("SQL exception: " + ex.getMessage()); ex.printStackTrace(); @@ -67,6 +70,7 @@ public class PlayerStatSQL extends PlayerStat { } } + @Override public void load() { if (!plugin.enabled) return; @@ -92,13 +96,18 @@ public class PlayerStatSQL extends PlayerStat { rs.close(); if (ps != null) ps.close(); - if(conn != null) { - conn.close(); - } + if (conn != null) { + conn.close(); + } } catch (SQLException ex) { Stats.LogError("SQL exception (on close): " + ex.getMessage()); ex.printStackTrace(); } } } + + @Override + public void save() { + save(true); + } } \ No newline at end of file diff --git a/com/nidefawl/Stats/datasource/StatsSQLConnectionManager.java b/com/nidefawl/Stats/datasource/StatsSQLConnectionManager.java index 3030da2..0a8b199 100755 --- a/com/nidefawl/Stats/datasource/StatsSQLConnectionManager.java +++ b/com/nidefawl/Stats/datasource/StatsSQLConnectionManager.java @@ -3,35 +3,52 @@ package com.nidefawl.Stats.datasource; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; - import com.nidefawl.Stats.Stats; import com.nidefawl.Stats.StatsSettings; - public class StatsSQLConnectionManager { - public static Connection getConnection() { - try { - if (StatsSettings.useMySQL) { - Class.forName("com.mysql.jdbc.Driver"); - Connection ret = DriverManager.getConnection(StatsSettings.dbUrl, StatsSettings.dbUsername, StatsSettings.dbPassword); - ret.setAutoCommit(true); - return ret; - } else { - Class.forName("org.sqlite.JDBC"); - Connection ret = DriverManager.getConnection(StatsSettings.liteDb); - ret.setAutoCommit(true); - return ret; - } - } catch (SQLException e) { - Stats.LogError("Error getting SQL-connection: "+e.getMessage()); - e.printStackTrace(); - return null; - } catch (ClassNotFoundException e) { - Stats.LogError("Error getting SQL-connection: "+e.getMessage()); - e.printStackTrace(); - return null; - } - } + static Connection conn = null; + + public final static String getPreparedPlayerStatUpdateStatement() { + return "UPDATE " + StatsSettings.dbTable + " set value=? where player = ? and category = ? and stat = ?;"; + } + + public final static String getPreparedPlayerStatInsertStatement() { + return "INSERT INTO " + StatsSettings.dbTable + " (player,category,stat,value) VALUES(?,?,?,?);"; + } + + public static Connection getConnection() { + try { + if (conn == null || conn.isClosed()) { + if (StatsSettings.useMySQL) { + Class.forName("com.mysql.jdbc.Driver"); + conn = DriverManager.getConnection(StatsSettings.dbUrl, StatsSettings.dbUsername, StatsSettings.dbPassword); + } else { + Class.forName("org.sqlite.JDBC"); + conn = DriverManager.getConnection(StatsSettings.liteDb); + } + } + } catch (SQLException e) { + Stats.LogError("Error getting SQL-connection: " + e.getMessage()); + e.printStackTrace(); + return null; + } catch (ClassNotFoundException e) { + Stats.LogError("Error getting SQL-connection: " + e.getMessage()); + e.printStackTrace(); + return null; + } + return conn; + } + + public static void closeConnection() { + try { + if (conn != null && !conn.isClosed()) { + conn.close(); + } + } catch (SQLException e) { + Stats.LogError("Error closing SQL-connection: " + e.getMessage()); + e.printStackTrace(); + } + } - } diff --git a/com/nidefawl/Stats/event/StatsListener.java b/com/nidefawl/Stats/event/StatsListener.java index c78f7a0..ba39706 100755 --- a/com/nidefawl/Stats/event/StatsListener.java +++ b/com/nidefawl/Stats/event/StatsListener.java @@ -9,6 +9,8 @@ public class StatsListener extends CustomEventListener implements Listener { public StatsListener() { } + + @Override public void onCustomEvent(Event event) { if (event instanceof StatsMobDeathByPlayerEvent) { onStatsMobDeathByPlayerEvent((StatsMobDeathByPlayerEvent) event); @@ -20,29 +22,29 @@ public class StatsListener extends CustomEventListener implements Listener { onStatsPlayerDeathByPlayerEvent((StatsPlayerDeathByPlayerEvent) event); } else if (event instanceof StatsPlayerDeathByOtherEvent) { onStatsPlayerDeathByOtherEvent((StatsPlayerDeathByOtherEvent) event); - }else if (event instanceof StatsPlayerMoveEvent) { + } else if (event instanceof StatsPlayerMoveEvent) { onStatsPlayerMoveEvent((StatsPlayerMoveEvent) event); } } public void onStatsPlayerMoveEvent(StatsPlayerMoveEvent event) { - + } public void onStatsPlayerDeathByOtherEvent(StatsPlayerDeathByOtherEvent event) { - + } public void onStatsPlayerDeathByPlayerEvent(StatsPlayerDeathByPlayerEvent event) { - + } public void onStatsPlayerDeathByEntityEvent(StatsPlayerDeathByEntityEvent event) { - + } public void onStatsPlayerDamagedPlayerEvent(StatsPlayerDamagedPlayerEvent event) { - + } public void onStatsMobDeathByPlayerEvent(StatsMobDeathByPlayerEvent event) { diff --git a/com/nidefawl/Stats/event/StatsMobDeathByPlayerEvent.java b/com/nidefawl/Stats/event/StatsMobDeathByPlayerEvent.java index a78d2b5..0db0c1f 100755 --- a/com/nidefawl/Stats/event/StatsMobDeathByPlayerEvent.java +++ b/com/nidefawl/Stats/event/StatsMobDeathByPlayerEvent.java @@ -2,50 +2,34 @@ package com.nidefawl.Stats.event; import org.bukkit.entity.Entity; import org.bukkit.entity.Player; -import org.bukkit.event.Cancellable; +import org.bukkit.event.entity.EntityDeathEvent; -public class StatsMobDeathByPlayerEvent extends org.bukkit.event.Event implements Cancellable { +public class StatsMobDeathByPlayerEvent extends org.bukkit.event.Event { /** * */ private static final long serialVersionUID = 2158229946386582299L; - private Entity entity; private Player player; boolean isCancelled; + EntityDeathEvent base; - @Override - public boolean isCancelled() { - return this.isCancelled; - } - - @Override - public void setCancelled(boolean arg0) { - isCancelled = arg0; - } - - public StatsMobDeathByPlayerEvent(Player player, Entity entity) { - super("StatsPlayerDamageEvent"); - this.entity = entity; + public StatsMobDeathByPlayerEvent(EntityDeathEvent event, Player player, Entity entity) { + super("StatsMobDeathByPlayerEvent"); + this.base = event; this.player = player; - isCancelled=false; - } - - /** - * @param entity the entity to set - */ - public void setEntity(Entity entity) { - this.entity = entity; + isCancelled = false; } /** * @return the entity */ public Entity getEntity() { - return entity; + return this.base.getEntity(); } /** - * @param player the player to set + * @param player + * the player to set */ public void setPlayer(Player player) { this.player = player; @@ -57,5 +41,5 @@ public class StatsMobDeathByPlayerEvent extends org.bukkit.event.Event implement public Player getPlayer() { return player; } - + } diff --git a/com/nidefawl/Stats/event/StatsPlayerDamagedPlayerEvent.java b/com/nidefawl/Stats/event/StatsPlayerDamagedPlayerEvent.java index 544c13c..9520a45 100755 --- a/com/nidefawl/Stats/event/StatsPlayerDamagedPlayerEvent.java +++ b/com/nidefawl/Stats/event/StatsPlayerDamagedPlayerEvent.java @@ -22,16 +22,18 @@ public class StatsPlayerDamagedPlayerEvent extends org.bukkit.event.Event implem public void setCancelled(boolean arg0) { isCancelled = arg0; } + public StatsPlayerDamagedPlayerEvent(Player player, Player damaged, int damage) { - super("StatsPlayerDamageEvent"); + super("StatsPlayerDamagedPlayerEvent"); this.player = player; this.damaged = damaged; this.damage = damage; - isCancelled=false; + isCancelled = false; } /** - * @param player the player to set + * @param player + * the player to set */ public void setPlayer(Player player) { this.player = player; @@ -45,7 +47,8 @@ public class StatsPlayerDamagedPlayerEvent extends org.bukkit.event.Event implem } /** - * @param damage the damage to set + * @param damage + * the damage to set */ public void setDamage(int damage) { this.damage = damage; @@ -59,7 +62,8 @@ public class StatsPlayerDamagedPlayerEvent extends org.bukkit.event.Event implem } /** - * @param damaged the damaged to set + * @param damaged + * the damaged to set */ public void setDamagedPlayer(Player damaged) { this.damaged = damaged; diff --git a/com/nidefawl/Stats/event/StatsPlayerDeathByEntityEvent.java b/com/nidefawl/Stats/event/StatsPlayerDeathByEntityEvent.java index 9848c37..fb86647 100755 --- a/com/nidefawl/Stats/event/StatsPlayerDeathByEntityEvent.java +++ b/com/nidefawl/Stats/event/StatsPlayerDeathByEntityEvent.java @@ -3,6 +3,7 @@ package com.nidefawl.Stats.event; import org.bukkit.entity.Entity; import org.bukkit.entity.Player; import org.bukkit.event.Cancellable; +import org.bukkit.event.entity.EntityDeathEvent; public class StatsPlayerDeathByEntityEvent extends org.bukkit.event.Event implements Cancellable { /** @@ -12,6 +13,7 @@ public class StatsPlayerDeathByEntityEvent extends org.bukkit.event.Event implem private Player player; private Entity entity; boolean isCancelled; + private EntityDeathEvent base; @Override public boolean isCancelled() { @@ -23,14 +25,18 @@ public class StatsPlayerDeathByEntityEvent extends org.bukkit.event.Event implem isCancelled = arg0; } - public StatsPlayerDeathByEntityEvent(Player player, Entity entity) { - super("StatsPlayerDamageEvent"); + public StatsPlayerDeathByEntityEvent(EntityDeathEvent event, Player player, Entity entity) { + + super("StatsPlayerDeathByEntityEvent"); + this.base = event; this.player = player; this.entity = entity; - isCancelled=false; + isCancelled = false; } + /** - * @param player the player to set + * @param player + * the player to set */ public void setPlayer(Player player) { this.player = player; @@ -44,7 +50,8 @@ public class StatsPlayerDeathByEntityEvent extends org.bukkit.event.Event implem } /** - * @param entity the entity to set + * @param entity + * the entity to set */ public void setEntity(Entity entity) { this.entity = entity; @@ -57,5 +64,11 @@ public class StatsPlayerDeathByEntityEvent extends org.bukkit.event.Event implem return entity; } + /** + * @return the base + */ + public EntityDeathEvent getBase() { + return base; + } } diff --git a/com/nidefawl/Stats/event/StatsPlayerDeathByOtherEvent.java b/com/nidefawl/Stats/event/StatsPlayerDeathByOtherEvent.java index e3ede74..cf466a5 100755 --- a/com/nidefawl/Stats/event/StatsPlayerDeathByOtherEvent.java +++ b/com/nidefawl/Stats/event/StatsPlayerDeathByOtherEvent.java @@ -2,6 +2,7 @@ package com.nidefawl.Stats.event; import org.bukkit.entity.Player; import org.bukkit.event.Cancellable; +import org.bukkit.event.entity.EntityDeathEvent; public class StatsPlayerDeathByOtherEvent extends org.bukkit.event.Event implements Cancellable { /** @@ -11,6 +12,7 @@ public class StatsPlayerDeathByOtherEvent extends org.bukkit.event.Event impleme private Player player; private String reason; boolean isCancelled; + private EntityDeathEvent base; @Override public boolean isCancelled() { @@ -22,15 +24,17 @@ public class StatsPlayerDeathByOtherEvent extends org.bukkit.event.Event impleme isCancelled = arg0; } - public StatsPlayerDeathByOtherEvent(Player player, String reason) { - super("StatsPlayerDamageEvent"); + public StatsPlayerDeathByOtherEvent(EntityDeathEvent event, Player player, String reason) { + super("StatsPlayerDeathByOtherEvent"); + this.base = event; this.player = player; this.reason = reason; - isCancelled=false; + isCancelled = false; } /** - * @param player the player to set + * @param player + * the player to set */ public void setPlayer(Player player) { this.player = player; @@ -44,12 +48,20 @@ public class StatsPlayerDeathByOtherEvent extends org.bukkit.event.Event impleme } /** - * @param reason the reason to set + * @param reason + * the reason to set */ public void setReason(String reason) { this.reason = reason; } + /** + * @return the base + */ + public EntityDeathEvent getBase() { + return base; + } + /** * @return the reason */ diff --git a/com/nidefawl/Stats/event/StatsPlayerDeathByPlayerEvent.java b/com/nidefawl/Stats/event/StatsPlayerDeathByPlayerEvent.java index e430a8f..4008227 100755 --- a/com/nidefawl/Stats/event/StatsPlayerDeathByPlayerEvent.java +++ b/com/nidefawl/Stats/event/StatsPlayerDeathByPlayerEvent.java @@ -2,8 +2,9 @@ package com.nidefawl.Stats.event; import org.bukkit.entity.Player; import org.bukkit.event.Cancellable; +import org.bukkit.event.entity.EntityDeathEvent; -public class StatsPlayerDeathByPlayerEvent extends org.bukkit.event.Event implements Cancellable { +public class StatsPlayerDeathByPlayerEvent extends org.bukkit.event.Event implements Cancellable { /** * */ @@ -11,6 +12,7 @@ public class StatsPlayerDeathByPlayerEvent extends org.bukkit.event.Event implem private Player player; private Player killer; boolean isCancelled; + private EntityDeathEvent base; @Override public boolean isCancelled() { @@ -22,14 +24,17 @@ public class StatsPlayerDeathByPlayerEvent extends org.bukkit.event.Event implem isCancelled = arg0; } - public StatsPlayerDeathByPlayerEvent(Player player, Player killer) { - super("StatsPlayerDamageEvent"); + public StatsPlayerDeathByPlayerEvent(EntityDeathEvent event, Player player, Player killer) { + super("StatsPlayerDeathByPlayerEvent"); + this.base = event; this.player = player; this.killer = killer; - isCancelled=false; + isCancelled = false; } + /** - * @param player the player to set + * @param player + * the player to set */ public void setPlayer(Player player) { this.player = player; @@ -43,12 +48,20 @@ public class StatsPlayerDeathByPlayerEvent extends org.bukkit.event.Event implem } /** - * @param killer the killer to set + * @param killer + * the killer to set */ public void setKiller(Player killer) { this.killer = killer; } + /** + * @return the base + */ + public EntityDeathEvent getBase() { + return base; + } + /** * @return the killer */ diff --git a/com/nidefawl/Stats/event/StatsPlayerMoveEvent.java b/com/nidefawl/Stats/event/StatsPlayerMoveEvent.java index fda309d..3a9433d 100755 --- a/com/nidefawl/Stats/event/StatsPlayerMoveEvent.java +++ b/com/nidefawl/Stats/event/StatsPlayerMoveEvent.java @@ -1,35 +1,42 @@ package com.nidefawl.Stats.event; -public class StatsPlayerMoveEvent extends org.bukkit.event.Event{ +public class StatsPlayerMoveEvent extends org.bukkit.event.Event { /** * */ private static final long serialVersionUID = 4195026324747114268L; private String player; private int distance; + public StatsPlayerMoveEvent(String player, int distance) { - super("StatsPlayerDamageEvent"); + super("StatsPlayerMoveEvent"); this.player = player; this.distance = distance; } + /** - * @param player the player to set + * @param player + * the player to set */ public void setPlayer(String player) { this.player = player; } + /** * @return the player */ public String getPlayer() { return player; } + /** - * @param distance the distance to set + * @param distance + * the distance to set */ public void setDistance(int distance) { this.distance = distance; } + /** * @return the distance */ diff --git a/com/nidefawl/Stats/util/Updater.java b/com/nidefawl/Stats/util/Updater.java index 886b8ca..a2b3fd7 100755 --- a/com/nidefawl/Stats/util/Updater.java +++ b/com/nidefawl/Stats/util/Updater.java @@ -36,7 +36,6 @@ import java.util.List; import com.nidefawl.Achievements.Achievements; import com.nidefawl.Stats.Stats; - public class Updater { /** @@ -47,7 +46,7 @@ public class Updater { /** * File used to obtain the latest version */ - private final static String VERSION_FILE = "VERSIONDEV"; + private final static String VERSION_FILE = "VERSION"; /** * File used for the distribution @@ -68,8 +67,11 @@ public class Updater { */ private HashMap config = new HashMap(); - public Updater() { - //enableSSL(); + private Stats plugin = null; + + public Updater(Stats plugin) { + this.plugin = plugin; + // enableSSL(); /* * Default config values @@ -88,9 +90,9 @@ public class Updater { * @return true if Stats should be reloaded */ public void check() { - String[] paths = new String[] { "lib/sqlite.jar", getFullNativeLibraryPath(), "lib/mysql.jar" }; + String[] paths = new String[] { "lib/sqlite.jar", getFullNativeLibraryPath(), "lib/mysql.jar" }; - paths = new String[] { "lib/sqlite.jar", getFullNativeLibraryPath(), "lib/mysql.jar" }; + paths = new String[] { "lib/sqlite.jar", getFullNativeLibraryPath(), "lib/mysql.jar" }; for (String path : paths) { File file = new File(path); @@ -115,9 +117,8 @@ public class Updater { Stats.LogInfo("Update detected for Achievements"); Stats.LogInfo("Latest version: " + latestVersion); } - } - catch (Exception e) { - Stats.LogError("Exception while updating Achievements plugin: "+e); + } catch (Exception e) { + Stats.LogError("Exception while updating Achievements plugin: " + e); e.printStackTrace(); } } @@ -127,7 +128,7 @@ public class Updater { * Force update of binaries */ private void requireBinaryUpdate() { - String[] paths = new String[] { "lib/sqlite.jar", getFullNativeLibraryPath() , "lib/mysql.jar" }; + String[] paths = new String[] { "lib/sqlite.jar", getFullNativeLibraryPath(), "lib/mysql.jar" }; for (String path : paths) { UpdaterFile updaterFile = new UpdaterFile(UPDATE_SITE + path); @@ -166,6 +167,7 @@ public class Updater { return false; } + public boolean checkAchDist() { if (new File("plugins/Achievements.jar").exists()) { @@ -184,16 +186,16 @@ public class Updater { e.printStackTrace(); } } else { - Stats.LogInfo("Achievements plugin is up to date ("+(Achievements.version)+")"); + Stats.LogInfo("Achievements plugin is up to date (" + (Achievements.version) + ")"); } - } - catch (Exception e) { - Stats.LogError("Exception while updating Achievements plugin: "+e); + } catch (Exception e) { + Stats.LogError("Exception while updating Achievements plugin: " + e); e.printStackTrace(); } } return false; } + /** * Get the latest Achievemnts version * @@ -219,6 +221,7 @@ public class Updater { return 0.00; } + /** * Get the latest version * @@ -249,6 +252,7 @@ public class Updater { public double getCurrentSQLiteVersion() { return Double.parseDouble(config.get("sqlite")); } + public String combineSplit(int startIndex, String[] string, String seperator) { if (string.length == 0) return ""; @@ -261,6 +265,7 @@ public class Updater { builder.deleteCharAt(builder.length() - seperator.length()); // remove return builder.toString(); } + /** * @return the latest sqlite version */ @@ -288,7 +293,7 @@ public class Updater { * @return the internal config file */ private File getInternalFile() { - return new File("stats" + File.separator + "internal.ini"); + return new File(plugin.getDataFolder() + File.separator + "internal.ini"); } /** @@ -328,8 +333,8 @@ public class Updater { * Get the key/value */ String key = arr[0]; - String value = combineSplit(1,arr, ":"); - //value = value.substring(0, value.length() - 1); + String value = combineSplit(1, arr, ":"); + // value = value.substring(0, value.length() - 1); /* * Set the config value @@ -438,7 +443,7 @@ public class Updater { /* * Make the native folder hierarchy if needed */ - File folder = new File(getOSSpecificFolder()); + File folder = new File(plugin.getDataFolder(), getOSSpecificFolder()); folder.mkdirs(); Stats.LogInfo("Need to download " + needsUpdating.size() + " file(s)"); @@ -451,8 +456,7 @@ public class Updater { Stats.LogInfo(" - Downloading file : " + item.getRemoteLocation()); URL url = new URL(item.getRemoteLocation()); - File file = new File(item.getLocalLocation()); - + File file = new File(plugin.getDataFolder(), item.getLocalLocation()); if (file.exists()) { file.delete(); } @@ -475,7 +479,6 @@ public class Updater { saveInternal(); } - /** * Write an input stream to an output stream *