Added ability to ignore commands using regexp; Refactored MinecraftListener;
Issue https://github.com/Chikachi/DiscordIntegration/issues/86 Signed-off-by: Mijago <afruehwald@mijago.de>
This commit is contained in:
parent
64db9374bc
commit
0a1f488ff4
@ -49,90 +49,104 @@ public class MinecraftListener {
|
|||||||
if (event.isCanceled()) return;
|
if (event.isCanceled()) return;
|
||||||
|
|
||||||
String commandName = event.getCommand().getName();
|
String commandName = event.getCommand().getName();
|
||||||
ICommandSender sender = event.getSender();
|
|
||||||
|
|
||||||
MinecraftConfig minecraftConfig = Configuration.getConfig().minecraft;
|
|
||||||
MinecraftDimensionConfig genericConfig = minecraftConfig.dimensions.generic;
|
|
||||||
|
|
||||||
MessageConfig messageConfig;
|
|
||||||
|
|
||||||
if (commandName.equalsIgnoreCase("say") || commandName.equalsIgnoreCase("me")) {
|
if (commandName.equalsIgnoreCase("say") || commandName.equalsIgnoreCase("me")) {
|
||||||
boolean isSayCommand = commandName.equalsIgnoreCase("say");
|
broadcastMeOrSayToDiscord(event);
|
||||||
|
} else {
|
||||||
|
String commandWithParameters = event.getCommand().getName() + " " + Joiner.on(" ").join(event.getParameters());
|
||||||
|
boolean commandIgnored = Configuration.getConfig().minecraft.dimensions.generic.isCommandIgnored(commandWithParameters);
|
||||||
|
boolean isLinkCommand = commandName.equalsIgnoreCase("discord")
|
||||||
|
&& event.getParameters().length > 0
|
||||||
|
&& event.getParameters()[0].equalsIgnoreCase("link");
|
||||||
|
|
||||||
if (isSayCommand && !Configuration.getConfig().minecraft.dimensions.generic.relaySayCommand) {
|
if (!commandIgnored && !isLinkCommand) {
|
||||||
return;
|
// Do not relay link commands
|
||||||
|
broadcastCommandToDiscord(event);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (!isSayCommand && !Configuration.getConfig().minecraft.dimensions.generic.relayMeCommand) {
|
private void broadcastMeOrSayToDiscord(CommandEvent event) {
|
||||||
return;
|
ICommandSender sender = event.getSender();
|
||||||
}
|
MinecraftConfig minecraftConfig = Configuration.getConfig().minecraft;
|
||||||
|
MinecraftDimensionConfig genericConfig = minecraftConfig.dimensions.generic;
|
||||||
|
MessageConfig messageConfig;
|
||||||
|
boolean isSayCommand = event.getCommand().getName().equalsIgnoreCase("say");
|
||||||
|
|
||||||
if (Configuration.getConfig().minecraft.dimensions.generic.ignoreFakePlayerChat && sender instanceof FakePlayer) {
|
if (isSayCommand && !Configuration.getConfig().minecraft.dimensions.generic.relaySayCommand) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
String message = Joiner.on(" ").join(event.getParameters());
|
if (!isSayCommand && !Configuration.getConfig().minecraft.dimensions.generic.relayMeCommand) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (Configuration.getConfig().minecraft.dimensions.generic.isMessageIgnored(message)) {
|
if (Configuration.getConfig().minecraft.dimensions.generic.ignoreFakePlayerChat && sender instanceof FakePlayer) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
HashMap<String, String> arguments = new HashMap<>();
|
String message = Joiner.on(" ").join(event.getParameters());
|
||||||
arguments.put("MESSAGE", isSayCommand ? message : "_" + message + "_");
|
|
||||||
|
|
||||||
String prefix = minecraftConfig.dimensions.generic.chatPrefix;
|
if (Configuration.getConfig().minecraft.dimensions.generic.isMessageIgnored(message)) {
|
||||||
messageConfig = minecraftConfig.dimensions.generic.messages.chatMessage;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
ArrayList<Long> channels;
|
HashMap<String, String> arguments = new HashMap<>();
|
||||||
|
arguments.put("MESSAGE", isSayCommand ? message : "_" + message + "_");
|
||||||
|
|
||||||
if (sender != null) {
|
String prefix = minecraftConfig.dimensions.generic.chatPrefix;
|
||||||
Entity entity = sender.getCommandSenderEntity();
|
messageConfig = minecraftConfig.dimensions.generic.messages.chatMessage;
|
||||||
|
|
||||||
if (entity != null) {
|
ArrayList<Long> channels;
|
||||||
MinecraftDimensionConfig dimensionConfig = minecraftConfig.dimensions.getDimension(entity.dimension);
|
|
||||||
|
|
||||||
if (dimensionConfig.chatPrefix != null && dimensionConfig.chatPrefix.trim().length() > 0) {
|
if (sender != null) {
|
||||||
prefix = dimensionConfig.chatPrefix;
|
Entity entity = sender.getCommandSenderEntity();
|
||||||
}
|
|
||||||
|
|
||||||
if (dimensionConfig.messages.chatMessage != null) {
|
if (entity != null) {
|
||||||
messageConfig = dimensionConfig.messages.chatMessage;
|
MinecraftDimensionConfig dimensionConfig = minecraftConfig.dimensions.getDimension(entity.dimension);
|
||||||
}
|
|
||||||
|
|
||||||
channels = dimensionConfig.relayChat.getChannels(
|
if (dimensionConfig.chatPrefix != null && dimensionConfig.chatPrefix.trim().length() > 0) {
|
||||||
genericConfig.relayChat.getChannels(
|
prefix = dimensionConfig.chatPrefix;
|
||||||
dimensionConfig.discordChannel.getChannels(
|
|
||||||
genericConfig.discordChannel
|
|
||||||
)
|
|
||||||
)
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
channels = genericConfig.relayChat.getChannels(genericConfig.discordChannel);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (dimensionConfig.messages.chatMessage != null) {
|
||||||
|
messageConfig = dimensionConfig.messages.chatMessage;
|
||||||
|
}
|
||||||
|
|
||||||
|
channels = dimensionConfig.relayChat.getChannels(
|
||||||
|
genericConfig.relayChat.getChannels(
|
||||||
|
dimensionConfig.discordChannel.getChannels(
|
||||||
|
genericConfig.discordChannel
|
||||||
|
)
|
||||||
|
)
|
||||||
|
);
|
||||||
} else {
|
} else {
|
||||||
channels = genericConfig.relayChat.getChannels(genericConfig.discordChannel);
|
channels = genericConfig.relayChat.getChannels(genericConfig.discordChannel);
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
GetEventAuthorNameAndAvatar getEventAuthorNameAndAvatar = new GetEventAuthorNameAndAvatar(sender).invoke();
|
channels = genericConfig.relayChat.getChannels(genericConfig.discordChannel);
|
||||||
String authorName = getEventAuthorNameAndAvatar.getAuthorName();
|
|
||||||
String avatarUrl = getEventAuthorNameAndAvatar.getAvatarUrl();
|
|
||||||
|
|
||||||
DiscordClient.getInstance().broadcast(
|
|
||||||
new Message()
|
|
||||||
.setAuthor(authorName)
|
|
||||||
.setAvatarUrl(avatarUrl)
|
|
||||||
.setMessage(messageConfig)
|
|
||||||
.setArguments(arguments)
|
|
||||||
.setPrefix(prefix),
|
|
||||||
channels
|
|
||||||
);
|
|
||||||
} else if (commandName.equalsIgnoreCase("discord")) {
|
|
||||||
// Do not relay linking commands
|
|
||||||
if (event.getParameters().length > 0 && event.getParameters()[0].equalsIgnoreCase("link")) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
GetEventAuthorNameAndAvatar getEventAuthorNameAndAvatar = new GetEventAuthorNameAndAvatar(sender).invoke();
|
||||||
|
String authorName = getEventAuthorNameAndAvatar.getAuthorName();
|
||||||
|
String avatarUrl = getEventAuthorNameAndAvatar.getAvatarUrl();
|
||||||
|
|
||||||
|
DiscordClient.getInstance().broadcast(
|
||||||
|
new Message()
|
||||||
|
.setAuthor(authorName)
|
||||||
|
.setAvatarUrl(avatarUrl)
|
||||||
|
.setMessage(messageConfig)
|
||||||
|
.setArguments(arguments)
|
||||||
|
.setPrefix(prefix),
|
||||||
|
channels
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void broadcastCommandToDiscord(CommandEvent event) {
|
||||||
|
ICommandSender sender = event.getSender();
|
||||||
|
MinecraftConfig minecraftConfig = Configuration.getConfig().minecraft;
|
||||||
|
MinecraftDimensionConfig genericConfig = minecraftConfig.dimensions.generic;
|
||||||
|
MessageConfig messageConfig;
|
||||||
ArrayList<Long> channels;
|
ArrayList<Long> channels;
|
||||||
|
|
||||||
messageConfig = minecraftConfig.dimensions.generic.messages.command;
|
messageConfig = minecraftConfig.dimensions.generic.messages.command;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user