FireController1847 Posted December 7, 2019 Share Posted December 7, 2019 (edited) I'm currently working on a mod that allows a player to have more than their maximum amount of health. I've got the health modifier down, but what I don't understand is what happens when the player changes dimension. It appears that the modifier goes away. This would be fine, except... well, this is best explained with an example: Let's say I have 20 hearts. If I'm at full health, then go through a nether portal, my modifier is re-applied and I get the appropriate amount of 20 hearts back. However, my health is down to 10. My question is, how do I remember and persist the player's health as they go from one world to another? My code is currently available here, and below is a code snippet of my changed dimension event: @SubscribeEvent public static void onPlayerChangedDimension(PlayerChangedDimensionEvent event) { debug("PlayerChangedDimension{Event}"); // Fetch Capability PlayerEntity player = event.getPlayer(); IMoreHealth cap = MoreHealth.getFromPlayer(player); // Re-add health modifier LevelHearts.applyHealthModifier(player, cap.getTrueModifier()); } Edited December 7, 2019 by FireController1847 Quote I am on my journey of making a remake of matmos, as explained here. Link to comment Share on other sites More sharing options...
Choonster Posted December 7, 2019 Share Posted December 7, 2019 (edited) I'm pretty sure this method worked in 1.12.2, the linked code is for 1.14.4 but I haven't tested it yet. Edited December 7, 2019 by Choonster 1 Quote Please don't PM me to ask for help. Asking your question in a public thread preserves it for people who are having the same problem in the future. Link to comment Share on other sites More sharing options...
FireController1847 Posted December 7, 2019 Author Share Posted December 7, 2019 1 minute ago, Choonster said: I'm pretty sure this method worked in 1.12.2, the linked code is for 1.14.4 but I haven't tested it yet. Awesome, thanks. I'll try that next chance I get and report back here Quote I am on my journey of making a remake of matmos, as explained here. Link to comment Share on other sites More sharing options...
FireController1847 Posted December 7, 2019 Author Share Posted December 7, 2019 (edited) It worked! Awesome, thank you! I don't suppose you'd be willing to help me understand what this piece of code does? I kind of get that it's making a packet for the attribute, but what is this "sendToTrackingAndSelf" method? Edited December 7, 2019 by FireController1847 Quote I am on my journey of making a remake of matmos, as explained here. Link to comment Share on other sites More sharing options...
Choonster Posted December 7, 2019 Share Posted December 7, 2019 2 hours ago, FireController1847 said: It worked! Awesome, thank you! I don't suppose you'd be willing to help me understand what this piece of code does? I kind of get that it's making a packet for the attribute, but what is this "sendToTrackingAndSelf" method? It sends the packet to all players whose clients are tracking the entity (i.e. all players within X blocks of it) as well as the entity itself (if it's a player). Quote Please don't PM me to ask for help. Asking your question in a public thread preserves it for people who are having the same problem in the future. Link to comment Share on other sites More sharing options...
FireController1847 Posted December 7, 2019 Author Share Posted December 7, 2019 20 minutes ago, Choonster said: It sends the packet to all players whose clients are tracking the entity (i.e. all players within X blocks of it) as well as the entity itself (if it's a player). So in reality, what's happening is the attribute is lost on the client-side but not on the server side, which allows it to recover itself without having to re-initiate it? Quote I am on my journey of making a remake of matmos, as explained here. Link to comment Share on other sites More sharing options...
Choonster Posted December 7, 2019 Share Posted December 7, 2019 52 minutes ago, FireController1847 said: So in reality, what's happening is the attribute is lost on the client-side but not on the server side, which allows it to recover itself without having to re-initiate it? Yes. The client loses the attribute (which may be a Vanilla bug, I'm not sure), but the server retains the correct value and re-syncs it to the client. 1 1 Quote Please don't PM me to ask for help. Asking your question in a public thread preserves it for people who are having the same problem in the future. Link to comment Share on other sites More sharing options...
Recommended Posts
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.