Skip to content

Commit 70322fa

Browse files
committed
1.1 Update: Gradle migration; Fix conflicts with known emotes by allowing alternative discord render style; reload command; pack listing is now sorted by group or alphabetically.
1 parent 06d8f61 commit 70322fa

File tree

12 files changed

+236
-76
lines changed

12 files changed

+236
-76
lines changed

.github/workflows/pack-resources.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,10 @@ jobs:
3636
--pack-url https://cinnamondev.github.io/minemoji/packs/minemoji-latest.zip
3737
--zip-pack --delete-directory
3838
- run: df -h
39+
- run: ./rename-twemoji.sh
3940
- run: >
4041
java -cp minemoji-*.jar com.github.cinnamondev.minemoji.PackMaker.PackMaker
41-
--input-directory ./twemoji/assets/svg/
42+
--input-directory ./twemoji/v/latest/72x72
4243
--output-directory ./site/packs/twemoji-latest
4344
--width 48
4445
--prefix unicode

.gitmodules

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
[submodule "twemoji"]
22
path = twemoji
33
url = git@github.com:jdecked/twemoji.git
4+
branch = gh-pages

README.md

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,11 @@ Animated sprites supported, will work with DiscordSRV (translate the discord emo
88

99
https://github.com/user-attachments/assets/404500c4-36d6-4563-a049-5e0031ad3cd0
1010

11-
### Note on DiscordSRV integration
12-
13-
I don't think this would play very nice with other plugins that hook into
14-
the post-process events of DiscordSRV (at the moment). Todo for ways to inserting objectcomponents into discordsrv messages.
11+
## Permissions
1512

13+
- `minemoji.emoji`: Use emotes (defaults to `true`)
14+
- `minemoji.list`: List emotes (defaults to `true`)
15+
- `minemoji.reload`: Reload packs (defaults to `OP`)
1616
## Config
1717

1818
```
@@ -60,7 +60,9 @@ In the input directory, if you put files ending with `.info` corresponding to th
6060
emotes, i.e.: `ralsei_spin.gif` and `ralsei_spin.gif.info`, you can change:
6161
- The max frame rate of an animated emote (the default and **absolute** max is 20)
6262
- This is done with line entries beginning with `f` i.e.: `f10`
63-
- The discord ID of an emote (and if )
63+
- The discord ID of an emote (and if applicable, prefixed with `a` if animated)
64+
- i.e: `trans_bee.png.info` containing `1031671707762688060`
65+
- `ralsei_spin.gif.info` containing `a1427385442843758682`
6466

6567
# license
6668

build.gradle.kts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ dependencies {
3737
}
3838

3939
group = "com.github.cinnamondev"
40-
version = "1.03"
40+
version = "1.1"
4141
description = "minemoji"
4242

4343
java {
@@ -80,5 +80,9 @@ paperPluginYaml {
8080
description = "List emojis using /minemoji list <pack>"
8181
default = Permission.Default.TRUE
8282
}
83+
register("minemoji.reload") {
84+
description = "Reload emojis"
85+
default = Permission.Default.OP
86+
}
8387
}
8488
}

rename-twemoji.sh

Lines changed: 123 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,123 @@
1+
#!/bin/bash
2+
3+
EMOTE_DIRECTORY="./twemoji/v/latest/72x72"
4+
EXTENSION=".png"
5+
6+
#**-20e3 **-fe0f-20e3
7+
#2763 2763-fe0f
8+
#2764 2764-fe0f
9+
#1f17* 1f17*-fe0f
10+
#13f32[1-c]
11+
#1f39[6-f]
12+
#1f3d[4-f]
13+
14+
15+
# note: could try adding -fe0f to all 1f5** with no additional modifiers?
16+
17+
#1f58[7-d]
18+
#1f5[a5-fa]
19+
20+
21+
seq 0x24c2 0x25fb | while read n; do
22+
hex="$(printf '%04x' "$n")"
23+
mv "${EMOTE_DIRECTORY}/${hex}${EXTENSION}" "${EMOTE_DIRECTORY}/${hex}-fe0f${EXTENSION}"
24+
done
25+
26+
27+
seq 0x20 0x39 | while read n; do
28+
hex="$(printf '%02x' "$n")"
29+
mv "${EMOTE_DIRECTORY}/${hex}-20e3${EXTENSION}" "${EMOTE_DIRECTORY}/${hex}-fe0f-20e3${EXTENSION}"
30+
done
31+
32+
seq 0x1f170 0x1f17f | while read n; do
33+
hex="$(printf '%04x' "$n")"
34+
mv "${EMOTE_DIRECTORY}/${hex}${EXTENSION}" "${EMOTE_DIRECTORY}/${hex}-fe0f${EXTENSION}"
35+
done
36+
37+
seq 0x1f321 0x1f32c | while read n; do
38+
hex="$(printf '%04x' "$n")"
39+
mv "${EMOTE_DIRECTORY}/${hex}${EXTENSION}" "${EMOTE_DIRECTORY}/${hex}-fe0f${EXTENSION}"
40+
done
41+
42+
seq 0x1f396 0x1f39f | while read n; do
43+
hex="$(printf '%04x' "$n")"
44+
mv "${EMOTE_DIRECTORY}/${hex}${EXTENSION}" "${EMOTE_DIRECTORY}/${hex}-fe0f${EXTENSION}"
45+
done
46+
47+
seq 0x1f3d4 0x1f3df | while read n; do
48+
hex="$(printf '%04x' "$n")"
49+
mv "${EMOTE_DIRECTORY}/${hex}${EXTENSION}" "${EMOTE_DIRECTORY}/${hex}-fe0f${EXTENSION}"
50+
done
51+
52+
seq 0x1f587 0x1f58d | while read n; do
53+
hex="$(printf '%04x' "$n")"
54+
echo $hex
55+
mv "${EMOTE_DIRECTORY}/${hex}${EXTENSION}" "${EMOTE_DIRECTORY}/${hex}-fe0f${EXTENSION}"
56+
done
57+
58+
seq 0x1f5a5 0x1f5fa | while read n; do
59+
hex="$(printf '%04x' "$n")"
60+
mv "${EMOTE_DIRECTORY}/${hex}${EXTENSION}" "${EMOTE_DIRECTORY}/${hex}-fe0f${EXTENSION}"
61+
done
62+
63+
seq 0x1f6e0 0x1f6e9 | while read n; do
64+
hex="$(printf '%04x' "$n")"
65+
mv "${EMOTE_DIRECTORY}/${hex}${EXTENSION}" "${EMOTE_DIRECTORY}/${hex}-fe0f${EXTENSION}"
66+
done
67+
68+
seq 0x2139 0x21aa | while read n; do
69+
hex="$(printf '%04x' "$n")"
70+
mv "${EMOTE_DIRECTORY}/${hex}${EXTENSION}" "${EMOTE_DIRECTORY}/${hex}-fe0f${EXTENSION}"
71+
done
72+
73+
seq 0x23f8 0x23fc | while read n; do
74+
hex="$(printf '%04x' "$n")"
75+
mv "${EMOTE_DIRECTORY}/${hex}${EXTENSION}" "${EMOTE_DIRECTORY}/${hex}-fe0f${EXTENSION}"
76+
done
77+
78+
seq 0x25ff 0x2611 | while read n; do
79+
hex="$(printf '%04x' "$n")"
80+
mv "${EMOTE_DIRECTORY}/${hex}${EXTENSION}" "${EMOTE_DIRECTORY}/${hex}-fe0f${EXTENSION}"
81+
done
82+
83+
seq 0x261d 0x2642 | while read n; do
84+
hex="$(printf '%04x' "$n")"
85+
mv "${EMOTE_DIRECTORY}/${hex}${EXTENSION}" "${EMOTE_DIRECTORY}/${hex}-fe0f${EXTENSION}"
86+
done
87+
88+
seq 0x265f 0x267e | while read n; do
89+
hex="$(printf '%04x' "$n")"
90+
mv "${EMOTE_DIRECTORY}/${hex}${EXTENSION}" "${EMOTE_DIRECTORY}/${hex}-fe0f${EXTENSION}"
91+
done
92+
93+
seq 0x2694 0x26a0 | while read n; do
94+
hex="$(printf '%04x' "$n")"
95+
mv "${EMOTE_DIRECTORY}/${hex}${EXTENSION}" "${EMOTE_DIRECTORY}/${hex}-fe0f${EXTENSION}"
96+
done
97+
98+
seq 0x270d 0x2721 | while read n; do
99+
hex="$(printf '%04x' "$n")"
100+
mv "${EMOTE_DIRECTORY}/${hex}${EXTENSION}" "${EMOTE_DIRECTORY}/${hex}-fe0f${EXTENSION}"
101+
done
102+
103+
seq 0x3030 0x3299 | while read n; do
104+
hex="$(printf '%04x' "$n")"
105+
mv "${EMOTE_DIRECTORY}/${hex}${EXTENSION}" "${EMOTE_DIRECTORY}/${hex}-fe0f${EXTENSION}"
106+
done
107+
108+
seq 0x2934 0x2b07 | while read n; do
109+
hex="$(printf '%04x' "$n")"
110+
#echo $hex
111+
mv "${EMOTE_DIRECTORY}/${hex}${EXTENSION}" "${EMOTE_DIRECTORY}/${hex}-fe0f${EXTENSION}"
112+
done
113+
114+
#1f6c[d-f]
115+
#1f6f[0,3]
116+
117+
printf "%s\n" "${arr[@]}"
118+
# single character renames
119+
arr=("25fc" "1f37d" "1f43f" "1f6cb" "1f6cd" "1f6ce" "2763" "2764" "1f6cf" "1f6f0" "1f6f1" "1f6f1" "1f6f2" "1f6f3" "1f590" "2328" "23cf" "23f1" "23f2" "23ed" "23ee" "23ef" "1f202" "1f237" "1f336" "1f3cc" "1f3cb" "1f3cd" "1f3ce" "1f3f3" "1f3f5" "1f3f7" "1f441" "1f4fd" "1f549" "1f54a" "1f56f" "1f570" "1f573" "1f574" "1f575" "1f576" "1f577" "1f578" "1f579" "203c" "2049" "2618" "2692" "26b0" "26b1" "26c8" "26cf" "26d1" "26d3" "26e9" "26f0" "1f3d6" "26f4" "26f7" "26f8" "26f9" "2702" "2708" "2709" "270c" "2733" "2734" "2744" "2747" "27a1")
120+
for b in ${arr[@]}; do
121+
#echo "Hi! ${b}"
122+
mv "${EMOTE_DIRECTORY}/${b}${EXTENSION}" "${EMOTE_DIRECTORY}/${b}-fe0f${EXTENSION}"
123+
done

src/main/java/com/github/cinnamondev/minemoji/Command.java

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,9 @@ public class Command {
2929
private List<Component> defaultPackPages = Collections.emptyList();
3030

3131
public void registerCustomPacks(Map<String, EmojiSet> packs) {
32-
this.packPages = packs.entrySet().stream().map(e ->
33-
Map.entry(e.getKey(),
32+
this.packPages = packs.entrySet().stream()
33+
.sorted(Map.Entry.comparingByKey())
34+
.map(e -> Map.entry(e.getKey(),
3435
paginateComponents(e.getValue().emojis.stream()
3536
.map(emote -> emoteWithLore(
3637
SpriteEmojiManager.spriteMetaToComponent(emote),
@@ -42,6 +43,7 @@ public void registerCustomPacks(Map<String, EmojiSet> packs) {
4243
public void registerDefaultPack(Map<Emoji, ObjectComponent> pack) {
4344
this.defaultPackPages = paginateComponents(
4445
pack.entrySet().stream()
46+
.sorted(Comparator.comparing(e -> e.getKey().getGroup()))
4547
.filter(e -> !e.getKey().getDiscordAliases().isEmpty())
4648
.map(e -> emoteWithLore(e.getValue(), e.getKey().getDiscordAliases().getFirst()))
4749
.toList(),
@@ -104,6 +106,9 @@ public Command(Minemoji p) {
104106
return 1;
105107
})
106108
)
109+
.then(Commands.literal("reload")
110+
.requires(src -> src.getSender().hasPermission("minemoji.reload"))
111+
.executes(this::reloadCommand))
107112
.then(Commands.literal("help").executes(Command::helpCommand))
108113
.executes(Command::helpCommand)
109114
.build();
@@ -180,6 +185,16 @@ private static Component pageScroller(String pack, int currentPage, int totalPag
180185
.append(nextPage);
181186

182187
}
188+
189+
private int reloadCommand(CommandContext<CommandSourceStack> ctx) throws CommandSyntaxException {
190+
try {
191+
p.blockingLoad();
192+
} catch (Exception e) {
193+
p.getLogger().severe(e.getMessage());
194+
ctx.getSource().getSender().sendMessage(Component.text("Failed to load reload; see console.").color(NamedTextColor.RED));
195+
}
196+
return 1;
197+
}
183198
private static int helpCommand(CommandContext<CommandSourceStack> context) throws CommandSyntaxException {
184199
context.getSource().getSender().sendMessage(Component.text("""
185200
/minemoji list <pack-name|unicode>"""));

src/main/java/com/github/cinnamondev/minemoji/DiscordIntegration.java

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,13 @@
22

33
import github.scarsz.discordsrv.api.Subscribe;
44
import github.scarsz.discordsrv.api.events.*;
5-
import net.kyori.adventure.text.TextReplacementConfig;
65
import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer;
76
import net.kyori.adventure.text.Component;
87

9-
import java.util.regex.Pattern;
10-
118
public class DiscordIntegration {
12-
private final SpriteEmojiManager manager;
139
private final Minemoji p;
14-
public DiscordIntegration(Minemoji p, SpriteEmojiManager emojiManager) {
10+
public DiscordIntegration(Minemoji p) {
1511
this.p = p;
16-
this.manager = emojiManager;
1712
}
1813

1914
// HATE HATE!!!!
@@ -34,7 +29,7 @@ private static github.scarsz.discordsrv.dependencies.kyori.adventure.text.Compon
3429
@Subscribe
3530
public void onMessageSent(DiscordGuildMessagePreBroadcastEvent e) {
3631
e.setMessage(toShaded(
37-
manager.emojize(fromShaded(e.getMessage()))
32+
p.getEmoteManager().emojize(fromShaded(e.getMessage()))
3833
));
3934
// This is janky,, we are stopping discordsrv from broadcasting so we can do it instead. prevents weirdness with
4035
// components.
@@ -49,7 +44,7 @@ public void onMessageSent(DiscordGuildMessagePreBroadcastEvent e) {
4944
// .build();
5045
@Subscribe
5146
public void onMessageReceived(GameChatMessagePreProcessEvent e) {
52-
Component demojized = manager.demojize(fromShaded(e.getMessageComponent()), true);
47+
Component demojized = p.getEmoteManager().demojize(fromShaded(e.getMessageComponent()), true);
5348
//demojized = demojized.replaceText(PREFIXED_EMOTE_REPLACER); // MAKE QUADRUPLE SURE!
5449

5550
e.setMessageComponent(toShaded(demojized));

src/main/java/com/github/cinnamondev/minemoji/EmojiRenderer.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,10 @@
1212

1313

1414
public class EmojiRenderer implements Listener, io.papermc.paper.chat.ChatRenderer {
15-
private final SpriteEmojiManager manager;
15+
private final Minemoji p;
1616
private final boolean discordSrv;
17-
public EmojiRenderer(SpriteEmojiManager manager, boolean discordSrvEnabled) {
18-
this.manager = manager;
17+
public EmojiRenderer(Minemoji p, boolean discordSrvEnabled) {
18+
this.p = p;
1919
this.discordSrv = discordSrvEnabled;
2020
}
2121

@@ -24,7 +24,7 @@ public void onChat(AsyncChatEvent e) {
2424
if (discordSrv) {
2525
// makes reverse emoji lookup simpler
2626
e.message(
27-
manager.emojize(e.message())
27+
p.getEmoteManager().emojize(e.message())
2828
);
2929
} else {
3030
e.renderer(this);
@@ -37,6 +37,6 @@ public void onChat(AsyncChatEvent e) {
3737
if (!source.hasPermission("minemoji.emoji")) {
3838
return ChatRenderer.defaultRenderer().render(source, sourceDisplayName, message, viewer);
3939
}
40-
return ChatRenderer.defaultRenderer().render(source, sourceDisplayName, manager.emojize(message), viewer);
40+
return ChatRenderer.defaultRenderer().render(source, sourceDisplayName, p.getEmoteManager().emojize(message), viewer);
4141
}
4242
}

src/main/java/com/github/cinnamondev/minemoji/EmojiSet.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ public SpriteMeta(String emojiText, String resource, long snowflake, boolean ani
1414
this.animated = animated;
1515
this.snowflake = snowflake;
1616
}
17-
public boolean animated;
18-
public long snowflake;
17+
public boolean animated = false;
18+
public long snowflake = -1;
1919
public String emojiText;
2020
public String resource;
2121
//public String[] aliases;

0 commit comments

Comments
 (0)