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; private boolean abilityuse = true;
/* Timestamps */ /* Timestamps */
private int xpGainATS = 0; private int xpGainATS;
private int recentlyHurt = 0; private int recentlyHurt;
private int respawnATS;
/* mySQL STUFF */ /* mySQL STUFF */
private int lastlogin = 0; private int lastlogin;
private int userid = 0; private int userid;
HashMap<SkillType, Integer> skills = new HashMap<SkillType, Integer>(); //Skills and Levels HashMap<SkillType, Integer> skills = new HashMap<SkillType, Integer>(); //Skills and Levels
HashMap<SkillType, Integer> skillsXp = new HashMap<SkillType, Integer>(); //Skills and XP HashMap<SkillType, Integer> skillsXp = new HashMap<SkillType, Integer>(); //Skills and XP
@ -68,6 +69,7 @@ public class PlayerProfile {
hud = SpoutConfig.getInstance().defaulthud; hud = SpoutConfig.getInstance().defaulthud;
this.player = player; this.player = player;
this.playerName = player.getName(); this.playerName = player.getName();
lastlogin = ((Long) (System.currentTimeMillis() / 1000)).intValue();
party = PartyManager.getInstance().getPlayerParty(playerName); party = PartyManager.getInstance().getPlayerParty(playerName);
@ -92,8 +94,6 @@ public class PlayerProfile {
addPlayer(); addPlayer();
loaded = true; loaded = true;
} }
lastlogin = ((Long) (System.currentTimeMillis() / 1000)).intValue();
} }
public Player getPlayer() { 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 * 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.PlayerLoginEvent;
import org.bukkit.event.player.PlayerPickupItemEvent; import org.bukkit.event.player.PlayerPickupItemEvent;
import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.event.player.PlayerRespawnEvent;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
@ -123,7 +124,7 @@ public class PlayerListener implements Listener {
*/ */
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onPlayerLogin(PlayerLoginEvent event) { 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) { if (XprateCommand.xpevent) {
player.sendMessage(LocaleLoader.getString("XPRate.Event", new Object[] {Config.getInstance().xpGainMultiplier})); 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)) { if (Acrobatics.getRandom().nextInt(4000) <= eventHandler.skillModifier && !eventHandler.isFatal(eventHandler.modifiedDamage)) {
eventHandler.modifyEventDamage(); eventHandler.modifyEventDamage();
eventHandler.sendAbilityMessage(); 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; Player defender = (Player) target;
if (defender.getHealth() >= 1) { if (System.currentTimeMillis() >= Users.getProfile(defender).getRespawnATS() + 5) {
baseXP = 20 * configInstance.getPlayerVersusPlayerXP(); baseXP = 20 * configInstance.getPlayerVersusPlayerXP();
} }
} }

View File

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