diff --git a/pom.xml b/pom.xml
index 651cdf6..6d66674 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
cn.lunadeer
Dominion
- 1.32.0-beta
+ 1.33.0-beta
jar
Dominion
@@ -82,7 +82,7 @@
cn.lunadeer
MinecraftPluginUtils
- 1.3.2-SNAPSHOT
+ 1.3.3-SNAPSHOT
com.github.BlueMap-Minecraft
diff --git a/src/main/java/cn/lunadeer/dominion/managers/DatabaseTables.java b/src/main/java/cn/lunadeer/dominion/managers/DatabaseTables.java
index 018ce1d..0dc1548 100644
--- a/src/main/java/cn/lunadeer/dominion/managers/DatabaseTables.java
+++ b/src/main/java/cn/lunadeer/dominion/managers/DatabaseTables.java
@@ -8,65 +8,78 @@ public class DatabaseTables {
String sql = "";
// player name
- sql = "CREATE TABLE IF NOT EXISTS player_name (" +
- " id SERIAL PRIMARY KEY," +
- " uuid VARCHAR(36) NOT NULL UNIQUE," +
- " last_known_name TEXT NOT NULL," +
- " last_join_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP" +
- ");";
- Dominion.database.query(sql);
+ Dominion.database.createTableIfNotExists(
+ "player_name",
+ new String[]{"id", "uuid", "last_known_name", "last_join_at"},
+ new String[]{"SERIAL PRIMARY KEY", "VARCHAR(36) NOT NULL UNIQUE", "TEXT NOT NULL", "TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP"},
+ null
+ );
// dominion table
- sql = "CREATE TABLE IF NOT EXISTS dominion (" +
- " id SERIAL PRIMARY KEY," +
- " owner VARCHAR(36) NOT NULL," +
- " name TEXT NOT NULL UNIQUE," +
- " world TEXT NOT NULL," +
- " x1 INT NOT NULL," +
- " y1 INT NOT NULL," +
- " z1 INT NOT NULL," +
- " x2 INT NOT NULL," +
- " y2 INT NOT NULL," +
- " z2 INT NOT NULL," +
- " parent_dom_id INT NOT NULL DEFAULT -1," +
- " join_message TEXT NOT NULL DEFAULT '欢迎', " +
- " leave_message TEXT NOT NULL DEFAULT '再见', " +
-
- " FOREIGN KEY (owner) REFERENCES player_name(uuid) ON DELETE CASCADE," +
- " FOREIGN KEY (parent_dom_id) REFERENCES dominion(id) ON DELETE CASCADE" +
- ");";
- Dominion.database.query(sql);
+ Dominion.database.createTableIfNotExists(
+ "dominion",
+ new String[]{"id",
+ "owner",
+ "name",
+ "world",
+ "x1", "y1", "z1", "x2", "y2", "z2",
+ "parent_dom_id",
+ "join_message",
+ "leave_message"},
+ new String[]{
+ "SERIAL PRIMARY KEY",
+ "VARCHAR(36) NOT NULL",
+ "TEXT NOT NULL UNIQUE",
+ "TEXT NOT NULL", "INT NOT NULL", "INT NOT NULL", "INT NOT NULL", "INT NOT NULL", "INT NOT NULL", "INT NOT NULL",
+ "INT NOT NULL DEFAULT -1",
+ "TEXT NOT NULL DEFAULT '欢迎'",
+ "TEXT NOT NULL DEFAULT '再见'"},
+ new String[]{
+ "FOREIGN KEY (owner) REFERENCES player_name(uuid) ON DELETE CASCADE",
+ "FOREIGN KEY (parent_dom_id) REFERENCES dominion(id) ON DELETE CASCADE"
+ }
+ );
// player privilege
- sql = "CREATE TABLE IF NOT EXISTS player_privilege (" +
- " id SERIAL PRIMARY KEY," +
- " player_uuid VARCHAR(36) NOT NULL," +
- " dom_id INT NOT NULL," +
+ Dominion.database.createTableIfNotExists(
+ "player_privilege",
+ new String[]{"id", "player_uuid", "dom_id", "admin"},
+ new String[]{"SERIAL PRIMARY KEY", "VARCHAR(36) NOT NULL", "INT NOT NULL", "BOOLEAN NOT NULL DEFAULT FALSE"},
+ new String[]{
+ "UNIQUE (player_uuid, dom_id)",
+ "FOREIGN KEY (player_uuid) REFERENCES player_name(uuid) ON DELETE CASCADE",
+ "FOREIGN KEY (dom_id) REFERENCES dominion(id) ON DELETE CASCADE"
+ }
+ );
- " admin BOOLEAN NOT NULL DEFAULT FALSE," +
+ Dominion.database.insertRowIfNotExists("player_name",
+ new String[]{"id", "uuid", "last_known_name"},
+ new String[]{"-1", "00000000-0000-0000-0000-000000000000", "server"},
+ 0
+ );
- " UNIQUE (player_uuid, dom_id)," +
- " FOREIGN KEY (player_uuid) REFERENCES player_name(uuid) ON DELETE CASCADE," +
- " FOREIGN KEY (dom_id) REFERENCES dominion(id) ON DELETE CASCADE" +
- ");";
- Dominion.database.query(sql);
-
- sql = "INSERT INTO player_name (" +
- "id, uuid, last_known_name" +
- ") VALUES (" +
- "-1, '00000000-0000-0000-0000-000000000000', 'server'" +
- ") ON CONFLICT DO NOTHING;";
- Dominion.database.query(sql);
-
- sql = "INSERT INTO dominion (" +
- "id, owner, name, world, x1, y1, z1, x2, y2, z2, parent_dom_id, join_message, leave_message" +
- ") VALUES (" +
- "-1, '00000000-0000-0000-0000-000000000000', '根领地', 'all', " +
- "-2147483648, -2147483648, -2147483648, " +
- "2147483647, 2147483647, 2147483647, -1, " +
- "'欢迎', '再见'" +
- ") ON CONFLICT DO NOTHING;";
- Dominion.database.query(sql);
+ Dominion.database.insertRowIfNotExists("dominion",
+ new String[]{
+ "id",
+ "owner",
+ "name",
+ "world",
+ "x1", "y1", "z1", "x2", "y2", "z2",
+ "parent_dom_id",
+ "join_message",
+ "leave_message"},
+ new String[]{
+ "-1",
+ "00000000-0000-0000-0000-000000000000",
+ "根领地",
+ "all",
+ "-2147483648", "-2147483648", "-2147483648",
+ "2147483647", "2147483647", "2147483647",
+ "-1",
+ "欢迎",
+ "再见"},
+ 0
+ );
for (Flag flag : Flag.getAllDominionFlags()) {
Dominion.database.addColumnIfNotExists("dominion",
@@ -84,16 +97,15 @@ public class DatabaseTables {
Dominion.database.addColumnIfNotExists("dominion", "tp_location", "TEXT NOT NULL DEFAULT 'default'");
// 1.31.0
- sql = "CREATE TABLE IF NOT EXISTS privilege_template (" +
- " id SERIAL PRIMARY KEY," +
- " creator VARCHAR(36) NOT NULL," +
- " name TEXT NOT NULL," +
- " admin BOOLEAN NOT NULL DEFAULT FALSE," +
-
- " UNIQUE (creator, name)," +
- " FOREIGN KEY (creator) REFERENCES player_name(uuid) ON DELETE CASCADE" +
- ");";
- Dominion.database.query(sql);
+ Dominion.database.createTableIfNotExists(
+ "privilege_template",
+ new String[]{"id", "creator", "name", "admin"},
+ new String[]{"SERIAL PRIMARY KEY", "VARCHAR(36) NOT NULL", "TEXT NOT NULL", "BOOLEAN NOT NULL DEFAULT FALSE"},
+ new String[]{
+ "UNIQUE (creator, name)",
+ "FOREIGN KEY (creator) REFERENCES player_name(uuid) ON DELETE CASCADE"
+ }
+ );
for (Flag flag : Flag.getAllPrivilegeFlags()) {
Dominion.database.addColumnIfNotExists("privilege_template",
diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml
index b99a985..fd791f3 100644
--- a/src/main/resources/config.yml
+++ b/src/main/resources/config.yml
@@ -1,5 +1,5 @@
Database:
- Type: sqlite # pgsql, sqlite
+ Type: sqlite # pgsql, sqlite, mysql
Host: localhost
Port: 5432
Name: dominion