浏览代码

fix BrewingStand inventory is updated immediately instead of after firing the event. Now the event can be canceled correct. (#4351)

Wolf2323 4 年之前
父节点
当前提交
0e09ac397d
共有 1 个文件被更改,包括 8 次插入1 次删除
  1. 8 1
      src/main/java/com/gmail/nossr50/skills/alchemy/AlchemyPotionBrewer.java

+ 8 - 1
src/main/java/com/gmail/nossr50/skills/alchemy/AlchemyPotionBrewer.java

@@ -114,6 +114,7 @@ public final class AlchemyPotionBrewer {
         }
 
         List<AlchemyPotion> inputList = new ArrayList<>();
+        ItemStack[] outputList = new ItemStack[3];
 
         for (int i = 0; i < 3; i++) {
             ItemStack item = inventory.getItem(i);
@@ -128,7 +129,7 @@ public final class AlchemyPotionBrewer {
             inputList.add(input);
 
             if (output != null) {
-                inventory.setItem(i, output.toItemStack(item.getAmount()).clone());
+                outputList[i] = output.toItemStack(item.getAmount()).clone();
             }
         }
 
@@ -139,6 +140,12 @@ public final class AlchemyPotionBrewer {
             return;
         }
 
+        for (int i = 0; i < 3; i++) {
+            if(outputList[i] != null) {
+                inventory.setItem(i, outputList[i]);
+            }
+        }
+
         removeIngredient(inventory, player);
 
         for (AlchemyPotion input : inputList) {