@Override public void execute(CommandSender sender, ICommandArguments args) throws CommandException { CommandException.checkNotConsole(getPlugin(), this, sender); String name = args.getString("friendName"); int rawLevel; if (args.hasInteger("level")) { rawLevel = args.getInteger("level"); } else { String levelName = args.getString("level"); IFriendLevel level = Nucleus.getProviders().getFriends().getLevel(levelName); if (level == null) throw new CommandException(NucLang.get(_LEVEL_NOT_FOUND, levelName)); rawLevel = level.getRawLevel(); } UUID friendId = PlayerUtils.getPlayerId(name); if (friendId == null) throw new CommandException(NucLang.get(_PLAYER_NOT_FOUND, name)); Player player = (Player) sender; IFriend friend = Friends.get(player, friendId); if (friend != null) { friend.setRawLevel(rawLevel); tellSuccess(sender, NucLang.get(_SUCCESS_SET, name)); } else { Friends.add(player, friendId, rawLevel); tellSuccess(sender, NucLang.get(_SUCCESS_ADD, name)); } }
@Override protected void onPlayerLeave(final Player player, LeaveRegionReason reason) { PreCon.notNull(player); Scheduler.runTaskLater( Nucleus.getPlugin(), 10, new Runnable() { @Override public void run() { // prevent player from leaving jail Location tpLocation = getRandomTeleport(); if (tpLocation == null) tpLocation = getCenter(); player.teleport(tpLocation); } }); }
/** * Called when a teleport is scheduled. * * @see com.jcwhatever.nucleus.managed.teleport.Teleporter * @see com.jcwhatever.nucleus.managed.teleport.ITeleportManager */ public class TeleportScheduledEvent extends PlayerEvent implements ICancellable, Cancellable { private static final HandlerList handlers = new HandlerListExt(Nucleus.getPlugin(), TeleportScheduledEvent.class); private final Location _to; private int _delay; private boolean _isCancelled; /** * Constructor. * * @param player The player scheduled to be teleported. * @param to The location to be teleported to. * @param delay The teleport delay in ticks. */ public TeleportScheduledEvent(Player player, Location to, int delay) { super(player); PreCon.notNull(player); PreCon.notNull(to); _to = to; _delay = delay; } /** Get the teleport delay in ticks. */ public int getDelayTicks() { return _delay; } /** * Set the teleport delay. * * @param ticks The number of ticks to delay. */ public void setDelayTicks(int ticks) { _delay = ticks; } /** Get a direct reference to the location the player will be teleported to. */ public Location getTo() { return _to; } @Override public boolean isCancelled() { return _isCancelled; } @Override public void setCancelled(boolean isCancelled) { _isCancelled = isCancelled; } @Override public HandlerList getHandlers() { return handlers; } public static HandlerList getHandlerList() { return handlers; } }