Не работает команда со стороны клиента

Версия Minecraft
1.7.10
API
Forge
52
1
1
Мне понадобилось создать команду с помощью гайда тык. С сервером эта команда не предлагала никакого взаимодействия (зачем мучаться с пакетами, когда можно этого не делать), так что я решил ее зарегать со стороны клиента.

Java:
@Override
    public void preInit(FMLPreInitializationEvent event) {
        ClientCommandHandler.instance.registerCommand(new CommandBlockCopy());  
        super.preInit(event);  
        }

Вот сама команда
Java:
public class CommandBlockCopy extends CommandBase {

    public static final String NAME = "ensBlockCopy", USAGE = "ensBlockCopy <action> <args>";

    @Override
    public String getCommandName() {
        return this.NAME;
    }

    @Override
    public String getCommandUsage(ICommandSender commandSender) {
        return this.USAGE;
    }
   
    @Override
    public boolean canCommandSenderUseCommand(ICommandSender commandSender) {
        return true;
    }

    @Override
    public void processCommand(ICommandSender commandSender, String[] args) {
        if (commandSender instanceof EntityPlayer) {
            if (args.length < 1) {
                throw new WrongUsageException(this.getCommandUsage(commandSender));
            }

            if (args[0].equals("start_copy")) {
                if (!BlockCopyer.copyStarted) {
                    BlockCopyer.copyStarted = true;
                    CommandBase.getCommandSenderAsPlayer(commandSender)
                            .addChatMessage(new ChatComponentTranslation("commands.ensBlockCopy.start_copy.start"));
                } else {
                    CommandBase.getCommandSenderAsPlayer(commandSender).addChatMessage(
                            new ChatComponentTranslation("commands.ensBlockCopy.start_copy.already_started"));
                }
            }
            if (args[0].equals("select_centre")) {
                if (BlockCopyer.copyStarted) {
                    CommandBase.getCommandSenderAsPlayer(commandSender)
                            .addChatMessage(new ChatComponentTranslation("commands.ensBlockCopy.select_centre"));
                } else {
                    CommandBase.getCommandSenderAsPlayer(commandSender)
                            .addChatMessage(new ChatComponentTranslation("commands.ensBlockCopy.not_started"));
                }
            }
            if (args[0].equals("remove_blocks")) {
                if (BlockCopyer.copyStarted) {
                    BlockCopyer.mode = 2;
                    CommandBase.getCommandSenderAsPlayer(commandSender)
                            .addChatMessage(new ChatComponentTranslation("commands.ensBlockCopy.remove_blocks"));
                } else {
                    CommandBase.getCommandSenderAsPlayer(commandSender)
                            .addChatMessage(new ChatComponentTranslation("commands.ensBlockCopy.not_started"));
                }
            }
            if (args[0].equals("end_copy")) {
                if (BlockCopyer.copyStarted) {
                    CommandBase.getCommandSenderAsPlayer(commandSender)
                            .addChatMessage(new ChatComponentTranslation("commands.ensBlockCopy.end_copy.end"));
                    BlockCopyer.copyStarted = false;
                } else {
                    CommandBase.getCommandSenderAsPlayer(commandSender)
                            .addChatMessage(new ChatComponentTranslation("commands.ensBlockCopy.not_started"));
                }
            }
            if (args[0].equals("add_blocks")) {
                if (BlockCopyer.copyStarted) {
                    BlockCopyer.mode = 1;
                    CommandBase.getCommandSenderAsPlayer(commandSender)
                            .addChatMessage(new ChatComponentTranslation("commands.ensBlockCopy.add_blocks"));
                } else {
                    CommandBase.getCommandSenderAsPlayer(commandSender)
                            .addChatMessage(new ChatComponentTranslation("commands.ensBlockCopy.not_started"));
                }
            }
            if (args[0].equals("default")) {
                if (BlockCopyer.copyStarted) {
                    BlockCopyer.mode = 0;
                    CommandBase.getCommandSenderAsPlayer(commandSender)
                            .addChatMessage(new ChatComponentTranslation("commands.ensBlockCopy.default"));
                } else {
                    CommandBase.getCommandSenderAsPlayer(commandSender)
                            .addChatMessage(new ChatComponentTranslation("commands.ensBlockCopy.not_started"));
                }
            }
        }
    }

    public List addTabCompletionOptions(ICommandSender p_71516_1_, String[] args) {
        return args.length == 1
                ? getListOfStringsMatchingLastWord(args,
                        new String[] { "start_copy", "end_copy", "default", "remove_blocks", "select_centre",
                                "add_blocks" })
                : null;
    }
}

Когда использую команду, то выводит "You must specify which player you wish to perform this action on". Я понимаю, что надо каким-то образом указать исполнителя команды или что-то в это роде. Но как?
 

sk9zist :l

Исправился
981
18
157
Нельзя на клиенте все делать, некоторые методы выполняются только на сервере. Если тебе нужна команда для одиночной игры (на сервере по-любому не получиться и предмет не будет чиниться пока ты не установишь мод на сервер) то просто сделай все по туториал и зарегай на сервере. Потому что в одиночной игре есть встроенный сервер и ты сможешь чинить себе предметы, по идеи
 
Последнее редактирование:
Сверху