+ update
This commit is contained in:
parent
629bc77803
commit
26f1a4b5e2
Binary file not shown.
@ -69,11 +69,11 @@ public final class TranslatableComponent extends BaseComponent {
|
|||||||
* Creates a translatable component with the passed substitutions
|
* Creates a translatable component with the passed substitutions
|
||||||
*
|
*
|
||||||
* @param translate the translation key
|
* @param translate the translation key
|
||||||
* @param with the {@link java.lang.String}s and
|
* @param with the {@link String}s and
|
||||||
* {@link BaseComponent}s to use into the
|
* {@link BaseComponent}s to use into the
|
||||||
* translation
|
* translation
|
||||||
* @see #translate
|
* @see #translate
|
||||||
* @see #setWith(java.util.List)
|
* @see #setWith(List)
|
||||||
*/
|
*/
|
||||||
public TranslatableComponent(String translate, Object... with) {
|
public TranslatableComponent(String translate, Object... with) {
|
||||||
setTranslate(translate);
|
setTranslate(translate);
|
||||||
|
@ -7,6 +7,7 @@ import com.ilummc.tlib.util.IO;
|
|||||||
import com.ilummc.tlib.util.Strings;
|
import com.ilummc.tlib.util.Strings;
|
||||||
import me.skymc.taboolib.database.GlobalDataManager;
|
import me.skymc.taboolib.database.GlobalDataManager;
|
||||||
import me.skymc.taboolib.database.PlayerDataManager;
|
import me.skymc.taboolib.database.PlayerDataManager;
|
||||||
|
import me.skymc.taboolib.economy.EcoUtils;
|
||||||
import me.skymc.taboolib.fileutils.ConfigUtils;
|
import me.skymc.taboolib.fileutils.ConfigUtils;
|
||||||
import me.skymc.taboolib.fileutils.FileUtils;
|
import me.skymc.taboolib.fileutils.FileUtils;
|
||||||
import me.skymc.taboolib.listener.TListenerHandler;
|
import me.skymc.taboolib.listener.TListenerHandler;
|
||||||
@ -16,8 +17,6 @@ import me.skymc.taboolib.other.NumberUtils;
|
|||||||
import me.skymc.taboolib.playerdata.DataUtils;
|
import me.skymc.taboolib.playerdata.DataUtils;
|
||||||
import me.skymc.taboolib.socket.TabooLibClient;
|
import me.skymc.taboolib.socket.TabooLibClient;
|
||||||
import me.skymc.taboolib.socket.TabooLibServer;
|
import me.skymc.taboolib.socket.TabooLibServer;
|
||||||
import me.skymc.taboolib.string.language2.Language2;
|
|
||||||
import net.milkbowl.vault.economy.Economy;
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.configuration.file.FileConfiguration;
|
import org.bukkit.configuration.file.FileConfiguration;
|
||||||
import org.bukkit.plugin.Plugin;
|
import org.bukkit.plugin.Plugin;
|
||||||
@ -45,11 +44,9 @@ public class Main extends JavaPlugin {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static Plugin inst;
|
private static Plugin inst;
|
||||||
private static Economy economy;
|
|
||||||
private static File playerDataFolder;
|
private static File playerDataFolder;
|
||||||
private static File serverDataFolder;
|
private static File serverDataFolder;
|
||||||
private static StorageType storageType = StorageType.LOCAL;
|
private static StorageType storageType = StorageType.LOCAL;
|
||||||
private static Language2 exampleLanguage2;
|
|
||||||
private static boolean disable = false;
|
private static boolean disable = false;
|
||||||
private static boolean started = false;
|
private static boolean started = false;
|
||||||
private static boolean isInternetOnline = false;
|
private static boolean isInternetOnline = false;
|
||||||
@ -138,8 +135,6 @@ public class Main extends JavaPlugin {
|
|||||||
}.runTask(this);
|
}.runTask(this);
|
||||||
// 启动
|
// 启动
|
||||||
started = true;
|
started = true;
|
||||||
// 载入语言文件
|
|
||||||
exampleLanguage2 = new Language2("Language2", this);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -198,14 +193,6 @@ public class Main extends JavaPlugin {
|
|||||||
return "§8[§3§lTabooLib§8] §7";
|
return "§8[§3§lTabooLib§8] §7";
|
||||||
}
|
}
|
||||||
|
|
||||||
public static net.milkbowl.vault.economy.Economy getEconomy() {
|
|
||||||
return economy;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void setEconomy(Economy economy) {
|
|
||||||
Main.economy = economy;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static File getPlayerDataFolder() {
|
public static File getPlayerDataFolder() {
|
||||||
return playerDataFolder;
|
return playerDataFolder;
|
||||||
}
|
}
|
||||||
@ -222,26 +209,10 @@ public class Main extends JavaPlugin {
|
|||||||
return disable;
|
return disable;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static MySQLConnection getConnection() {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Language2 getExampleLanguage2() {
|
|
||||||
return exampleLanguage2;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static boolean isStarted() {
|
public static boolean isStarted() {
|
||||||
return started;
|
return started;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Random getRandom() {
|
|
||||||
return NumberUtils.getRandom();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String getTablePrefix() {
|
|
||||||
return inst.getConfig().getString("MYSQL.PREFIX");
|
|
||||||
}
|
|
||||||
|
|
||||||
public static boolean isInternetOnline() {
|
public static boolean isInternetOnline() {
|
||||||
return isInternetOnline;
|
return isInternetOnline;
|
||||||
}
|
}
|
||||||
@ -254,6 +225,26 @@ public class Main extends JavaPlugin {
|
|||||||
return TLib.getTLib().getLibsFolder().listFiles().length > 0;
|
return TLib.getTLib().getLibsFolder().listFiles().length > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
|
public static Random getRandom() {
|
||||||
|
return NumberUtils.getRandom();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
|
public static String getTablePrefix() {
|
||||||
|
return inst.getConfig().getString("MYSQL.PREFIX");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
|
public static MySQLConnection getConnection() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
|
public static net.milkbowl.vault.economy.Economy getEconomy() {
|
||||||
|
return EcoUtils.getEconomy();
|
||||||
|
}
|
||||||
|
|
||||||
// *********************************
|
// *********************************
|
||||||
//
|
//
|
||||||
// Private Setter
|
// Private Setter
|
||||||
|
@ -160,11 +160,13 @@ public class TabooLibLoader implements Listener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void setupAddons() {
|
static void setupAddons() {
|
||||||
TabooLib.instance().saveResource("Addons/TabooLibDeprecated", true);
|
File origin = new File(TabooLib.instance().getDataFolder(), "Addons/TabooLibDeprecated.jar");
|
||||||
|
origin.delete();
|
||||||
// 傻逼 Gradle 的 shadow 插件会将所有 jar 排除
|
// 傻逼 Gradle 的 shadow 插件会将所有 jar 排除
|
||||||
// https://github.com/johnrengelman/shadow/issues/276
|
// https://github.com/johnrengelman/shadow/issues/276
|
||||||
|
TabooLib.instance().saveResource("Addons/TabooLibDeprecated", true);
|
||||||
File from = new File(TabooLib.instance().getDataFolder(), "Addons/TabooLibDeprecated");
|
File from = new File(TabooLib.instance().getDataFolder(), "Addons/TabooLibDeprecated");
|
||||||
from.renameTo(new File(TabooLib.instance().getDataFolder(), "Addons/TabooLibDeprecated.jar"));
|
from.renameTo(origin);
|
||||||
from.delete();
|
from.delete();
|
||||||
File file = new File(TabooLib.instance().getDataFolder(), "Addons");
|
File file = new File(TabooLib.instance().getDataFolder(), "Addons");
|
||||||
if (file.exists()) {
|
if (file.exists()) {
|
||||||
|
@ -17,6 +17,7 @@ import java.io.IOException;
|
|||||||
import java.lang.reflect.InvocationTargetException;
|
import java.lang.reflect.InvocationTargetException;
|
||||||
import java.lang.reflect.Method;
|
import java.lang.reflect.Method;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.concurrent.Callable;
|
import java.util.concurrent.Callable;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
@ -171,7 +172,7 @@ public class Metrics {
|
|||||||
}
|
}
|
||||||
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
|
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
|
||||||
GZIPOutputStream gzip = new GZIPOutputStream(outputStream);
|
GZIPOutputStream gzip = new GZIPOutputStream(outputStream);
|
||||||
gzip.write(str.getBytes("UTF-8"));
|
gzip.write(str.getBytes(StandardCharsets.UTF_8));
|
||||||
gzip.close();
|
gzip.close();
|
||||||
return outputStream.toByteArray();
|
return outputStream.toByteArray();
|
||||||
}
|
}
|
||||||
@ -262,7 +263,7 @@ public class Metrics {
|
|||||||
playerAmount = Bukkit.getOnlinePlayers().size(); // Just use the new method if the Reflection failed
|
playerAmount = Bukkit.getOnlinePlayers().size(); // Just use the new method if the Reflection failed
|
||||||
}
|
}
|
||||||
int onlineMode = Bukkit.getOnlineMode() ? 1 : 0;
|
int onlineMode = Bukkit.getOnlineMode() ? 1 : 0;
|
||||||
String bukkitVersion = org.bukkit.Bukkit.getVersion();
|
String bukkitVersion = Bukkit.getVersion();
|
||||||
bukkitVersion = bukkitVersion.substring(bukkitVersion.indexOf("MC: ") + 4, bukkitVersion.length() - 1);
|
bukkitVersion = bukkitVersion.substring(bukkitVersion.indexOf("MC: ") + 4, bukkitVersion.length() - 1);
|
||||||
|
|
||||||
// OS/Java specific data
|
// OS/Java specific data
|
||||||
|
@ -0,0 +1,16 @@
|
|||||||
|
package me.skymc.taboolib.common.serialize;
|
||||||
|
|
||||||
|
import java.lang.annotation.ElementType;
|
||||||
|
import java.lang.annotation.Retention;
|
||||||
|
import java.lang.annotation.RetentionPolicy;
|
||||||
|
import java.lang.annotation.Target;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author sky
|
||||||
|
* @Since 2018-10-05 12:11
|
||||||
|
*/
|
||||||
|
@Target(ElementType.FIELD)
|
||||||
|
@Retention(RetentionPolicy.RUNTIME)
|
||||||
|
public @interface DoNotSerialize {
|
||||||
|
|
||||||
|
}
|
@ -1,20 +1,34 @@
|
|||||||
package me.skymc.taboolib.common.serialize;
|
package me.skymc.taboolib.common.serialize;
|
||||||
|
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
|
import java.util.Base64;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Author 坏黑
|
* @Author 坏黑
|
||||||
* @Since 2019-03-08 17:28
|
* @Since 2019-03-08 17:28
|
||||||
*/
|
*/
|
||||||
public interface TSerializable {
|
public interface TSerializable {
|
||||||
|
|
||||||
void read(String fieldName, String value);
|
default void read(String fieldName, String value) {
|
||||||
|
}
|
||||||
|
|
||||||
String write(String fieldName, Object value);
|
default String write(String fieldName, Object value) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
default void read(String value) {
|
default Object read(String value) {
|
||||||
TSerializer.read(this, value);
|
return TSerializer.read(this, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
default String write() {
|
default String write() {
|
||||||
return TSerializer.write(this);
|
return TSerializer.write(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
default Object readBase64(String value) {
|
||||||
|
return TSerializer.read(this, new String(Base64.getDecoder().decode(value), StandardCharsets.UTF_8));
|
||||||
|
}
|
||||||
|
|
||||||
|
default String writeBase64() {
|
||||||
|
return Base64.getEncoder().encodeToString(TSerializer.write(this).getBytes(StandardCharsets.UTF_8));
|
||||||
|
}
|
||||||
}
|
}
|
@ -30,6 +30,9 @@ public class TSerializer {
|
|||||||
try {
|
try {
|
||||||
Field declaredField = serializable.getClass().getDeclaredField(jsonElementEntry.getKey());
|
Field declaredField = serializable.getClass().getDeclaredField(jsonElementEntry.getKey());
|
||||||
declaredField.setAccessible(true);
|
declaredField.setAccessible(true);
|
||||||
|
if (declaredField.isAnnotationPresent(DoNotSerialize.class)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
Optional<TSerializerElementGeneral> serializer = Arrays.stream(TSerializerElementGeneral.values()).filter(serializerElements -> serializerElements.getSerializer().matches(declaredField.getType())).findFirst();
|
Optional<TSerializerElementGeneral> serializer = Arrays.stream(TSerializerElementGeneral.values()).filter(serializerElements -> serializerElements.getSerializer().matches(declaredField.getType())).findFirst();
|
||||||
if (serializer.isPresent()) {
|
if (serializer.isPresent()) {
|
||||||
declaredField.set(serializable, serializer.get().getSerializer().read(jsonElementEntry.getValue().getAsString()));
|
declaredField.set(serializable, serializer.get().getSerializer().read(jsonElementEntry.getValue().getAsString()));
|
||||||
@ -56,13 +59,13 @@ public class TSerializer {
|
|||||||
JsonObject serializeObject = new JsonObject();
|
JsonObject serializeObject = new JsonObject();
|
||||||
for (Field declaredField : serializable.getClass().getDeclaredFields()) {
|
for (Field declaredField : serializable.getClass().getDeclaredFields()) {
|
||||||
try {
|
try {
|
||||||
if (!Modifier.isStatic(declaredField.getModifiers())) {
|
if (!declaredField.isAnnotationPresent(DoNotSerialize.class) && !Modifier.isStatic(declaredField.getModifiers())) {
|
||||||
declaredField.setAccessible(true);
|
declaredField.setAccessible(true);
|
||||||
Optional<TSerializerElementGeneral> serializer = Arrays.stream(TSerializerElementGeneral.values()).filter(serializerElements -> serializerElements.getSerializer().matches(declaredField.getType())).findFirst();
|
|
||||||
Object o = declaredField.get(serializable);
|
Object o = declaredField.get(serializable);
|
||||||
if (o == null) {
|
if (o == null) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
Optional<TSerializerElementGeneral> serializer = Arrays.stream(TSerializerElementGeneral.values()).filter(serializerElements -> serializerElements.getSerializer().matches(declaredField.getType())).findFirst();
|
||||||
if (serializer.isPresent()) {
|
if (serializer.isPresent()) {
|
||||||
serializeObject.addProperty(declaredField.getName(), serializer.get().getSerializer().write(o));
|
serializeObject.addProperty(declaredField.getName(), serializer.get().getSerializer().write(o));
|
||||||
} else {
|
} else {
|
||||||
|
@ -8,7 +8,7 @@ public interface TSerializerElement<T> {
|
|||||||
|
|
||||||
T read(String value);
|
T read(String value);
|
||||||
|
|
||||||
String write(Object value);
|
String write(T value);
|
||||||
|
|
||||||
boolean matches(Class objectClass);
|
boolean matches(Class objectClass);
|
||||||
|
|
||||||
|
@ -1,9 +1,11 @@
|
|||||||
package me.skymc.taboolib.common.serialize;
|
package me.skymc.taboolib.common.serialize;
|
||||||
|
|
||||||
|
import com.google.common.collect.ImmutableMap;
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Author 坏黑
|
* @Author 坏黑
|
||||||
@ -17,13 +19,13 @@ public class TSerializerExample {
|
|||||||
// 修改参数
|
// 修改参数
|
||||||
date.number = 100;
|
date.number = 100;
|
||||||
// 序列化
|
// 序列化
|
||||||
String value = date.write();
|
String value = date.writeBase64();
|
||||||
// 打印
|
// 打印
|
||||||
System.out.println(value);
|
System.out.println(value);
|
||||||
// 创建新的对象
|
// 创建新的对象
|
||||||
SimpleData dataCopy = new SimpleData();
|
SimpleData dataCopy = new SimpleData();
|
||||||
// 反序列化
|
// 反序列化
|
||||||
dataCopy.read(value);
|
dataCopy.readBase64(value);
|
||||||
// 打印
|
// 打印
|
||||||
System.out.println(dataCopy);
|
System.out.println(dataCopy);
|
||||||
}
|
}
|
||||||
@ -38,13 +40,24 @@ public class TSerializerExample {
|
|||||||
* 基本类型不需要手动进行序列化
|
* 基本类型不需要手动进行序列化
|
||||||
* 包含: String、int、short、long、double、float、boolean、ItemStack、Location
|
* 包含: String、int、short、long、double、float、boolean、ItemStack、Location
|
||||||
*/
|
*/
|
||||||
private String text;
|
private String text = "123";
|
||||||
private int number;
|
private int number = 100;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 特殊类型需要进行手动序列化
|
* 特殊类型需要进行手动序列化
|
||||||
* 本工具提供了基本容器的序列化方法
|
* 标注 @TSerializeCollection 或 @TSerializeMap 来进行自动序列化(未完成)
|
||||||
*/
|
*/
|
||||||
private List<Double> list = Lists.newArrayList();
|
// @TSerializeCollection
|
||||||
|
private List<Double> list = Lists.newArrayList(1.0, 2.0, 3.0);
|
||||||
|
|
||||||
|
// @TSerializeMap
|
||||||
|
private Map<String, String> map = ImmutableMap.of("abc", "def");
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 跳过序列化
|
||||||
|
*/
|
||||||
|
@DoNotSerialize
|
||||||
|
private String ignoreSerialize = "aaa";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 基本类型不会执行以下两个方法
|
* 基本类型不会执行以下两个方法
|
||||||
@ -52,23 +65,16 @@ public class TSerializerExample {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void read(String fieldName, String value) {
|
public void read(String fieldName, String value) {
|
||||||
switch (fieldName) {
|
if (fieldName.equals("list")) {
|
||||||
case "list": {
|
// List 类型可以直接通过 TSerializer 提供的预设方法进行反序列化
|
||||||
// List 类型可以直接通过 TSerializer 提供的预设方法进行反序列化
|
TSerializer.readCollection(list, value, TSerializerElementGeneral.DOUBLE);
|
||||||
TSerializer.readCollection(list, value, TSerializerElementGeneral.DOUBLE);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
default:
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String write(String fieldName, Object value) {
|
public String write(String fieldName, Object value) {
|
||||||
switch (fieldName) {
|
if (fieldName.equals("list")) {
|
||||||
case "list": {
|
return TSerializer.writeCollection((Collection) value, TSerializerElementGeneral.DOUBLE);
|
||||||
// 序列化同理
|
|
||||||
return TSerializer.writeCollection((Collection) value, TSerializerElementGeneral.DOUBLE);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@ -79,6 +85,7 @@ public class TSerializerExample {
|
|||||||
"text='" + text + '\'' +
|
"text='" + text + '\'' +
|
||||||
", number=" + number +
|
", number=" + number +
|
||||||
", list=" + list +
|
", list=" + list +
|
||||||
|
", ignoreSerialize='" + ignoreSerialize + '\'' +
|
||||||
'}';
|
'}';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,24 @@
|
|||||||
|
package me.skymc.taboolib.common.serialize.container;
|
||||||
|
|
||||||
|
import me.skymc.taboolib.common.serialize.TSerializerElement;
|
||||||
|
|
||||||
|
import java.lang.annotation.ElementType;
|
||||||
|
import java.lang.annotation.Retention;
|
||||||
|
import java.lang.annotation.RetentionPolicy;
|
||||||
|
import java.lang.annotation.Target;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collection;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author sky
|
||||||
|
* @Since 2018-10-05 12:11
|
||||||
|
*/
|
||||||
|
@Target(ElementType.FIELD)
|
||||||
|
@Retention(RetentionPolicy.RUNTIME)
|
||||||
|
public @interface TSerializeCollection {
|
||||||
|
|
||||||
|
Class<? extends Collection> type() default ArrayList.class;
|
||||||
|
|
||||||
|
Class<? extends TSerializerElement> element() default TSerializerElement.class;
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,20 @@
|
|||||||
|
package me.skymc.taboolib.common.serialize.container;
|
||||||
|
|
||||||
|
import java.lang.annotation.ElementType;
|
||||||
|
import java.lang.annotation.Retention;
|
||||||
|
import java.lang.annotation.RetentionPolicy;
|
||||||
|
import java.lang.annotation.Target;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author sky
|
||||||
|
* @Since 2018-10-05 12:11
|
||||||
|
*/
|
||||||
|
@Target(ElementType.FIELD)
|
||||||
|
@Retention(RetentionPolicy.RUNTIME)
|
||||||
|
public @interface TSerializeMap {
|
||||||
|
|
||||||
|
Class<? extends Map> type() default HashMap.class;
|
||||||
|
|
||||||
|
}
|
@ -47,7 +47,7 @@ public class TListenerHandler implements Listener {
|
|||||||
*/
|
*/
|
||||||
public static void setupListener(Plugin plugin) {
|
public static void setupListener(Plugin plugin) {
|
||||||
for (Class<?> pluginClass : TabooLibLoader.getPluginClassSafely(plugin)) {
|
for (Class<?> pluginClass : TabooLibLoader.getPluginClassSafely(plugin)) {
|
||||||
if (org.bukkit.event.Listener.class.isAssignableFrom(pluginClass) && pluginClass.isAnnotationPresent(TListener.class)) {
|
if (Listener.class.isAssignableFrom(pluginClass) && pluginClass.isAnnotationPresent(TListener.class)) {
|
||||||
try {
|
try {
|
||||||
TListener tListener = pluginClass.getAnnotation(TListener.class);
|
TListener tListener = pluginClass.getAnnotation(TListener.class);
|
||||||
// 检查注册条件
|
// 检查注册条件
|
||||||
|
@ -32,9 +32,7 @@ public class SQLColumn extends IColumn {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* CHAR 类型常用构造器
|
* CHAR 类型常用构造器
|
||||||
*
|
* new SQLColumn(SQLColumnType.CHAR, 1, "data");
|
||||||
* @param columnType
|
|
||||||
* @param columnName
|
|
||||||
*/
|
*/
|
||||||
public SQLColumn(SQLColumnType columnType, int m, String columnName) {
|
public SQLColumn(SQLColumnType columnType, int m, String columnName) {
|
||||||
this(columnType, m, 0, columnName, null);
|
this(columnType, m, 0, columnName, null);
|
||||||
@ -56,6 +54,10 @@ public class SQLColumn extends IColumn {
|
|||||||
this(columnType, 0, 0, columnName, defaultValue);
|
this(columnType, 0, 0, columnName, defaultValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public SQLColumn(SQLColumnType columnType, String columnName, Object defaultValue, SQLColumnOption... columnOptions) {
|
||||||
|
this(columnType, 0, 0, columnName, defaultValue, columnOptions);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 完整构造器
|
* 完整构造器
|
||||||
*
|
*
|
||||||
|
@ -49,11 +49,11 @@ public class SQLTable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public String deleteQuery() {
|
public String deleteQuery() {
|
||||||
return Strings.replaceWithOrder("drop table if exists `{0}`" + tableName);
|
return Strings.replaceWithOrder("drop table if exists `{0}`", tableName);
|
||||||
}
|
}
|
||||||
|
|
||||||
public String cleanQuery() {
|
public String cleanQuery() {
|
||||||
return Strings.replaceWithOrder("delete from `{0}`" + tableName);
|
return Strings.replaceWithOrder("delete from `{0}`", tableName);
|
||||||
}
|
}
|
||||||
|
|
||||||
public String truncateQuery() {
|
public String truncateQuery() {
|
||||||
|
@ -19,6 +19,7 @@ public class RunnableQuery {
|
|||||||
private TaskStatement statement;
|
private TaskStatement statement;
|
||||||
private TaskResult result;
|
private TaskResult result;
|
||||||
private TaskResult resultNext;
|
private TaskResult resultNext;
|
||||||
|
private TaskResult resultAutoNext;
|
||||||
private Connection connection;
|
private Connection connection;
|
||||||
private boolean autoClose;
|
private boolean autoClose;
|
||||||
private String query;
|
private String query;
|
||||||
@ -47,6 +48,11 @@ public class RunnableQuery {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public RunnableQuery resultAutoNext(TaskResult result) {
|
||||||
|
this.resultAutoNext = result;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
public RunnableQuery connection(Connection connection) {
|
public RunnableQuery connection(Connection connection) {
|
||||||
return connection(connection, false);
|
return connection(connection, false);
|
||||||
}
|
}
|
||||||
@ -113,6 +119,12 @@ public class RunnableQuery {
|
|||||||
return resultNext.execute(resultSet);
|
return resultNext.execute(resultSet);
|
||||||
} else if (result != null) {
|
} else if (result != null) {
|
||||||
return result.execute(resultSet);
|
return result.execute(resultSet);
|
||||||
|
} else if (resultAutoNext != null) {
|
||||||
|
Object result = null;
|
||||||
|
while (resultSet.next()) {
|
||||||
|
result = resultAutoNext.execute(resultSet);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
} else {
|
} else {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
@ -30,16 +30,6 @@ public class SQLiteColumn extends IColumn {
|
|||||||
this(columnType, 0, 0, columnName, null);
|
this(columnType, 0, 0, columnName, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* CHAR 类型常用构造器
|
|
||||||
*
|
|
||||||
* @param columnType
|
|
||||||
* @param columnName
|
|
||||||
*/
|
|
||||||
public SQLiteColumn(SQLiteColumnType columnType, int m, String columnName) {
|
|
||||||
this(columnType, m, 0, columnName, null);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 主键 类型常用构造器
|
* 主键 类型常用构造器
|
||||||
* new SQLColumn(SQLiteColumnType.TEXT, "username", SQLiteColumnOption.PRIMARY_KEY, SQLiteColumnOption.AUTO_INCREMENT);
|
* new SQLColumn(SQLiteColumnType.TEXT, "username", SQLiteColumnOption.PRIMARY_KEY, SQLiteColumnOption.AUTO_INCREMENT);
|
||||||
@ -56,6 +46,10 @@ public class SQLiteColumn extends IColumn {
|
|||||||
this(columnType, 0, 0, columnName, defaultValue);
|
this(columnType, 0, 0, columnName, defaultValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public SQLiteColumn(SQLiteColumnType columnType, String columnName, Object defaultValue, SQLiteColumnOption... columnOptions) {
|
||||||
|
this(columnType, 0, 0, columnName, defaultValue, columnOptions);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 完整构造器
|
* 完整构造器
|
||||||
*
|
*
|
||||||
|
@ -9,8 +9,8 @@ import org.bukkit.entity.Player;
|
|||||||
public class SoundPack {
|
public class SoundPack {
|
||||||
|
|
||||||
private Sound sound;
|
private Sound sound;
|
||||||
private float a;
|
private Float a;
|
||||||
private float b;
|
private Float b;
|
||||||
private int delay;
|
private int delay;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -70,11 +70,11 @@ public class SoundPack {
|
|||||||
return sound;
|
return sound;
|
||||||
}
|
}
|
||||||
|
|
||||||
public float getA() {
|
public Float getA() {
|
||||||
return a;
|
return a;
|
||||||
}
|
}
|
||||||
|
|
||||||
public float getB() {
|
public Float getB() {
|
||||||
return b;
|
return b;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user