2
0
Эх сурвалжийг харах

Move Fall data to AcrobaticsManager

nossr50 6 жил өмнө
parent
commit
00cc5f0845

+ 1 - 0
Changelog.txt

@@ -9,6 +9,7 @@ Key:
 
 Version 2.1.40
     (API) mcMMO will now return null in all cases for UserManager.getPlayerProfile() if they have not been loaded yet
+    (API) Roll stores exploit data in AcrobaticsManager now
     Added new locale string "Profile.Loading.FailureNotice"
     Added new locale string "Profile.Loading.FailurePlayer"
     mcMMO no longer gives up forever if a player profile fails to load and the player is still online

+ 0 - 1
src/main/java/com/gmail/nossr50/chat/ChatManager.java

@@ -2,7 +2,6 @@ package com.gmail.nossr50.chat;
 
 import com.gmail.nossr50.datatypes.party.Party;
 import com.gmail.nossr50.datatypes.player.McMMOPlayer;
-import com.gmail.nossr50.datatypes.player.PlayerProfile;
 import com.gmail.nossr50.events.chat.McMMOChatEvent;
 import com.gmail.nossr50.events.chat.McMMOPartyChatEvent;
 import com.gmail.nossr50.locale.LocaleLoader;

+ 0 - 1
src/main/java/com/gmail/nossr50/datatypes/player/PlayerProfile.java

@@ -13,7 +13,6 @@ import com.gmail.nossr50.runnables.player.PlayerProfileSaveTask;
 import com.gmail.nossr50.skills.child.FamilyTree;
 import com.gmail.nossr50.util.player.UserManager;
 import com.google.common.collect.ImmutableMap;
-import org.bukkit.Bukkit;
 
 import java.util.HashMap;
 import java.util.Map;

+ 3 - 28
src/main/java/com/gmail/nossr50/datatypes/skills/subskills/acrobatics/Roll.java

@@ -1,9 +1,7 @@
 package com.gmail.nossr50.datatypes.skills.subskills.acrobatics;
 
 import com.gmail.nossr50.config.AdvancedConfig;
-import com.gmail.nossr50.config.Config;
 import com.gmail.nossr50.config.experience.ExperienceConfig;
-import com.gmail.nossr50.datatypes.LimitedSizeList;
 import com.gmail.nossr50.datatypes.experience.XPGainReason;
 import com.gmail.nossr50.datatypes.interactions.NotificationType;
 import com.gmail.nossr50.datatypes.player.McMMOPlayer;
@@ -34,14 +32,11 @@ import org.bukkit.event.EventPriority;
 import org.bukkit.event.entity.EntityDamageEvent;
 import org.bukkit.inventory.ItemStack;
 
-import java.util.HashMap;
-
 public class Roll extends AcrobaticsSubSkill {
-    protected HashMap<Player, LimitedSizeList> fallLocationMap;
+
 
     public Roll() {
         super("Roll", EventPriority.HIGHEST, SubSkillType.ACROBATICS_ROLL);
-        fallLocationMap = new HashMap<>();
     }
 
     /**
@@ -280,25 +275,11 @@ public class Roll extends AcrobaticsSubSkill {
             return true;
         }
 
-        if(fallLocationMap.get(player) == null)
-            fallLocationMap.put(player, new LimitedSizeList(50));
 
-        LimitedSizeList fallLocations = fallLocationMap.get(player);
-        
-        if(fallLocations.contains(getBlockLocation(player)))
+        if(UserManager.getPlayer(player).getAcrobaticsManager().hasFallenInLocationBefore(getBlockLocation(player)))
             return true;
 
         return false; //NOT EXPLOITING
-/*
-        Location fallLocation = player.getLocation();
-        int maxTries = Config.getInstance().getAcrobaticsAFKMaxTries();
-
-        boolean sameLocation = (lastFallLocation != null && Misc.isNear(lastFallLocation, fallLocation, 2));
-
-        fallTries = sameLocation ? Math.min(fallTries + 1, maxTries) : Math.max(fallTries - 1, 0);
-        lastFallLocation = fallLocation;
-
-        return fallTries + 1 > maxTries;*/
     }
 
     private float calculateRollXP(Player player, double damage, boolean isRoll) {
@@ -426,13 +407,7 @@ public class Roll extends AcrobaticsSubSkill {
 
     public void addFallLocation(Player player)
     {
-        if(fallLocationMap.get(player) == null)
-            fallLocationMap.put(player, new LimitedSizeList(50));
-
-        LimitedSizeList fallLocations = fallLocationMap.get(player);
-
-        Location loc = getBlockLocation(player);
-        fallLocations.add(loc);
+        UserManager.getPlayer(player).getAcrobaticsManager().addLocationToFallMap(getBlockLocation(player));
     }
 
     public Location getBlockLocation(Player player)

+ 14 - 0
src/main/java/com/gmail/nossr50/skills/acrobatics/AcrobaticsManager.java

@@ -1,6 +1,7 @@
 package com.gmail.nossr50.skills.acrobatics;
 
 import com.gmail.nossr50.config.experience.ExperienceConfig;
+import com.gmail.nossr50.datatypes.LimitedSizeList;
 import com.gmail.nossr50.datatypes.experience.XPGainReason;
 import com.gmail.nossr50.datatypes.interactions.NotificationType;
 import com.gmail.nossr50.datatypes.player.McMMOPlayer;
@@ -15,6 +16,7 @@ import com.gmail.nossr50.util.skills.ParticleEffectUtils;
 import com.gmail.nossr50.util.skills.RankUtils;
 import com.gmail.nossr50.util.skills.SkillActivationType;
 import com.gmail.nossr50.util.skills.SkillUtils;
+import org.bukkit.Location;
 import org.bukkit.entity.Entity;
 import org.bukkit.entity.LightningStrike;
 import org.bukkit.entity.Player;
@@ -23,11 +25,23 @@ public class AcrobaticsManager extends SkillManager {
 
     public AcrobaticsManager(McMMOPlayer mcMMOPlayer) {
         super(mcMMOPlayer, PrimarySkillType.ACROBATICS);
+        fallLocationMap = new LimitedSizeList(50);
     }
 
     private long rollXPCooldown = 0;
     private long rollXPInterval = (1000 * 10); //1 Minute
     private long rollXPIntervalLengthen = (1000 * 10); //10 Seconds
+    private LimitedSizeList fallLocationMap;
+
+    public boolean hasFallenInLocationBefore(Location location)
+    {
+        return fallLocationMap.contains(location);
+    }
+
+    public void addLocationToFallMap(Location location)
+    {
+        fallLocationMap.add(location);
+    }
 
     public boolean canGainRollXP()
     {

+ 0 - 2
src/main/java/com/gmail/nossr50/skills/mining/BlastMining.java

@@ -1,12 +1,10 @@
 package com.gmail.nossr50.skills.mining;
 
 import com.gmail.nossr50.config.AdvancedConfig;
-import com.gmail.nossr50.config.Config;
 import com.gmail.nossr50.datatypes.skills.SubSkillType;
 import com.gmail.nossr50.mcMMO;
 import com.gmail.nossr50.util.player.UserManager;
 import com.gmail.nossr50.util.skills.RankUtils;
-import org.bukkit.Material;
 import org.bukkit.entity.Player;
 import org.bukkit.entity.TNTPrimed;
 import org.bukkit.event.entity.EntityDamageByEntityEvent;