diff --git a/SpigotCore_Main/src/de/steamwar/providers/BauServerInfo.java b/SpigotCore_Main/src/de/steamwar/providers/BauServerInfo.java new file mode 100644 index 0000000..059b0ba --- /dev/null +++ b/SpigotCore_Main/src/de/steamwar/providers/BauServerInfo.java @@ -0,0 +1,59 @@ +package de.steamwar.providers; + +import de.steamwar.sql.SteamwarUser; +import org.bukkit.Bukkit; + +import java.util.UUID; +import java.util.function.Supplier; +import java.util.logging.Level; + +public class BauServerInfo { + + private static boolean isBauserver; + private static int bauOwner; + + static { + isBauserver = Bukkit.getPluginManager().getPlugin("BauSystem") != null; + if(isBauserver) { + try { + bauOwner = Integer.parseInt(Bukkit.getWorlds().get(0).getName()); + if(SteamwarUser.get(bauOwner) == null) { + Bukkit.getLogger().log(Level.SEVERE, "World name is not a UserID", new IllegalStateException("World name is not a UserID")); + } + } catch (NumberFormatException e) { + isBauserver = false; + Bukkit.getLogger().log(Level.SEVERE, "World name is not a Integer", new IllegalStateException("World name is not a Integer")); + } + } else { + bauOwner = -1; + } + } + + public static UUID getOwner() { + if(isBauserver) { + return SteamwarUser.get(bauOwner).getUUID(); + } else { + throw new IllegalStateException("This is not a BauServer"); + } + } + + public static int getOwnerId() { + if(isBauserver) { + return bauOwner; + } else { + throw new IllegalStateException("This is not a BauServer"); + } + } + + public static boolean isBauServer() { + return isBauserver; + } + + public static T runWithBauServerInfo(Supplier supplier, T defaults) { + if(isBauserver) { + return supplier.get(); + } else { + return defaults; + } + } +} diff --git a/SpigotCore_Main/src/de/steamwar/providers/BauSystemProvider.java b/SpigotCore_Main/src/de/steamwar/providers/BauSystemProvider.java deleted file mode 100644 index b59f3d9..0000000 --- a/SpigotCore_Main/src/de/steamwar/providers/BauSystemProvider.java +++ /dev/null @@ -1,56 +0,0 @@ -package de.steamwar.providers; - -import de.steamwar.providers.impl.*; -import org.bukkit.Bukkit; - -import java.util.function.Consumer; -import java.util.function.Function; - -public interface BauSystemProvider { - - static T use(Function function, T def) { - return BauSystemProviderImplementor.use(function, def); - } - - static void use(Consumer consumer) { - BauSystemProviderImplementor.use(consumer); - } - - int getOwner(); - - class BauSystemProviderImplementor { - private BauSystemProviderImplementor() {} - - static boolean hasBausystem; - static BauSystemProvider bauSystemProvider; - - static { - try { - Class.forName("de.steamwar.bausystem.BauSystem"); - hasBausystem = true; - switch (Bukkit.getPluginManager().getPlugin("BauSystem").getDescription().getVersion()) { - case "2.0": - bauSystemProvider = new BauSystem2Provider(); - break; - case "1.0": - bauSystemProvider = new BauSystem1Provider(); - break; - default: - hasBausystem = false; - } - } catch (Exception e) { - hasBausystem = false; - } - } - - static T use(Function function, T def) { - if(!hasBausystem) return def; - return function.apply(bauSystemProvider); - } - - static void use(Consumer consumer) { - if(!hasBausystem) return; - consumer.accept(bauSystemProvider); - } - } -} diff --git a/SpigotCore_Main/src/de/steamwar/providers/impl/BauSystem1Provider.java b/SpigotCore_Main/src/de/steamwar/providers/impl/BauSystem1Provider.java deleted file mode 100644 index b9ab63d..0000000 --- a/SpigotCore_Main/src/de/steamwar/providers/impl/BauSystem1Provider.java +++ /dev/null @@ -1,28 +0,0 @@ -package de.steamwar.providers.impl; - -import de.steamwar.providers.BauSystemProvider; - -import java.lang.reflect.Method; - -public class BauSystem1Provider implements BauSystemProvider { - - private static final Method BAUSYSTEM_GET_OWNER_ID; - - static { - try { - Class bausystem = Class.forName("de.steamwar.bausystem.BauSystem"); - BAUSYSTEM_GET_OWNER_ID = bausystem.getDeclaredMethod("getOwnerID"); - } catch (Exception e) { - throw new SecurityException(e); - } - } - - @Override - public int getOwner() { - try { - return (int) BAUSYSTEM_GET_OWNER_ID.invoke(null); - } catch (Exception e) { - throw new SecurityException(e); - } - } -} diff --git a/SpigotCore_Main/src/de/steamwar/providers/impl/BauSystem2Provider.java b/SpigotCore_Main/src/de/steamwar/providers/impl/BauSystem2Provider.java deleted file mode 100644 index f6f861b..0000000 --- a/SpigotCore_Main/src/de/steamwar/providers/impl/BauSystem2Provider.java +++ /dev/null @@ -1,31 +0,0 @@ -package de.steamwar.providers.impl; - -import de.steamwar.providers.BauSystemProvider; - -import java.lang.reflect.Method; - -public class BauSystem2Provider implements BauSystemProvider { - - private static final Method BAU_SERVER_GET_OWNER_ID; - private static final Object BAU_SERVER_INSTANCE; - - static { - try { - Class bauServer = Class.forName("de.steamwar.bausystem.config.BauServer"); - Method bauServerGet = bauServer.getDeclaredMethod("getInstance"); - BAU_SERVER_GET_OWNER_ID = bauServer.getMethod("getOwnerID"); - BAU_SERVER_INSTANCE = bauServerGet.invoke(null); - } catch (Exception e) { - throw new SecurityException(e); - } - } - - @Override - public int getOwner() { - try { - return (int) BAU_SERVER_GET_OWNER_ID.invoke(BAU_SERVER_INSTANCE); - } catch (Exception e) { - throw new SecurityException(e); - } - } -}