1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

[NOT SOLVED]Работа с ивентом PrepareItemCraftEvent

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

Статус темы:
Закрыта.
  1. Автор темы
    thematdev

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

    Баллы:
    46
    Имя в Minecraft:
    thematdev
    Так вот, делал я кастомные крафты, и решил добавить зелья в крафт, для одной вещи, начал создавать зелье:
    PHP:
    ShapedRecipe s = new ShapedRecipe(item);
    s.shape(new String[] {"A A"" B ""A A"});
    ItemStack pot = new ItemStack(Material.POTION1, (short)8197// Зелье хила 1 уровня
    Решил пихнуть в крафт:
    PHP:
    s.setIngredient('A'pot)
    Но вот ведь незадача, нам нужна именно MaterialData, а у нас ItemStack.(преобразовать надо)
    Помогите пожалуйста, заранее спасибо!
     
    Последнее редактирование: 22 авг 2017
  2. Cool_boy

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

    Баллы:
    96
    Имя в Minecraft:
    prettydude
    pot.getData()?
     
  3. Автор темы
    thematdev

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

    Баллы:
    46
    Имя в Minecraft:
    thematdev
    Неа, вот исходник:

    PHP:
        private void craft() {
            
    // Использую в onEnable()
            // ItemUtil - моя утилита, вообщем не мешало       
            
    ItemStack item ItemUtil.create(Material.EYE_OF_ENDER1, (byte)0ChatColor.DARK_PURPLE "Хилер",  ChatColor.GREEN "Быстро вылечит Вас от всех ран!"nullnullnullEnchantment.DAMAGE_ALL3true);
            
    ItemStack pot = new ItemStack(Material.POTION1, (short)8197);
            
            
    ShapedRecipe s = new ShapedRecipe(item);
            
    s.shape(new String[] {"A A"" B ""A A"});
            
    s.setIngredient('A'pot.getData());
            
    s.setIngredient('B'Material.GOLDEN_APPLE);
            
    Bukkit.getServer().addRecipe(s);
            
        }
    [​IMG]
     
  4. alexandrage

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

    Баллы:
    173
    В крафте низя кастомный стак. Это над костылить на рефлексии вроде как. Тебе проще запилить виртуалчест с логикой крафта.
     
  5. Dan_Ender

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

    Баллы:
    76
    PrepareItemCraftEvent, бери ItemStack'и из IngredientMap и проверяй всё, что хочешь
     
  6. Автор темы
    thematdev

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

    Баллы:
    46
    Имя в Minecraft:
    thematdev
    Спасибо, пошел скролить англоязычные форумы:good:
     
  7. Автор темы
    thematdev

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

    Баллы:
    46
    Имя в Minecraft:
    thematdev
    Закрыто. Открыто
     
    Последнее редактирование: 24 авг 2017
  8. Автор темы
    thematdev

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

    Баллы:
    46
    Имя в Minecraft:
    thematdev
    Теперь хочу разобраться, как получить элементы, точнее по какому принципу работает e.getInventory.getContains();
    и как сравнить его со своим списком ItemStack'ов. Работает ли он также как в ShapedRecipe или нет?
     
  9. Dan_Ender

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

    Баллы:
    76
    Проверки сам сделаешь.
    Код:
    Map<Character,ItemStack> ingredients = shapedCraft.getIngredientMap();
    for (String shape:shapedCraft.getShape()) {
       ItemStack item1 = ingredients.get(shape.charAt(0));
       ItemStack item2 = ingredients.get(shape.charAt(1));
       ItemStack item3 = ingredients.get(shape.charAt(2));
    }
    
     
  10. Автор темы
    thematdev

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

    Баллы:
    46
    Имя в Minecraft:
    thematdev
    Да, проверки сделаю сам, а вот item'ы идут так?:
    [​IMG]
     
  11. Slavkaa

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

    Баллы:
    76
    Имя в Minecraft:
    Slavok2001
    Скорее всего, горизонтально
     
  12. TheZefirrkka

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

    Баллы:
    76
    Debug???
     
  13. Автор темы
    thematdev

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

    Баллы:
    46
    Имя в Minecraft:
    thematdev
    Пробывал?
     
  14. TheZefirrkka

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

    Баллы:
    76
     
  15. Автор темы
    thematdev

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

    Баллы:
    46
    Имя в Minecraft:
    thematdev
    Щас попробую варианты потом если что открою. Спасибо @Dan_Ender
     
  16. Автор темы
    thematdev

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

    Баллы:
    46
    Имя в Minecraft:
    thematdev
    Закрыто.
     
Статус темы:
Закрыта.

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