Skip to content

Commit

Permalink
Add Discord user references (and viceversa)
Browse files Browse the repository at this point in the history
  • Loading branch information
Ale32bit committed Oct 18, 2024
1 parent ea99a60 commit 94a4937
Show file tree
Hide file tree
Showing 6 changed files with 43 additions and 22 deletions.
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ repositories {

maven { url 'https://maven.wispforest.io' }

maven { url "https://maven.alexdevs.me/releases" }
maven { url "https://maven.reconnected.cc/releases" }

maven { url 'https://maven.nucleoid.xyz' }

Expand Down
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.5

# Mod Properties
mod_version=1.7.0
mod_version=1.7.1
maven_group=cc.reconnected
archives_base_name=rcc-chatbox

# Dependencies
fabric_version=0.92.2+1.20.1

rccserver_version=1.9.2
rccdiscord_version=1.5.0
rccserver_version=1.10.1
rccdiscord_version=1.7.1

permissions_api_version=0.2-SNAPSHOT

Expand Down
6 changes: 3 additions & 3 deletions src/main/java/cc/reconnected/chatbox/ChatboxEvents.java
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ public static void register() {
if (mcPlayer != null) {
helloPacket.licenseOwnerUser = User.create(mcPlayer);
} else {
helloPacket.licenseOwnerUser = User.tryGet(license.userId());
helloPacket.licenseOwnerUser = User.tryGet(license.userId(), true);
}
license.user = helloPacket.licenseOwnerUser;
}
Expand Down Expand Up @@ -251,7 +251,7 @@ public static void register() {
}

private static void emitDiscordChatEvent(Message message, Member member, boolean isEdited) {
var user = DiscordUser.fromMember(member);
var user = DiscordUser.fromMember(member, true);
var packet = new DiscordChatEvent();
packet.text = message.getContentStripped();
packet.rawText = message.getContentRaw();
Expand Down Expand Up @@ -279,7 +279,7 @@ public static PlayersPacket createPlayersPacket(List<ServerPlayerEntity> list) {
packet.players = new User[list.size()];
for (int i = 0; i < list.size(); i++) {
var player = list.get(i);
var user = User.create(player);
var user = User.create(player, true);
packet.players[i] = user;
}

Expand Down
13 changes: 11 additions & 2 deletions src/main/java/cc/reconnected/chatbox/models/DiscordUser.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package cc.reconnected.chatbox.models;

import cc.reconnected.discordbridge.Bridge;
import net.dv8tion.jda.api.entities.Member;
import org.jetbrains.annotations.Nullable;

Expand All @@ -14,14 +15,15 @@ public class DiscordUser {
@Nullable
public User linkedUser;

public static DiscordUser fromMember(Member member) {
public static DiscordUser fromMember(Member member, boolean resolveLinkedUser) {
var user = new DiscordUser();

user.id = member.getUser().getId();
user.discriminator = member.getUser().getDiscriminator();
user.name = member.getUser().getName();
user.displayName = member.getEffectiveName();
user.avatar = member.getUser().getAvatarUrl();
user.linkedUser = null;

var roles = member.getRoles();
user.roles = new DiscordRole[roles.size()];
Expand All @@ -34,8 +36,15 @@ public static DiscordUser fromMember(Member member) {
lRole.colour = role.getColorRaw();
}

// TODO: add linkedUser, requires rcc-discord to support linking
if (resolveLinkedUser && Bridge.discordLinks.containsKey(user.id)) {
var playerUuid = Bridge.discordLinks.get(user.id);
user.linkedUser = User.tryGet(playerUuid, false);
}

return user;
}

public static DiscordUser fromMember(Member member) {
return fromMember(member, false);
}
}
34 changes: 23 additions & 11 deletions src/main/java/cc/reconnected/chatbox/models/User.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package cc.reconnected.chatbox.models;

import cc.reconnected.discordbridge.Bridge;
import cc.reconnected.server.RccServer;
import cc.reconnected.server.database.PlayerData;
import net.dv8tion.jda.api.entities.UserSnowflake;
import net.minecraft.server.network.ServerPlayerEntity;
Expand All @@ -23,17 +24,18 @@ public class User {
@Nullable
public DiscordUser linkedUser;

private static void fillInData(User user, @Nullable ServerPlayerEntity entity) {
private static void fillInData(User user, @Nullable ServerPlayerEntity entity, boolean resolveDiscord) {
PlayerData playerData;
if(entity != null) {
playerData = PlayerData.getPlayer(entity);
user.afk = RccServer.getInstance().isPlayerAfk(entity);
} else {
playerData = PlayerData.getPlayer(UUID.fromString(user.uuid));
user.afk = false;
}

user.group = playerData.getPrimaryGroup();
user.pronouns = playerData.get(PlayerData.KEYS.pronouns);
user.afk = false;
user.alt = playerData.getBoolean(PlayerData.KEYS.isAlt);
user.bot = playerData.getBoolean(PlayerData.KEYS.isBot);

Expand All @@ -44,30 +46,36 @@ private static void fillInData(User user, @Nullable ServerPlayerEntity entity) {
}

user.linkedUser = null;
var discordId = playerData.get(PlayerData.KEYS.discordId);
if (discordId != null) {
var member = Bridge.getInstance().getClient().guild().getMember(UserSnowflake.fromId(discordId));
if (member != null) {
user.linkedUser = DiscordUser.fromMember(member);
if(resolveDiscord) {
var discordId = playerData.get(PlayerData.KEYS.discordId);
if (discordId != null) {
var member = Bridge.getInstance().getClient().guild().getMember(UserSnowflake.fromId(discordId));
if (member != null) {
user.linkedUser = DiscordUser.fromMember(member, false);
}
}
}
}

public static User create(ServerPlayerEntity player) {
public static User create(ServerPlayerEntity player, boolean resolveDiscord) {
var user = new User();

user.name = player.getEntityName();
user.uuid = player.getUuidAsString();
user.displayName = player.getDisplayName().getString();
user.world = player.getWorld().getRegistryKey().getValue().toString();

fillInData(user, player);
fillInData(user, player, resolveDiscord);

return user;
}

public static User create(ServerPlayerEntity player) {
return create(player, false);
}

public static User tryGet(UUID playerUuid) {

public static User tryGet(UUID playerUuid, boolean resolveDiscord) {
var user = new User();

var playerData = PlayerData.getPlayer(playerUuid);
Expand All @@ -77,8 +85,12 @@ public static User tryGet(UUID playerUuid) {
user.displayName = playerData.getEffectiveName();
user.world = null;

fillInData(user, null);
fillInData(user, null, resolveDiscord);

return user;
}

public static User tryGet(UUID playerUuid) {
return tryGet(playerUuid, false);
}
}
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.9.2",
"rcc-discord": ">=1.5.0",
"rcc-server": ">=1.10.1",
"rcc-discord": ">=1.7.1",
"luckperms": ">=5.4"
}
}

0 comments on commit 94a4937

Please sign in to comment.