From 807d302b608dfc79179284bc49be41731143753a Mon Sep 17 00:00:00 2001 From: Gabriele C Date: Tue, 6 Oct 2015 19:17:03 +0200 Subject: [PATCH] 1.5.2 compatibility --- pom.xml | 4 +- src/main/java/fr/xephi/authme/AuthMe.java | 7 ++++ .../java/fr/xephi/authme/DataManager.java | 32 +++++++++------ .../authme/listener/AuthMeEntityListener.java | 41 +++++++++++++++---- .../authme/listener/AuthMePlayerListener.java | 7 ---- .../listener/AuthMePlayerListener16.java | 27 ++++++++++++ .../xephi/authme/settings/OtherAccounts.java | 2 +- 7 files changed, 89 insertions(+), 31 deletions(-) create mode 100644 src/main/java/fr/xephi/authme/listener/AuthMePlayerListener16.java diff --git a/pom.xml b/pom.xml index cca09242c..7bdad8cf9 100644 --- a/pom.xml +++ b/pom.xml @@ -276,8 +276,7 @@ true - + org.bukkit bukkit @@ -324,6 +323,7 @@ com.comphenix.protocol ProtocolLib 3.4.0 + provided true diff --git a/src/main/java/fr/xephi/authme/AuthMe.java b/src/main/java/fr/xephi/authme/AuthMe.java index 6d5f8ab57..23c556c8f 100644 --- a/src/main/java/fr/xephi/authme/AuthMe.java +++ b/src/main/java/fr/xephi/authme/AuthMe.java @@ -58,6 +58,7 @@ import fr.xephi.authme.listener.AuthMeBlockListener; import fr.xephi.authme.listener.AuthMeEntityListener; import fr.xephi.authme.listener.AuthMeInventoryPacketAdapter; import fr.xephi.authme.listener.AuthMePlayerListener; +import fr.xephi.authme.listener.AuthMePlayerListener16; import fr.xephi.authme.listener.AuthMePlayerListener18; import fr.xephi.authme.listener.AuthMeServerListener; import fr.xephi.authme.modules.ModuleManager; @@ -279,6 +280,12 @@ public class AuthMe extends JavaPlugin { // Register events pm.registerEvents(new AuthMePlayerListener(this), this); + // Try to register 1.6 player listeners + try { + Class.forName("org.bukkit.event.player.PlayerEditBookEvent"); + pm.registerEvents(new AuthMePlayerListener16(this), this); + } catch (ClassNotFoundException ignore) { + } // Try to register 1.8 player listeners try { Class.forName("org.bukkit.event.player.PlayerInteractAtEntityEvent"); diff --git a/src/main/java/fr/xephi/authme/DataManager.java b/src/main/java/fr/xephi/authme/DataManager.java index 43782c5b3..9263443fb 100644 --- a/src/main/java/fr/xephi/authme/DataManager.java +++ b/src/main/java/fr/xephi/authme/DataManager.java @@ -103,21 +103,26 @@ public class DataManager { for (String name : cleared) { try { org.bukkit.OfflinePlayer player = getOfflinePlayer(name); - if (player == null) + File playerFile = null; + if (player == null) { continue; - String playerName = player.getName(); - File playerFile = new File(plugin.getServer().getWorldContainer() + File.separator + Settings.defaultWorld + File.separator + "players" + File.separator + playerName + ".dat"); + } + + try { + playerFile = new File(plugin.getServer().getWorldContainer() + File.separator + Settings.defaultWorld + File.separator + "players" + File.separator + player.getUniqueId() + ".dat"); + } catch(Exception ignore) { + } if (playerFile.exists()) { playerFile.delete(); i++; } else { - playerFile = new File(plugin.getServer().getWorldContainer() + File.separator + Settings.defaultWorld + File.separator + "players" + File.separator + player.getUniqueId() + ".dat"); + playerFile = new File(plugin.getServer().getWorldContainer() + File.separator + Settings.defaultWorld + File.separator + "players" + File.separator + player.getName() + ".dat"); if (playerFile.exists()) { playerFile.delete(); i++; } } - } catch (Exception e) { + } catch (Exception ignore) { } } ConsoleLogger.info("AutoPurgeDatabase : Remove " + i + " .dat Files"); @@ -128,18 +133,19 @@ public class DataManager { int i = 0; for (String name : cleared) { try { - File playerFile = new File(plugin.ess.getDataFolder() + File.separator + "userdata" + File.separator + name + ".yml"); + File playerFile = null; + try { + playerFile = new File(plugin.ess.getDataFolder() + File.separator + "userdata" + File.separator + plugin.getServer().getOfflinePlayer(name).getUniqueId() + ".yml"); + } catch(Exception ignore) { + } if (playerFile.exists()) { playerFile.delete(); i++; } else { - try { - playerFile = new File(plugin.ess.getDataFolder() + File.separator + "userdata" + File.separator + Bukkit.getOfflinePlayer(name).getUniqueId() + ".yml"); - if (playerFile.exists()) { - playerFile.delete(); - i++; - } - } catch (Exception e) { // Don't do nothing if the method getUniqueId() isn't avariable ( MC version < 1.7.5 ) + playerFile = new File(plugin.ess.getDataFolder() + File.separator + "userdata" + File.separator + name + ".yml"); + if (playerFile.exists()) { + playerFile.delete(); + i++; } } } catch (Exception e) { diff --git a/src/main/java/fr/xephi/authme/listener/AuthMeEntityListener.java b/src/main/java/fr/xephi/authme/listener/AuthMeEntityListener.java index 34b3b0f24..acd65e0c0 100644 --- a/src/main/java/fr/xephi/authme/listener/AuthMeEntityListener.java +++ b/src/main/java/fr/xephi/authme/listener/AuthMeEntityListener.java @@ -2,7 +2,11 @@ package fr.xephi.authme.listener; import fr.xephi.authme.AuthMe; import fr.xephi.authme.Utils; + +import java.lang.reflect.Method; + import org.bukkit.entity.Entity; +import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; import org.bukkit.entity.Projectile; import org.bukkit.event.EventHandler; @@ -14,9 +18,16 @@ import org.bukkit.projectiles.ProjectileSource; public class AuthMeEntityListener implements Listener { public AuthMe instance; + private static Method getShooter; + private static boolean shooterIsProjectileSource; public AuthMeEntityListener(AuthMe instance) { this.instance = instance; + try { + Method m = Projectile.class.getDeclaredMethod("getShooter"); + shooterIsProjectileSource = m.getReturnType() != LivingEntity.class; + } catch (Exception ignored) { + } } @EventHandler(ignoreCancelled = true, priority = EventPriority.LOWEST) @@ -31,7 +42,7 @@ public class AuthMeEntityListener implements Listener { return; } player.setFireTicks(0); - event.setDamage(0.0); + event.setDamage(0); event.setCancelled(true); } @@ -90,7 +101,7 @@ public class AuthMeEntityListener implements Listener { return; } - event.setAmount(0.0); + event.setAmount(0); event.setCancelled(true); } @@ -126,15 +137,29 @@ public class AuthMeEntityListener implements Listener { @EventHandler(ignoreCancelled = true, priority = EventPriority.LOWEST) public void onProjectileLaunch(ProjectileLaunchEvent event) { Projectile projectile = event.getEntity(); - if (projectile == null) - return; - - ProjectileSource shooter = projectile.getShooter(); - if (shooter == null || !(shooter instanceof Player)) { + Player player = null; + if (projectile == null) { return; } - if (Utils.checkAuth((Player) shooter)) { + if (shooterIsProjectileSource) { + ProjectileSource shooter = projectile.getShooter(); + if (shooter == null || !(shooter instanceof Player)) { + return; + } + player = (Player) shooter; + } else { + try { + if (getShooter == null) { + getShooter = Projectile.class.getMethod("getShooter"); + } + Object obj = getShooter.invoke(null); + player = (Player) obj; + } catch (Exception ignored) { + } + } + + if (Utils.checkAuth(player)) { return; } diff --git a/src/main/java/fr/xephi/authme/listener/AuthMePlayerListener.java b/src/main/java/fr/xephi/authme/listener/AuthMePlayerListener.java index 801502e56..5706ef669 100644 --- a/src/main/java/fr/xephi/authme/listener/AuthMePlayerListener.java +++ b/src/main/java/fr/xephi/authme/listener/AuthMePlayerListener.java @@ -519,11 +519,4 @@ public class AuthMePlayerListener implements Listener { event.setCancelled(true); } - @EventHandler(ignoreCancelled = true, priority = EventPriority.NORMAL) - public void onPlayerEditBook(PlayerEditBookEvent event) { - Player player = event.getPlayer(); - if (player == null || Utils.checkAuth(player)) - return; - event.setCancelled(true); - } } diff --git a/src/main/java/fr/xephi/authme/listener/AuthMePlayerListener16.java b/src/main/java/fr/xephi/authme/listener/AuthMePlayerListener16.java new file mode 100644 index 000000000..2959b84fc --- /dev/null +++ b/src/main/java/fr/xephi/authme/listener/AuthMePlayerListener16.java @@ -0,0 +1,27 @@ +package fr.xephi.authme.listener; + +import fr.xephi.authme.AuthMe; +import fr.xephi.authme.Utils; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.Listener; +import org.bukkit.event.player.*; + +public class AuthMePlayerListener16 implements Listener { + + public AuthMe plugin; + + public AuthMePlayerListener16(AuthMe plugin) { + this.plugin = plugin; + } + + @EventHandler(ignoreCancelled = true, priority = EventPriority.NORMAL) + public void onPlayerEditBook(PlayerEditBookEvent event) { + Player player = event.getPlayer(); + if (player == null || Utils.checkAuth(player)) + return; + event.setCancelled(true); + } + +} diff --git a/src/main/java/fr/xephi/authme/settings/OtherAccounts.java b/src/main/java/fr/xephi/authme/settings/OtherAccounts.java index 697104d49..0154a3378 100644 --- a/src/main/java/fr/xephi/authme/settings/OtherAccounts.java +++ b/src/main/java/fr/xephi/authme/settings/OtherAccounts.java @@ -45,7 +45,7 @@ public class OtherAccounts extends CustomConfiguration { save(); } } catch (NoSuchMethodError | Exception e) { - //ingore + //ignore } }