Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

Помогите Как правильно сделать рецепт с "воздухом" внутри?

Тема в разделе "Разработка плагинов для новичков", создана пользователем Mr_RoboMan, 18 сен 2016.

  1. Автор темы
    Mr_RoboMan

    Mr_RoboMan Старожил Пользователь

    Баллы:
    123
    Драсти.
    Как сделать рецепт в котором может быть "воздух", т.е. пустой слот?
    Я делаю вот так вот:
    Код:
        public void activate() {
            this.shape(new String[]{"ABC", "DEF", "GHI"});
            this.setIngredient('A', this.craft[0].getType());
            this.setIngredient('B', this.craft[1].getType());
            this.setIngredient('C', this.craft[2].getType());
            this.setIngredient('D', this.craft[3].getType());
            this.setIngredient('E', this.craft[4].getType());
            this.setIngredient('F', this.craft[5].getType());
            this.setIngredient('G', this.craft[6].getType());
            this.setIngredient('H', this.craft[7].getType());
            this.setIngredient('I', this.craft[8].getType());
            Bukkit.getServer().addRecipe(this);
        }
    craft это массив ItemStackов.
    И craft точно не содержит null, только "воздух".
    Но если хотя-бы один элемент - воздух, то крафт не работает..
    Ну т.е. я не могу его скрафтить в игре, если же все элементы не воздух - то крафтится нормально..
     
  2. Хостинг MineCraft
    <
  3. IcedwinterZ

    IcedwinterZ Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    IcedwinterZ
    Так можно же просто пробелами и все, если хочешь что-бы там воздух был.
     
  4. Автор темы
    Mr_RoboMan

    Mr_RoboMan Старожил Пользователь

    Баллы:
    123
    Мм, это конечно отлично просто замечательно, но у меня типо "юзвер" указывает "рецепт" поэтому я заранее не знаю будет ли что-то воздухом, и будет ли вообще, а генерировать shape для этого будет как-то... Костыльно наверное штоли....
     
  5. IcedwinterZ

    IcedwinterZ Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    IcedwinterZ
    Через GUI или через конфиг?? Если через конфиг, то реплейсь " " на Material.AIR
     
  6. Автор темы
    Mr_RoboMan

    Mr_RoboMan Старожил Пользователь

    Баллы:
    123
    Через конфиг.
    И если предмет = воздух, то он в конфиге просто не указывается.
     
  7. IcedwinterZ

    IcedwinterZ Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    IcedwinterZ
    Всмысле не указывается? Без пробела даже??
     
  8. Автор темы
    Mr_RoboMan

    Mr_RoboMan Старожил Пользователь

    Баллы:
    123
    В прямом. Не указывается и все.[DOUBLEPOST=1474192761,1474192465][/DOUBLEPOST]Кароче, сделяль воть такь воть, вроде работает..
    Код:
    public class AdvancedShapedRecipe extends ShapedRecipe {
    
        private static final char[] symbols = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I'};
    
        private ItemStack[] craft;
    
        public AdvancedShapedRecipe(ItemStack result, ItemStack[] craft) {
            super(result);
            if (craft.length != 9) throw new RuntimeException("ItemStack[] craft length must be 9.");
            this.craft = craft;
        }
    
        public void activate() {
            String[] shapes = {"", "", ""};
            for (int i = 0; i < 3; i++) shapes[0] += craft[i] == null ? " " : symbols[i];
            for (int i = 3; i < 6; i++) shapes[1] += craft[i] == null ? " " : symbols[i];
            for (int i = 6; i < 9; i++) shapes[2] += craft[i] == null ? " " : symbols[i];
            shape(shapes);
            for (int i = 0; i < 9; i++) if (craft[i] != null) setIngredient(symbols[i], craft[i].getType());
            Bukkit.getServer().addRecipe(this);
        }
    
        public ItemStack[] getCraft() {
            return craft;
        }
    
        public void setCraft(ItemStack[] craft) {
            if (craft.length != 9) throw new RuntimeException("ItemStack[] craft length must be 9.");
            this.craft = craft;
        }
    }
     
  9. _MediaNik_

    _MediaNik_ Активный участник Пользователь

    Баллы:
    46
    Skype:
    Medianik5
    Имя в Minecraft:
    _MediaNik_
    Так нельзя?:
    Код:
    if(mass[i].getType()!=Material.AIR)
    this.setIngredient(bukva, mass[i].getType());
    
     

Поделиться этой страницей