mirror of
https://github.com/Grasscutters/Grasscutter.git
synced 2025-01-27 08:02:55 +08:00
74 lines
2.6 KiB
Java
74 lines
2.6 KiB
Java
package emu.grasscutter.command.commands;
|
|
|
|
import emu.grasscutter.Grasscutter;
|
|
import emu.grasscutter.command.Command;
|
|
import emu.grasscutter.command.CommandHandler;
|
|
import emu.grasscutter.game.player.Player;
|
|
import emu.grasscutter.server.packet.send.PacketServerAnnounceNotify;
|
|
|
|
import java.util.Collections;
|
|
import java.util.List;
|
|
import java.util.Random;
|
|
|
|
import static emu.grasscutter.utils.Language.translate;
|
|
|
|
@Command(label = "announce",
|
|
usage = {"<content>", "refresh", "(tpl|revoke) <templateId>"},
|
|
permission = "server.announce",
|
|
aliases = {"a"},
|
|
targetRequirement = Command.TargetRequirement.NONE)
|
|
public final class AnnounceCommand implements CommandHandler {
|
|
|
|
@Override
|
|
public void execute(Player sender, Player targetPlayer, List<String> args) {
|
|
var manager = Grasscutter.getGameServer().getAnnouncementSystem();
|
|
if (args.size() < 1) {
|
|
sendUsageMessage(sender);
|
|
return;
|
|
}
|
|
|
|
switch (args.get(0)) {
|
|
case "tpl":
|
|
if (args.size() < 2) {
|
|
sendUsageMessage(sender);
|
|
return;
|
|
}
|
|
|
|
var templateId = Integer.parseInt(args.get(1));
|
|
var tpl = manager.getAnnounceConfigItemMap().get(templateId);
|
|
if (tpl == null) {
|
|
CommandHandler.sendMessage(sender, translate(sender, "commands.announce.not_found", templateId));
|
|
return;
|
|
}
|
|
|
|
manager.broadcast(Collections.singletonList(tpl));
|
|
CommandHandler.sendMessage(sender, translate(sender, "commands.announce.send_success", tpl.getTemplateId()));
|
|
break;
|
|
|
|
case "refresh":
|
|
var num = manager.refresh();
|
|
CommandHandler.sendMessage(sender, translate(sender, "commands.announce.refresh_success", num));
|
|
break;
|
|
|
|
case "revoke":
|
|
if (args.size() < 2) {
|
|
sendUsageMessage(sender);
|
|
return;
|
|
}
|
|
|
|
var templateId1 = Integer.parseInt(args.get(1));
|
|
manager.revoke(templateId1);
|
|
CommandHandler.sendMessage(sender, translate(sender, "commands.announce.revoke_done", templateId1));
|
|
break;
|
|
|
|
default:
|
|
var id = new Random().nextInt(10000, 99999);
|
|
var text = String.join(" ", args);
|
|
manager.getOnlinePlayers().forEach(i -> i.sendPacket(new PacketServerAnnounceNotify(text, id)));
|
|
|
|
CommandHandler.sendMessage(sender, translate(sender, "commands.announce.send_success", id));
|
|
}
|
|
|
|
}
|
|
}
|