package net.blay09.mods.eirairc.bot; import net.blay09.mods.eirairc.api.irc.IRCChannel; import net.blay09.mods.eirairc.api.irc.IRCUser; import net.minecraft.command.CommandResultStats; import net.minecraft.command.ICommandSender; import net.minecraft.entity.Entity; import net.minecraft.server.MinecraftServer; import net.minecraft.util.BlockPos; import net.minecraft.util.ChatComponentText; import net.minecraft.util.IChatComponent; import net.minecraft.util.Vec3; import net.minecraft.world.World; public class IRCUserCommandSender implements ICommandSender { private final IRCChannel channel; private final IRCUser user; private final boolean broadcastResult; private final boolean opEnabled; private final String outputFilter; public IRCUserCommandSender(IRCChannel channel, IRCUser user, boolean broadcastResult, boolean opEnabled, String outputFilter) { this.channel = channel; this.user = user; this.broadcastResult = broadcastResult; this.opEnabled = opEnabled; this.outputFilter = outputFilter; } @Override public String getName() { return "[EiraIRC] " + user.getName(); } @Override public IChatComponent getDisplayName() { return new ChatComponentText(getName()); } @Override public void addChatMessage(IChatComponent chatComponent) { String message = chatComponent.getUnformattedText(); if(outputFilter.isEmpty() || message.matches(outputFilter)) { if (broadcastResult && channel != null) { channel.message(chatComponent.getUnformattedText()); } else { user.notice(chatComponent.getUnformattedText()); } } } @Override public boolean canCommandSenderUseCommand(int permLevel, String commandName) { return opEnabled; } @Override public BlockPos getPosition() { return new BlockPos(0, 0, 0); } @Override public Vec3 getPositionVector() { return new Vec3(0, 0, 0); } @Override public World getEntityWorld() { return MinecraftServer.getServer().getEntityWorld(); } @Override public Entity getCommandSenderEntity() { return null; } @Override public boolean sendCommandFeedback() { return true; } @Override public void setCommandStat(CommandResultStats.Type type, int amount) {} }