2016-05-09 7 views
0

Ich weiß, das ist wahrscheinlich nicht der beste Ort, um diese Frage zu stellen, aber die Jungs in den Schmiedeforen helfen wirklich nicht so sehr und ich dachte, ich würde mein Glück hier versuchen. Ich habe Probleme mit der neuen Syntax für die Entitätsregistrierung, insbesondere beim Rendern der Entität. Zuvor haben Sie einfach die RenderingRegistry.registerEntityRenderingHandler-Zeile zu Ihrem ClientProxy hinzugefügt, und das war es. Aber jetzt, es fragt mich, RenderingRegistry.registerEntityRenderingHandler in der preInit zusammen mit einem Parameter namens IRenderFactory zu verwenden. Ich bin ein neuer Modder, also bin ich mir nicht sicher, wie IRenderFactory funktioniert oder wie ich einen erstellen kann (wenn es nötig ist), also würde ich wirklich etwas Hilfe zu schätzen wissen. Mir wurde gesagt, dass Sie eine Methodenreferenz verwenden können, um den Konstruktor der Render-Klasse (RenderMyEntity :: new) stattdessen als IRenderFactory zu übergeben, aber ich weiß wirklich nicht, wie ich das anstellen soll. Wie ich schon sagte, ich bin ein sehr neuer Programmierer und das ist alles sehr fremd für mich, aber ich würde es wirklich gerne verstehen. Ich habe alle möglichen Nachforschungen angestellt, aber nichts davon macht Sinn. Danke, also so sehr. Ich schätze das wirklich!IRenderFactory Hilfe in Minecraft Forge

Hier ist meine MobExample Klasse (die Linie RenderingRegistry.registerEntityRenderingHandler (RenderGelZombie.class, render) nur in der PreInit von MobExample Klasse arbeitet, weshalb es da ist und nicht in 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 sagt, es ist eine Schnittstelle, um eine RenderEntity-Instanz zurückzugeben. Hast du irgendwo so etwas? – zapl

+0

@zapl siehe, ich benutze Java nicht so sehr, also weiß ich nicht, was eine Schnittstelle ist oder wie man eine Render-Entity-Instanz zurückgibt. Weißt du vielleicht? – Aidan

+0

=> https://docs.oracle.com/javase/tutorial/java/concepts/interface.html (oder http://stackoverflow.com/tags/java/info für andere Ressourcen). Ich weiß, welche Schnittstellen es gibt und wie man Dinge zurückgibt, ich bin kein Modder, also habe ich keine Ahnung, was eine 'RenderEntity' ist. Aber das Unterrichten der Sprachgrundlagen ist hier meist nicht Thema oder bereits ausführlich beantwortet. – zapl

Antwort

1

Die IRenderingFactory Schnittstelle in Forge erstellt Instanzen der Render-Klasse für Ihre Entität. Die Dokumente, die zapl oben verlinkt hat, erklären mehr darüber, was eine Schnittstelle als Konzept ist.

In diesem Fall haben Sie eine Klasse mit dem Namen , mit der Sie Ihren Zombie tatsächlich im Spiel rendern können. Forge verwendete diese Klasse direkt beim Registrieren von Renderern, verwendet jetzt aber IRenderingFactory, um Instanzen der Renderklasse zu erstellen. Sie erhalten eine Factory-Klasse wie diese benötigen:

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); 
    } 

} 

Nun, da Sie eine Klasse haben, die die IRenderFactory implementiert, können Sie es auf die neue Einheit Rendering Registry-Methode übergeben:

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

Quelle Ich bin der Lehrplanentwickler für den iD Tech Camps Minecraft Modding Kurs und es sieht so aus, als ob ein Teil deines Codes von dort stammen könnte!

Verwandte Themen