Jump to content

[Solved][1.14.4] Problem with custom entity rendering (...I guess?)


Recommended Posts

Posted (edited)

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 :D

 

 

Edited by Felix_
Solved
Posted
  On 9/9/2019 at 3:47 PM, 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.

Expand  

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.

Posted
  On 9/9/2019 at 3:47 PM, 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.
Expand  

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.

 

Posted (edited)
  On 9/9/2019 at 8:03 PM, diesieben07 said:

Just remove it.

 

Custom packets are explained in the documentation: https://mcforge.readthedocs.io/en/1.13.x/networking/simpleimpl/.

Expand  

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 by Felix_
Posted
  On 9/9/2019 at 9:07 PM, diesieben07 said:

Look at how the vanilla spawning packet (that I referenced above) works. Then replicate that in your own packet.

Expand  

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.

 

Posted (edited)
  On 9/10/2019 at 12:43 PM, 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.

Expand  

many thanks :D 

 

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 by Felix_

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.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • Veuillez lire la FAQ (le lien est en haut de la page) et les journaux de publication tels que décrits ici. Cela aidera à déterminer ce qui se passe. Ce sont des forums anglais, j'ai utilisé un traducteur pour essayer de vous aider, j'espère que ça se retrouve bien.
    • I tried adding the Create (6.0.4) mod to my modpack which causes it to crash before it finishes loading. I tried removing the mod Cold Sweat because the error said it failed to load due to something in Create but when I removed it, it kept crashing; and I also tried downgrading Create, but nothing helped. I assume there's an incompatible mod that's causing Create to not load correctly, but I can't find it. launcher_log.txt: https://mclo.gs/kn5Qkk2 debug.log: https://mclo.gs/zIKoAaB crash report: https://mclo.gs/j86C10Y The part of debug.log that I think is the crash (after Create mod already loaded incorrectly): [02May2025 14:52:36.813] [Worker-ResourceReload-2/ERROR] [net.minecraftforge.fml.javafmlmod.FMLModContainer/]: Exception caught during firing event: com/simibubi/create/content/redstone/displayLink/DisplayBehaviour Index: 3 Listeners: 0: NORMAL 1: net.minecraftforge.eventbus.EventBus$$Lambda$1770/0x00000008009bc8a0@70223c71 2: ASM: class com.momosoftworks.coldsweat.core.event.PotionRecipes register(Lnet/minecraftforge/fml/event/lifecycle/FMLCommonSetupEvent;)V 3: ASM: class com.momosoftworks.coldsweat.compat.CompatManager$ModEvents setupModEvents(Lnet/minecraftforge/fml/event/lifecycle/FMLCommonSetupEvent;)V java.lang.NoClassDefFoundError: com/simibubi/create/content/redstone/displayLink/DisplayBehaviour at TRANSFORMER/cold_sweat@2.3.12/com.momosoftworks.coldsweat.compat.CompatManager$ModEvents.setupModEvents(CompatManager.java:501) at TRANSFORMER/cold_sweat@2.3.12/com.momosoftworks.coldsweat.compat.__ModEvents_setupModEvents_FMLCommonSetupEvent.invoke(.dynamic) at MC-BOOTSTRAP/net.minecraftforge.eventbus/net.minecraftforge.eventbus.ASMEventHandler.invoke(ASMEventHandler.java:73) at MC-BOOTSTRAP/net.minecraftforge.eventbus/net.minecraftforge.eventbus.EventBus.post(EventBus.java:315) at MC-BOOTSTRAP/net.minecraftforge.eventbus/net.minecraftforge.eventbus.EventBus.post(EventBus.java:296) at LAYER PLUGIN/javafmllanguage@1.20.1-47.4.0/net.minecraftforge.fml.javafmlmod.FMLModContainer.acceptEvent(FMLModContainer.java:121) at LAYER PLUGIN/fmlcore@1.20.1-47.4.0/net.minecraftforge.fml.ModContainer.lambda$buildTransitionHandler$5(ModContainer.java:127) at java.base/java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1804) at java.base/java.util.concurrent.CompletableFuture$AsyncRun.exec(CompletableFuture.java:1796) at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373) at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1182) at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1655) at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1622) at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:165) Caused by: java.lang.ClassNotFoundException: com.simibubi.create.content.redstone.displayLink.DisplayBehaviour at cpw.mods.securejarhandler/cpw.mods.cl.ModuleClassLoader.loadClass(ModuleClassLoader.java:141) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525) ... 14 more [02May2025 14:52:36.972] [Worker-ResourceReload-2/ERROR] [net.minecraftforge.fml.javafmlmod.FMLModContainer/LOADING]: Caught exception during event FMLCommonSetupEvent dispatch for modid cold_sweat java.lang.NoClassDefFoundError: com/simibubi/create/content/redstone/displayLink/DisplayBehaviour at com.momosoftworks.coldsweat.compat.CompatManager$ModEvents.setupModEvents(CompatManager.java:501) ~[ColdSweat-2.3.12.jar%23537!/:2.3.12] at com.momosoftworks.coldsweat.compat.__ModEvents_setupModEvents_FMLCommonSetupEvent.invoke(.dynamic) ~[ColdSweat-2.3.12.jar%23537!/:2.3.12] at net.minecraftforge.eventbus.ASMEventHandler.invoke(ASMEventHandler.java:73) ~[eventbus-6.0.5.jar%2387!/:?] at net.minecraftforge.eventbus.EventBus.post(EventBus.java:315) ~[eventbus-6.0.5.jar%2387!/:?] at net.minecraftforge.eventbus.EventBus.post(EventBus.java:296) ~[eventbus-6.0.5.jar%2387!/:?] at net.minecraftforge.fml.javafmlmod.FMLModContainer.acceptEvent(FMLModContainer.java:121) ~[javafmllanguage-1.20.1-47.4.0.jar%23784!/:?] at net.minecraftforge.fml.ModContainer.lambda$buildTransitionHandler$5(ModContainer.java:127) ~[fmlcore-1.20.1-47.4.0.jar%23783!/:?] at java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1804) ~[?:?] at java.util.concurrent.CompletableFuture$AsyncRun.exec(CompletableFuture.java:1796) ~[?:?] at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373) ~[?:?] at java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1182) ~[?:?] at java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1655) ~[?:?] at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1622) ~[?:?] at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:165) ~[?:?] Caused by: java.lang.ClassNotFoundException: com.simibubi.create.content.redstone.displayLink.DisplayBehaviour at cpw.mods.cl.ModuleClassLoader.loadClass(ModuleClassLoader.java:141) ~[securejarhandler-2.1.10.jar:?] at java.lang.ClassLoader.loadClass(ClassLoader.java:525) ~[?:?] ... 14 more
    • You would probably be better served looking for support where NeoForge support is given, I believe their discord server.
    • If you copy and paste the java commandline into the terminal, what happens? as in trying to launch it without using the .bat file.
    • Install Java 17   If java 17 is already installed, reassign Java Open Settings  Select Apps  Select Default Apps (left-hand side)  Select 'Choose default apps by file type'  Scroll down and find .jar  Change the application for the .jar file to Java 
  • Topics

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.