Skip to content

Commit

Permalink
allow operator migrate res for players
Browse files Browse the repository at this point in the history
  • Loading branch information
ColdeZhang committed Jan 15, 2025
1 parent 3aae169 commit 2e064b5
Show file tree
Hide file tree
Showing 5 changed files with 30 additions and 6 deletions.
2 changes: 1 addition & 1 deletion build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ var libraries = listOf<String>()
libraries = libraries + "cn.lunadeer:MinecraftPluginUtils:2.0.7"

group = "cn.lunadeer"
version = "3.2.8-beta"
version = "3.3.1-beta"

java {
toolchain.languageVersion.set(JavaLanguageVersion.of(17))
Expand Down
14 changes: 13 additions & 1 deletion core/src/main/java/cn/lunadeer/dominion/Cache.java
Original file line number Diff line number Diff line change
Expand Up @@ -421,7 +421,7 @@ public List<DominionDTO> getPlayerAdminDominions(UUID player_uuid) {
return dominions;
}

public List<ResMigration.ResidenceNode> getResidenceData(UUID player_uuid) {
private void updateData() {
if (residence_data == null) {
residence_data = new HashMap<>();
List<ResMigration.ResidenceNode> residences = ResMigration.extractFromResidence(Dominion.instance);
Expand All @@ -437,6 +437,18 @@ public List<ResMigration.ResidenceNode> getResidenceData(UUID player_uuid) {
}
XLogger.debug("residence_data: %d", residence_data.size());
}
}

public List<ResMigration.ResidenceNode> getResidenceData() {
updateData();
return residence_data.values().stream().reduce(new ArrayList<>(), (a, b) -> {
a.addAll(b);
return a;
});
}

public List<ResMigration.ResidenceNode> getResidenceData(UUID player_uuid) {
updateData();
return residence_data.get(player_uuid);
}

Expand Down
11 changes: 8 additions & 3 deletions core/src/main/java/cn/lunadeer/dominion/commands/Migration.java
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,12 @@ public static void migrate(CommandSender sender, String[] args) {
return;
}
String resName = args[1];
List<ResMigration.ResidenceNode> res_data = Cache.instance.getResidenceData(player.getUniqueId());
List<ResMigration.ResidenceNode> res_data;
if (player.hasPermission("dominion.admin")) {
res_data = Cache.instance.getResidenceData(); // get all residence data
} else {
res_data = Cache.instance.getResidenceData(player.getUniqueId()); // get player's residence data
}
if (res_data == null) {
Notification.error(sender, Translation.Commands_Residence_NoMigrationData);
return;
Expand All @@ -48,7 +53,7 @@ public static void migrate(CommandSender sender, String[] args) {
Notification.error(sender, Translation.Commands_Residence_NoResidenceDominion);
return;
}
if (!resNode.owner.equals(player.getUniqueId())) {
if (!resNode.owner.equals(player.getUniqueId()) && !player.hasPermission("dominion.admin")) {
Notification.error(sender, Translation.Commands_Residence_ResidenceNotOwner);
return;
}
Expand All @@ -67,7 +72,7 @@ public static void migrate(CommandSender sender, String[] args) {

private static void create(Player player, ResMigration.ResidenceNode node, DominionDTO parent) {
BukkitPlayerOperator operator = new BukkitPlayerOperator(player);
DominionCreateEvent event = new DominionCreateEvent(operator, node.name, player.getUniqueId(), node.loc1, node.loc2, parent);
DominionCreateEvent event = new DominionCreateEvent(operator, node.name, node.owner, node.loc1, node.loc2, parent);
event.setSkipEconomy(true);
event.callEvent();
if (!event.isCancelled()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,13 @@ public static void show(CommandSender sender, String[] args) {
view.title(Translation.TUI_Migrate_Title);
view.navigator(Line.create().append(Button.create(Translation.TUI_Navigation_Menu).setExecuteCommand("/dominion menu").build()).append(Translation.TUI_Navigation_MigrateList));

List<ResMigration.ResidenceNode> res_data = Cache.instance.getResidenceData(player.getUniqueId());
List<ResMigration.ResidenceNode> res_data;

if (player.hasPermission("dominion.admin")) {
res_data = Cache.instance.getResidenceData(); // get all residence data
} else {
res_data = Cache.instance.getResidenceData(player.getUniqueId()); // get player's residence data
}

if (res_data == null) {
view.add(Line.create().append(Translation.TUI_Migrate_NoData));
Expand Down
1 change: 1 addition & 0 deletions docs/zh-cn/migration-residence.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@

1. 删除 Residence 插件,保留其数据文件 `plugins/Residence`;
2. 在 Dominion 配置中将 `ResidenceMigration` 打开(设置为true);
3. 如果您是个勤劳的服主,那么你也可以亲自帮玩家迁移领地,具体操作请参考下面的玩家要做的事;

## 玩家要做的事

Expand Down

0 comments on commit 2e064b5

Please sign in to comment.