/** * Unregisters a node. * * @param node The node to remove. */ public void unregister(Node node) { logger.info("Unregistering node : World-" + node.getId() + "."); nodes.remove(node.getId()); for (PlayerData p : node.getPlayers()) { players.remove(p.getName()); } }
public boolean checkConnection(String usr) { if (trackplayers.containsKey(usr)) { PlayerData mp = (PlayerData) trackplayers.get(usr); if (mp.connectedForLonger()) { return true; } } return false; }
private void handleNpeDeath(Entity subject) { EntityDamageEvent cause = subject.getLastDamageCause(); // Increment the NPE's total death stat NpeData npeData = this.plugin.getNpeDataByClass(subject.getClass()); npeData.incTotalDeaths(); // Increment the ServerData statistics plugin.serverData.incNpesKilled(); if (cause instanceof EntityDamageByEntityEvent) { Entity predicate = ((EntityDamageByEntityEvent) cause).getDamager(); if (predicate instanceof Player) { // The NPE was killed by a player, reward them for their accomplishments PlayerData killerData = this.plugin.getPlayerData(((Player) predicate).getName(), ""); String mobName = this.plugin.getSimpleClassName(subject.getClass()).toLowerCase(); if (mobName.startsWith("craft")) { // it looks like a lot of the class names follow the format "CraftX", such as "CraftWolf" // or "CraftCreeper" mobName = mobName.substring(5); } if (killerData.getMobsKilled().containsKey(mobName)) { killerData.incMobsKilled(mobName); } else { plugin.log.info("MineJMX: A player killed an unknown mob type (\"" + mobName + "\")"); } // and increment the NPE's specific death stat npeData.incDeathsByPlayer(); } else { // The NPE was killed by another mob, increment NpeData statistics again NpeData killerData = this.plugin.getNpeDataByClass(predicate.getClass()); killerData.incNpesKilled(); // and increment the original NPE's specific death stat npeData.incDeathsByNpe(); } } else if (cause instanceof EntityDamageByBlockEvent) { // killed by environment, increment the specific death counter npeData.incDeathsByEnvironment(); } else { // drowned, burned, fell, etc...increment the environmental death counter switch (cause.getCause()) { case CONTACT: case DROWNING: case FALL: case FIRE: case FIRE_TICK: case LAVA: case LIGHTNING: npeData.incDeathsByEnvironment(); break; } } }
// when a vehicle is damaged @EventHandler(ignoreCancelled = true, priority = EventPriority.LOWEST) public void onVehicleDamage(VehicleDamageEvent event) { // all of this is anti theft code if (!GriefPrevention.instance.config_claims_preventTheft) return; // determine which player is attacking, if any Player attacker = null; Entity damageSource = event.getAttacker(); if (damageSource instanceof Player) { attacker = (Player) damageSource; } else if (damageSource instanceof Arrow) { Arrow arrow = (Arrow) damageSource; if (arrow.getShooter() instanceof Player) { attacker = (Player) arrow.getShooter(); } } else if (damageSource instanceof ThrownPotion) { ThrownPotion potion = (ThrownPotion) damageSource; if (potion.getShooter() instanceof Player) { attacker = (Player) potion.getShooter(); } } // NOTE: vehicles can be pushed around. // so unless precautions are taken by the owner, a resourceful thief might find ways to steal // anyway Claim cachedClaim = null; PlayerData playerData = null; if (attacker != null) { playerData = this.dataStore.getPlayerData(attacker.getName()); cachedClaim = playerData.lastClaim; } Claim claim = this.dataStore.getClaimAt(event.getVehicle().getLocation(), false, cachedClaim); // if it's claimed if (claim != null) { // if damaged by anything other than a player, cancel the event if (attacker == null) { event.setCancelled(true); } // otherwise the player damaging the entity must have permission else { String noContainersReason = claim.allowContainers(attacker); if (noContainersReason != null) { event.setCancelled(true); GriefPrevention.sendMessage( attacker, TextMode.Err, Messages.NoDamageClaimedEntity, claim.getOwnerName()); } // cache claim for later if (playerData != null) { playerData.lastClaim = claim; } } } }
public Mail(PlayerData sender, PlayerData receiver, String subject, String message) { receiverid = receiver.getId(); receivername = receiver.getName(); senderid = sender.getId(); sendername = sender.getName(); this.subject = subject; this.message = message; this.sentdate = System.currentTimeMillis(); this.readdate = 0; }
@Override protected PlayerData clone() { try { PlayerData clone = (PlayerData) super.clone(); clone.gameStats = clone.gameStats.clone(); clone.globalStats = clone.globalStats.clone(); return clone; } catch (CloneNotSupportedException e) { throw new IllegalStateException(e); } }
@SuppressWarnings("rawtypes") public long getFullPlayTime() { long activePlayTime = 0; for (Iterator i = this.plugin.playerData.entrySet().iterator(); i.hasNext(); ) { PlayerData player = (PlayerData) ((Map.Entry) i.next()).getValue(); if (1 == player.getActive()) { activePlayTime += player.timeSinceLogin(); } } return activePlayTime + this.playTime; }
public void update(GameContainer gc, StateBasedGame sbg, EnemyManager enemyManager, int delta) { if (this.currentWave < this.waves.length) { if (!this.waveOver) { if (this.waves[this.currentWave].isOver()) { this.waveOver = true; this.nextWaveIn = WaveManager.TIMEBETWEENWAVES; // wave is over, check to see if the player lost any health, if not increase their // multiplier by 1 if (this.healthStart <= PlayerData.health) PlayerData.increaseMultiplier(1); this.healthStart = PlayerData.health; if ((this.currentWave + 1) == this.waves.length) { this.wavesFinished = true; } } else { this.waves[this.currentWave].update(gc, sbg, enemyManager, delta); } } else { // wave is over start counting down until next wave this.nextWaveIn -= delta; if (this.nextWaveIn <= 0) { this.currentWave++; this.waveOver = false; } } } else { this.wavesFinished = true; } }
private void send(Player player, MessageNode node, String message) { switch (messages.getCat(node)) { case NOTIFICATION: if (player == null) { plugin.getLogger().warning("Could not send the following message: " + message); } else { // FEATURE: don't spam messages PlayerData playerData = plugin.getModuleForClass(DataStoreModule.class).getPlayerData(player.getName()); long now = Calendar.getInstance().getTimeInMillis(); if (!node.equals(playerData.lastMessageSent) || now - playerData.lastMessageTimestamp > 30000) { if (popupsAreEnabled(MsgCategory.NOTIFICATION)) sendPopup(player, MsgCategory.NOTIFICATION, message); else player.sendMessage(message); playerData.lastMessageSent = node; playerData.lastMessageTimestamp = now; } } break; case TUTORIAL: Validate.notNull(player); if (persistModule.getCountFor(node, player.getName()) < messages.getMsgCount(node)) { long now = Calendar.getInstance().getTimeInMillis(); if (!timeouts.contains(player.getName(), node) || now - timeouts.get(player.getName(), node) > 120000) // only if contains { timeouts.put(player.getName(), node, now); String msgText = messages.getString(node); if (manager != null) sendPopup(player, MsgCategory.TUTORIAL, msgText); else player.sendMessage( ChatColor.DARK_RED + plugin.getTag() + ChatColor.WHITE + " " + msgText); persistModule.increment(node, player.getName()); } } else timeouts.remove(player, message); break; case BROADCAST: plugin.getServer().broadcastMessage(message); break; default: throw new UnsupportedOperationException(messages.getCat(node) + " not implemented"); } }
public String allowBuild(Player player, Location location) { PlayerData playerData = this.dataStore.getPlayerData(player.getName()); Claim claim = this.dataStore.getClaimAt(location, false, playerData.lastClaim); WorldConfig wc = GriefPrevention.instance.getWorldCfg(player.getWorld()); // exception: administrators in ignore claims mode and special player accounts created by server // mods if (playerData.ignoreClaims || wc.getModsIgnoreClaimsAccounts().contains(player.getName())) return null; // wilderness rules if (claim == null) { // no building in the wilderness in creative mode if (this.creativeRulesApply(location)) { String reason = this.dataStore.getMessage(Messages.NoBuildOutsideClaims) + " " + this.dataStore.getMessage(Messages.CreativeBasicsDemoAdvertisement); if (player.hasPermission("griefprevention.ignoreclaims")) reason += " " + this.dataStore.getMessage(Messages.IgnoreClaimsAdvertisement); return reason; } // no building in survival wilderness when that is configured else if (wc.getApplyTrashBlockRules() && wc.getClaimsEnabled()) { if (wc.getTrashBlockPlacementBehaviour().Allowed(location, player).Denied()) return this.dataStore.getMessage(Messages.NoBuildOutsideClaims) + " " + this.dataStore.getMessage(Messages.SurvivalBasicsDemoAdvertisement); else return null; } else { // but it's fine in creative return null; } } // if not in the wilderness, then apply claim rules (permissions, etc) else { // cache the claim for later reference playerData.lastClaim = claim; return claim.allowBuild(player); } }
private void denyAlts(List<PlayerData> duplicates, final UUID uuid) throws SQLException { if (plugin.getPlayerBanStorage().isBanned(uuid)) { return; } for (final PlayerData player : duplicates) { if (player.getUUID().equals(uuid)) { continue; } final PlayerBanData ban = plugin.getPlayerBanStorage().getBan(player.getUUID()); if (ban == null) { continue; } if (ban.hasExpired()) { continue; } plugin .getServer() .getScheduler() .runTask( plugin, new Runnable() { @Override public void run() { Player bukkitPlayer = plugin.getServer().getPlayer(uuid); Message kickMessage = Message.get("denyalts.player.disallowed") .set("player", player.getName()) .set("reason", ban.getReason()) .set("actor", ban.getActor().getName()); bukkitPlayer.kickPlayer(kickMessage.toString()); } }); } }
private void handlePlayerDeath(Player subject) { EntityDamageEvent cause = subject.getLastDamageCause(); // Increment the PlayerData total death stat PlayerData playerData = this.plugin.getPlayerData(subject.getName(), "MineJMX found a new Player"); playerData.incDeaths(); // Increment the ServerData statistics plugin.serverData.incPlayersKilled(); if (cause instanceof EntityDamageByEntityEvent) { Entity predicate = ((EntityDamageByEntityEvent) cause).getDamager(); if (predicate instanceof Player) { // The player was killed by another player, dick move bro PlayerData killerData = this.plugin.getPlayerData(((Player) predicate).getName(), ""); killerData.incPlayersKilled(); // Increment the victim's PvP death stat playerData.incDeathsByPlayer(); } else { // The player was killed by a mob, increment the NpeData statistics NpeData killerData = this.plugin.getNpeDataByClass(predicate.getClass()); killerData.incPlayersKilled(); // Increment the victim's death by NPE stat playerData.incDeathsByNpe(); } } else if (cause instanceof EntityDamageByBlockEvent) { // as it turns out this is only valid for cacti/lava...it might be // completely obsolete in favor of the following switch statement, // but I'm going to leave it in for the time being just in case playerData.incDeathsByEnvironment(); } else { // drowned, burned, fell, etc...increment the environmental death counter switch (cause.getCause()) { case CONTACT: case DROWNING: case FALL: case FIRE: case FIRE_TICK: case LAVA: case LIGHTNING: playerData.incDeathsByEnvironment(); break; } } }
// called when a player spawns, applies protection for that player if necessary public void checkPvpProtectionNeeded(Player player) { WorldConfig wc = GriefPrevention.instance.getWorldCfg(player.getWorld()); // if pvp is disabled, do nothing if (!player.getWorld().getPVP()) return; // if player is in creative mode, do nothing if (player.getGameMode() == GameMode.CREATIVE) return; // if anti spawn camping feature is not enabled, do nothing if (!wc.getProtectFreshSpawns()) return; // if the player has the damage any player permission enabled, do nothing if (player.hasPermission("griefprevention.nopvpimmunity")) return; // check inventory for well, anything PlayerInventory inventory = player.getInventory(); ItemStack[] armorStacks = inventory.getArmorContents(); // check armor slots, stop if any items are found for (int i = 0; i < armorStacks.length; i++) { if (!(armorStacks[i] == null || armorStacks[i].getType() == Material.AIR)) return; } // check other slots, stop if any items are found ItemStack[] generalStacks = inventory.getContents(); for (int i = 0; i < generalStacks.length; i++) { if (!(generalStacks[i] == null || generalStacks[i].getType() == Material.AIR)) return; } // otherwise, apply immunity PlayerData playerData = this.dataStore.getPlayerData(player.getName()); playerData.pvpImmune = true; // inform the player GriefPrevention.sendMessage(player, TextMode.Success, Messages.PvPImmunityStart); }
private void punishAlts(List<PlayerData> duplicates, UUID uuid) throws SQLException { if (!plugin.getPlayerBanStorage().isBanned(uuid)) { // Auto ban for (PlayerData player : duplicates) { if (player.getUUID().equals(uuid)) { continue; } PlayerBanData ban = plugin.getPlayerBanStorage().getBan(player.getUUID()); if (ban == null) { continue; } if (ban.hasExpired()) { continue; } final PlayerBanData newBan = new PlayerBanData( plugin.getPlayerStorage().queryForId(UUIDUtils.toBytes(uuid)), plugin.getPlayerStorage().getConsole(), ban.getReason(), ban.getExpires()); plugin.getPlayerBanStorage().ban(newBan, false); plugin .getServer() .getScheduler() .runTask( plugin, new Runnable() { @Override public void run() { Player bukkitPlayer = plugin.getServer().getPlayer(newBan.getPlayer().getUUID()); Message kickMessage = Message.get("ban.player.kick") .set("displayName", bukkitPlayer.getDisplayName()) .set("player", newBan.getPlayer().getName()) .set("reason", newBan.getReason()) .set("actor", newBan.getActor().getName()); bukkitPlayer.kickPlayer(kickMessage.toString()); } }); } } else if (!plugin.getPlayerMuteStorage().isMuted(uuid)) { // Auto mute for (PlayerData player : duplicates) { if (player.getUUID().equals(uuid)) { continue; } PlayerMuteData mute = plugin.getPlayerMuteStorage().getMute(player.getUUID()); if (mute == null) { continue; } if (mute.hasExpired()) { continue; } PlayerMuteData newMute = new PlayerMuteData( plugin.getPlayerStorage().queryForId(UUIDUtils.toBytes(uuid)), plugin.getPlayerStorage().getConsole(), mute.getReason(), mute.isSoft(), mute.getExpires()); plugin.getPlayerMuteStorage().mute(newMute, false); } } }
private void handleJoinDeny(PlayerData player, String reason) { Message message = Message.get("deniedNotify.player").set("player", player.getName()).set("reason", reason); CommandUtils.broadcast(message.toString(), "bm.notify.denied.player"); }
/** * Registers a player. * * @param player The player. * @param node The node. */ public void register(PlayerData player, Node node) { logger.info("Registering player : " + player.getName() + "..."); players.put(player.getName(), node); node.register(player); }
public static void registerScoreboard(Player player, int priority, Scoreboard scoreboard) { PlayerData playerData = getPlayerData(player.getName()); playerData.registerScoreboard(player, priority, scoreboard); }
/** * Unregisters a player. * * @param player The player. */ public void unregister(PlayerData player) { logger.info("Unregistering player : " + player.getName() + "..."); if (players.containsKey(player.getName())) { players.remove(player.getName()).unregister(player); } }
@Override public void onPlayerInteract(PlayerInteractEvent event) { if (event.isCancelled()) return; final Player player = event.getPlayer(); String playerName = player.getName(); if (!plugin.getPlayerData().containsKey(playerName)) { plugin.getPlayerData().put(playerName, new PlayerData(plugin, playerName)); } // If our user is select & is not holding an item, selection time if (plugin.getPlayerData().get(playerName).isSelecting() && player.getItemInHand().getType() == Material.AIR && event.getClickedBlock().getType() == Material.WOODEN_DOOR) { int x, y, z; Location loc = event.getClickedBlock().getLocation(); x = loc.getBlockX(); y = loc.getBlockY(); z = loc.getBlockZ(); PlayerData pData = plugin.getPlayerData().get(playerName); Door door = (Door) event.getClickedBlock().getState().getData(); if (door.isTopHalf()) y = y - 1; if (event.getAction() == Action.LEFT_CLICK_BLOCK) { if (Inn.doorAlreadyExists(x, y, z)) { player.sendMessage(ChatColor.RED + "This door is already registered!"); return; } int[] xyz = {x, y, z}; pData.setPositionA(xyz); player.sendMessage(ChatColor.DARK_AQUA + "Door selected"); event.setCancelled(true); if (pData.getPositionA() != null) { player.sendMessage( ChatColor.DARK_AQUA + "Type " + ChatColor.WHITE + "/inn create [Price]" + ChatColor.DARK_AQUA + ", if you're happy with your selection, otherwise keep selecting!"); } } // Are we trying to delete a door? } else if (plugin.getPlayerData().get(playerName).isRemoving() && player.getItemInHand().getType() == Material.AIR && event.getClickedBlock().getType() == Material.WOODEN_DOOR) { int x, y, z; Location loc = event.getClickedBlock().getLocation(); x = loc.getBlockX(); y = loc.getBlockY(); z = loc.getBlockZ(); Door door = (Door) event.getClickedBlock().getState().getData(); if (door.isTopHalf()) y = y - 1; if (event.getAction() == Action.LEFT_CLICK_BLOCK) { event.setCancelled(true); if (Inn.doorAlreadyExists(x, y, z)) { if (!IPermissions.permission(player, "inn.admin.delete", player.isOp())) { if (!Inn.getOwner(x, y, z).equalsIgnoreCase(playerName)) { player.sendMessage(ChatColor.RED + "You do not own this door!"); return; } } String query = "DELETE FROM doors WHERE x=" + x + " AND y=" + y + " AND z=" + z; Inn.manageSQLite.deleteQuery(query); player.sendMessage(ChatColor.RED + "This Inn door has been deleted!"); return; } else { player.sendMessage(ChatColor.RED + "This door is not a Inn door!"); } } // Are we trying to open a door? } else if (event.getClickedBlock().getType() == Material.WOODEN_DOOR) { if (IPermissions.permission(player, "inn.bypass", player.isOp())) return; int x, y, z; Location loc = event.getClickedBlock().getLocation(); x = loc.getBlockX(); y = loc.getBlockY(); z = loc.getBlockZ(); Door door = (Door) event.getClickedBlock().getState().getData(); if (door.isTopHalf()) y = y - 1; if (Inn.doorAlreadyExists(x, y, z)) { String owner = Inn.getOwner(x, y, z); if (owner.equalsIgnoreCase(playerName)) { player.sendMessage(ChatColor.GREEN + "This is your inn door!"); return; } int price = Inn.getDoorPrice(x, y, z); if (Inn.isTimeoutExpired(x, y, z, playerName)) { MethodAccount playerAccount = plugin.Method.getAccount(playerName); if (playerAccount.hasEnough(price)) { playerAccount.subtract(price); MethodAccount playerAccount2 = plugin.Method.getAccount(owner); playerAccount2.add(price); Inn.addTimeout(x, y, z, playerName); player.sendMessage(ChatColor.DARK_AQUA + "You are entering " + owner + " inn room"); } else event.setCancelled(true); } else return; } } }
public void playerLoader(MenuApp menuApp, Screen screen, String map) { AssetManager as = menuApp.getAssetManager(); PlayerDataManager pdm = PlayerDataManager.load(as); PlayerDataMapManager pdmm = PlayerDataMapManager.load(as, map); ArrayList<PlayerData> list = pdm.getPlayer(); int id = 0; int countTeams = 0; for (int i = 0; i < list.size(); i++) { PlayerData playerData = list.get(i); PlayerDataMap playerDataMap = pdmm.getPlayer().get(playerData.getId()); if (playerDataMap != null) { if (playerDataMap.getController() != PlayerDataMap.none) { countTeams++; } } } for (int i = 0; i < list.size(); i++) { PlayerData playerData = list.get(i); PlayerDataMap playerDataMap = pdmm.getPlayer().get(playerData.getId()); if (playerDataMap != null) { if (playerDataMap.getController() != PlayerDataMap.none) { id++; CustomControlCreator createMultiplayerPanel = new CustomControlCreator("myPlayerPanel", "playerPanel"); de.lessvoid.nifty.elements.Element e = createMultiplayerPanel.create(nifty, screen, screen.findElementByName("slot" + i)); TextField tf = e.findNiftyControl("id", TextField.class); tf.setText(id + ""); tf.setEnabled(false); tf = e.findNiftyControl("playername", TextField.class); tf.setText(playerData.getName()); tf.setEnabled(false); DropDown dd = e.findNiftyControl("team", DropDown.class); for (int b = 0; b < countTeams; b++) { dd.addItem("Team " + (b + 1)); } // dd.setEnabled(false); PanelRenderer colorPanel = e.findElementByName("color").getRenderer(PanelRenderer.class); Color color = new Color( playerData.getColor().r, playerData.getColor().g, playerData.getColor().b, playerData.getColor().a); colorPanel.setBackgroundColor(color); } } } }
public void restorePlayerToData(PlayerData data) { data.restorePlayer(this); }
public PlayerData getPlayerData() { return PlayerData.extractData(this); }
// when an entity is damaged @EventHandler(ignoreCancelled = true, priority = EventPriority.LOWEST) public void onEntityDamage(EntityDamageEvent event) { // only actually interested in entities damaging entities (ignoring environmental damage) if (!(event instanceof EntityDamageByEntityEvent)) return; // monsters are never protected if (event.getEntity() instanceof Monster) return; EntityDamageByEntityEvent subEvent = (EntityDamageByEntityEvent) event; // determine which player is attacking, if any Player attacker = null; Entity damageSource = subEvent.getDamager(); if (damageSource instanceof Player) { attacker = (Player) damageSource; } else if (damageSource instanceof Arrow) { Arrow arrow = (Arrow) damageSource; if (arrow.getShooter() instanceof Player) { attacker = (Player) arrow.getShooter(); } } else if (damageSource instanceof ThrownPotion) { ThrownPotion potion = (ThrownPotion) damageSource; if (potion.getShooter() instanceof Player) { attacker = (Player) potion.getShooter(); } } // if the attacker is a player and defender is a player (pvp combat) if (attacker != null && event.getEntity() instanceof Player) { // FEATURE: prevent pvp in the first minute after spawn, and prevent pvp when one or both // players have no inventory // doesn't apply when the attacker has the no pvp immunity permission // this rule is here to allow server owners to have a world with no spawn camp protection by // assigning permissions based on the player's world if (attacker.hasPermission("griefprevention.nopvpimmunity")) return; Player defender = (Player) (event.getEntity()); PlayerData defenderData = this.dataStore.getPlayerData(((Player) event.getEntity()).getName()); PlayerData attackerData = this.dataStore.getPlayerData(attacker.getName()); // otherwise if protecting spawning players if (GriefPrevention.instance.config_pvp_protectFreshSpawns) { if (defenderData.pvpImmune) { event.setCancelled(true); GriefPrevention.sendMessage(attacker, TextMode.Err, Messages.ThatPlayerPvPImmune); return; } if (attackerData.pvpImmune) { event.setCancelled(true); GriefPrevention.sendMessage(attacker, TextMode.Err, Messages.CantFightWhileImmune); return; } } // FEATURE: prevent players who very recently participated in pvp combat from hiding inventory // to protect it from looting // FEATURE: prevent players who are in pvp combat from logging out to avoid being defeated long now = Calendar.getInstance().getTimeInMillis(); defenderData.lastPvpTimestamp = now; defenderData.lastPvpPlayer = attacker.getName(); attackerData.lastPvpTimestamp = now; attackerData.lastPvpPlayer = defender.getName(); } // FEATURE: protect claimed animals, boats, minecarts // NOTE: animals can be lead with wheat, vehicles can be pushed around. // so unless precautions are taken by the owner, a resourceful thief might find ways to steal // anyway // if theft protection is enabled if (event instanceof EntityDamageByEntityEvent) { // if the entity is an non-monster creature (remember monsters disqualified above), or a // vehicle if ((subEvent.getEntity() instanceof Creature && GriefPrevention.instance.config_claims_protectCreatures)) { Claim cachedClaim = null; PlayerData playerData = null; if (attacker != null) { playerData = this.dataStore.getPlayerData(attacker.getName()); cachedClaim = playerData.lastClaim; } Claim claim = this.dataStore.getClaimAt(event.getEntity().getLocation(), false, cachedClaim); // if it's claimed if (claim != null) { // if damaged by anything other than a player, cancel the event if (attacker == null) { event.setCancelled(true); } // otherwise the player damaging the entity must have permission else { String noContainersReason = claim.allowContainers(attacker); if (noContainersReason != null) { event.setCancelled(true); GriefPrevention.sendMessage( attacker, TextMode.Err, Messages.NoDamageClaimedEntity, claim.getOwnerName()); } // cache claim for later if (playerData != null) { playerData.lastClaim = claim; } } } } } }
/** * Registers a new player. * * @param player The player to add. */ public void register(PlayerData player) { players.put(player.getName(), player); }
public static void unregisterScoreboard(Player player, int priority) { PlayerData playerData = getPlayerData(player.getName()); playerData.unregisterScoreboard(player, priority); }
/** * Removes an old player. * * @param player The player to remove. */ public void unregister(PlayerData player) { players.remove(player.getName()); }
// Processes placing and breaking of gold blocks in the inner sanctum (treasury) public boolean processGoldBlock(BlockEvent rawEvent) { // Block broken (withdrawl or theft) if (rawEvent instanceof BlockBreakEvent) { BlockBreakEvent event = (BlockBreakEvent) rawEvent; Player player = event.getPlayer(); PlayerData playerData = plugin.players.get(player.getName()); // Town resident if (playerData.townName.equals(this.name)) { // Make sure the player has enough blocks deposited if (playerData.treasuryBlocks < 1) { plugin.message.send(player, "You don't have any gold blocks deposited in the treasury."); return false; } else { playerData.treasuryBlocks--; playerData.update(); plugin.message.parse( player, "You now have " + playerData.treasuryBlocks + " block" + (playerData.treasuryBlocks == 1 ? "" : "s") + " deposited into the treasury.", ChatColor.GOLD); return true; } } } else if (rawEvent instanceof BlockPlaceEvent) { BlockPlaceEvent event = (BlockPlaceEvent) rawEvent; Player player = event.getPlayer(); PlayerData playerData = plugin.players.get(player.getName()); // Town resident if (playerData.townName.equals(this.name)) { // Neutral town are not allowed to have treasuries if (this.id_Faction == 0) { plugin.message.send(player, "Neutral towns cannot use treasury blocks."); return false; } if (this.townLevel.treasuryLevel == 0) { plugin.message.send( player, this.townLevel.name + "s are not allowed treasury blocks - upgrade your town to create income."); return false; } // See if the placement would exceed the town's treasury level if (playerData.treasuryBlocks + 1 > this.townLevel.treasuryLevel) { plugin.message.parse( player, "Your town only allows " + this.townLevel.treasuryLevel + " treasury block" + (this.townLevel.treasuryLevel == 1 ? "" : "s") + " per resident."); return false; } else { playerData.treasuryBlocks++; playerData.update(); plugin.message.parse( player, "You now have " + playerData.treasuryBlocks + " block" + (playerData.treasuryBlocks == 1 ? "" : "s") + " deposited into the treasury.", ChatColor.GOLD); return true; } } } // TODO Auto-generated method stub return false; }