Skip to content

Commit bbbb587

Browse files
committed
feat: add various commands
1 parent e70c8b0 commit bbbb587

File tree

1 file changed

+96
-6
lines changed

1 file changed

+96
-6
lines changed
Lines changed: 96 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,114 @@
11
package me.mapacheee.extendedhorizons.commands;
22

3-
import org.incendo.cloud.annotations.Command;
4-
53
import com.google.inject.Inject;
64
import com.thewinterframework.command.CommandComponent;
75
import com.thewinterframework.service.ReloadServiceManager;
6+
import me.mapacheee.extendedhorizons.fakechunks.planner.ChunkPlannerService;
7+
import me.mapacheee.extendedhorizons.fakechunks.session.PlayerSession;
8+
import me.mapacheee.extendedhorizons.fakechunks.session.SessionRegistry;
9+
import me.mapacheee.extendedhorizons.messages.MessagesFacade;
10+
import org.bukkit.Bukkit;
11+
import org.bukkit.entity.Player;
12+
import org.incendo.cloud.annotations.Argument;
13+
import org.incendo.cloud.annotations.Command;
14+
import org.incendo.cloud.annotations.Permission;
15+
import org.incendo.cloud.annotations.suggestion.Suggestions;
16+
import org.incendo.cloud.context.CommandContext;
17+
import org.incendo.cloud.context.CommandInput;
18+
import org.incendo.cloud.paper.util.sender.Source;
19+
20+
import java.util.List;
21+
import java.util.stream.Collectors;
822

923
@CommandComponent
24+
@SuppressWarnings("UnstableApiUsage")
1025
public class EhCommands {
1126

1227
private final ReloadServiceManager reloadServiceManager;
28+
private final SessionRegistry sessionRegistry;
29+
private final MessagesFacade messages;
1330

1431
@Inject
15-
public EhCommands(ReloadServiceManager reloadServiceManager) {
32+
public EhCommands(
33+
ReloadServiceManager reloadServiceManager,
34+
SessionRegistry sessionRegistry,
35+
MessagesFacade messages
36+
) {
1637
this.reloadServiceManager = reloadServiceManager;
38+
this.sessionRegistry = sessionRegistry;
39+
this.messages = messages;
40+
}
41+
42+
@Suggestions("online-players")
43+
public List<String> suggestOnlinePlayers(CommandContext<?> ctx, CommandInput input) {
44+
String token = input.lastRemainingToken().toLowerCase();
45+
return Bukkit.getOnlinePlayers().stream()
46+
.map(Player::getName)
47+
.filter(name -> name.toLowerCase().startsWith(token))
48+
.collect(Collectors.toList());
1749
}
1850

1951
@Command("eh reload")
20-
public void reloadCommand() {
21-
reloadServiceManager.reload();
52+
@Permission("extendedhorizons.reload")
53+
public void reloadCommand(Source source) {
54+
this.reloadServiceManager.reload();
55+
source.source().sendMessage(this.messages.reloadSuccess());
56+
}
57+
58+
@Command("eh setme <distance>")
59+
@Permission("extendedhorizons.setme")
60+
public void setMeCommand(Source source, @Argument("distance") int distance) {
61+
if (!(source.source() instanceof Player sender)) {
62+
return;
63+
}
64+
int clamped = Math.clamp(distance, 2, ChunkPlannerService.MAX_CHUNK_DISTANCE);
65+
PlayerSession session = this.sessionRegistry.ensureFor(sender, false);
66+
session.playerOverrideDistance(clamped);
67+
source.source().sendMessage(this.messages.setmeSuccess(clamped));
68+
}
69+
70+
@Command("eh set <player> <distance>")
71+
@Permission("extendedhorizons.set")
72+
public void setPlayerCommand(
73+
Source source,
74+
@Argument(value = "player", suggestions = "online-players") String playerName,
75+
@Argument("distance") int distance
76+
) {
77+
Player target = Bukkit.getPlayerExact(playerName);
78+
if (target == null) {
79+
return;
80+
}
81+
int clamped = Math.clamp(distance, 2, ChunkPlannerService.MAX_CHUNK_DISTANCE);
82+
PlayerSession session = this.sessionRegistry.ensureFor(target, false);
83+
session.playerOverrideDistance(clamped);
84+
source.source().sendMessage(this.messages.setSuccess(target.getName(), clamped));
85+
target.sendMessage(this.messages.setNotify(clamped));
86+
}
87+
88+
@Command("eh reset [player]")
89+
@Permission("extendedhorizons.reset")
90+
public void resetCommand(
91+
Source source,
92+
@Argument(value = "player", suggestions = "online-players") String playerName
93+
) {
94+
if (playerName != null) {
95+
Player target = Bukkit.getPlayerExact(playerName);
96+
if (target == null) {
97+
return;
98+
}
99+
PlayerSession session = this.sessionRegistry.get(target.getUniqueId());
100+
if (session != null) {
101+
session.resetPlayerOverrideDistance();
102+
}
103+
source.source().sendMessage(this.messages.resetSuccess(target.getName()));
104+
} else if (source.source() instanceof Player player) {
105+
PlayerSession session = this.sessionRegistry.get(player.getUniqueId());
106+
if (session != null) {
107+
session.resetPlayerOverrideDistance();
108+
}
109+
player.sendMessage(this.messages.resetSelfSuccess());
110+
} else {
111+
source.source().sendMessage(this.messages.resetConsoleError());
112+
}
22113
}
23-
24114
}

0 commit comments

Comments
 (0)