// Copyright (c) 2015, Christopher "BlayTheNinth" Baker package net.blay09.mods.eirairc.bot; import net.blay09.mods.eirairc.api.bot.IBotCommand; import net.blay09.mods.eirairc.api.bot.IRCBot; import net.blay09.mods.eirairc.api.irc.IRCChannel; import net.blay09.mods.eirairc.api.irc.IRCUser; import net.blay09.mods.eirairc.config.settings.BotSettings; import net.blay09.mods.eirairc.net.NetworkHandler; import net.blay09.mods.eirairc.net.message.MessageNotification; import net.blay09.mods.eirairc.util.*; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.server.MinecraftServer; import net.minecraft.util.IChatComponent; import org.apache.commons.lang3.StringUtils; import java.util.List; public class BotCommandMessage implements IBotCommand { @Override public String getCommandName() { return "msg"; } @Override public boolean isChannelCommand() { return false; } @Override public void processCommand(IRCBot bot, IRCChannel channel, IRCUser user, String[] args, IBotCommand commandSettings) { BotSettings botSettings = ConfigHelper.getBotSettings(channel); if(!botSettings.allowPrivateMessages.get()) { user.notice(I19n.format("eirairc:commands.msg.disabled")); } String playerName = args[0]; EntityPlayer entityPlayer = MinecraftServer.getServer().getConfigurationManager().getPlayerByUsername(playerName); if(entityPlayer == null) { List<EntityPlayerMP> playerEntityList = MinecraftServer.getServer().getConfigurationManager().playerEntityList; for(EntityPlayer entity : playerEntityList) { if(Utils.getNickGame(entity).equals(playerName) || Utils.getNickIRC(entity, channel).equals(playerName)) { entityPlayer = entity; } } if(entityPlayer == null) { user.notice(I19n.format("eirairc:general.noSuchPlayer")); return; } } String message = StringUtils.join(args, " ", 1, args.length); if(botSettings.filterLinks.get()) { message = MessageFormat.filterLinks(message); } IChatComponent chatComponent = MessageFormat.formatChatComponent(botSettings.getMessageFormat().mcPrivateMessage, bot.getConnection(), null, user, message, MessageFormat.Target.Minecraft, MessageFormat.Mode.Message); String notifyMsg = chatComponent.getUnformattedText(); if(notifyMsg.length() > 42) { notifyMsg = notifyMsg.substring(0, 42) + "..."; } NetworkHandler.instance.sendTo(new MessageNotification(NotificationType.PrivateMessage, notifyMsg), ((EntityPlayerMP) entityPlayer)); entityPlayer.addChatMessage(chatComponent); user.notice(I19n.format("eirairc:bot.msgSent", playerName, message)); } @Override public boolean requiresAuth() { return false; } @Override public boolean broadcastsResult() { return false; } @Override public boolean allowArgs() { return true; } @Override public String getCommandDescription() { return "Send a private message to an online player."; } }