package net.minecraft.command; import java.util.List; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.network.play.server.S29PacketSoundEffect; import net.minecraft.server.MinecraftServer; import net.minecraft.util.BlockPos; import net.minecraft.util.Vec3; public class CommandPlaySound extends CommandBase { private static final String __OBFID = "CL_00000774"; public String getCommandName() { return "playsound"; } /** * Return the required permission level for this command. */ public int getRequiredPermissionLevel() { return 2; } public String getCommandUsage(ICommandSender sender) { return "commands.playsound.usage"; } public void processCommand(ICommandSender sender, String[] args) throws CommandException { if (args.length < 2) { throw new WrongUsageException(this.getCommandUsage(sender), new Object[0]); } else { byte var3 = 0; int var31 = var3 + 1; String var4 = args[var3]; EntityPlayerMP var5 = getPlayer(sender, args[var31++]); Vec3 var6 = sender.getPositionVector(); double var7 = var6.xCoord; if (args.length > var31) { var7 = func_175761_b(var7, args[var31++], true); } double var9 = var6.yCoord; if (args.length > var31) { var9 = func_175769_b(var9, args[var31++], 0, 0, false); } double var11 = var6.zCoord; if (args.length > var31) { var11 = func_175761_b(var11, args[var31++], true); } double var13 = 1.0D; if (args.length > var31) { var13 = parseDouble(args[var31++], 0.0D, 3.4028234663852886E38D); } double var15 = 1.0D; if (args.length > var31) { var15 = parseDouble(args[var31++], 0.0D, 2.0D); } double var17 = 0.0D; if (args.length > var31) { var17 = parseDouble(args[var31], 0.0D, 1.0D); } double var19 = var13 > 1.0D ? var13 * 16.0D : 16.0D; double var21 = var5.getDistance(var7, var9, var11); if (var21 > var19) { if (var17 <= 0.0D) { throw new CommandException("commands.playsound.playerTooFar", new Object[] {var5.getName()}); } double var23 = var7 - var5.posX; double var25 = var9 - var5.posY; double var27 = var11 - var5.posZ; double var29 = Math.sqrt(var23 * var23 + var25 * var25 + var27 * var27); if (var29 > 0.0D) { var7 = var5.posX + var23 / var29 * 2.0D; var9 = var5.posY + var25 / var29 * 2.0D; var11 = var5.posZ + var27 / var29 * 2.0D; } var13 = var17; } var5.playerNetServerHandler.sendPacket(new S29PacketSoundEffect(var4, var7, var9, var11, (float)var13, (float)var15)); notifyOperators(sender, this, "commands.playsound.success", new Object[] {var4, var5.getName()}); } } public List addTabCompletionOptions(ICommandSender sender, String[] args, BlockPos pos) { return args.length == 2 ? getListOfStringsMatchingLastWord(args, MinecraftServer.getServer().getAllUsernames()) : (args.length > 2 && args.length <= 5 ? func_175771_a(args, 2, pos) : null); } /** * Return whether the specified command parameter index is a username parameter. */ public boolean isUsernameIndex(String[] args, int index) { return index == 1; } }