@Override public void dispose() { if (this.equals(_provider.getServerJail())) throw new IllegalStateException("Cannot dispose server jail."); _provider.removeJail(this); _dataNode.remove(); _dataNode.save(); _isDisposed = true; }
@Override public boolean isPrisoner(Player player) { PreCon.notNull(player); IJailSession session = _provider.getSession(player.getUniqueId()); return session != null && session.getJail().equals(this); }
@Nullable @Override public IJailSession imprison(Player player, Date expires) { PreCon.notNull(player); checkDisposed(); // teleport player to jail Location teleport = getRandomTeleport(); if (teleport == null) { if (!_bounds.isDefined()) { NucMsg.debug( getPlugin(), "Cannot imprison player in jail '{0}' because its coordinates " + "are undefined and no teleport location has been assigned."); return null; } teleport = _bounds.getCenter(); } // register session IJailSession session = _provider.createSession(this, player.getUniqueId(), expires); if (session == null) return null; player.teleport(teleport); player.setGameMode(GameMode.SURVIVAL); return session; }