Как создать команду 1.7.10?

Версия Minecraft
1.7.10
Здравствуйте ребята,как мне создать свою команду для мода. А точнее команду /kit для выдачи китов
 
Решение

Java:
@Mod(modid = KitMod.MODID, name = KitMod.NAME, version = KitMod.VERSION)
public class KitMod {

    public static final String
    MODID = "kit",
    NAME = "Kit Mod",
    VERSION = "0.02";

    @Mod.Instance(MODID)
    public static KitMod instance;

    @Mod.EventHandler
    public void serverStarting(FMLServerStartingEvent event) {
        event.registerServerCommand(new KitCommand());
    }
   
}
Java:
public class KitCommand extends CommandBase {

    private static HashMap<String, List<ItemStack>> kit_items = new HashMap<String, List<ItemStack>>();
    private static String[] words;

    static {
        String kit_name...

timaxa007

Модератор
5,831
409
672
Приветствую.
как мне создать свою команду для мода.
Регистрируешь команду в FMLServerStartingEvent, типа так:
Java:
event.registerServerCommand(new KitCommand());
Создать класс, унаследовав от CommandBase, вставить все нужные методы. А так-же смотри в какой-нибудь пример из ванильных команд.
А точнее команду /kit для выдачи китов
Я не знаю точно, что нужно писать. Но ...

В методе processCommand:
- проверяешь первый аргумент, то что ICommandSender имеет наследство от EntityPlayerMP.
- проверяешь второй аргумент (который массив String):
Если длина массива равна 1, то по id 0 то что за название кита equals названию нужного кита, если ему доступно, то выдать то что положен по киту.
* Если длина массива равна 2, то по id 0 ищется игрок, по id 1 ищется кит, если достаточно прав у игрока по первому аргументу, чтобы выдавать кому-то кит.

В методе addTabCompletionOptions, проверяешь, то что:
- проверяешь первый аргумент, то что ICommandSender имеет наследство от EntityPlayerMP.
- проверяешь второй аргумент (который массив String):
Если длина массива равна 1, то то что длина массива равна 1, то возвращать List доступных игроку команд.
* Если длина массива равна 2, то по id 0 ищется игрок, по id 1 ищется кит, если достаточно прав у игрока по первому аргументу, чтобы выдавать кому-то кит.
 

GoogleTan

Картошка :3
1,354
43
310
Увы тут код за тебя не напишут. Не подумай я тоже часто попрашайничаю, но безуспешно. Можешь пойти яву подучить а потом в сурсы форджа глянуть. Вот хороший курсик:
http://ml.foxford.ru/u/nrd.php?p=Ifgbp1qst0_393_1067697_1_3&ems_l=1331472
Там выбери: "Разработка игровых приложений под Android на языке Java"
 
929
30
66
Команда
Java:
public class CommandHeal implements ICommand {

   public int compareTo(Object arg0) {
      return 0;
   }

   public String getCommandName() {
      return "heal";
   }

   public String getCommandUsage(ICommandSender p_71518_1_) {
      return "/heal";
   }

   public List getCommandAliases() {
      return null;
   }

   public void processCommand(ICommandSender i, String[] args) {
      MinecraftServer ms = MinecraftServer.getServer();
      EntityPlayerMP player = ms.getConfigurationManager().func_152612_a(i.getCommandSenderName());
      player.heal(20F);
      player.addChatComponentMessage(new ChatComponentTranslation("Вы были исцелены.", new Object[0]));
      }
 
   public boolean canCommandSenderUseCommand(ICommandSender i) {
      return i.canCommandSenderUseCommand(4, this.getCommandName());
   }

   public List addTabCompletionOptions(ICommandSender p_71516_1_, String[] p_71516_2_) {
      return null;
   }

   public boolean isUsernameIndex(String[] p_82358_1_, int p_82358_2_) {
      return false;
   }
}


рега
Java:
@EventHandler
   public void onServerStart(FMLServerStartingEvent e) {
      e.registerServerCommand(new CommandHeal());
   }
 

timaxa007

Модератор
5,831
409
672

Java:
@Mod(modid = KitMod.MODID, name = KitMod.NAME, version = KitMod.VERSION)
public class KitMod {

    public static final String
    MODID = "kit",
    NAME = "Kit Mod",
    VERSION = "0.02";

    @Mod.Instance(MODID)
    public static KitMod instance;

    @Mod.EventHandler
    public void serverStarting(FMLServerStartingEvent event) {
        event.registerServerCommand(new KitCommand());
    }
   
}
Java:
public class KitCommand extends CommandBase {

    private static HashMap<String, List<ItemStack>> kit_items = new HashMap<String, List<ItemStack>>();
    private static String[] words;

    static {
        String kit_name;
        List<ItemStack> list_items;
        List<String> list_words = new ArrayList<String>();
        //-------------------------------------
        kit_name = "start";
        list_words.add(kit_name);
        list_items = new ArrayList<ItemStack>();
        list_items.add(new ItemStack(Items.stick, 8));
        list_items.add(new ItemStack(Blocks.planks, 4));
        list_items.add(new ItemStack(Blocks.log));
        kit_items.put(kit_name, list_items);
        //-------------------------------------
        kit_name = "day";
        list_words.add(kit_name);
        list_items = new ArrayList<ItemStack>();
        list_items.add(new ItemStack(Items.cooked_porkchop, 8));
        list_items.add(new ItemStack(Items.baked_potato, 8));
        list_items.add(new ItemStack(Items.coal, 8, 1));
        kit_items.put(kit_name, list_items);
        //-------------------------------------
        words = list_words.toArray(new String[0]);
    }

    @Override
    public String getCommandName() {
        return "kit";
    }

    @Override
    public int getRequiredPermissionLevel() {
        return 0;
    }

    @Override
    public String getCommandUsage(ICommandSender ics) {
        return "commands.kit.usage";
    }

    @Override
    public void processCommand(ICommandSender ics, String[] args) {
        if (args.length <= 0) {
            throw new WrongUsageException(getCommandUsage(ics), new Object[0]);
        } else {
            switch(args.length) {
            case 1:
                if (ics instanceof EntityPlayerMP) {
                    EntityPlayerMP player = (EntityPlayerMP)ics;
                    if (kit_items.containsKey(args[0])) {
                        List<ItemStack> list = kit_items.get(args[0]);
                        for (ItemStack item : list) {
                            if (player.inventory.addItemStackToInventory(item))
                                player.worldObj.spawnEntityInWorld(new EntityItem(player.worldObj, player.posX, player.posY, player.posZ, item));
                        }
                    }
                }
                break;
            case 2:
                if (ics.canCommandSenderUseCommand(2, getCommandName())) {
                    EntityPlayerMP player = MinecraftServer.getServer().getConfigurationManager().func_152612_a(args[0]);
                    if (player != null) {
                        if (kit_items.containsKey(args[1])) {
                            List<ItemStack> list = kit_items.get(args[1]);
                            for (ItemStack item : list) {
                                if (!player.inventory.addItemStackToInventory(item))
                                    player.worldObj.spawnEntityInWorld(new EntityItem(player.worldObj, player.posX, player.posY, player.posZ, item));
                            }
                        }
                    }
                }
                break;
            default:
                break;
            }
        }
    }

    @Override
    public List addTabCompletionOptions(ICommandSender ics, String[] args) {
        if (ics instanceof EntityPlayerMP) {
            switch(args.length) {
            case 1:
                return getListOfStringsMatchingLastWord(args, words);
            case 2:
                if (ics.canCommandSenderUseCommand(2, getCommandName()))
                    return null;
                return getListOfStringsMatchingLastWord(args, words);
            }
        } else {
            switch(args.length) {
            case 1:
                return getListOfStringsMatchingLastWord(args, MinecraftServer.getServer().getAllUsernames());
            case 2:
                return getListOfStringsMatchingLastWord(args, words);
            }

        }
        return null;
    }

}
 
Последнее редактирование:
7,099
324
1,510
Так разве оно добавляет не атомарно? Либо весь данный стак, либо ничего
 
Сверху