Skip to content

Commit 9616529

Browse files
新增权限节点和命令
1 parent 12f6e58 commit 9616529

5 files changed

Lines changed: 64 additions & 6 deletions

File tree

src/main/java/ict/minesunshineone/landmark/command/LandmarkCommand.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import ict.minesunshineone.landmark.command.impl.ReloadCommand;
2121
import ict.minesunshineone.landmark.command.impl.RenameCommand;
2222
import ict.minesunshineone.landmark.command.impl.TeleportCommand;
23+
import ict.minesunshineone.landmark.command.impl.UnlockAllCommand;
2324

2425
public class LandmarkCommand implements CommandExecutor, TabCompleter {
2526

@@ -40,6 +41,7 @@ private void registerSubCommands() {
4041
subCommands.put("rename", new RenameCommand(plugin));
4142
subCommands.put("edit", new EditCommand(plugin));
4243
subCommands.put("reload", new ReloadCommand(plugin));
44+
subCommands.put("unlockall", new UnlockAllCommand(plugin));
4345
}
4446

4547
@Override
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package ict.minesunshineone.landmark.command.impl;
2+
3+
import java.util.Collections;
4+
import java.util.List;
5+
6+
import org.bukkit.command.CommandSender;
7+
import org.bukkit.entity.Player;
8+
9+
import ict.minesunshineone.landmark.LandmarkPlugin;
10+
import ict.minesunshineone.landmark.command.SubCommand;
11+
12+
public class UnlockAllCommand extends SubCommand {
13+
14+
public UnlockAllCommand(LandmarkPlugin plugin) {
15+
super(plugin);
16+
}
17+
18+
@Override
19+
public void execute(CommandSender sender, String[] args) {
20+
if (!(sender instanceof Player)) {
21+
plugin.getConfigManager().sendMessage(sender, "command-player-only", "<red>该命令只能由玩家执行!</red>");
22+
return;
23+
}
24+
25+
Player player = (Player) sender;
26+
plugin.getLandmarkManager().unlockAllLandmarks(player);
27+
}
28+
29+
@Override
30+
public String getPermission() {
31+
return "landmark.unlock.all";
32+
}
33+
34+
@Override
35+
public List<String> onTabComplete(CommandSender sender, String[] args) {
36+
return Collections.emptyList();
37+
}
38+
}

src/main/java/ict/minesunshineone/landmark/manager/LandmarkManager.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,10 @@ public void unlockLandmark(Player player, String landmarkName) {
131131
}
132132

133133
public boolean canTeleport(Player player) {
134+
// 如果玩家有无视冷却权限,直接返回true
135+
if (player.hasPermission("landmark.bypass.cooldown")) {
136+
return true;
137+
}
134138
long lastTeleport = cooldowns.getOrDefault(player.getUniqueId(), 0L);
135139
long cooldownTime = plugin.getConfigManager().getCooldownTime() * 1000L;
136140
return System.currentTimeMillis() - lastTeleport >= cooldownTime;
@@ -407,4 +411,17 @@ public void updateMenuPosition(String landmarkName, int newRow, int newColumn) {
407411
}
408412
}
409413
}
414+
415+
// 新增一键解锁所有锚点的方法
416+
public void unlockAllLandmarks(Player player) {
417+
if (!player.hasPermission("landmark.unlock.all")) {
418+
return;
419+
}
420+
Set<String> playerUnlocked = unlockedLandmarks.computeIfAbsent(player.getUniqueId(), k -> new HashSet<>());
421+
for (String landmarkName : landmarks.keySet()) {
422+
playerUnlocked.add(landmarkName.toLowerCase());
423+
}
424+
savePlayerData(player.getUniqueId());
425+
plugin.getConfigManager().sendMessage(player, "unlock-all-success", "<gradient:green:aqua>✧ 魔法师解开了所有锚点的封印!</gradient>");
426+
}
410427
}

src/main/resources/config.yml

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -41,12 +41,7 @@ messages:
4141
separator: '<gradient:gold:yellow>✧══════════ 魔法锚点咒语书 ══════════✧</gradient>'
4242
command: '%prefix% <yellow>%command%</yellow>'
4343
landmark-exists: '<gradient:red:dark_red>✧ 魔法师,这个锚点名称已被占用了!</gradient>'
44-
create-title: '<gradient:gold:yellow>✧══════════ 魔法锚点 ══════════✧</gradient>'
45-
create-subtitle: '<gradient:green:aqua>成功创造新的锚点!</gradient>'
46-
delete-title: '<gradient:red:dark_red>✧══════════ 魔法锚点 ══════════✧</gradient>'
47-
delete-subtitle: '<gradient:red:dark_red>锚点已被抹除!</gradient>'
48-
rename-title: '<gradient:gold:yellow>✧══════════ 魔法锚点 ══════════✧</gradient>'
49-
rename-subtitle: '<gradient:green:aqua>锚点重命名成功!</gradient>'
44+
unlock-all-success: '<gradient:green:aqua>✧ 魔法师成功解开了所有锚点的封印!</gradient>'
5045

5146
# GUI设置
5247
gui:

src/main/resources/plugin.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,4 +39,10 @@ permissions:
3939
default: true
4040
landmark.admin:
4141
description: 管理员权限
42+
default: op
43+
landmark.unlock.all:
44+
description: 允许一键解锁所有锚点
45+
default: op
46+
landmark.bypass.cooldown:
47+
description: 允许无视传送冷却
4248
default: op

0 commit comments

Comments
 (0)