So... I'm trying to create a mod, and the whole thing revolves around a large quantity of mobs. However, I am having the issue of actually getting these mobs into game. I've been looking and looking over the past two weeks for ways to do this, but everything I try isn't working. Any ideas? There is no 1.9 tuts I've seen whatsoever online so... I'm rather stuck. If anyone needs any of my code, I'll post, but be advise that it's rather messy and probably have a lot of unnecessary code due to the "TRY ANYTHING" approach I've been having.
1.8 tutorials should mostly work with 1.9 except that RenderingRegistry#registerEntityRenderingHandler(Class<? extends Entity>, Render<? extends Entity>) has been replaced with RenderingRegistry#registerEntityRenderingHandler(Class<T>, IRenderFactory<? super T>).
You can see how I register my arrow entity here and its renderer here. This uses Java 8's method references to implement IRenderFactory, if you're targeting Java 6 or 7 use an anonymous class instead.
Rollback Post to RevisionRollBack
Chisel Facades: For all your decorative pipe-hiding needs.
Please don't PM me to ask for help or to join your mod development team. Asking your question in a public thread preserves it for people who are having the same problem in the future. I'm not interested in developing mods with people.
Use the EntityRegistry.registerModEntity overload with two additional int arguments to create a spawn egg for the entity with those colours.
/summon should work, though it's worth noting that EntityRegistry.registerModEntity prefixes the entity name with your mod ID. Registering your entity as TestEntity results in your entity's name being <modid>.TestEntity, where <modid> is your mod ID.
Rollback Post to RevisionRollBack
Chisel Facades: For all your decorative pipe-hiding needs.
Please don't PM me to ask for help or to join your mod development team. Asking your question in a public thread preserves it for people who are having the same problem in the future. I'm not interested in developing mods with people.
I've done private static void registerEntity(Class<? extends Entity> entityClass, String entityName, int trackingRange, int updateFrequency, boolean sendsVelocityUpdates, int parEggColor, int parEggSpotsColor) and changed the registry to registerEntity(EntityRatatoskr.class, "ratatoskr", 64, 20, false, 0xFFFFFF, 0xFD71C1); but still no egg I can find.
Also, /summon smitemod.EntityRatatoskr still aint working.
OH LORD I AM STUCK
Thanks Choonster for your time. It is really appreciated
I really wish there was a cookie smilie to give you right now.
Are you using the latest version of Forge? Spawn eggs spawning pigs was fixed in Forge 1.9-12.16.0.1792-1.9.
Rollback Post to RevisionRollBack
Chisel Facades: For all your decorative pipe-hiding needs.
Please don't PM me to ask for help or to join your mod development team. Asking your question in a public thread preserves it for people who are having the same problem in the future. I'm not interested in developing mods with people.
I looked at your code sky and I've managed to get the spawn egg in game... but it summons... Pigs????
Real minecraft pigs too, drops porkchops and everything.
/summon still does not work with either smitemod.EntityRatatoskr or smitemod.ratatoskr. I assume its something to do with registry then?
Is there any error in your console like "Skipping entity with id xxx" or "exception ticking entity" or "exception rendering entity" ?
If no console log is helpful, try making a (temporary) item to spawn your entity manually. Then you can make sure it's the spawn egg system that's buggy and not your entity causing an error.
I have an example here.
And also update to the latest 1.9 Forge. It's as simple as changing the Forge version number in build.gradle and running gradlew cleanCache andgradlew setupDecompWorkspace --refresh-dependencies
Edit: Choonster pointed out that you only need to update the build.gradle and run gradlew setupDecompWorkspace
And also update to the latest 1.9 Forge. It's as simple as changing the Forge version number in build.gradle and running gradlew cleanCache and gradlew setupDecompWorkspace --refresh-dependencies
cleanCache deletes your entire Gradle cache, invalidating every ForgeGradle workspace on the computer until you re-run setupDecompWorkspace for each one. There's absolutely no need to use it when updating to a newer version of Forge.
Just run the setupDecompWorkspace task (from your IDE or the command line, no need for --refresh-dependencies) and refresh your IDE project.
Chisel Facades: For all your decorative pipe-hiding needs.
Please don't PM me to ask for help or to join your mod development team. Asking your question in a public thread preserves it for people who are having the same problem in the future. I'm not interested in developing mods with people.
I explained how to register the Render for your Entity in my first post.
Rollback Post to RevisionRollBack
Chisel Facades: For all your decorative pipe-hiding needs.
Please don't PM me to ask for help or to join your mod development team. Asking your question in a public thread preserves it for people who are having the same problem in the future. I'm not interested in developing mods with people.
I think the render is okay, registering fine and all but what I mean is the model class (defining shapes and sizes), in my 1.7.10 mod it was registered along with the render but it seems like that can't happen in 1.9. So atm it is pretty much unused and not sure how to link the entity/render to the model.
The Model should be created in the Render constructor.
Rollback Post to RevisionRollBack
Chisel Facades: For all your decorative pipe-hiding needs.
Please don't PM me to ask for help or to join your mod development team. Asking your question in a public thread preserves it for people who are having the same problem in the future. I'm not interested in developing mods with people.
I think the render is okay, registering fine and all but what I mean is the model class (defining shapes and sizes), in my 1.7.10 mod it was registered along with the render but it seems like that can't happen in 1.9. So atm it is pretty much unused and not sure how to link the entity/render to the model.
As Choonster said, you'll need an IRenderFactory class to handle the rendering and a model class registered at the same time.
Entity render registering is done from preInit now, using something like this:
RenderingRegistry.registerEntityRenderingHandler(MyEntity.class, new IRenderFactory<MyEntity>()
{
@Override
public Render<? super MyEntity> createRenderFor(RenderManager manager) {
return new RenderMyEntity(manager);
}
});
It's a little long, so personally I make a helper method if I'm going to re-use the render class.
For another example, look at my ClientProxy and Render classes. You'll notice the use of generics has changed from 1.8+. That's important and also allows you to access your entity without casting.
Your render will only need to override getEntityTexture unless you have anything else that should be different.
Rollback Post to RevisionRollBack
Click this banner for a list of illegal mod distributors -- only download from legal sites!
Invisible entities usually have to do with not registering the renderer properly. You want to post where you do that so we can see? Is there any console error?
Rollback Post to RevisionRollBack
Click this banner for a list of illegal mod distributors -- only download from legal sites!
[15:55:46] [Client thread/ERROR]: Exception reading .\saves\1st Test\level.dat
net.minecraft.util.ReportedException: Loading NBT data
at net.minecraft.nbt.NBTTagCompound.readNBT(NBTTagCompound.java:588) ~[NBTTagCompound.class:?]
at net.minecraft.nbt.NBTTagCompound.read(NBTTagCompound.java:51) ~[NBTTagCompound.class:?]
at net.minecraft.nbt.NBTTagList.read(NBTTagList.java:66) ~[NBTTagList.class:?]
at net.minecraft.nbt.NBTTagCompound.readNBT(NBTTagCompound.java:579) ~[NBTTagCompound.class:?]
at net.minecraft.nbt.NBTTagCompound.read(NBTTagCompound.java:51) ~[NBTTagCompound.class:?]
at net.minecraft.nbt.NBTTagCompound.readNBT(NBTTagCompound.java:579) ~[NBTTagCompound.class:?]
at net.minecraft.nbt.NBTTagCompound.read(NBTTagCompound.java:51) ~[NBTTagCompound.class:?]
at net.minecraft.nbt.NBTTagCompound.readNBT(NBTTagCompound.java:579) ~[NBTTagCompound.class:?]
at net.minecraft.nbt.NBTTagCompound.read(NBTTagCompound.java:51) ~[NBTTagCompound.class:?]
at net.minecraft.nbt.NBTTagCompound.readNBT(NBTTagCompound.java:579) ~[NBTTagCompound.class:?]
at net.minecraft.nbt.NBTTagCompound.read(NBTTagCompound.java:51) ~[NBTTagCompound.class:?]
at net.minecraft.nbt.CompressedStreamTools.read(CompressedStreamTools.java:147) ~[CompressedStreamTools.class:?]
at net.minecraft.nbt.CompressedStreamTools.read(CompressedStreamTools.java:102) ~[CompressedStreamTools.class:?]
at net.minecraft.nbt.CompressedStreamTools.readCompressed(CompressedStreamTools.java:33) ~[CompressedStreamTools.class:?]
at net.minecraft.world.storage.SaveFormatOld.func_186353_a(SaveFormatOld.java:105) [SaveFormatOld.class:?]
at net.minecraft.world.storage.SaveFormatOld.getWorldInfo(SaveFormatOld.java:88) [SaveFormatOld.class:?]
at net.minecraft.world.chunk.storage.AnvilSaveConverter.getSaveList(AnvilSaveConverter.java:62) [AnvilSaveConverter.class:?]
at net.minecraft.client.gui.GuiListWorldSelection.func_186795_e(GuiListWorldSelection.java:38) [GuiListWorldSelection.class:?]
at net.minecraft.client.gui.GuiListWorldSelection.<init>(GuiListWorldSelection.java:28) [GuiListWorldSelection.class:?]
at net.minecraft.client.gui.GuiWorldSelection.initGui(GuiWorldSelection.java:39) [GuiWorldSelection.class:?]
at net.minecraft.client.gui.GuiScreen.setWorldAndResolution(GuiScreen.java:550) [GuiScreen.class:?]
at net.minecraft.client.Minecraft.displayGuiScreen(Minecraft.java:1011) [Minecraft.class:?]
at net.minecraft.client.gui.GuiMainMenu.actionPerformed(GuiMainMenu.java:297) [GuiMainMenu.class:?]
at net.minecraft.client.gui.GuiScreen.mouseClicked(GuiScreen.java:497) [GuiScreen.class:?]
at net.minecraft.client.gui.GuiMainMenu.mouseClicked(GuiMainMenu.java:623) [GuiMainMenu.class:?]
at net.minecraft.client.gui.GuiScreen.handleMouseInput(GuiScreen.java:616) [GuiScreen.class:?]
at net.minecraft.client.gui.GuiScreen.handleInput(GuiScreen.java:582) [GuiScreen.class:?]
at net.minecraft.client.Minecraft.runTick(Minecraft.java:1791) [Minecraft.class:?]
at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1114) [Minecraft.class:?]
at net.minecraft.client.Minecraft.run(Minecraft.java:401) [Minecraft.class:?]
at net.minecraft.client.main.Main.main(Main.java:118) [Main.class:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_65]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_65]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_65]
at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_65]
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 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_65]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_65]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_65]
at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_65]
at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) [start/:?]
at GradleStart.main(GradleStart.java:26) [start/:?]
Caused by: java.util.zip.ZipException: invalid distance too far back
at java.util.zip.InflaterInputStream.read(Unknown Source) ~[?:1.8.0_65]
at java.util.zip.GZIPInputStream.read(Unknown Source) ~[?:1.8.0_65]
at java.io.BufferedInputStream.fill(Unknown Source) ~[?:1.8.0_65]
at java.io.BufferedInputStream.read1(Unknown Source) ~[?:1.8.0_65]
at java.io.BufferedInputStream.read(Unknown Source) ~[?:1.8.0_65]
at java.io.DataInputStream.readFully(Unknown Source) ~[?:1.8.0_65]
at java.io.DataInputStream.readUTF(Unknown Source) ~[?:1.8.0_65]
at java.io.DataInputStream.readUTF(Unknown Source) ~[?:1.8.0_65]
at net.minecraft.nbt.NBTTagString.read(NBTTagString.java:38) ~[NBTTagString.class:?]
at net.minecraft.nbt.NBTTagCompound.readNBT(NBTTagCompound.java:579) ~[NBTTagCompound.class:?]
... 42 more
[15:55:46] [Client thread/ERROR]: Exception reading .\saves\1st Test\level.dat
net.minecraft.util.ReportedException: Loading NBT data
at net.minecraft.nbt.NBTTagCompound.readNBT(NBTTagCompound.java:588) ~[NBTTagCompound.class:?]
at net.minecraft.nbt.NBTTagCompound.read(NBTTagCompound.java:51) ~[NBTTagCompound.class:?]
at net.minecraft.nbt.NBTTagList.read(NBTTagList.java:66) ~[NBTTagList.class:?]
at net.minecraft.nbt.NBTTagCompound.readNBT(NBTTagCompound.java:579) ~[NBTTagCompound.class:?]
at net.minecraft.nbt.NBTTagCompound.read(NBTTagCompound.java:51) ~[NBTTagCompound.class:?]
at net.minecraft.nbt.NBTTagCompound.readNBT(NBTTagCompound.java:579) ~[NBTTagCompound.class:?]
at net.minecraft.nbt.NBTTagCompound.read(NBTTagCompound.java:51) ~[NBTTagCompound.class:?]
at net.minecraft.nbt.NBTTagCompound.readNBT(NBTTagCompound.java:579) ~[NBTTagCompound.class:?]
at net.minecraft.nbt.NBTTagCompound.read(NBTTagCompound.java:51) ~[NBTTagCompound.class:?]
at net.minecraft.nbt.NBTTagCompound.readNBT(NBTTagCompound.java:579) ~[NBTTagCompound.class:?]
at net.minecraft.nbt.NBTTagCompound.read(NBTTagCompound.java:51) ~[NBTTagCompound.class:?]
at net.minecraft.nbt.CompressedStreamTools.read(CompressedStreamTools.java:147) ~[CompressedStreamTools.class:?]
at net.minecraft.nbt.CompressedStreamTools.read(CompressedStreamTools.java:102) ~[CompressedStreamTools.class:?]
at net.minecraft.nbt.CompressedStreamTools.readCompressed(CompressedStreamTools.java:33) ~[CompressedStreamTools.class:?]
at net.minecraft.world.storage.SaveFormatOld.func_186353_a(SaveFormatOld.java:105) [SaveFormatOld.class:?]
at net.minecraft.world.storage.SaveFormatOld.getWorldInfo(SaveFormatOld.java:88) [SaveFormatOld.class:?]
at net.minecraft.world.chunk.storage.AnvilSaveConverter.getSaveList(AnvilSaveConverter.java:62) [AnvilSaveConverter.class:?]
at net.minecraft.client.gui.GuiListWorldSelection.func_186795_e(GuiListWorldSelection.java:38) [GuiListWorldSelection.class:?]
at net.minecraft.client.gui.GuiListWorldSelection.<init>(GuiListWorldSelection.java:28) [GuiListWorldSelection.class:?]
at net.minecraft.client.gui.GuiWorldSelection.initGui(GuiWorldSelection.java:39) [GuiWorldSelection.class:?]
at net.minecraft.client.gui.GuiScreen.setWorldAndResolution(GuiScreen.java:550) [GuiScreen.class:?]
at net.minecraft.client.Minecraft.displayGuiScreen(Minecraft.java:1011) [Minecraft.class:?]
at net.minecraft.client.gui.GuiMainMenu.actionPerformed(GuiMainMenu.java:297) [GuiMainMenu.class:?]
at net.minecraft.client.gui.GuiScreen.mouseClicked(GuiScreen.java:497) [GuiScreen.class:?]
at net.minecraft.client.gui.GuiMainMenu.mouseClicked(GuiMainMenu.java:623) [GuiMainMenu.class:?]
at net.minecraft.client.gui.GuiScreen.handleMouseInput(GuiScreen.java:616) [GuiScreen.class:?]
at net.minecraft.client.gui.GuiScreen.handleInput(GuiScreen.java:582) [GuiScreen.class:?]
at net.minecraft.client.Minecraft.runTick(Minecraft.java:1791) [Minecraft.class:?]
at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1114) [Minecraft.class:?]
at net.minecraft.client.Minecraft.run(Minecraft.java:401) [Minecraft.class:?]
at net.minecraft.client.main.Main.main(Main.java:118) [Main.class:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_65]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_65]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_65]
at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_65]
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 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_65]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_65]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_65]
at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_65]
at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) [start/:?]
at GradleStart.main(GradleStart.java:26) [start/:?]
Caused by: java.util.zip.ZipException: invalid distance too far back
at java.util.zip.InflaterInputStream.read(Unknown Source) ~[?:1.8.0_65]
at java.util.zip.GZIPInputStream.read(Unknown Source) ~[?:1.8.0_65]
at java.io.BufferedInputStream.fill(Unknown Source) ~[?:1.8.0_65]
at java.io.BufferedInputStream.read1(Unknown Source) ~[?:1.8.0_65]
at java.io.BufferedInputStream.read(Unknown Source) ~[?:1.8.0_65]
at java.io.DataInputStream.readFully(Unknown Source) ~[?:1.8.0_65]
at java.io.DataInputStream.readUTF(Unknown Source) ~[?:1.8.0_65]
at java.io.DataInputStream.readUTF(Unknown Source) ~[?:1.8.0_65]
at net.minecraft.nbt.NBTTagString.read(NBTTagString.java:38) ~[NBTTagString.class:?]
at net.minecraft.nbt.NBTTagCompound.readNBT(NBTTagCompound.java:579) ~[NBTTagCompound.class:?]
... 42 more
?
That looks like a problem reading ItemStack NBTs, not entity NBTs...
Rollback Post to RevisionRollBack
Click this banner for a list of illegal mod distributors -- only download from legal sites!
That's the only error I can find in the output. No crashes whatsoever. Just invisible mobs. I was getting errors where it couldn't find the texture, but I changed the location and these went away - but still invisible mobs.
So... I'm trying to create a mod, and the whole thing revolves around a large quantity of mobs. However, I am having the issue of actually getting these mobs into game. I've been looking and looking over the past two weeks for ways to do this, but everything I try isn't working. Any ideas? There is no 1.9 tuts I've seen whatsoever online so... I'm rather stuck. If anyone needs any of my code, I'll post, but be advise that it's rather messy and probably have a lot of unnecessary code due to the "TRY ANYTHING" approach I've been having.
1.8.9 tutorials should work in 1.9.
1.8 tutorials should mostly work with 1.9 except that RenderingRegistry#registerEntityRenderingHandler(Class<? extends Entity>, Render<? extends Entity>) has been replaced with RenderingRegistry#registerEntityRenderingHandler(Class<T>, IRenderFactory<? super T>).
You can see how I register my arrow entity here and its renderer here. This uses Java 8's method references to implement IRenderFactory, if you're targeting Java 6 or 7 use an anonymous class instead.
Chisel Facades: For all your decorative pipe-hiding needs.
Please don't PM me to ask for help or to join your mod development team. Asking your question in a public thread preserves it for people who are having the same problem in the future. I'm not interested in developing mods with people.
How do you get your entity in game?
I've been trying /summon, to no avail with my mob.
I've tried adding biome spawns to see if it spawns that way, but I've seen no methods have worked for me.
I've tried creating custom spawn eggs - also to no avail.
*sigh*
I have tried your suggestions, but once again, cannot find a way to get it in-game.
Hopefully I'm not too noob.
Use the EntityRegistry.registerModEntity overload with two additional int arguments to create a spawn egg for the entity with those colours.
/summon should work, though it's worth noting that EntityRegistry.registerModEntity prefixes the entity name with your mod ID. Registering your entity as TestEntity results in your entity's name being <modid>.TestEntity, where <modid> is your mod ID.
Chisel Facades: For all your decorative pipe-hiding needs.
Please don't PM me to ask for help or to join your mod development team. Asking your question in a public thread preserves it for people who are having the same problem in the future. I'm not interested in developing mods with people.
I've done private static void registerEntity(Class<? extends Entity> entityClass, String entityName, int trackingRange, int updateFrequency, boolean sendsVelocityUpdates, int parEggColor, int parEggSpotsColor) and changed the registry to registerEntity(EntityRatatoskr.class, "ratatoskr", 64, 20, false, 0xFFFFFF, 0xFD71C1); but still no egg I can find.
Also, /summon smitemod.EntityRatatoskr still aint working.
OH LORD I AM STUCK
Thanks Choonster for your time. It is really appreciated
I really wish there was a cookie smilie to give you right now.
Would it help to see example code? I don't use spawn eggs in my mod, but here is the 1.9 GitHub where I register my golems.
I think I know why your /summon isn't working, though.
For example, my Bedrock Golem is registered with the name "golem_bedrock"
To summon it, I would type /summon golems.golem_bedrock , not /summon golems.EntityBedrockGolem like your previous try shows.
If your entity exists under the name "ratatoskr" you can try /summon smitemod.ratatoskr
I looked at your code sky and I've managed to get the spawn egg in game... but it summons... Pigs????
Real minecraft pigs too, drops porkchops and everything.
/summon still does not work with either smitemod.EntityRatatoskr or smitemod.ratatoskr. I assume its something to do with registry then?
Are you using the latest version of Forge? Spawn eggs spawning pigs was fixed in Forge 1.9-12.16.0.1792-1.9.
Chisel Facades: For all your decorative pipe-hiding needs.
Please don't PM me to ask for help or to join your mod development team. Asking your question in a public thread preserves it for people who are having the same problem in the future. I'm not interested in developing mods with people.
Is there any error in your console like "Skipping entity with id xxx" or "exception ticking entity" or "exception rendering entity" ?
If no console log is helpful, try making a (temporary) item to spawn your entity manually. Then you can make sure it's the spawn egg system that's buggy and not your entity causing an error.
I have an example here.
And also update to the latest 1.9 Forge. It's as simple as changing the Forge version number in build.gradle and running
gradlew cleanCache andgradlew setupDecompWorkspace--refresh-dependenciesEdit: Choonster pointed out that you only need to update the build.gradle and run gradlew setupDecompWorkspace
cleanCache deletes your entire Gradle cache, invalidating every ForgeGradle workspace on the computer until you re-run setupDecompWorkspace for each one. There's absolutely no need to use it when updating to a newer version of Forge.
Just run the setupDecompWorkspace task (from your IDE or the command line, no need for --refresh-dependencies) and refresh your IDE project.
Chisel Facades: For all your decorative pipe-hiding needs.
Please don't PM me to ask for help or to join your mod development team. Asking your question in a public thread preserves it for people who are having the same problem in the future. I'm not interested in developing mods with people.
Okay:
I've updated forge, changed a few things and the spawn egg works! I have a white box running around and chasing after me!
Obviously, the model is not linked to the entity, how do you do this in 1.9? SO CLOSE YIPPEE!
I explained how to register the Render for your Entity in my first post.
Chisel Facades: For all your decorative pipe-hiding needs.
Please don't PM me to ask for help or to join your mod development team. Asking your question in a public thread preserves it for people who are having the same problem in the future. I'm not interested in developing mods with people.
I think the render is okay, registering fine and all but what I mean is the model class (defining shapes and sizes), in my 1.7.10 mod it was registered along with the render but it seems like that can't happen in 1.9. So atm it is pretty much unused and not sure how to link the entity/render to the model.
The Model should be created in the Render constructor.
Chisel Facades: For all your decorative pipe-hiding needs.
Please don't PM me to ask for help or to join your mod development team. Asking your question in a public thread preserves it for people who are having the same problem in the future. I'm not interested in developing mods with people.
As Choonster said, you'll need an IRenderFactory class to handle the rendering and a model class registered at the same time.
Entity render registering is done from preInit now, using something like this:
It's a little long, so personally I make a helper method if I'm going to re-use the render class.
For another example, look at my ClientProxy and Render classes. You'll notice the use of generics has changed from 1.8+. That's important and also allows you to access your entity without casting.
Your render will only need to override getEntityTexture unless you have anything else that should be different.
*sigh*
Now they're invisible.
But they are there, right? That's a step.
Invisible entities usually have to do with not registering the renderer properly. You want to post where you do that so we can see? Is there any console error?
[15:55:46] [Client thread/ERROR]: Exception reading .\saves\1st Test\level.dat
net.minecraft.util.ReportedException: Loading NBT data
at net.minecraft.nbt.NBTTagCompound.readNBT(NBTTagCompound.java:588) ~[NBTTagCompound.class:?]
at net.minecraft.nbt.NBTTagCompound.read(NBTTagCompound.java:51) ~[NBTTagCompound.class:?]
at net.minecraft.nbt.NBTTagList.read(NBTTagList.java:66) ~[NBTTagList.class:?]
at net.minecraft.nbt.NBTTagCompound.readNBT(NBTTagCompound.java:579) ~[NBTTagCompound.class:?]
at net.minecraft.nbt.NBTTagCompound.read(NBTTagCompound.java:51) ~[NBTTagCompound.class:?]
at net.minecraft.nbt.NBTTagCompound.readNBT(NBTTagCompound.java:579) ~[NBTTagCompound.class:?]
at net.minecraft.nbt.NBTTagCompound.read(NBTTagCompound.java:51) ~[NBTTagCompound.class:?]
at net.minecraft.nbt.NBTTagCompound.readNBT(NBTTagCompound.java:579) ~[NBTTagCompound.class:?]
at net.minecraft.nbt.NBTTagCompound.read(NBTTagCompound.java:51) ~[NBTTagCompound.class:?]
at net.minecraft.nbt.NBTTagCompound.readNBT(NBTTagCompound.java:579) ~[NBTTagCompound.class:?]
at net.minecraft.nbt.NBTTagCompound.read(NBTTagCompound.java:51) ~[NBTTagCompound.class:?]
at net.minecraft.nbt.CompressedStreamTools.read(CompressedStreamTools.java:147) ~[CompressedStreamTools.class:?]
at net.minecraft.nbt.CompressedStreamTools.read(CompressedStreamTools.java:102) ~[CompressedStreamTools.class:?]
at net.minecraft.nbt.CompressedStreamTools.readCompressed(CompressedStreamTools.java:33) ~[CompressedStreamTools.class:?]
at net.minecraft.world.storage.SaveFormatOld.func_186353_a(SaveFormatOld.java:105) [SaveFormatOld.class:?]
at net.minecraft.world.storage.SaveFormatOld.getWorldInfo(SaveFormatOld.java:88) [SaveFormatOld.class:?]
at net.minecraft.world.chunk.storage.AnvilSaveConverter.getSaveList(AnvilSaveConverter.java:62) [AnvilSaveConverter.class:?]
at net.minecraft.client.gui.GuiListWorldSelection.func_186795_e(GuiListWorldSelection.java:38) [GuiListWorldSelection.class:?]
at net.minecraft.client.gui.GuiListWorldSelection.<init>(GuiListWorldSelection.java:28) [GuiListWorldSelection.class:?]
at net.minecraft.client.gui.GuiWorldSelection.initGui(GuiWorldSelection.java:39) [GuiWorldSelection.class:?]
at net.minecraft.client.gui.GuiScreen.setWorldAndResolution(GuiScreen.java:550) [GuiScreen.class:?]
at net.minecraft.client.Minecraft.displayGuiScreen(Minecraft.java:1011) [Minecraft.class:?]
at net.minecraft.client.gui.GuiMainMenu.actionPerformed(GuiMainMenu.java:297) [GuiMainMenu.class:?]
at net.minecraft.client.gui.GuiScreen.mouseClicked(GuiScreen.java:497) [GuiScreen.class:?]
at net.minecraft.client.gui.GuiMainMenu.mouseClicked(GuiMainMenu.java:623) [GuiMainMenu.class:?]
at net.minecraft.client.gui.GuiScreen.handleMouseInput(GuiScreen.java:616) [GuiScreen.class:?]
at net.minecraft.client.gui.GuiScreen.handleInput(GuiScreen.java:582) [GuiScreen.class:?]
at net.minecraft.client.Minecraft.runTick(Minecraft.java:1791) [Minecraft.class:?]
at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1114) [Minecraft.class:?]
at net.minecraft.client.Minecraft.run(Minecraft.java:401) [Minecraft.class:?]
at net.minecraft.client.main.Main.main(Main.java:118) [Main.class:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_65]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_65]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_65]
at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_65]
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 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_65]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_65]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_65]
at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_65]
at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) [start/:?]
at GradleStart.main(GradleStart.java:26) [start/:?]
Caused by: java.util.zip.ZipException: invalid distance too far back
at java.util.zip.InflaterInputStream.read(Unknown Source) ~[?:1.8.0_65]
at java.util.zip.GZIPInputStream.read(Unknown Source) ~[?:1.8.0_65]
at java.io.BufferedInputStream.fill(Unknown Source) ~[?:1.8.0_65]
at java.io.BufferedInputStream.read1(Unknown Source) ~[?:1.8.0_65]
at java.io.BufferedInputStream.read(Unknown Source) ~[?:1.8.0_65]
at java.io.DataInputStream.readFully(Unknown Source) ~[?:1.8.0_65]
at java.io.DataInputStream.readUTF(Unknown Source) ~[?:1.8.0_65]
at java.io.DataInputStream.readUTF(Unknown Source) ~[?:1.8.0_65]
at net.minecraft.nbt.NBTTagString.read(NBTTagString.java:38) ~[NBTTagString.class:?]
at net.minecraft.nbt.NBTTagCompound.readNBT(NBTTagCompound.java:579) ~[NBTTagCompound.class:?]
... 42 more
?
That looks like a problem reading ItemStack NBTs, not entity NBTs...
That's the only error I can find in the output. No crashes whatsoever. Just invisible mobs. I was getting errors where it couldn't find the texture, but I changed the location and these went away - but still invisible mobs.