From 517648840d959d1c8ae449c99f0d0ac4224829f7 Mon Sep 17 00:00:00 2001 From: Alessandro Proto Date: Sun, 13 Oct 2024 21:29:33 +0200 Subject: [PATCH] Update rcc-discord and rcc-server dependencies --- build.gradle | 2 +- gradle.properties | 6 +- .../cc/reconnected/chatbox/ChatboxEvents.java | 70 ++++++++++++------- .../chatbox/license/LicenseManager.java | 38 +++++----- src/main/resources/fabric.mod.json | 4 +- 5 files changed, 72 insertions(+), 48 deletions(-) diff --git a/build.gradle b/build.gradle index 0b279b9..ff133fd 100644 --- a/build.gradle +++ b/build.gradle @@ -42,7 +42,7 @@ dependencies { include modImplementation("net.kyori:adventure-platform-fabric:${project.adventure_version}") include implementation("net.kyori:adventure-text-serializer-legacy:${project.adventure_legacy_serializer_version}") - modImplementation include("eu.pb4:placeholder-api:${placeholderapi_version}") + modImplementation include("eu.pb4:placeholder-api:${project.placeholderapi_version}") annotationProcessor modImplementation("io.wispforest:owo-lib:${project.owo_version}") include "io.wispforest:owo-sentinel:${project.owo_version}" diff --git a/gradle.properties b/gradle.properties index 14dca88..9427929 100644 --- a/gradle.properties +++ b/gradle.properties @@ -9,15 +9,15 @@ yarn_mappings=1.20.1+build.10 loader_version=0.16.5 # Mod Properties -mod_version=1.5.2 +mod_version=1.6.1 maven_group=cc.reconnected.chatbox archives_base_name=rcc-chatbox # Dependencies fabric_version=0.92.2+1.20.1 -rccserver_version=1.8.5 -rccdiscord_version=1.4.1 +rccserver_version=1.9.2 +rccdiscord_version=1.5.0 permissions_api_version=0.2-SNAPSHOT diff --git a/src/main/java/cc/reconnected/chatbox/ChatboxEvents.java b/src/main/java/cc/reconnected/chatbox/ChatboxEvents.java index 97c2656..768b024 100644 --- a/src/main/java/cc/reconnected/chatbox/ChatboxEvents.java +++ b/src/main/java/cc/reconnected/chatbox/ChatboxEvents.java @@ -13,8 +13,11 @@ import cc.reconnected.chatbox.utils.DateUtils; import cc.reconnected.chatbox.ws.CloseCodes; import cc.reconnected.chatbox.ws.WsServer; -import cc.reconnected.discordbridge.events.DiscordMessage; +import cc.reconnected.discordbridge.events.DiscordMessageEvents; import cc.reconnected.server.database.PlayerData; +import cc.reconnected.server.events.PlayerActivityEvents; +import net.dv8tion.jda.api.entities.Member; +import net.dv8tion.jda.api.entities.Message; import net.fabricmc.fabric.api.entity.event.v1.ServerEntityWorldChangeEvents; import net.fabricmc.fabric.api.entity.event.v1.ServerLivingEntityEvents; import net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents; @@ -154,27 +157,8 @@ public static void register() { }); // discord chat events - DiscordMessage.MESSAGE_CREATE.register((message, member, isEdited) -> { - var user = DiscordUser.fromMember(member); - var packet = new DiscordChatEvent(); - packet.text = message.getContentStripped(); - packet.rawText = message.getContentRaw(); - packet.renderedText = Text.Serializer.toJsonTree(MarkdownParser.contentParser.parseNode(message.getContentDisplay()).toText()); - packet.discordId = message.getId(); - packet.discordUser = user; - packet.edited = isEdited; - - var messageOffsetDate= isEdited ? message.getTimeEdited() : message.getTimeCreated(); - Date messageDate; - if(messageOffsetDate != null) { - messageDate = new Date(messageOffsetDate.toInstant().toEpochMilli()); - } else { - messageDate = new Date(); - } - packet.time = DateUtils.getTime(messageDate); - - Chatbox.getInstance().wss().broadcastEvent(packet, Capability.READ); - }); + DiscordMessageEvents.MESSAGE_CREATE.register((message, member) -> emitDiscordChatEvent(message, member, false)); + DiscordMessageEvents.MESSAGE_EDIT.register((message, member) -> emitDiscordChatEvent(message, member, true)); // chat messages ServerMessageEvents.CHAT_MESSAGE.register((message, sender, params) -> { @@ -234,7 +218,7 @@ public static void register() { if (!isOwnerOnly) { var server = sender.getServer(); - if(server == null) + if (server == null) return true; var playerManager = server.getPlayerManager(); @@ -243,7 +227,7 @@ public static void register() { .append(Text.literal(content).setStyle(Style.EMPTY.withColor(Formatting.GRAY))); playerManager.getPlayerList().forEach(player -> { - if(spyingPlayers.containsKey(player.getUuid()) && spyingPlayers.get(player.getUuid())) { + if (spyingPlayers.containsKey(player.getUuid()) && spyingPlayers.get(player.getUuid())) { player.sendMessage(text, false); } }); @@ -251,6 +235,44 @@ public static void register() { return false; }); + + PlayerActivityEvents.AFK.register((player, server) -> { + var packet = new AfkEvent(); + packet.user = User.create(player); + packet.time = DateUtils.getTime(new Date()); + + Chatbox.getInstance().wss().broadcastEvent(packet, Capability.READ); + }); + + PlayerActivityEvents.AFK_RETURN.register((player, server) -> { + var packet = new AfkEvent(); + packet.user = User.create(player); + packet.time = DateUtils.getTime(new Date()); + + Chatbox.getInstance().wss().broadcastEvent(packet, Capability.READ); + }); + } + + private static void emitDiscordChatEvent(Message message, Member member, boolean isEdited) { + var user = DiscordUser.fromMember(member); + var packet = new DiscordChatEvent(); + packet.text = message.getContentStripped(); + packet.rawText = message.getContentRaw(); + packet.renderedText = Text.Serializer.toJsonTree(MarkdownParser.contentParser.parseNode(message.getContentDisplay()).toText()); + packet.discordId = message.getId(); + packet.discordUser = user; + packet.edited = isEdited; + + var messageOffsetDate = isEdited ? message.getTimeEdited() : message.getTimeCreated(); + Date messageDate; + if (messageOffsetDate != null) { + messageDate = new Date(messageOffsetDate.toInstant().toEpochMilli()); + } else { + messageDate = new Date(); + } + packet.time = DateUtils.getTime(messageDate); + + Chatbox.getInstance().wss().broadcastEvent(packet, Capability.READ); } public static PlayersPacket createPlayersPacket(List list) { diff --git a/src/main/java/cc/reconnected/chatbox/license/LicenseManager.java b/src/main/java/cc/reconnected/chatbox/license/LicenseManager.java index 115e764..af697f7 100644 --- a/src/main/java/cc/reconnected/chatbox/license/LicenseManager.java +++ b/src/main/java/cc/reconnected/chatbox/license/LicenseManager.java @@ -12,6 +12,7 @@ public class LicenseManager { public static final UUID guestLicenseUuid = new UUID(0, 0); public static final License guestLicense = new License(guestLicenseUuid, guestLicenseUuid); public static final String nodePrefix = "chatbox"; + public static class KEYS { public static final String licenseUuid = nodePrefix + ".license_uuid"; public static final String capabilities = nodePrefix + ".capabilities"; @@ -33,7 +34,7 @@ private License buildLicense(String uuid, String userId, int packedCapabilities) @Nullable public License getLicense(UUID licenseId) { - if(licenseId.equals(guestLicenseUuid)) { + if (licenseId.equals(guestLicenseUuid)) { return guestLicense; } if (cache.containsKey(licenseId)) { @@ -41,7 +42,7 @@ public License getLicense(UUID licenseId) { } var serverState = Chatbox.getInstance().serverState(); - if(!serverState.licenses.containsKey(licenseId)) + if (!serverState.licenses.containsKey(licenseId)) return null; var ownerUuid = serverState.licenses.get(licenseId); @@ -49,10 +50,10 @@ public License getLicense(UUID licenseId) { var licenseUuid = playerData.get(KEYS.licenseUuid); var capabilitiesStr = playerData.get(KEYS.capabilities); int packedCapabilities = 0; - if(capabilitiesStr != null) { + if (capabilitiesStr != null) { try { packedCapabilities = Integer.parseInt(capabilitiesStr); - } catch(NumberFormatException e) { + } catch (NumberFormatException e) { // do nothing } } @@ -65,7 +66,7 @@ public License getLicense(UUID licenseId) { @Nullable public License getLicenseFromUser(UUID userId) { - if(userId.equals(guestLicenseUuid)) { + if (userId.equals(guestLicenseUuid)) { return guestLicense; } var license = cache.values().parallelStream().filter(l -> l.userId() == userId).findFirst().orElse(null); @@ -75,14 +76,14 @@ public License getLicenseFromUser(UUID userId) { var playerData = PlayerData.getPlayer(userId); var licenseUuid = playerData.get(KEYS.licenseUuid); - if(licenseUuid == null) + if (licenseUuid == null) return null; var capabilitiesStr = playerData.get(KEYS.capabilities); int packedCapabilities = 0; - if(capabilitiesStr != null) { + if (capabilitiesStr != null) { try { packedCapabilities = Integer.parseInt(capabilitiesStr); - } catch(NumberFormatException e) { + } catch (NumberFormatException e) { // do nothing } } @@ -93,7 +94,7 @@ public License getLicenseFromUser(UUID userId) { } public License createLicense(UUID userId, Set capabilities) { - if(userId.equals(guestLicenseUuid)) { + if (userId.equals(guestLicenseUuid)) { return guestLicense; } var license = getLicenseFromUser(userId); @@ -107,8 +108,9 @@ public License createLicense(UUID userId, Set capabilities) { license.capabilities().addAll(capabilities); var playerData = PlayerData.getPlayer(userId); - playerData.set(KEYS.licenseUuid, uuid.toString()); - playerData.set(KEYS.capabilities, String.valueOf(Capability.pack(capabilities))); + playerData.set(KEYS.licenseUuid, uuid.toString()).join(); + playerData.set(KEYS.capabilities, String.valueOf(Capability.pack(capabilities))).join(); + Chatbox.getInstance().serverState().licenses.put(uuid, userId); cache.put(uuid, license); @@ -117,18 +119,18 @@ public License createLicense(UUID userId, Set capabilities) { } public boolean deleteLicense(UUID licenseId) { - if(licenseId.equals(guestLicenseUuid)) { + if (licenseId.equals(guestLicenseUuid)) { return false; } var license = getLicense(licenseId); - if(license == null) { + if (license == null) { return false; } var playerData = PlayerData.getPlayer(license.userId()); - playerData.delete(KEYS.licenseUuid); - playerData.delete(KEYS.capabilities); + playerData.delete(KEYS.licenseUuid).join(); + playerData.delete(KEYS.capabilities).join(); Chatbox.getInstance().serverState().licenses.remove(license.uuid()); cache.remove(license.uuid()); @@ -136,11 +138,11 @@ public boolean deleteLicense(UUID licenseId) { } public boolean updateLicense(UUID licenseId, Set capabilities) { - if(licenseId.equals(guestLicenseUuid)) { + if (licenseId.equals(guestLicenseUuid)) { return false; } var license = getLicense(licenseId); - if(license == null) { + if (license == null) { return false; } @@ -148,7 +150,7 @@ public boolean updateLicense(UUID licenseId, Set capabilities) { license.capabilities().addAll(capabilities); var playerData = PlayerData.getPlayer(license.userId()); - playerData.set(KEYS.capabilities, String.valueOf(Capability.pack(capabilities))); + playerData.set(KEYS.capabilities, String.valueOf(Capability.pack(capabilities))).join(); cache.put(license.uuid(), license); return true; diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 8964bad..b9e8623 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -27,8 +27,8 @@ "minecraft": "~1.20.1", "java": ">=17", "fabric-api": "*", - "rcc-server": ">=1.8.0", - "rcc-discord": ">=1.4.1", + "rcc-server": ">=1.9.2", + "rcc-discord": ">=1.5.0", "luckperms": ">=5.4" } } \ No newline at end of file