新增配置项,控制是否可以从residence迁移数据

This commit is contained in:
zhangyuheng 2024-06-25 19:49:02 +08:00
parent 98093f2532
commit 2dfbae52cf
10 changed files with 72 additions and 42 deletions

View File

@ -39,6 +39,7 @@
- 支持基础价格系统;
- 领地区域可视化;
- 管理员可在游戏内使用TUI配置领地系统
- 支持[从 Residence 迁移](https://ssl.lunadeer.cn:14448/doc/73/)领地数据;
<div style="text-align: center;">

View File

@ -1,6 +1,7 @@
package cn.lunadeer.dominion.commands;
import cn.lunadeer.dominion.Cache;
import cn.lunadeer.dominion.Dominion;
import cn.lunadeer.dominion.controllers.BukkitPlayerOperator;
import cn.lunadeer.dominion.controllers.DominionController;
import cn.lunadeer.dominion.dtos.DominionDTO;
@ -21,6 +22,12 @@ public class Migration {
try {
Player player = playerOnly(sender);
if (player == null) return;
if (!Dominion.config.getResidenceMigration()) {
Notification.error(sender, "Residence 迁移功能没有开启");
return;
}
if (args.length < 2) {
Notification.error(sender, "用法: /dominion migrate <res领地名称>");
return;
@ -83,6 +90,6 @@ public class Migration {
}
}
});
DominionController.create(operator, node.name, node.loc1, node.loc2, parentName);
DominionController.create(operator, node.name, node.loc1, node.loc2, parentName, true);
}
}

View File

@ -67,6 +67,9 @@ public class SetConfig {
case "economy_refund":
setEconomyRefund(sender, args);
break;
case "residence_migration":
setResidenceMigration(sender, args);
break;
default:
Notification.error(sender, "未知参数");
}
@ -250,4 +253,10 @@ public class SetConfig {
Dominion.config.setEconomyRefund(economyRefund);
}
}
private static void setResidenceMigration(CommandSender sender, String[] args) {
boolean residenceMigration = Boolean.parseBoolean(args[2]);
Dominion.config.setResidenceMigration(residenceMigration);
refreshPageOrNot(sender, args);
}
}

View File

@ -38,7 +38,6 @@ public class DominionController {
* @param name 领地名称
* @param loc1 位置1
* @param loc2 位置2
* @return 创建的领地
*/
public static void create(AbstractOperator operator, String name, Location loc1, Location loc2) {
DominionDTO parent = getPlayerCurrentDominion(operator);
@ -57,11 +56,26 @@ public class DominionController {
* @param loc1 位置1
* @param loc2 位置2
* @param parent_dominion_name 父领地名称
* @return 创建的领地
*/
public static void create(AbstractOperator operator, String name,
Location loc1, Location loc2,
String parent_dominion_name) {
create(operator, name, loc1, loc2, parent_dominion_name, false);
}
/**
* 创建子领地
*
* @param operator 拥有者
* @param name 领地名称
* @param loc1 位置1
* @param loc2 位置2
* @param parent_dominion_name 父领地名称
* @param skipEco 是否跳过经济检查
*/
public static void create(AbstractOperator operator, String name,
Location loc1, Location loc2,
String parent_dominion_name, boolean skipEco) {
AbstractOperator.Result FAIL = new AbstractOperator.Result(AbstractOperator.Result.FAILURE, "创建领地失败");
if (name.isEmpty()) {
operator.setResponse(FAIL.addMessage("领地名称不能为空"));
@ -143,7 +157,7 @@ public class DominionController {
}
}
// 检查经济
if (Dominion.config.getEconomyEnable()) {
if (Dominion.config.getEconomyEnable() && !skipEco) {
if (!VaultConnect.instance.economyAvailable()) {
operator.setResponse(FAIL.addMessage("没有可用的经济插件系统,请联系服主。"));
return;
@ -181,7 +195,6 @@ public class DominionController {
*
* @param operator 操作者
* @param size 扩展的大小
* @return 扩展后的领地
*/
public static void expand(AbstractOperator operator, Integer size) {
DominionDTO dominion = getPlayerCurrentDominion(operator);
@ -198,7 +211,6 @@ public class DominionController {
* @param operator 操作者
* @param size 扩展的大小
* @param dominion_name 领地名称
* @return 扩展后的领地
*/
public static void expand(AbstractOperator operator, Integer size, String dominion_name) {
AbstractOperator.Result FAIL = new AbstractOperator.Result(AbstractOperator.Result.FAILURE, "扩展领地失败");
@ -304,7 +316,6 @@ public class DominionController {
*
* @param operator 操作者
* @param size 缩小的大小
* @return 缩小后的领地
*/
public static void contract(AbstractOperator operator, Integer size) {
DominionDTO dominion = getPlayerCurrentDominion(operator);
@ -321,7 +332,6 @@ public class DominionController {
* @param operator 操作者
* @param size 缩小的大小
* @param dominion_name 领地名称
* @return 缩小后的领地
*/
public static void contract(AbstractOperator operator, Integer size, String dominion_name) {
AbstractOperator.Result FAIL = new AbstractOperator.Result(AbstractOperator.Result.FAILURE, "缩小领地失败");

View File

@ -87,6 +87,7 @@ public class ConfigManager {
_economy_only_xz = _file.getBoolean("Economy.OnlyXZ", false);
_economy_refund = (float) _file.getDouble("Economy.Refund", 0.85);
_fly_permission_nodes = _file.getStringList("FlyPermissionNodes");
_residence_migration = _file.getBoolean("ResidenceMigration", false);
saveAll(); // 回写文件 防止文件中的数据不完整
Flag.loadFromJson();
}
@ -115,6 +116,7 @@ public class ConfigManager {
_file.set("Economy.OnlyXZ", _economy_only_xz);
_file.set("Economy.Refund", _economy_refund);
_file.set("FlyPermissionNodes", _fly_permission_nodes);
_file.set("ResidenceMigration", _residence_migration);
_plugin.saveConfig();
}
@ -395,6 +397,16 @@ public class ConfigManager {
_plugin.saveConfig();
}
public Boolean getResidenceMigration() {
return _residence_migration;
}
public void setResidenceMigration(Boolean residence_migration) {
_residence_migration = residence_migration;
_file.set("ResidenceMigration", residence_migration);
_plugin.saveConfig();
}
private final Dominion _plugin;
private FileConfiguration _file;
private Boolean _debug;
@ -433,4 +445,5 @@ public class ConfigManager {
private Boolean _economy_only_xz;
private Float _economy_refund;
private List<String> _fly_permission_nodes;
private Boolean _residence_migration;
}

View File

@ -151,6 +151,15 @@ public class DominionConfig {
.append(NumChanger.create(Dominion.config.getEconomyRefund(), "/dominion set_config economy_refund", 0.01).setPageNumber(page).build());
view.add(refund);
}
if (Dominion.config.getResidenceMigration()) {
view.add(Line.create()
.append("是否允许从Residence迁移数据")
.append(Button.createGreen("").setExecuteCommand("/dominion set_config residence_migration false " + page).build()));
} else {
view.add(Line.create()
.append("是否允许从Residence迁移数据")
.append(Button.createRed("").setExecuteCommand("/dominion set_config residence_migration true " + page).build()));
}
view.showOn(player, page);
}
}

View File

@ -1,5 +1,6 @@
package cn.lunadeer.dominion.tuis;
import cn.lunadeer.dominion.Dominion;
import cn.lunadeer.minecraftpluginutils.stui.ListView;
import cn.lunadeer.minecraftpluginutils.stui.ViewStyles;
import cn.lunadeer.minecraftpluginutils.stui.components.Button;
@ -60,8 +61,10 @@ public class Menu {
.add(list)
.add(template)
.add(help)
.add(link)
.add(migrate);
.add(link);
if (Dominion.config.getResidenceMigration()) {
view.add(migrate);
}
if (player.isOp()) {
view.add(Line.create().append(""));
view.add(Line.create().append(Component.text("--- 以下选项仅OP可见 ---", ViewStyles.main_color)));

View File

@ -1,7 +1,9 @@
package cn.lunadeer.dominion.tuis;
import cn.lunadeer.dominion.Cache;
import cn.lunadeer.dominion.Dominion;
import cn.lunadeer.dominion.utils.ResMigration;
import cn.lunadeer.minecraftpluginutils.Notification;
import cn.lunadeer.minecraftpluginutils.stui.ListView;
import cn.lunadeer.minecraftpluginutils.stui.components.Button;
import cn.lunadeer.minecraftpluginutils.stui.components.Line;
@ -24,6 +26,11 @@ public class MigrateList {
Player player = playerOnly(sender);
if (player == null) return;
if (!Dominion.config.getResidenceMigration()) {
Notification.error(sender, "Residence 迁移功能没有开启");
return;
}
int page = 1;
if (args.length == 2) {
try {

View File

@ -19,38 +19,6 @@ import java.nio.file.Files;
import java.util.*;
public class ResMigration {
/*
Residences:
'03':
TPLoc: -3967.62:48.0:-1988.87:4.8:-5.08
Messages: 1
Permissions:
PlayerFlags:
3244b8fb-3cf9-433e-8f4a-bb90bf6d4f54: 1
8075e1ae-62fc-482f-b3af-3fc5b2770a2c: 2
0a23b4e5-f18e-4f8b-947d-558444bb27ca: 3
AreaFlags: 4
OwnerUUID: 8075e1ae-62fc-482f-b3af-3fc5b2770a2c
OwnerLastKnownName: guajn
CreatedOn: 1630491137410
Areas:
main: -3998:0:-2014:-3939:255:-1955
'04':
TPLoc: -5640.7:189.0:-2029.38:40.35:-96.3
Messages: 1
Permissions:
PlayerFlags:
8075e1ae-62fc-482f-b3af-3fc5b2770a2c: 2
0a23b4e5-f18e-4f8b-947d-558444bb27ca: 1
AreaFlags: 5
OwnerUUID: 8075e1ae-62fc-482f-b3af-3fc5b2770a2c
OwnerLastKnownName: guajn
CreatedOn: 1641656609270
Areas:
main: -5673:0:-2055:-5609:255:-2005
*/
public static class ResidenceNode {
public UUID owner;
public World world;

View File

@ -49,6 +49,9 @@ FlyPermissionNodes:
- essentials.fly
- cmi.command.fly
# 是否允许玩家从 Residence 迁移领地数据
ResidenceMigration: false
BlueMap: true
CheckUpdate: true