소스 검색

Add some exploit prevention to fishing

nossr50 3 년 전
부모
커밋
27854720f0
2개의 변경된 파일11개의 추가작업 그리고 5개의 파일을 삭제
  1. 1 1
      pom.xml
  2. 10 4
      src/main/java/com/gmail/nossr50/listeners/PlayerListener.java

+ 1 - 1
pom.xml

@@ -2,7 +2,7 @@
     <modelVersion>4.0.0</modelVersion>
     <groupId>com.gmail.nossr50.mcMMO</groupId>
     <artifactId>mcMMO</artifactId>
-    <version>2.1.212</version>
+    <version>2.1.213-SNAPSHOT</version>
     <name>mcMMO</name>
     <url>https://github.com/mcMMO-Dev/mcMMO</url>
     <scm>

+ 10 - 4
src/main/java/com/gmail/nossr50/listeners/PlayerListener.java

@@ -428,7 +428,9 @@ public class PlayerListener implements Listener {
                     ItemStack inHand = player.getInventory().getItemInMainHand();
 
                     //Grab lure level
-                    if(inHand != null && inHand.getType().getKey().getKey().equalsIgnoreCase("fishing_rod")) {
+                    if(inHand != null
+                            && inHand.getItemMeta() != null
+                            && inHand.getType().getKey().getKey().equalsIgnoreCase("fishing_rod")) {
                         if(inHand.getItemMeta().hasEnchants()) {
                             for(Enchantment enchantment : inHand.getItemMeta().getEnchants().keySet()) {
                                 if(enchantment.toString().toLowerCase().contains("lure")) {
@@ -436,10 +438,14 @@ public class PlayerListener implements Listener {
                                 }
                             }
                         }
-                    }
 
-                    fishingManager.masterAngler(event.getHook(), lureLevel);
-                    fishingManager.setFishingTarget();
+                    // Prevent any potential odd behavior by only processing if no offhand fishing rod is present
+                    if(!player.getInventory().getItemInOffHand().getType().getKey().getKey().equalsIgnoreCase("fishing_rod")) {
+                        // In case of offhand fishing rod, don't process anything
+                        fishingManager.masterAngler(event.getHook(), lureLevel);
+                        fishingManager.setFishingTarget();
+                    }
+                }
                 }
                 return;
             case CAUGHT_FISH: