2016-05-09 4 views
0

Я знаю, что это, вероятно, не лучшее место, чтобы задать этот вопрос, но ребята на форумах forge действительно не очень помогают, и я думал, что попробую удачу здесь. У меня возникли проблемы с новым синтаксисом для реестре объектов, в частности, для создания объекта. До этого вы просто добавили строку RenderingRegistry.registerEntityRenderingHandler к вашему ClientProxy, и это было так. Но теперь он просит меня использовать RenderingRegistry.registerEntityRenderingHandler в preInit вместе с параметром IRenderFactory. Я новый модератор, поэтому я не уверен, как работает IRenderFactory, или как я могу его создать (если нужно), поэтому я действительно очень ценю некоторую помощь. Мне сказали, что вы можете использовать ссылку на метод, чтобы передать конструктор класса Render (RenderMyEntity :: new) вместо IRenderFactory, но я действительно не знаю, как это сделать. Как я уже сказал, я очень новый программист, и все это очень чуждо мне, но я бы очень хотел это понять. Я проводил все виды исследований, но ничто из этого не имеет смысла. Спасибо, что так так. Я очень ценю это!Помощь IRenderFactory в Minecraft Forge

Вот мой MobExample класс (линия RenderingRegistry.registerEntityRenderingHandler (RenderGelZombie.class, renderFactory) работает только в PreInit из MobExample класса, поэтому он там и не в ClientProxy):

package com.aideux.mobexample; 

import com.aideux.basemod.BaseMod; 

import net.minecraft.client.model.ModelZombie; 
import net.minecraftforge.fml.client.registry.RenderingRegistry; 
import net.minecraftforge.fml.common.registry.EntityRegistry; 

public class MobExample 
{ 
public static int currentEntityId = 0; 

public static void preInit() 
{ 
    createEntityWithEgg(EntityGelZombie.class, "CustomMob", 0x00FF00, 0xFF0000); 
    RenderingRegistry.registerEntityRenderingHandler(RenderGelZombie.class, renderFactory); 
} 

public static void init() 
{ 
    BaseMod.proxy.registerEntityRenderers(); 
} 

public static void createEntityWithEgg(Class entityClass, String entityName, int solidColor, int spotColor) 
{ 
    int entityId = currentEntityId++; 
    EntityRegistry.registerModEntity(entityClass, entityName, entityId, BaseMod.instance, 250, 1, true, solidColor, spotColor); 
} 
} 
+0

Google говорит, что это интерфейс для возврата экземпляра «RenderEntity». У вас что-то есть? – zapl

+0

@zapl see, я не очень много использую Java, поэтому я не знаю, что такое интерфейс или как вернуть экземпляр объекта визуализации. Вы, может быть, знаете? – Aidan

+0

=> https://docs.oracle.com/javase/tutorial/java/concepts/interface.html (или см. Http://stackoverflow.com/tags/java/info для других ресурсов). Я знаю, какие интерфейсы и как возвращать вещи, я не модем, поэтому я не знаю, что такое «RenderEntity». Но преподавание основ языка в основном не соответствует теме или уже ответственно. – zapl

ответ

1

IRenderingFactory интерфейс в Forge создает экземпляры класса Render для вашего объекта. Документы, которые связаны с zapl выше, объясняют больше о том, что интерфейс является концепцией.

В этом случае у вас есть класс под названием RenderGelZombie, который обрабатывает фактически рендеринг вашего зомби в игре. Forge использовал этот класс непосредственно при регистрации рендеринга, но теперь он использует IRenderingFactory для создания экземпляров класса рендеринга. Вам нужен класс фабрики, как это:

public class RenderGelZombieFactory implements IRenderFactory<EntityLiving> { 

    public static final RenderGelZombieFactory INSTANCE = new RenderGelZombieFactory(); 

    @Override 
    public Render<? super EntityLiving> createRenderFor(RenderManager manager) { 
     // TODO Auto-generated method stub 
     return new RenderGelZombie(manager, new ModelBiped(1.0f), 1.0f); 
    } 

} 

Теперь, когда у вас есть класс, который реализует IRenderFactory, вы можете передать его новому методу объект визуализации реестра:

RenderingRegistry.registerEntityRenderingHandler(EntityGelZombie.class, RenderGelZombieFactory.INSTANCE); 

Источник : Я разработчик учебных программ для курса iD Tech Camps Minecraft Modding, и похоже, что некоторые из ваших кодов, возможно, пришли оттуда!

 Смежные вопросы

  • Нет связанных вопросов^_^