feat: 完成 Paper 26.1 适配并整理配置结构

This commit is contained in:
2026-04-24 04:37:57 +08:00
parent 33ca8abd2a
commit 00aa10a44e
39 changed files with 2345 additions and 849 deletions

View File

@@ -1,11 +1,14 @@
package cn.infstar.essentialsC;
import cn.infstar.essentialsC.admin.AdminModeManager;
import cn.infstar.essentialsC.commands.BaseCommand;
import cn.infstar.essentialsC.commands.CommandRegistry;
import cn.infstar.essentialsC.commands.HelpCommand;
import cn.infstar.essentialsC.tpsbar.TpsBarService;
import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.event.Listener;
import org.bukkit.plugin.java.JavaPlugin;
import java.lang.reflect.Field;
@@ -13,10 +16,18 @@ import java.lang.reflect.Field;
public final class EssentialsC extends JavaPlugin {
private static LangManager langManager;
private AdminModeManager adminModeManager;
private TpsBarService tpsBarManager;
@Override
public void onEnable() {
langManager = new LangManager(this);
adminModeManager = new AdminModeManager(this);
getServer().getPluginManager().registerEvents(adminModeManager, this);
tpsBarManager = createOptionalService("cn.infstar.essentialsC.tpsbar.TpsBarManager", TpsBarService.class);
if (tpsBarManager instanceof Listener listener) {
getServer().getPluginManager().registerEvents(listener, this);
}
registerPluginChannels();
registerListeners();
registerCommands();
@@ -26,6 +37,12 @@ public final class EssentialsC extends JavaPlugin {
@Override
public void onDisable() {
if (tpsBarManager != null) {
tpsBarManager.shutdown();
}
if (adminModeManager != null) {
adminModeManager.shutdown();
}
getLogger().info("EssentialsC disabled.");
}
@@ -33,6 +50,14 @@ public final class EssentialsC extends JavaPlugin {
return langManager;
}
public AdminModeManager getAdminModeManager() {
return adminModeManager;
}
public TpsBarService getTpsBarManager() {
return tpsBarManager;
}
private void registerPluginChannels() {
org.bukkit.plugin.messaging.Messenger messenger = getServer().getMessenger();
messenger.registerOutgoingPluginChannel(this, "fabric:recipe_sync");
@@ -73,6 +98,16 @@ public final class EssentialsC extends JavaPlugin {
}
}
private <T> T createOptionalService(String className, Class<T> serviceType) {
try {
Class<?> targetClass = Class.forName(className);
Object instance = targetClass.getConstructor(EssentialsC.class).newInstance(this);
return serviceType.cast(instance);
} catch (Exception ignored) {
return null;
}
}
private void registerCommands() {
try {
Field bukkitCommandMap = Bukkit.getServer().getClass().getDeclaredField("commandMap");
@@ -80,6 +115,9 @@ public final class EssentialsC extends JavaPlugin {
org.bukkit.command.CommandMap commandMap = (org.bukkit.command.CommandMap) bukkitCommandMap.get(Bukkit.getServer());
for (CommandRegistry.CommandSpec spec : CommandRegistry.getCommandSpecs()) {
if (!spec.standalone()) {
continue;
}
BaseCommand executor = CommandRegistry.getCommand(spec.name());
if (executor == null) {
continue;