Lothrazar / Cyclic

Minecraft mod written in Java
MIT License
165 stars 97 forks source link

Cyclic Heart Modifier makes some trouble^^ #1412

Closed Freebi85 closed 4 years ago

Freebi85 commented 4 years ago

Minecraft Version: 1.12.2 Forge Version: .2847 Mod Version: 1.20.2 Single Player or Server: Both

Describe problem (what you were doing; what happened; what should have happened): After updating to latest Cyclic version: For some reason the Cyclic heart modifiert gives some players a negative value of -20. Rewerting to a previous version don't fix the issue anymore.

That means some player have 0 hearts on login. Others with some spice of life or astral sorcery hearts, have a bit more depending on progression, Sometimes 3, sometimes 6.

Video/images/gifs (direct upload or link): pic

Cheers, Freebi

cyber01 commented 4 years ago

unknown second screenshot, illustrates problem

BlueAgent commented 4 years ago

tl;dr: Need some steps to reproduce this happening because I can't seem to make it happen. As a temporary fix use the /setheartmod <player> 0 command.

This is likely due to something my PR broke in switching to not basing health calculations off base health (the migration code).

See this change here: https://github.com/Lothrazar/Cyclic/pull/1264/files#diff-1ae591b8233b82d113a94d73cd8ad811R100-R107

That code is meant to migrate from the old system of storing total health (which includes the player's base health) to just storing the modifier (so without any changes it should be 0). I did test this in the associated video in the PR so this is kinda strange...

For this to occur it would have needed the OLD_MHEALTH tag to exist and also have a value of 0 instead of the default of 20...

I tried to reproduce it with these steps but didn't run into the problem (I did /kill to refresh the hearts displayed): Created a world with old version of Cyclic (1.12.2-1.19.18 released 2019/11/04) Loaded the world up with a new version of Cyclic (1.12.2-1.20.2 released 2020/04/19)

Also tried the above with eating one heart as well before upgrading the world.

Out of curiosity I tried downgrading cyclic and it initially has the correct hearts but upon using /kill it resets the heart modifier back to the default value (as if you had not eaten any hearts). Which is what is expected with the migration removing the old value.

Perhaps we could just keep the old tag around. That would let people downgrade properly? But, really, downgrading is a risky thing in general, a lot of mods assume that you only ever update them. (Example from another mod was astral sorcery allowing prism lens to be placed on any side instead of only facing up, upon downgrading, any lens not placed facing upwards vanished or crashed depending on if you've configured forge to remove erroring tiles).

Freebi85 commented 4 years ago

Well i think it's not a big deal at all because it happens only in very specific cases. Maybe only if you have additional spice of life hearts in combination with something else. My modpack DD&SS is pretty big and it's hard to track down this issue. Hard to reproduce. When creating some new worlds everything is fine and works as intended. Also the /setheartmod 0 command solves this problem 👍

Maybe you can simply leave this as a small and unexpected incompatibility after the update.

Lothrazar commented 4 years ago

legacy versions are feature complete, and this is in so many packs that changing it now will break more than it will fix. there was a breaking change at some point in the past, yeah. there are commands. and new worlds are consistent.

Great report and feedback tho