9
0
mirror of https://github.com/Samsuik/Sakura.git synced 2025-12-22 16:29:16 +00:00

clean up sakura commands

This commit is contained in:
Samsuik
2024-07-27 00:40:26 +01:00
parent c2899aebaf
commit b2777a7c19
3 changed files with 52 additions and 85 deletions

View File

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

View File

@@ -5,12 +5,12 @@ Subject: [PATCH] Visibility API and Command
diff --git a/src/main/java/me/samsuik/sakura/command/SakuraCommands.java b/src/main/java/me/samsuik/sakura/command/SakuraCommands.java diff --git a/src/main/java/me/samsuik/sakura/command/SakuraCommands.java b/src/main/java/me/samsuik/sakura/command/SakuraCommands.java
index 3b08454cf7411d12bb33225df59800bd73312123..22676ec7a7ae9494b198e5e65e6be6d32e0feb85 100644 index 3e85c19db0655034c203eaab8d2e6b5504da5da8..9b550fad76a45fb6ea8d07f75c2ff901d56ae514 100644
--- a/src/main/java/me/samsuik/sakura/command/SakuraCommands.java --- a/src/main/java/me/samsuik/sakura/command/SakuraCommands.java
+++ b/src/main/java/me/samsuik/sakura/command/SakuraCommands.java +++ b/src/main/java/me/samsuik/sakura/command/SakuraCommands.java
@@ -2,6 +2,9 @@ package me.samsuik.sakura.command; @@ -1,6 +1,9 @@
package me.samsuik.sakura.command;
import io.papermc.paper.command.PaperPluginsCommand;
import me.samsuik.sakura.command.subcommands.ConfigCommand; import me.samsuik.sakura.command.subcommands.ConfigCommand;
+import me.samsuik.sakura.command.subcommands.FPSCommand; +import me.samsuik.sakura.command.subcommands.FPSCommand;
+import me.samsuik.sakura.command.subcommands.VisualCommand; +import me.samsuik.sakura.command.subcommands.VisualCommand;
@@ -18,7 +18,7 @@ index 3b08454cf7411d12bb33225df59800bd73312123..22676ec7a7ae9494b198e5e65e6be6d3
import net.minecraft.server.MinecraftServer; import net.minecraft.server.MinecraftServer;
import org.bukkit.command.Command; import org.bukkit.command.Command;
@@ -14,6 +17,10 @@ public final class SakuraCommands { @@ -12,6 +15,10 @@ public final class SakuraCommands {
static { static {
COMMANDS.put("sakura", new SakuraCommand("sakura")); COMMANDS.put("sakura", new SakuraCommand("sakura"));
COMMANDS.put("config", new ConfigCommand("config")); COMMANDS.put("config", new ConfigCommand("config"));
@@ -28,13 +28,13 @@ index 3b08454cf7411d12bb33225df59800bd73312123..22676ec7a7ae9494b198e5e65e6be6d3
+ COMMANDS.put("minimal", new VisualCommand(Visibility.Setting.MINIMAL, "minimaltnt", "tntlag")); + COMMANDS.put("minimal", new VisualCommand(Visibility.Setting.MINIMAL, "minimaltnt", "tntlag"));
} }
public static void registerCommands(final MinecraftServer server) { public static void registerCommands(MinecraftServer server) {
diff --git a/src/main/java/me/samsuik/sakura/command/subcommands/FPSCommand.java b/src/main/java/me/samsuik/sakura/command/subcommands/FPSCommand.java diff --git a/src/main/java/me/samsuik/sakura/command/subcommands/FPSCommand.java b/src/main/java/me/samsuik/sakura/command/subcommands/FPSCommand.java
new file mode 100644 new file mode 100644
index 0000000000000000000000000000000000000000..aa5ddf696b09226a0bd3d967d2ac2b11fc2deb32 index 0000000000000000000000000000000000000000..65f7f7dee78e352bdc88ff42714d10585aa25e21
--- /dev/null --- /dev/null
+++ b/src/main/java/me/samsuik/sakura/command/subcommands/FPSCommand.java +++ b/src/main/java/me/samsuik/sakura/command/subcommands/FPSCommand.java
@@ -0,0 +1,26 @@ @@ -0,0 +1,24 @@
+package me.samsuik.sakura.command.subcommands; +package me.samsuik.sakura.command.subcommands;
+ +
+import me.samsuik.sakura.command.BaseSubCommand; +import me.samsuik.sakura.command.BaseSubCommand;
@@ -46,8 +46,7 @@ index 0000000000000000000000000000000000000000..aa5ddf696b09226a0bd3d967d2ac2b11
+ +
+@DefaultQualifier(NonNull.class) +@DefaultQualifier(NonNull.class)
+public final class FPSCommand extends BaseSubCommand { +public final class FPSCommand extends BaseSubCommand {
+ + private final VisibilityGUI gui = new VisibilityGUI();
+ private final VisibilityGUI VISIBILITY_GUI = new VisibilityGUI();
+ +
+ public FPSCommand(String name) { + public FPSCommand(String name) {
+ super(name); + super(name);
@@ -56,17 +55,16 @@ index 0000000000000000000000000000000000000000..aa5ddf696b09226a0bd3d967d2ac2b11
+ @Override + @Override
+ public void execute(CommandSender sender, String[] args) { + public void execute(CommandSender sender, String[] args) {
+ if (sender instanceof Player player) { + if (sender instanceof Player player) {
+ VISIBILITY_GUI.showTo(player); + this.gui.showTo(player);
+ } + }
+ } + }
+
+} +}
diff --git a/src/main/java/me/samsuik/sakura/command/subcommands/VisualCommand.java b/src/main/java/me/samsuik/sakura/command/subcommands/VisualCommand.java diff --git a/src/main/java/me/samsuik/sakura/command/subcommands/VisualCommand.java b/src/main/java/me/samsuik/sakura/command/subcommands/VisualCommand.java
new file mode 100644 new file mode 100644
index 0000000000000000000000000000000000000000..148a583279333eeb3e5db16652623082cd5e0e60 index 0000000000000000000000000000000000000000..edb3733a15687fadbf25e6f69274fab6b91508c3
--- /dev/null --- /dev/null
+++ b/src/main/java/me/samsuik/sakura/command/subcommands/VisualCommand.java +++ b/src/main/java/me/samsuik/sakura/command/subcommands/VisualCommand.java
@@ -0,0 +1,45 @@ @@ -0,0 +1,43 @@
+package me.samsuik.sakura.command.subcommands; +package me.samsuik.sakura.command.subcommands;
+ +
+import me.samsuik.sakura.command.BaseSubCommand; +import me.samsuik.sakura.command.BaseSubCommand;
@@ -83,7 +81,6 @@ index 0000000000000000000000000000000000000000..148a583279333eeb3e5db16652623082
+ +
+@DefaultQualifier(NonNull.class) +@DefaultQualifier(NonNull.class)
+public final class VisualCommand extends BaseSubCommand { +public final class VisualCommand extends BaseSubCommand {
+
+ private final Visibility.Setting type; + private final Visibility.Setting type;
+ +
+ public VisualCommand(Visibility.Setting type, String... aliases) { + public VisualCommand(Visibility.Setting type, String... aliases) {
@@ -98,19 +95,18 @@ index 0000000000000000000000000000000000000000..148a583279333eeb3e5db16652623082
+ return; + return;
+ } + }
+ +
+ var visibility = player.getVisibility(); + Visibility visibility = player.getVisibility();
+ +
+ // Toggle clicked setting visibility + // Toggle clicked setting visibility
+ visibility.toggle(type); + visibility.toggle(this.type);
+ +
+ // Send message to player + // Send message to player
+ var state = visibility.isEnabled(type) ? "Enabled" : "Disabled"; + String state = visibility.isEnabled(this.type) ? "Enabled" : "Disabled";
+ player.sendMessage(MiniMessage.miniMessage().deserialize(GlobalConfiguration.get().fps.message, + player.sendRichMessage(GlobalConfiguration.get().fps.message,
+ Placeholder.unparsed("name", type.friendlyName()), + Placeholder.unparsed("name", this.type.friendlyName()),
+ Placeholder.unparsed("state", state)) + Placeholder.unparsed("state", state)
+ ); + );
+ } + }
+
+} +}
diff --git a/src/main/java/me/samsuik/sakura/player/visibility/VisibilityGUI.java b/src/main/java/me/samsuik/sakura/player/visibility/VisibilityGUI.java diff --git a/src/main/java/me/samsuik/sakura/player/visibility/VisibilityGUI.java b/src/main/java/me/samsuik/sakura/player/visibility/VisibilityGUI.java
new file mode 100644 new file mode 100644

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] TPS Graph Command
diff --git a/src/main/java/me/samsuik/sakura/command/SakuraCommands.java b/src/main/java/me/samsuik/sakura/command/SakuraCommands.java diff --git a/src/main/java/me/samsuik/sakura/command/SakuraCommands.java b/src/main/java/me/samsuik/sakura/command/SakuraCommands.java
index 22676ec7a7ae9494b198e5e65e6be6d32e0feb85..6edc5195c3b496a12b17b2b9b528505d37ffdb12 100644 index 9b550fad76a45fb6ea8d07f75c2ff901d56ae514..14abbe35a401d4d21a13adcbf6afd836a76cb2bd 100644
--- a/src/main/java/me/samsuik/sakura/command/SakuraCommands.java --- a/src/main/java/me/samsuik/sakura/command/SakuraCommands.java
+++ b/src/main/java/me/samsuik/sakura/command/SakuraCommands.java +++ b/src/main/java/me/samsuik/sakura/command/SakuraCommands.java
@@ -4,6 +4,7 @@ import io.papermc.paper.command.PaperPluginsCommand; @@ -3,6 +3,7 @@ package me.samsuik.sakura.command;
import me.samsuik.sakura.command.subcommands.ConfigCommand; import me.samsuik.sakura.command.subcommands.ConfigCommand;
import me.samsuik.sakura.command.subcommands.FPSCommand; import me.samsuik.sakura.command.subcommands.FPSCommand;
import me.samsuik.sakura.command.subcommands.VisualCommand; import me.samsuik.sakura.command.subcommands.VisualCommand;
@@ -16,20 +16,20 @@ index 22676ec7a7ae9494b198e5e65e6be6d32e0feb85..6edc5195c3b496a12b17b2b9b528505d
import me.samsuik.sakura.player.visibility.Visibility; import me.samsuik.sakura.player.visibility.Visibility;
import net.minecraft.server.MinecraftServer; import net.minecraft.server.MinecraftServer;
import org.bukkit.command.Command; import org.bukkit.command.Command;
@@ -21,6 +22,7 @@ public final class SakuraCommands { @@ -19,6 +20,7 @@ public final class SakuraCommands {
COMMANDS.put("tntvisibility", new VisualCommand(Visibility.Setting.TNT_VISIBILITY, "tnttoggle")); COMMANDS.put("tntvisibility", new VisualCommand(Visibility.Setting.TNT_VISIBILITY, "tnttoggle"));
COMMANDS.put("sandvisibility", new VisualCommand(Visibility.Setting.SAND_VISIBILITY, "sandtoggle")); COMMANDS.put("sandvisibility", new VisualCommand(Visibility.Setting.SAND_VISIBILITY, "sandtoggle"));
COMMANDS.put("minimal", new VisualCommand(Visibility.Setting.MINIMAL, "minimaltnt", "tntlag")); COMMANDS.put("minimal", new VisualCommand(Visibility.Setting.MINIMAL, "minimaltnt", "tntlag"));
+ COMMANDS.put("tps", new TPSCommand("tps")); + COMMANDS.put("tps", new TPSCommand("tps"));
} }
public static void registerCommands(final MinecraftServer server) { public static void registerCommands(MinecraftServer server) {
diff --git a/src/main/java/me/samsuik/sakura/command/subcommands/TPSCommand.java b/src/main/java/me/samsuik/sakura/command/subcommands/TPSCommand.java diff --git a/src/main/java/me/samsuik/sakura/command/subcommands/TPSCommand.java b/src/main/java/me/samsuik/sakura/command/subcommands/TPSCommand.java
new file mode 100644 new file mode 100644
index 0000000000000000000000000000000000000000..7bd4c5696911730170320060c273f3a7f6a610be index 0000000000000000000000000000000000000000..8e4fa072468d1b6dc9686dcd8a646579c7483fc7
--- /dev/null --- /dev/null
+++ b/src/main/java/me/samsuik/sakura/command/subcommands/TPSCommand.java +++ b/src/main/java/me/samsuik/sakura/command/subcommands/TPSCommand.java
@@ -0,0 +1,67 @@ @@ -0,0 +1,63 @@
+package me.samsuik.sakura.command.subcommands; +package me.samsuik.sakura.command.subcommands;
+ +
+import me.samsuik.sakura.command.BaseSubCommand; +import me.samsuik.sakura.command.BaseSubCommand;
@@ -39,15 +39,12 @@ index 0000000000000000000000000000000000000000..7bd4c5696911730170320060c273f3a7
+import net.kyori.adventure.text.format.NamedTextColor; +import net.kyori.adventure.text.format.NamedTextColor;
+import net.kyori.adventure.text.format.TextDecoration; +import net.kyori.adventure.text.format.TextDecoration;
+import net.kyori.adventure.text.minimessage.MiniMessage; +import net.kyori.adventure.text.minimessage.MiniMessage;
+import net.kyori.adventure.text.minimessage.tag.Tag;
+import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder; +import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
+import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
+import net.minecraft.server.MinecraftServer; +import net.minecraft.server.MinecraftServer;
+import net.minecraft.util.Mth; +import net.minecraft.util.Mth;
+import org.bukkit.command.CommandSender; +import org.bukkit.command.CommandSender;
+ +
+public final class TPSCommand extends BaseSubCommand { +public final class TPSCommand extends BaseSubCommand {
+
+ public TPSCommand(String name) { + public TPSCommand(String name) {
+ super(name); + super(name);
+ this.description = "Gets the current ticks per second for the server"; + this.description = "Gets the current ticks per second for the server";
@@ -55,9 +52,9 @@ index 0000000000000000000000000000000000000000..7bd4c5696911730170320060c273f3a7
+ +
+ @Override + @Override
+ public void execute(CommandSender sender, String[] args) { + public void execute(CommandSender sender, String[] args) {
+ var tracking = MinecraftServer.tickTracking; + TickTracking tracking = MinecraftServer.tickTracking;
+ +
+ var average = tracking.averageTps(10) * 1.75; + double average = tracking.averageTps(10) * 1.75;
+ int lines = 10; + int lines = 10;
+ +
+ try { + try {
@@ -69,11 +66,11 @@ index 0000000000000000000000000000000000000000..7bd4c5696911730170320060c273f3a7
+ sender.sendMessage(createInformationComponent(tracking)); + sender.sendMessage(createInformationComponent(tracking));
+ +
+ // Create the graph + // Create the graph
+ var graph = new TPSGraph(tracking, lines, 75, average); + TPSGraph graph = new TPSGraph(tracking, lines, 75, average);
+ graph.map(); + graph.map();
+ +
+ // Send the graph to the user + // Send the graph to the user
+ for (var component : graph.components()) { + for (Component component : graph.components()) {
+ sender.sendMessage(Component.text("| ", NamedTextColor.DARK_PURPLE).append(component)); + sender.sendMessage(Component.text("| ", NamedTextColor.DARK_PURPLE).append(component));
+ } + }
+ +
@@ -95,7 +92,6 @@ index 0000000000000000000000000000000000000000..7bd4c5696911730170320060c273f3a7
+ double alloc = runtime.totalMemory(); + double alloc = runtime.totalMemory();
+ return (alloc - free) / max; + return (alloc - free) / max;
+ } + }
+
+} +}
diff --git a/src/main/java/me/samsuik/sakura/utils/tps/TPSGraph.java b/src/main/java/me/samsuik/sakura/utils/tps/TPSGraph.java diff --git a/src/main/java/me/samsuik/sakura/utils/tps/TPSGraph.java b/src/main/java/me/samsuik/sakura/utils/tps/TPSGraph.java
new file mode 100644 new file mode 100644