Пополнение шкалы голода при съедании супа)

Статус
В этой теме нельзя размещать новые ответы.
252
0
Вот вообщем код из мода приволок,долго искал)
Сначала с именем мучался решил проблему.
Потом с текстурой были не неполадки, но я понял в чем проблема была и тоже ее исправил.
И так к самой проблеме! При крафте моего предмета, я выпиваю суп и он не пополняет шкалы голода, что делать вот код
Код:
package ru.ewokmod.Item;

import java.util.List;

import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Items;
import net.minecraft.item.EnumAction;
import net.minecraft.item.Item;
import net.minecraft.item.ItemFood;
import net.minecraft.item.ItemStack;
import net.minecraft.util.IIcon;
import net.minecraft.world.World;

public class ItemSoupFood extends ItemFood
{
    public static final String[]    names        = new String[] {"item.Soup"};
    public static final String[]    iconNames    = new String[] {"ewokmod:SoupFood"};
    
    public IIcon[]                    icons;
    
    public ItemSoupFood(int healAmount, int i, float f, boolean b)
    {
        super(healAmount, 1.0F, true);
        this.setMaxStackSize(1);
        this.setHasSubtypes(true);
    }
    
    @Override
    public ItemStack onEaten(ItemStack stack, World world, EntityPlayer player)
    {
        super.onFoodEaten(stack, world, player);
        return new ItemStack(Items.bowl);
    }
    
    @Override
    public EnumAction getItemUseAction(ItemStack is)
    {
        return EnumAction.drink;
    }
    
    @Override
    public String getUnlocalizedName(ItemStack stack)
    {
        if (stack.getItemDamage() < names.length)
        {
            return names[stack.getItemDamage()];
        }
        return "bowl.unknown";
    }
    
    @Override
    public IIcon getIconFromDamage(int metadata)
    {
        return this.icons[metadata];
    }
    
    @Override
    public void registerIcons(IIconRegister iconRegister)
    {
        this.icons = new IIcon[iconNames.length];
        for (int i = 0; i < iconNames.length; i++)
        {
            this.icons[i] = iconRegister.registerIcon(iconNames[i]);
        }
    }
    
    @Override
    public void getSubItems(Item item, CreativeTabs tab, List list)
    {
        for (int i = 0; i < names.length; i++)
        {
            list.add(new ItemStack(this, 1, i));
        }
    }
}
[merge_posts_bbcode]Добавлено: 07.03.2016 04:37:06[/merge_posts_bbcode]

Я думаю что вот в этом районе что то не так 


Код:
 public ItemSoupFood(int healAmount, int i, float f, boolean b)
    {
        super(healAmount, 1.0F, true);
        this.setMaxStackSize(1);
        this.setHasSubtypes(true);
    }
 
52
0
Как я понял, ты копируешь код, ничего в нем не понимая, запускаешь. Видишь, что ничего не работает - и сразу бежишь кричать на форум. Ибо самому поиграть с переменными в конструкторе очень трудно! Пусть другие люди разбираются.
 
1,976
68
220
Это реально уже бесит! Ты даже переменные не меняешь!
> Иди
> И
> Учись
> Кодить
> Базисы!
[merge_posts_bbcode]Добавлено: 07.03.2016 01:17:12[/merge_posts_bbcode]

Иди-ка ты лучше скачай MCreator и не парься. Там всё автоматом, даже своё измерение сделать можно
 
252
0
1)Я был на Mc creator, там меньше размах действий чем тут.
2) Я писал что я делаю все возможное до полного максимума того что знаю. Чего незнаю иду в интернет и ищу там src похожих кодов. Все сенью в степени ошибок и моих малейших знаний!
3) я бы это и не спрашивал если бы нашёл src мода: SoupMod.
4) если все это отпадает то спрашиваю у вас.
5) И по возможности когда есть свободное время то почитаваю Java книгу 
Авторы: Kathy Sierra
                 Bert Bates.
[merge_posts_bbcode]Добавлено: 07.03.2016 05:55:27[/merge_posts_bbcode]

