diff --git a/pom.xml b/pom.xml
index 1cd3011..0880d09 100644
--- a/pom.xml
+++ b/pom.xml
@@ -86,6 +86,12 @@
authme
2.9.5
+
+
+ fr.xephi
+ authme
+ 3.0
+
com.onarandombox.multiversecore
@@ -96,7 +102,7 @@
multiworld
multiworld
- 4.6.6
+ 4.7.2
diff --git a/src/main/java/de/jaschastarke/minecraft/limitedcreative/Hooks.java b/src/main/java/de/jaschastarke/minecraft/limitedcreative/Hooks.java
index 96f3775..8c4266f 100644
--- a/src/main/java/de/jaschastarke/minecraft/limitedcreative/Hooks.java
+++ b/src/main/java/de/jaschastarke/minecraft/limitedcreative/Hooks.java
@@ -4,6 +4,7 @@ import org.bukkit.Bukkit;
import de.jaschastarke.hooking.BooleanHooker;
import de.jaschastarke.hooking.GetHooker;
+import de.jaschastarke.minecraft.limitedcreative.hooks.AuthMe3Hooks;
import de.jaschastarke.minecraft.limitedcreative.hooks.AuthMeHooks;
import de.jaschastarke.minecraft.limitedcreative.hooks.MultiVerseHooks;
import de.jaschastarke.minecraft.limitedcreative.hooks.PlayerCheckHooker;
@@ -26,10 +27,12 @@ public final class Hooks {
IsMultiVerse.clearHooks();
InventoryIncompatible.clearHooks();
- if (isPluginEnabled("AuthMe")) {
+ if (isAuthMePresent()) {
new AuthMeHooks(plugin);
+ } else if (isAuthMe3Present()) {
+ plugin.getModules().addSharedModule(new AuthMe3Hooks(plugin));
}
- if (isPluginEnabled("xAuth")) {
+ if (isXAuth20Present()) {
new xAuthHooks(plugin);
}
if (isPluginEnabled("Multiverse-Core")) {
@@ -49,4 +52,37 @@ public final class Hooks {
}
});
}
+
+ public static boolean isAuthMePresent() {
+ if (isPluginEnabled("AuthMe")) {
+ try {
+ return Class.forName("uk.org.whoami.authme.api.API") != null;
+ } catch (ClassNotFoundException e) {
+ return false;
+ }
+ }
+ return false;
+ }
+
+ public static boolean isAuthMe3Present() {
+ if (isPluginEnabled("AuthMe")) {
+ try {
+ return Class.forName("fr.xephi.authme.api.API") != null;
+ } catch (ClassNotFoundException e) {
+ return false;
+ }
+ }
+ return false;
+ }
+
+ public static boolean isXAuth20Present() {
+ if (isPluginEnabled("xAuth")) {
+ try {
+ return Class.forName("com.cypherx.xauth.xAuth") != null;
+ } catch (ClassNotFoundException e) {
+ return false;
+ }
+ }
+ return false;
+ }
}
diff --git a/src/main/java/de/jaschastarke/minecraft/limitedcreative/ModInventories.java b/src/main/java/de/jaschastarke/minecraft/limitedcreative/ModInventories.java
index 1b968ef..3fcbc30 100644
--- a/src/main/java/de/jaschastarke/minecraft/limitedcreative/ModInventories.java
+++ b/src/main/java/de/jaschastarke/minecraft/limitedcreative/ModInventories.java
@@ -9,7 +9,9 @@ import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import de.jaschastarke.bukkit.lib.CoreModule;
+import de.jaschastarke.minecraft.limitedcreative.hooks.AuthMe3Hooks;
import de.jaschastarke.minecraft.limitedcreative.inventories.ArmoryConfig;
+import de.jaschastarke.minecraft.limitedcreative.inventories.AuthMe3Inventories;
import de.jaschastarke.minecraft.limitedcreative.inventories.AuthMeInventories;
import de.jaschastarke.minecraft.limitedcreative.inventories.Inventory;
import de.jaschastarke.minecraft.limitedcreative.inventories.InventoryConfig;
@@ -41,8 +43,11 @@ public class ModInventories extends CoreModule {
config = plugin.getPluginConfig().registerSection(new InventoryConfig(this, entry));
armor_config = config.registerSection(new ArmoryConfig(this));
- if (plugin.getServer().getPluginManager().isPluginEnabled("AuthMe")) {
+ if (Hooks.isAuthMePresent()) {
addModule(new AuthMeInventories(plugin, this));
+ } else if (Hooks.isAuthMe3Present()) {
+ modules.linkSharedModule(AuthMe3Hooks.class, plugin.getModules());
+ addModule(new AuthMe3Inventories(plugin, this));
}
String incomp = Hooks.InventoryIncompatible.test();
if (config.getEnabled() && incomp != null) {
diff --git a/src/main/java/de/jaschastarke/minecraft/limitedcreative/ModRegions.java b/src/main/java/de/jaschastarke/minecraft/limitedcreative/ModRegions.java
index 4ebffc9..8f1ce93 100644
--- a/src/main/java/de/jaschastarke/minecraft/limitedcreative/ModRegions.java
+++ b/src/main/java/de/jaschastarke/minecraft/limitedcreative/ModRegions.java
@@ -6,6 +6,7 @@ import org.bukkit.entity.Player;
import de.jaschastarke.bukkit.lib.CoreModule;
import de.jaschastarke.bukkit.lib.commands.AliasHelpedCommand;
+import de.jaschastarke.minecraft.limitedcreative.hooks.AuthMe3Hooks;
import de.jaschastarke.minecraft.limitedcreative.regions.BlockListener;
import de.jaschastarke.minecraft.limitedcreative.regions.IWorldGuardIntegration;
import de.jaschastarke.minecraft.limitedcreative.regions.PlayerData;
@@ -49,6 +50,9 @@ public class ModRegions extends CoreModule {
entry.deactivateUsage();
return;
}
+ if (Hooks.isAuthMe3Present()) {
+ modules.linkSharedModule(AuthMe3Hooks.class, plugin.getModules());
+ }
command = new RegionsCommand(this);
diff --git a/src/main/java/de/jaschastarke/minecraft/limitedcreative/hooks/AuthMe3Hooks.java b/src/main/java/de/jaschastarke/minecraft/limitedcreative/hooks/AuthMe3Hooks.java
new file mode 100644
index 0000000..9a894bf
--- /dev/null
+++ b/src/main/java/de/jaschastarke/minecraft/limitedcreative/hooks/AuthMe3Hooks.java
@@ -0,0 +1,69 @@
+package de.jaschastarke.minecraft.limitedcreative.hooks;
+
+import java.util.HashMap;
+import java.util.Map;
+
+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.PlayerLoginEvent;
+import org.bukkit.plugin.IllegalPluginAccessException;
+
+import de.jaschastarke.bukkit.lib.SimpleModule;
+import de.jaschastarke.minecraft.limitedcreative.Hooks;
+import de.jaschastarke.minecraft.limitedcreative.LimitedCreative;
+import fr.xephi.authme.api.API;
+import fr.xephi.authme.events.LoginEvent;
+
+public class AuthMe3Hooks extends SimpleModule implements Listener {
+ private Map users = new HashMap();
+ private PlayerCheckHooker.Check check;
+ public AuthMe3Hooks(final LimitedCreative plugin) {
+ super(plugin);
+ check = new PlayerCheckHooker.Check() {
+ @Override
+ public boolean test(Player player) {
+ if (users.containsKey(player.getName())) {
+ if (plugin.isDebug()) // not nessesary, but so no string concation without debug needed
+ plugin.getLog().debug("AuthMe: "+player.getName()+": Event logged in: "+users.get(player.getName()));
+ return users.get(player.getName());
+ } else {
+ boolean li = API.isAuthenticated(player);
+ if (plugin.isDebug()) // not nessesary, but so no string concation without debug needed
+ plugin.getLog().debug("AuthMe: "+player.getName()+": logged in: "+li);
+ return li;
+ }
+ }
+ };
+ }
+
+ @Override
+ public void onEnable() {
+ try {
+ super.onEnable();
+ } catch (IllegalPluginAccessException e) {
+ enabled = true;
+ plugin.getLog().warn("AuthMe 3.0 Bug detected. Update AuthMe to a newer version as soon as avilable.");
+ }
+ Hooks.IsLoggedIn.register(check);
+ }
+
+ @Override
+ public void onDisable() {
+ super.onDisable();
+ Hooks.IsLoggedIn.unregister(check);
+ }
+
+ @EventHandler(priority = EventPriority.MONITOR)
+ public void onPlayerLogin(PlayerLoginEvent event) {
+ if (event.getPlayer() == null)
+ return;
+ users.put(event.getPlayer().getName(), API.isAuthenticated(event.getPlayer()));
+ }
+
+ @EventHandler
+ public void onAuthMeLogin(LoginEvent event) {
+ users.put(event.getPlayer().getName(), true);
+ }
+}
diff --git a/src/main/java/de/jaschastarke/minecraft/limitedcreative/hooks/AuthMeHooks.java b/src/main/java/de/jaschastarke/minecraft/limitedcreative/hooks/AuthMeHooks.java
index a0f511c..d665b72 100644
--- a/src/main/java/de/jaschastarke/minecraft/limitedcreative/hooks/AuthMeHooks.java
+++ b/src/main/java/de/jaschastarke/minecraft/limitedcreative/hooks/AuthMeHooks.java
@@ -6,6 +6,7 @@ import uk.org.whoami.authme.api.API;
import de.jaschastarke.minecraft.limitedcreative.Hooks;
import de.jaschastarke.minecraft.limitedcreative.LimitedCreative;
+@Deprecated // AuthMe 3.0 released. Compatibility for older versions will be removed sometime
public class AuthMeHooks {
public AuthMeHooks(final LimitedCreative plugin) {
Hooks.IsLoggedIn.register(new PlayerCheckHooker.Check() {
diff --git a/src/main/java/de/jaschastarke/minecraft/limitedcreative/inventories/AuthMe3Inventories.java b/src/main/java/de/jaschastarke/minecraft/limitedcreative/inventories/AuthMe3Inventories.java
new file mode 100644
index 0000000..3707bdd
--- /dev/null
+++ b/src/main/java/de/jaschastarke/minecraft/limitedcreative/inventories/AuthMe3Inventories.java
@@ -0,0 +1,52 @@
+package de.jaschastarke.minecraft.limitedcreative.inventories;
+
+import org.bukkit.GameMode;
+import org.bukkit.event.EventHandler;
+import org.bukkit.event.Listener;
+
+import de.jaschastarke.bukkit.lib.SimpleModule;
+import de.jaschastarke.minecraft.limitedcreative.LimitedCreative;
+import de.jaschastarke.minecraft.limitedcreative.ModInventories;
+import fr.xephi.authme.events.RestoreInventoryEvent;
+import fr.xephi.authme.events.StoreInventoryEvent;
+
+public class AuthMe3Inventories extends SimpleModule implements Listener {
+ ModInventories invmod;
+ public AuthMe3Inventories(LimitedCreative plugin, ModInventories modInventories) {
+ super(plugin);
+ invmod = modInventories;
+ }
+
+ @EventHandler
+ public void onStoreInventory(StoreInventoryEvent event) {
+ if (isDebug())
+ getLog().debug("AuthMe Store Event: "+event.getPlayer().getName());
+
+ event.getPlayer().closeInventory();
+ GameMode cgm = event.getPlayer().getGameMode();
+
+ if (cgm == GameMode.ADVENTURE && !invmod.getConfig().getSeparateAdventure())
+ cgm = GameMode.SURVIVAL;
+
+ if (cgm != GameMode.CREATIVE || invmod.getConfig().getStoreCreative()) {
+ invmod.getInventory(event.getPlayer()).save(cgm);
+ }
+ }
+ @EventHandler
+ public void onRestoreInventory(RestoreInventoryEvent event) {
+ if (isDebug())
+ getLog().debug("AuthMe Restore Event: "+event.getPlayer().getName());
+
+ event.getPlayer().closeInventory();
+ GameMode cgm = event.getPlayer().getGameMode();
+
+ if (cgm == GameMode.ADVENTURE && !invmod.getConfig().getSeparateAdventure())
+ cgm = GameMode.SURVIVAL;
+
+ Inventory inv = invmod.getInventory(event.getPlayer());
+ if (inv.isStored(cgm)) {
+ inv.load(cgm);
+ event.setCancelled(true);
+ }
+ }
+}
diff --git a/src/main/java/de/jaschastarke/minecraft/limitedcreative/inventories/AuthMeInventories.java b/src/main/java/de/jaschastarke/minecraft/limitedcreative/inventories/AuthMeInventories.java
index d8067de..b0d109b 100644
--- a/src/main/java/de/jaschastarke/minecraft/limitedcreative/inventories/AuthMeInventories.java
+++ b/src/main/java/de/jaschastarke/minecraft/limitedcreative/inventories/AuthMeInventories.java
@@ -10,6 +10,7 @@ import de.jaschastarke.bukkit.lib.SimpleModule;
import de.jaschastarke.minecraft.limitedcreative.LimitedCreative;
import de.jaschastarke.minecraft.limitedcreative.ModInventories;
+@Deprecated // AuthMe 3.0 released. Compatibility for older versions will be removed sometime
public class AuthMeInventories extends SimpleModule implements Listener {
ModInventories invmod;
public AuthMeInventories(LimitedCreative plugin, ModInventories modInventories) {