From d51403b58e4b6ec95511f7464657e8506d5d12e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=A9=BB=E9=AD=82=E5=9C=A3=E4=BD=BF?= Date: Fri, 20 Dec 2024 03:03:08 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BC=95=E5=85=A5add=E5=92=8Chelp=E5=AD=90?= =?UTF-8?q?=E5=91=BD=E4=BB=A4=EF=BC=8C=E6=98=BE=E7=A4=BA=E4=BE=A7=E8=BE=B9?= =?UTF-8?q?=E6=A0=8F=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- .../Commands/ZbCommand.java | 110 +++++++- .../CoordinateRecorder.java | 6 + .../Listener/PlayerMap.java | 18 +- .../coordinateRecorder/data/Database.java | 24 +- .../coordinateRecorder/data/PlayerData.java | 99 +++++++- .../coordinateRecorder/data/ScoreboardUI.java | 91 +++++++ .../java/ling/database/DefaultSchema.java | 7 + src/main/java/ling/database/Indexes.java | 26 ++ src/main/java/ling/database/Keys.java | 3 + src/main/java/ling/database/Tables.java | 6 + .../database/tables/LocationnotepadTB.java | 14 ++ .../database/tables/PlayersettingsTB.java | 238 ++++++++++++++++++ .../tables/pojos/LocationnotepadBO.java | 26 ++ .../tables/pojos/PlayersettingsBO.java | 185 ++++++++++++++ .../tables/records/LocationnotepadPO.java | 22 +- .../tables/records/PlayersettingsPO.java | 141 +++++++++++ 17 files changed, 1003 insertions(+), 15 deletions(-) create mode 100644 src/main/java/ling/coordinateRecorder/data/ScoreboardUI.java create mode 100644 src/main/java/ling/database/Indexes.java create mode 100644 src/main/java/ling/database/tables/PlayersettingsTB.java create mode 100644 src/main/java/ling/database/tables/pojos/PlayersettingsBO.java create mode 100644 src/main/java/ling/database/tables/records/PlayersettingsPO.java diff --git a/pom.xml b/pom.xml index dc6e813..2db37fd 100644 --- a/pom.xml +++ b/pom.xml @@ -72,7 +72,7 @@ org.jooq.meta.sqlite.SQLiteDatabase - Version|LocationNotepad + Version|LocationNotepad|PlayerSettings diff --git a/src/main/java/ling/coordinateRecorder/Commands/ZbCommand.java b/src/main/java/ling/coordinateRecorder/Commands/ZbCommand.java index bf47027..1cf4e54 100644 --- a/src/main/java/ling/coordinateRecorder/Commands/ZbCommand.java +++ b/src/main/java/ling/coordinateRecorder/Commands/ZbCommand.java @@ -1,31 +1,133 @@ package ling.coordinateRecorder.Commands; +import ling.coordinateRecorder.CoordinateRecorder; +import ling.coordinateRecorder.Listener.PlayerMap; +import ling.coordinateRecorder.data.PlayerData; +import org.bukkit.ChatColor; +import org.bukkit.Material; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.command.TabCompleter; import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.BookMeta; import org.jetbrains.annotations.NotNull; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Arrays; import java.util.List; /// zb命令处理器 public class ZbCommand implements CommandExecutor, TabCompleter { + + protected final static List TAB_1 = Arrays.asList("add", "remove", "help", "reload"); + + public ZbCommand() { + + } + + protected void add(Player player, String[] strings) { + if (strings.length > 3) { + player.sendMessage(ChatColor.RED + "命令过长"); + return; + } + if (strings.length < 2) { + player.sendMessage(ChatColor.RED + "语法错误:add需要 [name] 参数,作为当前地标的名称"); + return; + } + boolean isFixed = false; + String name = strings[1]; + if (strings.length == 3) { + if (strings[2].equals("true")) { + isFixed = true; + } else if (!strings[2].equals("false")) { + player.sendMessage(ChatColor.RED + "无法解析的参数:" + strings[3]); + } + } + PlayerData data = PlayerMap.getCurrent().getPlayerData(player); + if (data == null) { + player.sendMessage(ChatColor.RED + "玩家未登录"); + return; + } + try { + data.addLocation(name, isFixed); + player.sendMessage("坐标记录完毕!"); + } catch (SQLException e) { + CoordinateRecorder.getCurrent().getLogger().severe("记录坐标出错:" + e.getMessage()); + player.sendMessage(ChatColor.RED + "服务器内部错误:记录数据失败"); + } + } + + /// 显示帮助 + protected void help(Player player) { + ItemStack book = new ItemStack(Material.WRITTEN_BOOK); + BookMeta bookMeta = (BookMeta) book.getItemMeta(); + assert bookMeta != null; + bookMeta.setGeneration(BookMeta.Generation.COPY_OF_COPY); + bookMeta.setTitle("帮助信息"); + bookMeta.setAuthor("StarPoles"); + bookMeta.addPage("欢迎使用坐标管理器!你好," + player.getName() + "\n\n" + + "本书将向你介绍如何使用指令记录曾探索过的地点,以避免迷路\n" + + "如果需要再次查看帮助信息,请使用 /zb help\n", + "/zb add <地点名称> <固定到侧边栏> \n" + + "记录当前地点到数据库中,例如\n" + + "/zb add Home\n" + + "将会记录当前的位置,取名为 Home,并固定到屏幕右侧\n", + "如果不想固定到屏幕右侧,可以像这样使用\n" + + "/zb add Home false\n" + + "然后,你可以使用/zb list来查看已经保存的位置\n" + + "使用/zb fixed 来将地点固定到屏幕右侧\n" + + "使用/zb unfixed 来取消固定。\n"); + book.setItemMeta(bookMeta); + + player.openBook(book); + } + + protected boolean execute(Player player, String[] strings) { + if (strings.length < 1) { + player.sendMessage(ChatColor.RED + "语法错误:需要 [选项]"); + return false; + } + if (strings[0].equals("add")) { + add(player, strings); + } + if (strings[0].equals("help")) { + help(player); + } + + return true; + } + @Override public boolean onCommand(@NotNull CommandSender commandSender, @NotNull Command command, @NotNull String s, @NotNull String[] strings) { assert s.equals("zb"); - if (!(commandSender instanceof Player)) { + if (!(commandSender instanceof Player player)) { System.out.println("该命令只能由玩家执行"); return false; } - Player player = (Player) commandSender; - - return false; + return execute(player, strings); } @Override public List onTabComplete(CommandSender commandSender, Command command, String s, String[] strings) { + String latest = null; + if (strings.length != 0) { + latest = strings[strings.length - 1]; + } + if (strings.length == 1) + return filter(latest, new ArrayList<>(TAB_1)); return List.of(); } + + private List filter(String latest, List list) { + if (list.isEmpty() || latest == null) { + return List.of(); + } + String ll = latest.toLowerCase(); + list.removeIf(k -> !k.toLowerCase().startsWith(ll)); + return list; + } } diff --git a/src/main/java/ling/coordinateRecorder/CoordinateRecorder.java b/src/main/java/ling/coordinateRecorder/CoordinateRecorder.java index 410bcb3..739f10a 100644 --- a/src/main/java/ling/coordinateRecorder/CoordinateRecorder.java +++ b/src/main/java/ling/coordinateRecorder/CoordinateRecorder.java @@ -1,5 +1,6 @@ package ling.coordinateRecorder; +import ling.coordinateRecorder.Commands.ZbCommand; import ling.coordinateRecorder.Listener.PlayerAuthMeLoginEventListener; import ling.coordinateRecorder.Listener.PlayerEventListener; import ling.coordinateRecorder.Listener.PlayerLoginEventListener; @@ -40,6 +41,11 @@ public final class CoordinateRecorder extends JavaPlugin { database = new Database(this); start(); loadListener(); + ZbCommand zb = new ZbCommand(); + var command = Bukkit.getPluginCommand("zb"); + assert command != null; + command.setExecutor(zb); + command.setTabCompleter(zb); getLogger().info("加载完毕"); } catch (SQLException e) { throw new RuntimeException("插件初始化失败", e); diff --git a/src/main/java/ling/coordinateRecorder/Listener/PlayerMap.java b/src/main/java/ling/coordinateRecorder/Listener/PlayerMap.java index 4282fe6..2e52ab5 100644 --- a/src/main/java/ling/coordinateRecorder/Listener/PlayerMap.java +++ b/src/main/java/ling/coordinateRecorder/Listener/PlayerMap.java @@ -2,9 +2,11 @@ package ling.coordinateRecorder.Listener; import ling.coordinateRecorder.CoordinateRecorder; import ling.coordinateRecorder.data.PlayerData; +import org.bukkit.ChatColor; import org.bukkit.entity.Player; import org.jetbrains.annotations.NotNull; +import java.sql.SQLException; import java.util.HashMap; import java.util.UUID; @@ -32,17 +34,23 @@ public class PlayerMap { /// 玩家登录 protected void playerLogin(Player player) { - if (!playerList.containsKey(player.getUniqueId())) { - plugin.getLogger().info("玩家[" + player.getName() + "]登录服务器,已添加到管理列表"); - playerList.put(player.getUniqueId(), new PlayerData(player)); - } else { - plugin.getLogger().warning("玩家[" + player.getName() + "]已经在管理列表中"); + try { + if (!playerList.containsKey(player.getUniqueId())) { + plugin.getLogger().info("玩家[" + player.getName() + "]登录服务器,已添加到管理列表"); + playerList.put(player.getUniqueId(), new PlayerData(player)); + } else { + plugin.getLogger().warning("玩家[" + player.getName() + "]已经在管理列表中"); + } + } catch (SQLException e) { + plugin.getLogger().severe("查询玩家数据出错!" + e.getMessage()); + player.sendMessage(ChatColor.RED + "警告!载入玩家数据出错,坐标管理器不可用,请联系管理员!"); } } /// 玩家退出 protected void playerQuit(Player player) { if (playerList.containsKey(player.getUniqueId())) { + playerList.get(player.getUniqueId()).closeUI(); playerList.remove(player.getUniqueId()); plugin.getLogger().info("玩家[" + player.getName() + "]退出服务器,停止管理"); } diff --git a/src/main/java/ling/coordinateRecorder/data/Database.java b/src/main/java/ling/coordinateRecorder/data/Database.java index b863ded..dfde5df 100644 --- a/src/main/java/ling/coordinateRecorder/data/Database.java +++ b/src/main/java/ling/coordinateRecorder/data/Database.java @@ -72,7 +72,28 @@ public class Database { .column("y", SQLDataType.INTEGER.nullable(false)) .column("z", SQLDataType.INTEGER.nullable(false)) .column("time", SQLDataType.BIGINTUNSIGNED.nullable(false)) + .column("isFixed", SQLDataType.BOOLEAN.nullable(false).default_(false)) .column("isDelete", SQLDataType.BOOLEAN.nullable(false).default_(false)) + .constraints(DSL.primaryKey("ID")) + .execute(); + ctx.createIndex(DSL.name("PlayerIndex")) + .on("LocationNotepad", "UID", "isFixed", "isDelete", "name") + .execute(); + } + //玩家设置表 + if (ctx.meta().getTables("PlayerSettings").isEmpty()) { + ctx.createTable("PlayerSettings") + .column("UID", SQLDataType.VARCHAR(64).nullable(false)) + //控制是否在玩家屏幕右侧通过计分板显示插件信息 + .column("displaySwitch", SQLDataType.BOOLEAN.nullable(false).default_(true)) + //控制是否在计分板上显示当前时间刻对应的时间 + .column("showTime", SQLDataType.BOOLEAN.nullable(false).default_(true)) + //控制是否允许他人请求向自己传送 + .column("tpMe", SQLDataType.BOOLEAN.nullable(false).default_(true)) + //当他人的传送请求被设置自动拒绝时,展示给它的提示信息 + .column("settingsRejectTpMessage", + SQLDataType.CHAR.nullable(false).default_("对方的设置不允许任何人向他传送!")) + .constraint(DSL.primaryKey("UID")) .execute(); } @@ -89,7 +110,8 @@ public class Database { var version = getVersion(); //数据库已经初始化 if (version != null) { - CoordinateRecorder.getCurrent().getLogger().info("数据库版本:" + version.getVersion() + "," + version.getVersionname()); + CoordinateRecorder.getCurrent().getLogger().info( + "数据库版本:" + version.getVersion() + "," + version.getVersionname()); return; } ctx.insertInto(VersionTB.VERSION) diff --git a/src/main/java/ling/coordinateRecorder/data/PlayerData.java b/src/main/java/ling/coordinateRecorder/data/PlayerData.java index 10dc057..bd7260e 100644 --- a/src/main/java/ling/coordinateRecorder/data/PlayerData.java +++ b/src/main/java/ling/coordinateRecorder/data/PlayerData.java @@ -1,13 +1,110 @@ package ling.coordinateRecorder.data; +import ling.coordinateRecorder.CoordinateRecorder; +import ling.database.tables.records.LocationnotepadPO; +import ling.database.tables.records.PlayersettingsPO; +import org.bukkit.ChatColor; +import org.bukkit.Location; import org.bukkit.entity.Player; +import org.jooq.Record; +import org.jooq.Result; + +import java.math.BigDecimal; +import java.sql.SQLException; +import java.util.List; +import java.util.Objects; + +import static ling.database.Tables.PLAYERSETTINGS; +import static ling.database.tables.LocationnotepadTB.LOCATIONNOTEPAD; /// 玩家的附加信息 public class PlayerData { protected final Player player; + /// 此玩家固定在展示页的地点列表 + protected List locationList; + protected PlayersettingsPO settings; + protected static final CoordinateRecorder plugin = CoordinateRecorder.getCurrent(); + protected ScoreboardUI ui; - public PlayerData(Player player) { + + public PlayerData(Player player) throws SQLException { this.player = player; + loadPlayerSettings(); + ui = new ScoreboardUI(this); + ui.createScoreboard(); + locationListUpdate(); + } + + + protected Record loadPlayerSettingsRecord() throws SQLException { + return CoordinateRecorder.getDatabase().getDSL().select().from(PLAYERSETTINGS).where( + PLAYERSETTINGS.UID.eq(player.getUniqueId().toString()) + ).fetchOne(); + } + + /// 关闭ui + public void closeUI() { + ui.closeUI(); + } + + /// 将当前位置记录到坐标记录中 + public boolean addLocation(String name, boolean isFixed) throws SQLException { + var ctx = CoordinateRecorder.getDatabase().getDSL(); + Record record = ctx.select().from(LOCATIONNOTEPAD).where( + LOCATIONNOTEPAD.UID.eq(player.getUniqueId().toString()) + .and(LOCATIONNOTEPAD.NAME.eq(name)) + .and(LOCATIONNOTEPAD.ISDELETE.eq(false)) + ).fetchOne(); + if (record != null) { + player.sendMessage(ChatColor.RED + "该名称的地点已经存在"); + return false; + } + Location location = player.getLocation(); + ctx.insertInto(LOCATIONNOTEPAD).columns( + LOCATIONNOTEPAD.UID, + LOCATIONNOTEPAD.WORLD, + LOCATIONNOTEPAD.NAME, + LOCATIONNOTEPAD.X, + LOCATIONNOTEPAD.Y, + LOCATIONNOTEPAD.Z, + LOCATIONNOTEPAD.TIME, + LOCATIONNOTEPAD.ISFIXED + ).values( + player.getUniqueId().toString(), + Objects.requireNonNull(location.getWorld()).getName(), + name, + (int) location.getX(), + (int) location.getY(), + (int) location.getZ(), + BigDecimal.valueOf(System.currentTimeMillis()), + isFixed + ).execute(); + locationListUpdate(); + return true; + } + + /// 载入玩家设置 + public void loadPlayerSettings() throws SQLException { + var record = loadPlayerSettingsRecord(); + if (record == null) { + //设置不存在,新建一行 + CoordinateRecorder.getDatabase().getDSL().insertInto(PLAYERSETTINGS) + .columns(PLAYERSETTINGS.UID) + .values(player.getUniqueId().toString()) + .execute(); + record = loadPlayerSettingsRecord(); + assert record != null; + } + this.settings = record.into(PlayersettingsPO.class); + } + + /// 重新载入玩家的固定地点数据 + public void locationListUpdate() throws SQLException { + Result result = CoordinateRecorder.getDatabase().getDSL().select().from(LOCATIONNOTEPAD).where( + LOCATIONNOTEPAD.UID.eq(player.getUniqueId().toString()).and(LOCATIONNOTEPAD.ISFIXED.eq(true)) + .and(LOCATIONNOTEPAD.ISDELETE.eq(false))).fetch(); + locationList = result.into(LocationnotepadPO.class); + ui.flashLocations(); } /// 玩家位置信息发生改变 diff --git a/src/main/java/ling/coordinateRecorder/data/ScoreboardUI.java b/src/main/java/ling/coordinateRecorder/data/ScoreboardUI.java new file mode 100644 index 0000000..e92b9f1 --- /dev/null +++ b/src/main/java/ling/coordinateRecorder/data/ScoreboardUI.java @@ -0,0 +1,91 @@ +package ling.coordinateRecorder.data; + +import ling.database.tables.records.LocationnotepadPO; +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.Location; +import org.bukkit.entity.Player; +import org.bukkit.scoreboard.*; + +import java.util.ArrayList; +import java.util.List; + +/// 玩家的计分板UI界面 +public class ScoreboardUI { + protected final Player player; + protected final PlayerData playerData; + protected Scoreboard scoreboard; + protected Objective objective; + protected Location location; + protected Score meLocation; + protected Score time; + protected List locals = new ArrayList<>(); + + protected ScoreboardUI(PlayerData data) { + this.playerData = data; + this.player = data.player; + this.location = player.getLocation(); + } + + /// 创建记分牌信息 + protected void createScoreboard() { + var manager = Bukkit.getScoreboardManager(); + assert manager != null; + this.scoreboard = manager.getNewScoreboard(); + //玩家设置不显示计分板 + if (!playerData.settings.getDisplayswitch()) { + //player.setScoreboard(this.scoreboard); + return; + } + this.objective = scoreboard.registerNewObjective("坐标", Criteria.DUMMY, + ChatColor.GOLD.toString() + ChatColor.BOLD + "坐标管理器"); + this.objective.setDisplaySlot(DisplaySlot.SIDEBAR); + meLocation = this.objective.getScore(getLocationString()); + meLocation.setScore(999); + + if (playerData.settings.getShowtime()) { + time = this.objective.getScore("时间"); + time.setScore(998); + } + + player.setScoreboard(this.scoreboard); + flashLocations(); + } + + protected void closeUI() { + var manager = Bukkit.getScoreboardManager(); + assert manager != null; + player.setScoreboard(manager.getNewScoreboard()); + } + + /// 渲染所有保存的坐标 + protected void flashLocations() { + if (!playerData.settings.getDisplayswitch()) { + return; + } + //先移除计分板中所有的坐标 + for (String local : locals) { + scoreboard.resetScores(local); + } + locals.clear(); + //然后在将坐标信息添加进去 + var list = playerData.locationList; + if (list == null) + return; + for (LocationnotepadPO po : list) { + String item = po.getName() + " X " + po.getX() + " Y " + po.getY() + " Z " + po.getZ(); + locals.add(item); + Score score = objective.getScore(item); + score.setScore(locals.size()); + //最多只允许展示20个条目 + if (locals.size() > 20) { + break; + } + } + + } + + protected String getLocationString() { + return "X " + (int) location.getX() + " Y " + (int) location.getY() + " Z " + (int) location.getZ(); + } +} diff --git a/src/main/java/ling/database/DefaultSchema.java b/src/main/java/ling/database/DefaultSchema.java index aab9d39..1a39933 100644 --- a/src/main/java/ling/database/DefaultSchema.java +++ b/src/main/java/ling/database/DefaultSchema.java @@ -8,6 +8,7 @@ import java.util.Arrays; import java.util.List; import ling.database.tables.LocationnotepadTB; +import ling.database.tables.PlayersettingsTB; import ling.database.tables.VersionTB; import org.jooq.Catalog; @@ -33,6 +34,11 @@ public class DefaultSchema extends SchemaImpl { */ public final LocationnotepadTB LOCATIONNOTEPAD = LocationnotepadTB.LOCATIONNOTEPAD; + /** + * The table PlayerSettings. + */ + public final PlayersettingsTB PLAYERSETTINGS = PlayersettingsTB.PLAYERSETTINGS; + /** * The table Version. */ @@ -55,6 +61,7 @@ public class DefaultSchema extends SchemaImpl { public final List> getTables() { return Arrays.asList( LocationnotepadTB.LOCATIONNOTEPAD, + PlayersettingsTB.PLAYERSETTINGS, VersionTB.VERSION ); } diff --git a/src/main/java/ling/database/Indexes.java b/src/main/java/ling/database/Indexes.java new file mode 100644 index 0000000..f9c743f --- /dev/null +++ b/src/main/java/ling/database/Indexes.java @@ -0,0 +1,26 @@ +/* + * This file is generated by jOOQ. + */ +package ling.database; + + +import ling.database.tables.LocationnotepadTB; + +import org.jooq.Index; +import org.jooq.OrderField; +import org.jooq.impl.DSL; +import org.jooq.impl.Internal; + + +/** + * A class modelling indexes of tables in the default schema. + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) +public class Indexes { + + // ------------------------------------------------------------------------- + // INDEX definitions + // ------------------------------------------------------------------------- + + public static final Index PLAYERINDEX = Internal.createIndex(DSL.name("PlayerIndex"), LocationnotepadTB.LOCATIONNOTEPAD, new OrderField[] { LocationnotepadTB.LOCATIONNOTEPAD.UID, LocationnotepadTB.LOCATIONNOTEPAD.ISFIXED, LocationnotepadTB.LOCATIONNOTEPAD.ISDELETE, LocationnotepadTB.LOCATIONNOTEPAD.NAME }, false); +} diff --git a/src/main/java/ling/database/Keys.java b/src/main/java/ling/database/Keys.java index d6a77c8..5f61f0f 100644 --- a/src/main/java/ling/database/Keys.java +++ b/src/main/java/ling/database/Keys.java @@ -5,8 +5,10 @@ package ling.database; import ling.database.tables.LocationnotepadTB; +import ling.database.tables.PlayersettingsTB; import ling.database.tables.VersionTB; import ling.database.tables.records.LocationnotepadPO; +import ling.database.tables.records.PlayersettingsPO; import ling.database.tables.records.VersionPO; import org.jooq.TableField; @@ -27,5 +29,6 @@ public class Keys { // ------------------------------------------------------------------------- public static final UniqueKey LOCATIONNOTEPAD__PK_LOCATIONNOTEPAD = Internal.createUniqueKey(LocationnotepadTB.LOCATIONNOTEPAD, DSL.name("pk_LocationNotepad"), new TableField[] { LocationnotepadTB.LOCATIONNOTEPAD.ID }, true); + public static final UniqueKey PLAYERSETTINGS__PK_PLAYERSETTINGS = Internal.createUniqueKey(PlayersettingsTB.PLAYERSETTINGS, DSL.name("pk_PlayerSettings"), new TableField[] { PlayersettingsTB.PLAYERSETTINGS.UID }, true); public static final UniqueKey VERSION__PK_VERSION = Internal.createUniqueKey(VersionTB.VERSION, DSL.name("pk_Version"), new TableField[] { VersionTB.VERSION.ID }, true); } diff --git a/src/main/java/ling/database/Tables.java b/src/main/java/ling/database/Tables.java index 5b95f83..67de98c 100644 --- a/src/main/java/ling/database/Tables.java +++ b/src/main/java/ling/database/Tables.java @@ -5,6 +5,7 @@ package ling.database; import ling.database.tables.LocationnotepadTB; +import ling.database.tables.PlayersettingsTB; import ling.database.tables.VersionTB; @@ -19,6 +20,11 @@ public class Tables { */ public static final LocationnotepadTB LOCATIONNOTEPAD = LocationnotepadTB.LOCATIONNOTEPAD; + /** + * The table PlayerSettings. + */ + public static final PlayersettingsTB PLAYERSETTINGS = PlayersettingsTB.PLAYERSETTINGS; + /** * The table Version. */ diff --git a/src/main/java/ling/database/tables/LocationnotepadTB.java b/src/main/java/ling/database/tables/LocationnotepadTB.java index f77aafe..d09af14 100644 --- a/src/main/java/ling/database/tables/LocationnotepadTB.java +++ b/src/main/java/ling/database/tables/LocationnotepadTB.java @@ -5,15 +5,19 @@ package ling.database.tables; import java.math.BigDecimal; +import java.util.Arrays; import java.util.Collection; +import java.util.List; import ling.database.DefaultSchema; +import ling.database.Indexes; import ling.database.Keys; import ling.database.tables.records.LocationnotepadPO; import org.jooq.Condition; import org.jooq.Field; import org.jooq.Identity; +import org.jooq.Index; import org.jooq.Name; import org.jooq.PlainSQL; import org.jooq.QueryPart; @@ -91,6 +95,11 @@ public class LocationnotepadTB extends TableImpl { */ public final TableField TIME = createField(DSL.name("time"), SQLDataType.NUMERIC.nullable(false), this, ""); + /** + * The column LocationNotepad.isFixed. + */ + public final TableField ISFIXED = createField(DSL.name("isFixed"), SQLDataType.BOOLEAN.nullable(false).defaultValue(DSL.field(DSL.raw("0"), SQLDataType.BOOLEAN)), this, ""); + /** * The column LocationNotepad.isDelete. */ @@ -130,6 +139,11 @@ public class LocationnotepadTB extends TableImpl { return aliased() ? null : DefaultSchema.DEFAULT_SCHEMA; } + @Override + public List getIndexes() { + return Arrays.asList(Indexes.PLAYERINDEX); + } + @Override public Identity getIdentity() { return (Identity) super.getIdentity(); diff --git a/src/main/java/ling/database/tables/PlayersettingsTB.java b/src/main/java/ling/database/tables/PlayersettingsTB.java new file mode 100644 index 0000000..82170dd --- /dev/null +++ b/src/main/java/ling/database/tables/PlayersettingsTB.java @@ -0,0 +1,238 @@ +/* + * This file is generated by jOOQ. + */ +package ling.database.tables; + + +import java.util.Collection; + +import ling.database.DefaultSchema; +import ling.database.Keys; +import ling.database.tables.records.PlayersettingsPO; + +import org.jooq.Condition; +import org.jooq.Field; +import org.jooq.Name; +import org.jooq.PlainSQL; +import org.jooq.QueryPart; +import org.jooq.SQL; +import org.jooq.Schema; +import org.jooq.Select; +import org.jooq.Stringly; +import org.jooq.Table; +import org.jooq.TableField; +import org.jooq.TableOptions; +import org.jooq.UniqueKey; +import org.jooq.impl.DSL; +import org.jooq.impl.SQLDataType; +import org.jooq.impl.TableImpl; + + +/** + * This class is generated by jOOQ. + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) +public class PlayersettingsTB extends TableImpl { + + private static final long serialVersionUID = 1L; + + /** + * The reference instance of PlayerSettings + */ + public static final PlayersettingsTB PLAYERSETTINGS = new PlayersettingsTB(); + + /** + * The class holding records for this type + */ + @Override + public Class getRecordType() { + return PlayersettingsPO.class; + } + + /** + * The column PlayerSettings.UID. + */ + public final TableField UID = createField(DSL.name("UID"), SQLDataType.VARCHAR(64).nullable(false), this, ""); + + /** + * The column PlayerSettings.displaySwitch. + */ + public final TableField DISPLAYSWITCH = createField(DSL.name("displaySwitch"), SQLDataType.BOOLEAN.nullable(false).defaultValue(DSL.field(DSL.raw("1"), SQLDataType.BOOLEAN)), this, ""); + + /** + * The column PlayerSettings.showTime. + */ + public final TableField SHOWTIME = createField(DSL.name("showTime"), SQLDataType.BOOLEAN.nullable(false).defaultValue(DSL.field(DSL.raw("1"), SQLDataType.BOOLEAN)), this, ""); + + /** + * The column PlayerSettings.tpMe. + */ + public final TableField TPME = createField(DSL.name("tpMe"), SQLDataType.BOOLEAN.nullable(false).defaultValue(DSL.field(DSL.raw("1"), SQLDataType.BOOLEAN)), this, ""); + + /** + * The column PlayerSettings.settingsRejectTpMessage. + */ + public final TableField SETTINGSREJECTTPMESSAGE = createField(DSL.name("settingsRejectTpMessage"), SQLDataType.CHAR.nullable(false).defaultValue(DSL.field(DSL.raw("'对方的设置不允许任何人向他传送!'"), SQLDataType.CHAR)), this, ""); + + private PlayersettingsTB(Name alias, Table aliased) { + this(alias, aliased, (Field[]) null, null); + } + + private PlayersettingsTB(Name alias, Table aliased, Field[] parameters, Condition where) { + super(alias, null, aliased, parameters, DSL.comment(""), TableOptions.table(), where); + } + + /** + * Create an aliased PlayerSettings table reference + */ + public PlayersettingsTB(String alias) { + this(DSL.name(alias), PLAYERSETTINGS); + } + + /** + * Create an aliased PlayerSettings table reference + */ + public PlayersettingsTB(Name alias) { + this(alias, PLAYERSETTINGS); + } + + /** + * Create a PlayerSettings table reference + */ + public PlayersettingsTB() { + this(DSL.name("PlayerSettings"), null); + } + + @Override + public Schema getSchema() { + return aliased() ? null : DefaultSchema.DEFAULT_SCHEMA; + } + + @Override + public UniqueKey getPrimaryKey() { + return Keys.PLAYERSETTINGS__PK_PLAYERSETTINGS; + } + + @Override + public PlayersettingsTB as(String alias) { + return new PlayersettingsTB(DSL.name(alias), this); + } + + @Override + public PlayersettingsTB as(Name alias) { + return new PlayersettingsTB(alias, this); + } + + @Override + public PlayersettingsTB as(Table alias) { + return new PlayersettingsTB(alias.getQualifiedName(), this); + } + + /** + * Rename this table + */ + @Override + public PlayersettingsTB rename(String name) { + return new PlayersettingsTB(DSL.name(name), null); + } + + /** + * Rename this table + */ + @Override + public PlayersettingsTB rename(Name name) { + return new PlayersettingsTB(name, null); + } + + /** + * Rename this table + */ + @Override + public PlayersettingsTB rename(Table name) { + return new PlayersettingsTB(name.getQualifiedName(), null); + } + + /** + * Create an inline derived table from this table + */ + @Override + public PlayersettingsTB where(Condition condition) { + return new PlayersettingsTB(getQualifiedName(), aliased() ? this : null, null, condition); + } + + /** + * Create an inline derived table from this table + */ + @Override + public PlayersettingsTB where(Collection conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public PlayersettingsTB where(Condition... conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public PlayersettingsTB where(Field condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public PlayersettingsTB where(SQL condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public PlayersettingsTB where(@Stringly.SQL String condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public PlayersettingsTB where(@Stringly.SQL String condition, Object... binds) { + return where(DSL.condition(condition, binds)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public PlayersettingsTB where(@Stringly.SQL String condition, QueryPart... parts) { + return where(DSL.condition(condition, parts)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public PlayersettingsTB whereExists(Select select) { + return where(DSL.exists(select)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public PlayersettingsTB whereNotExists(Select select) { + return where(DSL.notExists(select)); + } +} diff --git a/src/main/java/ling/database/tables/pojos/LocationnotepadBO.java b/src/main/java/ling/database/tables/pojos/LocationnotepadBO.java index b892fd9..46bb72d 100644 --- a/src/main/java/ling/database/tables/pojos/LocationnotepadBO.java +++ b/src/main/java/ling/database/tables/pojos/LocationnotepadBO.java @@ -24,6 +24,7 @@ public class LocationnotepadBO implements Serializable { private Integer y; private Integer z; private BigDecimal time; + private Boolean isfixed; private Boolean isdelete; public LocationnotepadBO() {} @@ -37,6 +38,7 @@ public class LocationnotepadBO implements Serializable { this.y = value.y; this.z = value.z; this.time = value.time; + this.isfixed = value.isfixed; this.isdelete = value.isdelete; } @@ -49,6 +51,7 @@ public class LocationnotepadBO implements Serializable { Integer y, Integer z, BigDecimal time, + Boolean isfixed, Boolean isdelete ) { this.id = id; @@ -59,6 +62,7 @@ public class LocationnotepadBO implements Serializable { this.y = y; this.z = z; this.time = time; + this.isfixed = isfixed; this.isdelete = isdelete; } @@ -174,6 +178,20 @@ public class LocationnotepadBO implements Serializable { this.time = time; } + /** + * Getter for LocationNotepad.isFixed. + */ + public Boolean getIsfixed() { + return this.isfixed; + } + + /** + * Setter for LocationNotepad.isFixed. + */ + public void setIsfixed(Boolean isfixed) { + this.isfixed = isfixed; + } + /** * Getter for LocationNotepad.isDelete. */ @@ -245,6 +263,12 @@ public class LocationnotepadBO implements Serializable { } else if (!this.time.equals(other.time)) return false; + if (this.isfixed == null) { + if (other.isfixed != null) + return false; + } + else if (!this.isfixed.equals(other.isfixed)) + return false; if (this.isdelete == null) { if (other.isdelete != null) return false; @@ -266,6 +290,7 @@ public class LocationnotepadBO implements Serializable { result = prime * result + ((this.y == null) ? 0 : this.y.hashCode()); result = prime * result + ((this.z == null) ? 0 : this.z.hashCode()); result = prime * result + ((this.time == null) ? 0 : this.time.hashCode()); + result = prime * result + ((this.isfixed == null) ? 0 : this.isfixed.hashCode()); result = prime * result + ((this.isdelete == null) ? 0 : this.isdelete.hashCode()); return result; } @@ -282,6 +307,7 @@ public class LocationnotepadBO implements Serializable { sb.append(", ").append(y); sb.append(", ").append(z); sb.append(", ").append(time); + sb.append(", ").append(isfixed); sb.append(", ").append(isdelete); sb.append(")"); diff --git a/src/main/java/ling/database/tables/pojos/PlayersettingsBO.java b/src/main/java/ling/database/tables/pojos/PlayersettingsBO.java new file mode 100644 index 0000000..fc679d3 --- /dev/null +++ b/src/main/java/ling/database/tables/pojos/PlayersettingsBO.java @@ -0,0 +1,185 @@ +/* + * This file is generated by jOOQ. + */ +package ling.database.tables.pojos; + + +import java.io.Serializable; + + +/** + * This class is generated by jOOQ. + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) +public class PlayersettingsBO implements Serializable { + + private static final long serialVersionUID = 1L; + + private String uid; + private Boolean displayswitch; + private Boolean showtime; + private Boolean tpme; + private String settingsrejecttpmessage; + + public PlayersettingsBO() {} + + public PlayersettingsBO(PlayersettingsBO value) { + this.uid = value.uid; + this.displayswitch = value.displayswitch; + this.showtime = value.showtime; + this.tpme = value.tpme; + this.settingsrejecttpmessage = value.settingsrejecttpmessage; + } + + public PlayersettingsBO( + String uid, + Boolean displayswitch, + Boolean showtime, + Boolean tpme, + String settingsrejecttpmessage + ) { + this.uid = uid; + this.displayswitch = displayswitch; + this.showtime = showtime; + this.tpme = tpme; + this.settingsrejecttpmessage = settingsrejecttpmessage; + } + + /** + * Getter for PlayerSettings.UID. + */ + public String getUid() { + return this.uid; + } + + /** + * Setter for PlayerSettings.UID. + */ + public void setUid(String uid) { + this.uid = uid; + } + + /** + * Getter for PlayerSettings.displaySwitch. + */ + public Boolean getDisplayswitch() { + return this.displayswitch; + } + + /** + * Setter for PlayerSettings.displaySwitch. + */ + public void setDisplayswitch(Boolean displayswitch) { + this.displayswitch = displayswitch; + } + + /** + * Getter for PlayerSettings.showTime. + */ + public Boolean getShowtime() { + return this.showtime; + } + + /** + * Setter for PlayerSettings.showTime. + */ + public void setShowtime(Boolean showtime) { + this.showtime = showtime; + } + + /** + * Getter for PlayerSettings.tpMe. + */ + public Boolean getTpme() { + return this.tpme; + } + + /** + * Setter for PlayerSettings.tpMe. + */ + public void setTpme(Boolean tpme) { + this.tpme = tpme; + } + + /** + * Getter for PlayerSettings.settingsRejectTpMessage. + */ + public String getSettingsrejecttpmessage() { + return this.settingsrejecttpmessage; + } + + /** + * Setter for PlayerSettings.settingsRejectTpMessage. + */ + public void setSettingsrejecttpmessage(String settingsrejecttpmessage) { + this.settingsrejecttpmessage = settingsrejecttpmessage; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + final PlayersettingsBO other = (PlayersettingsBO) obj; + if (this.uid == null) { + if (other.uid != null) + return false; + } + else if (!this.uid.equals(other.uid)) + return false; + if (this.displayswitch == null) { + if (other.displayswitch != null) + return false; + } + else if (!this.displayswitch.equals(other.displayswitch)) + return false; + if (this.showtime == null) { + if (other.showtime != null) + return false; + } + else if (!this.showtime.equals(other.showtime)) + return false; + if (this.tpme == null) { + if (other.tpme != null) + return false; + } + else if (!this.tpme.equals(other.tpme)) + return false; + if (this.settingsrejecttpmessage == null) { + if (other.settingsrejecttpmessage != null) + return false; + } + else if (!this.settingsrejecttpmessage.equals(other.settingsrejecttpmessage)) + return false; + return true; + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((this.uid == null) ? 0 : this.uid.hashCode()); + result = prime * result + ((this.displayswitch == null) ? 0 : this.displayswitch.hashCode()); + result = prime * result + ((this.showtime == null) ? 0 : this.showtime.hashCode()); + result = prime * result + ((this.tpme == null) ? 0 : this.tpme.hashCode()); + result = prime * result + ((this.settingsrejecttpmessage == null) ? 0 : this.settingsrejecttpmessage.hashCode()); + return result; + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder("PlayersettingsBO ("); + + sb.append(uid); + sb.append(", ").append(displayswitch); + sb.append(", ").append(showtime); + sb.append(", ").append(tpme); + sb.append(", ").append(settingsrejecttpmessage); + + sb.append(")"); + return sb.toString(); + } +} diff --git a/src/main/java/ling/database/tables/records/LocationnotepadPO.java b/src/main/java/ling/database/tables/records/LocationnotepadPO.java index 0214ea8..6027085 100644 --- a/src/main/java/ling/database/tables/records/LocationnotepadPO.java +++ b/src/main/java/ling/database/tables/records/LocationnotepadPO.java @@ -133,18 +133,32 @@ public class LocationnotepadPO extends UpdatableRecordImpl { return (BigDecimal) get(7); } + /** + * Setter for LocationNotepad.isFixed. + */ + public void setIsfixed(Boolean value) { + set(8, value); + } + + /** + * Getter for LocationNotepad.isFixed. + */ + public Boolean getIsfixed() { + return (Boolean) get(8); + } + /** * Setter for LocationNotepad.isDelete. */ public void setIsdelete(Boolean value) { - set(8, value); + set(9, value); } /** * Getter for LocationNotepad.isDelete. */ public Boolean getIsdelete() { - return (Boolean) get(8); + return (Boolean) get(9); } // ------------------------------------------------------------------------- @@ -170,7 +184,7 @@ public class LocationnotepadPO extends UpdatableRecordImpl { /** * Create a detached, initialised LocationnotepadPO */ - public LocationnotepadPO(Integer id, String uid, String world, String name, Integer x, Integer y, Integer z, BigDecimal time, Boolean isdelete) { + public LocationnotepadPO(Integer id, String uid, String world, String name, Integer x, Integer y, Integer z, BigDecimal time, Boolean isfixed, Boolean isdelete) { super(LocationnotepadTB.LOCATIONNOTEPAD); setId(id); @@ -181,6 +195,7 @@ public class LocationnotepadPO extends UpdatableRecordImpl { setY(y); setZ(z); setTime(time); + setIsfixed(isfixed); setIsdelete(isdelete); resetChangedOnNotNull(); } @@ -200,6 +215,7 @@ public class LocationnotepadPO extends UpdatableRecordImpl { setY(value.getY()); setZ(value.getZ()); setTime(value.getTime()); + setIsfixed(value.getIsfixed()); setIsdelete(value.getIsdelete()); resetChangedOnNotNull(); } diff --git a/src/main/java/ling/database/tables/records/PlayersettingsPO.java b/src/main/java/ling/database/tables/records/PlayersettingsPO.java new file mode 100644 index 0000000..33dbf8c --- /dev/null +++ b/src/main/java/ling/database/tables/records/PlayersettingsPO.java @@ -0,0 +1,141 @@ +/* + * This file is generated by jOOQ. + */ +package ling.database.tables.records; + + +import ling.database.tables.PlayersettingsTB; +import ling.database.tables.pojos.PlayersettingsBO; + +import org.jooq.Record1; +import org.jooq.impl.UpdatableRecordImpl; + + +/** + * This class is generated by jOOQ. + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) +public class PlayersettingsPO extends UpdatableRecordImpl { + + private static final long serialVersionUID = 1L; + + /** + * Setter for PlayerSettings.UID. + */ + public void setUid(String value) { + set(0, value); + } + + /** + * Getter for PlayerSettings.UID. + */ + public String getUid() { + return (String) get(0); + } + + /** + * Setter for PlayerSettings.displaySwitch. + */ + public void setDisplayswitch(Boolean value) { + set(1, value); + } + + /** + * Getter for PlayerSettings.displaySwitch. + */ + public Boolean getDisplayswitch() { + return (Boolean) get(1); + } + + /** + * Setter for PlayerSettings.showTime. + */ + public void setShowtime(Boolean value) { + set(2, value); + } + + /** + * Getter for PlayerSettings.showTime. + */ + public Boolean getShowtime() { + return (Boolean) get(2); + } + + /** + * Setter for PlayerSettings.tpMe. + */ + public void setTpme(Boolean value) { + set(3, value); + } + + /** + * Getter for PlayerSettings.tpMe. + */ + public Boolean getTpme() { + return (Boolean) get(3); + } + + /** + * Setter for PlayerSettings.settingsRejectTpMessage. + */ + public void setSettingsrejecttpmessage(String value) { + set(4, value); + } + + /** + * Getter for PlayerSettings.settingsRejectTpMessage. + */ + public String getSettingsrejecttpmessage() { + return (String) get(4); + } + + // ------------------------------------------------------------------------- + // Primary key information + // ------------------------------------------------------------------------- + + @Override + public Record1 key() { + return (Record1) super.key(); + } + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + /** + * Create a detached PlayersettingsPO + */ + public PlayersettingsPO() { + super(PlayersettingsTB.PLAYERSETTINGS); + } + + /** + * Create a detached, initialised PlayersettingsPO + */ + public PlayersettingsPO(String uid, Boolean displayswitch, Boolean showtime, Boolean tpme, String settingsrejecttpmessage) { + super(PlayersettingsTB.PLAYERSETTINGS); + + setUid(uid); + setDisplayswitch(displayswitch); + setShowtime(showtime); + setTpme(tpme); + setSettingsrejecttpmessage(settingsrejecttpmessage); + resetChangedOnNotNull(); + } + + /** + * Create a detached, initialised PlayersettingsPO + */ + public PlayersettingsPO(PlayersettingsBO value) { + super(PlayersettingsTB.PLAYERSETTINGS); + + if (value != null) { + setUid(value.getUid()); + setDisplayswitch(value.getDisplayswitch()); + setShowtime(value.getShowtime()); + setTpme(value.getTpme()); + setSettingsrejecttpmessage(value.getSettingsrejecttpmessage()); + resetChangedOnNotNull(); + } + } +}