Skip to content

Commit

Permalink
Add support for restart events
Browse files Browse the repository at this point in the history
  • Loading branch information
Ale32bit committed Oct 28, 2024
1 parent f1e7546 commit 920dc71
Show file tree
Hide file tree
Showing 5 changed files with 62 additions and 10 deletions.
6 changes: 3 additions & 3 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -9,15 +9,15 @@ yarn_mappings=1.20.1+build.10
loader_version=0.16.7

# Mod Properties
mod_version=1.7.5
mod_version=1.7.6
maven_group=cc.reconnected
archives_base_name=rcc-chatbox

# Dependencies
fabric_version=0.92.2+1.20.1

rccserver_version=1.15.0
rccdiscord_version=1.7.8
rccserver_version=1.16.1
rccdiscord_version=1.7.9

permissions_api_version=0.2-SNAPSHOT

Expand Down
56 changes: 54 additions & 2 deletions src/main/java/cc/reconnected/chatbox/ChatboxEvents.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@
import cc.reconnected.discordbridge.events.DiscordMessageEvents;
import cc.reconnected.server.api.PlayerMeta;
import cc.reconnected.server.api.events.PlayerActivityEvents;
import cc.reconnected.server.api.events.RestartEvents;
import cc.reconnected.server.core.BossBarManager;
import cc.reconnected.server.parser.MarkdownParser;
import net.dv8tion.jda.api.entities.Member;
import net.dv8tion.jda.api.entities.Message;
Expand All @@ -28,8 +30,11 @@
import net.minecraft.text.Style;
import net.minecraft.text.Text;
import net.minecraft.util.Formatting;
import org.jetbrains.annotations.Nullable;

import java.net.InetSocketAddress;
import java.time.Duration;
import java.time.Instant;
import java.util.*;

public class ChatboxEvents {
Expand All @@ -39,6 +44,10 @@ public class ChatboxEvents {
public static final HashMap<UUID, Boolean> spyingPlayers = new HashMap<>();

private static MinecraftServer mcServer;
@Nullable
private static BossBarManager.TimeBar restartBar = null;
@Nullable
private static ServerRestartScheduledEvent restartScheduledEvent = null;

public static void register() {
ClientPacketsHandler.register();
Expand All @@ -64,8 +73,14 @@ public static void register() {
conn.send(packetJson);

if (license.capabilities().contains(Capability.READ)) {
var msg = Chatbox.GSON.toJson(ChatboxEvents.createPlayersPacket());
conn.send(msg);
var playersPacket = Chatbox.GSON.toJson(ChatboxEvents.createPlayersPacket());
conn.send(playersPacket);

if (restartBar != null) {
fixRestartTime();
var restartPacket = Chatbox.GSON.toJson(restartScheduledEvent);
conn.send(restartPacket);
}
}
});

Expand Down Expand Up @@ -248,6 +263,43 @@ public static void register() {

Chatbox.getInstance().wss().broadcastEvent(packet, Capability.READ);
});

RestartEvents.SCHEDULED.register(timeBar -> {
restartBar = timeBar;
var packet = new ServerRestartScheduledEvent();
var now = new Date();
var duration = Duration.ofSeconds(timeBar.getTime());
var restartAt = duration.addTo(now.toInstant());
var restartAtDate = Date.from(Instant.from(restartAt));

packet.time = DateUtils.getTime(now);
packet.restartAt = DateUtils.getTime(restartAtDate);
packet.restartType = "automatic"; // manual currently not supported

fixRestartTime();

Chatbox.getInstance().wss().broadcastEvent(packet, Capability.READ);
});

RestartEvents.CANCELED.register(timeBar -> {
if (restartScheduledEvent == null)
return;

var packet = new ServerRestartCancelledEvent();
packet.time = DateUtils.getTime(new Date());
packet.restartType = restartScheduledEvent.restartType;

restartBar = null;
restartScheduledEvent = null;
Chatbox.getInstance().wss().broadcastEvent(packet, Capability.READ);
});
}

private static void fixRestartTime() {
if (restartScheduledEvent == null)
return;

restartScheduledEvent.restartSeconds = restartBar.getRemainingSeconds();
}

private static void emitDiscordChatEvent(Message message, Member member, boolean isEdited) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,6 @@

public class ServerRestartCancelledEvent extends EventBase {
public String restartType;
public int restartSeconds;
public String restartAt;
public String time;
public ServerRestartCancelledEvent() {
this.event = "server_restart_cancelled";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,10 @@
// TODO: Add proper restart scheduling
public class ServerRestartScheduledEvent extends EventBase {
public String restartType;
public int restartSeconds;
public String restartAt;
public String time;
public ServerRestartScheduledEvent() {
this.event = "server_restart_cancelled";
this.event = "server_restart_scheduled";
}
}
4 changes: 2 additions & 2 deletions src/main/resources/fabric.mod.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,8 @@
"minecraft": "~1.20.1",
"java": ">=17",
"fabric-api": "*",
"rcc-server": ">=1.15.0",
"rcc-discord": ">=1.7.8",
"rcc-server": ">=1.16.1",
"rcc-discord": ">=1.7.9",
"luckperms": ">=5.4"
}
}

0 comments on commit 920dc71

Please sign in to comment.