实现了对基础功能重写后的测试

This commit is contained in:
zhangyuheng 2024-05-21 11:36:54 +08:00
parent e4e0f7c444
commit df812863d0
11 changed files with 93 additions and 73 deletions

View File

@ -64,7 +64,7 @@
</repository> </repository>
<repository> <repository>
<id>lunadeer-repo</id> <id>lunadeer-repo</id>
<url>https://ssl.lunadeer.cn:14454/repository/maven-public/</url> <url>https://ssl.lunadeer.cn:14454/repository/maven-snapshots/</url>
</repository> </repository>
</repositories> </repositories>
@ -78,7 +78,7 @@
<dependency> <dependency>
<groupId>cn.lunadeer</groupId> <groupId>cn.lunadeer</groupId>
<artifactId>MinecraftPluginUtils</artifactId> <artifactId>MinecraftPluginUtils</artifactId>
<version>1.1.8</version> <version>1.2.0-SNAPSHOT</version>
</dependency> </dependency>
</dependencies> </dependencies>
</project> </project>

View File

@ -21,7 +21,7 @@ public class Apis {
} }
public static void updateName(Player player, @Nullable TitleDTO title) { public static void updateName(Player player, @Nullable TitleDTO title) {
if (title == null) { if (title == null || title.getId() == -1) {
Component newDisplayName = Component.text() Component newDisplayName = Component.text()
.append(Component.text("<")) .append(Component.text("<"))
.append(player.name()) .append(player.name())

View File

@ -3,6 +3,7 @@ package cn.lunadeer.miniplayertitle.commands;
import cn.lunadeer.miniplayertitle.MiniPlayerTitle; import cn.lunadeer.miniplayertitle.MiniPlayerTitle;
import cn.lunadeer.miniplayertitle.dtos.PlayerInfoDTO; import cn.lunadeer.miniplayertitle.dtos.PlayerInfoDTO;
import cn.lunadeer.miniplayertitle.dtos.TitleDTO; import cn.lunadeer.miniplayertitle.dtos.TitleDTO;
import cn.lunadeer.miniplayertitle.tuis.AllTitles;
import cn.lunadeer.miniplayertitle.tuis.MyTitles; import cn.lunadeer.miniplayertitle.tuis.MyTitles;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.Component;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
@ -43,12 +44,16 @@ public class TitleManage {
public static void deleteTitle(CommandSender sender, String[] args) { public static void deleteTitle(CommandSender sender, String[] args) {
try { try {
if (notOpOrConsole(sender)) return; if (notOpOrConsole(sender)) return;
if (args.length != 2) { if (args.length < 2) {
MiniPlayerTitle.notification.warn(sender, "用法: /mplt delete_title <称号ID>"); MiniPlayerTitle.notification.warn(sender, "用法: /mplt delete_title <称号ID>");
return; return;
} }
TitleDTO.delete(Integer.parseInt(args[1])); TitleDTO.delete(Integer.parseInt(args[1]));
MiniPlayerTitle.notification.info(sender, "已删除称号"); MiniPlayerTitle.notification.info(sender, "已删除称号");
if (args.length == 3) {
int page = Integer.parseInt(args[2]);
AllTitles.show(sender, new String[]{"all_titles", String.valueOf(page)});
}
} catch (Exception e) { } catch (Exception e) {
MiniPlayerTitle.notification.error(sender, e.getMessage()); MiniPlayerTitle.notification.error(sender, e.getMessage());
} }

View File

@ -7,6 +7,8 @@ import cn.lunadeer.miniplayertitle.dtos.TitleDTO;
import cn.lunadeer.miniplayertitle.dtos.TitleShopDTO; import cn.lunadeer.miniplayertitle.dtos.TitleShopDTO;
import cn.lunadeer.miniplayertitle.tuis.MyTitles; import cn.lunadeer.miniplayertitle.tuis.MyTitles;
import cn.lunadeer.miniplayertitle.tuis.SaleInfo; import cn.lunadeer.miniplayertitle.tuis.SaleInfo;
import cn.lunadeer.miniplayertitle.tuis.Shop;
import net.kyori.adventure.text.Component;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
@ -15,6 +17,7 @@ import java.util.List;
import java.util.Objects; import java.util.Objects;
import static cn.lunadeer.miniplayertitle.commands.Apis.notOpOrConsole; import static cn.lunadeer.miniplayertitle.commands.Apis.notOpOrConsole;
import static cn.lunadeer.miniplayertitle.tuis.Apis.getArgPage;
import static cn.lunadeer.miniplayertitle.tuis.Apis.getLastArgsPage; import static cn.lunadeer.miniplayertitle.tuis.Apis.getLastArgsPage;
public class TitleShopSale { public class TitleShopSale {
@ -119,8 +122,7 @@ public class TitleShopSale {
} }
if (args.length == 3) { if (args.length == 3) {
int page = getLastArgsPage(args); Shop.show(sender, new String[]{"shop"});
SaleInfo.show(sender, new String[]{"sale_info", args[1], String.valueOf(page)});
} }
} }
@ -128,8 +130,8 @@ public class TitleShopSale {
* 购买商品 * 购买商品
* mplt buy_sale <商品ID> * mplt buy_sale <商品ID>
* *
* @param sender * @param sender CommandSender
* @param args * @param args String[]
*/ */
public static void buySale(CommandSender sender, String[] args) { public static void buySale(CommandSender sender, String[] args) {
if (!(sender instanceof Player)) { if (!(sender instanceof Player)) {
@ -171,23 +173,25 @@ public class TitleShopSale {
} }
if (had == null) { if (had == null) {
had = PlayerTitleDTO.create(player.getUniqueId(), titleShop.getTitle(), LocalDateTime.now().plusDays(titleShop.getDays())); had = PlayerTitleDTO.create(player.getUniqueId(), titleShop.getTitle(), titleShop.getDays() == -1 ? null : LocalDateTime.now().plusDays(titleShop.getDays()));
if (had == null) { if (had == null) {
MiniPlayerTitle.notification.error(player, "购买称号时出现错误,详情请查看控制台日志"); MiniPlayerTitle.notification.error(player, "购买称号时出现错误,详情请查看控制台日志");
return; return;
} }
MiniPlayerTitle.notification.info(player, "成功购买称号: " + had.getTitle().getTitleColored()); titleShop.setAmount(titleShop.getAmount() - 1);
playerInfo.setCoin(playerInfo.getCoin() - titleShop.getPrice());
MiniPlayerTitle.notification.info(player, Component.text("成功购买称号: ").append(had.getTitle().getTitleColored()));
} else if (!had.isExpired()) { } else if (!had.isExpired()) {
MiniPlayerTitle.notification.warn(player, "你已拥有此称号,在过期前无法再次购买"); MiniPlayerTitle.notification.warn(player, "你已拥有此称号,在过期前无法再次购买");
} else { } else {
had.setExpireAt(LocalDateTime.now().plusDays(titleShop.getDays())); had.setExpireAt(titleShop.getDays() == -1 ? null : LocalDateTime.now().plusDays(titleShop.getDays()));
MiniPlayerTitle.notification.info(player, "成功续续期称号: " + had.getTitle().getTitleColored()); titleShop.setAmount(titleShop.getAmount() - 1);
playerInfo.setCoin(playerInfo.getCoin() - titleShop.getPrice());
MiniPlayerTitle.notification.info(player, Component.text("成功续续期称号: ").append(had.getTitle().getTitleColored()));
} }
if (args.length == 2) { int page = getArgPage(args, 3);
int page = getLastArgsPage(args); MyTitles.show(sender, new String[]{"my_titles", String.valueOf(page)});
MyTitles.show(sender, new String[]{"my_titles", String.valueOf(page)});
}
} }
} }

View File

@ -27,11 +27,9 @@ public class PlayerInfoDTO {
String sql = ""; String sql = "";
sql = "INSERT INTO mplt_player_info (uuid, coin) " + sql = "INSERT INTO mplt_player_info (uuid, coin) " +
"VALUES ('" + uuid.toString() + "', " + MiniPlayerTitle.config.getDefaultCoin() + ") " + "VALUES ('" + uuid.toString() + "', " + MiniPlayerTitle.config.getDefaultCoin() + ") " +
"RETURNING " + "ON CONFLICT DO NOTHING;";
"uuid, coin, using_title_id " +
"ON CONFLICT (uuid) DO NOTHING;";
try (ResultSet rs = MiniPlayerTitle.database.query(sql)) { try (ResultSet rs = MiniPlayerTitle.database.query(sql)) {
if (rs.next()) return getPlayerInfoDTO(rs); return get(uuid);
} catch (Exception e) { } catch (Exception e) {
MiniPlayerTitle.database.handleDatabaseError("创建玩家信息失败", e, sql); MiniPlayerTitle.database.handleDatabaseError("创建玩家信息失败", e, sql);
} }
@ -58,10 +56,7 @@ public class PlayerInfoDTO {
String sql = ""; String sql = "";
sql = "UPDATE mplt_player_info SET using_title_id = " + title.getId() + " WHERE uuid = '" + uuid.toString() + "';"; sql = "UPDATE mplt_player_info SET using_title_id = " + title.getId() + " WHERE uuid = '" + uuid.toString() + "';";
try (ResultSet rs = MiniPlayerTitle.database.query(sql)) { try (ResultSet rs = MiniPlayerTitle.database.query(sql)) {
if (rs != null && rs.next()) { return true;
using_title = title;
return true;
}
} catch (Exception e) { } catch (Exception e) {
MiniPlayerTitle.database.handleDatabaseError("设置玩家使用称号失败", e, sql); MiniPlayerTitle.database.handleDatabaseError("设置玩家使用称号失败", e, sql);
} }
@ -76,10 +71,8 @@ public class PlayerInfoDTO {
String sql = ""; String sql = "";
sql = "UPDATE mplt_player_info SET coin = " + coin + " WHERE uuid = '" + uuid.toString() + "';"; sql = "UPDATE mplt_player_info SET coin = " + coin + " WHERE uuid = '" + uuid.toString() + "';";
try (ResultSet rs = MiniPlayerTitle.database.query(sql)) { try (ResultSet rs = MiniPlayerTitle.database.query(sql)) {
if (rs != null && rs.next()) { this.coin = coin;
this.coin = coin; return true;
return true;
}
} catch (Exception e) { } catch (Exception e) {
MiniPlayerTitle.database.handleDatabaseError("设置玩家金币失败", e, sql); MiniPlayerTitle.database.handleDatabaseError("设置玩家金币失败", e, sql);
} }

View File

@ -2,6 +2,7 @@ package cn.lunadeer.miniplayertitle.dtos;
import cn.lunadeer.miniplayertitle.MiniPlayerTitle; import cn.lunadeer.miniplayertitle.MiniPlayerTitle;
import javax.annotation.Nullable;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.time.LocalDateTime; import java.time.LocalDateTime;
@ -33,8 +34,11 @@ public class PlayerTitleDTO {
public boolean setExpireAt(LocalDateTime dateTime) { public boolean setExpireAt(LocalDateTime dateTime) {
String sql = ""; String sql = "";
sql += "UPDATE mplt_player_title SET expire_at_y = " + dateTime.getYear() + ", expire_at_m = " + dateTime.getMonthValue() + ", expire_at_d = " + dateTime.getDayOfMonth() + " " + if (dateTime == null) {
"WHERE id = " + id + ";"; sql += "UPDATE mplt_player_title SET expire_at_y = -1, expire_at_m = -1, expire_at_d = -1 WHERE id = " + id + ";";
} 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 + ";";
}
try (ResultSet rs = MiniPlayerTitle.database.query(sql)) { try (ResultSet rs = MiniPlayerTitle.database.query(sql)) {
return true; return true;
} catch (Exception e) { } catch (Exception e) {
@ -43,11 +47,16 @@ public class PlayerTitleDTO {
return false; return false;
} }
public static PlayerTitleDTO create(UUID player_uuid, TitleDTO title, LocalDateTime expire_at) { public static PlayerTitleDTO create(UUID player_uuid, TitleDTO title, @Nullable LocalDateTime expire_at) {
String sql = ""; String sql = "";
sql += "INSERT INTO mplt_player_title (player_uuid, title_id, expire_at_y, expire_at_m, expire_at_d) " + sql += "INSERT INTO mplt_player_title (player_uuid, title_id, expire_at_y, expire_at_m, expire_at_d) ";
"VALUES ('" + player_uuid.toString() + "', " + title.getId() + ", " + expire_at.getYear() + ", " + expire_at.getMonthValue() + ", " + expire_at.getDayOfMonth() + ") " +
"RETURNING " + if (expire_at == null) {
sql += "VALUES ('" + player_uuid.toString() + "', " + title.getId() + ", -1, -1, -1) ";
} else {
sql += "VALUES ('" + player_uuid.toString() + "', " + title.getId() + ", " + expire_at.getYear() + ", " + expire_at.getMonthValue() + ", " + expire_at.getDayOfMonth() + ") ";
}
sql += "RETURNING " +
"id, player_uuid, title_id, expire_at_y, expire_at_m, expire_at_d;"; "id, player_uuid, title_id, expire_at_y, expire_at_m, expire_at_d;";
try (ResultSet rs = MiniPlayerTitle.database.query(sql)) { try (ResultSet rs = MiniPlayerTitle.database.query(sql)) {
if (rs.next()) { if (rs.next()) {

View File

@ -96,7 +96,8 @@ public class TitleShopDTO {
public static TitleShopDTO get(Integer id) { public static TitleShopDTO get(Integer id) {
String sql = ""; String sql = "";
sql += "SELECT id, title_id, price, days, amount, sale_end_at FROM mplt_title_shop WHERE id = " + id + ";"; sql += "SELECT id, title_id, price, days, amount, sale_end_at_y, sale_end_at_m, sale_end_at_d " +
"FROM mplt_title_shop WHERE id = " + id + ";";
try (ResultSet rs = MiniPlayerTitle.database.query(sql)) { try (ResultSet rs = MiniPlayerTitle.database.query(sql)) {
if (rs.next()) { if (rs.next()) {
return getTitleShop(rs); return getTitleShop(rs);
@ -109,7 +110,8 @@ public class TitleShopDTO {
public static List<TitleShopDTO> getAll() { public static List<TitleShopDTO> getAll() {
String sql = ""; String sql = "";
sql += "SELECT id, title_id, price, days, amount, sale_end_at FROM mplt_title_shop;"; sql += "SELECT id, title_id, price, days, amount, sale_end_at_y, sale_end_at_m, sale_end_at_d " +
"FROM mplt_title_shop;";
List<TitleShopDTO> titleShops = new ArrayList<>(); List<TitleShopDTO> titleShops = new ArrayList<>();
try (ResultSet rs = MiniPlayerTitle.database.query(sql)) { try (ResultSet rs = MiniPlayerTitle.database.query(sql)) {
while (rs != null && rs.next()) { while (rs != null && rs.next()) {

View File

@ -26,6 +26,9 @@ public class AllTitles {
.append("所有称号")); .append("所有称号"));
for (TitleDTO title : titles) { for (TitleDTO title : titles) {
if (title.getId() == -1){
continue;
}
Line line = Line.create() Line line = Line.create()
.append(title.getId().toString()) .append(title.getId().toString())
.append(title.getTitleColored()); .append(title.getTitleColored());

View File

@ -38,8 +38,12 @@ public class MyTitles {
continue; continue;
} }
Line line = Line.create() Line line = Line.create()
.append(title.getTitle().getTitleColored()) .append(title.getTitle().getTitleColored());
.append("有效期至: " + title.getExpireAt().getYear() + "" + title.getExpireAt().getMonthValue() + "" + title.getExpireAt().getDayOfMonth() + ""); if (title.getExpireAt() == null) {
line.append("永久");
} else {
line.append("有效期至: " + title.getExpireAt().getYear() + "" + title.getExpireAt().getMonthValue() + "" + title.getExpireAt().getDayOfMonth() + "");
}
if (Objects.equals(playerInfo.getUsingTitle().getId(), title.getId())) { if (Objects.equals(playerInfo.getUsingTitle().getId(), title.getId())) {
line.append(Button.createRed("卸下").setExecuteCommand("/mplt use_title -1 " + page).build()); line.append(Button.createRed("卸下").setExecuteCommand("/mplt use_title -1 " + page).build());
} else { } else {

View File

@ -99,11 +99,11 @@ public class SaleInfo {
} }
} else { } else {
if (player.isOp()) { if (player.isOp()) {
end_at.append(Button.create("<<").setHoverText("提前10天").setExecuteCommand("/mplt set_sale less_end_at " + titleShop.getId() + " 10 " + page).build()); end_at.append(Button.create("<<").setPreSufIx("", "").setHoverText("提前10天").setExecuteCommand("/mplt set_sale less_end_at " + titleShop.getId() + " 10 " + page).build());
end_at.append(Button.create("-").setHoverText("提前1天").setExecuteCommand("/mplt set_sale less_end_at " + titleShop.getId() + " 1 " + page).build()); end_at.append(Button.create("-").setPreSufIx("", "").setHoverText("提前1天").setExecuteCommand("/mplt set_sale less_end_at " + titleShop.getId() + " 1 " + page).build());
end_at.append(titleShop.getSaleEndAt().getYear() + "" + titleShop.getSaleEndAt().getMonthValue() + "" + titleShop.getSaleEndAt().getDayOfMonth() + ""); end_at.append(titleShop.getSaleEndAt().getYear() + "" + titleShop.getSaleEndAt().getMonthValue() + "" + titleShop.getSaleEndAt().getDayOfMonth() + "");
end_at.append(Button.create("+").setHoverText("延后1天").setExecuteCommand("/mplt set_sale more_end_at " + titleShop.getId() + " 1 " + page).build()); end_at.append(Button.create("+").setPreSufIx("", "").setHoverText("延后1天").setExecuteCommand("/mplt set_sale more_end_at " + titleShop.getId() + " 1 " + page).build());
end_at.append(Button.create(">>").setHoverText("延后10天").setExecuteCommand("/mplt set_sale more_end_at " + titleShop.getId() + " 10 " + page).build()); end_at.append(Button.create(">>").setPreSufIx("", "").setHoverText("延后10天").setExecuteCommand("/mplt set_sale more_end_at " + titleShop.getId() + " 10 " + page).build());
end_at.append(Button.create("转为常驻").setExecuteCommand("/mplt set_sale end_at " + titleShop.getId() + " -1:-1:-1 " + page).build()); end_at.append(Button.create("转为常驻").setExecuteCommand("/mplt set_sale end_at " + titleShop.getId() + " -1:-1:-1 " + page).build());
} else { } else {
end_at.append(titleShop.getSaleEndAt().getYear() + "" + titleShop.getSaleEndAt().getMonthValue() + "" + titleShop.getSaleEndAt().getDayOfMonth() + ""); end_at.append(titleShop.getSaleEndAt().getYear() + "" + titleShop.getSaleEndAt().getMonthValue() + "" + titleShop.getSaleEndAt().getDayOfMonth() + "");
@ -120,8 +120,10 @@ public class SaleInfo {
operate.append(Button.createGreen("购买").setExecuteCommand("/mplt buy_sale " + titleShop.getId()).build()); operate.append(Button.createGreen("购买").setExecuteCommand("/mplt buy_sale " + titleShop.getId()).build());
} }
if (player.isOp()) { if (player.isOp()) {
operate.append(Button.create("删除").setExecuteCommand("/mplt delete_sale " + args[1] + " " + page).build()); operate.append(Button.create("删除").setExecuteCommand("/mplt delete_sale " + args[1] + " b").build());
} }
view.add(Line.create().append("---------------------"));
view.add(operate);
view.showOn(player, page); view.showOn(player, page);
} }
} }

View File

@ -56,23 +56,6 @@ public class DatabaseTables {
");"; ");";
MiniPlayerTitle.database.query(sql); MiniPlayerTitle.database.query(sql);
sql = "INSERT INTO mplt_title (" +
"id, " +
"title, " +
"description," +
"enabled, " +
"created_at, " +
"updated_at " +
") VALUES (" +
"-1, " +
"'default', " +
"'default', " +
"TRUE, " +
"CURRENT_TIMESTAMP, " +
"CURRENT_TIMESTAMP " +
") ON CONFLICT (id) DO NOTHING;";
MiniPlayerTitle.database.query(sql);
MiniPlayerTitle.database.deleteColumnIfExists("mplt_title", "created_at"); MiniPlayerTitle.database.deleteColumnIfExists("mplt_title", "created_at");
MiniPlayerTitle.database.deleteColumnIfExists("mplt_title", "updated_at"); MiniPlayerTitle.database.deleteColumnIfExists("mplt_title", "updated_at");
MiniPlayerTitle.database.deleteColumnIfExists("mplt_title", "enabled"); MiniPlayerTitle.database.deleteColumnIfExists("mplt_title", "enabled");
@ -89,24 +72,39 @@ public class DatabaseTables {
MiniPlayerTitle.database.addColumnIfNotExists("mplt_title_shop", "sale_end_at_y", "INTEGER NOT NULL DEFAULT -1"); 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_m", "INTEGER NOT NULL DEFAULT -1");
MiniPlayerTitle.database.addColumnIfNotExists("mplt_title_shop", "sale_end_at_d", "INTEGER NOT NULL DEFAULT -1"); MiniPlayerTitle.database.addColumnIfNotExists("mplt_title_shop", "sale_end_at_d", "INTEGER NOT NULL DEFAULT -1");
// convert sale_end_at(YYYYMMDD) to sale_end_at_y, sale_end_at_m, sale_end_at_d // convert sale_end_at(YYYYMMDD) to sale_end_at_y, sale_end_at_m, sale_end_at_d if sale_end_at column exists
sql = "UPDATE mplt_title_shop SET " + if (MiniPlayerTitle.database.isColumnExist("mplt_title_shop", "sale_end_at")) {
"sale_end_at_y = (sale_end_at / 10000), " + sql = "UPDATE mplt_title_shop SET " +
"sale_end_at_m = (sale_end_at % 10000 / 100), " + "sale_end_at_y = (sale_end_at / 10000), " +
"sale_end_at_d = (sale_end_at % 100) " + "sale_end_at_m = (sale_end_at % 10000 / 100), " +
"WHERE sale_end_at != -1;"; "sale_end_at_d = (sale_end_at % 100) " +
MiniPlayerTitle.database.query(sql); "WHERE sale_end_at != -1;";
MiniPlayerTitle.database.query(sql);
}
MiniPlayerTitle.database.deleteColumnIfExists("mplt_title_shop", "sale_end_at"); 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_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_m", "INTEGER NOT NULL DEFAULT -1");
MiniPlayerTitle.database.addColumnIfNotExists("mplt_player_title", "expire_at_d", "INTEGER NOT NULL DEFAULT -1"); MiniPlayerTitle.database.addColumnIfNotExists("mplt_player_title", "expire_at_d", "INTEGER NOT NULL DEFAULT -1");
sql = "UPDATE mplt_player_title SET " + if (MiniPlayerTitle.database.isColumnExist("mplt_player_title", "expire_at")) {
"expire_at_y = (expire_at / 10000), " + sql = "UPDATE mplt_player_title SET " +
"expire_at_m = (expire_at % 10000 / 100), " + "expire_at_y = (expire_at / 10000), " +
"expire_at_d = (expire_at % 100) " + "expire_at_m = (expire_at % 10000 / 100), " +
"WHERE expire_at != -1;"; "expire_at_d = (expire_at % 100) " +
MiniPlayerTitle.database.query(sql); "WHERE expire_at != -1;";
MiniPlayerTitle.database.query(sql);
}
MiniPlayerTitle.database.deleteColumnIfExists("mplt_player_title", "expire_at"); 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);
} }
} }