Сразу 2 вопроса. 1.6.4

Статус
В этой теме нельзя размещать новые ответы.
Вопрос 1.
Я не могу добавить СВОИ вещи в СВОЮ вкладку в креативе.
Возможно я что-то не так делаю.
Вот как я добавляю
Код:
setCreativeTab(CcMod.ccShootMod);

Вот сама вкладка
Код:
public static CreativeTabs ccShootMod = new CcShootMod(CreativeTabs.getNextID(),"ccShootMod");

Вкладку прописывал под всеми регистрами.

Вопрос 2.
Я добавил модельку.
Вот в игре она есть.
c7cef9a2d37d.png

Но она не отображается от первого лица и когда дропаю тоже
Вот
f21036ef01bf.png

Вот если что рендер
Код:
package assets.ccmod.src;

import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.inventory.GuiContainerCreative;
import net.minecraft.client.gui.inventory.GuiInventory;
import net.minecraft.client.renderer.entity.RenderManager;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.client.IItemRenderer;

import org.lwjgl.opengl.GL11;

public class VodkaRender implements IItemRenderer
{
    protected ModelBottle vodkaModel;
    
    public VodkaRender()
    {
        vodkaModel = new ModelBottle();
    }
    
    @Override
    public boolean handleRenderType(ItemStack item, ItemRenderType type) {
        switch(type)
        {
            case EQUIPPED: return true;
            default: return false;
        }
    }
    
    @Override
    public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper)
    {
        return false;
    }
    
    @Override
    public void renderItem(ItemRenderType type, ItemStack item, Object... data)
    {
        switch(type)
        {
        case EQUIPPED:
            {
                GL11.glPushMatrix();
                Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation ("ccmod","textures/models/vodka.png"));
                GL11.glRotatef(150F, 2F, -0.5F, -0.3F);
                GL11.glRotatef(65F, -10F, 1F, 0F);
                GL11.glRotatef(-80F, 0F, 0F, 1F);
                
                boolean isFirstPirson = true;
                if(data[1] != null && data[1] instanceof EntityPlayer)
                {
                    if(!((EntityPlayer)data[1] == Minecraft.getMinecraft().renderViewEntity && Minecraft.getMinecraft().gameSettings.thirdPersonView == 0 && !((Minecraft.getMinecraft().currentScreen instanceof GuiInventory || Minecraft.getMinecraft().currentScreen instanceof GuiContainerCreative) && RenderManager.instance.playerViewY == 180.0F)));
                    {
                        GL11.glTranslatef(-0.F, -0.0F, -0.0F);
                    }
                }
                else
                {
                    isFirstPirson = true;
                }
                                GL11.glTranslatef(-0.65F, -0.1F, -0.7F);
                float scale = 1.0F;
                GL11.glScalef(2.0F, 2.0F, 2.0F);
                vodkaModel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F);
                GL11.glPopMatrix();
                
            }
            default:
                break;
        }
    }
 
}

Вот сам предмет
Код:
package assets.ccmod.src;

import net.minecraft.client.renderer.texture.IconRegister;
import net.minecraft.item.ItemFood;
import net.minecraftforge.client.IItemRenderer;
import net.minecraftforge.client.MinecraftForgeClient;



public class Vodka extends ItemFood
{
public Vodka(int par1, int par2, float par3, boolean par4)
{
super(par1, par2, par4);
MinecraftForgeClient.registerItemRenderer(this.itemID, (IItemRenderer) new VodkaRender());
this.setFull3D(); 
maxStackSize = 1;
}
@Override
public void registerIcons(IconRegister par1IconRegister)
{
this.itemIcon = par1IconRegister.registerIcon(ModInfo.MODID + ":vodka");
}
}

Надеюсь на вас!
 
1,990
18
105
Код:
   @Override
    public boolean handleRenderType(ItemStack item, ItemRenderType type) {
        switch(type)
        {
            case EQUIPPED: return true;
            default: return false;
        }
    }
