Browse Source

Fishing will no longer cancel the exp dropped for ice fishing and will no longer bring xp values below zero with the xp multiplier
Not sure if this fixes the XP bug though!

nossr50 6 years ago
parent
commit
017e32c30a
1 changed files with 13 additions and 2 deletions
  1. 13 2
      src/main/java/com/gmail/nossr50/listeners/PlayerListener.java

+ 13 - 2
src/main/java/com/gmail/nossr50/listeners/PlayerListener.java

@@ -264,7 +264,9 @@ public class PlayerListener implements Listener {
                 }
                 }
 
 
                 if (Permissions.vanillaXpBoost(player, PrimarySkillType.FISHING)) {
                 if (Permissions.vanillaXpBoost(player, PrimarySkillType.FISHING)) {
-                    event.setExpToDrop(fishingManager.handleVanillaXpBoost(event.getExpToDrop()));
+                    //Don't modify XP below vanilla values
+                    if(fishingManager.handleVanillaXpBoost(event.getExpToDrop()) > 1)
+                        event.setExpToDrop(fishingManager.handleVanillaXpBoost(event.getExpToDrop()));
                 }
                 }
                 return;
                 return;
 
 
@@ -272,7 +274,9 @@ public class PlayerListener implements Listener {
                 Block block = player.getTargetBlock(null, 100);
                 Block block = player.getTargetBlock(null, 100);
 
 
                 if (fishingManager.canIceFish(block)) {
                 if (fishingManager.canIceFish(block)) {
-                    event.setCancelled(true);
+
+                    cancelFishingEventAndDropXp(event, player);
+
                     fishingManager.iceFishing(event.getHook(), block);
                     fishingManager.iceFishing(event.getHook(), block);
                 }
                 }
                 return;
                 return;
@@ -282,6 +286,12 @@ public class PlayerListener implements Listener {
         }
         }
     }
     }
 
 
+    private void cancelFishingEventAndDropXp(PlayerFishEvent event, Player player) {
+        event.setCancelled(true);
+        ExperienceOrb experienceOrb = (ExperienceOrb) player.getWorld().spawnEntity(player.getEyeLocation(), EntityType.EXPERIENCE_ORB);
+        experienceOrb.setExperience(event.getExpToDrop());
+    }
+
     /**
     /**
      * Monitor PlayerFishEvents.
      * Monitor PlayerFishEvents.
      * <p>
      * <p>
@@ -312,6 +322,7 @@ public class PlayerListener implements Listener {
         FishingManager fishingManager = UserManager.getPlayer(player).getFishingManager();
         FishingManager fishingManager = UserManager.getPlayer(player).getFishingManager();
 
 
         Entity caught = event.getCaught();
         Entity caught = event.getCaught();
+        //event.setExpToDrop(event.getExpToDrop()); //Redundant?
 
 
         switch (event.getState()) {
         switch (event.getState()) {
             case FISHING:
             case FISHING: