Skip to content

Commit 160f291

Browse files
committed
Add name desampling for CB version
* Add name color desampling for DSerial (CB1060)
1 parent ec87da3 commit 160f291

File tree

5 files changed

+49
-5
lines changed

5 files changed

+49
-5
lines changed

DSerial/src/main/kotlin/me/lukiiy/discordBridge/api/serialize/DSerial.kt

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ package me.lukiiy.discordBridge.api.serialize
33
import me.lukiiy.discordBridge.api.serialize.DSerial.fromDiscord
44
import me.lukiiy.discordBridge.api.serialize.DSerial.toDiscord
55
import net.dv8tion.jda.api.entities.Message
6+
import java.awt.Color
7+
import kotlin.math.sqrt
68

79

810
object DSerial {
@@ -93,4 +95,39 @@ object DSerial {
9395

9496
return result
9597
}
98+
99+
/**
100+
* Downsample a hex color string to a chat color code
101+
*/
102+
@JvmStatic
103+
fun minecraftSampledHex(hex: String): String {
104+
val colorMap = mapOf(
105+
'0' to Color.BLACK, // Black
106+
'1' to Color(0, 0, 170), // Dark Blue
107+
'2' to Color(0, 170, 0), // Dark Green
108+
'3' to Color(0, 170, 170), // Dark Aqua
109+
'4' to Color(170, 0, 0), // Dark Red
110+
'5' to Color(170, 0, 170), // Dark Purple
111+
'6' to Color(255, 170, 0), // Gold
112+
'7' to Color(170, 170, 170), // Gray
113+
'8' to Color(85, 85, 85), // Dark Gray
114+
'9' to Color(85, 85, 255), // Blue
115+
'a' to Color(85, 255, 85), // Green
116+
'b' to Color(85, 255, 255), // Aqua
117+
'c' to Color(255, 85, 85), // Red
118+
'd' to Color(255, 85, 255), // Light Purple
119+
'e' to Color(255, 255, 85), // Yellow
120+
'f' to Color.WHITE // White
121+
)
122+
123+
val target = runCatching { Color.decode(hex) }.getOrElse { Color.WHITE }
124+
125+
return colorMap.minByOrNull { (_, color) ->
126+
val dr = target.red - color.red
127+
val dg = target.green - color.green
128+
val db = target.blue - color.blue
129+
130+
dr * dr + dg * dg + db * db
131+
}?.let { "§${it.key}" } ?: "§f"
132+
}
96133
}

DSerialAdvnt/src/main/kotlin/me/lukiiy/discordBridge/api/serialize/DSerialAdvnt.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ object DSerialAdvnt {
104104
return result
105105
}
106106

107-
// Colors from BridgeDefaults
107+
// Default colors
108108
@JvmStatic val bridgeBlue = TextColor.fromHexString("#647ff8")
109109
@JvmStatic val bridgeFaint = TextColor.fromHexString("#7175a3")
110110
@JvmStatic val bridgeList = TextColor.fromHexString("#6d7494")

common/src/main/kotlin/me/lukiiy/discordBridge/api/DiscordContext.kt

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -103,9 +103,7 @@ class DiscordContext(val bot: JDA, val guild: Guild, val channel: TextChannel, v
103103
/**
104104
* Reloads the registered commands
105105
*/
106-
fun reloadCommands() {
107-
guild.updateCommands().addCommands(commands.values.map { it.command() }).queue()
108-
}
106+
fun reloadCommands() = guild.updateCommands().addCommands(commands.values.map { it.command() }).queue()
109107

110108
/**
111109
* Unregisters every command from the bot instance (on Discord)

craftbukkit/src/main/java/me/lukiiy/discordBridge/DiscordBridge.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,17 @@
11
package me.lukiiy.discordBridge;
22

33
import me.lukiiy.discordBridge.api.DiscordContext;
4+
import me.lukiiy.discordBridge.api.serialize.DSerial;
45
import me.lukiiy.discordBridge.cmds.Main;
56
import me.lukiiy.discordBridge.discordCmds.Console;
67
import me.lukiiy.discordBridge.listeners.DiscordEvents;
78
import me.lukiiy.discordBridge.listeners.PlayerEvents;
89
import me.lukiiy.discordBridge.utils.BotHelper;
10+
import me.lukiiy.discordBridge.utils.MemberHelper;
911
import net.dv8tion.jda.api.JDA;
1012
import net.dv8tion.jda.api.OnlineStatus;
1113
import net.dv8tion.jda.api.entities.Activity;
14+
import net.dv8tion.jda.api.entities.Member;
1215
import org.bukkit.event.Event;
1316
import org.bukkit.plugin.PluginManager;
1417
import org.bukkit.plugin.java.JavaPlugin;
@@ -99,6 +102,11 @@ public DiscordContext getContext() {
99102
return context;
100103
}
101104

105+
public String miniSerializableName(Member member) {
106+
if (getConfiguration().getBoolean("discord.useMemberNameColor", false)) return DSerial.minecraftSampledHex(MemberHelper.getHexColor(member)) + member.getEffectiveName() + "§f";
107+
else return member.getEffectiveName();
108+
}
109+
102110
// Config
103111
public void setupConfig() {
104112
Configuration config = getConfiguration();
@@ -111,6 +119,7 @@ public void setupConfig() {
111119
config.getString("discord.activity", "playing Minecraft");
112120
config.getString("discord.status", "ONLINE");
113121
config.getBoolean("discord.playerEvents", true);
122+
config.getBoolean("discord.useMemberNameColor", false);
114123
config.getBoolean("discord.ignoreBots", false);
115124
if (config.getProperty("discord.shutdown.timeLimit") == null) config.setProperty("discord.shutdown.timeLimit", 3);
116125
config.getBoolean("discord.shutdown.clearCommands", true);

craftbukkit/src/main/java/me/lukiiy/discordBridge/listeners/DiscordEvents.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ public void onMessageReceived(@NotNull MessageReceivedEvent e) {
5151
msg.set(event.getMessage());
5252

5353
MessageParts parts = MessageParts.from(
54-
config.getString("messages.minecraft.format", ""),
54+
config.getString("messages.minecraft.format", "").replace("(user)", instance.miniSerializableName(member)),
5555
config.getString("messages.minecraft.prefix", ""),
5656
member,
5757
msg.get(),

0 commit comments

Comments
 (0)