SteamWar/SpigotCore
Archiviert
13
0

Move BauServerInfo to SpigotCore #160

Zusammengeführt
Lixfel hat 4 Commits von provider nach master 2022-01-28 15:59:29 +01:00 zusammengeführt
4 geänderte Dateien mit 59 neuen und 115 gelöschten Zeilen
Nur Änderungen aus Commit 4e801ea4eb werden angezeigt - Alle Commits anzeigen

Datei anzeigen

@ -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;
}
}
}

Datei anzeigen

@ -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);
}
}
}

Datei anzeigen

@ -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);
}
}
}

Datei anzeigen

@ -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);
}
}
}