Поподробнее почитай документацию по этому моменту.
 
104
0
Код:
switch(type)
        {
            case EQUIPPED: return true;
            default: return false;
        }
Этот код гласит, что если рендер от 3-го лица, то рендерить. А по умолчанию - не рендерить.
Добавь также FIRST_PERSON_MAP (от 1-го лица) и ENTITY (валяется на земле).
 
Kotor написал(а):
Код:
switch(type)
        {
            case EQUIPPED: return true;
            default: return false;
        }
Этот код гласит, что если рендер от 3-го лица, то рендерить. А по умолчанию - не рендерить.
Добавь также FIRST_PERSON_MAP (от 1-го лица) и ENTITY (валяется на земле).
А не подсобишь немного кодом?:)
 
104
0
А самому не судьба просто подставить?
[merge_posts_bbcode]Добавлено: 10.11.2014 14:41:25[/merge_posts_bbcode]

Код:
switch(type)
        {
            case EQUIPPED: return true;
            case FIRST_PERSON_MAP: return true;
            case ENTITY: return true;
            default: return false;
        }
 
А все, не нужно сам разобрался
Ну а насчет вкладки что?
[merge_posts_bbcode]Добавлено: 10.11.2014 14:42:32[/merge_posts_bbcode]

Kotor написал(а):
А самому не судьба просто подставить?
[merge_posts_bbcode]Добавлено: 10.11.2014 14:41:25[/merge_posts_bbcode]

Код:
switch(type)
        {
            case EQUIPPED: return true;
            case FIRST_PERSON_MAP: return true;
            case ENTITY: return true;
            default: return false;
        }
Да я так и сделал.
Просто не сразу дошло:)

[merge_posts_bbcode]Добавлено: 10.11.2014 14:45:50[/merge_posts_bbcode]

Точнее не 
Код:
FIRST_PERSON_MAP
А
Код:
EQUIPPED_FIRST_PERSON
 
104
0
Про вкладки:
В смысле не можешь? Вылетает или просто твоих предметов там нету? Если 2-е, то проверь, регистрируешь ли ты сами предметы (GameRegistry.registerItem).
 
...
Мда, ясно.
Спасибо вам.
Ручки мои на место вправили.
Я не регистрировал предметы нифига.
[merge_posts_bbcode]Добавлено: 10.11.2014 14:55:57[/merge_posts_bbcode]

Однако не все я исправил.
Регистрация предмета не работает.
Может что не так делаю
Но вот
Код:
        GameRegistry.registerItem(vodka);
+ ошибка
The method registerItem(Item, String) in the type GameRegistry is not applicable for the arguments (Item)
Знаю что метод не найден и все такое.
Но как мне его добавить?
Это одно ну ладно.
А вот что мне с моделькой делать?)
Её просто нет.
Я Scale до 20 20 20 повысил...
 
104
0
Тебе же пишут - registerItem(Item, String):
В твоем методе недостает одного параметра.


[merge_posts_bbcode]Добавлено: 10.11.2014 15:00:29[/merge_posts_bbcode]

Проблема с рендером:
Поиграйся еще с GL11.glTranslatef и GL11.glRotatef.
 
Так, вот значит модель
Она прямо перед игроком
ce2b8092fb6b.png

НО
Вот вид от первого лица
61c76e58a1dc.png

И еще
Что мне дописать 
Код:
        GameRegistry.registerItem(vodka);
 

timaxa007

Модератор
5,831
409
672
lordraider написал(а):
Что мне дописать 
Код:
        GameRegistry.registerItem(vodka);
Код:
        GameRegistry.registerItem(vodka, "Vodka");
[merge_posts_bbcode]Добавлено: 10.11.2014 16:20:14[/merge_posts_bbcode]

Если проблема остаётся на счёт вкладки, то скорее всего строчка где ты объявил переменную вкладки ниже объявленной переменной предмета.
 
Да, я объявил вкладку ниже предмета.
Ну ладно с этим спасибо.
А что мне с моделькой делать? :/
 
