support more chat types
This commit is contained in:
parent
25b639c65e
commit
be938a4d8a
1 changed files with 55 additions and 36 deletions
|
@ -98,6 +98,24 @@ public class ChatPlugin extends Bot.Listener {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String getTranslationByChatType (int chatType) {
|
||||||
|
String translation = null;
|
||||||
|
|
||||||
|
// maybe use the registry in the login packet? too lazy.,.,,.
|
||||||
|
switch (chatType) {
|
||||||
|
case 0 -> translation = "chat.type.text"; // normal vanilla chat message
|
||||||
|
case 1 -> translation = "chat.type.emote"; // /me
|
||||||
|
case 2 -> translation = "commands.message.display.incoming"; // player that received /w message
|
||||||
|
case 3 -> translation = "commands.message.display.outgoing"; // player that sent /w message
|
||||||
|
case 4 -> translation = "chat.type.announcement"; // /say
|
||||||
|
case 5 -> translation = "chat.type.team.text"; // player that received /teammsg message
|
||||||
|
case 6 -> translation = "chat.type.team.sent"; // player that sent /teammsg message
|
||||||
|
case 7 -> translation = "%s"; // raw, idk when and where this is used
|
||||||
|
}
|
||||||
|
|
||||||
|
return translation;
|
||||||
|
}
|
||||||
|
|
||||||
public void packetReceived (ClientboundPlayerChatPacket packet) {
|
public void packetReceived (ClientboundPlayerChatPacket packet) {
|
||||||
final UUID senderUUID = packet.getSender();
|
final UUID senderUUID = packet.getSender();
|
||||||
|
|
||||||
|
@ -114,54 +132,64 @@ public class ChatPlugin extends Bot.Listener {
|
||||||
for (Listener listener : listeners) {
|
for (Listener listener : listeners) {
|
||||||
listener.playerMessageReceived(playerMessage);
|
listener.playerMessageReceived(playerMessage);
|
||||||
|
|
||||||
if (packet.getChatType() == 4) { // type 4 is /say
|
final Component unsignedContent = packet.getUnsignedContent();
|
||||||
final Component component = Component.translatable(
|
|
||||||
"chat.type.announcement",
|
final String translation = getTranslationByChatType(packet.getChatType());
|
||||||
playerMessage.displayName(),
|
|
||||||
playerMessage.contents()
|
if (translation != null && unsignedContent == null) {
|
||||||
);
|
TranslatableComponent component = Component.translatable(translation);
|
||||||
|
|
||||||
|
if (translation.equals("chat.type.team.text") || translation.equals("chat.type.team.sent")) { // ohio
|
||||||
|
component = component.args(
|
||||||
|
Component.empty(), // TODO: fix team name.,.,
|
||||||
|
playerMessage.displayName(),
|
||||||
|
playerMessage.contents()
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
component = component.args(playerMessage.displayName(), playerMessage.contents());
|
||||||
|
}
|
||||||
|
|
||||||
listener.systemMessageReceived(component);
|
listener.systemMessageReceived(component);
|
||||||
} else {
|
} else {
|
||||||
final Component unsignedContent = packet.getUnsignedContent();
|
|
||||||
|
|
||||||
if (unsignedContent == null) return;
|
|
||||||
|
|
||||||
listener.systemMessageReceived(unsignedContent);
|
listener.systemMessageReceived(unsignedContent);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void packetReceived (ClientboundDisguisedChatPacket packet) {
|
public void packetReceived (ClientboundDisguisedChatPacket packet) {
|
||||||
// totallynotskidded™ from chipmunkbot and modified i guess
|
final String translation = getTranslationByChatType(packet.getChatType());
|
||||||
|
|
||||||
final int type = packet.getChatType();
|
final Component component = packet.getMessage();
|
||||||
|
|
||||||
// i think im missing other types
|
PlayerMessage parsedFromMessage = null;
|
||||||
if (type == 1 || type == 4 || type == 2) { // type 1 is /me, type 4 is /say, type 2 is /msg /tell or whatever thing
|
|
||||||
|
for (ChatParser parser : chatParsers) {
|
||||||
|
parsedFromMessage = parser.parse(component);
|
||||||
|
if (parsedFromMessage != null) break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (translation != null && parsedFromMessage == null) {
|
||||||
final Component name = packet.getName();
|
final Component name = packet.getName();
|
||||||
final Component content = packet.getMessage();
|
final Component content = packet.getMessage();
|
||||||
|
|
||||||
String translate = null;
|
TranslatableComponent translatableComponent = Component.translatable(translation);
|
||||||
|
|
||||||
switch (type) {
|
if (translation.equals("chat.type.team.text") || translation.equals("chat.type.team.sent")) { // ohio
|
||||||
case 1 -> translate = "chat.type.emote";
|
translatableComponent = translatableComponent.args(
|
||||||
case 4 -> translate = "chat.type.announcement";
|
Component.empty(), // TODO: fix team name.,.,
|
||||||
case 2 -> translate = "commands.message.display.incoming";
|
name,
|
||||||
|
content
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
translatableComponent = translatableComponent.args(name, content);
|
||||||
}
|
}
|
||||||
|
|
||||||
final Component component = Component.translatable(
|
|
||||||
translate,
|
|
||||||
name,
|
|
||||||
content
|
|
||||||
);
|
|
||||||
|
|
||||||
for (Listener listener : listeners) {
|
for (Listener listener : listeners) {
|
||||||
listener.systemMessageReceived(component);
|
listener.systemMessageReceived(translatableComponent);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (ChatParser parser : chatParsers) {
|
for (ChatParser parser : chatParsers) {
|
||||||
final PlayerMessage parsed = parser.parse(component);
|
final PlayerMessage parsed = parser.parse(translatableComponent);
|
||||||
|
|
||||||
if (parsed == null) continue;
|
if (parsed == null) continue;
|
||||||
|
|
||||||
|
@ -172,15 +200,6 @@ public class ChatPlugin extends Bot.Listener {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
final Component component = packet.getMessage();
|
|
||||||
|
|
||||||
PlayerMessage parsedFromMessage = null;
|
|
||||||
|
|
||||||
for (ChatParser parser : chatParsers) {
|
|
||||||
parsedFromMessage = parser.parse(component);
|
|
||||||
if (parsedFromMessage != null) break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (parsedFromMessage == null) return;
|
if (parsedFromMessage == null) return;
|
||||||
|
|
||||||
final PlayerMessage playerMessage = new PlayerMessage(parsedFromMessage.sender(), packet.getName(), parsedFromMessage.contents());
|
final PlayerMessage playerMessage = new PlayerMessage(parsedFromMessage.sender(), packet.getName(), parsedFromMessage.contents());
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue