소스 검색

Fix issue where the vanilla XP boost for smelting would be called
regardless of who took the item out of the furnace. Not only does this
fix the exploit, it also fixes an NPE that could occur if the player who
lit the furnance was offline when someone else extracted the items from
it.

GJ 12 년 전
부모
커밋
8c7fd7b1a6
1개의 변경된 파일7개의 추가작업 그리고 2개의 파일을 삭제
  1. 7 2
      src/main/java/com/gmail/nossr50/listeners/InventoryListener.java

+ 7 - 2
src/main/java/com/gmail/nossr50/listeners/InventoryListener.java

@@ -17,6 +17,7 @@ import org.bukkit.inventory.FurnaceInventory;
 import org.bukkit.inventory.ItemStack;
 
 import com.gmail.nossr50.mcMMO;
+import com.gmail.nossr50.datatypes.McMMOPlayer;
 import com.gmail.nossr50.skills.smelting.SmeltingManager;
 import com.gmail.nossr50.util.ItemChecks;
 import com.gmail.nossr50.util.Users;
@@ -118,8 +119,12 @@ public class InventoryListener implements Listener{
             ItemStack result = inventory.getResult();
     
             if (plugin.furnaceIsTracked(furnaceBlock) && result != null && ItemChecks.isSmelted(result)) {
-                SmeltingManager smeltingManager = new SmeltingManager(Users.getPlayer(plugin.getFurnacePlayer(furnaceBlock)));
-                smeltingManager.vanillaXPBoost(event);
+                McMMOPlayer mcMMOPlayer = Users.getPlayer(plugin.getFurnacePlayer(furnaceBlock));
+
+                if (event.getPlayer().equals(mcMMOPlayer.getPlayer())) {
+                    SmeltingManager smeltingManager = new SmeltingManager(mcMMOPlayer);
+                    smeltingManager.vanillaXPBoost(event);
+                }
             }
         }
     }