mirror of
https://github.com/Samsuik/Sakura.git
synced 2026-01-04 15:31:43 +00:00
clean up sakura commands
This commit is contained in:
@@ -41,10 +41,10 @@ index 83a726bcf8b7dce73a361b0d79dbd63a0afc7a12..6efe0ed8600e3703bd83d46545bba887
|
||||
}
|
||||
diff --git a/src/main/java/me/samsuik/sakura/command/BaseSubCommand.java b/src/main/java/me/samsuik/sakura/command/BaseSubCommand.java
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..9b5af05f7a4593eb44f36fff90d94e98d6999c7f
|
||||
index 0000000000000000000000000000000000000000..87d8fd1fe60dfea4ce697048a34d9bb888cb6d4b
|
||||
--- /dev/null
|
||||
+++ b/src/main/java/me/samsuik/sakura/command/BaseSubCommand.java
|
||||
@@ -0,0 +1,47 @@
|
||||
@@ -0,0 +1,45 @@
|
||||
+package me.samsuik.sakura.command;
|
||||
+
|
||||
+import org.bukkit.command.Command;
|
||||
@@ -58,7 +58,6 @@ index 0000000000000000000000000000000000000000..9b5af05f7a4593eb44f36fff90d94e98
|
||||
+
|
||||
+@DefaultQualifier(NonNull.class)
|
||||
+public abstract class BaseSubCommand extends Command {
|
||||
+
|
||||
+ public BaseSubCommand(String name) {
|
||||
+ super(name);
|
||||
+ this.description = "Sakura Command " + name;
|
||||
@@ -72,8 +71,8 @@ index 0000000000000000000000000000000000000000..9b5af05f7a4593eb44f36fff90d94e98
|
||||
+ @Override
|
||||
+ @Deprecated
|
||||
+ public final boolean execute(CommandSender sender, String label, String[] args) {
|
||||
+ if (testPermission(sender)) {
|
||||
+ execute(sender, args);
|
||||
+ if (this.testPermission(sender)) {
|
||||
+ this.execute(sender, args);
|
||||
+ }
|
||||
+
|
||||
+ return true;
|
||||
@@ -82,29 +81,27 @@ index 0000000000000000000000000000000000000000..9b5af05f7a4593eb44f36fff90d94e98
|
||||
+ @Override
|
||||
+ @NotNull
|
||||
+ public List<String> tabComplete(CommandSender sender, String alias, String[] args) throws IllegalArgumentException {
|
||||
+ var completions = new ArrayList<String>(0);
|
||||
+ List<String> completions = new ArrayList<>(0);
|
||||
+
|
||||
+ if (testPermissionSilent(sender)) {
|
||||
+ tabComplete(completions, args);
|
||||
+ if (this.testPermissionSilent(sender)) {
|
||||
+ this.tabComplete(completions, args);
|
||||
+ }
|
||||
+
|
||||
+ return completions;
|
||||
+ }
|
||||
+
|
||||
+}
|
||||
diff --git a/src/main/java/me/samsuik/sakura/command/SakuraCommand.java b/src/main/java/me/samsuik/sakura/command/SakuraCommand.java
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..2b145614bf189ae56622016436bfefd63f5271eb
|
||||
index 0000000000000000000000000000000000000000..18c74437018ff4c0935242f6002083edb1282a01
|
||||
--- /dev/null
|
||||
+++ b/src/main/java/me/samsuik/sakura/command/SakuraCommand.java
|
||||
@@ -0,0 +1,93 @@
|
||||
@@ -0,0 +1,86 @@
|
||||
+package me.samsuik.sakura.command;
|
||||
+
|
||||
+import net.kyori.adventure.text.Component;
|
||||
+import net.kyori.adventure.text.format.NamedTextColor;
|
||||
+import net.kyori.adventure.text.minimessage.MiniMessage;
|
||||
+import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
|
||||
+import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
|
||||
+import net.minecraft.server.MinecraftServer;
|
||||
+import org.bukkit.command.Command;
|
||||
+import org.bukkit.command.CommandSender;
|
||||
@@ -112,15 +109,14 @@ index 0000000000000000000000000000000000000000..2b145614bf189ae56622016436bfefd6
|
||||
+import org.checkerframework.framework.qual.DefaultQualifier;
|
||||
+import org.jetbrains.annotations.NotNull;
|
||||
+
|
||||
+import javax.annotation.Nullable;
|
||||
+import java.util.ArrayList;
|
||||
+import java.util.Arrays;
|
||||
+import java.util.Collections;
|
||||
+import java.util.List;
|
||||
+import java.util.stream.Stream;
|
||||
+
|
||||
+@DefaultQualifier(NonNull.class)
|
||||
+public final class SakuraCommand extends Command {
|
||||
+
|
||||
+ private static final Component INFORMATION_MESSAGE = MiniMessage.miniMessage().deserialize("""
|
||||
+ <dark_purple>.</dark_purple>
|
||||
+ <dark_purple>| <white>This is the main command for <gradient:red:light_purple:0.5>Sakura</gradient>.
|
||||
@@ -131,7 +127,6 @@ index 0000000000000000000000000000000000000000..2b145614bf189ae56622016436bfefd6
|
||||
+
|
||||
+ public SakuraCommand(String name) {
|
||||
+ super(name);
|
||||
+
|
||||
+ this.description = "";
|
||||
+ this.usageMessage = "/sakura";
|
||||
+ this.setPermission("bukkit.command.sakura");
|
||||
@@ -140,37 +135,34 @@ index 0000000000000000000000000000000000000000..2b145614bf189ae56622016436bfefd6
|
||||
+ @Override
|
||||
+ public boolean execute(CommandSender sender, String commandLabel, String[] args) {
|
||||
+ if (args.length > 0) {
|
||||
+ var commands = new ArrayList<>(SakuraCommands.COMMANDS.values());
|
||||
+ List<Command> commands = new ArrayList<>(SakuraCommands.COMMANDS.values());
|
||||
+
|
||||
+ // This part is copied from the VersionCommand SubCommand in paper
|
||||
+ @Nullable
|
||||
+ var internalVersion = MinecraftServer.getServer().server.getCommandMap().getCommand("version");
|
||||
+ Command internalVersion = MinecraftServer.getServer().server.getCommandMap().getCommand("version");
|
||||
+ if (internalVersion != null) {
|
||||
+ commands.add(internalVersion);
|
||||
+ }
|
||||
+
|
||||
+ for (var base : commands) {
|
||||
+ for (Command base : commands) {
|
||||
+ if (base.getName().equalsIgnoreCase(args[0])) {
|
||||
+ return base.execute(sender, commandLabel, Arrays.copyOfRange(args, 1, args.length));
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ sendHelpMessage(sender);
|
||||
+ this.sendHelpMessage(sender);
|
||||
+ return false;
|
||||
+ }
|
||||
+
|
||||
+ private void sendHelpMessage(CommandSender sender) {
|
||||
+ sender.sendMessage(INFORMATION_MESSAGE);
|
||||
+
|
||||
+ var uniqueCommands = SakuraCommands.COMMANDS.values()
|
||||
+ Stream<Command> uniqueCommands = SakuraCommands.COMMANDS.values()
|
||||
+ .stream()
|
||||
+ .filter(command -> command != this);
|
||||
+
|
||||
+ uniqueCommands.forEach((command) -> {
|
||||
+ sender.sendMessage(MiniMessage.miniMessage().deserialize(COMMAND_MSG,
|
||||
+ Placeholder.unparsed("command", command.getName()))
|
||||
+ );
|
||||
+ sender.sendRichMessage(COMMAND_MSG, Placeholder.unparsed("command", command.getName()));
|
||||
+ });
|
||||
+
|
||||
+ sender.sendMessage(Component.text("'", NamedTextColor.DARK_PURPLE));
|
||||
@@ -179,27 +171,25 @@ index 0000000000000000000000000000000000000000..2b145614bf189ae56622016436bfefd6
|
||||
+ @NotNull
|
||||
+ @Override
|
||||
+ public List<String> tabComplete(CommandSender sender, String alias, String[] args) throws IllegalArgumentException {
|
||||
+ if (!testPermissionSilent(sender)) {
|
||||
+ if (!this.testPermissionSilent(sender)) {
|
||||
+ return Collections.emptyList();
|
||||
+ }
|
||||
+
|
||||
+ return SakuraCommands.COMMANDS.values().stream()
|
||||
+ .filter(command -> command != this) // ahem
|
||||
+ .filter(command -> command != this)
|
||||
+ .map(Command::getName)
|
||||
+ .filter(name -> args.length <= 1 || name.startsWith(args[args.length - 1]))
|
||||
+ .toList();
|
||||
+ }
|
||||
+
|
||||
+}
|
||||
diff --git a/src/main/java/me/samsuik/sakura/command/SakuraCommands.java b/src/main/java/me/samsuik/sakura/command/SakuraCommands.java
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..3b08454cf7411d12bb33225df59800bd73312123
|
||||
index 0000000000000000000000000000000000000000..3e85c19db0655034c203eaab8d2e6b5504da5da8
|
||||
--- /dev/null
|
||||
+++ b/src/main/java/me/samsuik/sakura/command/SakuraCommands.java
|
||||
@@ -0,0 +1,26 @@
|
||||
@@ -0,0 +1,22 @@
|
||||
+package me.samsuik.sakura.command;
|
||||
+
|
||||
+import io.papermc.paper.command.PaperPluginsCommand;
|
||||
+import me.samsuik.sakura.command.subcommands.ConfigCommand;
|
||||
+import net.minecraft.server.MinecraftServer;
|
||||
+import org.bukkit.command.Command;
|
||||
@@ -208,27 +198,24 @@ index 0000000000000000000000000000000000000000..3b08454cf7411d12bb33225df59800bd
|
||||
+import java.util.Map;
|
||||
+
|
||||
+public final class SakuraCommands {
|
||||
+
|
||||
+ static final Map<String, Command> COMMANDS = new HashMap<>();
|
||||
+ static {
|
||||
+ COMMANDS.put("sakura", new SakuraCommand("sakura"));
|
||||
+ COMMANDS.put("config", new ConfigCommand("config"));
|
||||
+ }
|
||||
+
|
||||
+ public static void registerCommands(final MinecraftServer server) {
|
||||
+ public static void registerCommands(MinecraftServer server) {
|
||||
+ COMMANDS.forEach((s, command) -> {
|
||||
+ server.server.getCommandMap().register(s, "sakura", command);
|
||||
+ });
|
||||
+ server.server.getCommandMap().register("bukkit", new PaperPluginsCommand());
|
||||
+ }
|
||||
+
|
||||
+}
|
||||
diff --git a/src/main/java/me/samsuik/sakura/command/subcommands/ConfigCommand.java b/src/main/java/me/samsuik/sakura/command/subcommands/ConfigCommand.java
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..75febc3f40910a27a9fc651dac9697da48338cc1
|
||||
index 0000000000000000000000000000000000000000..c41f188fdaf510a127771b1782e957058b8cc355
|
||||
--- /dev/null
|
||||
+++ b/src/main/java/me/samsuik/sakura/command/subcommands/ConfigCommand.java
|
||||
@@ -0,0 +1,45 @@
|
||||
@@ -0,0 +1,33 @@
|
||||
+package me.samsuik.sakura.command.subcommands;
|
||||
+
|
||||
+import me.samsuik.sakura.command.BaseSubCommand;
|
||||
@@ -238,10 +225,6 @@ index 0000000000000000000000000000000000000000..75febc3f40910a27a9fc651dac9697da
|
||||
+import org.bukkit.craftbukkit.CraftServer;
|
||||
+import org.checkerframework.checker.nullness.qual.NonNull;
|
||||
+import org.checkerframework.framework.qual.DefaultQualifier;
|
||||
+import org.jetbrains.annotations.NotNull;
|
||||
+
|
||||
+import java.util.Collections;
|
||||
+import java.util.List;
|
||||
+
|
||||
+import static net.kyori.adventure.text.Component.text;
|
||||
+import static net.kyori.adventure.text.format.NamedTextColor.GREEN;
|
||||
@@ -249,7 +232,6 @@ index 0000000000000000000000000000000000000000..75febc3f40910a27a9fc651dac9697da
|
||||
+
|
||||
+@DefaultQualifier(NonNull.class)
|
||||
+public final class ConfigCommand extends BaseSubCommand {
|
||||
+
|
||||
+ public ConfigCommand(String name) {
|
||||
+ super(name);
|
||||
+ this.description = "Command for reloading the sakura configuration file";
|
||||
@@ -266,13 +248,6 @@ index 0000000000000000000000000000000000000000..75febc3f40910a27a9fc651dac9697da
|
||||
+
|
||||
+ Command.broadcastCommandMessage(sender, text("Sakura config reload complete.", GREEN));
|
||||
+ }
|
||||
+
|
||||
+ @NotNull
|
||||
+ @Override
|
||||
+ public List<String> tabComplete(CommandSender sender, String alias, String[] args) throws IllegalArgumentException {
|
||||
+ return Collections.emptyList();
|
||||
+ }
|
||||
+
|
||||
+}
|
||||
diff --git a/src/main/java/me/samsuik/sakura/configuration/GlobalConfiguration.java b/src/main/java/me/samsuik/sakura/configuration/GlobalConfiguration.java
|
||||
new file mode 100644
|
||||
@@ -1121,7 +1096,7 @@ index e2a0487089eb5a7bdc1433e4c75f69d8e9f9d5f9..7da2fc17f6e7bf888ef0c2a8eba0fc3b
|
||||
this.world = new CraftWorld((ServerLevel) this, gen, biomeProvider, env);
|
||||
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
||||
index c8b82bc41f2042bb4b067f06265a3a22e51f7629..e95957d6e6ceb29851e1e52226534dd058ca1409 100644
|
||||
index c8b82bc41f2042bb4b067f06265a3a22e51f7629..bc85cb49643f053f567a36174a8b8f6809559061 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
||||
@@ -1070,6 +1070,7 @@ public final class CraftServer implements Server {
|
||||
@@ -1136,7 +1111,7 @@ index c8b82bc41f2042bb4b067f06265a3a22e51f7629..e95957d6e6ceb29851e1e52226534dd0
|
||||
this.reloadData();
|
||||
org.spigotmc.SpigotConfig.registerCommands(); // Spigot
|
||||
io.papermc.paper.command.PaperCommands.registerCommands(this.console); // Paper
|
||||
+ me.samsuik.sakura.command.SakuraCommands.registerCommands(this.console); // Sakura
|
||||
+ me.samsuik.sakura.command.SakuraCommands.registerCommands(this.console); // Sakura - sakura configuration files
|
||||
this.spark.registerCommandBeforePlugins(this); // Paper - spark
|
||||
this.overrideAllCommandBlockCommands = this.commandsConfiguration.getStringList("command-block-overrides").contains("*");
|
||||
this.ignoreVanillaPermissions = this.commandsConfiguration.getBoolean("ignore-vanilla-permissions");
|
||||
|
||||
Reference in New Issue
Block a user