Fix entity selectors with tpsbar command

This commit is contained in:
BillyGalbreath
2022-02-15 14:46:21 -06:00
parent d413f6f631
commit b829f5019a
22 changed files with 124 additions and 87 deletions

View File

@@ -17,7 +17,7 @@ index 40735237cc87a476d08f1ffcb1b67ce563091230..3156e7e43a5114aaaa1276b024f4ec45
if (environment.includeIntegrated) {
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index 884a6b777102877ab9af50f6f1df39213b672fe7..e9a7da7f2f9d0661c128ca040e15676c6d72e38b 100644
index 47fbe4f3877756d88d5b914bb43c06d3a136a288..121bc7f3be749a1773ad917023855bae529e6643 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -1126,6 +1126,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -41,7 +41,7 @@ index d58e5357f9cb45d9b5ddeaed4ec76aa388fc34d1..9e83f2dea73461f698185f5ffdb6060e
}
}
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
index dfe547b7a2caa2ecfdddef9b9a49be40d26c5da8..951e45f7b17f6f903c99634177395464a1889c0f 100644
index 36e75498ba1fecfd85e2de1cc5b13e4039575658..58b475f26b1e1e2c76cab0e61125846fbb8b7b79 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
@@ -256,6 +256,7 @@ public class ServerPlayer extends Player {
@@ -83,7 +83,7 @@ index dfe547b7a2caa2ecfdddef9b9a49be40d26c5da8..951e45f7b17f6f903c99634177395464
// Purpur end
}
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
index e2d8631422eb90d050cf1335ab6883ca6fb9c3dc..d6413977a87613a88a155630fa3be9ee9a99d47e 100644
index 1d3692d8d533bb4c3ac18f8837aa44f8704c10be..a088205b5c56595e37ad2e725dcfe31849fe1d96 100644
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
@@ -486,6 +486,7 @@ public abstract class PlayerList {
@@ -104,10 +104,26 @@ index e2d8631422eb90d050cf1335ab6883ca6fb9c3dc..d6413977a87613a88a155630fa3be9ee
entityplayer.awardStat(Stats.LEAVE_GAME);
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
index 92bef71629d982288a9ae928ec815c7cc0af42a9..bc0634f634526ef878dfb12cf3103c226b98bb22 100644
index bd4c8c087b5468e5cde5e2cc017ae6187aef51bb..1eb8d599ebb70313fda467d943888f137b1fa745 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
@@ -212,6 +212,29 @@ public class PurpurConfig {
@@ -176,6 +176,7 @@ public class PurpurConfig {
public static String creditsCommandOutput = "<green>%s has been shown the end credits";
public static String demoCommandOutput = "<green>%s has been shown the demo screen";
public static String pingCommandOutput = "<green>%s's ping is %sms";
+ public static String tpsbarCommandOutput = "<green>Tpsbar toggled <onoff> for <target>";
private static void messages() {
cannotRideMob = getString("settings.messages.cannot-ride-mob", cannotRideMob);
afkBroadcastAway = getString("settings.messages.afk-broadcast-away", afkBroadcastAway);
@@ -185,6 +186,7 @@ public class PurpurConfig {
creditsCommandOutput = getString("settings.messages.credits-command-output", creditsCommandOutput);
demoCommandOutput = getString("settings.messages.demo-command-output", demoCommandOutput);
pingCommandOutput = getString("settings.messages.ping-command-output", pingCommandOutput);
+ tpsbarCommandOutput = getString("settings.messages.tpsbar-command-output", tpsbarCommandOutput);
}
public static String deathMsgStonecutter = "<player> has sawed themself in half";
@@ -212,6 +214,29 @@ public class PurpurConfig {
disableGiveCommandDrops = getBoolean("settings.disable-give-dropping", disableGiveCommandDrops);
}
@@ -139,30 +155,51 @@ index 92bef71629d982288a9ae928ec815c7cc0af42a9..bc0634f634526ef878dfb12cf3103c22
public static boolean enderChestPermissionRows = false;
diff --git a/src/main/java/org/purpurmc/purpur/command/TPSBarCommand.java b/src/main/java/org/purpurmc/purpur/command/TPSBarCommand.java
new file mode 100644
index 0000000000000000000000000000000000000000..2547eb09f34410ae5e6b3dcfd1706ca5f05ff896
index 0000000000000000000000000000000000000000..3de9dfba6bc7c438c093a8dca1f647f6c3de3c08
--- /dev/null
+++ b/src/main/java/org/purpurmc/purpur/command/TPSBarCommand.java
@@ -0,0 +1,21 @@
@@ -0,0 +1,42 @@
+package org.purpurmc.purpur.command;
+
+import com.mojang.brigadier.CommandDispatcher;
+import net.kyori.adventure.text.Component;
+import net.kyori.adventure.text.format.NamedTextColor;
+import net.kyori.adventure.text.minimessage.MiniMessage;
+import net.minecraft.commands.CommandSourceStack;
+import net.minecraft.commands.Commands;
+import net.minecraft.commands.arguments.EntityArgument;
+import net.minecraft.server.level.ServerPlayer;
+import org.purpurmc.purpur.PurpurConfig;
+import org.purpurmc.purpur.task.TPSBarTask;
+
+import java.util.Collection;
+import java.util.Collections;
+
+public class TPSBarCommand {
+ public static void register(CommandDispatcher<CommandSourceStack> dispatcher) {
+ dispatcher.register(Commands.literal("tpsbar")
+ .requires(listener -> listener.hasPermission(2))
+ .executes(context -> {
+ ServerPlayer player = context.getSource().getPlayerOrException();
+ boolean result = TPSBarTask.instance().togglePlayer(player.getBukkitEntity());
+ player.tpsBar(result);
+ return 1;
+ })
+ .executes(context -> execute(context.getSource(), Collections.singleton(context.getSource().getPlayerOrException())))
+ .then(Commands.argument("targets", EntityArgument.players())
+ .executes((context) -> execute(context.getSource(), EntityArgument.getPlayers(context, "targets")))
+ )
+ ).setPermission("bukkit.command.tpsbar");
+ }
+
+ private static int execute(CommandSourceStack sender, Collection<ServerPlayer> targets) {
+ for (ServerPlayer player : targets) {
+ boolean result = TPSBarTask.instance().togglePlayer(player.getBukkitEntity());
+ player.tpsBar(result);
+
+ Component output = MiniMessage.get().parse(PurpurConfig.tpsbarCommandOutput,
+ "onoff", Component.translatable(result ? "options.on" : "options.off")
+ .color(result ? NamedTextColor.GREEN : NamedTextColor.RED),
+ "target", player.getGameProfile().getName());
+
+ sender.sendSuccess(output, false);
+ }
+ return targets.size();
+ }
+}
diff --git a/src/main/java/org/purpurmc/purpur/task/BossBarTask.java b/src/main/java/org/purpurmc/purpur/task/BossBarTask.java
new file mode 100644