Ver Fonte

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 há 10 anos atrás
pai
commit
f93deeceb6

+ 1 - 1
pom.xml

@@ -136,7 +136,7 @@
         <dependency>
         <dependency>
             <groupId>org.bukkit</groupId>
             <groupId>org.bukkit</groupId>
             <artifactId>bukkit</artifactId>
             <artifactId>bukkit</artifactId>
-            <version>1.7.10-R0.1-SNAPSHOT</version>
+            <version>1.7.9-R0.2</version>
             <type>jar</type>
             <type>jar</type>
             <scope>provided</scope>
             <scope>provided</scope>
         </dependency>
         </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.Set;
 import java.util.UUID;
 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.GameMode;
 import org.bukkit.Location;
 import org.bukkit.Location;
 import org.bukkit.Sound;
 import org.bukkit.Sound;
@@ -585,10 +588,6 @@ public class McMMOPlayer {
         party.addOnlineMember(this.getPlayer());
         party.addOnlineMember(this.getPlayer());
     }
     }
 
 
-    public void logoutParty() {
-        party.removeOnlineMember(this.getPlayer());
-    }
-
     public int getItemShareModifier() {
     public int getItemShareModifier() {
         if (itemShareModifier < 10) {
         if (itemShareModifier < 10) {
             setItemShareModifier(10);
             setItemShareModifier(10);
@@ -879,4 +878,28 @@ public class McMMOPlayer {
     public FixedMetadataValue getPlayerMetadata() {
     public FixedMetadataValue getPlayerMetadata() {
         return playerMetadata;
         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.locale.LocaleLoader;
 import com.gmail.nossr50.party.ShareHandler;
 import com.gmail.nossr50.party.ShareHandler;
 import com.gmail.nossr50.runnables.player.PlayerProfileLoadingTask;
 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.fishing.FishingManager;
 import com.gmail.nossr50.skills.herbalism.HerbalismManager;
 import com.gmail.nossr50.skills.herbalism.HerbalismManager;
 import com.gmail.nossr50.skills.mining.MiningManager;
 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.Motd;
 import com.gmail.nossr50.util.Permissions;
 import com.gmail.nossr50.util.Permissions;
 import com.gmail.nossr50.util.player.UserManager;
 import com.gmail.nossr50.util.player.UserManager;
-import com.gmail.nossr50.util.scoreboards.ScoreboardManager;
 import com.gmail.nossr50.util.skills.SkillUtils;
 import com.gmail.nossr50.util.skills.SkillUtils;
 
 
 public class PlayerListener implements Listener {
 public class PlayerListener implements Listener {
@@ -361,16 +359,7 @@ public class PlayerListener implements Listener {
         }
         }
 
 
         McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player);
         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);
     }
     }
 
 
     /**
     /**