Posted September 9, 20196 yr Hi there, I'm new to minecraft modelling, not to Java though. I try to make a custom mod, that adds a helicopter. For the start I tried to basically copy a boat. The problem: When I spawn the custom entity, it is invisible. It is definitly there, since I can kill it with the ingame comments and TNT can destroy the entity, with the explosion dropping the item. Basically i copied the minecraft boat classes, so i guess it has something to do with rendering or registration? Here is the Github link if anyone is willing to help: https://github.com/Felixleh/helicopter Would appreciate any help, as I have no idea where this comes from Edited September 10, 20196 yr by Felix_ Solved
September 9, 20196 yr 4 hours ago, diesieben07 said: You are using SSpawnObjectPacket as your entity's spawning packet, this packet only handles a hardcoded list of vanilla entities. For non-living custom entities you need to write your own spawn packet. Does this mean entities are not automatically synced to the client anymore when they are spawned on the server? And you have to create a packet for this yourself? VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect. Forge and vanilla BlockState generator.
September 9, 20196 yr Author 4 hours ago, diesieben07 said: You don't own this domain. Do not use @OnlyIn. You are using SSpawnObjectPacket as your entity's spawning packet, this packet only handles a hardcoded list of vanilla entities. For non-living custom entities you need to write your own spawn packet. Hi first of all thanks for the answer. I'm, of course, going to change the domain, when i came somewhat further. Do I have to use something instead of @OnlyIn or can I just remove it? For the custom Packet: Can I use a class with a signature similar to this one: public class SpawnHelicopterPacket implements IPacket<IClientPlayNetHandler> And if yes, how could i use the handler.handleSpawnObject(this); part? Sorry if that's to basic, but I really can't find anything helpfull on google.
September 9, 20196 yr Author 25 minutes ago, diesieben07 said: Just remove it. Custom packets are explained in the documentation: https://mcforge.readthedocs.io/en/1.13.x/networking/simpleimpl/. Thanks! I found the documentation, but honestly I have no Idea where to start. Do you know any stripped down example code of a custom non-living entity, I could use to try to understand the concept? Edited September 9, 20196 yr by Felix_
September 9, 20196 yr Author 11 minutes ago, diesieben07 said: I do not, unfortunately. hm thanks anyways is there anything that you would recommend me to do or where I could learn the things I need to make this project possible?
September 10, 20196 yr Author 12 hours ago, diesieben07 said: Look at how the vanilla spawning packet (that I referenced above) works. Then replicate that in your own packet. Hi, I stripped down the code to the most essential things: https://github.com/Felixleh/helicopter And I found a possible solution by using some build in function: @Override public IPacket<?> createSpawnPacket() { return NetworkHooks.getEntitySpawningPacket(this); } Apperently this should solve the problem. I can place the entity in the world by rightclicking the item, but I can't create it with the summon command. When created it's invisible and has no collision. Is there anything I am doing obviously wrong? I tried to create my own Packet but I still don't understand how to work with the handler part.
September 10, 20196 yr Author 1 hour ago, diesieben07 said: You need to provide the EntityType with an EntityType.IFactory so it can actually create your entity. You do that by using the version of EntityType.Builder.create that takes an IFactory as a parameter. many thanks That's what I wrote there now: event.getRegistry().registerAll( EntityList.helicopter_entity = (EntityType<HelicopterEntity>) EntityType .Builder .<HelicopterEntity>create(HelicopterEntity::new ,EntityClassification.MISC) .size(1f, 1f) .build(MOD_ID + ":helicopter_entity") .setRegistryName(location("helicopter_entity")) ); When I now try to place the entity i get a RunTime exception. Edit by changing the code to: event.getRegistry().registerAll( EntityList.helicopter_entity = (EntityType<HelicopterEntity>) EntityType .Builder .<HelicopterEntity>create(HelicopterEntity::new ,EntityClassification.MISC) .setCustomClientFactory(HelicopterEntity::new) .size(1f, 1f) .build(MOD_ID + ":helicopter_entity") .setRegistryName(location("helicopter_entity")) ); I don't get a exception anymore, but if I spawn the entity nothing is happening. It must be somewhere, since I can destroy it, but there is nothing visible. Do you know where the problem is in this code? Edited September 10, 20196 yr by Felix_
September 10, 20196 yr Author 15 minutes ago, diesieben07 said: Your renderer doesn't actually do anything... So naturally your entity does not show. Thank you very much! it's somewhat working now Now gonna try to use my .obj file. Thanks for the help!
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.