Nichie написал(а):
Как я понял, ты копируешь код, ничего в нем не понимая, запускаешь. Видишь, что ничего не работает - и сразу бежишь кричать на форум. Ибо самому поиграть с переменными в конструкторе очень трудно! Пусть другие люди разбираются.
Ну как бы я по времени долго сидел за компом, и не смотрел на настоящее время а как узнал что 4 ночи дня пошёл я закгругляться)
Ну ты там говорил что нисмотря ни начато я запускают майн вижу ошибки и бегу сразу к вам! Так знай я бы написал 5-3 ошибок и вы тут гадали чего я там опять нахимичил, но я эти ошибки исправил, вот одна осталась и то я её чуть позже заметил.
Вот что было не исправно:
Неправильное имя.
Неправильная текстурка.
Предмет мог стакаться ( хотя я ставил так что он не стакается, одиночный предмет).
Копирование моего супа по перемещению его в инвентаря( он просто размножался от каждого моего клика).
Вот это все что я исправил когда был в творческом. Перешёл на выживание и увидел что что то не так и полоска голода не пополняется.
Я кинул тему суда а сам спать лег. Но скоро праздник никто почти на работу не ходят, ну покрайне мере у нас так. И тут соседи начали весилится, вроде сейчас успокоились. Ладно давайте удачи вам и снов хороших)
 

timaxa007

Модератор
5,831
409
672
Может проблема в том, что из главного класса передаёшь не те значения для аргумента.
И я думаю, ты хотел, что-то вроде этого:
Код:
    public ItemSoupFood(int healAmount, float saturationModifier, boolean isWolfsFavoriteMeat)
    {
        super(healAmount, saturationModifier, isWolfsFavoriteMeat);
        this.setMaxStackSize(1);
        this.setHasSubtypes(true);
    }
И где-то в главном классе, примерно так:
Код:
переменная = new ItemSoupFood(8, 1.0F, false).setUnlocalizedName("item.soup").setTextureName("ewokmod:SoupFood")
 
4,045
63
645
IvanTur, ты ведь, наверное, в эклипсе пишешь? Тебе же он кучу ошибок выдаёт. И почти у каждой есть подсказка с вариантами решения... Даже если навести мышку на какой-нибудь метод, вылетит окошко с его описанием... Например, ты вполне мог бы сам увидеть, что тебе предлагают удалить лишние аргументы из конструктора, либо добавить недостающие в главный класс...
Если джаву не знаешь (я тоже не знаю), научись работать хотя бы с программой. Может дело лучше пойдёт.
[merge_posts_bbcode]Добавлено: 07.03.2016 10:29:57[/merge_posts_bbcode]

Простой совет по механике )
То, что ты указываешь в конструкторе:
Код:
public ItemSoupFood(int bla, float bla-bla, boolean bla-bla-bla)

Это то, что твой класс ожидает увидеть на входе, когда ты его регистрируешь в главном классе (либо ссылаешься на него в иных местах).
Соответственно, если ты пишешь в главном что-то типа:
Код:
переменная = new ItemSoupFood(true, true, 8, 1.0F, false, true, 0, 132442, 0.5F, false)

То твой класс с едой тебя не поймёт...
Улови эту простую зависимость и дальше всё пойдёт как надо...
Надеюсь.
 
643
6
14
CTRL + SPACE и почитай переменные, заманал уже всех
[merge_posts_bbcode]Добавлено: 07.03.2016 11:26:48[/merge_posts_bbcode]

CTRL + SPACE и почитай переменные, заманал уже всех
 
252
0
Немного покопался, почитал ваши Коментарии, про ctr+Space еще давно знал как 4 дня уже.
Писало что нет вариантов. Я поменял язык eclipsa на русский немного уже понятно что и как копировать и удалять ну и т.д
Код:
public ItemSoupFood(int healAmount, int i, float f, boolean b)
    {
        super(healAmount, 1.0F, true);
        this.setMaxStackSize(1);
        this.setHasSubtypes(true);
    }

Вот я вот так поменял
Код:
public ItemSoupFood(int healAmount, int i, float f, boolean b)
    {
super(8, 1.0F, true);
        this.setMaxStackSize(1);
        this.setHasSubtypes(true);
Ну и нормально запустился)
 
1,976
68
220
На самом деле совсем не обязательно писать переменные в ините, типа 'new Soup(3, 4, flase)". Если класс использует только одна переменная, можно писать "super(3, 4, false)"
 
1,976
68
220
Вот тебе код еды, который я по памяти написал:
Код:
public class ItemSoup extends ItemFood { 
    public ItemSoup () {
        super(5, true);
        this.setCreativeTab(CreativeTabs.tabFood);
    }
}
 
1,976
68
220
Теперь твой суп лежит во вкладке с едой и восполняет 2.5 деления голода (или 5/20)
 
252
0
Про 2.5 это я понял.
первая цифра куска голода восполняет
вторая цифра это как бы некий отрезок времени когда голод начнет убавляться)
false/true приручить собаку)
[merge_posts_bbcode]Добавлено: 07.03.2016 16:35:04[/merge_posts_bbcode]

Твой код можно использовать)
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху