mirror of
https://github.com/mcMMO-Dev/mcMMO.git
synced 2024-11-25 06:36:45 +01:00
Exploit Config Tweaks
This commit is contained in:
parent
956b01a28e
commit
ac04ca5c27
@ -10,6 +10,9 @@ Key:
|
|||||||
Version 2.2.0
|
Version 2.2.0
|
||||||
mcMMO's config system has been rewritten
|
mcMMO's config system has been rewritten
|
||||||
Parties no longer have a cap, you can level them forever for bragging rights
|
Parties no longer have a cap, you can level them forever for bragging rights
|
||||||
|
Optimizations were made for many anti-exploit behaviours
|
||||||
|
Acrobatic's Dodge will no longer reward XP for a few seconds after a TP
|
||||||
|
Roll will not give XP for a few seconds after a TP
|
||||||
You can now disable the party system completely
|
You can now disable the party system completely
|
||||||
Many config files are now generated on demand instead of being copied from within the JAR
|
Many config files are now generated on demand instead of being copied from within the JAR
|
||||||
All config nodes that used to be styled with CamelCase or otherwise now use hyphens (-) as spaces for readability and consistency
|
All config nodes that used to be styled with CamelCase or otherwise now use hyphens (-) as spaces for readability and consistency
|
||||||
@ -131,7 +134,7 @@ Version 2.2.0
|
|||||||
Update_Check, Prefer_Beta
|
Update_Check, Prefer_Beta
|
||||||
|
|
||||||
Removed the following config settings for being unwanted
|
Removed the following config settings for being unwanted
|
||||||
Config_Update_Overwrite
|
Config_Update_Overwrite, Tool_Mods_Enabled, Armor_Mods_Enabled, Block_Mods_Enabled, Entity_Mods_Enabled
|
||||||
|
|
||||||
API Changes
|
API Changes
|
||||||
Added API method to check if player parties are size capped
|
Added API method to check if player parties are size capped
|
||||||
|
@ -8,6 +8,7 @@ public class ConfigSectionExploitAcrobatics {
|
|||||||
|
|
||||||
public static final int ACROBATIC_LOCATION_LIMIT_DEFAULT = 50;
|
public static final int ACROBATIC_LOCATION_LIMIT_DEFAULT = 50;
|
||||||
public static final boolean PREVENT_ACROBATICS_ABUSE_DEFAULT = true;
|
public static final boolean PREVENT_ACROBATICS_ABUSE_DEFAULT = true;
|
||||||
|
public static final int TELEPORT_COOLDOWN_DEFAULT = 30;
|
||||||
|
|
||||||
@Setting(value = "Player-Fall-Location-Tracking",
|
@Setting(value = "Player-Fall-Location-Tracking",
|
||||||
comment = "The amount of locations to keep track of for player falls." +
|
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)
|
"\nDefault value: "+PREVENT_ACROBATICS_ABUSE_DEFAULT)
|
||||||
private boolean preventAcrobaticsAbuse = 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() {
|
public int getAcrobaticLocationLimit() {
|
||||||
return acrobaticLocationLimit;
|
return acrobaticLocationLimit;
|
||||||
}
|
}
|
||||||
|
@ -26,7 +26,7 @@ public class ConfigSuperAbilities {
|
|||||||
private ConfigSectionSuperAbilityCooldowns superAbilityCooldowns = new ConfigSectionSuperAbilityCooldowns();
|
private ConfigSectionSuperAbilityCooldowns superAbilityCooldowns = new ConfigSectionSuperAbilityCooldowns();
|
||||||
|
|
||||||
@Setting(value = "Super-Ability-Max-Length",
|
@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.")
|
"\nMost super abilities get longer as a player grows in skill.")
|
||||||
private ConfigSectionSuperAbilityMaxLength superAbilityMaxLength = new ConfigSectionSuperAbilityMaxLength();
|
private ConfigSectionSuperAbilityMaxLength superAbilityMaxLength = new ConfigSectionSuperAbilityMaxLength();
|
||||||
|
|
||||||
|
@ -92,7 +92,7 @@ public class McMMOPlayer {
|
|||||||
|
|
||||||
private int recentlyHurt;
|
private int recentlyHurt;
|
||||||
private int respawnATS;
|
private int respawnATS;
|
||||||
private int teleportATS;
|
private long teleportATS;
|
||||||
private long databaseATS;
|
private long databaseATS;
|
||||||
//private int chimeraWingLastUse;
|
//private int chimeraWingLastUse;
|
||||||
private Location teleportCommence;
|
private Location teleportCommence;
|
||||||
@ -388,12 +388,12 @@ public class McMMOPlayer {
|
|||||||
respawnATS = (int) (System.currentTimeMillis() / Misc.TIME_CONVERSION_FACTOR);
|
respawnATS = (int) (System.currentTimeMillis() / Misc.TIME_CONVERSION_FACTOR);
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getTeleportATS() {
|
public long getTeleportATS() {
|
||||||
return teleportATS;
|
return teleportATS;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void actualizeTeleportATS() {
|
public void actualizeTeleportATS() {
|
||||||
teleportATS = (int) (System.currentTimeMillis() / Misc.TIME_CONVERSION_FACTOR);
|
teleportATS = System.currentTimeMillis() + (mcMMO.getConfigManager().getConfigExploitPrevention().getConfigSectionExploitAcrobatics().getTeleportCooldownSeconds() * 1000);
|
||||||
}
|
}
|
||||||
|
|
||||||
public long getDatabaseATS() {
|
public long getDatabaseATS() {
|
||||||
|
@ -285,6 +285,10 @@ public class Roll extends AcrobaticsSubSkill {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Teleport CD
|
||||||
|
if(System.currentTimeMillis() < UserManager.getPlayer(player).getTeleportATS())
|
||||||
|
return true;
|
||||||
|
|
||||||
if(fallLocationMap.get(player) == null)
|
if(fallLocationMap.get(player) == null)
|
||||||
fallLocationMap.put(player, new LimitedSizeList(mcMMO.getConfigManager().getConfigExploitPrevention().getConfigSectionExploitAcrobatics().getAcrobaticLocationLimit()));
|
fallLocationMap.put(player, new LimitedSizeList(mcMMO.getConfigManager().getConfigExploitPrevention().getConfigSectionExploitAcrobatics().getAcrobaticLocationLimit()));
|
||||||
|
|
||||||
|
@ -77,11 +77,12 @@ public class PlayerListener implements Listener {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!UserManager.hasPlayerDataKey(player) || MainConfig.getInstance().getXPAfterTeleportCooldown() <= 0 || event.getFrom().equals(event.getTo())) {
|
if (!UserManager.hasPlayerDataKey(player) || event.getFrom().equals(event.getTo())) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
UserManager.getPlayer(player).actualizeTeleportATS();
|
if(mcMMO.getConfigManager().getConfigExploitPrevention().getConfigSectionExploitAcrobatics().isPreventAcrobaticsAbuse())
|
||||||
|
UserManager.getPlayer(player).actualizeTeleportATS();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -78,7 +78,8 @@ public class AcrobaticsManager extends SkillManager {
|
|||||||
//Check respawn to prevent abuse
|
//Check respawn to prevent abuse
|
||||||
if(!mcMMO.getConfigManager().getConfigExploitPrevention().getConfigSectionExploitAcrobatics().isPreventAcrobaticsAbuse())
|
if(!mcMMO.getConfigManager().getConfigExploitPrevention().getConfigSectionExploitAcrobatics().isPreventAcrobaticsAbuse())
|
||||||
applyXpGain((float) (damage * Acrobatics.dodgeXpModifier), XPGainReason.PVP);
|
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);
|
applyXpGain((float) (damage * Acrobatics.dodgeXpModifier), XPGainReason.PVP);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user