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

Статус
Закрыто для дальнейших ответов.

thematdev

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

PHP:
    private void craft() {
        // Использую в onEnable()
        // ItemUtil - моя утилита, вообщем не мешало       
        ItemStack item = ItemUtil.create(Material.EYE_OF_ENDER, 1, (byte)0, ChatColor.DARK_PURPLE + "Хилер",  ChatColor.GREEN + "Быстро вылечит Вас от всех ран!", null, null, null, Enchantment.DAMAGE_ALL, 3, true);
        ItemStack pot = new ItemStack(Material.POTION, 1, (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);
        
    }
23539879e54d4e269eb084b1e8b97b75.png
 
В крафте низя кастомный стак. Это над костылить на рефлексии вроде как. Тебе проще запилить виртуалчест с логикой крафта.
 
PrepareItemCraftEvent, бери ItemStack'и из IngredientMap и проверяй всё, что хочешь
 
Закрыто. Открыто
 
Последнее редактирование:
Теперь хочу разобраться, как получить элементы, точнее по какому принципу работает e.getInventory.getContains();
и как сравнить его со своим списком ItemStack'ов. Работает ли он также как в ShapedRecipe или нет?
 
Проверки сам сделаешь.
Код:
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));
}
 
Проверки сам сделаешь.
Код:
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));
}
Да, проверки сделаю сам, а вот item'ы идут так?:
5d636eaef32b43aaa093a1aa07a61fbb.png
 
Щас попробую варианты потом если что открою. Спасибо @Dan_Ender
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх