浏览代码

fix for NPE during inventory events Fixes #5148

nossr50 3 月之前
父节点
当前提交
86b457861c
共有 2 个文件被更改,包括 11 次插入3 次删除
  1. 1 0
      Changelog.txt
  2. 10 3
      src/main/java/com/gmail/nossr50/util/ContainerMetadataUtils.java

+ 1 - 0
Changelog.txt

@@ -1,4 +1,5 @@
 Version 2.2.031
+    Fixed potential NPE when player or blockstate is null for Inventory events on Furnaces
     Fixed bug where en_us locale was being set system-wide (thanks BlvckBytes)
     Fixed bug where Decimal format would throw exception on non en_us systems (thanks BlvckBytes)
     (API) Added McMMOPlayerTameEntityEvent event (thanks Warriorrr)

+ 10 - 3
src/main/java/com/gmail/nossr50/util/ContainerMetadataUtils.java

@@ -23,9 +23,11 @@ import static java.util.Objects.requireNonNull;
 
 public class ContainerMetadataUtils {
 
-    public static void changeContainerOwnership(@NotNull BlockState blockState, @NotNull Player player) {
-        requireNonNull(blockState, "blockState cannot be null");
-        requireNonNull(player, "Player cannot be null");
+    public static void changeContainerOwnership(@Nullable BlockState blockState, @Nullable Player player) {
+        // no-op when the blockState is null or player is null
+        if (blockState == null || player == null) {
+            return;
+        }
 
         final McMMOPlayer mmoPlayer = UserManager.getPlayer(player);
 
@@ -79,6 +81,11 @@ public class ContainerMetadataUtils {
     }
 
     public static void processContainerOwnership(BlockState blockState, Player player) {
+        // no-op when the blockState is null or player is null
+        if (blockState == null || player == null) {
+            return;
+        }
+
         if (getContainerOwner(blockState) != null) {
             if (getContainerOwner(blockState).getUniqueId().equals(player.getUniqueId()))
                 return;