Browse Source

Change how we handle players not being able to pick up items while using
Berserk.

GJ 12 years ago
parent
commit
276800f999

+ 1 - 0
Changelog.txt

@@ -20,6 +20,7 @@ Version 1.4.00-dev
  = Fixed Woodcutting accidentally using Mining double drop values.
  = Fixed Woodcutting accidentally using Mining double drop values.
  = Fixed Hylian Luck not removing the block-placed flag from flowers.
  = Fixed Hylian Luck not removing the block-placed flag from flowers.
  = Fixed Hylian Luck not checking the block-placed flag on flowers.
  = Fixed Hylian Luck not checking the block-placed flag on flowers.
+ ! Changed how Berserk handles not picking up items to avoid listening to PlayerPickupItemEvent
  ! Moved Hylian Luck into a separate listener since it actually cancels the event and shouldn't just be on MONITOR.
  ! Moved Hylian Luck into a separate listener since it actually cancels the event and shouldn't just be on MONITOR.
  ! Changed how Tree Feller is handled, it should now put less stress on the CPU
  ! Changed how Tree Feller is handled, it should now put less stress on the CPU
  ! Changed Fisherman's Diet and Farmer's Diet to use two seperate config values
  ! Changed Fisherman's Diet and Farmer's Diet to use two seperate config values

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

@@ -42,6 +42,7 @@ import com.gmail.nossr50.skills.repair.Salvage;
 import com.gmail.nossr50.skills.taming.TamingManager;
 import com.gmail.nossr50.skills.taming.TamingManager;
 import com.gmail.nossr50.util.BlockChecks;
 import com.gmail.nossr50.util.BlockChecks;
 import com.gmail.nossr50.util.Item;
 import com.gmail.nossr50.util.Item;
+import com.gmail.nossr50.util.Misc;
 import com.gmail.nossr50.util.Permissions;
 import com.gmail.nossr50.util.Permissions;
 import com.gmail.nossr50.util.Users;
 import com.gmail.nossr50.util.Users;
 
 
@@ -62,26 +63,20 @@ public class PlayerListener implements Listener {
     public void onPlayerWorldChangeEvent(PlayerChangedWorldEvent event) {
     public void onPlayerWorldChangeEvent(PlayerChangedWorldEvent event) {
         Player player = event.getPlayer();
         Player player = event.getPlayer();
 
 
-        if (player.hasMetadata("NPC")) return; // Check if this player is a Citizens NPC
-
-        PlayerProfile profile = Users.getProfile(player);
-
-        if (profile == null) {
+        if (Misc.isNPC(player)) {
             return;
             return;
         }
         }
 
 
-        if (profile.getGodMode()) {
-            if (!Permissions.mcgod(player)) {
-                profile.toggleGodMode();
-                player.sendMessage(LocaleLoader.getString("Commands.GodMode.Forbidden"));
-            }
+        PlayerProfile profile = Users.getProfile(player);
+
+        if (profile.getGodMode() && !Permissions.mcgod(player)) {
+            profile.toggleGodMode();
+            player.sendMessage(LocaleLoader.getString("Commands.GodMode.Forbidden"));
         }
         }
 
 
-        if (profile.inParty()) {
-            if (!Permissions.party(player)) {
-                profile.removeParty();
-                player.sendMessage(LocaleLoader.getString("Party.Forbidden"));
-            }
+        if (profile.inParty() && !Permissions.party(player)) {
+            profile.removeParty();
+            player.sendMessage(LocaleLoader.getString("Party.Forbidden"));
         }
         }
     }
     }
 
 
@@ -122,27 +117,6 @@ public class PlayerListener implements Listener {
         }
         }
     }
     }
 
 
-    /**
-     * Monitor PlaterPickupItem events.
-     *
-     * @param event The event to watch
-     */
-    @EventHandler(ignoreCancelled = true)
-    public void onPlayerPickupItem(PlayerPickupItemEvent event) {
-
-        if (event.getPlayer().hasMetadata("NPC")) return; // Check if this player is a Citizens NPC
-
-        PlayerProfile profile = Users.getProfile(event.getPlayer());
-
-        if (profile == null) {
-            return;
-        }
-
-        if (profile.getAbilityMode(AbilityType.BERSERK)) {
-            event.setCancelled(true);
-        }
-    }
-
     /**
     /**
      * Monitor PlayerLogin events.
      * Monitor PlayerLogin events.
      *
      *

+ 7 - 0
src/main/java/com/gmail/nossr50/skills/Skills.java

@@ -178,6 +178,10 @@ public class Skills {
 
 
         if (ability.getPermissions(player)) {
         if (ability.getPermissions(player)) {
             if (profile.getAbilityMode(ability) && (profile.getSkillDATS(ability) * Misc.TIME_CONVERSION_FACTOR) <= curTime) {
             if (profile.getAbilityMode(ability) && (profile.getSkillDATS(ability) * Misc.TIME_CONVERSION_FACTOR) <= curTime) {
+                if (ability == AbilityType.BERSERK) {
+                    player.setCanPickupItems(true);
+                }
+
                 profile.setAbilityMode(ability, false);
                 profile.setAbilityMode(ability, false);
                 profile.setAbilityInformed(ability, false);
                 profile.setAbilityInformed(ability, false);
                 player.sendMessage(ability.getAbilityOff());
                 player.sendMessage(ability.getAbilityOff());
@@ -442,6 +446,9 @@ public class Skills {
 
 
             profile.setSkillDATS(ability, System.currentTimeMillis() + (ticks * Misc.TIME_CONVERSION_FACTOR));
             profile.setSkillDATS(ability, System.currentTimeMillis() + (ticks * Misc.TIME_CONVERSION_FACTOR));
             profile.setAbilityMode(ability, true);
             profile.setAbilityMode(ability, true);
+            if (ability == AbilityType.BERSERK) {
+                player.setCanPickupItems(false);
+            }
         }
         }
     }
     }