Skip to content

Commit

Permalink
Potential change of the event order to synchronize achievements befor…
Browse files Browse the repository at this point in the history
…e the inventory (this has never been a problem before, but still)
  • Loading branch information
Michael Ruf committed Jan 18, 2023
1 parent d213e44 commit 3c438c5
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 5 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
Update fork
Add config flag SYNCHRONIZATION_DELAY_METHOD
Potential change of the event order to synchronize achievements before the inventory (this has never been a problem before, but still)
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,14 @@ public class InvSyncEventsHandler {
* @see net.minecraft.server.PlayerManager#createPlayer(GameProfile, PlayerPublicKey)
*/
public static void registerEvents(Config config) {
// Synchronize achievements first for them not to get triggered by inventory updates
// Of cause this just registers the event, and does not specify the execution order explicitly
// but registering this first might already help
if (config.SYNC_ADVANCEMENTS) {
InvSyncEvents.FETCH_PLAYER_DATA.register((player, playerData) -> ((PlayerAdvancementTrackerAccessor) player.getAdvancementTracker()).writeAdvancementData(playerData.advancements));
InvSyncEvents.SAVE_PLAYER_DATA.register((player, playerData) -> playerData.advancements = ((PlayerAdvancementTrackerAccessor) player.getAdvancementTracker()).readAdvancementData());
}

if (config.SYNC_INVENTORY) {
InvSyncEvents.FETCH_PLAYER_DATA.register((player, playerData) -> {
player.getInventory().readNbt(playerData.inventory);
Expand Down Expand Up @@ -85,10 +93,5 @@ public static void registerEvents(Config config) {
playerData.effects = effects;
});
}

if (config.SYNC_ADVANCEMENTS) {
InvSyncEvents.FETCH_PLAYER_DATA.register((player, playerData) -> ((PlayerAdvancementTrackerAccessor) player.getAdvancementTracker()).writeAdvancementData(playerData.advancements));
InvSyncEvents.SAVE_PLAYER_DATA.register((player, playerData) -> playerData.advancements = ((PlayerAdvancementTrackerAccessor) player.getAdvancementTracker()).readAdvancementData());
}
}
}

0 comments on commit 3c438c5

Please sign in to comment.