mirror of
https://github.com/ColdeZhang/Dominion.git
synced 2024-10-18 23:16:42 +08:00
新增领地tp功能
This commit is contained in:
parent
002304884a
commit
28735eff4c
11
README.md
11
README.md
@ -3,7 +3,9 @@
|
|||||||
<img src="https://ssl.lunadeer.cn:14437/i/2024/03/28/6604f0cec0f0e.png" alt="" width="70%">
|
<img src="https://ssl.lunadeer.cn:14437/i/2024/03/28/6604f0cec0f0e.png" alt="" width="70%">
|
||||||
|
|
||||||
### [开源地址](https://ssl.lunadeer.cn:14446/zhangyuheng/Dominion) | [文档地址](https://ssl.lunadeer.cn:14448/doc/23/)
|
### [开源地址](https://ssl.lunadeer.cn:14446/zhangyuheng/Dominion) | [文档地址](https://ssl.lunadeer.cn:14448/doc/23/)
|
||||||
|
|
||||||
### [下载页面](https://ssl.lunadeer.cn:14446/zhangyuheng/Dominion/releases)
|
### [下载页面](https://ssl.lunadeer.cn:14446/zhangyuheng/Dominion/releases)
|
||||||
|
|
||||||
### [统计页面](https://bstats.org/plugin/bukkit/Dominion/21445) | [Hangar](https://hangar.papermc.io/zhangyuheng/Dominion)
|
### [统计页面](https://bstats.org/plugin/bukkit/Dominion/21445) | [Hangar](https://hangar.papermc.io/zhangyuheng/Dominion)
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
@ -147,6 +149,8 @@
|
|||||||
| 缩小领地 | `/dominion contract [大小] [领地名称]` |
|
| 缩小领地 | `/dominion contract [大小] [领地名称]` |
|
||||||
| 设置进入领地的提示语 | `/dominion set_enter_msg <提示语> [领地名称]` |
|
| 设置进入领地的提示语 | `/dominion set_enter_msg <提示语> [领地名称]` |
|
||||||
| 设置离开领地的提示语 | `/dominion set_leave_msg <提示语> [领地名称]` |
|
| 设置离开领地的提示语 | `/dominion set_leave_msg <提示语> [领地名称]` |
|
||||||
|
| 设置领地传送点 | `/dominion set_tp_location [领地名称]` |
|
||||||
|
| 传送到领地传送点 | `/dominion tp <领地名称>` |
|
||||||
| 重命名领地 | `/dominion rename <原领地名称> <新领地名称>` |
|
| 重命名领地 | `/dominion rename <原领地名称> <新领地名称>` |
|
||||||
| 转让领地 | `/dominion give <领地名称> <玩家名称>` |
|
| 转让领地 | `/dominion give <领地名称> <玩家名称>` |
|
||||||
| 删除领地 | `/dominion delete <领地名称>` |
|
| 删除领地 | `/dominion delete <领地名称>` |
|
||||||
@ -198,6 +202,13 @@ AutoCleanAfterDays: 180
|
|||||||
|
|
||||||
BlueMap: true
|
BlueMap: true
|
||||||
|
|
||||||
|
Teleport:
|
||||||
|
Enable: true
|
||||||
|
# 传送延迟 秒
|
||||||
|
Delay: 0
|
||||||
|
# 冷却时间 秒
|
||||||
|
CoolDown: 0
|
||||||
|
|
||||||
CheckUpdate: true
|
CheckUpdate: true
|
||||||
|
|
||||||
Debug: false
|
Debug: false
|
||||||
|
2
pom.xml
2
pom.xml
@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
<groupId>cn.lunadeer</groupId>
|
<groupId>cn.lunadeer</groupId>
|
||||||
<artifactId>Dominion</artifactId>
|
<artifactId>Dominion</artifactId>
|
||||||
<version>1.17.2-beta</version>
|
<version>1.18.3-beta</version>
|
||||||
<packaging>jar</packaging>
|
<packaging>jar</packaging>
|
||||||
|
|
||||||
<name>Dominion</name>
|
<name>Dominion</name>
|
||||||
|
@ -9,6 +9,7 @@ import org.bukkit.Location;
|
|||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
@ -270,4 +271,6 @@ public class Cache {
|
|||||||
private final AtomicLong _last_update_privilege = new AtomicLong(0);
|
private final AtomicLong _last_update_privilege = new AtomicLong(0);
|
||||||
private final AtomicBoolean _update_privilege_is_scheduled = new AtomicBoolean(false);
|
private final AtomicBoolean _update_privilege_is_scheduled = new AtomicBoolean(false);
|
||||||
private static final long UPDATE_INTERVAL = 1000 * 4;
|
private static final long UPDATE_INTERVAL = 1000 * 4;
|
||||||
|
|
||||||
|
public final Map<UUID, LocalDateTime> NextTimeAllowTeleport = new java.util.HashMap<>();
|
||||||
}
|
}
|
||||||
|
@ -125,6 +125,12 @@ public class Commands implements TabExecutor {
|
|||||||
case "set_leave_msg":
|
case "set_leave_msg":
|
||||||
DominionOperate.setLeaveMessage(sender, args);
|
DominionOperate.setLeaveMessage(sender, args);
|
||||||
break;
|
break;
|
||||||
|
case "set_tp_location":
|
||||||
|
DominionOperate.setTpLocation(sender, args);
|
||||||
|
break;
|
||||||
|
case "tp":
|
||||||
|
DominionOperate.teleportToDominion(sender, args);
|
||||||
|
break;
|
||||||
case "rename":
|
case "rename":
|
||||||
DominionOperate.renameDominion(sender, args);
|
DominionOperate.renameDominion(sender, args);
|
||||||
break;
|
break;
|
||||||
@ -167,6 +173,8 @@ public class Commands implements TabExecutor {
|
|||||||
"create_privilege", "set_privilege", "clear_privilege", "list", "privilege_info",
|
"create_privilege", "set_privilege", "clear_privilege", "list", "privilege_info",
|
||||||
"set_enter_msg",
|
"set_enter_msg",
|
||||||
"set_leave_msg",
|
"set_leave_msg",
|
||||||
|
"set_tp_location",
|
||||||
|
"tp",
|
||||||
"rename",
|
"rename",
|
||||||
"give",
|
"give",
|
||||||
"reload_cache",
|
"reload_cache",
|
||||||
@ -189,7 +197,10 @@ public class Commands implements TabExecutor {
|
|||||||
case "privilege_list":
|
case "privilege_list":
|
||||||
case "rename":
|
case "rename":
|
||||||
case "give":
|
case "give":
|
||||||
|
case "set_tp_location":
|
||||||
return playerDominions(sender);
|
return playerDominions(sender);
|
||||||
|
case "tp":
|
||||||
|
return allDominions();
|
||||||
case "set":
|
case "set":
|
||||||
return dominionFlags();
|
return dominionFlags();
|
||||||
case "create_privilege":
|
case "create_privilege":
|
||||||
|
@ -30,6 +30,7 @@ public class Apis {
|
|||||||
Notification.info(sender, " 大小为" + (x2 - x1) + " x" + (y2 - y1) + " x" + (z2 - z1));
|
Notification.info(sender, " 大小为" + (x2 - x1) + " x" + (y2 - y1) + " x" + (z2 - z1));
|
||||||
Notification.info(sender, " 中心坐标为 " + (x1 + (x2 - x1) / 2) + " " + (y1 + (y2 - y1) / 2) + " " + (z1 + (z2 - z1) / 2));
|
Notification.info(sender, " 中心坐标为 " + (x1 + (x2 - x1) / 2) + " " + (y1 + (y2 - y1) / 2) + " " + (z1 + (z2 - z1) / 2));
|
||||||
Notification.info(sender, " 高度为 " + (y2 - y1));
|
Notification.info(sender, " 高度为 " + (y2 - y1));
|
||||||
|
Notification.info(sender, " Y1=" + y1 + " Y2=" + y2);
|
||||||
Notification.info(sender, " 体积为 " + (x2 - x1) * (y2 - y1) * (z2 - z1));
|
Notification.info(sender, " 体积为 " + (x2 - x1) * (y2 - y1) * (z2 - z1));
|
||||||
Notification.info(sender, " 领地的世界为 " + dominionDTO.getWorld());
|
Notification.info(sender, " 领地的世界为 " + dominionDTO.getWorld());
|
||||||
Notification.info(sender, " 领地的对角点坐标为 x1=" + x1 + " y1=" + y1 + " z1=" + z1 + " x2=" + x2 + " y2=" + y2 + " z2=" + z2);
|
Notification.info(sender, " 领地的对角点坐标为 x1=" + x1 + " y1=" + y1 + " z1=" + z1 + " x2=" + x2 + " y2=" + y2 + " z2=" + z2);
|
||||||
|
@ -1,13 +1,18 @@
|
|||||||
package cn.lunadeer.dominion.commands;
|
package cn.lunadeer.dominion.commands;
|
||||||
|
|
||||||
|
import cn.lunadeer.dominion.Cache;
|
||||||
import cn.lunadeer.dominion.Dominion;
|
import cn.lunadeer.dominion.Dominion;
|
||||||
import cn.lunadeer.dominion.controllers.DominionController;
|
import cn.lunadeer.dominion.controllers.DominionController;
|
||||||
import cn.lunadeer.dominion.dtos.DominionDTO;
|
import cn.lunadeer.dominion.dtos.DominionDTO;
|
||||||
|
import cn.lunadeer.dominion.dtos.PlayerPrivilegeDTO;
|
||||||
import cn.lunadeer.dominion.utils.Notification;
|
import cn.lunadeer.dominion.utils.Notification;
|
||||||
|
import cn.lunadeer.dominion.utils.XLogger;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.World;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import static cn.lunadeer.dominion.commands.Apis.*;
|
import static cn.lunadeer.dominion.commands.Apis.*;
|
||||||
@ -272,6 +277,27 @@ public class DominionOperate {
|
|||||||
Notification.error(sender, "用法: /dominion set_leave_msg <提示语> [领地名称]");
|
Notification.error(sender, "用法: /dominion set_leave_msg <提示语> [领地名称]");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设置领地传送点
|
||||||
|
* /dominion set_tp_location [领地名称]
|
||||||
|
*
|
||||||
|
* @param sender 命令发送者
|
||||||
|
* @param args 命令参数
|
||||||
|
*/
|
||||||
|
public static void setTpLocation(CommandSender sender, String[] args) {
|
||||||
|
Player player = playerOnly(sender);
|
||||||
|
if (player == null) return;
|
||||||
|
if (args.length == 1) {
|
||||||
|
DominionController.setTpLocation(player);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (args.length == 2) {
|
||||||
|
DominionController.setTpLocation(player, args[1]);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Notification.error(sender, "用法: /dominion set_tp_location [领地名称]");
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 重命名领地
|
* 重命名领地
|
||||||
* /dominion rename <原领地名称> <新领地名称>
|
* /dominion rename <原领地名称> <新领地名称>
|
||||||
@ -315,4 +341,76 @@ public class DominionOperate {
|
|||||||
}
|
}
|
||||||
Notification.error(sender, "用法: /dominion give <领地名称> <玩家名称>");
|
Notification.error(sender, "用法: /dominion give <领地名称> <玩家名称>");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 传送到领地
|
||||||
|
* /dominion tp <领地名称>
|
||||||
|
*
|
||||||
|
* @param sender 命令发送者
|
||||||
|
* @param args 命令参数
|
||||||
|
*/
|
||||||
|
public static void teleportToDominion(CommandSender sender, String[] args) {
|
||||||
|
Player player = playerOnly(sender);
|
||||||
|
if (player == null) return;
|
||||||
|
if (args.length != 2) {
|
||||||
|
Notification.error(sender, "用法: /dominion tp <领地名称>");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!Dominion.config.getTpEnable()) {
|
||||||
|
Notification.error(sender, "管理员没有开启领地传送功能");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
DominionDTO dominionDTO = DominionDTO.select(args[1]);
|
||||||
|
if (dominionDTO == null) {
|
||||||
|
Notification.error(sender, "领地不存在");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
PlayerPrivilegeDTO privilegeDTO = PlayerPrivilegeDTO.select(player.getUniqueId(), dominionDTO.getId());
|
||||||
|
if (privilegeDTO == null) {
|
||||||
|
if (!dominionDTO.getTeleport()) {
|
||||||
|
Notification.error(sender, "此领地禁止传送");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (!privilegeDTO.getTeleport()) {
|
||||||
|
Notification.error(sender, "你不被允许传送到这个领地");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Location location = dominionDTO.getTpLocation();
|
||||||
|
if (location == null) {
|
||||||
|
Notification.error(sender, "此领地没有设置传送点");
|
||||||
|
return;
|
||||||
|
// int center_x = (dominionDTO.getX1() + dominionDTO.getX2()) / 2;
|
||||||
|
// int center_z = (dominionDTO.getZ1() + dominionDTO.getZ2()) / 2;
|
||||||
|
// // find safe location
|
||||||
|
// World world = Dominion.instance.getServer().getWorld(dominionDTO.getWorld());
|
||||||
|
// if (world == null) {
|
||||||
|
// Notification.error(sender, "此领地所在世界不存在");
|
||||||
|
// XLogger.warn("领地 " + dominionDTO.getName() + " 所在世界不存在");
|
||||||
|
// return;
|
||||||
|
// }
|
||||||
|
// location = world.getHighestBlockAt(center_x, center_z).getLocation();
|
||||||
|
}
|
||||||
|
|
||||||
|
LocalDateTime now = LocalDateTime.now();
|
||||||
|
LocalDateTime next_time = Cache.instance.NextTimeAllowTeleport.get(player.getUniqueId());
|
||||||
|
if (next_time != null) {
|
||||||
|
if (now.isBefore(next_time)) {
|
||||||
|
long secs_until_next = now.until(next_time, java.time.temporal.ChronoUnit.SECONDS);
|
||||||
|
Notification.error(player, "请等待 " + secs_until_next + " 秒后再次传送");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Notification.info(player, "传送将在 " + Dominion.config.getTpDelay() + " 秒后执行");
|
||||||
|
Cache.instance.NextTimeAllowTeleport.put(player.getUniqueId(), now.plusSeconds(Dominion.config.getTpCoolDown()));
|
||||||
|
Dominion.scheduler.region.runDelayed(Dominion.instance, (instance) -> {
|
||||||
|
if (player.isOnline()) {
|
||||||
|
player.teleportAsync(location);
|
||||||
|
Notification.info(player, "已将你传送到 " + dominionDTO.getName());
|
||||||
|
}
|
||||||
|
}, Dominion.config.getTpDelay() == 0 ? 1 : 20L * Dominion.config.getTpDelay());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -97,5 +97,13 @@ public class Helper {
|
|||||||
return dominions_name;
|
return dominions_name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static List<String> allDominions() {
|
||||||
|
List<String> dominions_name = new ArrayList<>();
|
||||||
|
List<DominionDTO> dominions = DominionController.all();
|
||||||
|
for (DominionDTO dominion : dominions) {
|
||||||
|
dominions_name.add(dominion.getName());
|
||||||
|
}
|
||||||
|
return dominions_name;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -23,6 +23,10 @@ public class DominionController {
|
|||||||
return DominionDTO.selectAll(owner.getUniqueId());
|
return DominionDTO.selectAll(owner.getUniqueId());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static List<DominionDTO> all() {
|
||||||
|
return DominionDTO.selectAll();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 创建领地
|
* 创建领地
|
||||||
*
|
*
|
||||||
@ -427,6 +431,55 @@ public class DominionController {
|
|||||||
Notification.info(operator, "成功设置领地 " + dominion_name + " 的离开消息");
|
Notification.info(operator, "成功设置领地 " + dominion_name + " 的离开消息");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设置领地的传送点
|
||||||
|
*
|
||||||
|
* @param operator 操作者
|
||||||
|
*/
|
||||||
|
public static void setTpLocation(Player operator) {
|
||||||
|
DominionDTO dominion = getPlayerCurrentDominion(operator);
|
||||||
|
if (dominion == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
setTpLocation(operator, dominion.getName());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设置领地的传送点
|
||||||
|
*
|
||||||
|
* @param operator 操作者
|
||||||
|
* @param dominion_name 领地名称
|
||||||
|
*/
|
||||||
|
public static void setTpLocation(Player operator, String dominion_name) {
|
||||||
|
DominionDTO dominion = DominionDTO.select(dominion_name);
|
||||||
|
if (dominion == null) {
|
||||||
|
Notification.error(operator, "领地 " + dominion_name + " 不存在");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (notOwner(operator, dominion)) {
|
||||||
|
Notification.error(operator, "你不是领地 " + dominion_name + " 的拥有者,无法执行此操作");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// 检查是否在领地内
|
||||||
|
if (operator.getWorld().getName().equals(dominion.getWorld()) &&
|
||||||
|
operator.getLocation().getBlockX() >= dominion.getX1() &&
|
||||||
|
operator.getLocation().getBlockX() <= dominion.getX2() &&
|
||||||
|
operator.getLocation().getBlockY() >= dominion.getY1() &&
|
||||||
|
operator.getLocation().getBlockY() <= dominion.getY2() &&
|
||||||
|
operator.getLocation().getBlockZ() >= dominion.getZ1() &&
|
||||||
|
operator.getLocation().getBlockZ() <= dominion.getZ2()) {
|
||||||
|
Location loc = operator.getLocation();
|
||||||
|
loc.setY(loc.getY() + 1.5);
|
||||||
|
dominion.setTpLocation(loc);
|
||||||
|
Notification.info(operator, "成功设置领地 " + dominion_name + " 的传送点," +
|
||||||
|
"当前位置为 " + operator.getLocation().getBlockX() + " " +
|
||||||
|
operator.getLocation().getBlockY() + 1 + " " +
|
||||||
|
operator.getLocation().getBlockZ());
|
||||||
|
} else {
|
||||||
|
Notification.error(operator, "你不在领地 " + dominion_name + " 内,无法设置传送点");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 重命名领地
|
* 重命名领地
|
||||||
*
|
*
|
||||||
|
@ -75,6 +75,7 @@ public class FlagsController {
|
|||||||
case "repeater": return dominion.setRepeater(value);
|
case "repeater": return dominion.setRepeater(value);
|
||||||
case "shear": return dominion.setShear(value);
|
case "shear": return dominion.setShear(value);
|
||||||
case "shoot": return dominion.setShoot(value);
|
case "shoot": return dominion.setShoot(value);
|
||||||
|
case "teleport": return dominion.setTeleport(value);
|
||||||
case "tnt_explode": return dominion.setTntExplode(value);
|
case "tnt_explode": return dominion.setTntExplode(value);
|
||||||
case "trade": return dominion.setTrade(value);
|
case "trade": return dominion.setTrade(value);
|
||||||
case "trample": return dominion.setTrample(value);
|
case "trample": return dominion.setTrample(value);
|
||||||
|
@ -205,6 +205,9 @@ public class PrivilegeController {
|
|||||||
case "shoot":
|
case "shoot":
|
||||||
privilege.setShoot(value);
|
privilege.setShoot(value);
|
||||||
break;
|
break;
|
||||||
|
case "teleport":
|
||||||
|
privilege.setTeleport(value);
|
||||||
|
break;
|
||||||
case "trade":
|
case "trade":
|
||||||
privilege.setTrade(value);
|
privilege.setTrade(value);
|
||||||
break;
|
break;
|
||||||
@ -266,7 +269,7 @@ public class PrivilegeController {
|
|||||||
dom.getPlace(), dom.getPressure(),
|
dom.getPlace(), dom.getPressure(),
|
||||||
dom.getRiding(), dom.getRepeater(),
|
dom.getRiding(), dom.getRepeater(),
|
||||||
dom.getShear(), dom.getShoot(),
|
dom.getShear(), dom.getShoot(),
|
||||||
dom.getTrade(),
|
dom.getTeleport(), dom.getTrade(),
|
||||||
dom.getVehicleDestroy(),
|
dom.getVehicleDestroy(),
|
||||||
dom.getVehicleSpawn());
|
dom.getVehicleSpawn());
|
||||||
privilege = PlayerPrivilegeDTO.insert(privilege);
|
privilege = PlayerPrivilegeDTO.insert(privilege);
|
||||||
|
@ -1,13 +1,17 @@
|
|||||||
package cn.lunadeer.dominion.dtos;
|
package cn.lunadeer.dominion.dtos;
|
||||||
|
|
||||||
import cn.lunadeer.dominion.Cache;
|
import cn.lunadeer.dominion.Cache;
|
||||||
|
import cn.lunadeer.dominion.Dominion;
|
||||||
import cn.lunadeer.dominion.utils.Database;
|
import cn.lunadeer.dominion.utils.Database;
|
||||||
import cn.lunadeer.dominion.utils.XLogger;
|
import cn.lunadeer.dominion.utils.XLogger;
|
||||||
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.World;
|
||||||
|
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
public class DominionDTO {
|
public class DominionDTO {
|
||||||
@ -32,6 +36,7 @@ public class DominionDTO {
|
|||||||
Integer y2 = rs.getInt("y2");
|
Integer y2 = rs.getInt("y2");
|
||||||
Integer z2 = rs.getInt("z2");
|
Integer z2 = rs.getInt("z2");
|
||||||
Integer parentDomId = rs.getInt("parent_dom_id");
|
Integer parentDomId = rs.getInt("parent_dom_id");
|
||||||
|
String tp_location = rs.getString("tp_location");
|
||||||
DominionDTO dominion = new DominionDTO(id, owner, name, world, x1, y1, z1, x2, y2, z2, parentDomId,
|
DominionDTO dominion = new DominionDTO(id, owner, name, world, x1, y1, z1, x2, y2, z2, parentDomId,
|
||||||
rs.getString("join_message"),
|
rs.getString("join_message"),
|
||||||
rs.getString("leave_message"),
|
rs.getString("leave_message"),
|
||||||
@ -73,12 +78,14 @@ public class DominionDTO {
|
|||||||
rs.getBoolean("repeater"),
|
rs.getBoolean("repeater"),
|
||||||
rs.getBoolean("shear"),
|
rs.getBoolean("shear"),
|
||||||
rs.getBoolean("shoot"),
|
rs.getBoolean("shoot"),
|
||||||
|
rs.getBoolean("teleport"),
|
||||||
rs.getBoolean("tnt_explode"),
|
rs.getBoolean("tnt_explode"),
|
||||||
rs.getBoolean("trade"),
|
rs.getBoolean("trade"),
|
||||||
rs.getBoolean("trample"),
|
rs.getBoolean("trample"),
|
||||||
rs.getBoolean("vehicle_destroy"),
|
rs.getBoolean("vehicle_destroy"),
|
||||||
rs.getBoolean("vehicle_spawn"),
|
rs.getBoolean("vehicle_spawn"),
|
||||||
rs.getBoolean("wither_spawn")
|
rs.getBoolean("wither_spawn"),
|
||||||
|
tp_location
|
||||||
);
|
);
|
||||||
dominions.add(dominion);
|
dominions.add(dominion);
|
||||||
}
|
}
|
||||||
@ -168,6 +175,13 @@ public class DominionDTO {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static DominionDTO update(DominionDTO dominion) {
|
private static DominionDTO update(DominionDTO dominion) {
|
||||||
|
String tp_location;
|
||||||
|
if (dominion.getTpLocation() == null) {
|
||||||
|
tp_location = "default";
|
||||||
|
} else {
|
||||||
|
Location loc = dominion.getTpLocation();
|
||||||
|
tp_location = loc.getBlockX() + ":" + loc.getBlockY() + ":" + loc.getBlockZ();
|
||||||
|
}
|
||||||
String sql = "UPDATE dominion SET " +
|
String sql = "UPDATE dominion SET " +
|
||||||
"owner = '" + dominion.getOwner().toString() + "', " +
|
"owner = '" + dominion.getOwner().toString() + "', " +
|
||||||
"name = '" + dominion.getName() + "', " +
|
"name = '" + dominion.getName() + "', " +
|
||||||
@ -219,12 +233,14 @@ public class DominionDTO {
|
|||||||
"repeater = " + dominion.getRepeater() + ", " +
|
"repeater = " + dominion.getRepeater() + ", " +
|
||||||
"shear = " + dominion.getShear() + ", " +
|
"shear = " + dominion.getShear() + ", " +
|
||||||
"shoot = " + dominion.getShoot() + ", " +
|
"shoot = " + dominion.getShoot() + ", " +
|
||||||
|
"teleport = " + dominion.getTeleport() + ", " +
|
||||||
"tnt_explode = " + dominion.getTntExplode() + ", " + // dom only
|
"tnt_explode = " + dominion.getTntExplode() + ", " + // dom only
|
||||||
"trade = " + dominion.getTrade() + ", " +
|
"trade = " + dominion.getTrade() + ", " +
|
||||||
"trample = " + dominion.getTrample() + ", " + // dom only
|
"trample = " + dominion.getTrample() + ", " + // dom only
|
||||||
"vehicle_destroy = " + dominion.getVehicleDestroy() + ", " +
|
"vehicle_destroy = " + dominion.getVehicleDestroy() + ", " +
|
||||||
"vehicle_spawn = " + dominion.getVehicleSpawn() + ", " +
|
"vehicle_spawn = " + dominion.getVehicleSpawn() + ", " +
|
||||||
"wither_spawn = " + dominion.getWitherSpawn() + " " + // dom only
|
"wither_spawn = " + dominion.getWitherSpawn() + ", " + // dom only
|
||||||
|
"tp_location = '" + tp_location + "' " +
|
||||||
" WHERE id = " + dominion.getId() +
|
" WHERE id = " + dominion.getId() +
|
||||||
" RETURNING *;";
|
" RETURNING *;";
|
||||||
List<DominionDTO> dominions = query(sql);
|
List<DominionDTO> dominions = query(sql);
|
||||||
@ -250,10 +266,11 @@ public class DominionDTO {
|
|||||||
Boolean place, Boolean pressure,
|
Boolean place, Boolean pressure,
|
||||||
Boolean riding, Boolean repeater,
|
Boolean riding, Boolean repeater,
|
||||||
Boolean shear, Boolean shoot,
|
Boolean shear, Boolean shoot,
|
||||||
Boolean tntExplode, Boolean trade, Boolean trample,
|
Boolean teleport, Boolean tntExplode, Boolean trade, Boolean trample,
|
||||||
Boolean vehicleDestroy,
|
Boolean vehicleDestroy,
|
||||||
Boolean vehicleSpawn,
|
Boolean vehicleSpawn,
|
||||||
Boolean witherSpawn) {
|
Boolean witherSpawn,
|
||||||
|
String tp_location) {
|
||||||
this.id = id;
|
this.id = id;
|
||||||
this.owner = owner;
|
this.owner = owner;
|
||||||
this.name = name;
|
this.name = name;
|
||||||
@ -305,27 +322,43 @@ public class DominionDTO {
|
|||||||
this.repeater = repeater;
|
this.repeater = repeater;
|
||||||
this.shear = shear;
|
this.shear = shear;
|
||||||
this.shoot = shoot;
|
this.shoot = shoot;
|
||||||
|
this.teleport = teleport;
|
||||||
this.tntExplode = tntExplode;
|
this.tntExplode = tntExplode;
|
||||||
this.trade = trade;
|
this.trade = trade;
|
||||||
this.trample = trample;
|
this.trample = trample;
|
||||||
this.vehicleDestroy = vehicleDestroy;
|
this.vehicleDestroy = vehicleDestroy;
|
||||||
this.vehicleSpawn = vehicleSpawn;
|
this.vehicleSpawn = vehicleSpawn;
|
||||||
this.witherSpawn = witherSpawn;
|
this.witherSpawn = witherSpawn;
|
||||||
|
if (Objects.equals(tp_location, "default")) {
|
||||||
|
this.tp_location = null;
|
||||||
|
} else {
|
||||||
|
// 0:0:0
|
||||||
|
String[] loc = tp_location.split(":");
|
||||||
|
World w = Dominion.instance.getServer().getWorld(world);
|
||||||
|
if (loc.length == 3 && w != null) {
|
||||||
|
this.tp_location = new Location(w, Integer.parseInt(loc[0]), Integer.parseInt(loc[1]), Integer.parseInt(loc[2]));
|
||||||
|
} else {
|
||||||
|
XLogger.warn("领地传送点数据异常: " + tp_location);
|
||||||
|
this.tp_location = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private DominionDTO(Integer id, UUID owner, String name, String world,
|
private DominionDTO(Integer id, UUID owner, String name, String world,
|
||||||
Integer x1, Integer y1, Integer z1, Integer x2, Integer y2, Integer z2,
|
Integer x1, Integer y1, Integer z1, Integer x2, Integer y2, Integer z2,
|
||||||
Integer parentDomId) {
|
Integer parentDomId) {
|
||||||
this(id, owner, name, world, x1, y1, z1, x2, y2, z2, parentDomId,
|
this.id = id;
|
||||||
"欢迎", "再见",
|
this.owner = owner;
|
||||||
false, false, false, false, false,
|
this.name = name;
|
||||||
false, false, false, false, false,
|
this.world = world;
|
||||||
false, false, false, false, false, false,
|
this.x1 = x1;
|
||||||
false, false, false, false, false, true,
|
this.y1 = y1;
|
||||||
true, false, false, false, false, false, false, true,
|
this.z1 = z1;
|
||||||
false, true, false, false, false, false,
|
this.x2 = x2;
|
||||||
false, false, false, false, false, false, false, false);
|
this.y2 = y2;
|
||||||
|
this.z2 = z2;
|
||||||
|
this.parentDomId = parentDomId;
|
||||||
}
|
}
|
||||||
|
|
||||||
public DominionDTO(UUID owner, String name, String world,
|
public DominionDTO(UUID owner, String name, String world,
|
||||||
@ -383,6 +416,7 @@ public class DominionDTO {
|
|||||||
private Boolean repeater = false;
|
private Boolean repeater = false;
|
||||||
private Boolean shear = false;
|
private Boolean shear = false;
|
||||||
private Boolean shoot = false;
|
private Boolean shoot = false;
|
||||||
|
private Boolean teleport = false;
|
||||||
private Boolean tntExplode = false;
|
private Boolean tntExplode = false;
|
||||||
private Boolean trade = false;
|
private Boolean trade = false;
|
||||||
private Boolean trample = false;
|
private Boolean trample = false;
|
||||||
@ -390,6 +424,7 @@ public class DominionDTO {
|
|||||||
private Boolean vehicleSpawn = false;
|
private Boolean vehicleSpawn = false;
|
||||||
private Boolean witherSpawn = false;
|
private Boolean witherSpawn = false;
|
||||||
private Boolean harvest = false;
|
private Boolean harvest = false;
|
||||||
|
private Location tp_location = null;
|
||||||
|
|
||||||
// getters and setters
|
// getters and setters
|
||||||
public Integer getId() {
|
public Integer getId() {
|
||||||
@ -837,6 +872,15 @@ public class DominionDTO {
|
|||||||
return update(this);
|
return update(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Boolean getTeleport() {
|
||||||
|
return teleport;
|
||||||
|
}
|
||||||
|
|
||||||
|
public DominionDTO setTeleport(Boolean teleport) {
|
||||||
|
this.teleport = teleport;
|
||||||
|
return update(this);
|
||||||
|
}
|
||||||
|
|
||||||
public Boolean getTntExplode() {
|
public Boolean getTntExplode() {
|
||||||
return tntExplode;
|
return tntExplode;
|
||||||
}
|
}
|
||||||
@ -909,4 +953,13 @@ public class DominionDTO {
|
|||||||
this.z2 = z2;
|
this.z2 = z2;
|
||||||
return update(this);
|
return update(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Location getTpLocation() {
|
||||||
|
return tp_location;
|
||||||
|
}
|
||||||
|
|
||||||
|
public DominionDTO setTpLocation(Location loc) {
|
||||||
|
this.tp_location = loc;
|
||||||
|
return update(this);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -27,7 +27,7 @@ public class PlayerPrivilegeDTO {
|
|||||||
"place, pressure, " +
|
"place, pressure, " +
|
||||||
"riding, repeater, " +
|
"riding, repeater, " +
|
||||||
"shear, shoot, " +
|
"shear, shoot, " +
|
||||||
"trade, " +
|
"teleport, trade, " +
|
||||||
"vehicle_destroy, " +
|
"vehicle_destroy, " +
|
||||||
"vehicle_spawn" +
|
"vehicle_spawn" +
|
||||||
") VALUES (" +
|
") VALUES (" +
|
||||||
@ -46,7 +46,7 @@ public class PlayerPrivilegeDTO {
|
|||||||
player.getPlace() + ", " + player.getPressure() + ", " +
|
player.getPlace() + ", " + player.getPressure() + ", " +
|
||||||
player.getRiding() + ", " + player.getRepeater() + ", " +
|
player.getRiding() + ", " + player.getRepeater() + ", " +
|
||||||
player.getShear() + ", " + player.getShoot() + ", " +
|
player.getShear() + ", " + player.getShoot() + ", " +
|
||||||
player.getTrade() + ", " +
|
player.getTeleport() + ", " + player.getTrade() + ", " +
|
||||||
player.getVehicleDestroy() + ", " +
|
player.getVehicleDestroy() + ", " +
|
||||||
player.getVehicleSpawn() + " " +
|
player.getVehicleSpawn() + " " +
|
||||||
") RETURNING *;";
|
") RETURNING *;";
|
||||||
@ -121,6 +121,7 @@ public class PlayerPrivilegeDTO {
|
|||||||
private Boolean repeater;
|
private Boolean repeater;
|
||||||
private Boolean shear;
|
private Boolean shear;
|
||||||
private Boolean shoot;
|
private Boolean shoot;
|
||||||
|
private Boolean teleport;
|
||||||
private Boolean trade;
|
private Boolean trade;
|
||||||
private Boolean vehicleDestroy;
|
private Boolean vehicleDestroy;
|
||||||
private Boolean vehicleSpawn;
|
private Boolean vehicleSpawn;
|
||||||
@ -273,6 +274,10 @@ public class PlayerPrivilegeDTO {
|
|||||||
return shoot;
|
return shoot;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Boolean getTeleport() {
|
||||||
|
return teleport;
|
||||||
|
}
|
||||||
|
|
||||||
public Boolean getTrade() {
|
public Boolean getTrade() {
|
||||||
return trade;
|
return trade;
|
||||||
}
|
}
|
||||||
@ -445,6 +450,11 @@ public class PlayerPrivilegeDTO {
|
|||||||
return update(this);
|
return update(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public PlayerPrivilegeDTO setTeleport(Boolean teleport) {
|
||||||
|
this.teleport = teleport;
|
||||||
|
return update(this);
|
||||||
|
}
|
||||||
|
|
||||||
public PlayerPrivilegeDTO setTrade(Boolean trade) {
|
public PlayerPrivilegeDTO setTrade(Boolean trade) {
|
||||||
this.trade = trade;
|
this.trade = trade;
|
||||||
return update(this);
|
return update(this);
|
||||||
@ -485,7 +495,7 @@ public class PlayerPrivilegeDTO {
|
|||||||
Boolean place, Boolean pressure,
|
Boolean place, Boolean pressure,
|
||||||
Boolean riding, Boolean repeater,
|
Boolean riding, Boolean repeater,
|
||||||
Boolean shear, Boolean shoot,
|
Boolean shear, Boolean shoot,
|
||||||
Boolean trade,
|
Boolean teleport, Boolean trade,
|
||||||
Boolean vehicleDestroy,
|
Boolean vehicleDestroy,
|
||||||
Boolean vehicleSpawn) {
|
Boolean vehicleSpawn) {
|
||||||
this.id = id;
|
this.id = id;
|
||||||
@ -525,6 +535,7 @@ public class PlayerPrivilegeDTO {
|
|||||||
this.repeater = repeater;
|
this.repeater = repeater;
|
||||||
this.shear = shear;
|
this.shear = shear;
|
||||||
this.shoot = shoot;
|
this.shoot = shoot;
|
||||||
|
this.teleport = teleport;
|
||||||
this.trade = trade;
|
this.trade = trade;
|
||||||
this.vehicleDestroy = vehicleDestroy;
|
this.vehicleDestroy = vehicleDestroy;
|
||||||
this.vehicleSpawn = vehicleSpawn;
|
this.vehicleSpawn = vehicleSpawn;
|
||||||
@ -545,7 +556,7 @@ public class PlayerPrivilegeDTO {
|
|||||||
Boolean place, Boolean pressure,
|
Boolean place, Boolean pressure,
|
||||||
Boolean riding, Boolean repeater,
|
Boolean riding, Boolean repeater,
|
||||||
Boolean shear, Boolean shoot,
|
Boolean shear, Boolean shoot,
|
||||||
Boolean trade,
|
Boolean teleport, Boolean trade,
|
||||||
Boolean vehicleDestroy,
|
Boolean vehicleDestroy,
|
||||||
Boolean vehicleSpawn
|
Boolean vehicleSpawn
|
||||||
) {
|
) {
|
||||||
@ -564,7 +575,7 @@ public class PlayerPrivilegeDTO {
|
|||||||
place, pressure,
|
place, pressure,
|
||||||
riding, repeater,
|
riding, repeater,
|
||||||
shear, shoot,
|
shear, shoot,
|
||||||
trade,
|
teleport, trade,
|
||||||
vehicleDestroy,
|
vehicleDestroy,
|
||||||
vehicleSpawn);
|
vehicleSpawn);
|
||||||
}
|
}
|
||||||
@ -616,6 +627,7 @@ public class PlayerPrivilegeDTO {
|
|||||||
rs.getBoolean("repeater"),
|
rs.getBoolean("repeater"),
|
||||||
rs.getBoolean("shear"),
|
rs.getBoolean("shear"),
|
||||||
rs.getBoolean("shoot"),
|
rs.getBoolean("shoot"),
|
||||||
|
rs.getBoolean("teleport"),
|
||||||
rs.getBoolean("trade"),
|
rs.getBoolean("trade"),
|
||||||
rs.getBoolean("vehicle_destroy"),
|
rs.getBoolean("vehicle_destroy"),
|
||||||
rs.getBoolean("vehicle_spawn")
|
rs.getBoolean("vehicle_spawn")
|
||||||
@ -666,6 +678,7 @@ public class PlayerPrivilegeDTO {
|
|||||||
"repeater = " + player.getRepeater() + ", " +
|
"repeater = " + player.getRepeater() + ", " +
|
||||||
"shear = " + player.getShear() + ", " +
|
"shear = " + player.getShear() + ", " +
|
||||||
"shoot = " + player.getShoot() + ", " +
|
"shoot = " + player.getShoot() + ", " +
|
||||||
|
"teleport = " + player.getTeleport() + ", " +
|
||||||
"trade = " + player.getTrade() + ", " +
|
"trade = " + player.getTrade() + ", " +
|
||||||
"vehicle_destroy = " + player.getVehicleDestroy() + ", " +
|
"vehicle_destroy = " + player.getVehicleDestroy() + ", " +
|
||||||
"vehicle_spawn = " + player.getVehicleSpawn() + " " +
|
"vehicle_spawn = " + player.getVehicleSpawn() + " " +
|
||||||
|
@ -87,6 +87,8 @@ public class Apis {
|
|||||||
.add(Line.create().append("缩小领地").append("/dominion contract [大小] [领地名称]"))
|
.add(Line.create().append("缩小领地").append("/dominion contract [大小] [领地名称]"))
|
||||||
.add(Line.create().append("设置进入领地的提示语").append("/dominion set_enter_msg <提示语> [领地名称]"))
|
.add(Line.create().append("设置进入领地的提示语").append("/dominion set_enter_msg <提示语> [领地名称]"))
|
||||||
.add(Line.create().append("设置离开领地的提示语").append("/dominion set_leave_msg <提示语> [领地名称]"))
|
.add(Line.create().append("设置离开领地的提示语").append("/dominion set_leave_msg <提示语> [领地名称]"))
|
||||||
|
.add(Line.create().append("设置领地传送点").append("/dominion set_tp_location [领地名称]"))
|
||||||
|
.add(Line.create().append("传送到领地").append("/dominion tp <领地名称>"))
|
||||||
.add(Line.create().append("重命名领地").append("/dominion rename <原领地名称> <新领地名称>"))
|
.add(Line.create().append("重命名领地").append("/dominion rename <原领地名称> <新领地名称>"))
|
||||||
.add(Line.create().append("转让领地").append("/dominion give <领地名称> <玩家名称> [force]"))
|
.add(Line.create().append("转让领地").append("/dominion give <领地名称> <玩家名称> [force]"))
|
||||||
.add(Line.create().append("删除领地").append("/dominion delete <领地名称> [force]"))
|
.add(Line.create().append("删除领地").append("/dominion delete <领地名称> [force]"))
|
||||||
|
@ -50,11 +50,11 @@ public class DominionFlagInfo {
|
|||||||
if (dominion.getAnimalKilling()) {
|
if (dominion.getAnimalKilling()) {
|
||||||
view.add(Line.create()
|
view.add(Line.create()
|
||||||
.append(Button.createGreen("☑", "/dominion set animal_killing false " + dominion.getName() + " " + page))
|
.append(Button.createGreen("☑", "/dominion set animal_killing false " + dominion.getName() + " " + page))
|
||||||
.append("动物伤害"));
|
.append("对动物造成伤害"));
|
||||||
} else {
|
} else {
|
||||||
view.add(Line.create()
|
view.add(Line.create()
|
||||||
.append(Button.createRed("☐", "/dominion set animal_killing true " + dominion.getName() + " " + page))
|
.append(Button.createRed("☐", "/dominion set animal_killing true " + dominion.getName() + " " + page))
|
||||||
.append("动物伤害"));
|
.append("对动物造成伤害"));
|
||||||
}
|
}
|
||||||
if (dominion.getAnvil()) {
|
if (dominion.getAnvil()) {
|
||||||
view.add(Line.create()
|
view.add(Line.create()
|
||||||
@ -131,11 +131,11 @@ public class DominionFlagInfo {
|
|||||||
if (dominion.getCraft()) {
|
if (dominion.getCraft()) {
|
||||||
view.add(Line.create()
|
view.add(Line.create()
|
||||||
.append(Button.createGreen("☑", "/dominion set craft false " + dominion.getName() + " " + page))
|
.append(Button.createGreen("☑", "/dominion set craft false " + dominion.getName() + " " + page))
|
||||||
.append("工作台"));
|
.append("使用工作台"));
|
||||||
} else {
|
} else {
|
||||||
view.add(Line.create()
|
view.add(Line.create()
|
||||||
.append(Button.createRed("☐", "/dominion set craft true " + dominion.getName() + " " + page))
|
.append(Button.createRed("☐", "/dominion set craft true " + dominion.getName() + " " + page))
|
||||||
.append("工作台"));
|
.append("使用工作台"));
|
||||||
}
|
}
|
||||||
if (dominion.getCreeperExplode()) {
|
if (dominion.getCreeperExplode()) {
|
||||||
view.add(Line.create()
|
view.add(Line.create()
|
||||||
@ -230,20 +230,20 @@ public class DominionFlagInfo {
|
|||||||
if (dominion.getFlowInProtection()) {
|
if (dominion.getFlowInProtection()) {
|
||||||
view.add(Line.create()
|
view.add(Line.create()
|
||||||
.append(Button.createGreen("☑", "/dominion set flow_in_protection false " + dominion.getName() + " " + page))
|
.append(Button.createGreen("☑", "/dominion set flow_in_protection false " + dominion.getName() + " " + page))
|
||||||
.append("流体保护"));
|
.append("外部流体是否可以进入"));
|
||||||
} else {
|
} else {
|
||||||
view.add(Line.create()
|
view.add(Line.create()
|
||||||
.append(Button.createRed("☐", "/dominion set flow_in_protection true " + dominion.getName() + " " + page))
|
.append(Button.createRed("☐", "/dominion set flow_in_protection true " + dominion.getName() + " " + page))
|
||||||
.append("流体保护"));
|
.append("外部流体是否可以进入"));
|
||||||
}
|
}
|
||||||
if (dominion.getGlow()) {
|
if (dominion.getGlow()) {
|
||||||
view.add(Line.create()
|
view.add(Line.create()
|
||||||
.append(Button.createGreen("☑", "/dominion set glow false " + dominion.getName() + " " + page))
|
.append(Button.createGreen("☑", "/dominion set glow false " + dominion.getName() + " " + page))
|
||||||
.append("发光"));
|
.append("玩家发光"));
|
||||||
} else {
|
} else {
|
||||||
view.add(Line.create()
|
view.add(Line.create()
|
||||||
.append(Button.createRed("☐", "/dominion set glow true " + dominion.getName() + " " + page))
|
.append(Button.createRed("☐", "/dominion set glow true " + dominion.getName() + " " + page))
|
||||||
.append("发光"));
|
.append("玩家发光"));
|
||||||
}
|
}
|
||||||
if (dominion.getHarvest()) {
|
if (dominion.getHarvest()) {
|
||||||
view.add(Line.create()
|
view.add(Line.create()
|
||||||
@ -311,11 +311,11 @@ public class DominionFlagInfo {
|
|||||||
if (dominion.getMonsterKilling()) {
|
if (dominion.getMonsterKilling()) {
|
||||||
view.add(Line.create()
|
view.add(Line.create()
|
||||||
.append(Button.createGreen("☑", "/dominion set monster_killing false " + dominion.getName() + " " + page))
|
.append(Button.createGreen("☑", "/dominion set monster_killing false " + dominion.getName() + " " + page))
|
||||||
.append("怪物伤害"));
|
.append("对怪物造成伤害"));
|
||||||
} else {
|
} else {
|
||||||
view.add(Line.create()
|
view.add(Line.create()
|
||||||
.append(Button.createRed("☐", "/dominion set monster_killing true " + dominion.getName() + " " + page))
|
.append(Button.createRed("☐", "/dominion set monster_killing true " + dominion.getName() + " " + page))
|
||||||
.append("怪物伤害"));
|
.append("对怪物造成伤害"));
|
||||||
}
|
}
|
||||||
if (dominion.getMove()) {
|
if (dominion.getMove()) {
|
||||||
view.add(Line.create()
|
view.add(Line.create()
|
||||||
@ -380,6 +380,15 @@ public class DominionFlagInfo {
|
|||||||
.append(Button.createRed("☐", "/dominion set shoot true " + dominion.getName() + " " + page))
|
.append(Button.createRed("☐", "/dominion set shoot true " + dominion.getName() + " " + page))
|
||||||
.append("射箭/雪球/三叉戟"));
|
.append("射箭/雪球/三叉戟"));
|
||||||
}
|
}
|
||||||
|
if (dominion.getTeleport()) {
|
||||||
|
view.add(Line.create()
|
||||||
|
.append(Button.createGreen("☑", "/dominion set teleport false " + dominion.getName() + " " + page))
|
||||||
|
.append("领地传送"));
|
||||||
|
} else {
|
||||||
|
view.add(Line.create()
|
||||||
|
.append(Button.createRed("☐", "/dominion set teleport true " + dominion.getName() + " " + page))
|
||||||
|
.append("领地传送"));
|
||||||
|
}
|
||||||
if (dominion.getTntExplode()) {
|
if (dominion.getTntExplode()) {
|
||||||
view.add(Line.create()
|
view.add(Line.create()
|
||||||
.append(Button.createGreen("☑", "/dominion set tnt_explode false " + dominion.getName() + " " + page))
|
.append(Button.createGreen("☑", "/dominion set tnt_explode false " + dominion.getName() + " " + page))
|
||||||
|
@ -24,14 +24,17 @@ public class DominionManage {
|
|||||||
}
|
}
|
||||||
if (noAuthToManage(player, dominion)) return;
|
if (noAuthToManage(player, dominion)) return;
|
||||||
Line size_info = Line.create()
|
Line size_info = Line.create()
|
||||||
.append(Button.create("尺寸信息", "/dominion info " + dominion.getName()))
|
.append(Button.create("详细信息", "/dominion info " + dominion.getName()))
|
||||||
.append("查看领地尺寸信息");
|
.append("查看领地详细信息");
|
||||||
Line flag_info = Line.create()
|
Line flag_info = Line.create()
|
||||||
.append(Button.create("权限设置", "/dominion flag_info " + dominion.getName()))
|
.append(Button.create("权限设置", "/dominion flag_info " + dominion.getName()))
|
||||||
.append("管理领地默认权限");
|
.append("管理领地默认权限");
|
||||||
Line privilege_list = Line.create()
|
Line privilege_list = Line.create()
|
||||||
.append(Button.create("玩家权限", "/dominion privilege_list " + dominion.getName()))
|
.append(Button.create("玩家权限", "/dominion privilege_list " + dominion.getName()))
|
||||||
.append("管理玩家特权");
|
.append("管理玩家特权");
|
||||||
|
Line set_tp = Line.create()
|
||||||
|
.append(Button.create("设置传送点", "/dominion set_tp_location " + dominion.getName()))
|
||||||
|
.append("设置当前位置为此领地传送点");
|
||||||
ListView view = ListView.create(10, "/dominion manage " + dominion.getName());
|
ListView view = ListView.create(10, "/dominion manage " + dominion.getName());
|
||||||
view.title("领地 " + dominion.getName() + " 管理界面")
|
view.title("领地 " + dominion.getName() + " 管理界面")
|
||||||
.navigator(Line.create()
|
.navigator(Line.create()
|
||||||
@ -41,6 +44,7 @@ public class DominionManage {
|
|||||||
.add(size_info)
|
.add(size_info)
|
||||||
.add(flag_info)
|
.add(flag_info)
|
||||||
.add(privilege_list)
|
.add(privilege_list)
|
||||||
|
.add(set_tp)
|
||||||
.showOn(player, 1);
|
.showOn(player, 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -38,6 +38,11 @@ public class DominionSizeInfo {
|
|||||||
.addLine(Line.create().append("Y轴坐标:").append(y1 + " ~ " + y2))
|
.addLine(Line.create().append("Y轴坐标:").append(y1 + " ~ " + y2))
|
||||||
.addLine(Line.create().append("水平面积:").append(String.valueOf((x2 - x1) * (z2 - z1))))
|
.addLine(Line.create().append("水平面积:").append(String.valueOf((x2 - x1) * (z2 - z1))))
|
||||||
.addLine(Line.create().append("领地体积:").append(String.valueOf((x2 - x1) * (y2 - y1) * (z2 - z1))))
|
.addLine(Line.create().append("领地体积:").append(String.valueOf((x2 - x1) * (y2 - y1) * (z2 - z1))))
|
||||||
|
.addLine(Line.create().append("传送点坐标:").append(
|
||||||
|
dominion.getTpLocation() == null ?
|
||||||
|
"无" :
|
||||||
|
dominion.getTpLocation().getX() + " " + dominion.getTpLocation().getY() + " " + dominion.getTpLocation().getZ()
|
||||||
|
))
|
||||||
.actionBar(Line.create()
|
.actionBar(Line.create()
|
||||||
.append(Button.create("管理界面", "/dominion manage " + dominion.getName()))
|
.append(Button.create("管理界面", "/dominion manage " + dominion.getName()))
|
||||||
.append(Button.create("权限列表", "/dominion flag_info " + dominion.getName())))
|
.append(Button.create("权限列表", "/dominion flag_info " + dominion.getName())))
|
||||||
|
@ -359,6 +359,15 @@ public class PrivilegeInfo {
|
|||||||
.append(Button.createRed("☐", "/dominion set_privilege " + playerName + " shoot true " + dominion.getName() + " " + page))
|
.append(Button.createRed("☐", "/dominion set_privilege " + playerName + " shoot true " + dominion.getName() + " " + page))
|
||||||
.append("射箭/雪球/三叉戟"));
|
.append("射箭/雪球/三叉戟"));
|
||||||
}
|
}
|
||||||
|
if (privilege.getTeleport()) {
|
||||||
|
view.add(Line.create()
|
||||||
|
.append(Button.createGreen("☑", "/dominion set_privilege " + playerName + " teleport false " + dominion.getName() + " " + page))
|
||||||
|
.append("领地传送"));
|
||||||
|
} else {
|
||||||
|
view.add(Line.create()
|
||||||
|
.append(Button.createRed("☐", "/dominion set_privilege " + playerName + " teleport true " + dominion.getName() + " " + page))
|
||||||
|
.append("领地传送"));
|
||||||
|
}
|
||||||
if (privilege.getTrade()) {
|
if (privilege.getTrade()) {
|
||||||
view.add(Line.create()
|
view.add(Line.create()
|
||||||
.append(Button.createGreen("☑", "/dominion set_privilege " + playerName + " trade false " + dominion.getName() + " " + page))
|
.append(Button.createGreen("☑", "/dominion set_privilege " + playerName + " trade false " + dominion.getName() + " " + page))
|
||||||
|
@ -59,6 +59,9 @@ public class ConfigManager {
|
|||||||
_limit_depth = _file.getInt("Limit.Depth", 10);
|
_limit_depth = _file.getInt("Limit.Depth", 10);
|
||||||
_world_black_list = _file.getStringList("WorldBlackList");
|
_world_black_list = _file.getStringList("WorldBlackList");
|
||||||
_check_update = _file.getBoolean("CheckUpdate", true);
|
_check_update = _file.getBoolean("CheckUpdate", true);
|
||||||
|
_tp_enable = _file.getBoolean("Teleport.Enable", false);
|
||||||
|
_tp_delay = _file.getInt("Teleport.Delay", 0);
|
||||||
|
_tp_cool_down = _file.getInt("Teleport.CoolDown", 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Boolean isDebug() {
|
public Boolean isDebug() {
|
||||||
@ -227,6 +230,36 @@ public class ConfigManager {
|
|||||||
return _check_update;
|
return _check_update;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Boolean getTpEnable() {
|
||||||
|
return _tp_enable;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTpEnable(Boolean tp_enable) {
|
||||||
|
_tp_enable = tp_enable;
|
||||||
|
_file.set("Teleport.Enable", tp_enable);
|
||||||
|
_plugin.saveConfig();
|
||||||
|
}
|
||||||
|
|
||||||
|
public Integer getTpDelay() {
|
||||||
|
return _tp_delay;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTpDelay(Integer tp_delay) {
|
||||||
|
_tp_delay = tp_delay;
|
||||||
|
_file.set("Teleport.Delay", tp_delay);
|
||||||
|
_plugin.saveConfig();
|
||||||
|
}
|
||||||
|
|
||||||
|
public Integer getTpCoolDown() {
|
||||||
|
return _tp_cool_down;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTpCoolDown(Integer tp_cool_down) {
|
||||||
|
_tp_cool_down = tp_cool_down;
|
||||||
|
_file.set("Teleport.CoolDown", tp_cool_down);
|
||||||
|
_plugin.saveConfig();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private final Dominion _plugin;
|
private final Dominion _plugin;
|
||||||
private FileConfiguration _file;
|
private FileConfiguration _file;
|
||||||
@ -253,4 +286,8 @@ public class ConfigManager {
|
|||||||
private Integer _limit_depth;
|
private Integer _limit_depth;
|
||||||
private List<String> _world_black_list;
|
private List<String> _world_black_list;
|
||||||
private Boolean _check_update;
|
private Boolean _check_update;
|
||||||
|
|
||||||
|
private Boolean _tp_enable;
|
||||||
|
private Integer _tp_delay;
|
||||||
|
private Integer _tp_cool_down;
|
||||||
}
|
}
|
||||||
|
@ -240,5 +240,10 @@ public class Database {
|
|||||||
|
|
||||||
// 1.12.0
|
// 1.12.0
|
||||||
addColumnIfNotExists("dominion", "ender_man", "BOOLEAN NOT NULL DEFAULT FAlSE");
|
addColumnIfNotExists("dominion", "ender_man", "BOOLEAN NOT NULL DEFAULT FAlSE");
|
||||||
|
|
||||||
|
// 1.18.0
|
||||||
|
addColumnIfNotExists("dominion", "tp_location", "TEXT NOT NULL DEFAULT 'default'");
|
||||||
|
addColumnIfNotExists("dominion", "teleport", "BOOLEAN NOT NULL DEFAULT FALSE");
|
||||||
|
addColumnIfNotExists("player_privilege", "teleport", "BOOLEAN NOT NULL DEFAULT FALSE");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -20,6 +20,13 @@ Limit:
|
|||||||
Depth: 3 # 子领地深度 0:不允许子领地 -1:不限制
|
Depth: 3 # 子领地深度 0:不允许子领地 -1:不限制
|
||||||
WorldBlackList: []
|
WorldBlackList: []
|
||||||
|
|
||||||
|
Teleport:
|
||||||
|
Enable: true
|
||||||
|
# 传送延迟 秒
|
||||||
|
Delay: 0
|
||||||
|
# 冷却时间 秒
|
||||||
|
CoolDown: 0
|
||||||
|
|
||||||
# -1 表示不开启
|
# -1 表示不开启
|
||||||
AutoCleanAfterDays: 180
|
AutoCleanAfterDays: 180
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user