diff --git a/pom.xml b/pom.xml
index cca09242..7bdad8cf 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 6d5f8ab5..23c556c8 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 43782c5b..9263443f 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 34b3b0f2..acd65e0c 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 801502e5..5706ef66 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 00000000..2959b84f
--- /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 697104d4..0154a337 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
}
}