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

    • Im having this problem where i open the run.bat file with the following code: "C:\Program Files\Java\jre-1.8\bin\javaw.exe" -Xmx6000M -Xms6000M -jar forge-1.12.2-14.23.5.2860.jar nogui PAUSE This creates all the folders and files that it would normally create (eula.txt, mods, server.properties, etc) but it wont generate a world, the eula has been accepted, but it still does nothing, and it wont say anything on the cmd besides leaving a blank paragraph and the PAUSE code. I dont know what to do, i updated the last version of java 8, i tried many forge versions, including the latest, the recomended and a few others, i restarted my pc various times, nothing. Normal vanilla servers work just fine, its the forge one that doesnt do the thing. Im desperate, i've been trying to create a 1.20.2 server and for some reason every tweak i made for ram usage never worked, it still used 1gb to 3gb max, world not loading correctly, countless ticks behind. try a 1.12.2 server, got nowhere, and the weirdest thing is that i already made some 1.12.2 forge servers on this same pc a few years ago and had no trouble at all. if anybody knows what is happening please leave a comment, i will thank you with all my heart.
    • We've actually started running into a new problem, whilst adding more mods may work, it makes it so that we're unable to connect to our server, even on LAN. Does anyone know what this error message means? We're not getting any helpful output into console either. Edit: found the logs for attempting to connect [21:46:00] [Netty Epoll Client IO #0/WARN]: Your custom tfmg:coking recipe (tfmg:coking/coal_coke) specified a duration. Durations have no impact on this type of recipe. [21:46:00] [Render thread/INFO]: Reloaded entity icon resources! [21:46:00] [Netty Epoll Client IO #0/WARN]: Your custom createaddition:rolling/copper_plate recipe (createaddition:rolling/copper_plate) specified a duration. Durations have no impact on this type of recipe. [21:46:00] [Render thread/INFO]: Redirecting net/minecraft/world/level/chunk/LevelChunk$EntityCreationType [21:46:00] [Render thread/INFO]: Redirecting com/possible_triangle/flightlib/api/FlyingPose [21:46:00] [Render thread/INFO]: Redirecting net/minecraft/world/BossEvent$BossBarColor [21:46:00] [Render thread/INFO]: Redirecting fuzs/overflowingbars/client/handler/HealthBarRenderer$HeartType [21:46:00] [Render thread/INFO]: Curios has been initialized with 17 slot(s) after 1 tries [21:46:00] [Render thread/INFO]: Redirecting org/violetmoon/quark/api/event/UsageTickerEvent$Pass [21:46:00] [Render thread/INFO]: Redirecting net/minecraft/world/level/block/SupportType [21:46:00] [Render thread/INFO]: Redirecting com/tom/cpm/shared/MinecraftClientAccess$ServerStatus [21:46:00] [Render thread/INFO]: Redirecting io/socol/betterthirdperson/api/TickPhase [21:46:00] [Render thread/INFO]: Redirecting net/minecraft/world/scores/Team$CollisionRule [21:46:00] [Render thread/INFO]: Redirecting net/blf02/vrapi/client/VRDataGrabber$PlayerType [21:46:00] [Render thread/INFO]: Redirecting com/corosus/watut/PlayerStatus$PlayerChatState [21:46:00] [Render thread/WARN]: Unable to play empty soundEvent: biomemusic:music.game [21:46:01] [Render thread/INFO]: Stopping worker threads [21:46:01] [Render thread/INFO]: Started 6 worker threads [21:46:01] [Netty Epoll Client IO #0/WARN]: Your custom createaddition:rolling/electrum_ingot recipe (createaddition:rolling/electrum_ingot) specified a duration. Durations have no impact on this type of recipe. [21:46:01] [Netty Epoll Client IO #0/WARN]: Your custom tfmg:casting recipe (tfmg:casting/steel) specified a duration. Durations have no impact on this type of recipe. [21:46:01] [Netty Epoll Client IO #0/WARN]: Your custom tfmg:casting recipe (tfmg:casting/steel) has more fluid inputs (1) than supported (0). [21:46:01] [Netty Epoll Client IO #0/WARN]: Your custom createaddition:rolling/brass_ingot recipe (createaddition:rolling/brass_ingot) specified a duration. Durations have no impact on this type of recipe. [21:46:01] [Render thread/INFO]: Redirecting net/minecraft/client/gui/components/toasts/Toast$Visibility [21:46:01] [CullThread/INFO]: Redirecting com/logisticscraft/occlusionculling/OcclusionCullingInstance$Relative [21:46:01] [Netty Epoll Client IO #0/WARN]: Your custom createaddition:rolling/electrum_plate recipe (createaddition:rolling/electrum_plate) specified a duration. Durations have no impact on this type of recipe. [21:46:01] [Netty Epoll Client IO #0/WARN]: Your custom createaddition:rolling/gold_plate recipe (createaddition:rolling/gold_plate) specified a duration. Durations have no impact on this type of recipe. [21:46:01] [Netty Epoll Client IO #0/WARN]: Your custom createaddition:rolling/gold_ingot recipe (createaddition:rolling/gold_ingot) specified a duration. Durations have no impact on this type of recipe. [21:46:01] [Netty Epoll Client IO #0/WARN]: Your custom createaddition:rolling/iron_plate recipe (createaddition:rolling/iron_plate) specified a duration. Durations have no impact on this type of recipe. [21:46:01] [Netty Epoll Client IO #0/WARN]: Your custom createaddition:rolling/iron_ingot recipe (createaddition:rolling/iron_ingot) specified a duration. Durations have no impact on this type of recipe. [21:46:02] [Netty Epoll Client IO #0/WARN]: Your custom tfmg:industrial_blasting recipe (tfmg:industrial_blasting/steel) specified a duration. Durations have no impact on this type of recipe. [21:46:02] [Netty Epoll Client IO #0/WARN]: Your custom createaddition:rolling/copper_ingot recipe (createaddition:rolling/copper_ingot) specified a duration. Durations have no impact on this type of recipe. [21:46:02] [Netty Epoll Client IO #0/WARN]: Your custom createaddition:rolling/straw recipe (createaddition:rolling/straw) specified a duration. Durations have no impact on this type of recipe. [21:46:02] [Netty Epoll Client IO #0/INFO]: Redirecting net/minecraft/world/entity/RelativeMovement [21:46:02] [Netty Epoll Client IO #0/INFO]: Redirecting dev/xkmc/l2library/capability/player/PlayerCapToClient$Action [21:46:02] [Render thread/WARN]: Unknown recipe category: cataclysm:weapon_fusion/cataclysm:weapon_infusion/void_assault_shoulder_weapon [21:46:03] [Netty Epoll Client IO #0/WARN]: Packet not registered: ClientboundDisconnectPacket [21:46:03] [Netty Epoll Client IO #0/WARN]: Packet:ClientboundDisconnectPacket [21:46:03] [Netty Epoll Client IO #0/WARN]: Packet data: { "f_132075_": "translation{key='disconnect.genericReason', args=[Internal Exception: io.netty.handler.codec.DecoderException: java.lang.IndexOutOfBoundsException: readerIndex(12) + length(8) exceeds writerIndex(13): PooledUnsafeDirectByteBuf(ridx: 12, widx: 13, cap: 13/14)]}" } [21:46:03] [Render thread/WARN]: Unknown recipe category: deep_aether:poison_recipe/deep_aether:golden_dart_from_poison [21:46:03] [Render thread/WARN]: Unknown recipe category: deep_aether:poison_recipe/deep_aether:holystone_from_poison [21:46:03] [Render thread/WARN]: Unknown recipe category: deep_aether:poison_recipe/deep_aether:gravitite_ore_from_poison [21:46:03] [Render thread/WARN]: Unknown recipe category: deep_aether:poison_recipe/deep_aether:purple_squash_from_blue_squash [21:46:03] [Render thread/WARN]: Unknown recipe category: cataclysm:weapon_fusion/cataclysm:weapon_infusion/gauntlet_of_bulwark [21:46:03] [Render thread/WARN]: Unknown recipe category: cataclysm:weapon_fusion/cataclysm:weapon_infusion/void_forge [21:46:03] [Render thread/WARN]: Unknown recipe category: deep_aether:poison_recipe/deep_aether:quicksoil_from_poison [21:46:03] [Render thread/WARN]: Unknown recipe category: deep_aether:poison_recipe/deep_aether:blueberry_from_poison [21:46:03] [Render thread/WARN]: Unknown recipe category: deep_aether:poison_recipe/deep_aether:skyroot_poison_bucket_from_poison [21:46:03] [Render thread/WARN]: Unknown recipe category: cataclysm:weapon_fusion/cataclysm:weapon_infusion/ignitium_elytra_chestplate [21:46:03] [Render thread/WARN]: Unknown recipe category: deep_aether:poison_recipe/deep_aether:purple_squash_from_green_squash  
    • I NEED A HACKER TO RECOVER MONEY FROM BINARY TRADING SCAMMED RECOVER BY BRUNOE QUICK HACK// WHATS APP  + 1 705 784 2635
    • Created new worlds and still had problems https://mclo.gs/ZoySn3o
  • Topics

×
×
  • Create New...

Important Information

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