Еда и зелья

Версия Minecraft
1.7.10
23
0
Добрый день, решил сделать зелье, однако столкнулся с рядом проблем. Я решил сделать зелье по тому же принципу, что и еду:


Код:
package com.meferis.falloutequestria.items.alchemy;

import com.meferis.falloutequestria.FalloutEquestria;

import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemFood;
import net.minecraft.item.ItemStack;
import net.minecraft.potion.Potion;
import net.minecraft.potion.PotionEffect;
import net.minecraft.world.World;

public class radwatherbottle extends ItemFood{

 public radwatherbottle(int amount, float saturation, boolean isWolfFood, String name)
   {
       super(amount, saturation, isWolfFood);
      
       setUnlocalizedName(name);
       setCreativeTab(FalloutEquestria.tabFoEItem);
       setTextureName("falloutequestria:radwatherbottle");
   }
 @Override
   protected void onFoodEaten(ItemStack stack, World worldIn, EntityPlayer player)
   {
       if(!worldIn.isRemote)
       {
           player.addPotionEffect(new PotionEffect(1200, 2));
       }
   }
}
package com.meferis.falloutequestria.items.alchemy;

import com.meferis.falloutequestria.FalloutEquestria;

import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemFood;
import net.minecraft.item.ItemStack;
import net.minecraft.potion.Potion;
import net.minecraft.potion.PotionEffect;
import net.minecraft.world.World;

public class radwatherbottle extends ItemFood{

 public radwatherbottle(int amount, float saturation, boolean isWolfFood, String name)
   {
       super(amount, saturation, isWolfFood);
      
       setUnlocalizedName(name);
       setCreativeTab(FalloutEquestria.tabFoEItem);
       setTextureName("falloutequestria:radwatherbottle");
   }
 @Override
   protected void onFoodEaten(ItemStack stack, World worldIn, EntityPlayer player)
   {
       if(!worldIn.isRemote)
       {
           player.addPotionEffect(new PotionEffect(1200, 2));
       }
   }
}
Никаких ошибок вроде бы нет (Делал по уроку), но когда при тесте зелье "съедается", майн вылетает. Может быть кто-нибудь знает, с чем это связанно?

Второй вопрос, как же всё-таки сделать зелье? Чтобы его можно было пить в не зависимости от количества голода у игрока, а так же проигрывалась нужная анимация? Буду благодарен за любую информацию)
 
7,099
324
1,510
Для анимации полистай методы класса Item, где-то было что-то вроде useAnimation.
Где мне взять твой краш, чтобы помочь тебе?
 
47
0
Meferis написал(а):
hohserg написал(а):
Для анимации полистай методы класса  Item, где-то было что-то вроде useAnimation.
Где мне взять твой краш, чтобы помочь тебе?

Ээээ... А как можно получить крашлог, не компилируя мод?

в папке где все по майну. т.е. в воркспейсе еклипс есть крашлоги. он то как ни как майнкрафт то собирает, значит и работает как и простой майник


а зелье делать - найди в исходниках майна его и смотри что написано и как что наследуется от кого
 
7,099
324
1,510
Не как простой: он не обфусцирован, поэтому рефлексия с использованием нормальных имен, но без ReflectionHelper работает.
 

Eifel

Модератор
1,624
79
609
Для анимации делаем вот так:

Код:
//сколько времени уйдет на то чтобы выпить твой предмет
public int getMaxItemUseDuration(ItemStack p_77626_1_)
 {
      return 32;
 }

 public boolean onItemUse(ItemStack itemStack, EntityPlayer player, World world, int par1, int par2, int par3, int par4, float par5, float par6, float par7)
 {
     return false;
}

 public EnumAction getItemUseAction(ItemStack p_77661_1_)
 {
    return EnumAction.drink;
}

 public ItemStack onItemRightClick(ItemStack itemStack, World world, EntityPlayer player)
{
    player.setItemInUse(itemStack, this.getMaxItemUseDuration(itemStack));
    return itemStack;      
}

А все что хотим чтоб использовалось после выпитого пихаем в метод onEaten:

Код:
public ItemStack onEaten(ItemStack itemStack, World world, EntityPlayer player)
 {
//tut 
}

А вылетает потому что ты указал 1200 как айди эффекта, а такого не существует
 
Сверху