Перейти к содержимому
  • записей
    5
  • комментариев
    5
  • просмотра
    2 093

Крафт OCTechnics. Часть 4 - команды консоли

ProgramCrafter

476 просмотров

После долгого перерыва я наконец смог вернуться к своему моду OCTechnics!

Решил сначала добавить в мод команду для проверки, всё ли работает правильно.

 

В этот раз, чтобы узнать, как добавляются свои команды, полинтернета не хватило. Пришлось смотреть уже не гайды, а чистый код OpenComputers.

Там нашёлся замечательный пример: .../common/command/SimpleCommand.scala.

 

Сама реализация команды получила отдельный файл: org/octechnics/octechnics/OCTTestCommand.java:

Скрытый текст

package org.octechnics.octechnics;

import net.minecraft.command.CommandBase;
import net.minecraft.command.ICommandSender;
import net.minecraft.command.WrongUsageException;

import net.minecraft.server.MinecraftServer;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.util.ChatComponentText;

import java.util.List;
import java.util.Arrays;

class OCTTestCommand extends CommandBase {
    private static String[] aliases = new String[0];
    
    private void echo(EntityPlayer player, String message) {
        player.addChatMessage(new ChatComponentText(message));
    }
    
    @Override
    public String getCommandName() {
        return "oct";
    }
    
    @Override
    public List<String> getCommandAliases() {
        return Arrays.asList(OCTTestCommand.aliases);
    }
    
    @Override
    public String getCommandUsage(ICommandSender source) {
        return "/oct - Debugging OCTechnics";
    }
    
    @Override
    public boolean canCommandSenderUseCommand(ICommandSender source) {
        return true;
    }
    
    @Override
    public void processCommand(ICommandSender source, String[] command) {
        EntityPlayer player = (EntityPlayer)source;
        if (player != null) {
            this.echo(player, "OK, OCTechnics works");
        } else {
            throw new WrongUsageException("Can only be used by players.");
        }
    }
}

 

 

Чтобы команда /oct работала на сервере, нужно дописать ещё несколько строк кода в основной файл OCTechnics.java:

Скрытый текст

import cpw.mods.fml.common.event.FMLServerStartingEvent;
...

... (самый конец)
    @EventHandler
    public void serverStart(FMLServerStartingEvent evt) {
        logger.info("octechnics - got FMLServerStartingEvent");
        
        evt.registerServerCommand(new OCTTestCommand());
    }
}

 

 

Мод OCTechnics загружается и работает! В этом можно убедиться, вызвав команду /oct: мод ответит "OK, OCTechnics works."

 

В следующей части уже будет добавление новых блоков, крафтов и блок-сущностей (на самом деле всё это готово, осталось только статью написать).

Команда пригодится для отладки (я не планирую добавлять к своим блокам GUI, т.е. инвентарь без компьютера просмотреть будет невозможно!)

 

Для тех, кому интересна разработка мода в реальном времени, рекомендую взглянуть сюда: https://github.com/ProgramCrafter/OCTechnics/.

  • Нравится 3


0 комментариев


Рекомендуемые комментарии

Нет комментариев для отображения

Гость
Добавить комментарий...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...