Explorar o código

Merge pull request #2356 from riking/logout-method

This will allow for BungeeCord compat when the sending server knows about the move. It will NOT work if the proxy processes the transfer.
Kane York %!s(int64=10) %!d(string=hai) anos
pai
achega
f93deeceb6

+ 1 - 1
pom.xml

@@ -136,7 +136,7 @@
         <dependency>
             <groupId>org.bukkit</groupId>
             <artifactId>bukkit</artifactId>
-            <version>1.7.10-R0.1-SNAPSHOT</version>
+            <version>1.7.9-R0.2</version>
             <type>jar</type>
             <scope>provided</scope>
         </dependency>

+ 27 - 4
src/main/java/com/gmail/nossr50/datatypes/player/McMMOPlayer.java

@@ -5,6 +5,9 @@ import java.util.Map;
 import java.util.Set;
 import java.util.UUID;
 
+import com.gmail.nossr50.runnables.skills.BleedTimerTask;
+import com.gmail.nossr50.util.player.UserManager;
+import com.gmail.nossr50.util.scoreboards.ScoreboardManager;
 import org.bukkit.GameMode;
 import org.bukkit.Location;
 import org.bukkit.Sound;
@@ -585,10 +588,6 @@ public class McMMOPlayer {
         party.addOnlineMember(this.getPlayer());
     }
 
-    public void logoutParty() {
-        party.removeOnlineMember(this.getPlayer());
-    }
-
     public int getItemShareModifier() {
         if (itemShareModifier < 10) {
             setItemShareModifier(10);
@@ -879,4 +878,28 @@ public class McMMOPlayer {
     public FixedMetadataValue getPlayerMetadata() {
         return playerMetadata;
     }
+
+    /**
+     * This method is called by PlayerQuitEvent to tear down the mcMMOPlayer.
+     *
+     * @param syncSave if true, data is saved synchronously
+     */
+    public void logout(boolean syncSave) {
+        Player thisPlayer = getPlayer();
+        resetAbilityMode();
+        BleedTimerTask.bleedOut(thisPlayer);
+
+        if (syncSave) {
+            getProfile().save();
+        } else {
+            getProfile().scheduleAsyncSave();
+        }
+
+        UserManager.remove(thisPlayer);
+        ScoreboardManager.teardownPlayer(thisPlayer);
+
+        if (inParty()) {
+            party.removeOnlineMember(thisPlayer);
+        }
+    }
 }

+ 1 - 12
src/main/java/com/gmail/nossr50/listeners/PlayerListener.java

@@ -42,7 +42,6 @@ import com.gmail.nossr50.datatypes.skills.SkillType;
 import com.gmail.nossr50.locale.LocaleLoader;
 import com.gmail.nossr50.party.ShareHandler;
 import com.gmail.nossr50.runnables.player.PlayerProfileLoadingTask;
-import com.gmail.nossr50.runnables.skills.BleedTimerTask;
 import com.gmail.nossr50.skills.fishing.FishingManager;
 import com.gmail.nossr50.skills.herbalism.HerbalismManager;
 import com.gmail.nossr50.skills.mining.MiningManager;
@@ -62,7 +61,6 @@ import com.gmail.nossr50.util.MobHealthbarUtils;
 import com.gmail.nossr50.util.Motd;
 import com.gmail.nossr50.util.Permissions;
 import com.gmail.nossr50.util.player.UserManager;
-import com.gmail.nossr50.util.scoreboards.ScoreboardManager;
 import com.gmail.nossr50.util.skills.SkillUtils;
 
 public class PlayerListener implements Listener {
@@ -361,16 +359,7 @@ public class PlayerListener implements Listener {
         }
 
         McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player);
-
-        mcMMOPlayer.resetAbilityMode();
-        BleedTimerTask.bleedOut(player);
-        mcMMOPlayer.getProfile().scheduleAsyncSave();
-        UserManager.remove(player);
-        ScoreboardManager.teardownPlayer(player);
-
-        if (mcMMOPlayer.inParty()) {
-            mcMMOPlayer.logoutParty();
-        }
+        mcMMOPlayer.logout(false);
     }
 
     /**