Jump to content

[1.15.2] Issues with vanilla rendering


Novârch

Recommended Posts

In my mod I've made a "timestop" effect where all entities are supposed to stop moving and keep their velocity after the effect is undone. Everything currently works perfectly except the rendering of certain entities(arrows, item entities, etc.), they appear to continue moving and continuously snap back to their original position, but when I disable the effect their position and velocity are correct. Is there a way to fix this rendering issue, if so how? The mod's code can be found here, on GitHub, the event fires each tick from a custom entity.

It's sad how much time mods spend saying "x is no longer supported on this forum. Please update to a modern version of Minecraft to receive support".

Link to comment
Share on other sites

I'm thinking it's probably because they don't sync the velocity every tick (called update interval or velocity update... not sure), therefore the client does not know the entity has stopped it's motion... you may need to do that yourself

Edited by poopoodice
Link to comment
Share on other sites

8 hours ago, poopoodice said:

you may need to do that yourself

What should I send SEntityVelocityPacket to, PacketDistributor#TRACKING_ENTITY? I haven't found much info online on how to send packets to entities.

Edited by Novârch

It's sad how much time mods spend saying "x is no longer supported on this forum. Please update to a modern version of Minecraft to receive support".

Link to comment
Share on other sites

13 hours ago, Novârch said:

In my mod I've made a "timestop" effect where all entities are supposed to stop moving and keep their velocity after the effect is undone. Everything currently works perfectly except the rendering of certain entities(arrows, item entities, etc.), they appear to continue moving and continuously snap back to their original position, but when I disable the effect their position and velocity are correct. Is there a way to fix this rendering issue, if so how? The mod's code can be found here, on GitHub, the event fires each tick from a custom entity.

You will have to cancel the velocity on the client side too.

Where are you doing this? If it is in a tile entity or a tickable object then you could get away with canceling the velocity of nearby objects on the client side in tick, otherwise you can create a stop time packet containing the range (coverage of the effect in the world) of the stop time effect, and send that to the client (as sending individual update velocity packets is both inefficient and considered a bad practice).

Edited by DavidM

Some tips:

Spoiler

Modder Support:

Spoiler

1. Do not follow tutorials on YouTube, especially TechnoVision (previously called Loremaster) and HarryTalks, due to their promotion of bad practice and usage of outdated code.

2. Always post your code.

3. Never copy and paste code. You won't learn anything from doing that.

4. 

Quote

Programming via Eclipse's hotfixes will get you nowhere

5. Learn to use your IDE, especially the debugger.

6.

Quote

The "picture that's worth 1000 words" only works if there's an obvious problem or a freehand red circle around it.

Support & Bug Reports:

Spoiler

1. Read the EAQ before asking for help. Remember to provide the appropriate log(s).

2. Versions below 1.11 are no longer supported due to their age. Update to a modern version of Minecraft to receive support.

 

 

Link to comment
Share on other sites

Oh hey you are making a JoJo mod!

 

21 minutes ago, Novârch said:

In a tick event.

So the effect is global? In that case just send a packet to all clients that is in the same dimension (or else, depending on the coverage of the effect), and cancel all velocity of entities. The same works with continuing the time (except you will need to also include the initial velocity of all entities).

Edited by DavidM

Some tips:

Spoiler

Modder Support:

Spoiler

1. Do not follow tutorials on YouTube, especially TechnoVision (previously called Loremaster) and HarryTalks, due to their promotion of bad practice and usage of outdated code.

2. Always post your code.

3. Never copy and paste code. You won't learn anything from doing that.

4. 

Quote

Programming via Eclipse's hotfixes will get you nowhere

5. Learn to use your IDE, especially the debugger.

6.

Quote

The "picture that's worth 1000 words" only works if there's an obvious problem or a freehand red circle around it.

Support & Bug Reports:

Spoiler

1. Read the EAQ before asking for help. Remember to provide the appropriate log(s).

2. Versions below 1.11 are no longer supported due to their age. Update to a modern version of Minecraft to receive support.

 

 

Link to comment
Share on other sites

1 hour ago, DavidM said:

In that case just send a packet to all clients that is in the same dimension

Thanks for the help, I think I've made some progress on this, the packet should in theory set an entities velocity on the client to it's velocity on the server, but I'm still getting the same graphical issues, I have the effect down, everything stops, but some entities like arrows look glitchy. Here's a gif of the glitch, and no that is not a continuous loop of an arrow falling, it just stays like that until I undo the effect.

1 hour ago, DavidM said:

Oh hey you are making a JoJo mod!

Yeah, I am. I'm pretty disappointed will all the current ones, they're rarely updated and a certain 1.12 ones creator is incompetent at modding.

Edited by Novârch

It's sad how much time mods spend saying "x is no longer supported on this forum. Please update to a modern version of Minecraft to receive support".

Link to comment
Share on other sites

51 minutes ago, Novârch said:

I think I've made some progress on this, the packet should in theory set an entities velocity on the client to it's velocity on the server

That would send a packet for every entity in the world, which is rather inefficient considering that when the time stops, all the values in the velocity would be 0. I would suggest making a separate packet for time stopping and time continuing.

Moreover, I would suggest to send a list of all affect entities in one packet. However, if you really want to update the velocity individually, change the velocity of the entity directly and call Entity#markVelocityChanged. This will make the game sync the entity's velocity on the next tick (therefore custom packets are not necessary) (this would send a packet for each marked entity, which would be inefficient on a large scale).

 

I'll check the arrow problem out, but I think it might be caused by the arrow's still picking up downward velocity from gravity every tick. In one of my mod I implemented a similar time stopping concept, and circumvented similar problems by keep setting the velocity of affected entities to 0. The client logic is similar to:

 

listEntity <- a list of entities affected by the time stop;

onStopPacketReceive: add specified entities to the list;

onContinuePacketReceive: remove entities from the list;

onTickEvent: set the velocity of all entities in the list to 0;

Edited by DavidM
  • Thanks 1

Some tips:

Spoiler

Modder Support:

Spoiler

1. Do not follow tutorials on YouTube, especially TechnoVision (previously called Loremaster) and HarryTalks, due to their promotion of bad practice and usage of outdated code.

2. Always post your code.

3. Never copy and paste code. You won't learn anything from doing that.

4. 

Quote

Programming via Eclipse's hotfixes will get you nowhere

5. Learn to use your IDE, especially the debugger.

6.

Quote

The "picture that's worth 1000 words" only works if there's an obvious problem or a freehand red circle around it.

Support & Bug Reports:

Spoiler

1. Read the EAQ before asking for help. Remember to provide the appropriate log(s).

2. Versions below 1.11 are no longer supported due to their age. Update to a modern version of Minecraft to receive support.

 

 

Link to comment
Share on other sites

On 6/12/2020 at 9:56 AM, DavidM said:

it might be caused by the arrow's still picking up downward velocity from gravity every tick

It seems that was the issue, setting the arrows velocity to 0 instead of setting it's position every tick fixed the issue, but now I have a new issue, all arrows face south during timestop.

 

On 6/12/2020 at 9:56 AM, DavidM said:

I would suggest to send a list of all affect entities in one packet.

I've been trying to do that, but to no avail, how am I supposed to send ALL the velocities in one packet and map them to the correct entity?

It's sad how much time mods spend saying "x is no longer supported on this forum. Please update to a modern version of Minecraft to receive support".

Link to comment
Share on other sites

Maybe there's a better way of doing this but maybe store the entity UUIDs in a hashmap or something and also pass the length (size) of the map to the packet.

Or just check the distance between the entity and the player is in a suitable distance, like the sendToAllNearExcept in PlayerList.

Link to comment
Share on other sites

6 hours ago, Novârch said:

It seems that was the issue, setting the arrows velocity to 0 instead of setting it's position every tick fixed the issue, but now I have a new issue, all arrows face south during timestop.

In my previous mod where I attempted the time stop, I didn't cancel the velocity completely. I set them to 0.05 of the original value. This allows projectiles like arrows to maintain its direction, but might not be suitable in your case. I'm not aware of any better ways, but if you would like to sacrifice the "total time stop" in favor of having correct rendering of arrows then it may be worth a try.

 

6 hours ago, Novârch said:

I've been trying to do that, but to no avail, how am I supposed to send ALL the velocities in one packet and map them to the correct entity?

Make an array (length N) of UUIDs containing all the N entities in the world.

Make another array (length 3 * N) containing the velocity of entities in the same order as the entity array.

Some tips:

Spoiler

Modder Support:

Spoiler

1. Do not follow tutorials on YouTube, especially TechnoVision (previously called Loremaster) and HarryTalks, due to their promotion of bad practice and usage of outdated code.

2. Always post your code.

3. Never copy and paste code. You won't learn anything from doing that.

4. 

Quote

Programming via Eclipse's hotfixes will get you nowhere

5. Learn to use your IDE, especially the debugger.

6.

Quote

The "picture that's worth 1000 words" only works if there's an obvious problem or a freehand red circle around it.

Support & Bug Reports:

Spoiler

1. Read the EAQ before asking for help. Remember to provide the appropriate log(s).

2. Versions below 1.11 are no longer supported due to their age. Update to a modern version of Minecraft to receive support.

 

 

Link to comment
Share on other sites

37 minutes ago, diesieben07 said:

Use Entity#getEntityId and World#getEntityByID instead of UUIDs for syncing.

I'm already using it, wouldn't have if it wasn't for the helpful code comment above it.

It's sad how much time mods spend saying "x is no longer supported on this forum. Please update to a modern version of Minecraft to receive support".

