Impossible de rendre mon entité
-
Bonjour, j’ai essayé de faire une entité, tout ce passe, seulement, lorsque j’ai voulu lui appliquer un model Techne, impossible de rendre l’entité en jeu.
Mon entity :
public class EntityTest extends EntityMob { public EntityTest(World world) { super(world); } public void applyEntityAttributes() { super.applyEntityAttributes(); this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(1D); this.getEntityAttribute(SharedMonsterAttributes.attackDamage).setBaseValue(0D); this.getEntityAttribute(SharedMonsterAttributes.knockbackResistance).setBaseValue(0D); this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(0.0D); } }
Mon Render : (J’ai extends RenderHorse car sinon il y avait des erreurs un peu partout, cette solution avait été donné par Robin ici)
public class RenderTest extends RenderHorse { public final ResourceLocation texture = new ResourceLocation(TestMod.MODID, "textures/entity/entity_test.png"); public RenderTest(ModelTest model, float shadow) { super(model, shadow); } protected ResourceLocation getEntityTexture(EntityLiving living) { return this.getEntityTestTexture((EntityTest)living); } private ResourceLocation getEntityTestTexture(EntityTest entityTest) { return texture; } }
Mon Model :
public class ModelTest extends ModelBase { // fields ModelRenderer Manche; ModelRenderer Cube; ModelRenderer Paille; public ModelTest() { textureWidth = 64; textureHeight = 32; Manche = new ModelRenderer(this, 0, 5); Manche.addBox(0F, 0F, 0F, 27, 1, 1); Manche.setRotationPoint(-19F, 18F, -1F); Manche.setTextureSize(64, 32); Manche.mirror = true; setRotation(Manche, 0F, 0F, 0F); Cube = new ModelRenderer(this, 0, 11); Cube.addBox(0F, 0F, 0F, 3, 3, 3); Cube.setRotationPoint(8F, 17F, -2F); Cube.setTextureSize(64, 32); Cube.mirror = true; setRotation(Cube, 0F, 0F, 0F); Paille = new ModelRenderer(this, 0, 22); Paille.addBox(0F, 0F, 0F, 12, 5, 5); Paille.setRotationPoint(11F, 16F, -3F); Paille.setTextureSize(64, 32); Paille.mirror = true; setRotation(Paille, 0F, 0F, 0F); } public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { super.render(entity, f, f1, f2, f3, f4, f5); setRotationAngles(f, f1, f2, f3, f4, f5, entity); Manche.render(f5); Cube.render(f5); Paille.render(f5); } private void setRotation(ModelRenderer model, float x, float y, float z) { model.rotateAngleX = x; model.rotateAngleY = y; model.rotateAngleZ = z; } public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) { super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); } }
Mon ClientProxy :
public class ClientProxy extends CommonProxy { @Override public void registerRender() { RenderingRegistry.registerEntityRenderingHandler(EntityTest.class, new RenderTest(new ModelTest(), 0.5F)); } }
Ma fonction init() dans ma Classe Principale :
@EventHandler public void init(FMLInitializationEvent event) { proxy.registerRender(); EntityRegistry.registerGlobalEntityID(EntityTest.class, "entityTest", EntityRegistry.findGlobalUniqueEntityId(), new Color(0, 255, 0).getRGB(), new Color(255, 0, 0).getRGB()); EntityRegistry.registerModEntity(EntityTest.class, "entityTest", 420, this.instance, 40, 1, true); }
Le message qui s’affiche dans la console :
[14:49:27] [Client thread/ERROR]: Couldn't render entity java.lang.ClassCastException: fr.pifpouf.testmod.common.EntityTest cannot be cast to net.minecraft.entity.passive.EntityHorse at net.minecraft.client.renderer.entity.RenderHorse.preRenderCallback(RenderHorse.java:119) ~[RenderHorse.class:?] at net.minecraft.client.renderer.entity.RendererLivingEntity.doRender(RendererLivingEntity.java:148) [RendererLivingEntity.class:?] at net.minecraft.client.renderer.entity.RenderLiving.doRender(RenderLiving.java:36) [RenderLiving.class:?] at net.minecraft.client.renderer.entity.RenderLiving.doRender(RenderLiving.java:156) [RenderLiving.class:?] at net.minecraft.client.renderer.entity.RenderManager.func_147939_a(RenderManager.java:300) [RenderManager.class:?] at net.minecraft.client.renderer.entity.RenderManager.renderEntityStatic(RenderManager.java:278) [RenderManager.class:?] at net.minecraft.client.renderer.entity.RenderManager.renderEntitySimple(RenderManager.java:251) [RenderManager.class:?] at net.minecraft.client.renderer.RenderGlobal.renderEntities(RenderGlobal.java:527) [RenderGlobal.class:?] at net.minecraft.client.renderer.EntityRenderer.renderWorld(EntityRenderer.java:1300) [EntityRenderer.class:?] at net.minecraft.client.renderer.EntityRenderer.updateCameraAndRender(EntityRenderer.java:1087) [EntityRenderer.class:?] at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1067) [Minecraft.class:?] at net.minecraft.client.Minecraft.run(Minecraft.java:962) [Minecraft.class:?] at net.minecraft.client.main.Main.main(Main.java:164) [Main.class:?] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_101] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_101] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_101] at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_101] at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?] at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?] at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source) [start/:?] at GradleStart.main(Unknown Source) [start/:?]
- Il n’y a pas d’erreur, ni de crash
- L’entité spawn mais n’est pas rendue
- J’ai essayé d’extends autre chose, comme RenderSpider proposé par Robin mais même combat
Merci,
-
Salut
Comme ton Render est extends RenderHorse, ça applique au tien toutes ses fonctions. Et vu que ton entité n’est pas extends EntityHorse, ça fait l’erreur. Essaye de modifier l’extends de ton Render, met par exemple RenderLiving. Perso, j’ai mis ça pour mon mob et ça marche bien. -
Merci, j’ai modifié l’extends de mon Render, j’ai mis RenderLiving du coup. Et j’ai également changé l’extends de mon Entity en EntityLiving. Du coup ma classe Render ressemble à ça :
public class RenderTest extends RenderLiving { public final ResourceLocation texture = new ResourceLocation(TestMod.MODID, "textures/entity/entity_test.png"); public RenderTest(ModelTest model, float shadow) { super(model, shadow); } protected ResourceLocation getEntityTexture(Entity living) { return this.getEntityTestTexture((EntityTest)living); } private ResourceLocation getEntityTestTexture(EntityTest entityTest) { return texture; } }
L’entité n’est toujours pas rendue, le message dans la console :
[19:02:14] [Client thread/INFO] [FML]: [Client thread] Client side modded connection established [19:02:16] [Server thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: java.lang.reflect.InvocationTargetException [19:02:16] [Server thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) [19:02:16] [Server thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) [19:02:16] [Server thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) [19:02:16] [Server thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at java.lang.reflect.Constructor.newInstance(Unknown Source) [19:02:16] [Server thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at net.minecraft.entity.EntityList.createEntityByID(EntityList.java:222) [19:02:16] [Server thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at net.minecraft.item.ItemMonsterPlacer.spawnCreature(ItemMonsterPlacer.java:173) [19:02:16] [Server thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at net.minecraft.item.ItemMonsterPlacer.onItemUse(ItemMonsterPlacer.java:79) [19:02:16] [Server thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at net.minecraftforge.common.ForgeHooks.onPlaceItemIntoWorld(ForgeHooks.java:507) [19:02:16] [Server thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at net.minecraft.item.ItemStack.tryPlaceItemIntoWorld(ItemStack.java:142) [19:02:16] [Server thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at net.minecraft.server.management.ItemInWorldManager.activateBlockOrUseItem(ItemInWorldManager.java:422) [19:02:16] [Server thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at net.minecraft.network.NetHandlerPlayServer.processPlayerBlockPlacement(NetHandlerPlayServer.java:593) [19:02:16] [Server thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at net.minecraft.network.play.client.C08PacketPlayerBlockPlacement.processPacket(C08PacketPlayerBlockPlacement.java:74) [19:02:16] [Server thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at net.minecraft.network.play.client.C08PacketPlayerBlockPlacement.processPacket(C08PacketPlayerBlockPlacement.java:122) [19:02:16] [Server thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at net.minecraft.network.NetworkManager.processReceivedPackets(NetworkManager.java:241) [19:02:16] [Server thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at net.minecraft.network.NetworkSystem.networkTick(NetworkSystem.java:182) [19:02:16] [Server thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:726) [19:02:16] [Server thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:614) [19:02:16] [Server thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:118) [19:02:16] [Server thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:485) [19:02:16] [Server thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:752) [19:02:16] [Server thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: Caused by: java.lang.NullPointerException [19:02:16] [Server thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at fr.pifpouf.testmod.common.EntityTest.applyEntityAttributes(EntityTest.java:19) [19:02:16] [Server thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at net.minecraft.entity.EntityLivingBase.<init>(EntityLivingBase.java:156) [19:02:16] [Server thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at net.minecraft.entity.EntityLiving.<init>(EntityLiving.java:78) [19:02:16] [Server thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at fr.pifpouf.testmod.common.EntityTest.<init>(EntityTest.java:12) [19:02:16] [Server thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: … 20 more [19:02:16] [Server thread/WARN]: Skipping Entity with id 3 ```</init></init></init>
-
Passe aussi la classe de l’entité et son enregistrement stp
Et il était extends quoi avant ton entité ? -
Avant mon entity était extends EntityMob. La classe de mon Entity actuellement :
public class EntityTest extends EntityLiving { public EntityTest(World world) { super(world); } public void applyEntityAttributes() { super.applyEntityAttributes(); this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(1D); this.getEntityAttribute(SharedMonsterAttributes.attackDamage).setBaseValue(0D); this.getEntityAttribute(SharedMonsterAttributes.knockbackResistance).setBaseValue(0D); this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(0.0D); } }
Son enregistrement :
EntityRegistry.registerGlobalEntityID(EntityTest.class, "entityTest", EntityRegistry.findGlobalUniqueEntityId(), new Color(0, 255, 0).getRGB(), new Color(255, 0, 0).getRGB()); EntityRegistry.registerModEntity(EntityTest.class, "entityTest", 420, this.instance, 40, 1, true);
-
à mon avis il manque un constructeur avec world, x, y et z.
-
Je suis pas sûr, il faudra une confirmation mais c’est peut-être l’ID de l’entité qui dépasse la limite possible
-
Problème résolu ?