Dieser Commit ist enthalten in:
Ursprung
9ff498133d
Commit
4e801ea4eb
59
SpigotCore_Main/src/de/steamwar/providers/BauServerInfo.java
Normale Datei
59
SpigotCore_Main/src/de/steamwar/providers/BauServerInfo.java
Normale Datei
@ -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> T runWithBauServerInfo(Supplier<T> supplier, T defaults) {
|
||||||
|
if(isBauserver) {
|
||||||
|
return supplier.get();
|
||||||
|
} else {
|
||||||
|
return defaults;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -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> T use(Function<BauSystemProvider, T> function, T def) {
|
|
||||||
return BauSystemProviderImplementor.use(function, def);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void use(Consumer<BauSystemProvider> 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> T use(Function<BauSystemProvider, T> function, T def) {
|
|
||||||
if(!hasBausystem) return def;
|
|
||||||
return function.apply(bauSystemProvider);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void use(Consumer<BauSystemProvider> consumer) {
|
|
||||||
if(!hasBausystem) return;
|
|
||||||
consumer.accept(bauSystemProvider);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
In neuem Issue referenzieren
Einen Benutzer sperren