From d2614ed6dc6f065c9740040b263db2f8f7472814 Mon Sep 17 00:00:00 2001 From: Intelli Date: Sun, 25 Jul 2021 16:53:58 -0600 Subject: [PATCH] Fixed risk of NullPointerException when logging container transactions --- .../coreprotect/database/logger/ContainerLogger.java | 12 ++++++++---- .../listener/player/InventoryChangeListener.java | 7 ++++--- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/src/main/java/net/coreprotect/database/logger/ContainerLogger.java b/src/main/java/net/coreprotect/database/logger/ContainerLogger.java index ab9075f..abba93b 100644 --- a/src/main/java/net/coreprotect/database/logger/ContainerLogger.java +++ b/src/main/java/net/coreprotect/database/logger/ContainerLogger.java @@ -46,10 +46,14 @@ public class ContainerLogger extends Queue { ItemStack[] oi1 = oldList.get(0); ItemStack[] oldInventory = Util.getContainerState(oi1); ItemStack[] newInventory = Util.getContainerState(contents); - if (ConfigHandler.forceContainer.get(loggingContainerId) != null) { - List forceList = ConfigHandler.forceContainer.get(loggingContainerId); - newInventory = Util.getContainerState(forceList.get(0)); - int forceSize = modifyForceContainer(loggingContainerId, null); + + List forceList = ConfigHandler.forceContainer.get(loggingContainerId); + if (forceList != null) { + int forceSize = 0; + if (!forceList.isEmpty()) { + newInventory = Util.getContainerState(forceList.get(0)); + forceSize = modifyForceContainer(loggingContainerId, null); + } if (forceSize == 0) { ConfigHandler.forceContainer.remove(loggingContainerId); } diff --git a/src/main/java/net/coreprotect/listener/player/InventoryChangeListener.java b/src/main/java/net/coreprotect/listener/player/InventoryChangeListener.java index fe03dcb..fe69f87 100644 --- a/src/main/java/net/coreprotect/listener/player/InventoryChangeListener.java +++ b/src/main/java/net/coreprotect/listener/player/InventoryChangeListener.java @@ -125,9 +125,10 @@ public final class InventoryChangeListener extends Queue implements Listener { ItemStack[] containerState = Util.getContainerState(inventoryData); // If items have been removed by a hopper, merge into containerState - if (ConfigHandler.transactingChest.get(transactingChestId) != null) { - List transactingChestList = Collections.synchronizedList(new ArrayList<>(ConfigHandler.transactingChest.get(transactingChestId))); - if (transactingChestList.size() > 0) { + List transactingChest = ConfigHandler.transactingChest.get(transactingChestId); + if (transactingChest != null) { + List transactingChestList = Collections.synchronizedList(new ArrayList<>(transactingChest)); + if (!transactingChestList.isEmpty()) { ItemStack[] newState = new ItemStack[containerState.length + transactingChestList.size()]; int count = 0;