Selaa lähdekoodia

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 10 vuotta sitten
vanhempi
sitoutus
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);
     }
 
     /**