diff --git a/pom.xml b/pom.xml
index 30bfb4c..a0b9a0d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
cn.lunadeer
Dominion
- 1.30.6-beta
+ 1.30.7-beta
jar
Dominion
diff --git a/src/main/java/cn/lunadeer/dominion/commands/DominionOperate.java b/src/main/java/cn/lunadeer/dominion/commands/DominionOperate.java
index 3fd092f..c2892fc 100644
--- a/src/main/java/cn/lunadeer/dominion/commands/DominionOperate.java
+++ b/src/main/java/cn/lunadeer/dominion/commands/DominionOperate.java
@@ -21,6 +21,7 @@ import java.time.LocalDateTime;
import java.util.Map;
import java.util.Objects;
+import static cn.lunadeer.dominion.DominionNode.isInDominion;
import static cn.lunadeer.dominion.commands.Apis.*;
public class DominionOperate {
@@ -408,6 +409,12 @@ public class DominionOperate {
World world = Dominion.instance.getServer().getWorld(dominionDTO.getWorld());
location = new Location(world, x, player.getLocation().getY(), z);
XLogger.warn("领地 %s 没有设置传送点,将尝试传送到中心点", dominionDTO.getName());
+ } else if (!isInDominion(dominionDTO, location)) {
+ int x = (dominionDTO.getX1() + dominionDTO.getX2()) / 2;
+ int z = (dominionDTO.getZ1() + dominionDTO.getZ2()) / 2;
+ World world = Dominion.instance.getServer().getWorld(dominionDTO.getWorld());
+ location = new Location(world, x, player.getLocation().getY(), z);
+ XLogger.warn("领地 %s 传送点不在领地内,将尝试传送到中心点", dominionDTO.getName());
}
if (player.isOnline()) {
Teleport.doTeleportSafely(player, location);
diff --git a/src/main/java/cn/lunadeer/dominion/dtos/Flag.java b/src/main/java/cn/lunadeer/dominion/dtos/Flag.java
index abf85f6..82b66cf 100644
--- a/src/main/java/cn/lunadeer/dominion/dtos/Flag.java
+++ b/src/main/java/cn/lunadeer/dominion/dtos/Flag.java
@@ -52,7 +52,7 @@ public enum Flag {
REPEATER("repeater", "中继器交互", "是否可以与中继器交互", false, false, true),
SHEAR("shear", "剪羊毛", "是否可以剪羊毛", false, false, true),
SHOOT("shoot", "发射类型武器", "包括:射箭/雪球/三叉戟", false, false, true),
- SHOW_BORDER("show_border", "显示领地边界", "是否显示领地边界", false, true, true),
+ SHOW_BORDER("show_border", "显示领地边界", "是否显示领地边界", true, true, true),
TELEPORT("teleport", "领地传送", "是否开启领地传送", false, false, true),
TNT_EXPLODE("tnt_explode", "TNT爆炸", "TNT是否可以爆炸", false, true, true),
TRADE("trade", "村民交易", "是否可以与村民交易", false, false, true),
diff --git a/src/main/java/cn/lunadeer/dominion/managers/DatabaseTables.java b/src/main/java/cn/lunadeer/dominion/managers/DatabaseTables.java
index 8d7c3a1..50f83ef 100644
--- a/src/main/java/cn/lunadeer/dominion/managers/DatabaseTables.java
+++ b/src/main/java/cn/lunadeer/dominion/managers/DatabaseTables.java
@@ -1,6 +1,7 @@
package cn.lunadeer.dominion.managers;
import cn.lunadeer.dominion.Dominion;
+import cn.lunadeer.dominion.dtos.Flag;
public class DatabaseTables {
public static void migrate() {
@@ -31,46 +32,6 @@ public class DatabaseTables {
" join_message TEXT NOT NULL DEFAULT '欢迎', " +
" leave_message TEXT NOT NULL DEFAULT '再见', " +
- " anchor BOOLEAN NOT NULL DEFAULT FALSE," +
- " animal_killing BOOLEAN NOT NULL DEFAULT FALSE," +
- " anvil BOOLEAN NOT NULL DEFAULT FALSE," +
- " beacon BOOLEAN NOT NULL DEFAULT FALSE," +
- " bed BOOLEAN NOT NULL DEFAULT FALSE," +
- " brew BOOLEAN NOT NULL DEFAULT FALSE," +
- " break BOOLEAN NOT NULL DEFAULT FALSE," +
- " button BOOLEAN NOT NULL DEFAULT FALSE," +
- " cake BOOLEAN NOT NULL DEFAULT FALSE," +
- " container BOOLEAN NOT NULL DEFAULT FALSE," +
- " craft BOOLEAN NOT NULL DEFAULT FALSE," +
- " creeper_explode BOOLEAN NOT NULL DEFAULT FALSE," +
- " comparer BOOLEAN NOT NULL DEFAULT FALSE," +
- " door BOOLEAN NOT NULL DEFAULT FALSE," +
- " dye BOOLEAN NOT NULL DEFAULT FALSE," +
- " egg BOOLEAN NOT NULL DEFAULT FALSE," +
- " enchant BOOLEAN NOT NULL DEFAULT FALSE," +
- " ender_pearl BOOLEAN NOT NULL DEFAULT FALSE," +
- " feed BOOLEAN NOT NULL DEFAULT FALSE," +
- " fire_spread BOOLEAN NOT NULL DEFAULT FALSE," +
- " flow_in_protection BOOLEAN NOT NULL DEFAULT FALSE," +
- " glow BOOLEAN NOT NULL DEFAULT TRUE," +
- " harvest BOOLEAN NOT NULL DEFAULT FALSE," +
- " honey BOOLEAN NOT NULL DEFAULT FALSE," +
- " hook BOOLEAN NOT NULL DEFAULT FALSE," +
- " ignite BOOLEAN NOT NULL DEFAULT FALSE," +
- " lever BOOLEAN NOT NULL DEFAULT FALSE," +
- " monster_killing BOOLEAN NOT NULL DEFAULT FALSE," +
- " move BOOLEAN NOT NULL DEFAULT TRUE," +
- " place BOOLEAN NOT NULL DEFAULT FALSE," +
- " pressure BOOLEAN NOT NULL DEFAULT FALSE," +
- " riding BOOLEAN NOT NULL DEFAULT FALSE," +
- " repeater BOOLEAN NOT NULL DEFAULT FALSE," +
- " shear BOOLEAN NOT NULL DEFAULT FALSE," +
- " shoot BOOLEAN NOT NULL DEFAULT FALSE," +
- " tnt_explode BOOLEAN NOT NULL DEFAULT FALSE," +
- " trade BOOLEAN NOT NULL DEFAULT FALSE," +
- " vehicle_destroy BOOLEAN NOT NULL DEFAULT FALSE," +
- " wither_spawn BOOLEAN NOT NULL DEFAULT FALSE," +
-
" FOREIGN KEY (owner) REFERENCES player_name(uuid) ON DELETE CASCADE," +
" FOREIGN KEY (parent_dom_id) REFERENCES dominion(id) ON DELETE CASCADE" +
");";
@@ -83,40 +44,6 @@ public class DatabaseTables {
" dom_id INT NOT NULL," +
" admin BOOLEAN NOT NULL DEFAULT FALSE," +
- " anchor BOOLEAN NOT NULL DEFAULT FALSE," +
- " animal_killing BOOLEAN NOT NULL DEFAULT FALSE," +
- " anvil BOOLEAN NOT NULL DEFAULT FALSE," +
- " beacon BOOLEAN NOT NULL DEFAULT FALSE," +
- " bed BOOLEAN NOT NULL DEFAULT FALSE," +
- " brew BOOLEAN NOT NULL DEFAULT FALSE," +
- " break BOOLEAN NOT NULL DEFAULT FALSE," +
- " button BOOLEAN NOT NULL DEFAULT FALSE," +
- " cake BOOLEAN NOT NULL DEFAULT FALSE," +
- " container BOOLEAN NOT NULL DEFAULT FALSE," +
- " craft BOOLEAN NOT NULL DEFAULT FALSE," +
- " comparer BOOLEAN NOT NULL DEFAULT FALSE," +
- " door BOOLEAN NOT NULL DEFAULT FALSE," +
- " dye BOOLEAN NOT NULL DEFAULT FALSE," +
- " egg BOOLEAN NOT NULL DEFAULT FALSE," +
- " enchant BOOLEAN NOT NULL DEFAULT FALSE," +
- " ender_pearl BOOLEAN NOT NULL DEFAULT FALSE," +
- " feed BOOLEAN NOT NULL DEFAULT FALSE," +
- " glow BOOLEAN NOT NULL DEFAULT TRUE," +
- " harvest BOOLEAN NOT NULL DEFAULT FALSE," +
- " honey BOOLEAN NOT NULL DEFAULT FALSE," +
- " hook BOOLEAN NOT NULL DEFAULT FALSE," +
- " ignite BOOLEAN NOT NULL DEFAULT FALSE," +
- " lever BOOLEAN NOT NULL DEFAULT FALSE," +
- " monster_killing BOOLEAN NOT NULL DEFAULT FALSE," +
- " move BOOLEAN NOT NULL DEFAULT TRUE," +
- " place BOOLEAN NOT NULL DEFAULT FALSE," +
- " pressure BOOLEAN NOT NULL DEFAULT FALSE," +
- " riding BOOLEAN NOT NULL DEFAULT FALSE," +
- " repeater BOOLEAN NOT NULL DEFAULT FALSE," +
- " shear BOOLEAN NOT NULL DEFAULT FALSE," +
- " shoot BOOLEAN NOT NULL DEFAULT FALSE," +
- " trade BOOLEAN NOT NULL DEFAULT FALSE," +
- " vehicle_destroy BOOLEAN NOT NULL DEFAULT FALSE," +
" UNIQUE (player_uuid, dom_id)," +
" FOREIGN KEY (player_uuid) REFERENCES player_name(uuid) ON DELETE CASCADE," +
@@ -141,37 +68,19 @@ public class DatabaseTables {
") ON CONFLICT DO NOTHING;";
Dominion.database.query(sql);
- // 1.5.0
- Dominion.database.addColumnIfNotExists("dominion", "hopper", "BOOLEAN NOT NULL DEFAULT FALSE");
- Dominion.database.addColumnIfNotExists("player_privilege", "hopper", "BOOLEAN NOT NULL DEFAULT FALSE");
+ for (Flag flag : Flag.getAllDominionFlags()) {
+ Dominion.database.addColumnIfNotExists("dominion",
+ flag.getFlagName(),
+ "BOOLEAN NOT NULL DEFAULT " + flag.getDefaultValue());
+ }
- // 1.9.0
- Dominion.database.addColumnIfNotExists("dominion", "vehicle_spawn", "BOOLEAN NOT NULL DEFAULT FALSE");
- Dominion.database.addColumnIfNotExists("player_privilege", "vehicle_spawn", "BOOLEAN NOT NULL DEFAULT FALSE");
-
- // 1.10.0
- Dominion.database.addColumnIfNotExists("dominion", "trample", "BOOLEAN NOT NULL DEFAULT FALSE");
-
- // 1.11.0
- Dominion.database.addColumnIfNotExists("dominion", "mob_drop_item", "BOOLEAN NOT NULL DEFAULT TRUE");
-
- // 1.12.0
- Dominion.database.addColumnIfNotExists("dominion", "ender_man", "BOOLEAN NOT NULL DEFAULT FAlSE");
+ for (Flag flag : Flag.getAllPrivilegeFlags()) {
+ Dominion.database.addColumnIfNotExists("player_privilege",
+ flag.getFlagName(),
+ "BOOLEAN NOT NULL DEFAULT " + flag.getDefaultValue());
+ }
// 1.18.0
Dominion.database.addColumnIfNotExists("dominion", "tp_location", "TEXT NOT NULL DEFAULT 'default'");
- Dominion.database.addColumnIfNotExists("dominion", "teleport", "BOOLEAN NOT NULL DEFAULT FALSE");
- Dominion.database.addColumnIfNotExists("player_privilege", "teleport", "BOOLEAN NOT NULL DEFAULT FALSE");
-
- // 1.21
- Dominion.database.addColumnIfNotExists("dominion", "show_border", "BOOLEAN NOT NULL DEFAULT TRUE");
-
- // 1.26
- Dominion.database.addColumnIfNotExists("dominion", "fly", "BOOLEAN NOT NULL DEFAULT FALSE");
- Dominion.database.addColumnIfNotExists("player_privilege", "fly", "BOOLEAN NOT NULL DEFAULT FALSE");
-
- // 1.28
- Dominion.database.addColumnIfNotExists("dominion", "monster_spawn", "BOOLEAN NOT NULL DEFAULT FALSE");
- Dominion.database.addColumnIfNotExists("dominion", "animal_spawn", "BOOLEAN NOT NULL DEFAULT TRUE");
}
}