package com.xcompwiz.lookingglass.command; import java.util.Random; import net.minecraft.command.CommandBase; import net.minecraft.command.CommandException; import net.minecraft.command.ICommandSender; import net.minecraft.command.NumberInvalidException; import net.minecraft.command.PlayerNotFoundException; import net.minecraft.command.PlayerSelector; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.server.MinecraftServer; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ChunkCoordinates; import net.minecraft.world.World; public abstract class CommandBaseAdv extends CommandBase { public void sendToAdmins(ICommandSender agent, String text, Object[] objects) { func_152373_a(agent, this, text, objects); } public static EntityPlayerMP getTargetPlayer(ICommandSender sender, String target) { EntityPlayerMP entityplayermp = PlayerSelector.matchOnePlayer(sender, target); if (entityplayermp == null) { entityplayermp = MinecraftServer.getServer().getConfigurationManager().func_152612_a(target); } if (entityplayermp == null) { throw new PlayerNotFoundException(); } return entityplayermp; } public static Integer getSenderDimension(ICommandSender sender) { World w = sender.getEntityWorld(); if (w == null) throw new CommandException("You must specify a dimension to use this command from the commandline"); return w.provider.dimensionId; } /** * Returns the given ICommandSender as a EntityPlayer or throw an exception. */ public static TileEntity getCommandSenderAsTileEntity(ICommandSender sender) { try { World world = sender.getEntityWorld(); ChunkCoordinates coords = sender.getPlayerCoordinates(); return world.getTileEntity(coords.posX, coords.posY, coords.posZ); } catch (Exception e) { throw new CommandException("Could not get tile entity"); } } public static double handleRelativeNumber(ICommandSender sender, double origin, String arg) { return handleRelativeNumber(sender, origin, arg, -30000000, 30000000); } public static double handleRelativeNumber(ICommandSender par1ICommandSender, double origin, String arg, int min, int max) { boolean relative = arg.startsWith("~"); boolean random = arg.startsWith("?"); if (random) relative = true; double d1 = relative ? origin : 0.0D; if (!relative || arg.length() > 1) { boolean flag1 = arg.contains("."); if (relative) { arg = arg.substring(1); } double d2 = parseDouble(par1ICommandSender, arg); if (random) { Random rand = new Random(); d1 += (rand.nextDouble() * 2 - 1) * d2; } else { d1 += d2; } if (!flag1 && !relative) { d1 += 0.5D; } } if (min != 0 || max != 0) { if (d1 < min) { throw new NumberInvalidException("commands.generic.double.tooSmall", new Object[] { Double.valueOf(d1), Integer.valueOf(min) }); } if (d1 > max) { throw new NumberInvalidException("commands.generic.double.tooBig", new Object[] { Double.valueOf(d1), Integer.valueOf(max) }); } } return d1; } /** * Returns the player for a username as an Entity or throws an exception. */ public static Entity parsePlayerByName(String name) throws PlayerNotFoundException { EntityPlayerMP player = MinecraftServer.getServer().getConfigurationManager().func_152612_a(name); if (player != null) { return player; } throw new PlayerNotFoundException("lookingglass.commands.generic.player.notfound", new Object[] { name }); } public static float parseFloat(ICommandSender par0ICommandSender, String par1Str) { try { return Float.parseFloat(par1Str); } catch (NumberFormatException numberformatexception) { throw new NumberInvalidException("commands.generic.num.invalid", new Object[] { par1Str }); } } }