157 lines
5.8 KiB
Java
157 lines
5.8 KiB
Java
package io.izzel.taboolib;
|
|
|
|
import io.izzel.taboolib.common.plugin.InternalPlugin;
|
|
import io.izzel.taboolib.module.config.TConfig;
|
|
import io.izzel.taboolib.module.config.TConfigWatcher;
|
|
import io.izzel.taboolib.module.db.local.Local;
|
|
import io.izzel.taboolib.module.db.local.LocalPlayer;
|
|
import io.izzel.taboolib.module.dependency.Dependency;
|
|
import io.izzel.taboolib.module.locale.TLocaleLoader;
|
|
import io.izzel.taboolib.module.locale.logger.TLogger;
|
|
import io.izzel.taboolib.module.nms.NMS;
|
|
import io.izzel.taboolib.util.Files;
|
|
import io.izzel.taboolib.util.IO;
|
|
import org.bukkit.configuration.file.YamlConfiguration;
|
|
import org.bukkit.util.NumberConversions;
|
|
|
|
import java.io.File;
|
|
import java.nio.charset.StandardCharsets;
|
|
import java.util.concurrent.Executors;
|
|
|
|
/**
|
|
* @Author 坏黑
|
|
* @Since 2019-07-05 10:39
|
|
* <p>
|
|
* 注意与 TabooLib4.x 版本的兼容
|
|
* 可能存在同时运行的情况
|
|
*/
|
|
@Dependency(
|
|
maven = "org.slf4j:slf4j-api:1.7.25",
|
|
url = "http://repo.ptms.ink/repository/maven-public/org/slf4j/slf4j-api/1.7.25/slf4j-api-1.7.25.jar;" + "https://skymc.oss-cn-shanghai.aliyuncs.com/libs/org.slf4j-slf4j-api-1.7.25.jar"
|
|
)
|
|
@Dependency(
|
|
maven = "com.zaxxer:HikariCP:3.1.0",
|
|
url = "http://repo.ptms.ink/repository/maven-releases/com/zaxxer/HikariCP/3.1.0/HikariCP-3.1.0.jar;" + "https://skymc.oss-cn-shanghai.aliyuncs.com/libs/com.zaxxer-HikariCP-3.1.0.jar"
|
|
)
|
|
@Dependency(
|
|
maven = "org.scala-lang:scala-library:2.12.8",
|
|
url = "http://repo.ptms.ink/repository/maven-public/org/scala-lang/scala-library/2.12.8/scala-library-2.12.8.jar;" + "https://skymc.oss-cn-shanghai.aliyuncs.com/libs/scala-library-2.12.8.jar"
|
|
)
|
|
@Dependency(
|
|
maven = "org.kotlinlang:kotlin-stdlib:1.3.50",
|
|
url = "http://repo.ptms.ink/repository/maven-releases/org/kotlinlang/kotlin-stdlib/1.3.50/kotlin-stdlib-1.3.50.jar;" + "https://skymc.oss-cn-shanghai.aliyuncs.com/libs/kotlin-stdlib-1.3.50.jar"
|
|
)
|
|
@Dependency(
|
|
maven = "org.kotlinlang:kotlin-stdlib-jdk7:1.3.50",
|
|
url = "http://repo.ptms.ink/repository/maven-releases/org/kotlinlang/kotlin-stdlib-jdk7/1.3.50/kotlin-stdlib-jdk7-1.3.50.jar;" + "https://skymc.oss-cn-shanghai.aliyuncs.com/libs/kotlin-stdlib-jdk7.jar"
|
|
)
|
|
@Dependency(
|
|
maven = "org.kotlinlang:kotlin-stdlib-jdk8:1.3.50",
|
|
url = "http://repo.ptms.ink/repository/maven-releases/org/kotlinlang/kotlin-stdlib-jdk8/1.3.50/kotlin-stdlib-jdk8-1.3.50.jar;" + "https://skymc.oss-cn-shanghai.aliyuncs.com/libs/kotlin-stdlib-jdk8.jar"
|
|
)
|
|
@Dependency(
|
|
maven = "org.kotlinlang:kotlin-reflect:1.3.50",
|
|
url = "http://repo.ptms.ink/repository/maven-releases/org/kotlinlang/kotlin-reflect/1.3.50/kotlin-reflect-1.3.50.jar;" + "https://skymc.oss-cn-shanghai.aliyuncs.com/libs/kotlin-reflect.jar"
|
|
)
|
|
@Dependency(
|
|
maven = "org.kotlinlang:kotlin-test:1.3.50",
|
|
url = "http://repo.ptms.ink/repository/maven-releases/org/kotlinlang/kotlin-test/1.3.50/kotlin-test-1.3.50.jar;" + "https://skymc.oss-cn-shanghai.aliyuncs.com/libs/kotlin-test.jar"
|
|
)
|
|
@Dependency(
|
|
maven = "com.google.inject:guice:4.2.2",
|
|
url = "http://repo.ptms.ink/repository/maven-releases/com/google/inject/guice/4.2.2/guice-4.2.2.jar;" + "https://skymc.oss-cn-shanghai.aliyuncs.com/libs/guice-4.2.2.jar"
|
|
)
|
|
public class TabooLib {
|
|
|
|
private static TabooLib inst = new TabooLib();
|
|
private static TLogger logger;
|
|
private static TConfig config;
|
|
|
|
// 当前运行版本
|
|
private static double version;
|
|
|
|
// 内部语言文件
|
|
private final YamlConfiguration internal = new YamlConfiguration();
|
|
|
|
@SuppressWarnings("BusyWait")
|
|
public TabooLib() {
|
|
inst = this;
|
|
logger = TLogger.getUnformatted("TabooLib");
|
|
// 配置文件从 config.yml 修改为 settings.yml 防止与老版本插件冲突
|
|
config = TConfig.create(getPlugin(), "settings.yml");
|
|
// 配置更新
|
|
try {
|
|
config.migrate();
|
|
} catch (Throwable t) {
|
|
t.printStackTrace();
|
|
}
|
|
// 加载版本号
|
|
try {
|
|
version = NumberConversions.toDouble(IO.readFully(Files.getResource("__resources__/version"), StandardCharsets.UTF_8));
|
|
} catch (Throwable t) {
|
|
t.printStackTrace();
|
|
}
|
|
// 加载内部语言文件
|
|
try {
|
|
internal.loadFromString(IO.readFully(Files.getResource("__resources__/lang/internal.yml"), StandardCharsets.UTF_8));
|
|
} catch (Throwable t) {
|
|
t.printStackTrace();
|
|
}
|
|
// 加载 TabooLib 语言文件
|
|
TLocaleLoader.load(getPlugin(), false);
|
|
// 加载 TabooLib
|
|
TabooLibLoader.init();
|
|
// 创建线程检测服务器是否关闭
|
|
Executors.newSingleThreadExecutor().submit(() -> {
|
|
while (NMS.handle().isRunning()) {
|
|
try {
|
|
Thread.sleep(50);
|
|
} catch (InterruptedException e) {
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
// 保存数据
|
|
Local.saveFiles();
|
|
LocalPlayer.saveFiles();
|
|
// 关闭文件监听
|
|
TConfigWatcher.getInst().unregisterAll();
|
|
// 关闭插件
|
|
PluginLoader.stop(getPlugin());
|
|
});
|
|
}
|
|
|
|
public static File getTabooLibFile() {
|
|
return new File("libs/TabooLib.jar");
|
|
}
|
|
|
|
public static InternalPlugin getPlugin() {
|
|
return InternalPlugin.getPlugin();
|
|
}
|
|
|
|
// *********************************
|
|
//
|
|
// Getter and Setter
|
|
//
|
|
// *********************************
|
|
|
|
public static TabooLib getInst() {
|
|
return inst;
|
|
}
|
|
|
|
public static TLogger getLogger() {
|
|
return logger;
|
|
}
|
|
|
|
public static TConfig getConfig() {
|
|
return config;
|
|
}
|
|
|
|
public static double getVersion() {
|
|
return version;
|
|
}
|
|
|
|
public YamlConfiguration getInternal() {
|
|
return internal;
|
|
}
|
|
}
|