Fix stale effects persisting on server transfer
Effects from the local server .dat file persisted when the player had no effects saved in the DB. removeAllEffects() was only called inside the if-block that checks for saved effect data, so it was skipped when effectData was null/empty. Now effects are ALWAYS cleared before restoring from DB. SOL Onion food diversity is already synced via the generic NeoForge attachment system (FoodPlayerData is a NeoForge attachment). Vyrriox
This commit is contained in:
parent
2e0269ee62
commit
0c7026aa65
|
|
@ -355,10 +355,13 @@ public class VanillaSync {
|
|||
}
|
||||
}
|
||||
|
||||
// Restore Effects
|
||||
// FIX: ALWAYS clear effects before restoring to prevent stale local effects
|
||||
// from persisting when DB has no saved effects (e.g. player had no effects on previous server)
|
||||
serverPlayer.removeAllEffects();
|
||||
|
||||
// Restore Effects from DB (if any)
|
||||
String effectData = rs2.getString("effects");
|
||||
if (effectData != null && effectData.length() > 2) {
|
||||
serverPlayer.removeAllEffects();
|
||||
Map<Integer, String> effects = LocalJsonUtil.StringToEntryMap(effectData);
|
||||
for (Map.Entry<Integer, String> entry : effects.entrySet()) {
|
||||
CompoundTag effectTag = NbtUtils.snbtToStructure(deserializeString(entry.getValue()));
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user