Skip to content

Commit 460d82d

Browse files
committed
Rework commands
1 parent 8877144 commit 460d82d

11 files changed

Lines changed: 155 additions & 100 deletions

File tree

Common/build.gradle.kts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ dependencies {
1616
compileOnly("org.apache.logging.log4j:log4j-api:2.25.1")
1717
compileOnly("it.unimi.dsi:fastutil:8.5.16")
1818
implementation("org.bstats:bstats-bukkit:3.1.0")
19-
api("co.aikar:acf-paper:0.5.1-SNAPSHOT") // TODO: Remove
2019
implementation("com.tcoded:FoliaLib:0.5.1")
2120
implementation("com.github.thatsmusic99:ConfigurationMaster-API:v2.0.0-rc.3")
2221

Common/src/main/java/systems/kscott/randomspawnplus/RandomSpawnPlus.java

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,23 @@
11
package systems.kscott.randomspawnplus;
22

3-
import co.aikar.commands.PaperCommandManager;
43
import com.tcoded.folialib.FoliaLib;
54
import net.kyori.adventure.platform.bukkit.BukkitAudiences;
65
import org.apache.logging.log4j.LogManager;
76
import org.apache.logging.log4j.Logger;
87
import org.jetbrains.annotations.NotNull;
9-
import systems.kscott.randomspawnplus.commands.CommandRSP;
10-
import systems.kscott.randomspawnplus.commands.CommandWild;
8+
import systems.kscott.randomspawnplus.commands.CommandManager;
9+
import systems.kscott.randomspawnplus.commands.TabCompleter;
1110
import systems.kscott.randomspawnplus.config.Config;
1211
import systems.kscott.randomspawnplus.hooks.HookInstance;
1312
import systems.kscott.randomspawnplus.listeners.OnDeath;
1413
import systems.kscott.randomspawnplus.listeners.OnFirstJoin;
1514
import systems.kscott.randomspawnplus.listeners.OnPreLogin;
16-
import systems.kscott.randomspawnplus.spawn.SpawnFinder;
1715
import systems.kscott.randomspawnplus.spawn.SpawnGenerator;
1816
import systems.kscott.randomspawnplus.util.PlatformUtil;
1917
import org.bukkit.plugin.java.JavaPlugin;
2018

19+
import java.io.IOException;
20+
2121
public final class RandomSpawnPlus extends JavaPlugin {
2222

2323
public static final Logger LOGGER = LogManager.getLogger(RandomSpawnPlus.class.getSimpleName());
@@ -49,7 +49,6 @@ public void onEnable() {
4949

5050
PlatformUtil.init();
5151
SpawnGenerator.init();
52-
//SpawnCacher.initialize();
5352
}
5453

5554
@Override
@@ -75,12 +74,10 @@ private void registerEvents() {
7574
}
7675

7776
private void registerCommands() {
78-
PaperCommandManager manager = new PaperCommandManager(this);
79-
manager.registerCommand(new CommandRSP());
80-
81-
if (Config.getGlobalConfig().wildEnabled) {
82-
manager.registerCommand(new CommandWild());
83-
}
77+
CommandManager manager = new CommandManager();
78+
manager.initSubCommands();
79+
getCommand("rsp").setExecutor(manager);
80+
getCommand("rsp").setTabCompleter(new TabCompleter());
8481
}
8582

8683
public static RandomSpawnPlus getInstance() {

Common/src/main/java/systems/kscott/randomspawnplus/commands/CommandManager.java

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
package systems.kscott.randomspawnplus.commands;
22

3-
import dev.mrshawn.deathmessages.config.Messages;
4-
import dev.mrshawn.deathmessages.utils.Util;
53
import org.jetbrains.annotations.NotNull;
4+
import systems.kscott.randomspawnplus.commands.subcommands.CommandHelp;
5+
import systems.kscott.randomspawnplus.commands.subcommands.CommandReload;
6+
import systems.kscott.randomspawnplus.commands.subcommands.CommandWild;
67
import org.bukkit.command.Command;
78
import org.bukkit.command.CommandExecutor;
89
import org.bukkit.command.CommandSender;
@@ -12,18 +13,13 @@
1213

1314
public class CommandManager implements CommandExecutor {
1415

15-
private List<DeathMessagesCommand> commands;
16+
private List<RSPCommand> commands;
1617

1718
public void initSubCommands() {
1819
commands = Arrays.asList(
19-
new CommandBackup(),
20-
new CommandBlacklist(),
21-
new CommandDebug(),
22-
new CommandDiscordLog(),
20+
new CommandHelp(),
2321
new CommandReload(),
24-
new CommandRestore(),
25-
new CommandToggle(),
26-
new CommandVersion()
22+
new CommandWild()
2723
);
2824
}
2925

@@ -36,7 +32,7 @@ public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command
3632
.forEach(msg -> sender.sendMessage(msg
3733
.replaceText(Util.PREFIX)));
3834
} else {
39-
DeathMessagesCommand cmd = get(args[0]);
35+
RSPCommand cmd = get(args[0]);
4036
if (cmd != null) {
4137
String[] trimmedArgs = Arrays.copyOfRange(args, 1, args.length);
4238
cmd.onCommand(sender, trimmedArgs);
@@ -51,8 +47,8 @@ public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command
5147
return false;
5248
}
5349

54-
private DeathMessagesCommand get(String name) {
55-
for (DeathMessagesCommand cmd : commands) {
50+
private RSPCommand get(String name) {
51+
for (RSPCommand cmd : commands) {
5652
if (cmd.command().equalsIgnoreCase(name))
5753
return cmd;
5854
}

Common/src/main/java/systems/kscott/randomspawnplus/commands/CommandRSP.java

Lines changed: 0 additions & 46 deletions
This file was deleted.
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package systems.kscott.randomspawnplus.commands;
2+
3+
import org.bukkit.command.CommandSender;
4+
5+
public abstract class RSPCommand {
6+
7+
public abstract String command();
8+
9+
public abstract void onCommand(CommandSender sender, String[] args);
10+
}
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package systems.kscott.randomspawnplus.commands;
2+
3+
import org.jetbrains.annotations.NotNull;
4+
import org.bukkit.command.Command;
5+
import org.bukkit.command.CommandSender;
6+
7+
import java.util.ArrayList;
8+
import java.util.Arrays;
9+
import java.util.List;
10+
11+
public class TabCompleter implements org.bukkit.command.TabCompleter {
12+
13+
private final List<String> tabCompletion = new ArrayList<>(Arrays.asList(
14+
"help",
15+
"reload",
16+
"wild"
17+
));
18+
19+
@Override
20+
public List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String alias, String[] args) {
21+
if (args.length == 1) {
22+
List<String> completions = new ArrayList<>();
23+
24+
for (String completion : tabCompletion) {
25+
final String arg = args[0];
26+
if (completion.startsWith(arg) && sender.hasPermission("rsp.command." + arg)) {
27+
completions.add(completion);
28+
}
29+
}
30+
31+
return completions;
32+
}
33+
34+
return null;
35+
}
36+
}
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package systems.kscott.randomspawnplus.commands.subcommands;
2+
3+
import systems.kscott.randomspawnplus.RandomSpawnPlus;
4+
import systems.kscott.randomspawnplus.commands.RSPCommand;
5+
import systems.kscott.randomspawnplus.spawn.SpawnData;
6+
import systems.kscott.randomspawnplus.util.MessageUtil;
7+
import systems.kscott.randomspawnplus.util.Permission;
8+
import org.bukkit.command.CommandSender;
9+
10+
public class CommandHelp extends RSPCommand {
11+
12+
@Override
13+
public String command() {
14+
return "help";
15+
}
16+
17+
@Override
18+
public void onCommand(CommandSender sender, String[] args) {
19+
if (!sender.hasPermission(Permission.RSP_RANDOMSPAWN.getPerm())) {
20+
sender.sendMessage(Util.formatMessage("Commands.DeathMessages.No-Permission"));
21+
return;
22+
}
23+
if (args.length == 0) {
24+
sender.sendMessage(Util.formatMessage("Commands.DeathMessages.Sub-Commands.Blacklist.Help"));
25+
return;
26+
}
27+
28+
// TODO: Remove debug
29+
MessageUtil.send(sender, String.valueOf(SpawnData.isAllSpawnRangeChunksGenerated()));
30+
MessageUtil.send(sender, String.valueOf(SpawnData.getPendingGenerateChunksList().size()));
31+
32+
MessageUtil.send(sender,
33+
"&8[&3RandomSpawnPlus&8] &7Running &bv" + RandomSpawnPlus.getInstance().getDescription().getVersion() + "&7, made with love &a:^)",
34+
"",
35+
"&b/rsp &8- &7The help menu.",
36+
"&b/rsp reload &8- &7Reload the plugin configuration.",
37+
"&b/wild &8- &7Randomly teleport yourself.",
38+
"&b/wild <other> &8- &7Randomly teleport another player.",
39+
"&7Need help? Check out &bhttps://github.com/Winds-Studio/RandomSpawnPlus&7."
40+
);
41+
}
42+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package systems.kscott.randomspawnplus.commands.subcommands;
2+
3+
import systems.kscott.randomspawnplus.commands.RSPCommand;
4+
import systems.kscott.randomspawnplus.config.Config;
5+
import systems.kscott.randomspawnplus.util.MessageUtil;
6+
import org.bukkit.command.CommandSender;
7+
8+
public class CommandReload extends RSPCommand {
9+
10+
@Override
11+
public String command() {
12+
return "reload";
13+
}
14+
15+
@Override
16+
public void onCommand(CommandSender sender, String[] args) {
17+
Config.getGlobalConfig().reload();
18+
Config.getGlobalConfig().reload();
19+
Config.getGlobalConfig().reload();
20+
MessageUtil.send(sender, "&8[&3RandomSpawnPlus&8] &7Reloaded &bconfig.yml&7, &blang.yml&7, and &bspawns.yml&7.");
21+
}
22+
}

Common/src/main/java/systems/kscott/randomspawnplus/commands/CommandWild.java renamed to Common/src/main/java/systems/kscott/randomspawnplus/commands/subcommands/CommandWild.java

Lines changed: 26 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,8 @@
1-
package systems.kscott.randomspawnplus.commands;
1+
package systems.kscott.randomspawnplus.commands.subcommands;
22

3-
import co.aikar.commands.BaseCommand;
4-
import co.aikar.commands.annotation.CommandAlias;
5-
import co.aikar.commands.annotation.CommandPermission;
6-
import co.aikar.commands.annotation.Default;
7-
import co.aikar.commands.annotation.Description;
83
import com.earth2me.essentials.User;
94
import systems.kscott.randomspawnplus.RandomSpawnPlus;
5+
import systems.kscott.randomspawnplus.commands.RSPCommand;
106
import systems.kscott.randomspawnplus.config.Config;
117
import systems.kscott.randomspawnplus.events.RandomSpawnEvent;
128
import systems.kscott.randomspawnplus.events.SpawnType;
@@ -20,20 +16,26 @@
2016

2117
import java.time.Instant;
2218

23-
@CommandAlias("wild|rtp")
24-
@Description("Teleport to a random location")
25-
public class CommandWild extends BaseCommand {
19+
public class CommandWild extends RSPCommand {
2620

27-
@Default
28-
@CommandPermission("randomspawnplus.wild")
29-
public void wild(CommandSender sender) {
30-
/*
31-
if (!(sender instanceof Player)) {
21+
@Override
22+
public String command() {
23+
return "wild";
24+
}
25+
26+
@Override
27+
public void onCommand(CommandSender sender, String[] args) {
28+
if (args.length == 1) {
29+
return;
30+
}
31+
}
32+
33+
private static void doWild(CommandSender sender) {
34+
if (!(sender instanceof Player player)) {
3235
MessageUtil.send(sender, Config.getLangConfig().playerOnly);
3336
return;
3437
}
3538

36-
Player player = (Player) sender;
3739
long cooldown = Util.getCooldown(player);
3840

3941
if (player.hasPermission("randomspawnplus.wild.bypasscooldown")) {
@@ -62,8 +64,9 @@ public void wild(CommandSender sender) {
6264
Location location;
6365

6466
try {
65-
location = SpawnFinder.getInstance().findSpawn(true);
67+
location = SpawnFinder.getRandomSpawn();
6668
} catch (Exception e) {
69+
// TODO: Refactor here, no need to use try/catch to handle failed finding spawn
6770
MessageUtil.send(player, Config.getLangConfig().errorOnFindingSpawn);
6871
return;
6972
}
@@ -75,13 +78,16 @@ public void wild(CommandSender sender) {
7578

7679
MessageUtil.send(player, message);
7780

81+
// TODO: Add essx and other plugin support, like HuskHomes
82+
/*
7883
if (Config.getGlobalConfig().setHomeOnWild && RandomSpawnPlus.getHooks().getEssentials() != null) {
7984
User user = RandomSpawnPlus.getHooks().getEssentials().getUser(player);
8085
if (!user.hasHome()) {
8186
user.setHome("home", location);
8287
user.save();
8388
}
8489
}
90+
*/
8591

8692
RandomSpawnEvent randomSpawnEvent = new RandomSpawnEvent(location, player, SpawnType.WILD_COMMAND);
8793

@@ -90,10 +96,8 @@ public void wild(CommandSender sender) {
9096
Util.addCooldown(player);
9197
}
9298

93-
@Default
94-
@CommandPermission("randomspawnplus.wild.others")
95-
public void wildOther(CommandSender sender, String otherPlayerString) {
96-
Player otherPlayer = Bukkit.getPlayer(otherPlayerString);
99+
private static void doWildOther(CommandSender sender, String playerName) {
100+
Player otherPlayer = Bukkit.getPlayer(playerName);
97101

98102
if (otherPlayer == null) {
99103
MessageUtil.send(sender, Config.getLangConfig().invalidPlayer);
@@ -103,8 +107,9 @@ public void wildOther(CommandSender sender, String otherPlayerString) {
103107
Location location;
104108

105109
try {
106-
location = SpawnFinder.getInstance().findSpawn(true);
110+
location = SpawnFinder.getRandomSpawn();
107111
} catch (Exception e) {
112+
// TODO: Refactor here, no need to use try/catch to handle failed finding spawn
108113
MessageUtil.send(otherPlayer, Config.getLangConfig().errorOnFindingSpawn);
109114
return;
110115
}
@@ -129,6 +134,5 @@ public void wildOther(CommandSender sender, String otherPlayerString) {
129134
}
130135

131136
RandomSpawnPlus.getInstance().foliaLib.getScheduler().teleportAsync(otherPlayer, location.add(0.5, 0, 0.5));
132-
*/
133137
}
134138
}

Common/src/main/resources/plugin.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,12 @@ description: A comprehensive random spawning plugin for modern Minecraft version
1414

1515
commands:
1616
wild:
17-
description: Get a wild spawn
17+
description: Teleport to a random location
1818
usage: /wild [player]
1919
rsp:
2020
description: Main plugin command
2121
usage: /rsp
22+
aliases: [randomspawnplus]
2223

2324
permissions:
2425
rsp.randomspawn:

0 commit comments

Comments
 (0)