Modularise project

This commit is contained in:
Frank van der Heijden 2020-07-03 15:52:56 +02:00
parent 2be3825438
commit 4416d55173
No known key found for this signature in database
GPG key ID: 26DA56488D314D11
55 changed files with 388 additions and 331 deletions

24
Bukkit/build.gradle Normal file
View file

@ -0,0 +1,24 @@
group = rootProject.group + '.bukkit'
String dependencyDir = group + '.dependencies'
version = rootProject.version
archivesBaseName = rootProject.name + '-Bukkit'
dependencies {
implementation 'co.aikar:acf-paper:0.5.0-SNAPSHOT'
implementation 'org.bstats:bstats-bukkit:1.7'
implementation project(":Common")
compileOnly 'com.destroystokyo.paper:paper-api:1.16.1-R0.1-SNAPSHOT'
}
processResources {
from('src/main/resources') {
include 'plugin.yml'
expand(version: project.version)
}
}
shadowJar {
relocate 'org.bstats.bukkit', dependencyDir + '.bstats'
relocate 'co.aikar.commands', dependencyDir + '.acf'
relocate 'co.aikar.locales', dependencyDir + '.locales'
}

View file

@ -1,4 +1,4 @@
package net.frankheijden.serverutils;
package net.frankheijden.serverutils.bukkit;
import co.aikar.commands.BukkitCommandCompletionContext;
import co.aikar.commands.CommandCompletions;
@ -10,15 +10,16 @@ import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import net.frankheijden.serverutils.commands.CommandPlugins;
import net.frankheijden.serverutils.commands.CommandServerUtils;
import net.frankheijden.serverutils.config.Config;
import net.frankheijden.serverutils.config.Messenger;
import net.frankheijden.serverutils.listeners.MainListener;
import net.frankheijden.serverutils.managers.VersionManager;
import net.frankheijden.serverutils.reflection.RCommandMap;
import net.frankheijden.serverutils.reflection.RCraftServer;
import net.frankheijden.serverutils.tasks.UpdateCheckerTask;
import net.frankheijden.serverutils.bukkit.commands.CommandPlugins;
import net.frankheijden.serverutils.bukkit.commands.CommandServerUtils;
import net.frankheijden.serverutils.bukkit.config.Config;
import net.frankheijden.serverutils.bukkit.config.Messenger;
import net.frankheijden.serverutils.bukkit.listeners.MainListener;
import net.frankheijden.serverutils.bukkit.managers.VersionManager;
import net.frankheijden.serverutils.bukkit.reflection.BukkitReflection;
import net.frankheijden.serverutils.bukkit.reflection.RCommandMap;
import net.frankheijden.serverutils.bukkit.reflection.RCraftServer;
import net.frankheijden.serverutils.bukkit.tasks.UpdateCheckerTask;
import org.bstats.bukkit.Metrics;
import org.bukkit.Bukkit;
import org.bukkit.command.Command;
@ -45,6 +46,7 @@ public class ServerUtils extends JavaPlugin implements CommandExecutor {
instance = this;
new Metrics(this, BSTATS_METRICS_ID);
new BukkitReflection();
this.commandManager = new PaperCommandManager(this);
commandManager.registerCommand(new CommandServerUtils());
@ -116,8 +118,8 @@ public class ServerUtils extends JavaPlugin implements CommandExecutor {
restoreBukkitPluginCommand();
}
new Config(copyResourceIfNotExists("config.yml"));
new Messenger(copyResourceIfNotExists("messages.yml"));
new Config(copyResourceIfNotExists("config.yml", "bukkit-config.yml"));
new Messenger(copyResourceIfNotExists("messages.yml", "bukkit-messages.yml"));
if (!Config.getInstance().getBoolean("settings.disable-plugins-command")) {
this.removeCommands("pl", "plugins");
@ -146,13 +148,15 @@ public class ServerUtils extends JavaPlugin implements CommandExecutor {
}
}
private File copyResourceIfNotExists(String resource) {
private File copyResourceIfNotExists(String targetName, String resource) {
createDataFolderIfNotExists();
File file = new File(getDataFolder(), resource);
File file = new File(getDataFolder(), targetName);
if (!file.exists()) {
getLogger().info(String.format("'%s' not found, creating!", resource));
getLogger().info(String.format("'%s' not found, creating!", targetName));
saveResource(resource, false);
File copiedFile = new File(getDataFolder(), resource);
copiedFile.renameTo(file);
}
return file;
}

View file

@ -1,4 +1,4 @@
package net.frankheijden.serverutils.commands;
package net.frankheijden.serverutils.bukkit.commands;
import co.aikar.commands.BaseCommand;
import co.aikar.commands.annotation.CommandAlias;
@ -9,9 +9,9 @@ import co.aikar.commands.annotation.Subcommand;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import net.frankheijden.serverutils.config.Messenger;
import net.frankheijden.serverutils.utils.ListBuilder;
import net.frankheijden.serverutils.utils.ListFormat;
import net.frankheijden.serverutils.bukkit.config.Messenger;
import net.frankheijden.serverutils.common.utils.ListBuilder;
import net.frankheijden.serverutils.common.utils.ListFormat;
import org.bukkit.Bukkit;
import org.bukkit.command.CommandSender;
import org.bukkit.plugin.Plugin;

View file

@ -1,7 +1,7 @@
package net.frankheijden.serverutils.commands;
package net.frankheijden.serverutils.bukkit.commands;
import static net.frankheijden.serverutils.config.Messenger.sendMessage;
import static net.frankheijden.serverutils.reflection.ReflectionUtils.MINOR;
import static net.frankheijden.serverutils.bukkit.config.Messenger.sendMessage;
import static net.frankheijden.serverutils.bukkit.reflection.BukkitReflection.MINOR;
import co.aikar.commands.BaseCommand;
import co.aikar.commands.annotation.CommandAlias;
@ -17,18 +17,18 @@ import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import net.frankheijden.serverutils.ServerUtils;
import net.frankheijden.serverutils.config.Messenger;
import net.frankheijden.serverutils.managers.CloseableResult;
import net.frankheijden.serverutils.managers.LoadResult;
import net.frankheijden.serverutils.managers.PluginManager;
import net.frankheijden.serverutils.managers.Result;
import net.frankheijden.serverutils.reflection.RCraftServer;
import net.frankheijden.serverutils.utils.FormatBuilder;
import net.frankheijden.serverutils.utils.ForwardFilter;
import net.frankheijden.serverutils.utils.ListBuilder;
import net.frankheijden.serverutils.utils.ListFormat;
import net.frankheijden.serverutils.utils.ReloadHandler;
import net.frankheijden.serverutils.bukkit.ServerUtils;
import net.frankheijden.serverutils.bukkit.config.Messenger;
import net.frankheijden.serverutils.bukkit.managers.CloseableResult;
import net.frankheijden.serverutils.bukkit.managers.LoadResult;
import net.frankheijden.serverutils.bukkit.managers.PluginManager;
import net.frankheijden.serverutils.bukkit.managers.Result;
import net.frankheijden.serverutils.bukkit.reflection.RCraftServer;
import net.frankheijden.serverutils.bukkit.utils.FormatBuilder;
import net.frankheijden.serverutils.bukkit.utils.ForwardFilter;
import net.frankheijden.serverutils.bukkit.utils.ReloadHandler;
import net.frankheijden.serverutils.common.utils.ListBuilder;
import net.frankheijden.serverutils.common.utils.ListFormat;
import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;

View file

@ -1,4 +1,4 @@
package net.frankheijden.serverutils.config;
package net.frankheijden.serverutils.bukkit.config;
import java.io.File;
@ -7,7 +7,7 @@ public class Config extends YamlResource {
private static Config instance;
public Config(File file) {
super(file, "config.yml");
super(file, "bukkit-config.yml");
instance = this;
}

View file

@ -1,8 +1,8 @@
package net.frankheijden.serverutils.config;
package net.frankheijden.serverutils.bukkit.config;
import java.io.File;
import net.frankheijden.serverutils.ServerUtils;
import net.frankheijden.serverutils.bukkit.ServerUtils;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
@ -12,7 +12,7 @@ public class Messenger extends YamlResource {
private static Messenger instance;
public Messenger(File file) {
super(file, "messages.yml");
super(file, "bukkit-messages.yml");
instance = this;
}
@ -27,7 +27,7 @@ public class Messenger extends YamlResource {
if (message != null) {
return apply(message, replacements);
} else {
plugin.getLogger().severe("Missing locale in messages.yml at path '" + path + "'!");
plugin.getLogger().severe("Missing locale in bukkit-messages.yml at path '" + path + "'!");
}
return null;
}

View file

@ -1,11 +1,11 @@
package net.frankheijden.serverutils.config;
package net.frankheijden.serverutils.bukkit.config;
import java.io.File;
import java.io.InputStream;
import java.io.InputStreamReader;
import net.frankheijden.serverutils.ServerUtils;
import net.frankheijden.serverutils.utils.YamlUtils;
import net.frankheijden.serverutils.bukkit.ServerUtils;
import net.frankheijden.serverutils.bukkit.utils.YamlUtils;
import org.bukkit.configuration.file.YamlConfiguration;
public abstract class YamlResource {

View file

@ -1,7 +1,7 @@
package net.frankheijden.serverutils.listeners;
package net.frankheijden.serverutils.bukkit.listeners;
import net.frankheijden.serverutils.config.Config;
import net.frankheijden.serverutils.tasks.UpdateCheckerTask;
import net.frankheijden.serverutils.bukkit.config.Config;
import net.frankheijden.serverutils.bukkit.tasks.UpdateCheckerTask;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;

View file

@ -1,4 +1,4 @@
package net.frankheijden.serverutils.managers;
package net.frankheijden.serverutils.bukkit.managers;
import java.io.Closeable;
import java.io.IOException;

View file

@ -1,4 +1,4 @@
package net.frankheijden.serverutils.managers;
package net.frankheijden.serverutils.bukkit.managers;
import org.bukkit.plugin.Plugin;

View file

@ -1,20 +1,18 @@
package net.frankheijden.serverutils.managers;
package net.frankheijden.serverutils.bukkit.managers;
import java.io.Closeable;
import java.io.File;
import java.lang.reflect.InvocationTargetException;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import net.frankheijden.serverutils.ServerUtils;
import net.frankheijden.serverutils.reflection.RCommandMap;
import net.frankheijden.serverutils.reflection.RCraftServer;
import net.frankheijden.serverutils.reflection.RCraftingManager;
import net.frankheijden.serverutils.reflection.RJavaPlugin;
import net.frankheijden.serverutils.reflection.RPlugin;
import net.frankheijden.serverutils.reflection.RPluginClassLoader;
import net.frankheijden.serverutils.reflection.RSimplePluginManager;
import net.frankheijden.serverutils.bukkit.ServerUtils;
import net.frankheijden.serverutils.bukkit.reflection.RCommandMap;
import net.frankheijden.serverutils.bukkit.reflection.RCraftServer;
import net.frankheijden.serverutils.bukkit.reflection.RCraftingManager;
import net.frankheijden.serverutils.bukkit.reflection.RJavaPlugin;
import net.frankheijden.serverutils.bukkit.reflection.RPluginClassLoader;
import net.frankheijden.serverutils.bukkit.reflection.RSimplePluginManager;
import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.PluginCommand;

View file

@ -1,6 +1,6 @@
package net.frankheijden.serverutils.managers;
package net.frankheijden.serverutils.bukkit.managers;
import net.frankheijden.serverutils.config.Messenger;
import net.frankheijden.serverutils.bukkit.config.Messenger;
import org.bukkit.command.CommandSender;
public enum Result {

View file

@ -1,6 +1,6 @@
package net.frankheijden.serverutils.managers;
package net.frankheijden.serverutils.bukkit.managers;
import net.frankheijden.serverutils.ServerUtils;
import net.frankheijden.serverutils.bukkit.ServerUtils;
public class VersionManager {

View file

@ -0,0 +1,28 @@
package net.frankheijden.serverutils.bukkit.reflection;
import net.frankheijden.serverutils.common.reflection.ReflectionUtils;
import net.frankheijden.serverutils.common.reflection.VersionParam;
import org.bukkit.Bukkit;
public class BukkitReflection extends ReflectionUtils {
public static String NMS;
public static int MAJOR;
public static int MINOR;
public static int PATCH;
static {
String bukkitPackage = Bukkit.getServer().getClass().getPackage().getName();
NMS = bukkitPackage.substring(bukkitPackage.lastIndexOf('.') + 1);
String[] split = NMS.split("_");
MAJOR = Integer.parseInt(split[0].substring(1));
MINOR = Integer.parseInt(split[1]);
PATCH = Integer.parseInt(split[2].substring(1, 2));
}
@Override
public boolean isCompatible(VersionParam versionParam) {
return versionParam.min <= MINOR && MINOR <= versionParam.max;
}
}

View file

@ -1,6 +1,6 @@
package net.frankheijden.serverutils.reflection;
package net.frankheijden.serverutils.bukkit.reflection;
import static net.frankheijden.serverutils.reflection.ReflectionUtils.getDeclaredField;
import static net.frankheijden.serverutils.common.reflection.ReflectionUtils.getDeclaredField;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;

View file

@ -1,18 +1,18 @@
package net.frankheijden.serverutils.reflection;
package net.frankheijden.serverutils.bukkit.reflection;
import static net.frankheijden.serverutils.reflection.ReflectionUtils.FieldParam.fieldOf;
import static net.frankheijden.serverutils.reflection.ReflectionUtils.MethodParam.methodOf;
import static net.frankheijden.serverutils.reflection.ReflectionUtils.VersionParam.ALL_VERSIONS;
import static net.frankheijden.serverutils.reflection.ReflectionUtils.VersionParam.max;
import static net.frankheijden.serverutils.reflection.ReflectionUtils.VersionParam.min;
import static net.frankheijden.serverutils.reflection.ReflectionUtils.VersionParam.versionOf;
import static net.frankheijden.serverutils.reflection.ReflectionUtils.get;
import static net.frankheijden.serverutils.reflection.ReflectionUtils.getAllFields;
import static net.frankheijden.serverutils.reflection.ReflectionUtils.getAllMethods;
import static net.frankheijden.serverutils.reflection.ReflectionUtils.getDeclaredField;
import static net.frankheijden.serverutils.reflection.ReflectionUtils.getDeclaredMethod;
import static net.frankheijden.serverutils.reflection.ReflectionUtils.invoke;
import static net.frankheijden.serverutils.reflection.ReflectionUtils.set;
import static net.frankheijden.serverutils.common.reflection.FieldParam.fieldOf;
import static net.frankheijden.serverutils.common.reflection.MethodParam.methodOf;
import static net.frankheijden.serverutils.common.reflection.ReflectionUtils.get;
import static net.frankheijden.serverutils.common.reflection.ReflectionUtils.getAllFields;
import static net.frankheijden.serverutils.common.reflection.ReflectionUtils.getAllMethods;
import static net.frankheijden.serverutils.common.reflection.ReflectionUtils.getDeclaredField;
import static net.frankheijden.serverutils.common.reflection.ReflectionUtils.getDeclaredMethod;
import static net.frankheijden.serverutils.common.reflection.ReflectionUtils.invoke;
import static net.frankheijden.serverutils.common.reflection.ReflectionUtils.set;
import static net.frankheijden.serverutils.common.reflection.VersionParam.ALL_VERSIONS;
import static net.frankheijden.serverutils.common.reflection.VersionParam.max;
import static net.frankheijden.serverutils.common.reflection.VersionParam.min;
import static net.frankheijden.serverutils.common.reflection.VersionParam.versionOf;
import java.io.File;
import java.lang.reflect.Field;
@ -40,7 +40,7 @@ public class RCraftServer {
static {
try {
craftServerClass = Class.forName(String.format("org.bukkit.craftbukkit.%s.CraftServer",
ReflectionUtils.NMS));
BukkitReflection.NMS));
craftServer = craftServerClass.cast(Bukkit.getServer());
commandsConfigFile = (File) getDeclaredMethod(craftServerClass,

View file

@ -1,11 +1,11 @@
package net.frankheijden.serverutils.reflection;
package net.frankheijden.serverutils.bukkit.reflection;
import static net.frankheijden.serverutils.reflection.ReflectionUtils.FieldParam.fieldOf;
import static net.frankheijden.serverutils.reflection.ReflectionUtils.MINOR;
import static net.frankheijden.serverutils.reflection.ReflectionUtils.VersionParam.min;
import static net.frankheijden.serverutils.reflection.ReflectionUtils.get;
import static net.frankheijden.serverutils.reflection.ReflectionUtils.getAllFields;
import static net.frankheijden.serverutils.reflection.ReflectionUtils.invoke;
import static net.frankheijden.serverutils.bukkit.reflection.BukkitReflection.MINOR;
import static net.frankheijden.serverutils.common.reflection.FieldParam.fieldOf;
import static net.frankheijden.serverutils.common.reflection.ReflectionUtils.get;
import static net.frankheijden.serverutils.common.reflection.ReflectionUtils.getAllFields;
import static net.frankheijden.serverutils.common.reflection.ReflectionUtils.invoke;
import static net.frankheijden.serverutils.common.reflection.VersionParam.min;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
@ -14,7 +14,7 @@ import java.util.Map;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.function.Predicate;
import net.frankheijden.serverutils.utils.MapUtils;
import net.frankheijden.serverutils.common.utils.MapUtils;
import org.bukkit.plugin.Plugin;
public class RCraftingManager {
@ -25,7 +25,7 @@ public class RCraftingManager {
static {
try {
craftingManagerClass = Class.forName(String.format("net.minecraft.server.%s.CraftingManager",
ReflectionUtils.NMS));
BukkitReflection.NMS));
fields = getAllFields(craftingManagerClass,
fieldOf("recipes", min(12)));
} catch (Exception ex) {

View file

@ -1,15 +1,15 @@
package net.frankheijden.serverutils.reflection;
package net.frankheijden.serverutils.bukkit.reflection;
import static net.frankheijden.serverutils.reflection.ReflectionUtils.FieldParam.fieldOf;
import static net.frankheijden.serverutils.reflection.ReflectionUtils.MINOR;
import static net.frankheijden.serverutils.reflection.ReflectionUtils.MethodParam.methodOf;
import static net.frankheijden.serverutils.reflection.ReflectionUtils.VersionParam.ALL_VERSIONS;
import static net.frankheijden.serverutils.reflection.ReflectionUtils.VersionParam.min;
import static net.frankheijden.serverutils.reflection.ReflectionUtils.get;
import static net.frankheijden.serverutils.reflection.ReflectionUtils.getAllFields;
import static net.frankheijden.serverutils.reflection.ReflectionUtils.getAllMethods;
import static net.frankheijden.serverutils.reflection.ReflectionUtils.invoke;
import static net.frankheijden.serverutils.reflection.ReflectionUtils.set;
import static net.frankheijden.serverutils.bukkit.reflection.BukkitReflection.MINOR;
import static net.frankheijden.serverutils.common.reflection.FieldParam.fieldOf;
import static net.frankheijden.serverutils.common.reflection.MethodParam.methodOf;
import static net.frankheijden.serverutils.common.reflection.ReflectionUtils.get;
import static net.frankheijden.serverutils.common.reflection.ReflectionUtils.getAllFields;
import static net.frankheijden.serverutils.common.reflection.ReflectionUtils.getAllMethods;
import static net.frankheijden.serverutils.common.reflection.ReflectionUtils.invoke;
import static net.frankheijden.serverutils.common.reflection.ReflectionUtils.set;
import static net.frankheijden.serverutils.common.reflection.VersionParam.ALL_VERSIONS;
import static net.frankheijden.serverutils.common.reflection.VersionParam.min;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
@ -25,7 +25,7 @@ public class RDedicatedServer {
static {
try {
dedicatedServerClass = Class.forName(String.format("net.minecraft.server.%s.DedicatedServer",
ReflectionUtils.NMS));
BukkitReflection.NMS));
fields = getAllFields(dedicatedServerClass,
fieldOf("propertyManager", ALL_VERSIONS),

View file

@ -1,8 +1,8 @@
package net.frankheijden.serverutils.reflection;
package net.frankheijden.serverutils.bukkit.reflection;
import static net.frankheijden.serverutils.reflection.ReflectionUtils.FieldParam.fieldOf;
import static net.frankheijden.serverutils.reflection.ReflectionUtils.VersionParam.ALL_VERSIONS;
import static net.frankheijden.serverutils.reflection.ReflectionUtils.getAllFields;
import static net.frankheijden.serverutils.common.reflection.FieldParam.fieldOf;
import static net.frankheijden.serverutils.common.reflection.ReflectionUtils.getAllFields;
import static net.frankheijden.serverutils.common.reflection.VersionParam.ALL_VERSIONS;
import java.lang.reflect.Field;
import java.util.Map;
@ -15,7 +15,7 @@ public class RDedicatedServerProperties {
static {
try {
serverPropertiesClass = Class.forName(String.format("net.minecraft.server.%s.DedicatedServerProperties",
ReflectionUtils.NMS));
BukkitReflection.NMS));
fields = getAllFields(serverPropertiesClass,
fieldOf("spawnAnimals", ALL_VERSIONS),
fieldOf("spawnNpcs", ALL_VERSIONS),

View file

@ -1,8 +1,8 @@
package net.frankheijden.serverutils.reflection;
package net.frankheijden.serverutils.bukkit.reflection;
import static net.frankheijden.serverutils.reflection.ReflectionUtils.MethodParam.methodOf;
import static net.frankheijden.serverutils.reflection.ReflectionUtils.VersionParam.ALL_VERSIONS;
import static net.frankheijden.serverutils.reflection.ReflectionUtils.getAllMethods;
import static net.frankheijden.serverutils.common.reflection.MethodParam.methodOf;
import static net.frankheijden.serverutils.common.reflection.ReflectionUtils.getAllMethods;
import static net.frankheijden.serverutils.common.reflection.VersionParam.ALL_VERSIONS;
import java.lang.reflect.Method;
import java.util.Map;
@ -15,7 +15,7 @@ public class RDedicatedServerSettings {
static {
try {
serverSettingsClass = Class.forName(String.format("net.minecraft.server.%s.DedicatedServerSettings",
ReflectionUtils.NMS));
BukkitReflection.NMS));
methods = getAllMethods(serverSettingsClass,
methodOf("getProperties", ALL_VERSIONS));
} catch (Exception ex) {

View file

@ -1,9 +1,9 @@
package net.frankheijden.serverutils.reflection;
package net.frankheijden.serverutils.bukkit.reflection;
import static net.frankheijden.serverutils.reflection.ReflectionUtils.MethodParam.methodOf;
import static net.frankheijden.serverutils.reflection.ReflectionUtils.VersionParam.ALL_VERSIONS;
import static net.frankheijden.serverutils.reflection.ReflectionUtils.getAllMethods;
import static net.frankheijden.serverutils.reflection.ReflectionUtils.invoke;
import static net.frankheijden.serverutils.common.reflection.MethodParam.methodOf;
import static net.frankheijden.serverutils.common.reflection.ReflectionUtils.getAllMethods;
import static net.frankheijden.serverutils.common.reflection.ReflectionUtils.invoke;
import static net.frankheijden.serverutils.common.reflection.VersionParam.ALL_VERSIONS;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

View file

@ -1,9 +1,9 @@
package net.frankheijden.serverutils.reflection;
package net.frankheijden.serverutils.bukkit.reflection;
import static net.frankheijden.serverutils.reflection.ReflectionUtils.MethodParam.methodOf;
import static net.frankheijden.serverutils.reflection.ReflectionUtils.VersionParam.ALL_VERSIONS;
import static net.frankheijden.serverutils.reflection.ReflectionUtils.getAllMethods;
import static net.frankheijden.serverutils.reflection.ReflectionUtils.invoke;
import static net.frankheijden.serverutils.common.reflection.MethodParam.methodOf;
import static net.frankheijden.serverutils.common.reflection.ReflectionUtils.getAllMethods;
import static net.frankheijden.serverutils.common.reflection.ReflectionUtils.invoke;
import static net.frankheijden.serverutils.common.reflection.VersionParam.ALL_VERSIONS;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
@ -16,7 +16,7 @@ public class RJsonList {
static {
try {
jsonListClass = Class.forName(String.format("net.minecraft.server.%s.JsonList", ReflectionUtils.NMS));
jsonListClass = Class.forName(String.format("net.minecraft.server.%s.JsonList", BukkitReflection.NMS));
methods = getAllMethods(jsonListClass,
methodOf("load", ALL_VERSIONS));
} catch (Exception ex) {

View file

@ -1,10 +1,11 @@
package net.frankheijden.serverutils.reflection;
package net.frankheijden.serverutils.bukkit.reflection;
import static net.frankheijden.serverutils.reflection.ReflectionUtils.FieldParam.fieldOf;
import static net.frankheijden.serverutils.reflection.ReflectionUtils.VersionParam.max;
import static net.frankheijden.serverutils.reflection.ReflectionUtils.VersionParam.min;
import static net.frankheijden.serverutils.reflection.ReflectionUtils.get;
import static net.frankheijden.serverutils.reflection.ReflectionUtils.getAllFields;
import static net.frankheijden.serverutils.bukkit.reflection.BukkitReflection.MINOR;
import static net.frankheijden.serverutils.common.reflection.FieldParam.fieldOf;
import static net.frankheijden.serverutils.common.reflection.ReflectionUtils.get;
import static net.frankheijden.serverutils.common.reflection.ReflectionUtils.getAllFields;
import static net.frankheijden.serverutils.common.reflection.VersionParam.max;
import static net.frankheijden.serverutils.common.reflection.VersionParam.min;
import java.lang.reflect.Field;
import java.util.Locale;
@ -22,7 +23,7 @@ public class RMinecraftKey {
static {
try {
minecraftKeyClass = Class.forName(String.format("net.minecraft.server.%s.MinecraftKey",
ReflectionUtils.NMS));
BukkitReflection.NMS));
fields = getAllFields(minecraftKeyClass,
fieldOf("a", max(13)),
fieldOf("namespace", min(14)));
@ -38,7 +39,7 @@ public class RMinecraftKey {
* @throws IllegalAccessException When prohibited access to the field.
*/
public static String getNameSpace(Object instance) throws IllegalAccessException {
if (ReflectionUtils.MINOR <= 13) {
if (MINOR <= 13) {
return (String) get(fields, instance, "a");
}
return (String) get(fields, instance, "namespace");

View file

@ -1,8 +1,8 @@
package net.frankheijden.serverutils.reflection;
package net.frankheijden.serverutils.bukkit.reflection;
import static net.frankheijden.serverutils.reflection.ReflectionUtils.MethodParam.methodOf;
import static net.frankheijden.serverutils.reflection.ReflectionUtils.VersionParam.ALL_VERSIONS;
import static net.frankheijden.serverutils.reflection.ReflectionUtils.getAllMethods;
import static net.frankheijden.serverutils.common.reflection.MethodParam.methodOf;
import static net.frankheijden.serverutils.common.reflection.ReflectionUtils.getAllMethods;
import static net.frankheijden.serverutils.common.reflection.VersionParam.ALL_VERSIONS;
import java.lang.reflect.Method;
import java.util.Map;
@ -15,7 +15,7 @@ public class RMinecraftServer {
static {
try {
minecraftServerClass = Class.forName(String.format("net.minecraft.server.%s.MinecraftServer",
ReflectionUtils.NMS));
BukkitReflection.NMS));
methods = getAllMethods(minecraftServerClass,
methodOf("getServer", ALL_VERSIONS),
methodOf("getCraftingManager", ALL_VERSIONS));

View file

@ -1,8 +1,8 @@
package net.frankheijden.serverutils.reflection;
package net.frankheijden.serverutils.bukkit.reflection;
import static net.frankheijden.serverutils.reflection.ReflectionUtils.MethodParam.methodOf;
import static net.frankheijden.serverutils.reflection.ReflectionUtils.VersionParam.ALL_VERSIONS;
import static net.frankheijden.serverutils.reflection.ReflectionUtils.getAllMethods;
import static net.frankheijden.serverutils.common.reflection.MethodParam.methodOf;
import static net.frankheijden.serverutils.common.reflection.ReflectionUtils.getAllMethods;
import static net.frankheijden.serverutils.common.reflection.VersionParam.ALL_VERSIONS;
import java.lang.reflect.Method;
import java.util.Map;

View file

@ -1,8 +1,8 @@
package net.frankheijden.serverutils.reflection;
package net.frankheijden.serverutils.bukkit.reflection;
import static net.frankheijden.serverutils.reflection.ReflectionUtils.MethodParam.methodOf;
import static net.frankheijden.serverutils.reflection.ReflectionUtils.VersionParam.ALL_VERSIONS;
import static net.frankheijden.serverutils.reflection.ReflectionUtils.getAllMethods;
import static net.frankheijden.serverutils.common.reflection.MethodParam.methodOf;
import static net.frankheijden.serverutils.common.reflection.ReflectionUtils.getAllMethods;
import static net.frankheijden.serverutils.common.reflection.VersionParam.ALL_VERSIONS;
import java.lang.reflect.Method;
import java.util.Map;
@ -14,7 +14,7 @@ public class RPlayerList {
static {
try {
playerListClass = Class.forName(String.format("net.minecraft.server.%s.PlayerList", ReflectionUtils.NMS));
playerListClass = Class.forName(String.format("net.minecraft.server.%s.PlayerList", BukkitReflection.NMS));
methods = getAllMethods(playerListClass,
methodOf("getIPBans", ALL_VERSIONS),
methodOf("getProfileBans", ALL_VERSIONS));

View file

@ -1,6 +1,6 @@
package net.frankheijden.serverutils.reflection;
package net.frankheijden.serverutils.bukkit.reflection;
import static net.frankheijden.serverutils.reflection.ReflectionUtils.getDeclaredMethod;
import static net.frankheijden.serverutils.common.reflection.ReflectionUtils.getDeclaredMethod;
import java.io.File;
import java.lang.reflect.InvocationTargetException;

View file

@ -1,9 +1,9 @@
package net.frankheijden.serverutils.reflection;
package net.frankheijden.serverutils.bukkit.reflection;
import static net.frankheijden.serverutils.reflection.ReflectionUtils.FieldParam.fieldOf;
import static net.frankheijden.serverutils.reflection.ReflectionUtils.VersionParam.ALL_VERSIONS;
import static net.frankheijden.serverutils.reflection.ReflectionUtils.getAllFields;
import static net.frankheijden.serverutils.reflection.ReflectionUtils.set;
import static net.frankheijden.serverutils.common.reflection.FieldParam.fieldOf;
import static net.frankheijden.serverutils.common.reflection.ReflectionUtils.getAllFields;
import static net.frankheijden.serverutils.common.reflection.ReflectionUtils.set;
import static net.frankheijden.serverutils.common.reflection.VersionParam.ALL_VERSIONS;
import java.io.Closeable;
import java.lang.reflect.Field;

View file

@ -1,8 +1,8 @@
package net.frankheijden.serverutils.reflection;
package net.frankheijden.serverutils.bukkit.reflection;
import static net.frankheijden.serverutils.reflection.ReflectionUtils.MethodParam.methodOf;
import static net.frankheijden.serverutils.reflection.ReflectionUtils.VersionParam.ALL_VERSIONS;
import static net.frankheijden.serverutils.reflection.ReflectionUtils.getAllMethods;
import static net.frankheijden.serverutils.common.reflection.MethodParam.methodOf;
import static net.frankheijden.serverutils.common.reflection.ReflectionUtils.getAllMethods;
import static net.frankheijden.serverutils.common.reflection.VersionParam.ALL_VERSIONS;
import java.lang.reflect.Method;
import java.util.Map;
@ -15,7 +15,7 @@ public class RPropertyManager {
static {
try {
propertyManagerClass = Class.forName(String.format("net.minecraft.server.%s.PropertyManager",
ReflectionUtils.NMS));
BukkitReflection.NMS));
methods = getAllMethods(propertyManagerClass,
methodOf("getBoolean", ALL_VERSIONS, String.class, boolean.class),
methodOf("getString", ALL_VERSIONS, String.class, String.class));

View file

@ -1,15 +1,15 @@
package net.frankheijden.serverutils.reflection;
package net.frankheijden.serverutils.bukkit.reflection;
import static net.frankheijden.serverutils.reflection.ReflectionUtils.FieldParam.fieldOf;
import static net.frankheijden.serverutils.reflection.ReflectionUtils.VersionParam.ALL_VERSIONS;
import static net.frankheijden.serverutils.reflection.ReflectionUtils.get;
import static net.frankheijden.serverutils.reflection.ReflectionUtils.getAllFields;
import static net.frankheijden.serverutils.common.reflection.FieldParam.fieldOf;
import static net.frankheijden.serverutils.common.reflection.ReflectionUtils.get;
import static net.frankheijden.serverutils.common.reflection.ReflectionUtils.getAllFields;
import static net.frankheijden.serverutils.common.reflection.VersionParam.ALL_VERSIONS;
import java.lang.reflect.Field;
import java.util.Map;
import java.util.concurrent.atomic.AtomicBoolean;
import net.frankheijden.serverutils.utils.MapUtils;
import net.frankheijden.serverutils.common.utils.MapUtils;
import org.bukkit.plugin.Plugin;
public class RRegistryMaterials {
@ -21,7 +21,7 @@ public class RRegistryMaterials {
static {
try {
registryMaterialsClass = Class.forName(String.format("net.minecraft.server.%s.RegistryMaterials",
ReflectionUtils.NMS));
BukkitReflection.NMS));
fields = getAllFields(registryMaterialsClass,
fieldOf("b", ALL_VERSIONS));
} catch (Exception ex) {

View file

@ -1,15 +1,15 @@
package net.frankheijden.serverutils.reflection;
package net.frankheijden.serverutils.bukkit.reflection;
import static net.frankheijden.serverutils.reflection.ReflectionUtils.FieldParam.fieldOf;
import static net.frankheijden.serverutils.reflection.ReflectionUtils.VersionParam.ALL_VERSIONS;
import static net.frankheijden.serverutils.reflection.ReflectionUtils.get;
import static net.frankheijden.serverutils.reflection.ReflectionUtils.getAllFields;
import static net.frankheijden.serverutils.common.reflection.FieldParam.fieldOf;
import static net.frankheijden.serverutils.common.reflection.ReflectionUtils.get;
import static net.frankheijden.serverutils.common.reflection.ReflectionUtils.getAllFields;
import static net.frankheijden.serverutils.common.reflection.VersionParam.ALL_VERSIONS;
import java.lang.reflect.Field;
import java.util.Map;
import java.util.concurrent.atomic.AtomicBoolean;
import net.frankheijden.serverutils.utils.MapUtils;
import net.frankheijden.serverutils.common.utils.MapUtils;
import org.bukkit.plugin.Plugin;
public class RRegistrySimple {
@ -20,7 +20,7 @@ public class RRegistrySimple {
static {
try {
registrySimpleClass = Class.forName(String.format("net.minecraft.server.%s.RegistrySimple",
ReflectionUtils.NMS));
BukkitReflection.NMS));
fields = getAllFields(registrySimpleClass,
fieldOf("c", ALL_VERSIONS));
} catch (Exception ex) {

View file

@ -1,9 +1,9 @@
package net.frankheijden.serverutils.reflection;
package net.frankheijden.serverutils.bukkit.reflection;
import static net.frankheijden.serverutils.reflection.ReflectionUtils.FieldParam.fieldOf;
import static net.frankheijden.serverutils.reflection.ReflectionUtils.VersionParam.ALL_VERSIONS;
import static net.frankheijden.serverutils.reflection.ReflectionUtils.get;
import static net.frankheijden.serverutils.reflection.ReflectionUtils.getAllFields;
import static net.frankheijden.serverutils.common.reflection.FieldParam.fieldOf;
import static net.frankheijden.serverutils.common.reflection.ReflectionUtils.get;
import static net.frankheijden.serverutils.common.reflection.ReflectionUtils.getAllFields;
import static net.frankheijden.serverutils.common.reflection.VersionParam.ALL_VERSIONS;
import java.lang.reflect.Field;
import java.util.List;

View file

@ -1,4 +1,4 @@
package net.frankheijden.serverutils.tasks;
package net.frankheijden.serverutils.bukkit.tasks;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
@ -13,14 +13,14 @@ import java.net.SocketTimeoutException;
import java.net.UnknownHostException;
import java.util.logging.Level;
import net.frankheijden.serverutils.ServerUtils;
import net.frankheijden.serverutils.config.Config;
import net.frankheijden.serverutils.config.Messenger;
import net.frankheijden.serverutils.managers.CloseableResult;
import net.frankheijden.serverutils.managers.PluginManager;
import net.frankheijden.serverutils.managers.VersionManager;
import net.frankheijden.serverutils.utils.FileUtils;
import net.frankheijden.serverutils.utils.VersionUtils;
import net.frankheijden.serverutils.bukkit.ServerUtils;
import net.frankheijden.serverutils.bukkit.config.Config;
import net.frankheijden.serverutils.bukkit.config.Messenger;
import net.frankheijden.serverutils.bukkit.managers.CloseableResult;
import net.frankheijden.serverutils.bukkit.managers.PluginManager;
import net.frankheijden.serverutils.bukkit.managers.VersionManager;
import net.frankheijden.serverutils.common.utils.FileUtils;
import net.frankheijden.serverutils.common.utils.VersionUtils;
import org.bukkit.Bukkit;
import org.bukkit.command.CommandSender;
import org.bukkit.plugin.java.JavaPlugin;

View file

@ -1,9 +1,9 @@
package net.frankheijden.serverutils.utils;
package net.frankheijden.serverutils.bukkit.utils;
import java.util.ArrayList;
import java.util.List;
import net.frankheijden.serverutils.config.Messenger;
import net.frankheijden.serverutils.bukkit.config.Messenger;
import org.bukkit.command.CommandSender;
public class FormatBuilder {

View file

@ -1,8 +1,9 @@
package net.frankheijden.serverutils.utils;
package net.frankheijden.serverutils.bukkit.utils;
import java.util.logging.Level;
import java.util.logging.LogRecord;
import net.frankheijden.serverutils.common.utils.PredicateFilter;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;

View file

@ -1,4 +1,4 @@
package net.frankheijden.serverutils.utils;
package net.frankheijden.serverutils.bukkit.utils;
public interface ReloadHandler {

View file

@ -1,4 +1,4 @@
package net.frankheijden.serverutils.utils;
package net.frankheijden.serverutils.bukkit.utils;
import java.io.File;
import java.io.IOException;

View file

@ -1,5 +1,5 @@
name: ServerUtils
main: net.frankheijden.serverutils.ServerUtils
main: net.frankheijden.serverutils.bukkit.ServerUtils
version: ${version}
author: FrankHeijden
api-version: '1.13'

11
Common/build.gradle Normal file
View file

@ -0,0 +1,11 @@
group = rootProject.group + '.common'
version = rootProject.version
archivesBaseName = rootProject.name + '-Common'
repositories {
mavenCentral()
}
dependencies {
compileOnly 'com.google.code.gson:gson:2.8.6'
}

View file

@ -0,0 +1,15 @@
package net.frankheijden.serverutils.common.reflection;
public class FieldParam {
public String field;
public VersionParam versionParam;
private FieldParam(String field, VersionParam versionParam) {
this.field = field;
this.versionParam = versionParam;
}
public static FieldParam fieldOf(String field, VersionParam versionParam) {
return new FieldParam(field, versionParam);
}
}

View file

@ -0,0 +1,18 @@
package net.frankheijden.serverutils.common.reflection;
public class MethodParam {
public String method;
public VersionParam versionParam;
public Class<?>[] params;
private MethodParam(String method, VersionParam versionParam, Class<?>... params) {
this.method = method;
this.versionParam = versionParam;
this.params = params;
}
public static MethodParam methodOf(String method, VersionParam versionParam, Class<?>... params) {
return new MethodParam(method, versionParam, params);
}
}

View file

@ -1,4 +1,4 @@
package net.frankheijden.serverutils.reflection;
package net.frankheijden.serverutils.common.reflection;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
@ -6,25 +6,20 @@ import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map;
import org.bukkit.Bukkit;
public abstract class ReflectionUtils {
public class ReflectionUtils {
private static ReflectionUtils instance;
public static String NMS;
public static int MAJOR;
public static int MINOR;
public static int PATCH;
static {
String bukkitPackage = Bukkit.getServer().getClass().getPackage().getName();
NMS = bukkitPackage.substring(bukkitPackage.lastIndexOf('.') + 1);
String[] split = NMS.split("_");
MAJOR = Integer.parseInt(split[0].substring(1));
MINOR = Integer.parseInt(split[1]);
PATCH = Integer.parseInt(split[2].substring(1, 2));
public ReflectionUtils() {
instance = this;
}
public static ReflectionUtils getInstance() {
return instance;
}
public abstract boolean isCompatible(VersionParam param);
/**
* Retrieves a declared field from a class and makes it accessible.
* @param clazz The class of the method.
@ -90,7 +85,7 @@ public class ReflectionUtils {
public static Map<String, Field> getAllFields(Class<?> clazz, FieldParam... fieldParams) {
Map<String, Field> map = new HashMap<>();
for (FieldParam fieldParam : fieldParams) {
if (!fieldParam.versionParam.isCompatible()) continue;
if (!getInstance().isCompatible(fieldParam.versionParam)) continue;
try {
map.put(fieldParam.field, getDeclaredField(clazz, fieldParam.field));
} catch (NoSuchFieldException ignored) {
@ -113,7 +108,7 @@ public class ReflectionUtils {
public static Map<String, Method> getAllMethods(Class<?> clazz, MethodParam... methodParams) {
Map<String, Method> map = new HashMap<>();
for (MethodParam methodParam : methodParams) {
if (!methodParam.versionParam.isCompatible()) continue;
if (!getInstance().isCompatible(methodParam.versionParam)) continue;
try {
map.put(methodParam.method, getDeclaredMethod(clazz, methodParam.method, methodParam.params));
} catch (NoSuchMethodException ignored) {
@ -174,70 +169,4 @@ public class ReflectionUtils {
if (field == null) return;
field.set(instance, value);
}
public static class VersionParam {
public static VersionParam ALL_VERSIONS = new VersionParam(Integer.MIN_VALUE, Integer.MAX_VALUE);
public int min;
public int max;
private VersionParam(int min, int max) {
this.min = min;
this.max = max;
}
public static VersionParam versionOf(int ver) {
return new VersionParam(ver, ver);
}
public static VersionParam between(int min, int max) {
return new VersionParam(min, max);
}
public static VersionParam min(int min) {
return between(min, Integer.MAX_VALUE);
}
public static VersionParam max(int max) {
return between(Integer.MIN_VALUE, max);
}
public boolean isCompatible() {
return VersionParam.isCompatible(this);
}
public static boolean isCompatible(VersionParam versionParam) {
return versionParam.min <= MINOR && MINOR <= versionParam.max;
}
}
public static class FieldParam {
public String field;
public VersionParam versionParam;
private FieldParam(String field, VersionParam versionParam) {
this.field = field;
this.versionParam = versionParam;
}
public static FieldParam fieldOf(String field, VersionParam versionParam) {
return new FieldParam(field, versionParam);
}
}
public static class MethodParam {
public String method;
public VersionParam versionParam;
public Class<?>[] params;
private MethodParam(String method, VersionParam versionParam, Class<?>... params) {
this.method = method;
this.versionParam = versionParam;
this.params = params;
}
public static MethodParam methodOf(String method, VersionParam versionParam, Class<?>... params) {
return new MethodParam(method, versionParam, params);
}
}
}

View file

@ -0,0 +1,30 @@
package net.frankheijden.serverutils.common.reflection;
public class VersionParam {
public static VersionParam ALL_VERSIONS = new VersionParam(Integer.MIN_VALUE, Integer.MAX_VALUE);
public int min;
public int max;
private VersionParam(int min, int max) {
this.min = min;
this.max = max;
}
public static VersionParam versionOf(int ver) {
return new VersionParam(ver, ver);
}
public static VersionParam between(int min, int max) {
return new VersionParam(min, max);
}
public static VersionParam min(int min) {
return between(min, Integer.MAX_VALUE);
}
public static VersionParam max(int max) {
return between(Integer.MIN_VALUE, max);
}
}

View file

@ -1,4 +1,4 @@
package net.frankheijden.serverutils.utils;
package net.frankheijden.serverutils.common.utils;
import com.google.gson.JsonElement;
import com.google.gson.JsonParser;

View file

@ -1,4 +1,4 @@
package net.frankheijden.serverutils.utils;
package net.frankheijden.serverutils.common.utils;
import java.util.List;

View file

@ -1,4 +1,4 @@
package net.frankheijden.serverutils.utils;
package net.frankheijden.serverutils.common.utils;
public interface ListFormat<T> {

View file

@ -1,4 +1,4 @@
package net.frankheijden.serverutils.utils;
package net.frankheijden.serverutils.common.utils;
import java.util.HashSet;
import java.util.Map;

View file

@ -1,4 +1,4 @@
package net.frankheijden.serverutils.utils;
package net.frankheijden.serverutils.common.utils;
import java.util.function.Predicate;
import java.util.logging.Filter;

View file

@ -1,4 +1,4 @@
package net.frankheijden.serverutils.utils;
package net.frankheijden.serverutils.common.utils;
import java.util.regex.Pattern;

View file

@ -1,4 +1,4 @@
package net.frankheijden.serverutils.utils;
package net.frankheijden.serverutils.common.utils;
import static java.util.Arrays.asList;
import static java.util.Collections.singletonList;

View file

@ -1,4 +1,4 @@
package net.frankheijden.serverutils.utils;
package net.frankheijden.serverutils.common.utils;
import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.jupiter.params.provider.Arguments.of;

View file

@ -1,12 +1,18 @@
plugins {
id 'java'
id 'checkstyle'
id 'com.github.johnrengelman.shadow' version '5.2.0'
}
String packagePath = 'net.frankheijden.serverutils'
group = packagePath
version '1.5.3'
group = 'net.frankheijden.serverutils'
version = '1.5.3'
sourceCompatibility = targetCompatibility = JavaVersion.VERSION_1_8
subprojects {
apply plugin: 'java'
apply plugin: 'checkstyle'
apply plugin: 'com.github.johnrengelman.shadow'
sourceCompatibility = targetCompatibility = JavaVersion.VERSION_1_8
repositories {
@ -16,33 +22,20 @@ repositories {
}
dependencies {
implementation 'co.aikar:acf-paper:0.5.0-SNAPSHOT'
implementation 'org.bstats:bstats-bukkit:1.7'
compileOnly 'com.destroystokyo.paper:paper-api:1.16.1-R0.1-SNAPSHOT'
testCompile 'org.assertj:assertj-core:3.15.0'
testCompile 'org.junit.jupiter:junit-jupiter-api:5.6.2'
testCompile 'org.junit.jupiter:junit-jupiter-params:5.6.2'
testCompile 'org.junit.jupiter:junit-jupiter-engine:5.6.2'
}
processResources {
from('src/main/resources') {
include 'plugin.yml'
expand(version: project.version)
}
}
compileJava {
options.compilerArgs += ["-parameters"]
options.fork = true
options.forkOptions.executable = 'javac'
}
shadowJar {
relocate 'co.aikar.commands', packagePath + '.acf'
relocate 'co.aikar.locales', packagePath + '.locales'
relocate 'org.bstats.bukkit', packagePath + '.dependencies.bstats'
test {
useJUnitPlatform()
}
checkstyle {
@ -54,8 +47,12 @@ checkstyle {
maxWarnings = 0
}
test {
useJUnitPlatform()
shadowJar.dependsOn checkstyleMain, checkstyleTest, test
}
dependencies {
compile project(path: ':Common', configuration: 'shadow')
compile project(path: ':Bukkit', configuration: 'shadow')
}
build.dependsOn shadowJar

View file

@ -1,2 +1,3 @@
rootProject.name = 'ServerUtils'
include 'Common', 'Bukkit'