Skip to content

Commit 4e1ffb4

Browse files
author
burdo
committed
streamline loading of MQ channels
1 parent 27e9793 commit 4e1ffb4

File tree

5 files changed

+33
-16
lines changed

5 files changed

+33
-16
lines changed

src/main/java/com/ampznetwork/chatmod/lite/ChatModCore.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import com.ampznetwork.chatmod.api.model.protocol.internal.PacketType;
88
import com.ampznetwork.chatmod.api.util.ChatMessageParser;
99
import com.ampznetwork.chatmod.lite.lang.Words;
10+
import com.ampznetwork.chatmod.lite.model.JacksonPacketConverter;
1011
import com.ampznetwork.chatmod.lite.model.abstr.ChannelConfigProvider;
1112
import com.ampznetwork.chatmod.lite.model.abstr.ChatDispatcher;
1213
import com.ampznetwork.chatmod.lite.model.abstr.ChatModConfig;
@@ -91,7 +92,7 @@ public void execAndRespond(
9192
}
9293
}
9394

94-
public void outbound(Channel channel, ChatMessagePacketImpl packet) {
95+
public void outbound(Channel channel, ChatMessagePacket packet) {
9596
if (channel.isPublish()) send(packet);
9697
else packetCaster.localcastPacket(packet);
9798
}
@@ -301,4 +302,16 @@ public boolean hasAccess(UUID id, Channel channel) {
301302
return channel.getPermission() == null || permissionAdapter.checkPermissionOrOp(id,
302303
"chat.channel." + channel.getName());
303304
}
305+
306+
public void loadMqChannels() {
307+
var exchange = config.getRabbit().exchange("minecraft", "topic");
308+
for (var channel : getChannels()) {
309+
if (!channel.isPublish()) continue;
310+
var route = exchange.route(Util.Kyori.sanitizePlain(config.getServerName() + ".chat." + channel.getName())
311+
.toLowerCase(), "chat." + channel.getName(), new JacksonPacketConverter(getObjectMapper()));
312+
route.subscribeData(packetCaster::localcastPacket);
313+
getMqChannels().put(channel, route);
314+
}
315+
log.info("Created %d RabbitMQ bindings".formatted(getMqChannels().size()));
316+
}
304317
}

src/main/java/com/ampznetwork/chatmod/lite/hytale/ChatModLiteHytale.java

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
package com.ampznetwork.chatmod.lite.hytale;
22

3+
import com.ampznetwork.chatmod.api.model.protocol.ChatMessage;
34
import com.ampznetwork.chatmod.api.model.protocol.ChatMessagePacket;
5+
import com.ampznetwork.chatmod.api.model.protocol.internal.ChatMessagePacketImpl;
6+
import com.ampznetwork.chatmod.api.model.protocol.internal.PacketType;
47
import com.ampznetwork.chatmod.api.util.ChatMessageParser;
58
import com.ampznetwork.chatmod.lite.ChatModCore;
69
import com.ampznetwork.chatmod.lite.config.HytaleConfigFile;
@@ -46,6 +49,7 @@ public ChatModLiteHytale(@NotNull JavaPluginInit init) {
4649
@Override
4750
protected void setup() {
4851
config.syncLoad();
52+
core.loadMqChannels();
4953

5054
super.setup();
5155

@@ -92,15 +96,19 @@ public void localcastPacket(ChatMessagePacket packet) {
9296

9397
@Override
9498
public Player getPlayer(UUID playerId) {
95-
return Player.basic(playerId, "Hytale User"); // todo
99+
var ref = Universe.get().getPlayer(playerId);
100+
return Player.basic(playerId, ref != null ? ref.getUsername() : "Hytale User");
96101
}
97102

98103
private PlayerChatEvent handleChat(PlayerChatEvent event) {
99104
var player = getPlayer(event.getSender().getUuid());
100105
var channel = core.activeChannels(player).findAny().orElseGet(() -> core.getChannels().getFirst());
101106

102-
var text = new ChatMessageParser().parse(event.getContent());
103-
core.localcast(channel, text);
107+
var text = new ChatMessageParser().parse(event.getContent());
108+
var message = new ChatMessage(player, event.getSender().getUsername(), event.getContent(), text);
109+
var packet = new ChatMessagePacketImpl(PacketType.CHAT, config.getServerName(), channel.getName(), message);
110+
111+
core.outbound(channel, packet);
104112

105113
event.setCancelled(true);
106114
return event;

src/main/java/com/ampznetwork/chatmod/lite/spigot/ChatModLiteSpigot.java

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
import com.ampznetwork.chatmod.api.model.protocol.internal.PacketType;
99
import com.ampznetwork.chatmod.api.util.ChatMessageParser;
1010
import com.ampznetwork.chatmod.lite.ChatModCore;
11-
import com.ampznetwork.chatmod.lite.model.JacksonPacketConverter;
1211
import com.ampznetwork.chatmod.lite.model.abstr.ChannelConfigProvider;
1312
import com.ampznetwork.chatmod.lite.model.abstr.ChatDispatcher;
1413
import com.ampznetwork.chatmod.lite.model.abstr.ChatModConfig;
@@ -248,15 +247,7 @@ public void onEnable() {
248247
}
249248
getLogger().info("Loaded %d channels".formatted(core.getChannels().size()));
250249

251-
var exchange = rabbit.exchange("minecraft", "topic");
252-
for (var channel : core.getChannels()) {
253-
if (!channel.isPublish()) continue;
254-
var route = exchange.route(Util.Kyori.sanitizePlain(serverName + ".chat." + channel.getName())
255-
.toLowerCase(), "chat." + channel.getName(), new JacksonPacketConverter(core.getObjectMapper()));
256-
route.subscribeData(this::localcastPacket);
257-
core.getMqChannels().put(channel, route);
258-
}
259-
getLogger().info("Created %d RabbitMQ bindings".formatted(core.getMqChannels().size()));
250+
core.loadMqChannels();
260251

261252
formattingScheme = cfg.getString("formatting.scheme",
262253
"&7[%server_name%&7] #&6%channel_name%&7 <%player_name%&7> &r%message%");

src/main/resources/hytale.config.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@
1111
{
1212
"name": "global",
1313
"alias": "g",
14-
"display": "&6global"
14+
"display": "&6global",
15+
"publish": true
1516
},
1617
{
1718
"name": "local",
@@ -23,6 +24,7 @@
2324
"name": "staff",
2425
"alias": "s",
2526
"display": "&4staff",
27+
"publish": true,
2628
"permission": "chat.channel.staff"
2729
}
2830
],

src/main/resources/manifest.json

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,10 @@
1111
"Website": "https://github.com/AMPZNetwork/ChatModLite",
1212
"ServerVersion": "*",
1313
"Dependencies": {},
14-
"OptionalDependencies": {},
14+
"OptionalDependencies": {
15+
"Hytale:Universe": "*",
16+
"Hytale:PermissionsModule": "*"
17+
},
1518
"DisabledByDefault": false,
1619
"Main": "com.ampznetwork.chatmod.lite.hytale.ChatModLiteHytale",
1720
"IncludesAssetPack": false

0 commit comments

Comments
 (0)