Re-added respawnATS

This commit is contained in:
bm01 2012-06-12 05:32:56 +02:00
parent 0034226fa7
commit c382c95d24
5 changed files with 36 additions and 13 deletions

View File

@ -48,12 +48,13 @@ public class PlayerProfile {
private boolean abilityuse = true;
/* Timestamps */
private int xpGainATS = 0;
private int recentlyHurt = 0;
private int xpGainATS;
private int recentlyHurt;
private int respawnATS;
/* mySQL STUFF */
private int lastlogin = 0;
private int userid = 0;
private int lastlogin;
private int userid;
HashMap<SkillType, Integer> skills = new HashMap<SkillType, Integer>(); //Skills and Levels
HashMap<SkillType, Integer> skillsXp = new HashMap<SkillType, Integer>(); //Skills and XP
@ -68,6 +69,7 @@ public class PlayerProfile {
hud = SpoutConfig.getInstance().defaulthud;
this.player = player;
this.playerName = player.getName();
lastlogin = ((Long) (System.currentTimeMillis() / 1000)).intValue();
party = PartyManager.getInstance().getPlayerParty(playerName);
@ -92,8 +94,6 @@ public class PlayerProfile {
addPlayer();
loaded = true;
}
lastlogin = ((Long) (System.currentTimeMillis() / 1000)).intValue();
}
public Player getPlayer() {
@ -913,6 +913,18 @@ public class PlayerProfile {
}
}
/*
* Exploit Prevention
*/
public int getRespawnATS() {
return respawnATS;
}
public void ActualizeRespawnATS() {
respawnATS = (int) (System.currentTimeMillis() / 1000);
}
/*
* XP Functions
*/

View File

@ -19,6 +19,7 @@ import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerLoginEvent;
import org.bukkit.event.player.PlayerPickupItemEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.event.player.PlayerRespawnEvent;
import org.bukkit.inventory.ItemStack;
import com.gmail.nossr50.mcMMO;
@ -123,7 +124,7 @@ public class PlayerListener implements Listener {
*/
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onPlayerLogin(PlayerLoginEvent event) {
Users.addUser(event.getPlayer());
Users.addUser(event.getPlayer()).ActualizeRespawnATS();
}
/**
@ -192,8 +193,11 @@ public class PlayerListener implements Listener {
if (XprateCommand.xpevent) {
player.sendMessage(LocaleLoader.getString("XPRate.Event", new Object[] {Config.getInstance().xpGainMultiplier}));
}
}
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onPlayerRespawn(PlayerRespawnEvent event) {
Users.getProfile(event.getPlayer()).ActualizeRespawnATS();
}
/**

View File

@ -58,7 +58,10 @@ public class AcrobaticsManager {
if (Acrobatics.getRandom().nextInt(4000) <= eventHandler.skillModifier && !eventHandler.isFatal(eventHandler.modifiedDamage)) {
eventHandler.modifyEventDamage();
eventHandler.sendAbilityMessage();
eventHandler.processXPGain(eventHandler.damage * Acrobatics.DODGE_XP_MODIFIER);
if (System.currentTimeMillis() >= profile.getRespawnATS() + 5) {
eventHandler.processXPGain(eventHandler.damage * Acrobatics.DODGE_XP_MODIFIER);
}
}
}

View File

@ -462,7 +462,7 @@ public class Combat {
Player defender = (Player) target;
if (defender.getHealth() >= 1) {
if (System.currentTimeMillis() >= Users.getProfile(defender).getRespawnATS() + 5) {
baseXP = 20 * configInstance.getPlayerVersusPlayerXP();
}
}

View File

@ -40,8 +40,9 @@ public class Users {
* Add a new user.
*
* @param player The player to create a user record for
* @return the player's profile
*/
public static void addUser(Player player) {
public static PlayerProfile addUser(Player player) {
String playerName = player.getName();
for (Iterator<PlayerProfile> it = profiles.iterator() ; it.hasNext() ; ) {
@ -50,12 +51,15 @@ public class Users {
if (playerProfile.getPlayerName().equals(playerName)) {
//The player object is different on each reconnection and must be updated
playerProfile.setPlayer(player);
return;
return playerProfile;
}
}
//New player, or already removed from the list
profiles.add(new PlayerProfile(player, true));
PlayerProfile playerProfile = new PlayerProfile(player, true);
profiles.add(playerProfile);
return playerProfile;
}
/**