public Vector<Claim> getClaims() { if (this.claims == null) { int totalClaimsArea = 0; this.claims = new Vector<Claim>(); // find all the claims belonging to this player and note them for // future reference for (final Claim claim : GriefPreventionPlus.getInstance().getDataStore().claims.values()) { if (this.playerID.equals(claim.getOwnerID())) { this.claims.add(claim); totalClaimsArea += claim.getArea(); } } // ensure player has claim blocks for his claims, and at least the // minimum accrued this.loadDataFromSecondaryStorage(); // if total claimed area is more than total blocks available int totalBlocks = this.accruedClaimBlocks + this.getBonusClaimBlocks() + GriefPreventionPlus.getInstance().getDataStore().getGroupBonusBlocks(this.playerID); if (totalBlocks < totalClaimsArea) { // try to fix it by adding to accrued blocks this.accruedClaimBlocks = totalClaimsArea; if (this.accruedClaimBlocks > GriefPreventionPlus.getInstance().config.claims_maxAccruedBlocks) { // remember to respect the maximum on accrued blocks this.accruedClaimBlocks = GriefPreventionPlus.getInstance().config.claims_maxAccruedBlocks; } // if that didn't fix it, then make up the difference with bonus // blocks totalBlocks = this.accruedClaimBlocks + this.getBonusClaimBlocks() + GriefPreventionPlus.getInstance() .getDataStore() .getGroupBonusBlocks(this.playerID); if (totalBlocks < totalClaimsArea) { this.bonusClaimBlocks += totalClaimsArea - totalBlocks; } } } return this.claims; }
public Date getLastLogin() { return new Date( GriefPreventionPlus.getInstance() .getServer() .getOfflinePlayer(this.playerID) .getLastPlayed()); }
// don't load data from secondary storage until it's needed public int getAccruedClaimBlocks() { if (this.accruedClaimBlocks == null) { this.loadDataFromSecondaryStorage(); } // move any in the holding area int newTotal = this.accruedClaimBlocks + this.newlyAccruedClaimBlocks; this.newlyAccruedClaimBlocks = 0; // respect limits if (newTotal > GriefPreventionPlus.getInstance().config.claims_maxAccruedBlocks) { newTotal = GriefPreventionPlus.getInstance().config.claims_maxAccruedBlocks; } this.accruedClaimBlocks = newTotal; return this.accruedClaimBlocks; }
void initLastLocation() { final Player player = GriefPreventionPlus.getInstance().getServer().getPlayer(this.playerID); if (player == null) { return; } this.lastX = player.getLocation().getBlockX(); this.lastZ = player.getLocation().getBlockZ(); this.lastWorld = player.getLocation().getWorld().getUID(); }
// the number of claim blocks a player has available for claiming land public int getRemainingClaimBlocks() { // accrued blocks + bonus blocks + permission bonus blocks int remainingBlocks = this.getAccruedClaimBlocks() + this.getBonusClaimBlocks() + GriefPreventionPlus.getInstance().getDataStore().getGroupBonusBlocks(this.playerID); for (final Claim claim : this.getClaims()) { remainingBlocks -= claim.getArea(); } return remainingBlocks; }
private void loadDataFromSecondaryStorage() { // reach out to secondary storage to get any data there PlayerData storageData = GriefPreventionPlus.getInstance().getDataStore().getPlayerDataFromStorage(this.playerID); if (storageData == null) { // initialize new player data storageData = new PlayerData(this.playerID); // shove that new player data into the hash map cache GriefPreventionPlus.getInstance() .getDataStore() .playerNameToPlayerDataMap .put(this.playerID, storageData); } if (this.accruedClaimBlocks == null) { if (storageData.accruedClaimBlocks != null) { this.accruedClaimBlocks = storageData.accruedClaimBlocks; // ensure at least minimum accrued are accrued (in case of // settings changes to increase initial amount) if (this.accruedClaimBlocks < GriefPreventionPlus.getInstance().config.claims_initialBlocks) { this.accruedClaimBlocks = GriefPreventionPlus.getInstance().config.claims_initialBlocks; } } else { this.accruedClaimBlocks = GriefPreventionPlus.getInstance().config.claims_initialBlocks; } } if (this.bonusClaimBlocks == null) { if (storageData.bonusClaimBlocks != null) { this.bonusClaimBlocks = storageData.bonusClaimBlocks; } else { this.bonusClaimBlocks = 0; } } }
// whether or not this player is "in" pvp combat public boolean inPvpCombat() { if (this.lastPvpTimestamp == 0) { return false; } final long now = Calendar.getInstance().getTimeInMillis(); final long elapsed = now - this.lastPvpTimestamp; if (elapsed > (GriefPreventionPlus.getInstance().config.pvp_combatTimeoutSeconds * 1000)) // X // seconds { this.lastPvpTimestamp = 0; return false; } return true; }
public long getTimeLastLogin() { return GriefPreventionPlus.getInstance() .getServer() .getOfflinePlayer(this.playerID) .getLastPlayed(); }