瀏覽代碼

Because reload is evil.

GJ 12 年之前
父節點
當前提交
1fb28eeee0
共有 1 個文件被更改,包括 17 次插入1 次删除
  1. 17 1
      src/main/java/com/gmail/nossr50/mcMMO.java

+ 17 - 1
src/main/java/com/gmail/nossr50/mcMMO.java

@@ -25,6 +25,8 @@ import com.gmail.nossr50.config.spout.SpoutConfig;
 import com.gmail.nossr50.config.treasure.TreasureConfig;
 import com.gmail.nossr50.database.DatabaseManager;
 import com.gmail.nossr50.database.LeaderboardManager;
+import com.gmail.nossr50.datatypes.player.McMMOPlayer;
+import com.gmail.nossr50.datatypes.skills.AbilityType;
 import com.gmail.nossr50.listeners.BlockListener;
 import com.gmail.nossr50.listeners.EntityListener;
 import com.gmail.nossr50.listeners.InventoryListener;
@@ -126,7 +128,7 @@ public class mcMMO extends JavaPlugin {
             }
 
             for (Player player : getServer().getOnlinePlayers()) {
-                UserManager.addUser(player); // In case of reload add all users back into PlayerProfile
+                UserManager.addUser(player); // In case of reload add all users back into UserManager
             }
 
             getLogger().info("Version " + getDescription().getVersion() + " is enabled!");
@@ -164,6 +166,7 @@ public class mcMMO extends JavaPlugin {
     @Override
     public void onDisable() {
         try {
+            reloadDisableHelper(); // Prevent Berserk from getting "stuck"
             UserManager.saveAll(); // Make sure to save player information if the server shuts down
             PartyManager.saveParties();
             placeStore.saveAll(); // Save our metadata
@@ -444,4 +447,17 @@ public class mcMMO extends JavaPlugin {
             partyAutoKickTask.runTaskTimer(this, kickIntervalTicks, kickIntervalTicks);
         }
     }
+
+    /**
+     * Because /reload is the biggest piece of garbage in existence,
+     * we have to do some special checks to keep it from breaking everything.
+     */
+    private void reloadDisableHelper() {
+        for (McMMOPlayer mcMMOPlayer : UserManager.getPlayers().values()) {
+            if (mcMMOPlayer.getAbilityMode(AbilityType.BERSERK)) {
+                mcMMOPlayer.setAbilityMode(AbilityType.BERSERK, false);
+                mcMMOPlayer.getPlayer().setCanPickupItems(true);
+            }
+        }
+    }
 }