iPortalTeam / ImmersivePortalsModForForge

Non-Euclidean in Minecraft. See through portals and teleport seamlessly.
https://qouteall.fun/immptl/
Apache License 2.0
43 stars 18 forks source link

Auto Leveling mod capability is not being synced to client #54

Closed Daripher closed 1 year ago

Daripher commented 2 years ago

According to your testing, does the issue occur with ONLY Immersive Portals mod installed?

No

Forge Version

40.1.85

ImmersivePortals Version

1.4.12-mc1.18.2

Latest Log

https://gist.github.com/Daripher/2449e903ee02d6a32d5dd820672f45a9

Crash Report (if applicable)

No response

Steps to Reproduce

  1. Summon a zombie, it should be level 1.
  2. Teleport at least 200 blocks away from spawn.
  3. Summon a zombie again, it will still be level 1.

What You Expected

By default, monsters should gain 1 level for every 100 blocks traveled from spawn.

What Happened Instead

Monsters do gain levels, however this data is not being synced. Visual level of every monster is 1.

Additional Details

Mod that is being broken: CurseForge: https://www.curseforge.com/minecraft/mc-mods/auto-leveling. GitHub: https://github.com/Daripher/Auto-Leveling

I've also tested that with Jade mod to see if monsters gain additional health with levels and they do. Which means this is just synchronization issue.

Please Read and Confirm The Following

Nick1st commented 2 years ago

The capability is synced through a custom package, isn't it?

Daripher commented 2 years ago

The capability is synced through a custom package, isn't it?

What do you mean? It is a custom capability and it is synced through mod. But something breaks when I'm installing Immersive Portals.

Daripher commented 2 years ago

After some more tests I've figured out that packets are not even being sent. I'm using net.minecraftforge.event.entity.player.PlayerEvent.StartTracking event to detect when mobs data needs to be synced and looks like this event is not being fired.

Daripher commented 1 year ago

I'm pretty sure this issue breaks any mod that uses PlayerEvent.StartTracking event, because it is never being called.