Skip to content

Commit ca60333

Browse files
committed
b
1 parent 72b49fc commit ca60333

2 files changed

Lines changed: 23 additions & 1 deletion

File tree

‎src/main/java/dev/plex/extras/command/DiscoCommand.java‎

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,12 @@
22

33
import com.mojang.brigadier.arguments.IntegerArgumentType;
44
import com.mojang.brigadier.builder.LiteralArgumentBuilder;
5+
import dev.plex.api.message.ActionBroadcast;
56
import dev.plex.command.SimplePlexCommand;
67
import dev.plex.extras.fun.Disco;
78
import io.papermc.paper.command.brigadier.CommandSourceStack;
89
import io.papermc.paper.command.brigadier.Commands;
10+
import java.util.concurrent.atomic.AtomicBoolean;
911
import net.kyori.adventure.text.Component;
1012
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
1113
import org.bukkit.Bukkit;
@@ -62,10 +64,28 @@ private Component execute(CommandSender sender, @Nullable Player player, boolean
6264
return null;
6365
}
6466

67+
ActionBroadcast announcement = api().messages().captureActionBroadcast(sender);
68+
AtomicBoolean announced = new AtomicBoolean();
69+
Component message = messageComponent(seconds == null ? "discoEveryoneStopped" : "discoEveryoneStarted",
70+
Placeholder.unparsed("sender", sender.getName()),
71+
Placeholder.unparsed("seconds", String.valueOf(seconds)));
72+
Runnable done = () ->
73+
{
74+
if (announced.compareAndSet(false, true)) announcement.send(message);
75+
};
6576
for (String name : onlinePlayerNames())
6677
{
6778
Player target = Bukkit.getPlayerExact(name);
68-
if (target != null) apply(sender, target, seconds);
79+
if (target == null) continue;
80+
if (seconds == null)
81+
{
82+
if (disco.stop(target.getUniqueId())) done.run();
83+
}
84+
else
85+
{
86+
disco.start(target, seconds, done, () -> sender.sendMessage(messageComponent("funPlayerUnavailable",
87+
Placeholder.unparsed("player", target.getName()))));
88+
}
6989
}
7090
return null;
7191
}

‎src/main/resources/messages.yml‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,8 @@ sizeReset: "<gray>Reset the size of <player>."
5252
gravitySet: "<gray>Set the gravity of <player> to <value>."
5353
gravityReset: "<gray>Reset the gravity of <player>."
5454
discoStarted: "<aqua><sender> - Started a disco for <player> (<seconds>s)"
55+
discoEveryoneStarted: "<aqua><sender> - Started a server-wide disco (<seconds>s)"
56+
discoEveryoneStopped: "<aqua><sender> - Stopping the server-wide disco"
5557
discoStopped: "<aqua><sender> - Stopped the disco for <player>"
5658
discoNotRunning: "<red><player> is not at a disco."
5759
discoTooLong: "<red>A disco can last at most <max> seconds."

0 commit comments

Comments
 (0)