mirror of
https://github.com/CarmJos/EasyPlugin.git
synced 2026-06-04 16:48:16 +08:00
[v1.1.0] 版本更新
- [U] 不再允许重写onLoad、onEnable与onDisable方法。 - [F] 修复GUI打开时的空指针异常。 - [A] 添加outputInfo方法,方便插件输出相关信息。 - [A] 添加 EasyPluginMessageProvider 用于实现多语言支持。
This commit is contained in:
@@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<artifactId>easyplugin-parent</artifactId>
|
||||
<groupId>cc.carm.lib</groupId>
|
||||
<version>1.0.0-SNAPSHOT</version>
|
||||
<version>1.1.0</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
<packaging>jar</packaging>
|
||||
|
||||
<name>EasyPlugin-Main</name>
|
||||
<description>轻松插件主要接口集,包含方便的插件入口类与相关工具类。</description>
|
||||
<description>轻松插件主要接口模块,包含方便的插件入口类与相关工具类。</description>
|
||||
<url>https://github.com/CarmJos/EasyPlugin</url>
|
||||
|
||||
<developers>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package cc.carm.lib.easyplugin;
|
||||
|
||||
import cc.carm.lib.easyplugin.utils.ColorParser;
|
||||
import cc.carm.lib.easyplugin.i18n.EasyPluginMessageProvider;
|
||||
import cc.carm.lib.easyplugin.utils.SchedulerUtils;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.command.CommandExecutor;
|
||||
@@ -18,47 +18,57 @@ import java.util.Map;
|
||||
|
||||
public abstract class EasyPlugin extends JavaPlugin {
|
||||
|
||||
protected EasyPluginMessageProvider messageProvider;
|
||||
|
||||
public EasyPlugin() {
|
||||
this(new EasyPluginMessageProvider.en_US());
|
||||
}
|
||||
|
||||
public EasyPlugin(EasyPluginMessageProvider messageProvider) {
|
||||
this.messageProvider = messageProvider;
|
||||
}
|
||||
|
||||
private SchedulerUtils scheduler;
|
||||
private boolean initialized = false;
|
||||
|
||||
@Override
|
||||
public void onLoad() {
|
||||
public final void onLoad() {
|
||||
scheduler = new SchedulerUtils(this);
|
||||
if (!hasOverride("load")) return;
|
||||
|
||||
if (!isOverride("load")) return;
|
||||
|
||||
log(getName() + " " + getDescription().getVersion() + " &7开始加载...");
|
||||
long startTime = System.currentTimeMillis();
|
||||
|
||||
log(messageProvider.loading(this));
|
||||
load();
|
||||
log("加载完成 ,共耗时 " + (System.currentTimeMillis() - startTime) + " ms 。");
|
||||
log(messageProvider.loaded(this, startTime));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onEnable() {
|
||||
public final void onEnable() {
|
||||
outputInfo();
|
||||
|
||||
log(getName() + " " + getDescription().getVersion() + " &7开始启动...");
|
||||
log(messageProvider.enabling(this));
|
||||
long startTime = System.currentTimeMillis();
|
||||
|
||||
this.initialized = initialize();
|
||||
|
||||
if (!isInitialized()) {
|
||||
if (!(this.initialized = initialize())) {
|
||||
setEnabled(false);
|
||||
log(messageProvider.enableFailure(this, startTime));
|
||||
return;
|
||||
}
|
||||
|
||||
log("启用完成 ,共耗时 " + (System.currentTimeMillis() - startTime) + " ms 。");
|
||||
log(messageProvider.enableSuccess(this, startTime));
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onDisable() {
|
||||
if (!isOverride("shutdown")) return;
|
||||
public final void onDisable() {
|
||||
if (!hasOverride("shutdown") || !isInitialized()) return;
|
||||
outputInfo();
|
||||
|
||||
log(getName() + " " + getDescription().getVersion() + " 开始卸载...");
|
||||
log(messageProvider.disabling(this));
|
||||
long startTime = System.currentTimeMillis();
|
||||
shutdown();
|
||||
log("卸载完成 ,共耗时 " + (System.currentTimeMillis() - startTime) + " ms 。");
|
||||
log(messageProvider.disabled(this, startTime));
|
||||
}
|
||||
|
||||
public void load() {
|
||||
@@ -69,6 +79,12 @@ public abstract class EasyPlugin extends JavaPlugin {
|
||||
public void shutdown() {
|
||||
}
|
||||
|
||||
/**
|
||||
* 重写以展示插件的相关信息,如插件横幅、下载地址等。
|
||||
*/
|
||||
public void outputInfo() {
|
||||
}
|
||||
|
||||
public boolean isInitialized() {
|
||||
return initialized;
|
||||
}
|
||||
@@ -99,28 +115,25 @@ public abstract class EasyPlugin extends JavaPlugin {
|
||||
if (tabCompleter != null) command.setTabCompleter(tabCompleter);
|
||||
}
|
||||
|
||||
public void print(@Nullable String prefix, @Nullable String... messages) {
|
||||
messageProvider.print(this, prefix, messages);
|
||||
}
|
||||
|
||||
public void log(@Nullable String... messages) {
|
||||
print(null, messages);
|
||||
}
|
||||
|
||||
public void print(@Nullable String prefix, @Nullable String... messages) {
|
||||
Arrays.stream(messages)
|
||||
.map(message -> "[" + getName() + "] " + (prefix == null ? "" : prefix) + message)
|
||||
.map(ColorParser::parse)
|
||||
.forEach(message -> Bukkit.getConsoleSender().sendMessage(message));
|
||||
}
|
||||
|
||||
public void error(String... messages) {
|
||||
print("&c[ERROR] &r", messages);
|
||||
}
|
||||
|
||||
public void debug(@Nullable String... messages) {
|
||||
if (isDebugging()) print("&7[DEBUG] &r", messages);
|
||||
if (isDebugging()) print("&8[DEBUG] &r", messages);
|
||||
}
|
||||
|
||||
|
||||
private boolean isOverride(String methodName) {
|
||||
@SuppressWarnings("BooleanMethodIsAlwaysInverted")
|
||||
private boolean hasOverride(String methodName) {
|
||||
Map<Method, Method> methodMap = new HashMap<>();
|
||||
Arrays.stream(EasyPlugin.class.getDeclaredMethods())
|
||||
.filter(method -> method.getName().equals(methodName))
|
||||
@@ -132,4 +145,5 @@ public abstract class EasyPlugin extends JavaPlugin {
|
||||
);
|
||||
return !methodMap.isEmpty();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+110
@@ -0,0 +1,110 @@
|
||||
package cc.carm.lib.easyplugin.i18n;
|
||||
|
||||
import cc.carm.lib.easyplugin.utils.ColorParser;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
public interface EasyPluginMessageProvider {
|
||||
|
||||
String loading(Plugin plugin);
|
||||
|
||||
String loaded(Plugin plugin, long startMillis);
|
||||
|
||||
String enabling(Plugin plugin);
|
||||
|
||||
String enableSuccess(Plugin plugin, long startMillis);
|
||||
|
||||
String enableFailure(Plugin plugin, long startMillis);
|
||||
|
||||
String disabling(Plugin plugin);
|
||||
|
||||
String disabled(Plugin plugin, long startMillis);
|
||||
|
||||
default void print(@NotNull Plugin plugin, @Nullable String prefix, @Nullable String... messages) {
|
||||
Arrays.stream(messages)
|
||||
.map(message -> "[" + plugin.getName() + "] " + (prefix == null ? "" : prefix) + message)
|
||||
.map(ColorParser::parse)
|
||||
.forEach(message -> Bukkit.getConsoleSender().sendMessage(message));
|
||||
}
|
||||
|
||||
class zh_CN implements EasyPluginMessageProvider {
|
||||
|
||||
@Override
|
||||
public String loading(Plugin plugin) {
|
||||
return "&f" + plugin.getName() + " " + plugin.getDescription().getVersion() + " 开始加载...";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String loaded(Plugin plugin, long startMillis) {
|
||||
return "&f加载完成 ,共耗时 " + (System.currentTimeMillis() - startMillis) + " ms 。";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String enabling(Plugin plugin) {
|
||||
return "&f" + plugin.getName() + " " + plugin.getDescription().getVersion() + " 开始启动...";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String enableSuccess(Plugin plugin, long startMillis) {
|
||||
return "&a启用完成! &f共耗时 " + (System.currentTimeMillis() - startMillis) + " ms 。";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String enableFailure(Plugin plugin, long startMillis) {
|
||||
return "&c启用失败! &f已耗时 " + (System.currentTimeMillis() - startMillis) + " ms 。";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String disabling(Plugin plugin) {
|
||||
return "&f" + plugin.getName() + " " + plugin.getDescription().getVersion() + " 开始卸载...";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String disabled(Plugin plugin, long startMillis) {
|
||||
return "&f卸载完成! 共耗时 " + (System.currentTimeMillis() - startMillis) + " ms 。";
|
||||
}
|
||||
}
|
||||
|
||||
class en_US implements EasyPluginMessageProvider {
|
||||
|
||||
@Override
|
||||
public String loading(Plugin plugin) {
|
||||
return "&f" + plugin.getName() + " " + plugin.getDescription().getVersion() + " loading...";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String loaded(Plugin plugin, long startMillis) {
|
||||
return "&fLoaded after " + (System.currentTimeMillis() - startMillis) + " ms.";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String enabling(Plugin plugin) {
|
||||
return "&f" + plugin.getName() + " " + plugin.getDescription().getVersion() + " enabling...";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String enableSuccess(Plugin plugin, long startMillis) {
|
||||
return "&aEnabled successfully!&f Cost " + (System.currentTimeMillis() - startMillis) + " ms.";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String enableFailure(Plugin plugin, long startMillis) {
|
||||
return "&cEnabled failed after " + (System.currentTimeMillis() - startMillis) + " ms.";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String disabling(Plugin plugin) {
|
||||
return "&f" + plugin.getName() + " " + plugin.getDescription().getVersion() + " begin to shutdown...";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String disabled(Plugin plugin, long startMillis) {
|
||||
return "&fShutdown successfully, cost " + (System.currentTimeMillis() - startMillis) + " ms.";
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user