104
0
А ты засовываешь изменения рендера между GL11.glPushMatrix() и GL11.glPopMatrix()?
 
905
5
Хм. Может, у тебя камера в предмете торчит? Полигоны с другой стороны невидимы.
И, по-хорошему, модельки не надо так рендерить, чегонибудь такого достаточно:
Код:
    private void renderCrystal(float x, float y, float z, float scale)
        {
        GL11.glPushMatrix();
        
        GL11.glEnable(GL11.GL_BLEND);
        GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
        
        GL11.glDisable(GL11.GL_LIGHTING);
        
        GL11.glTranslatef(x, y - 0.75f, z);
        GL11.glScalef(scale * 3f, scale * 3f, scale * 3f);
        
        FMLClientHandler.instance().getClient().renderEngine.bindTexture(new ResourceLocation("mod:textures/crystals/crystal.png"));
        
        modelCrystal.render();
        
        GL11.glDisable(GL11.GL_BLEND);
        
        GL11.glEnable(GL11.GL_LIGHTING);
        
        GL11.glPopMatrix();
        }
    
    @Override
    public void renderItem(ItemRenderType type, ItemStack item, Object... data)
        {
        switch (type)
            {
            case ENTITY:
                {
                renderCrystal(0f, 0f, 0f, 0.5f);
                return;
                }
            
            case EQUIPPED:
                {
                renderCrystal(0f, 1f, 1f, 0.5f);
                return;
                }
            
            case INVENTORY:
                {
                renderCrystal(0f, 0f, 0f, 0.5f);
                return;
                }
            
            default:
                return;
            }
        }
И, по сути, можно в handleRenderType тупо труЪ отвечать.
 
laz2727 написал(а):
Хм. Может, у тебя камера в предмете торчит? Полигоны с другой стороны невидимы.
И, по-хорошему, модельки не надо так рендерить, чегонибудь такого достаточно:
Код:
    private void renderCrystal(float x, float y, float z, float scale)
        {
        GL11.glPushMatrix();
        
        GL11.glEnable(GL11.GL_BLEND);
        GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
        
        GL11.glDisable(GL11.GL_LIGHTING);
        
        GL11.glTranslatef(x, y - 0.75f, z);
        GL11.glScalef(scale * 3f, scale * 3f, scale * 3f);
        
        FMLClientHandler.instance().getClient().renderEngine.bindTexture(new ResourceLocation("mod:textures/crystals/crystal.png"));
        
        modelCrystal.render();
        
        GL11.glDisable(GL11.GL_BLEND);
        
        GL11.glEnable(GL11.GL_LIGHTING);
        
        GL11.glPopMatrix();
        }
    
    @Override
    public void renderItem(ItemRenderType type, ItemStack item, Object... data)
        {
        switch (type)
            {
            case ENTITY:
                {
                renderCrystal(0f, 0f, 0f, 0.5f);
                return;
                }
            
            case EQUIPPED:
                {
                renderCrystal(0f, 1f, 1f, 0.5f);
                return;
                }
            
            case INVENTORY:
                {
                renderCrystal(0f, 0f, 0f, 0.5f);
                return;
                }
            
            default:
                return;
            }
        }
И, по сути, можно в handleRenderType тупо труЪ отвечать.
Я не понял, а где здесь указывать модель?
 
У тебя опять от первого лица ничего не рендерится. Кажется это и незнание джавы и неслушанье. Не читай это
 
LazyRavenMan написал(а):
У тебя опять от первого лица ничего не рендерится. Кажется это и незнание джавы и неслушанье. Не читай это
Рендерится, просто я первый раз с 3д в майнкрафте работаю) Не знал что надо добавлять рендер каждому виду. Все изменил теперь норм, еще видимо надо отдельно и для 3д отображения и для энтити на земле.
Спасибо
LazyRavenMen
[merge_posts_bbcode]Добавлено: 11.11.2014 17:14:18[/merge_posts_bbcode]

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