public PlayerState(final Player player) { name = player.getName(); debug.i("creating PlayerState of " + name, player); fireticks = player.getFireTicks(); foodlevel = player.getFoodLevel(); gamemode = player.getGameMode().getValue(); health = player.getHealth(); maxhealth = player.getMaxHealth(); exhaustion = player.getExhaustion(); experience = player.getExp(); explevel = player.getLevel(); saturation = player.getSaturation(); potionEffects = player.getActivePotionEffects(); flying = player.isFlying(); final ArenaPlayer aPlayer = ArenaPlayer.parsePlayer(player.getName()); final Arena arena = aPlayer.getArena(); if (arena.getArenaConfig().getBoolean(CFG.CHAT_COLORNICK)) { displayname = player.getDisplayName(); } fullReset(arena, player); final int time = arena.getArenaConfig().getInt(CFG.GENERAL_TIME); if (time != -1) { player.setPlayerTime(time, false); } }
@EventHandler public void onEntityDamage(EntityDamageEvent event) { if (event.getEntity() instanceof Player) { Player player = (Player) event.getEntity(); if (helpDeskInstance.doesHaveTicketAssigned(player)) { if (player.getFireTicks() > 0) player.setFireTicks(0); event.setCancelled(true); } } }
/** * Checks that player is not trying to combatlog/is allowed to teleport Returns an error message * to be displayed if the player is not allowed to teleport Returns null if the player is allowed * to teleport */ private static String teleportCheck(Player player) { Location pLoc = player.getLocation(); World world = player.getWorld(); /* Check if there are any players within 50 blocks */ for (Player p : world.getPlayers()) { if (!p.equals(player) && p.getLocation().distance(pLoc) < 50 && player.canSee(p) && !p.isDead()) { return ChatColor.RED + "You cannot use this command while within 50 blocks of any other players."; } } /* Check if there are any hostile mobs within 5 blocks */ for (Entity entity : world.getEntitiesByClasses( Blaze.class, CaveSpider.class, Creeper.class, Enderman.class, Ghast.class, MagmaCube.class, PigZombie.class, Skeleton.class, Silverfish.class, Slime.class, Spider.class, Witch.class, Zombie.class)) { if (entity.getLocation().distance(pLoc) < 5) { return ChatColor.RED + "You cannot use this command while within 5 blocks of any hostile mobs."; } } /* Check if the player is falling */ if (player.getVelocity().getY() < -0.079 || player.getVelocity().getY() > 0.08) { return ChatColor.RED + "You cannot use this command while falling."; } /* Check if the player is burning */ if (player.getFireTicks() > 0 && !player.hasPotionEffect(PotionEffectType.FIRE_RESISTANCE)) { return ChatColor.RED + "You cannot use this command while on fire."; } /* Default to allow teleport */ return null; }
public void playerLeave(final Player p, boolean teleport) { msgFall(PrefixType.INFO, "game.playerleavegame", "player-" + p.getName()); if (teleport) { p.teleport(SettingsManager.getInstance().getLobbySpawn()); } // Remove any potion/fire effects for (PotionEffect effect : p.getActivePotionEffects()) { p.removePotionEffect(effect.getType()); } if (p.getFireTicks() > 0) { p.setFireTicks(0); } sm.removePlayer(p, gameID); scoreBoard.removePlayer(p); activePlayers.remove(p); inactivePlayers.remove(p); voted.remove(p); for (Object in : spawns.keySet().toArray()) { if (spawns.get(in) == p) spawns.remove(in); } HookManager.getInstance().runHook("PLAYER_REMOVED", "player-" + p.getName()); LobbyManager.getInstance().updateWall(gameID); if (activePlayers.size() < 2 && mode == GameMode.INGAME) { mode = GameMode.FINISHING; tasks.add( Bukkit.getScheduler() .scheduleSyncDelayedTask( GameManager.getInstance().getPlugin(), new Runnable() { public void run() { playerWin(p); endGame(); } }, 1L)); } }
/* (non-Javadoc) * @see org.bukkit.event.player.PlayerListener#onPlayerMove(org.bukkit.event.player.PlayerMoveEvent) */ @Override public void onPlayerMove(PlayerMoveEvent event) { Player p = event.getPlayer(); Location l = event.getTo(); Block ch = l.getWorld().getBlockAt(l.getBlockX(), l.getBlockY(), l.getBlockZ()); Stargate st = StargateManager.getGateFromBlock(ch); if (st != null && st.Active && st.Target != null) { String gatenetwork; if (st.Network != null) { gatenetwork = st.Network.netName; } else { gatenetwork = "Public"; } wxt.prettyLog( Level.FINE, false, "Player in gate:" + st.Name + " gate Active: " + st.Active + " Target Gate: " + st.Target.Name + " Network: " + gatenetwork); if (ConfigManager.getWormholeUseIsTeleport() && ((st.IsSignPowered && !WXPermissions.checkWXPermissions(p, st, PermissionType.SIGN)) || (!st.IsSignPowered && !WXPermissions.checkWXPermissions(p, st, PermissionType.DIALER)))) { p.sendMessage(ConfigManager.output_strings.get(StringTypes.PERMISSION_NO)); return; } if (st.Target.IrisActive) { p.sendMessage(ConfigManager.errorheader + "Remote Iris is locked!"); p.setNoDamageTicks(2); event.setFrom(st.TeleportLocation); event.setTo(st.TeleportLocation); p.teleport(st.TeleportLocation); if (p.getFireTicks() > 0) { p.setFireTicks(0); } return; } Location target = st.Target.TeleportLocation; if (WormholeXTreme.iconomy != null) { double cost = ConfigManager.getIconomyWormholeUseCost(); if (!ConfigManager.getIconomyOpsExcempt() && !p.isOp() && cost != 0.0 && st.Owner != null && !st.Owner.equals(p.getName())) { Account player_account = iConomy.getBank().getAccount(p.getName()); double balance = player_account.getBalance(); String currency = iConomy.getBank().getCurrency(); if (balance >= cost) { player_account.subtract(cost); // player_account.save(); p.sendMessage( ConfigManager.normalheader + "Wormhole Use \u00A7F- \u00A72" + cost + " \u00A77" + currency); // p.sendMessage("You were charged " + cost + " " + iConomy.getBank().getCurrency() + " // to use wormhole." ); double owner_percent = ConfigManager.getIconomyWormholeOwnerPercent(); if (owner_percent != 0.0 && st.Owner != null) { if (st.Owner != null && iConomy.getBank().hasAccount(st.Owner)) { Account own_acc = iConomy.getBank().getAccount(st.Owner); own_acc.add(cost * owner_percent); // own_acc.save(); } } } else { p.sendMessage( ConfigManager.errorheader + "Not enough " + currency + "! - Requires: \u00A72" + cost + " \u00A77- Available: \u00A74" + player_account.getBalance() + " \u00A77" + currency); // p.sendMessage("Not enough " + iConomy.getBank().getCurrency() + " to use - requires: // " + cost); target = st.TeleportLocation; } } } Block target_block = target.getWorld().getBlockAt(target.getBlockX(), target.getBlockY(), target.getBlockZ()); while (target_block.getType() != Material.AIR && target_block.getType() != Material.WATER && target_block.getType() != Material.LAVA) { target_block = target_block.getFace(BlockFace.UP); target.setY(target.getY() + 1.0); } event.setFrom(target); event.setTo(target); p.setNoDamageTicks(2); p.teleport(target); event.setCancelled(true); if (target == st.Target.TeleportLocation) wxt.prettyLog( Level.INFO, false, p.getDisplayName() + " used wormhole: " + st.Name + " to go to: " + st.Target.Name); if (ConfigManager.getTimeoutShutdown() == 0) { st.ShutdownStargate(); } } else if (st != null) { wxt.prettyLog( Level.FINE, false, "Player entered gate but wasn't active or didn't have a target."); } }
@Override public int getFireTicks() { return caller.getFireTicks(); }
public static void ensureBurn(Player player, int ticks) { boolean now = player.getFireTicks() > 0; if (now) return; player.setFireTicks(ticks); }