Mojira Archive
MC-99762

help command not working for commands and not throwing exceptions in command block

Caused by MC-69038

The bug

The /help command is not correctly working anymore in command blocks. For example /help -2 is not throwing a NumberInvalidException exception and /help testfor is not showing the help for the /testfor command.

The reason

The following is based on decompiled version of Minecraft 1.9 using MCP 9.24 beta. All method and class names are the names used in the decompiled version.

The reason why this happens is because the method net.minecraft.command.CommandHelp.execute(MinecraftServer, ICommandSender, String[]) does not try to parse any of the arguments if the sender is a command block.

/**
 * Callback for when the command is executed
 *  
 * @param server The Minecraft server instance
 * @param sender The source of the command invocation
 * @param args The arguments that were passed
 */
public void execute(MinecraftServer server, ICommandSender sender, String[] args) throws CommandException
{
    // Replaced the old code
    //if (sender instanceof CommandBlockBaseLogic)
    //{
    //    sender.addChatMessage((new TextComponentString("Searge says: ")).appendText(seargeSays[this.rand.nextInt(seargeSays.length) % seargeSays.length]));
    //}
    //else
    //{
        //...
    //}
    
    List<ICommand> list = this.func_184900_a(sender, server);
    int i = 7;
    int j = (list.size() - 1) / 7;
    int k = 0;

    try
    {
        k = args.length == 0 ? 0 : parseInt(args[0], 1, j + 1) - 1;
    }
    catch (NumberInvalidException numberinvalidexception)
    {
        Map<String, ICommand> map = this.func_184899_a(server);
        ICommand icommand = (ICommand)map.get(args[0]);

        if (icommand != null)
        {
            throw new WrongUsageException(icommand.getCommandUsage(sender), new Object[0]);
        }

        if (MathHelper.parseIntWithDefault(args[0], -1) != -1)
        {
            throw numberinvalidexception;
        }

        throw new CommandNotFoundException();
    }
     
    if (sender instanceof CommandBlockBaseLogic)
    {
        sender.addChatMessage((new TextComponentString("Searge says: ")).appendText(seargeSays[this.rand.nextInt(seargeSays.length) % seargeSays.length]));
        return;
    }
    else {
       //...
    }
}

Duplicate

Marcono1234

2016-03-19, 06:59 PM

2017-12-30, 12:13 AM

2016-03-19, 11:27 PM

0

1

Unconfirmed

command, command_block

Minecraft 1.9.1 Pre-Release 3

-