Link to comment
Share on other sites

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

    • Another Update: Updating the Forge MDL version worked. My conjecture to this weird bug or issue of sorts is that the plugin was downloading mappings and MDK from the latest forge minecraft version instead of the set forge minecraft version. This could be the only possible case of explanation, because clearing gradle cache does not work for me. I have tried this for over hours and just upgrading the MDK worked for me. Build and compile gradlew commands also works now, which further proves my guess. This is probably a bug on the plugin's side somehow, but it just doesn't make sense since at start trying the 40.2.18 MDL works fine and then deleting the cache breaks it.
    • Update: It seems like the forge version I was using was broken entirely, somehow... I am now using the Forge MDL 1.18.2-40.2.21 (previous used 40.2.18) version and now everything is working sort-of fine.... adding extra dependencies seems to break it again. It is so weird... Did anyone have similar issues with this before? I'm also using the Minecraft Development plugin for IntelliJ IDEA
    • Hello! I'm currently having issues while building a jar file for my Minecraft 1.18.2 Forge mod. I've attached a link to imgur below that holds two screenshots of the errors. I'm using Jetbrains IntelliJ IDEA 2024.1 and Gradle 8.4. This is my repo: Mod Repo When I was modding, I needed to build the mod in order to test the mod, which didn't work, as the first screenshot gives. It throws errors for each classes in the forge registry class (or whatever the hell that mess is) and is just generally confusing. Now I have deleted everything in my project folder and re-pulled the repo from github, which now gives the errors in the second image where all forge classes are not imported somehow. When I try to build it now, it just repeats the same errors in the first image. https://imgur.com/a/DYwSKqJ Please I need help desparately
    • [main/WARN] [net.minecraft.server.Main/]: Failed to load datapacks, can't proceed with server load. You can either fix your datapacks or reset to vanilla with --safeMode 8400java.util.concurrent.ExecutionException: com.google.gson.JsonParseException: Error loading registry data: No key name in MapLike[{"elements":[{"element":{"element_type":"minecraft:legacy_single_pool_element","location":"duneons:towns/village_creeperforest/town_center_01","processors":{"processors":[]},"projection":"rigid"},"weight":1}],"fallback":"minecraft:empty","forge:registry_name":"duneons:towns/village_creeperforest/town_centers"}] 8401at java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:396) ~[?:?] 8402at java.util.concurrent.CompletableFuture.get(CompletableFuture.java:2073) ~[?:?] 8403at net.minecraft.server.Main.main(Main.java:182) ~[server-1.19.2-20220805.130853-srg.jar%23243!/:?] 8404at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?] 8405at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[?:?] 8406at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?] 8407at java.lang.reflect.Method.invoke(Method.java:568) ~[?:?] 8408at net.minecraftforge.fml.loading.targets.CommonServerLaunchHandler.lambda$launchService$0(CommonServerLaunchHandler.java:29) ~[fmlloader-1.19.2-43.3.13.jar%2367!/:?] 8409at cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:30) [modlauncher-10.0.8.jar%2354!/:?] 8410at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:53) [modlauncher-10.0.8.jar%2354!/:?] 8411at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:71) [modlauncher-10.0.8.jar%2354!/:?] 8412at cpw.mods.modlauncher.Launcher.run(Launcher.java:106) [modlauncher-10.0.8.jar%2354!/:?] 8413at cpw.mods.modlauncher.Launcher.main(Launcher.java:77) [modlauncher-10.0.8.jar%2354!/:?] 8414at cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:26) [modlauncher-10.0.8.jar%2354!/:?] 8415at cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:23) [modlauncher-10.0.8.jar%2354!/:?] 8416at cpw.mods.bootstraplauncher.BootstrapLauncher.main(BootstrapLauncher.java:141) [bootstraplauncher-1.1.2.jar:?] 8417Caused by: com.google.gson.JsonParseException: Error loading registry data: No key name in MapLike[{"elements":[{"element":{"element_type":"minecraft:legacy_single_pool_element","location":"duneons:towns/village_creeperforest/town_center_01","processors":{"processors":[]},"projection":"rigid"},"weight":1}],"fallback":"minecraft:empty","forge:registry_name":"duneons:towns/village_creeperforest/town_centers"}] 8418at net.minecraft.core.RegistryAccess.m_206152_(RegistryAccess.java:211) ~[server-1.19.2-20220805.130853-srg.jar%23243!/:?] 8419at java.util.Optional.ifPresent(Optional.java:178) ~[?:?] 8420at net.minecraft.core.RegistryAccess.m_206159_(RegistryAccess.java:210) ~[server-1.19.2-20220805.130853-srg.jar%23243!/:?] 8421at net.minecraft.core.RegistryAccess.m_206171_(RegistryAccess.java:203) ~[server-1.19.2-20220805.130853-srg.jar%23243!/:?] 8422at net.minecraft.resources.RegistryOps.m_206817_(RegistryOps.java:32) ~[server-1.19.2-20220805.130853-srg.jar%23243!/:?] 8423at net.minecraft.resources.RegistryOps.m_206813_(RegistryOps.java:25) ~[server-1.19.2-20220805.130853-srg.jar%23243!/:?] 8424at net.minecraft.server.Main.lambda$main$2(Main.java:160) ~[server-1.19.2-20220805.130853-srg.jar%23243!/:?] 8425at net.minecraft.server.WorldLoader.m_214362_(WorldLoader.java:24) ~[server-1.19.2-20220805.130853-srg.jar%23243!/:?] 8426at net.minecraft.server.WorldStem.m_214415_(WorldStem.java:18) ~[server-1.19.2-20220805.130853-srg.jar%23243!/:?] 8427at net.minecraft.server.Main.lambda$main$3(Main.java:158) ~[server-1.19.2-20220805.130853-srg.jar%23243!/:?] 8428at net.minecraft.Util.m_214652_(Util.java:775) ~[server-1.19.2-20220805.130853-srg.jar%23243!/:?] 8429at net.minecraft.Util.m_214679_(Util.java:770) ~[server-1.19.2-20220805.130853-srg.jar%23243!/:?] 8430at net.minecraft.server.Main.main(Main.java:157) ~[server-1.19.2-20220805.130853-srg.jar%23243!/:?] 8431... 13 more 8432  
    • Try using 1.20.6-50.0.5, it just fixed an issue related to enchanting: https://github.com/MinecraftForge/MinecraftForge/commit/0e829630da67c91d2b5a91ea4b65eb033f868e76
  • Topics

×
×
  • Create New...

Important Information

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