Implement server announcement (#1420)

* implement server announcement

* Update src/main/java/emu/grasscutter/command/commands/AnnounceCommand.java

Co-authored-by: Luke H-W <Birdulon@users.noreply.github.com>

* Added arg numbers check

Co-authored-by: Luke H-W <Birdulon@users.noreply.github.com>
This commit is contained in:
Akka
2022-07-02 21:43:22 +08:00
committed by GitHub
parent a80302cdcd
commit 9bafc2c5d5
9 changed files with 335 additions and 1 deletions

View File

@@ -12,6 +12,7 @@ import emu.grasscutter.game.dungeons.DungeonManager;
import emu.grasscutter.game.dungeons.challenge.DungeonChallenge;
import emu.grasscutter.game.expedition.ExpeditionManager;
import emu.grasscutter.game.gacha.GachaManager;
import emu.grasscutter.game.managers.AnnouncementManager;
import emu.grasscutter.game.managers.CookingManager;
import emu.grasscutter.game.managers.InventoryManager;
import emu.grasscutter.game.managers.MultiplayerManager;
@@ -69,6 +70,7 @@ public final class GameServer extends KcpServer {
@Getter private final BattlePassMissionManager battlePassMissionManager;
@Getter private final CombineManger combineManger;
@Getter private final TowerScheduleManager towerScheduleManager;
@Getter private final AnnouncementManager announcementManager;
public GameServer() {
this(getAdapterInetSocketAddress());
@@ -112,7 +114,7 @@ public final class GameServer extends KcpServer {
this.towerScheduleManager = new TowerScheduleManager(this);
this.worldDataManager = new WorldDataManager(this);
this.battlePassMissionManager = new BattlePassMissionManager(this);
this.announcementManager = new AnnouncementManager(this);
// Hook into shutdown event.
Runtime.getRuntime().addShutdownHook(new Thread(this::onServerShutdown));
}

View File

@@ -0,0 +1,38 @@
package emu.grasscutter.server.packet.send;
import emu.grasscutter.net.packet.BasePacket;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.AnnounceDataOuterClass;
import emu.grasscutter.net.proto.ServerAnnounceNotifyOuterClass;
import emu.grasscutter.utils.Utils;
import java.util.List;
public class PacketServerAnnounceNotify extends BasePacket {
public PacketServerAnnounceNotify(List<AnnounceDataOuterClass.AnnounceData> data) {
super(PacketOpcodes.ServerAnnounceNotify);
var proto = ServerAnnounceNotifyOuterClass.ServerAnnounceNotify.newBuilder();
proto.addAllAnnounceDataList(data);
this.setData(proto);
}
public PacketServerAnnounceNotify(String msg, int configId) {
super(PacketOpcodes.ServerAnnounceNotify);
var proto = ServerAnnounceNotifyOuterClass.ServerAnnounceNotify.newBuilder();
proto.addAnnounceDataList(AnnounceDataOuterClass.AnnounceData.newBuilder()
.setConfigId(configId)
.setBeginTime(Utils.getCurrentSeconds() + 1)
.setEndTime(Utils.getCurrentSeconds() + 2)
.setCenterSystemText(msg)
.setCenterSystemFrequency(1)
.build());
this.setData(proto);
}
}

View File

@@ -0,0 +1,18 @@
package emu.grasscutter.server.packet.send;
import emu.grasscutter.net.packet.BasePacket;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.ServerAnnounceRevokeNotifyOuterClass;
public class PacketServerAnnounceRevokeNotify extends BasePacket {
public PacketServerAnnounceRevokeNotify(int tplId) {
super(PacketOpcodes.ServerAnnounceRevokeNotify);
var proto = ServerAnnounceRevokeNotifyOuterClass.ServerAnnounceRevokeNotify.newBuilder();
proto.addConfigIdList(tplId);
this.setData(proto);
}
}