diff --git a/pom.xml b/pom.xml
index 3a03b84..7c15b1f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
cn.lunadeer
MiniPlayerTitle
- 4.3.2
+ 4.4.0
jar
MiniPlayerTitle
@@ -82,7 +82,7 @@
cn.lunadeer
MinecraftPluginUtils
- 1.3.2-SNAPSHOT
+ 1.3.4-SNAPSHOT
me.clip
diff --git a/src/main/java/cn/lunadeer/miniplayertitle/Expansion.java b/src/main/java/cn/lunadeer/miniplayertitle/Expansion.java
index 0740894..0b1365f 100644
--- a/src/main/java/cn/lunadeer/miniplayertitle/Expansion.java
+++ b/src/main/java/cn/lunadeer/miniplayertitle/Expansion.java
@@ -1,8 +1,6 @@
package cn.lunadeer.miniplayertitle;
import cn.lunadeer.minecraftpluginutils.XLogger;
-import cn.lunadeer.miniplayertitle.dtos.PlayerInfoDTO;
-import cn.lunadeer.miniplayertitle.dtos.PlayerTitleDTO;
import cn.lunadeer.miniplayertitle.dtos.TitleDTO;
import me.clip.placeholderapi.expansion.PlaceholderExpansion;
import org.bukkit.ChatColor;
diff --git a/src/main/java/cn/lunadeer/miniplayertitle/MiniPlayerTitle.java b/src/main/java/cn/lunadeer/miniplayertitle/MiniPlayerTitle.java
index a5770c1..7463b8b 100644
--- a/src/main/java/cn/lunadeer/miniplayertitle/MiniPlayerTitle.java
+++ b/src/main/java/cn/lunadeer/miniplayertitle/MiniPlayerTitle.java
@@ -1,7 +1,12 @@
package cn.lunadeer.miniplayertitle;
import cn.lunadeer.minecraftpluginutils.*;
+import cn.lunadeer.minecraftpluginutils.databse.DatabaseManager;
+import cn.lunadeer.minecraftpluginutils.databse.DatabaseType;
import cn.lunadeer.miniplayertitle.dtos.TitleDTO;
+import cn.lunadeer.miniplayertitle.events.Events;
+import cn.lunadeer.miniplayertitle.events.PaperChat;
+import cn.lunadeer.miniplayertitle.events.SpigotChat;
import cn.lunadeer.miniplayertitle.utils.ConfigManager;
import cn.lunadeer.miniplayertitle.utils.DatabaseTables;
import org.bukkit.Bukkit;
@@ -23,8 +28,8 @@ public final class MiniPlayerTitle extends JavaPlugin {
new XLogger(instance);
config = new ConfigManager(instance);
XLogger.setDebug(config.isDebug());
- database = new DatabaseManager(this,
- DatabaseManager.TYPE.valueOf(config.getDbType().toUpperCase()),
+ new DatabaseManager(this,
+ DatabaseType.valueOf(config.getDbType().toUpperCase()),
config.getDbHost(),
config.getDbPort(),
config.getDbName(),
@@ -41,6 +46,11 @@ public final class MiniPlayerTitle extends JavaPlugin {
}
Bukkit.getPluginManager().registerEvents(new Events(), this);
+ if (Common.isPaper()) {
+ Bukkit.getPluginManager().registerEvents(new PaperChat(), this);
+ } else {
+ Bukkit.getPluginManager().registerEvents(new SpigotChat(), this);
+ }
Objects.requireNonNull(Bukkit.getPluginCommand("MiniPlayerTitle")).setExecutor(new Commands());
Objects.requireNonNull(Bukkit.getPluginCommand("MiniPlayerTitle")).setTabCompleter(new Commands());
@@ -53,7 +63,7 @@ public final class MiniPlayerTitle extends JavaPlugin {
}
XLogger.info("称号插件已加载");
- XLogger.info("版本: " + getPluginMeta().getVersion());
+ XLogger.info("版本: " + this.getDescription().getVersion());
// http://patorjk.com/software/taag/#p=display&f=Big&t=MiniPlayerTitle
XLogger.info(" __ __ _ _ _____ _ _______ _ _ _");
XLogger.info(" | \\/ (_) (_) __ \\| | |__ __(_) | | |");
@@ -68,12 +78,11 @@ public final class MiniPlayerTitle extends JavaPlugin {
@Override
public void onDisable() {
// Plugin shutdown logic
- database.close();
+ DatabaseManager.instance.close();
}
public static MiniPlayerTitle instance;
public static ConfigManager config;
- public static DatabaseManager database;
private GiteaReleaseCheck giteaReleaseCheck;
private Map playerUsingTitle = new HashMap<>();
diff --git a/src/main/java/cn/lunadeer/miniplayertitle/commands/Apis.java b/src/main/java/cn/lunadeer/miniplayertitle/commands/Apis.java
index 38d7964..e432432 100644
--- a/src/main/java/cn/lunadeer/miniplayertitle/commands/Apis.java
+++ b/src/main/java/cn/lunadeer/miniplayertitle/commands/Apis.java
@@ -1,10 +1,10 @@
package cn.lunadeer.miniplayertitle.commands;
-import cn.lunadeer.minecraftpluginutils.Notification;
+import cn.lunadeer.minecraftpluginutils.Common;
import cn.lunadeer.miniplayertitle.MiniPlayerTitle;
import cn.lunadeer.miniplayertitle.dtos.TitleDTO;
import net.kyori.adventure.text.Component;
-import org.bukkit.command.CommandSender;
+import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import javax.annotation.Nullable;
@@ -19,29 +19,30 @@ public class Apis {
if (usingPapi()) {
return;
}
- if (title == null || title.getId() == -1) {
+
+ Component titleComponent = Component.text("");
+ String titleBukkit = "";
+
+ if (title != null && title.getId() != -1) {
+ titleComponent = title.getTitleColored();
+ titleBukkit = ChatColor.translateAlternateColorCodes('&', title.getTitleColoredBukkit());
+ }
+
+ if (Common.isPaper()) {
Component newDisplayName = Component.text()
+ .append(titleComponent)
.append(Component.text("<"))
.append(player.name())
- .append(Component.text("> ")).build();
+ .append(Component.text(">")).build();
Component newListName = Component.text()
+ .append(titleComponent)
+ .append(Component.text(" "))
.append(player.name()).build();
player.displayName(newDisplayName);
player.playerListName(newListName);
- return;
+ } else {
+ player.setDisplayName(titleBukkit + "<" + player.getName() + ">");
+ player.setPlayerListName(titleBukkit + " " + player.getName());
}
-
- Component titleComponent = title.getTitleColored();
- Component newDisplayName = Component.text()
- .append(titleComponent)
- .append(Component.text("<"))
- .append(player.name())
- .append(Component.text(">")).build();
- Component newListName = Component.text()
- .append(titleComponent)
- .append(Component.text(" "))
- .append(player.name()).build();
- player.displayName(newDisplayName);
- player.playerListName(newListName);
}
}
diff --git a/src/main/java/cn/lunadeer/miniplayertitle/dtos/PlayerInfoDTO.java b/src/main/java/cn/lunadeer/miniplayertitle/dtos/PlayerInfoDTO.java
index a9fb5f0..8a6ba61 100644
--- a/src/main/java/cn/lunadeer/miniplayertitle/dtos/PlayerInfoDTO.java
+++ b/src/main/java/cn/lunadeer/miniplayertitle/dtos/PlayerInfoDTO.java
@@ -2,6 +2,9 @@ package cn.lunadeer.miniplayertitle.dtos;
import cn.lunadeer.minecraftpluginutils.VaultConnect;
import cn.lunadeer.minecraftpluginutils.XLogger;
+import cn.lunadeer.minecraftpluginutils.databse.DatabaseManager;
+import cn.lunadeer.minecraftpluginutils.databse.Field;
+import cn.lunadeer.minecraftpluginutils.databse.FieldType;
import cn.lunadeer.miniplayertitle.MiniPlayerTitle;
import org.bukkit.entity.Player;
@@ -12,20 +15,22 @@ import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
+import static cn.lunadeer.minecraftpluginutils.databse.DatabaseManager.handleDatabaseError;
+
public class PlayerInfoDTO {
- private UUID uuid;
- private Double coin;
+ private final Field uuid = new Field("uuid", FieldType.UUID);
+ private final Field coin = new Field("coin_d", FieldType.DOUBLE);
private TitleDTO using_title;
- private String last_use_name;
+ private final Field last_use_name = new Field("last_use_name", FieldType.STRING);
public static PlayerInfoDTO get(UUID uuid) {
String sql = "";
sql = "SELECT uuid, coin_d, using_title_id, last_use_name FROM mplt_player_info WHERE uuid = ?;";
- try (ResultSet rs = MiniPlayerTitle.database.query(sql, uuid)) {
+ try (ResultSet rs = DatabaseManager.instance.query(sql, uuid)) {
if (rs.next()) return getPlayerInfoDTO(rs);
else return null;
} catch (Exception e) {
- MiniPlayerTitle.database.handleDatabaseError("获取玩家信息失败", e, sql);
+ handleDatabaseError("获取玩家信息失败", e, sql);
}
return null;
}
@@ -51,11 +56,11 @@ public class PlayerInfoDTO {
public static PlayerInfoDTO get(String name) {
String sql = "";
sql = "SELECT uuid, coin_d, using_title_id, last_use_name FROM mplt_player_info WHERE last_use_name = ?;";
- try (ResultSet rs = MiniPlayerTitle.database.query(sql, name)) {
+ try (ResultSet rs = DatabaseManager.instance.query(sql, name)) {
if (rs.next()) return getPlayerInfoDTO(rs);
else return null;
} catch (Exception e) {
- MiniPlayerTitle.database.handleDatabaseError("获取玩家信息失败", e, sql);
+ handleDatabaseError("获取玩家信息失败", e, sql);
}
return null;
}
@@ -65,10 +70,10 @@ public class PlayerInfoDTO {
sql = "INSERT INTO mplt_player_info (uuid, coin_d, last_use_name) " +
"VALUES (?, ?, ?) " +
"ON CONFLICT DO NOTHING;";
- try (ResultSet rs = MiniPlayerTitle.database.query(sql, player.getUniqueId(), MiniPlayerTitle.config.getDefaultCoin(), player.getName())) {
+ try (ResultSet rs = DatabaseManager.instance.query(sql, player.getUniqueId(), MiniPlayerTitle.config.getDefaultCoin(), player.getName())) {
return get(player.getUniqueId());
} catch (Exception e) {
- MiniPlayerTitle.database.handleDatabaseError("创建玩家信息失败", e, sql);
+ handleDatabaseError("创建玩家信息失败", e, sql);
}
return null;
}
@@ -76,29 +81,29 @@ public class PlayerInfoDTO {
private static PlayerInfoDTO updateName(Player player) {
String sql = "";
sql = "UPDATE mplt_player_info SET last_use_name = ? WHERE uuid = ?;";
- try (ResultSet rs = MiniPlayerTitle.database.query(sql, player.getName(), player.getUniqueId())) {
+ try (ResultSet rs = DatabaseManager.instance.query(sql, player.getName(), player.getUniqueId())) {
return get(player.getUniqueId());
} catch (Exception e) {
- MiniPlayerTitle.database.handleDatabaseError("更新玩家名称失败", e, sql);
+ handleDatabaseError("更新玩家名称失败", e, sql);
}
return null;
}
private static PlayerInfoDTO getPlayerInfoDTO(ResultSet rs) throws SQLException {
PlayerInfoDTO playerInfoDTO = new PlayerInfoDTO();
- playerInfoDTO.uuid = UUID.fromString(rs.getString("uuid"));
- playerInfoDTO.coin = rs.getDouble("coin_d");
+ playerInfoDTO.uuid.value = UUID.fromString(rs.getString("uuid"));
+ playerInfoDTO.coin.value = rs.getDouble("coin_d");
playerInfoDTO.using_title = TitleDTO.get(rs.getInt("using_title_id"));
- playerInfoDTO.last_use_name = rs.getString("last_use_name");
+ playerInfoDTO.last_use_name.value = rs.getString("last_use_name");
return playerInfoDTO;
}
public Double getCoin() {
if (MiniPlayerTitle.config.isExternalEco()) {
- Player player = MiniPlayerTitle.instance.getServer().getPlayer(uuid);
+ Player player = MiniPlayerTitle.instance.getServer().getPlayer(getUuid());
return VaultConnect.instance.getBalance(player);
}
- return coin;
+ return (Double) coin.value;
}
public TitleDTO getUsingTitle() {
@@ -106,37 +111,37 @@ public class PlayerInfoDTO {
}
public String getLastUseName() {
- return last_use_name;
+ return (String) last_use_name.value;
}
public UUID getUuid() {
- return uuid;
+ return (UUID) uuid.value;
}
public boolean setUsingTitle(@Nullable TitleDTO title) {
String sql = "";
sql = "UPDATE mplt_player_info SET using_title_id = ? WHERE uuid = ?;";
- try (ResultSet rs = MiniPlayerTitle.database.query(sql, title == null ? -1 : title.getId(), uuid)) {
+ try (ResultSet rs = DatabaseManager.instance.query(sql, title == null ? -1 : title.getId(), getUuid())) {
this.using_title = title == null ? TitleDTO.get(-1) : title;
return true;
} catch (Exception e) {
- MiniPlayerTitle.database.handleDatabaseError("设置玩家使用称号失败", e, sql);
+ handleDatabaseError("设置玩家使用称号失败", e, sql);
}
return false;
}
public boolean addCoin(double coin) {
if (MiniPlayerTitle.config.isExternalEco()) {
- Player player = MiniPlayerTitle.instance.getServer().getPlayer(uuid);
+ Player player = MiniPlayerTitle.instance.getServer().getPlayer(getUuid());
VaultConnect.instance.depositPlayer(player, coin);
return true;
}
- return setCoin(this.coin + coin);
+ return setCoin(getCoin() + coin);
}
public boolean setCoin(double coin) {
if (MiniPlayerTitle.config.isExternalEco()) {
- Player player = MiniPlayerTitle.instance.getServer().getPlayer(uuid);
+ Player player = MiniPlayerTitle.instance.getServer().getPlayer(getUuid());
double balance = VaultConnect.instance.getBalance(player);
if (balance < coin) {
VaultConnect.instance.depositPlayer(player, coin - balance);
@@ -147,11 +152,11 @@ public class PlayerInfoDTO {
}
String sql = "";
sql = "UPDATE mplt_player_info SET coin_d = ? WHERE uuid = ?;";
- try (ResultSet rs = MiniPlayerTitle.database.query(sql, coin, uuid)) {
- this.coin = coin;
+ try (ResultSet rs = DatabaseManager.instance.query(sql, coin, getUuid())) {
+ this.coin.value = coin;
return true;
} catch (Exception e) {
- MiniPlayerTitle.database.handleDatabaseError("设置玩家金币失败", e, sql);
+ handleDatabaseError("设置玩家金币失败", e, sql);
}
return false;
}
@@ -160,12 +165,12 @@ public class PlayerInfoDTO {
String sql = "";
sql = "SELECT last_use_name FROM mplt_player_info;";
List names = new ArrayList<>();
- try (ResultSet rs = MiniPlayerTitle.database.query(sql)) {
+ try (ResultSet rs = DatabaseManager.instance.query(sql)) {
while (rs.next()) {
names.add(rs.getString("last_use_name"));
}
} catch (Exception e) {
- MiniPlayerTitle.database.handleDatabaseError("获取玩家名称列表失败", e, sql);
+ handleDatabaseError("获取玩家名称列表失败", e, sql);
}
return names;
}
diff --git a/src/main/java/cn/lunadeer/miniplayertitle/dtos/PlayerTitleDTO.java b/src/main/java/cn/lunadeer/miniplayertitle/dtos/PlayerTitleDTO.java
index 8e153e8..5bab17f 100644
--- a/src/main/java/cn/lunadeer/miniplayertitle/dtos/PlayerTitleDTO.java
+++ b/src/main/java/cn/lunadeer/miniplayertitle/dtos/PlayerTitleDTO.java
@@ -1,6 +1,8 @@
package cn.lunadeer.miniplayertitle.dtos;
-import cn.lunadeer.miniplayertitle.MiniPlayerTitle;
+import cn.lunadeer.minecraftpluginutils.databse.DatabaseManager;
+import cn.lunadeer.minecraftpluginutils.databse.Field;
+import cn.lunadeer.minecraftpluginutils.databse.FieldType;
import javax.annotation.Nullable;
import java.sql.ResultSet;
@@ -10,14 +12,16 @@ import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
+import static cn.lunadeer.minecraftpluginutils.databse.DatabaseManager.handleDatabaseError;
+
public class PlayerTitleDTO {
- private Integer id;
- private UUID player_uuid;
+ private final Field id = new Field("id", FieldType.INT);
+ private final Field player_uuid = new Field("player_uuid", FieldType.UUID);
private TitleDTO title;
private LocalDateTime expire_at;
public Integer getId() {
- return id;
+ return (Integer) id.value;
}
public TitleDTO getTitle() {
@@ -25,7 +29,7 @@ public class PlayerTitleDTO {
}
public UUID getPlayerUuid() {
- return player_uuid;
+ return (UUID) player_uuid.value;
}
public LocalDateTime getExpireAt() {
@@ -35,14 +39,14 @@ public class PlayerTitleDTO {
public boolean setExpireAt(LocalDateTime dateTime) {
String sql = "";
if (dateTime == null) {
- sql += "UPDATE mplt_player_title SET expire_at_y = -1, expire_at_m = -1, expire_at_d = -1 WHERE id = " + id + ";";
+ sql += "UPDATE mplt_player_title SET expire_at_y = -1, expire_at_m = -1, expire_at_d = -1 WHERE id = " + getId() + ";";
} else {
- sql += "UPDATE mplt_player_title SET expire_at_y = " + dateTime.getYear() + ", expire_at_m = " + dateTime.getMonthValue() + ", expire_at_d = " + dateTime.getDayOfMonth() + " WHERE id = " + id + ";";
+ sql += "UPDATE mplt_player_title SET expire_at_y = " + dateTime.getYear() + ", expire_at_m = " + dateTime.getMonthValue() + ", expire_at_d = " + dateTime.getDayOfMonth() + " WHERE id = " + getId() + ";";
}
- try (ResultSet rs = MiniPlayerTitle.database.query(sql)) {
+ try (ResultSet rs = DatabaseManager.instance.query(sql)) {
return true;
} catch (Exception e) {
- MiniPlayerTitle.database.handleDatabaseError("设置玩家称号过期时间失败", e, sql);
+ handleDatabaseError("设置玩家称号过期时间失败", e, sql);
}
return false;
}
@@ -58,12 +62,12 @@ public class PlayerTitleDTO {
}
sql += "RETURNING " +
"id, player_uuid, title_id, expire_at_y, expire_at_m, expire_at_d;";
- try (ResultSet rs = MiniPlayerTitle.database.query(sql, player_uuid, title.getId())) {
+ try (ResultSet rs = DatabaseManager.instance.query(sql, player_uuid, title.getId())) {
if (rs.next()) {
return getRs(rs);
}
} catch (Exception e) {
- MiniPlayerTitle.database.handleDatabaseError("创建玩家称号失败", e, sql);
+ handleDatabaseError("创建玩家称号失败", e, sql);
}
return null;
}
@@ -72,12 +76,12 @@ public class PlayerTitleDTO {
String sql = "";
sql += "SELECT id, player_uuid, title_id, expire_at_y, expire_at_m, expire_at_d FROM mplt_player_title " +
"WHERE id = ?;";
- try (ResultSet rs = MiniPlayerTitle.database.query(sql, id)) {
+ try (ResultSet rs = DatabaseManager.instance.query(sql, id)) {
if (rs.next()) {
return getRs(rs);
}
} catch (Exception e) {
- MiniPlayerTitle.database.handleDatabaseError("获取玩家称号失败", e, sql);
+ handleDatabaseError("获取玩家称号失败", e, sql);
}
return null;
}
@@ -86,20 +90,20 @@ public class PlayerTitleDTO {
String sql = "";
sql += "SELECT id, player_uuid, title_id, expire_at_y, expire_at_m, expire_at_d FROM mplt_player_title " +
"WHERE player_uuid = ? AND title_id = ?;";
- try (ResultSet rs = MiniPlayerTitle.database.query(sql, player, title)) {
+ try (ResultSet rs = DatabaseManager.instance.query(sql, player, title)) {
if (rs.next()) {
return getRs(rs);
}
} catch (Exception e) {
- MiniPlayerTitle.database.handleDatabaseError("获取玩家称号失败", e, sql);
+ handleDatabaseError("获取玩家称号失败", e, sql);
}
return null;
}
private static PlayerTitleDTO getRs(ResultSet rs) throws SQLException {
PlayerTitleDTO playerTitle = new PlayerTitleDTO();
- playerTitle.id = rs.getInt("id");
- playerTitle.player_uuid = UUID.fromString(rs.getString("player_uuid"));
+ playerTitle.id.value = rs.getInt("id");
+ playerTitle.player_uuid.value = UUID.fromString(rs.getString("player_uuid"));
playerTitle.title = TitleDTO.get(rs.getInt("title_id"));
int y = rs.getInt("expire_at_y");
int m = rs.getInt("expire_at_m");
@@ -117,12 +121,12 @@ public class PlayerTitleDTO {
sql += "SELECT id, player_uuid, title_id, expire_at_y, expire_at_m, expire_at_d FROM mplt_player_title " +
"WHERE player_uuid = ?;";
List playerTitles = new ArrayList<>();
- try (ResultSet rs = MiniPlayerTitle.database.query(sql, player_uuid)) {
+ try (ResultSet rs = DatabaseManager.instance.query(sql, player_uuid)) {
while (rs.next()) {
playerTitles.add(getRs(rs));
}
} catch (Exception e) {
- MiniPlayerTitle.database.handleDatabaseError("获取玩家称号失败", e, sql);
+ handleDatabaseError("获取玩家称号失败", e, sql);
}
return playerTitles;
}
diff --git a/src/main/java/cn/lunadeer/miniplayertitle/dtos/TitleDTO.java b/src/main/java/cn/lunadeer/miniplayertitle/dtos/TitleDTO.java
index 59f01c7..a0d7ac0 100644
--- a/src/main/java/cn/lunadeer/miniplayertitle/dtos/TitleDTO.java
+++ b/src/main/java/cn/lunadeer/miniplayertitle/dtos/TitleDTO.java
@@ -1,6 +1,9 @@
package cn.lunadeer.miniplayertitle.dtos;
import cn.lunadeer.minecraftpluginutils.XLogger;
+import cn.lunadeer.minecraftpluginutils.databse.DatabaseManager;
+import cn.lunadeer.minecraftpluginutils.databse.Field;
+import cn.lunadeer.minecraftpluginutils.databse.FieldType;
import cn.lunadeer.miniplayertitle.Color;
import cn.lunadeer.miniplayertitle.MiniPlayerTitle;
import net.kyori.adventure.text.Component;
@@ -14,18 +17,21 @@ import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
+import static cn.lunadeer.minecraftpluginutils.databse.DatabaseManager.handleDatabaseError;
+
public class TitleDTO {
- private int id;
- private String title;
- private String description;
+ private final Field id = new Field("id", FieldType.INT);
+ private final Field title = new Field("title", FieldType.STRING);
+ private final Field description = new Field("description", FieldType.STRING);
+
public static TitleDTO get(int id) {
String sql = "";
sql += "SELECT id, title, description FROM mplt_title WHERE id = " + id + ";";
- try (ResultSet rs = MiniPlayerTitle.database.query(sql)) {
+ try (ResultSet rs = DatabaseManager.instance.query(sql)) {
if (rs.next()) return getTitleDTO(rs);
} catch (Exception e) {
- MiniPlayerTitle.database.handleDatabaseError("获取称号失败", e, sql);
+ handleDatabaseError("获取称号失败", e, sql);
}
return null;
}
@@ -36,10 +42,10 @@ public class TitleDTO {
"VALUES (?, ?) " +
"RETURNING " +
"id, title, description;";
- try (ResultSet rs = MiniPlayerTitle.database.query(sql, title, description)) {
+ try (ResultSet rs = DatabaseManager.instance.query(sql, title, description)) {
if (rs.next()) return getTitleDTO(rs);
} catch (Exception e) {
- MiniPlayerTitle.database.handleDatabaseError("创建称号失败", e, sql);
+ handleDatabaseError("创建称号失败", e, sql);
}
return null;
}
@@ -49,12 +55,12 @@ public class TitleDTO {
String deleteSql = "DELETE FROM mplt_title WHERE id = ?;";
try {
// 执行更新操作
- MiniPlayerTitle.database.query(updateSql, this.id);
+ DatabaseManager.instance.query(updateSql, getId());
// 执行删除操作
- MiniPlayerTitle.database.query(deleteSql, this.id);
+ DatabaseManager.instance.query(deleteSql, getId());
return true;
} catch (Exception e) {
- MiniPlayerTitle.database.handleDatabaseError("删除称号失败", e, updateSql + " " + deleteSql);
+ handleDatabaseError("删除称号失败", e, updateSql + " " + deleteSql);
return false;
}
}
@@ -63,12 +69,12 @@ public class TitleDTO {
String sql = "";
sql += "SELECT id, title, description FROM mplt_title;";
List titleDTOs = new ArrayList<>();
- try (ResultSet rs = MiniPlayerTitle.database.query(sql)) {
+ try (ResultSet rs = DatabaseManager.instance.query(sql)) {
while (rs.next()) {
titleDTOs.add(getTitleDTO(rs));
}
} catch (Exception e) {
- MiniPlayerTitle.database.handleDatabaseError("获取称号列表失败", e, sql);
+ handleDatabaseError("获取称号列表失败", e, sql);
}
return titleDTOs;
}
@@ -76,7 +82,7 @@ public class TitleDTO {
public TextComponent getTitleColored() {
TextComponent prefix = Component.text(MiniPlayerTitle.config.getPrefix(), new Color("#ffffff").getStyle());
TextComponent suffix = Component.text(MiniPlayerTitle.config.getSuffix(), new Color("#ffffff").getStyle());
- String[] parts = this.title.split("");
+ String[] parts = getTitleRaw().split("");
List components = new ArrayList<>();
components.add(prefix);
for (String part : parts) {
@@ -99,7 +105,7 @@ public class TitleDTO {
for (TextComponent component : components) {
title_component.append(component);
}
- return title_component.build().hoverEvent(HoverEvent.hoverEvent(HoverEvent.Action.SHOW_TEXT, Component.text(this.description)));
+ return title_component.build().hoverEvent(HoverEvent.hoverEvent(HoverEvent.Action.SHOW_TEXT, Component.text(getDescription())));
}
/**
@@ -110,7 +116,7 @@ public class TitleDTO {
* @return String
*/
public String getTitleColoredBukkit() {
- String title = "&f" + MiniPlayerTitle.config.getPrefix() + this.title + "&f" + MiniPlayerTitle.config.getSuffix();
+ String title = "&f" + MiniPlayerTitle.config.getPrefix() + getTitleRaw() + "&f" + MiniPlayerTitle.config.getSuffix();
title = title.replaceAll("", "#");
Pattern pattern = Pattern.compile("#[a-fA-F0-9]{6}");
Matcher matcher = pattern.matcher(title);
@@ -127,7 +133,7 @@ public class TitleDTO {
}
public String getTitlePlainText() {
- String[] parts = this.title.split("");
+ String[] parts = getTitleRaw().split("");
StringBuilder res = new StringBuilder();
for (String part : parts) {
if (part.isEmpty()) {
@@ -145,23 +151,27 @@ public class TitleDTO {
}
public Integer getId() {
- return this.id;
+ return (Integer) this.id.value;
}
public String getDescription() {
- return this.description;
+ return (String) this.description.value;
+ }
+
+ public String getTitleRaw() {
+ return (String) this.title.value;
}
public boolean updateTitle(String title) {
String sql = "";
sql += "UPDATE mplt_title SET title = ? WHERE id = ?;";
- try (ResultSet rs = MiniPlayerTitle.database.query(sql, title, this.id)) {
+ try (ResultSet rs = DatabaseManager.instance.query(sql, title, getId())) {
if (rs != null && rs.next()) {
- this.title = title;
+ this.title.value = title;
return true;
}
} catch (Exception e) {
- MiniPlayerTitle.database.handleDatabaseError("更新称号失败", e, sql);
+ handleDatabaseError("更新称号失败", e, sql);
}
return false;
}
@@ -169,22 +179,22 @@ public class TitleDTO {
public boolean updateDescription(String description) {
String sql = "";
sql += "UPDATE mplt_title SET description = ? WHERE id = ?;";
- try (ResultSet rs = MiniPlayerTitle.database.query(sql, description, this.id)) {
+ try (ResultSet rs = DatabaseManager.instance.query(sql, description, getId())) {
if (rs != null && rs.next()) {
- this.description = description;
+ this.description.value = description;
return true;
}
} catch (Exception e) {
- MiniPlayerTitle.database.handleDatabaseError("更新称号失败", e, sql);
+ handleDatabaseError("更新称号失败", e, sql);
}
return false;
}
private static TitleDTO getTitleDTO(ResultSet rs) throws SQLException {
TitleDTO titleDTO = new TitleDTO();
- titleDTO.id = rs.getInt("id");
- titleDTO.title = rs.getString("title");
- titleDTO.description = rs.getString("description");
+ titleDTO.id.value = rs.getInt("id");
+ titleDTO.title.value = rs.getString("title");
+ titleDTO.description.value = rs.getString("description");
return titleDTO;
}
}
diff --git a/src/main/java/cn/lunadeer/miniplayertitle/dtos/TitleShopDTO.java b/src/main/java/cn/lunadeer/miniplayertitle/dtos/TitleShopDTO.java
index 13eed29..4116c34 100644
--- a/src/main/java/cn/lunadeer/miniplayertitle/dtos/TitleShopDTO.java
+++ b/src/main/java/cn/lunadeer/miniplayertitle/dtos/TitleShopDTO.java
@@ -1,22 +1,27 @@
package cn.lunadeer.miniplayertitle.dtos;
-import cn.lunadeer.miniplayertitle.MiniPlayerTitle;
+import cn.lunadeer.minecraftpluginutils.databse.DatabaseManager;
+import cn.lunadeer.minecraftpluginutils.databse.Field;
+import cn.lunadeer.minecraftpluginutils.databse.FieldType;
import java.sql.ResultSet;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
+import static cn.lunadeer.minecraftpluginutils.databse.DatabaseManager.handleDatabaseError;
+
public class TitleShopDTO {
- private Integer id;
private TitleDTO title;
- private Double price;
- private Integer days;
- private Integer amount;
+ private final Field id = new Field("id", FieldType.INT);
+ private final Field price = new Field("price_d", FieldType.DOUBLE);
+ private final Field days = new Field("days", FieldType.INT);
+ private final Field amount = new Field("amount", FieldType.INT);
+
private LocalDateTime sale_end_at;
public Integer getId() {
- return id;
+ return (Integer) id.value;
}
public TitleDTO getTitle() {
@@ -24,46 +29,49 @@ public class TitleShopDTO {
}
public Double getPrice() {
- return price;
+ return (Double) price.value;
}
public boolean setPrice(Double price) {
String sql = "";
sql += "UPDATE mplt_title_shop SET price_d = ? WHERE id = ?;";
- try (ResultSet rs = MiniPlayerTitle.database.query(sql, price, id)) {
+ try (ResultSet rs = DatabaseManager.instance.query(sql, price, getId())) {
+ this.price.value = price;
return true;
} catch (Exception e) {
- MiniPlayerTitle.database.handleDatabaseError("设置称号商店价格失败", e, sql);
+ handleDatabaseError("设置称号商店价格失败", e, sql);
}
return false;
}
public Integer getDays() {
- return days;
+ return (Integer) days.value;
}
public boolean setDays(int days) {
String sql = "";
sql += "UPDATE mplt_title_shop SET days = ? WHERE id = ?;";
- try (ResultSet rs = MiniPlayerTitle.database.query(sql, days, id)) {
+ try (ResultSet rs = DatabaseManager.instance.query(sql, days, getId())) {
+ this.days.value = days;
return true;
} catch (Exception e) {
- MiniPlayerTitle.database.handleDatabaseError("设置称号商店天数失败", e, sql);
+ handleDatabaseError("设置称号商店天数失败", e, sql);
}
return false;
}
public Integer getAmount() {
- return amount;
+ return (Integer) amount.value;
}
public boolean setAmount(int amount) {
String sql = "";
sql += "UPDATE mplt_title_shop SET amount = ? WHERE id = ?;";
- try (ResultSet rs = MiniPlayerTitle.database.query(sql, amount, id)) {
+ try (ResultSet rs = DatabaseManager.instance.query(sql, amount, getId())) {
+ this.amount.value = amount;
return true;
} catch (Exception e) {
- MiniPlayerTitle.database.handleDatabaseError("设置称号商店数量失败", e, sql);
+ handleDatabaseError("设置称号商店数量失败", e, sql);
}
return false;
}
@@ -79,10 +87,10 @@ public class TitleShopDTO {
public boolean setSaleEndAt(int y, int m, int d) {
String sql = "";
sql += "UPDATE mplt_title_shop SET sale_end_at_y = ?, sale_end_at_m = ?, sale_end_at_d = ? WHERE id = ?;";
- try (ResultSet rs = MiniPlayerTitle.database.query(sql, y, m, d, id)) {
+ try (ResultSet rs = DatabaseManager.instance.query(sql, y, m, d, getId())) {
return true;
} catch (Exception e) {
- MiniPlayerTitle.database.handleDatabaseError("设置称号商店销售结束时间失败", e, sql);
+ handleDatabaseError("设置称号商店销售结束时间失败", e, sql);
}
return false;
}
@@ -91,12 +99,12 @@ public class TitleShopDTO {
String sql = "";
sql += "SELECT id, title_id, price_d, days, amount, sale_end_at_y, sale_end_at_m, sale_end_at_d " +
"FROM mplt_title_shop WHERE id = ?;";
- try (ResultSet rs = MiniPlayerTitle.database.query(sql, id)) {
+ try (ResultSet rs = DatabaseManager.instance.query(sql, id)) {
if (rs.next()) {
return getTitleShop(rs);
}
} catch (Exception e) {
- MiniPlayerTitle.database.handleDatabaseError("获取称号商店信息失败", e, sql);
+ handleDatabaseError("获取称号商店信息失败", e, sql);
}
return null;
}
@@ -106,24 +114,24 @@ public class TitleShopDTO {
sql += "SELECT id, title_id, price_d, days, amount, sale_end_at_y, sale_end_at_m, sale_end_at_d " +
"FROM mplt_title_shop;";
List titleShops = new ArrayList<>();
- try (ResultSet rs = MiniPlayerTitle.database.query(sql)) {
+ try (ResultSet rs = DatabaseManager.instance.query(sql)) {
while (rs != null && rs.next()) {
TitleShopDTO titleShop = getTitleShop(rs);
titleShops.add(titleShop);
}
} catch (Exception e) {
- MiniPlayerTitle.database.handleDatabaseError("获取称号商店列表失败", e, sql);
+ handleDatabaseError("获取称号商店列表失败", e, sql);
}
return titleShops;
}
private static TitleShopDTO getTitleShop(ResultSet rs) throws Exception {
TitleShopDTO titleShop = new TitleShopDTO();
- titleShop.id = rs.getInt("id");
+ titleShop.id.value = rs.getInt("id");
titleShop.title = TitleDTO.get(rs.getInt("title_id"));
- titleShop.price = rs.getDouble("price_d");
- titleShop.days = rs.getInt("days");
- titleShop.amount = rs.getInt("amount");
+ titleShop.price.value = rs.getDouble("price_d");
+ titleShop.days.value = rs.getInt("days");
+ titleShop.amount.value = rs.getInt("amount");
int y = rs.getInt("sale_end_at_y");
int m = rs.getInt("sale_end_at_m");
int d = rs.getInt("sale_end_at_d");
@@ -141,12 +149,12 @@ public class TitleShopDTO {
"VALUES (?, 0, -1, 0, -1, -1, -1) " +
"RETURNING " +
"id, title_id, price_d, days, amount, sale_end_at_y, sale_end_at_m, sale_end_at_d;";
- try (ResultSet rs = MiniPlayerTitle.database.query(sql, title.getId())) {
+ try (ResultSet rs = DatabaseManager.instance.query(sql, title.getId())) {
if (rs.next()) {
return getTitleShop(rs);
}
} catch (Exception e) {
- MiniPlayerTitle.database.handleDatabaseError("创建称号商店失败", e, sql);
+ handleDatabaseError("创建称号商店失败", e, sql);
}
return null;
}
@@ -154,10 +162,10 @@ public class TitleShopDTO {
public boolean delete() {
String sql = "";
sql += "DELETE FROM mplt_title_shop WHERE id = ?;";
- try (ResultSet rs = MiniPlayerTitle.database.query(sql, id)) {
+ try (ResultSet rs = DatabaseManager.instance.query(sql, getId())) {
return true;
} catch (Exception e) {
- MiniPlayerTitle.database.handleDatabaseError("删除称号商店失败", e, sql);
+ handleDatabaseError("删除称号商店失败", e, sql);
}
return false;
}
diff --git a/src/main/java/cn/lunadeer/miniplayertitle/Events.java b/src/main/java/cn/lunadeer/miniplayertitle/events/Events.java
similarity index 64%
rename from src/main/java/cn/lunadeer/miniplayertitle/Events.java
rename to src/main/java/cn/lunadeer/miniplayertitle/events/Events.java
index 02f55a7..a89d74e 100644
--- a/src/main/java/cn/lunadeer/miniplayertitle/Events.java
+++ b/src/main/java/cn/lunadeer/miniplayertitle/events/Events.java
@@ -1,16 +1,13 @@
-package cn.lunadeer.miniplayertitle;
+package cn.lunadeer.miniplayertitle.events;
import cn.lunadeer.minecraftpluginutils.Notification;
import cn.lunadeer.miniplayertitle.dtos.PlayerInfoDTO;
import cn.lunadeer.miniplayertitle.dtos.PlayerTitleDTO;
-import io.papermc.paper.event.player.AsyncChatEvent;
-import net.kyori.adventure.text.Component;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
-import static cn.lunadeer.miniplayertitle.MiniPlayerTitle.usingPapi;
import static cn.lunadeer.miniplayertitle.commands.Apis.updateName;
public class Events implements Listener {
@@ -36,19 +33,4 @@ public class Events implements Listener {
updateName(bukkitPlayer, title.getTitle());
}
}
-
- @EventHandler
- public void onPlayerSendChat(AsyncChatEvent event) {
- if (usingPapi()) {
- return;
- }
- Component nameComponent = event.getPlayer().displayName();
- Component chatComponent = event.message();
- Component newChatComponent = Component.text()
- .append(nameComponent)
- .append(Component.text(" "))
- .append(chatComponent).build();
- event.setCancelled(true);
- event.getPlayer().getServer().sendMessage(newChatComponent);
- }
}
diff --git a/src/main/java/cn/lunadeer/miniplayertitle/events/PaperChat.java b/src/main/java/cn/lunadeer/miniplayertitle/events/PaperChat.java
new file mode 100644
index 0000000..d6ed8a7
--- /dev/null
+++ b/src/main/java/cn/lunadeer/miniplayertitle/events/PaperChat.java
@@ -0,0 +1,25 @@
+package cn.lunadeer.miniplayertitle.events;
+
+import io.papermc.paper.event.player.AsyncChatEvent;
+import net.kyori.adventure.text.Component;
+import org.bukkit.event.EventHandler;
+import org.bukkit.event.Listener;
+
+import static cn.lunadeer.miniplayertitle.MiniPlayerTitle.usingPapi;
+
+public class PaperChat implements Listener {
+ @EventHandler
+ public void onPlayerSendChat(AsyncChatEvent event) {
+ if (usingPapi()) {
+ return;
+ }
+ Component nameComponent = event.getPlayer().displayName();
+ Component chatComponent = event.message();
+ Component newChatComponent = Component.text()
+ .append(nameComponent)
+ .append(Component.text(" "))
+ .append(chatComponent).build();
+ event.setCancelled(true);
+ event.getPlayer().getServer().sendMessage(newChatComponent);
+ }
+}
diff --git a/src/main/java/cn/lunadeer/miniplayertitle/events/SpigotChat.java b/src/main/java/cn/lunadeer/miniplayertitle/events/SpigotChat.java
new file mode 100644
index 0000000..9c21623
--- /dev/null
+++ b/src/main/java/cn/lunadeer/miniplayertitle/events/SpigotChat.java
@@ -0,0 +1,21 @@
+package cn.lunadeer.miniplayertitle.events;
+
+import cn.lunadeer.minecraftpluginutils.Notification;
+import cn.lunadeer.miniplayertitle.MiniPlayerTitle;
+import net.kyori.adventure.text.Component;
+import org.bukkit.event.EventHandler;
+import org.bukkit.event.Listener;
+import org.bukkit.event.player.PlayerChatEvent;
+
+import static cn.lunadeer.miniplayertitle.MiniPlayerTitle.usingPapi;
+
+public class SpigotChat implements Listener {
+ @EventHandler
+ public void onPlayerSendChat(PlayerChatEvent event) {
+ if (usingPapi()) {
+ return;
+ }
+ event.setCancelled(true);
+ MiniPlayerTitle.instance.getServer().broadcastMessage(event.getPlayer().getDisplayName() + " " + event.getMessage());
+ }
+}
diff --git a/src/main/java/cn/lunadeer/miniplayertitle/utils/DatabaseTables.java b/src/main/java/cn/lunadeer/miniplayertitle/utils/DatabaseTables.java
index e5b4828..f26a9c2 100644
--- a/src/main/java/cn/lunadeer/miniplayertitle/utils/DatabaseTables.java
+++ b/src/main/java/cn/lunadeer/miniplayertitle/utils/DatabaseTables.java
@@ -1,126 +1,172 @@
package cn.lunadeer.miniplayertitle.utils;
-import cn.lunadeer.miniplayertitle.MiniPlayerTitle;
+import cn.lunadeer.minecraftpluginutils.databse.DatabaseManager;
+import cn.lunadeer.minecraftpluginutils.databse.Field;
+import cn.lunadeer.minecraftpluginutils.databse.FieldType;
+import cn.lunadeer.minecraftpluginutils.databse.TableColumn;
+import cn.lunadeer.minecraftpluginutils.databse.syntax.AddColumn;
+import cn.lunadeer.minecraftpluginutils.databse.syntax.CreateTable;
+import cn.lunadeer.minecraftpluginutils.databse.syntax.InsertRow;
+import cn.lunadeer.minecraftpluginutils.databse.syntax.RemoveColumn;
+
+import static cn.lunadeer.minecraftpluginutils.databse.Common.IsFieldExist;
public class DatabaseTables {
public static void migrate() {
- String sql = "";
// title table
- sql = "CREATE TABLE IF NOT EXISTS mplt_title (" +
- " id SERIAL PRIMARY KEY," +
- " title TEXT NOT NULL UNIQUE," +
- " description TEXT NOT NULL," +
- " enabled BOOLEAN NOT NULL DEFAULT TRUE," +
- " created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP," +
- " updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP" +
- ");";
- MiniPlayerTitle.database.query(sql);
+ TableColumn mplt_title_id = new TableColumn("id", FieldType.INT, true, true, true, true, 0);
+ TableColumn mplt_title_title = new TableColumn("title", FieldType.STRING, false, false, true, false, "'unknown'");
+ TableColumn mplt_title_description = new TableColumn("description", FieldType.STRING, false, false, true, false, "'unknown'");
+ TableColumn mplt_title_enabled = new TableColumn("enabled", FieldType.BOOLEAN, false, false, true, false, "true");
+ TableColumn mplt_title_created_at = new TableColumn("created_at", FieldType.DATETIME, false, false, true, false, "CURRENT_TIMESTAMP");
+ TableColumn mplt_title_updated_at = new TableColumn("updated_at", FieldType.DATETIME, false, false, true, false, "CURRENT_TIMESTAMP");
+ CreateTable mplt_title = new CreateTable().ifNotExists();
+ mplt_title.table("mplt_title")
+ .field(mplt_title_id)
+ .field(mplt_title_title)
+ .field(mplt_title_description)
+ .field(mplt_title_enabled)
+ .field(mplt_title_created_at)
+ .field(mplt_title_updated_at);
+ mplt_title.execute();
+
// title shop table
- sql = "CREATE TABLE IF NOT EXISTS mplt_title_shop (" +
- " id SERIAL PRIMARY KEY," +
- " title_id INTEGER NOT NULL," +
- " price INTEGER NOT NULL DEFAULT 0," +
- " days INTEGER NOT NULL DEFAULT 0," +
- " amount INTEGER NOT NULL DEFAULT -1," +
- " sale_end_at BIGINT NOT NULL DEFAULT -1," +
- " created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP," +
- " updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP," +
- " FOREIGN KEY (title_id) REFERENCES mplt_title(id) ON DELETE CASCADE" +
- ");";
- MiniPlayerTitle.database.query(sql);
+ TableColumn mplt_title_shop_id = new TableColumn("id", FieldType.INT, true, true, true, true, 0);
+ TableColumn mplt_title_shop_title_id = new TableColumn("title_id", FieldType.INT, false, false, true, false, 0);
+ TableColumn mplt_title_shop_price = new TableColumn("price", FieldType.INT, false, false, true, false, 0);
+ TableColumn mplt_title_shop_days = new TableColumn("days", FieldType.INT, false, false, true, false, 0);
+ TableColumn mplt_title_shop_amount = new TableColumn("amount", FieldType.INT, false, false, true, false, -1);
+ TableColumn mplt_title_shop_sale_end_at = new TableColumn("sale_end_at", FieldType.LONG, false, false, true, false, -1);
+ TableColumn mplt_title_shop_created_at = new TableColumn("created_at", FieldType.DATETIME, false, false, true, false, "CURRENT_TIMESTAMP");
+ TableColumn mplt_title_shop_updated_at = new TableColumn("updated_at", FieldType.DATETIME, false, false, true, false, "CURRENT_TIMESTAMP");
+ CreateTable.ForeignKey mplt_title_shop_title_id_fk = new CreateTable.ForeignKey(mplt_title_shop_title_id, "mplt_title", mplt_title_id, true);
+ CreateTable mplt_title_shop = new CreateTable().ifNotExists();
+ mplt_title_shop.table("mplt_title_shop")
+ .field(mplt_title_shop_id)
+ .field(mplt_title_shop_title_id)
+ .field(mplt_title_shop_price)
+ .field(mplt_title_shop_days)
+ .field(mplt_title_shop_amount)
+ .field(mplt_title_shop_sale_end_at)
+ .field(mplt_title_shop_created_at)
+ .field(mplt_title_shop_updated_at)
+ .foreignKey(mplt_title_shop_title_id_fk);
+ mplt_title_shop.execute();
// player title info table
- sql = "CREATE TABLE IF NOT EXISTS mplt_player_info (" +
- " uuid UUID PRIMARY KEY," +
- " coin INTEGER NOT NULL DEFAULT 0," +
- " using_title_id INTEGER NOT NULL DEFAULT -1," +
- " created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP," +
- " updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP," +
- " FOREIGN KEY (using_title_id) REFERENCES mplt_title(id) ON DELETE CASCADE" +
- ");";
- MiniPlayerTitle.database.query(sql);
+ TableColumn mplt_player_info_uuid = new TableColumn("uuid", FieldType.UUID, true, false, true, false, "'00000000-0000-0000-0000-000000000000'");
+ TableColumn mplt_player_info_coin = new TableColumn("coin", FieldType.INT, false, false, true, false, 0);
+ TableColumn mplt_player_info_using_title_id = new TableColumn("using_title_id", FieldType.INT, false, false, true, false, -1);
+ TableColumn mplt_player_info_created_at = new TableColumn("created_at", FieldType.DATETIME, false, false, true, false, "CURRENT_TIMESTAMP");
+ TableColumn mplt_player_info_updated_at = new TableColumn("updated_at", FieldType.DATETIME, false, false, true, false, "CURRENT_TIMESTAMP");
+ CreateTable.ForeignKey mplt_player_info_using_title_id_fk = new CreateTable.ForeignKey(mplt_player_info_using_title_id, "mplt_title", mplt_title_id, true);
+ CreateTable mplt_player_info = new CreateTable().ifNotExists();
+ mplt_player_info.table("mplt_player_info")
+ .field(mplt_player_info_uuid)
+ .field(mplt_player_info_coin)
+ .field(mplt_player_info_using_title_id)
+ .field(mplt_player_info_created_at)
+ .field(mplt_player_info_updated_at)
+ .foreignKey(mplt_player_info_using_title_id_fk);
+ mplt_player_info.execute();
+
// player title table
- sql = "CREATE TABLE IF NOT EXISTS mplt_player_title (" +
- " id SERIAL PRIMARY KEY," +
- " player_uuid UUID NOT NULL," +
- " title_id INTEGER NOT NULL," +
- " expire_at BIGINT NOT NULL DEFAULT -1," +
- " created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP," +
- " updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP," +
- " FOREIGN KEY (title_id) REFERENCES mplt_title(id) ON DELETE CASCADE," +
- " FOREIGN KEY (player_uuid) REFERENCES mplt_player_info(uuid) ON DELETE CASCADE" +
- ");";
- MiniPlayerTitle.database.query(sql);
+ TableColumn mplt_player_title_id = new TableColumn("id", FieldType.INT, true, true, true, true, 0);
+ TableColumn mplt_player_title_player_uuid = new TableColumn("player_uuid", FieldType.UUID, false, false, true, false, "'00000000-0000-0000-0000-000000000000'");
+ TableColumn mplt_player_title_title_id = new TableColumn("title_id", FieldType.INT, false, false, true, false, 0);
+ TableColumn mplt_player_title_expire_at = new TableColumn("expire_at", FieldType.LONG, false, false, true, false, -1);
+ TableColumn mplt_player_title_created_at = new TableColumn("created_at", FieldType.DATETIME, false, false, true, false, "CURRENT_TIMESTAMP");
+ TableColumn mplt_player_title_updated_at = new TableColumn("updated_at", FieldType.DATETIME, false, false, true, false, "CURRENT_TIMESTAMP");
+ CreateTable.ForeignKey mplt_player_title_title_id_fk = new CreateTable.ForeignKey(mplt_player_title_title_id, "mplt_title", mplt_title_id, true);
+ CreateTable.ForeignKey mplt_player_title_player_uuid_fk = new CreateTable.ForeignKey(mplt_player_title_player_uuid, "mplt_player_info", mplt_player_info_uuid, true);
+ CreateTable mplt_player_title = new CreateTable().ifNotExists();
+ mplt_player_title.table("mplt_player_title")
+ .field(mplt_player_title_id)
+ .field(mplt_player_title_player_uuid)
+ .field(mplt_player_title_title_id)
+ .field(mplt_player_title_expire_at)
+ .field(mplt_player_title_created_at)
+ .field(mplt_player_title_updated_at)
+ .foreignKey(mplt_player_title_title_id_fk)
+ .foreignKey(mplt_player_title_player_uuid_fk);
+ mplt_player_title.execute();
- MiniPlayerTitle.database.deleteColumnIfExists("mplt_title", "created_at");
- MiniPlayerTitle.database.deleteColumnIfExists("mplt_title", "updated_at");
- MiniPlayerTitle.database.deleteColumnIfExists("mplt_title", "enabled");
+ new RemoveColumn("expire_at").IfExists().table("mplt_title").execute();
+ new RemoveColumn("sale_end_at").IfExists().table("mplt_title_shop").execute();
+ new RemoveColumn("expire_at").IfExists().table("mplt_player_title").execute();
+ new RemoveColumn("created_at").IfExists().table("mplt_title").execute();
+ new RemoveColumn("updated_at").IfExists().table("mplt_title").execute();
+ new RemoveColumn("created_at").IfExists().table("mplt_player_info").execute();
+ new RemoveColumn("updated_at").IfExists().table("mplt_player_info").execute();
+ new RemoveColumn("created_at").IfExists().table("mplt_player_title").execute();
+ new RemoveColumn("updated_at").IfExists().table("mplt_player_title").execute();
- MiniPlayerTitle.database.deleteColumnIfExists("mplt_title_shop", "created_at");
- MiniPlayerTitle.database.deleteColumnIfExists("mplt_title_shop", "updated_at");
-
- MiniPlayerTitle.database.deleteColumnIfExists("mplt_player_info", "created_at");
- MiniPlayerTitle.database.deleteColumnIfExists("mplt_player_info", "updated_at");
-
- MiniPlayerTitle.database.deleteColumnIfExists("mplt_player_title", "created_at");
- MiniPlayerTitle.database.deleteColumnIfExists("mplt_player_title", "updated_at");
-
- MiniPlayerTitle.database.addColumnIfNotExists("mplt_title_shop", "sale_end_at_y", "INTEGER NOT NULL DEFAULT -1");
- MiniPlayerTitle.database.addColumnIfNotExists("mplt_title_shop", "sale_end_at_m", "INTEGER NOT NULL DEFAULT -1");
- MiniPlayerTitle.database.addColumnIfNotExists("mplt_title_shop", "sale_end_at_d", "INTEGER NOT NULL DEFAULT -1");
+ TableColumn mplt_title_shop_sale_end_at_y = new TableColumn("sale_end_at_y", FieldType.INT, false, false, true, false, -1);
+ TableColumn mplt_title_shop_sale_end_at_m = new TableColumn("sale_end_at_m", FieldType.INT, false, false, true, false, -1);
+ TableColumn mplt_title_shop_sale_end_at_d = new TableColumn("sale_end_at_d", FieldType.INT, false, false, true, false, -1);
+ new AddColumn(mplt_title_shop_sale_end_at_y).table("mplt_title_shop").ifNotExists().execute();
+ new AddColumn(mplt_title_shop_sale_end_at_m).table("mplt_title_shop").ifNotExists().execute();
+ new AddColumn(mplt_title_shop_sale_end_at_d).table("mplt_title_shop").ifNotExists().execute();
// convert sale_end_at(YYYYMMDD) to sale_end_at_y, sale_end_at_m, sale_end_at_d if sale_end_at column exists
- if (MiniPlayerTitle.database.isColumnExist("mplt_title_shop", "sale_end_at")) {
- sql = "UPDATE mplt_title_shop SET " +
+ if (IsFieldExist("mplt_title_shop", "sale_end_at")) {
+ String sql = "UPDATE mplt_title_shop SET " +
"sale_end_at_y = (sale_end_at / 10000), " +
"sale_end_at_m = (sale_end_at % 10000 / 100), " +
"sale_end_at_d = (sale_end_at % 100) " +
"WHERE sale_end_at != -1;";
- MiniPlayerTitle.database.query(sql);
+ DatabaseManager.instance.query(sql);
+ new RemoveColumn("sale_end_at").IfExists().table("mplt_title_shop").execute();
}
- MiniPlayerTitle.database.deleteColumnIfExists("mplt_title_shop", "sale_end_at");
- MiniPlayerTitle.database.addColumnIfNotExists("mplt_player_title", "expire_at_y", "INTEGER NOT NULL DEFAULT -1");
- MiniPlayerTitle.database.addColumnIfNotExists("mplt_player_title", "expire_at_m", "INTEGER NOT NULL DEFAULT -1");
- MiniPlayerTitle.database.addColumnIfNotExists("mplt_player_title", "expire_at_d", "INTEGER NOT NULL DEFAULT -1");
- if (MiniPlayerTitle.database.isColumnExist("mplt_player_title", "expire_at")) {
- sql = "UPDATE mplt_player_title SET " +
+
+ TableColumn mplt_player_title_expire_at_y = new TableColumn("expire_at_y", FieldType.INT, false, false, true, false, -1);
+ TableColumn mplt_player_title_expire_at_m = new TableColumn("expire_at_m", FieldType.INT, false, false, true, false, -1);
+ TableColumn mplt_player_title_expire_at_d = new TableColumn("expire_at_d", FieldType.INT, false, false, true, false, -1);
+ new AddColumn(mplt_player_title_expire_at_y).table("mplt_player_title").ifNotExists().execute();
+ new AddColumn(mplt_player_title_expire_at_m).table("mplt_player_title").ifNotExists().execute();
+ new AddColumn(mplt_player_title_expire_at_d).table("mplt_player_title").ifNotExists().execute();
+
+ if (IsFieldExist("mplt_player_title", "expire_at")) {
+ String sql = "UPDATE mplt_player_title SET " +
"expire_at_y = (expire_at / 10000), " +
"expire_at_m = (expire_at % 10000 / 100), " +
"expire_at_d = (expire_at % 100) " +
"WHERE expire_at != -1;";
- MiniPlayerTitle.database.query(sql);
+ DatabaseManager.instance.query(sql);
+ new RemoveColumn("expire_at").IfExists().table("mplt_player_title").execute();
}
- MiniPlayerTitle.database.deleteColumnIfExists("mplt_player_title", "expire_at");
- sql = "INSERT INTO mplt_title (" +
- "id, " +
- "title, " +
- "description " +
- ") VALUES (" +
- "-1, " +
- "'default', " +
- "'default' " +
- ") ON CONFLICT (id) DO NOTHING;";
- MiniPlayerTitle.database.query(sql);
+ Field mplt_title_id_field = new Field("id", -1);
+ Field mplt_title_title_field = new Field("title", "default");
+ Field mplt_title_description_field = new Field("description", "default");
+ InsertRow mplt_title_default = new InsertRow().table("mplt_title");
+ mplt_title_default.field(mplt_title_id_field)
+ .field(mplt_title_title_field)
+ .field(mplt_title_description_field).onConflictDoNothing(mplt_title_id_field);
+ mplt_title_default.execute();
- MiniPlayerTitle.database.addColumnIfNotExists("mplt_player_info", "last_use_name", "TEXT NOT NULL DEFAULT 'null'");
+
+ TableColumn mplt_player_info_last_use_name = new TableColumn("last_use_name", FieldType.STRING, false, false, true, false, "'null'");
+ new AddColumn(mplt_player_info_last_use_name).table("mplt_player_info").ifNotExists().execute();
// 3.0.6
- MiniPlayerTitle.database.addColumnIfNotExists("mplt_player_info", "coin_d", "DOUBLE PRECISION NOT NULL DEFAULT 0");
- MiniPlayerTitle.database.addColumnIfNotExists("mplt_title_shop", "price_d", "DOUBLE PRECISION NOT NULL DEFAULT 0");
- if (MiniPlayerTitle.database.isColumnExist("mplt_player_info", "coin")) {
- sql = "UPDATE mplt_player_info SET coin_d = coin;";
- MiniPlayerTitle.database.query(sql);
+ TableColumn mplt_player_info_coin_d = new TableColumn("coin_d", FieldType.DOUBLE, false, false, true, false, 0);
+ TableColumn mplt_title_shop_price_d = new TableColumn("price_d", FieldType.DOUBLE, false, false, true, false, 0);
+ new AddColumn(mplt_player_info_coin_d).table("mplt_player_info").ifNotExists().execute();
+ new AddColumn(mplt_title_shop_price_d).table("mplt_title_shop").ifNotExists().execute();
+ if (IsFieldExist("mplt_player_info", "coin")) {
+ String sql = "UPDATE mplt_player_info SET coin_d = coin;";
+ DatabaseManager.instance.query(sql);
+ new RemoveColumn("coin").IfExists().table("mplt_player_info").execute();
}
- if (MiniPlayerTitle.database.isColumnExist("mplt_title_shop", "price")) {
- sql = "UPDATE mplt_title_shop SET price_d = price;";
- MiniPlayerTitle.database.query(sql);
+ if (IsFieldExist("mplt_title_shop", "price")) {
+ String sql = "UPDATE mplt_title_shop SET price_d = price;";
+ DatabaseManager.instance.query(sql);
+ new RemoveColumn("price").IfExists().table("mplt_title_shop").execute();
}
- MiniPlayerTitle.database.deleteColumnIfExists("mplt_player_info", "coin");
- MiniPlayerTitle.database.deleteColumnIfExists("mplt_title_shop", "price");
}
}