diff --git a/BasicFunctions/pom.xml b/BasicFunctions/pom.xml index 8e25436..090a61d 100644 --- a/BasicFunctions/pom.xml +++ b/BasicFunctions/pom.xml @@ -1,6 +1,6 @@ - 4.0.0 @@ -92,8 +92,7 @@ BasicFunctions UltiTools-Basic-Functions - 开服必装!所有的杂七杂八的小功能哦!包括不限于TPA,飞行,模式更改,白名单,随机传送。 - + 开服必装!所有的杂七杂八的小功能哦!包括不限于TPA,飞行,模式更改,白名单,随机传送。 access_key.txt F:\SpigotServers\Paper\1.20.4\plugins\UltiTools\plugins diff --git a/Home/src/main/java/com/ultikits/plugins/home/commands/HomeCommands.java b/Home/src/main/java/com/ultikits/plugins/home/commands/HomeCommands.java index 0a68d9b..b6ede0c 100644 --- a/Home/src/main/java/com/ultikits/plugins/home/commands/HomeCommands.java +++ b/Home/src/main/java/com/ultikits/plugins/home/commands/HomeCommands.java @@ -28,7 +28,7 @@ public class HomeCommands extends AbstractCommendExecutor { @CmdMapping(format = "create ") public void createHome(@CmdSender Player player, - @CmdParam(value = "name", suggest = "getHomeList") String name) { + @CmdParam(value = "name", suggest = "[name]") String name) { boolean created = homeService.createHome(player, name); if (created) { player.sendMessage(ChatColor.YELLOW + PluginMain.getPluginMain().i18n("已创建!")); diff --git a/Home/src/main/java/com/ultikits/plugins/home/services/HomeServiceImpl.java b/Home/src/main/java/com/ultikits/plugins/home/services/HomeServiceImpl.java index 4faaa93..80171a3 100644 --- a/Home/src/main/java/com/ultikits/plugins/home/services/HomeServiceImpl.java +++ b/Home/src/main/java/com/ultikits/plugins/home/services/HomeServiceImpl.java @@ -17,17 +17,16 @@ import java.util.*; @Service public class HomeServiceImpl implements HomeService { private final HomeConfig homeConfig; - private final DataOperator dataOperator; private final TeleportService teleportService; - public HomeServiceImpl(DataOperator dataOperator, HomeConfig homeConfig, TeleportService teleportService) { + public HomeServiceImpl(HomeConfig homeConfig, TeleportService teleportService) { this.homeConfig = homeConfig; - this.dataOperator = dataOperator; this.teleportService = teleportService; } @Override public HomeEntity getHomeByName(UUID playerId, String name) { + DataOperator dataOperator = PluginMain.getPluginMain().getDataOperator(HomeEntity.class); Collection homeEntities = dataOperator.getAll( WhereCondition.builder().column("playerId").value(playerId).build(), WhereCondition.builder().column("name").value(name).build() @@ -40,6 +39,7 @@ public class HomeServiceImpl implements HomeService { @Override public List getHomeList(UUID playerId) { + DataOperator dataOperator = PluginMain.getPluginMain().getDataOperator(HomeEntity.class); Collection all = dataOperator.getAll( WhereCondition.builder().column("playerId").value(playerId).build() ); @@ -62,6 +62,7 @@ public class HomeServiceImpl implements HomeService { player.sendMessage(ChatColor.RED + PluginMain.getPluginMain().i18n("你没法创建更多的家!")); return false; } + DataOperator dataOperator = PluginMain.getPluginMain().getDataOperator(HomeEntity.class); boolean exist = dataOperator.exist( WhereCondition.builder().column("playerId").value(player.getUniqueId()).build(), WhereCondition.builder().column("name").value(name).build() @@ -70,6 +71,7 @@ public class HomeServiceImpl implements HomeService { return false; } HomeEntity homeEntity = new HomeEntity(); + homeEntity.setId(new Date().getTime()); homeEntity.setPlayerId(player.getUniqueId()); homeEntity.setLocation(new WorldLocation(player.getLocation())); homeEntity.setName(name); @@ -79,6 +81,7 @@ public class HomeServiceImpl implements HomeService { @Override public void deleteHome(UUID playerId, String name) { + DataOperator dataOperator = PluginMain.getPluginMain().getDataOperator(HomeEntity.class); dataOperator.del( WhereCondition.builder().column("playerId").value(playerId).build(), WhereCondition.builder().column("name").value(name).build() diff --git a/MysqlConnector/pom.xml b/MysqlConnector/pom.xml index 0a98262..9aef595 100644 --- a/MysqlConnector/pom.xml +++ b/MysqlConnector/pom.xml @@ -21,7 +21,7 @@ com.ultikits UltiTools-API - 6.0.0.202310142230 + 6.0.6 provided @@ -90,7 +90,7 @@ MysqlConnector 连接MySQL数据库的必须前置模块 access_key.txt - F:\SpigotServers\Servers\1.19.4\plugins\UltiTools\plugins + F:\SpigotServers\Paper\1.20.4\plugins\UltiTools\plugins diff --git a/MysqlConnector/src/main/java/com/ultikits/plugins/mysqlconnector/MysqlDataOperator.java b/MysqlConnector/src/main/java/com/ultikits/plugins/mysqlconnector/MysqlDataOperator.java index 3dd94ee..ec59aae 100644 --- a/MysqlConnector/src/main/java/com/ultikits/plugins/mysqlconnector/MysqlDataOperator.java +++ b/MysqlConnector/src/main/java/com/ultikits/plugins/mysqlconnector/MysqlDataOperator.java @@ -191,25 +191,22 @@ public class MysqlDataOperator implements DataOper private Entity copyEntity(T obj) throws IllegalAccessException { Entity entity = Entity.create(tableName); - List fieldList = new ArrayList<>(); - Class tempClass = obj.getClass(); - while (tempClass != null) { - fieldList.addAll(Arrays.asList(tempClass.getDeclaredFields())); - tempClass = tempClass.getSuperclass(); - } - for (Field field : fieldList) { + Field[] fields = ReflectUtil.getFields(obj.getClass()); + for (Field field : fields) { if (field.isAnnotationPresent(Column.class)) { field.setAccessible(true); Column column = field.getAnnotation(Column.class); - if (ClassUtil.isBasicType(field.getType())) { - entity.set(column.value(), field.get(obj)); - } else { + Object value = field.get(obj); + if (!ClassUtil.isBasicType(field.getType())) { String jsonString = JSON.toJSONString(field.get(obj)); if (jsonString.startsWith("\"") && jsonString.endsWith("\"")) { jsonString = jsonString.substring(1); jsonString = jsonString.substring(0, jsonString.lastIndexOf("\"")); } - entity.set(column.value(), jsonString); + value = jsonString; + } + if (entity.get(column.value()) == null) { + entity.set(column.value(), value); } } } diff --git a/UltiTools-API/src/main/java/com/ultikits/ultitools/interfaces/impl/SimpleJsonDataOperator.java b/UltiTools-API/src/main/java/com/ultikits/ultitools/interfaces/impl/SimpleJsonDataOperator.java index 54862db..60964b9 100755 --- a/UltiTools-API/src/main/java/com/ultikits/ultitools/interfaces/impl/SimpleJsonDataOperator.java +++ b/UltiTools-API/src/main/java/com/ultikits/ultitools/interfaces/impl/SimpleJsonDataOperator.java @@ -38,19 +38,17 @@ public class SimpleJsonDataOperator implements Dat public SimpleJsonDataOperator(String storeLocation, Class type) { this.storeLocation = storeLocation; this.type = type; - synchronized (this) { - File file = new File(storeLocation); - File[] files = file.listFiles(); - if (files != null) { - for (File dataFile : files) { - try { - JSON json = JSONUtil.readJSON(dataFile, Charset.defaultCharset()); - cache.put(FileNameUtil.mainName(dataFile), json.toBean(type)); - } catch (Exception e) { - Bukkit.getLogger().log(Level.SEVERE, ChatColor.RED + "发现一个数据损坏!位置:" + dataFile.getAbsolutePath()); - } + File file = new File(storeLocation); + File[] files = file.listFiles(); + if (files != null) { + Arrays.stream(files).parallel().forEach(dataFile -> { + try { + JSON json = JSONUtil.readJSON(dataFile, Charset.defaultCharset()); + cache.put(FileNameUtil.mainName(dataFile), json.toBean(type)); + } catch (Exception e) { + Bukkit.getLogger().log(Level.SEVERE, ChatColor.RED + "发现一个数据损坏!位置:" + dataFile.getAbsolutePath()); } - } + }); } }