Exploit Config Tweaks

This commit is contained in:
nossr50
2019-03-19 12:18:25 -07:00
parent 956b01a28e
commit ac04ca5c27
7 changed files with 26 additions and 8 deletions

View File

@ -8,6 +8,7 @@ public class ConfigSectionExploitAcrobatics {
public static final int ACROBATIC_LOCATION_LIMIT_DEFAULT = 50;
public static final boolean PREVENT_ACROBATICS_ABUSE_DEFAULT = true;
public static final int TELEPORT_COOLDOWN_DEFAULT = 30;
@Setting(value = "Player-Fall-Location-Tracking",
comment = "The amount of locations to keep track of for player falls." +
@ -27,6 +28,14 @@ public class ConfigSectionExploitAcrobatics {
"\nDefault value: "+PREVENT_ACROBATICS_ABUSE_DEFAULT)
private boolean preventAcrobaticsAbuse = PREVENT_ACROBATICS_ABUSE_DEFAULT;
@Setting(value = "No-XP-After-Teleporting-Cooldown-In-Seconds", comment = "Prevents XP gains for Acrobatics for a set period of time after teleporting." +
"\nDefault value: "+TELEPORT_COOLDOWN_DEFAULT)
private int teleportCooldownSeconds = TELEPORT_COOLDOWN_DEFAULT;
public int getTeleportCooldownSeconds() {
return teleportCooldownSeconds;
}
public int getAcrobaticLocationLimit() {
return acrobaticLocationLimit;
}

View File

@ -26,7 +26,7 @@ public class ConfigSuperAbilities {
private ConfigSectionSuperAbilityCooldowns superAbilityCooldowns = new ConfigSectionSuperAbilityCooldowns();
@Setting(value = "Super-Ability-Max-Length",
comment = "The maximum amount of time a player can use a super ability." +
comment = "The maximum amount of time in seconds that a super ability can last." +
"\nMost super abilities get longer as a player grows in skill.")
private ConfigSectionSuperAbilityMaxLength superAbilityMaxLength = new ConfigSectionSuperAbilityMaxLength();

View File

@ -92,7 +92,7 @@ public class McMMOPlayer {
private int recentlyHurt;
private int respawnATS;
private int teleportATS;
private long teleportATS;
private long databaseATS;
//private int chimeraWingLastUse;
private Location teleportCommence;
@ -388,12 +388,12 @@ public class McMMOPlayer {
respawnATS = (int) (System.currentTimeMillis() / Misc.TIME_CONVERSION_FACTOR);
}
public int getTeleportATS() {
public long getTeleportATS() {
return teleportATS;
}
public void actualizeTeleportATS() {
teleportATS = (int) (System.currentTimeMillis() / Misc.TIME_CONVERSION_FACTOR);
teleportATS = System.currentTimeMillis() + (mcMMO.getConfigManager().getConfigExploitPrevention().getConfigSectionExploitAcrobatics().getTeleportCooldownSeconds() * 1000);
}
public long getDatabaseATS() {

View File

@ -285,6 +285,10 @@ public class Roll extends AcrobaticsSubSkill {
return true;
}
//Teleport CD
if(System.currentTimeMillis() < UserManager.getPlayer(player).getTeleportATS())
return true;
if(fallLocationMap.get(player) == null)
fallLocationMap.put(player, new LimitedSizeList(mcMMO.getConfigManager().getConfigExploitPrevention().getConfigSectionExploitAcrobatics().getAcrobaticLocationLimit()));

View File

@ -77,11 +77,12 @@ public class PlayerListener implements Listener {
return;
}
if (!UserManager.hasPlayerDataKey(player) || MainConfig.getInstance().getXPAfterTeleportCooldown() <= 0 || event.getFrom().equals(event.getTo())) {
if (!UserManager.hasPlayerDataKey(player) || event.getFrom().equals(event.getTo())) {
return;
}
UserManager.getPlayer(player).actualizeTeleportATS();
if(mcMMO.getConfigManager().getConfigExploitPrevention().getConfigSectionExploitAcrobatics().isPreventAcrobaticsAbuse())
UserManager.getPlayer(player).actualizeTeleportATS();
}
/**

View File

@ -78,7 +78,8 @@ public class AcrobaticsManager extends SkillManager {
//Check respawn to prevent abuse
if(!mcMMO.getConfigManager().getConfigExploitPrevention().getConfigSectionExploitAcrobatics().isPreventAcrobaticsAbuse())
applyXpGain((float) (damage * Acrobatics.dodgeXpModifier), XPGainReason.PVP);
else if (SkillUtils.cooldownExpired(mcMMOPlayer.getRespawnATS(), Misc.PLAYER_RESPAWN_COOLDOWN_SECONDS)) {
else if (SkillUtils.cooldownExpired(mcMMOPlayer.getRespawnATS(), Misc.PLAYER_RESPAWN_COOLDOWN_SECONDS)
&& mcMMOPlayer.getTeleportATS() < System.currentTimeMillis()) {
applyXpGain((float) (damage * Acrobatics.dodgeXpModifier), XPGainReason.PVP);
}