From f8022aeee2e9512d16d75f042edbf8ef04065a87 Mon Sep 17 00:00:00 2001 From: Tobias Nett Date: Fri, 28 May 2021 22:05:51 +0200 Subject: [PATCH] fix(DiscordRPC): NPE on shutdown (#4723) --- .../subsystem/discordrpc/DiscordRPCSystem.java | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/subsystems/DiscordRPC/src/main/java/org/terasology/subsystem/discordrpc/DiscordRPCSystem.java b/subsystems/DiscordRPC/src/main/java/org/terasology/subsystem/discordrpc/DiscordRPCSystem.java index 72155a4dd9..c10a6421aa 100644 --- a/subsystems/DiscordRPC/src/main/java/org/terasology/subsystem/discordrpc/DiscordRPCSystem.java +++ b/subsystems/DiscordRPC/src/main/java/org/terasology/subsystem/discordrpc/DiscordRPCSystem.java @@ -71,20 +71,22 @@ public void postBegin() { @Override public void shutdown() { - if (delayManager.hasPeriodicAction(player.getClientEntity(), UPDATE_PARTY_SIZE_ID)) { - delayManager.cancelPeriodicAction(player.getClientEntity(), UPDATE_PARTY_SIZE_ID); + if (player != null) { + EntityRef client = player.getClientEntity(); + if (delayManager != null && delayManager.hasPeriodicAction(client, UPDATE_PARTY_SIZE_ID)) { + delayManager.cancelPeriodicAction(client, UPDATE_PARTY_SIZE_ID); + } } - DiscordRPCSubSystem.reset(); DiscordRPCSubSystem.setState("In Main Menu"); DiscordRPCSubSystem.setStartTimestamp(null); } @ReceiveEvent - public void onPlayerInitialized(LocalPlayerInitializedEvent event, EntityRef player) { + public void onPlayerInitialized(LocalPlayerInitializedEvent event, EntityRef localPlayer) { /* Adds the periodic action when the player is hosting or playing online to update party size */ if (networkSystem.getMode() != NetworkMode.NONE) { - delayManager.addPeriodicAction(player, UPDATE_PARTY_SIZE_ID, 0, UPDATE_PARTY_SIZE_PERIOD); + delayManager.addPeriodicAction(localPlayer, UPDATE_PARTY_SIZE_ID, 0, UPDATE_PARTY_SIZE_PERIOD); } }