类org.bukkit.event.player.PlayerLoginEvent源码实例Demo

下面列出了怎么用org.bukkit.event.player.PlayerLoginEvent的API类实例代码及写法,或者点击链接到github查看源代码。

源代码1 项目: AntiVPN   文件: PlayerEvents.java
private void tryKickPlayer(String message, Player player, PlayerLoginEvent event) {
    Optional<PlaceholderAPIHook> placeholderapi;
    try {
        placeholderapi = ServiceLocator.getOptional(PlaceholderAPIHook.class);
    } catch (InstantiationException | IllegalAccessException ex) {
        logger.error(ex.getMessage(), ex);
        placeholderapi = Optional.empty();
    }

    event.setResult(PlayerLoginEvent.Result.KICK_OTHER);

    if (placeholderapi.isPresent()) {
        event.setKickMessage(placeholderapi.get().withPlaceholders(player, message));
    } else {
        event.setKickMessage(message);
    }
}
 
源代码2 项目: ProjectAres   文件: TeamListener.java
@EventHandler(priority = EventPriority.LOWEST)
public void onPlayerLogin(UserLoginEvent event) {
    TeamManager teamManager = teamManagerProvider.get();

    Entrant participation = teamManager.getEntrant(event.getUser());
    if(participation == null) return;

    final int playerCount = (int) onlinePlayers.all()
                                               .stream()
                                               .filter(player -> !player.equals(event.getPlayer()) &&
                                                                 participation.members().contains(userStore.playerId(player)))
                                               .count();

    int maxPlayers = tournament.max_players_per_match();
    if(playerCount >= maxPlayers) {
        event.disallow(PlayerLoginEvent.Result.KICK_WHITELIST, new Component(new TranslatableComponent("tourney.kick.maxPlayers", String.valueOf(maxPlayers)), ChatColor.RED));
    } else {
        if(event.getResult().equals(PlayerLoginEvent.Result.KICK_WHITELIST)) {
            event.allow(); // explicitly allow players on teams but not whitelist
        }
    }
}
 
源代码3 项目: UhcCore   文件: PlayerConnectionListener.java
@EventHandler(priority=EventPriority.HIGHEST)
public void onPlayerLogin(PlayerLoginEvent event){
	GameManager gm = GameManager.getGameManager();

	// Player is not allowed to join so don't create UhcPlayer. (Server full, whitelist, ban, ...)
	if (event.getResult() != Result.ALLOWED){
		return;
	}
	
	try{
		boolean allowedToJoin = gm.getPlayersManager().isPlayerAllowedToJoin(event.getPlayer());

		if (allowedToJoin){
			// Create player if not existent.
			gm.getPlayersManager().getOrCreateUhcPlayer(event.getPlayer());
		}else{
			throw new UhcPlayerJoinException("An unexpected error as occured.");
		}
	}catch(final UhcPlayerJoinException e){
		event.setKickMessage(e.getMessage());
		event.setResult(Result.KICK_OTHER);
	}
}
 
源代码4 项目: Skript   文件: EffCancelEvent.java
@SuppressWarnings("null")
@Override
public boolean init(final Expression<?>[] vars, final int matchedPattern, final Kleenean isDelayed, final ParseResult parser) {
	if (isDelayed == Kleenean.TRUE) {
		Skript.error("Can't cancel an event anymore after it has already passed", ErrorQuality.SEMANTIC_ERROR);
		return false;
	}
	cancel = matchedPattern == 0;
	final Class<? extends Event>[] es = ScriptLoader.getCurrentEvents();
	if (es == null)
		return false;
	for (final Class<? extends Event> e : es) {
		if (Cancellable.class.isAssignableFrom(e) || BlockCanBuildEvent.class.isAssignableFrom(e))
			return true; // TODO warning if some event(s) cannot be cancelled even though some can (needs a way to be suppressed)
	}
	if (ScriptLoader.isCurrentEvent(PlayerLoginEvent.class))
		Skript.error("A connect event cannot be cancelled, but the player may be kicked ('kick player by reason of \"...\"')", ErrorQuality.SEMANTIC_ERROR);
	else
		Skript.error(Utils.A(ScriptLoader.getCurrentEventName()) + " event cannot be cancelled", ErrorQuality.SEMANTIC_ERROR);
	return false;
}
 
源代码5 项目: FastLogin   文件: SkinApplyListener.java
@EventHandler(priority = EventPriority.LOW)
//run this on the loginEvent to let skins plugins see the skin like in normal Minecraft behaviour
public void onPlayerLogin(PlayerLoginEvent loginEvent) {
    if (loginEvent.getResult() != Result.ALLOWED) {
        return;
    }

    Player player = loginEvent.getPlayer();

    if (plugin.getConfig().getBoolean("forwardSkin")) {
        //go through every session, because player.getAddress is null
        //loginEvent.getAddress is just a InetAddress not InetSocketAddress, so not unique enough
        for (BukkitLoginSession session : plugin.getLoginSessions().values()) {
            if (session.getUsername().equals(player.getName())) {
                session.getSkin().ifPresent(skin -> applySkin(player, skin.getValue(), skin.getSignature()));
                break;
            }
        }
    }
}
 
源代码6 项目: ChangeSkin   文件: LoginListener.java
@EventHandler(priority = EventPriority.HIGHEST)
public void onPlayerLogin(PlayerLoginEvent loginEvent) {
    if (loginEvent.getResult() != PlayerLoginEvent.Result.ALLOWED) {
        //in this event isCancelled option in the annotation doesn't work
        return;
    }

    Player player = loginEvent.getPlayer();

    //updates to the chosen one
    UserPreference preferences = plugin.getLoginSession(player.getUniqueId());
    if (preferences != null) {
        preferences.getTargetSkin().ifPresent(skin -> plugin.getApi().applySkin(player, skin));
    }

    plugin.endSession(player.getUniqueId());
}
 
源代码7 项目: AuthMeReloaded   文件: PlayerListener.java
@EventHandler(priority = EventPriority.LOW)
public void onPlayerLogin(PlayerLoginEvent event) {
    final Player player = event.getPlayer();
    final String name = player.getName();

    try {
        onJoinVerifier.checkSingleSession(name);
    } catch (FailedVerificationException e) {
        event.setKickMessage(messages.retrieveSingle(name, e.getReason(), e.getArgs()));
        event.setResult(PlayerLoginEvent.Result.KICK_OTHER);
        return;
    }

    if (validationService.isUnrestricted(name)) {
        return;
    }

    onJoinVerifier.refusePlayerForFullServer(event);
}
 
源代码8 项目: AuthMeReloaded   文件: PlayerListenerTest.java
@Test
public void shouldNotInterfereWithUnrestrictedUser() throws FailedVerificationException {
    // given
    String name = "Player01";
    Player player = mockPlayerWithName(name);
    PlayerLoginEvent event = spy(new PlayerLoginEvent(player, "", null));
    given(validationService.isUnrestricted(name)).willReturn(true);

    // when
    listener.onPlayerLogin(event);

    // then
    verify(validationService).isUnrestricted(name);
    verify(onJoinVerifier).checkSingleSession(name);
    verifyNoModifyingCalls(event);
    verifyNoMoreInteractions(onJoinVerifier);
}
 
源代码9 项目: AuthMeReloaded   文件: PlayerListenerTest.java
@Test
public void shouldStopHandlingForFullServer() throws FailedVerificationException {
    // given
    String name = "someone";
    Player player = mockPlayerWithName(name);
    PlayerLoginEvent event = spy(new PlayerLoginEvent(player, "", null));
    given(validationService.isUnrestricted(name)).willReturn(false);
    given(onJoinVerifier.refusePlayerForFullServer(event)).willReturn(true);

    // when
    listener.onPlayerLogin(event);

    // then
    verify(validationService).isUnrestricted(name);
    verify(onJoinVerifier).checkSingleSession(name);
    verify(onJoinVerifier).refusePlayerForFullServer(event);
    verifyNoMoreInteractions(onJoinVerifier);
    verifyNoModifyingCalls(event);
}
 
源代码10 项目: AuthMeReloaded   文件: PlayerListenerTest.java
@Test
public void shouldStopHandlingEventForBadResult() throws FailedVerificationException {
    // given
    String name = "someone";
    Player player = mockPlayerWithName(name);
    PlayerLoginEvent event = new PlayerLoginEvent(player, "", null);
    event.setResult(PlayerLoginEvent.Result.KICK_BANNED);
    event = spy(event);
    given(validationService.isUnrestricted(name)).willReturn(false);
    given(onJoinVerifier.refusePlayerForFullServer(event)).willReturn(false);

    // when
    listener.onPlayerLogin(event);

    // then
    verify(validationService).isUnrestricted(name);
    verify(onJoinVerifier).checkSingleSession(name);
    verify(onJoinVerifier).refusePlayerForFullServer(event);
    verifyNoModifyingCalls(event);
}
 
源代码11 项目: AuthMeReloaded   文件: PlayerListenerTest.java
@Test
public void shouldPerformAllJoinVerificationsSuccessfullyLogin() {
    // given
    String name = "someone";
    Player player = mockPlayerWithName(name);
    String ip = "12.34.56.78";

    PlayerLoginEvent loginEvent = spy(new PlayerLoginEvent(player, "", mockAddrWithIp(ip)));
    given(validationService.isUnrestricted(name)).willReturn(false);
    given(onJoinVerifier.refusePlayerForFullServer(loginEvent)).willReturn(false);

    // when
    listener.onPlayerLogin(loginEvent);

    // then
    verify(validationService).isUnrestricted(name);
    verify(onJoinVerifier).refusePlayerForFullServer(loginEvent);
    verifyNoInteractions(dataSource);
    verifyNoModifyingCalls(loginEvent);
}
 
源代码12 项目: AuthMeReloaded   文件: OnJoinVerifierTest.java
@Test
public void shouldRefuseNonVipPlayerForFullServer() {
    // given
    Player player = mock(Player.class);
    PlayerLoginEvent event = new PlayerLoginEvent(player, "hostname", null);
    event.setResult(PlayerLoginEvent.Result.KICK_FULL);
    given(permissionsManager.hasPermission(player, PlayerStatePermission.IS_VIP)).willReturn(false);
    String serverFullMessage = "server is full";
    given(messages.retrieveSingle(player, MessageKey.KICK_FULL_SERVER)).willReturn(serverFullMessage);

    // when
    boolean result = onJoinVerifier.refusePlayerForFullServer(event);

    // then
    assertThat(result, equalTo(true));
    assertThat(event.getResult(), equalTo(PlayerLoginEvent.Result.KICK_FULL));
    assertThat(event.getKickMessage(), equalTo(serverFullMessage));
    verifyNoInteractions(bukkitService, dataSource);
}
 
源代码13 项目: AuthMeReloaded   文件: OnJoinVerifierTest.java
@Test
public void shouldKickNonVipForJoiningVipPlayer() {
    // given
    Player player = mock(Player.class);
    PlayerLoginEvent event = new PlayerLoginEvent(player, "hostname", null);
    event.setResult(PlayerLoginEvent.Result.KICK_FULL);
    given(permissionsManager.hasPermission(player, PlayerStatePermission.IS_VIP)).willReturn(true);
    List<Player> onlinePlayers = Arrays.asList(mock(Player.class), mock(Player.class));
    given(permissionsManager.hasPermission(onlinePlayers.get(0), PlayerStatePermission.IS_VIP)).willReturn(true);
    given(permissionsManager.hasPermission(onlinePlayers.get(1), PlayerStatePermission.IS_VIP)).willReturn(false);
    given(bukkitService.getOnlinePlayers()).willReturn(onlinePlayers);
    given(server.getMaxPlayers()).willReturn(onlinePlayers.size());
    given(messages.retrieveSingle(player, MessageKey.KICK_FOR_VIP)).willReturn("kick for vip");

    // when
    boolean result = onJoinVerifier.refusePlayerForFullServer(event);

    // then
    assertThat(result, equalTo(false));
    assertThat(event.getResult(), equalTo(PlayerLoginEvent.Result.ALLOWED));
    // First player is VIP, so expect no interactions there and second player to have been kicked
    verifyNoInteractions(onlinePlayers.get(0));
    verify(onlinePlayers.get(1)).kickPlayer("kick for vip");
}
 
源代码14 项目: AuthMeReloaded   文件: OnJoinVerifierTest.java
@Test
public void shouldKickVipPlayerIfNoPlayerCanBeKicked() {
    // given
    Player player = mock(Player.class);
    PlayerLoginEvent event = new PlayerLoginEvent(player, "hostname", null);
    event.setResult(PlayerLoginEvent.Result.KICK_FULL);
    given(permissionsManager.hasPermission(player, PlayerStatePermission.IS_VIP)).willReturn(true);
    List<Player> onlinePlayers = Collections.singletonList(mock(Player.class));
    given(permissionsManager.hasPermission(onlinePlayers.get(0), PlayerStatePermission.IS_VIP)).willReturn(true);
    given(bukkitService.getOnlinePlayers()).willReturn(onlinePlayers);
    given(server.getMaxPlayers()).willReturn(onlinePlayers.size());
    given(messages.retrieveSingle(player, MessageKey.KICK_FULL_SERVER)).willReturn("kick full server");

    // when
    boolean result = onJoinVerifier.refusePlayerForFullServer(event);

    // then
    assertThat(result, equalTo(true));
    assertThat(event.getResult(), equalTo(PlayerLoginEvent.Result.KICK_FULL));
    assertThat(event.getKickMessage(), equalTo("kick full server"));
    verifyNoInteractions(onlinePlayers.get(0));
}
 
源代码15 项目: PGM   文件: VanishManagerImpl.java
@EventHandler(priority = EventPriority.MONITOR)
public void onPreJoin(PlayerLoginEvent event) {
  Player player = event.getPlayer();
  loginSubdomains.invalidate(player.getUniqueId());
  if (player.hasPermission(Permissions.VANISH)
      && !isVanished(player.getUniqueId())
      && isVanishSubdomain(event.getHostname())) {
    loginSubdomains.put(player.getUniqueId(), event.getHostname());
  }
}
 
源代码16 项目: PGM   文件: ModerationCommand.java
@EventHandler(priority = EventPriority.LOWEST)
public void onPreLogin(PlayerLoginEvent event) {
  // Format kick screen for banned players
  if (event.getResult().equals(Result.KICK_BANNED)) {
    String formatted =
        getPunishmentScreenFromName(event.getPlayer(), event.getPlayer().getName());
    if (formatted != null) {
      event.setKickMessage(formatted);
    }
  }
}
 
源代码17 项目: PGM   文件: PGMListener.java
@EventHandler
public void onPlayerLogin(final PlayerLoginEvent event) {
  // allow premiums to join when the server is full
  if (event.getResult() == Result.KICK_FULL) {
    if (event.getPlayer().hasPermission(Permissions.JOIN_FULL)) {
      event.allow();
    } else {
      event.setKickMessage(TextTranslations.translate("misc.serverFull", event.getPlayer()));
    }
  }
}
 
源代码18 项目: AntiVPN   文件: PlayerEvents.java
public PlayerEvents(Plugin plugin) {
    events.add(
            BukkitEvents.subscribe(plugin, AsyncPlayerPreLoginEvent.class, EventPriority.HIGH)
                    .handler(this::cachePlayer)
    );

    events.add(
            BukkitEvents.subscribe(plugin, PlayerLoginEvent.class, EventPriority.LOWEST)
                    .handler(this::checkPlayer)
    );
}
 
源代码19 项目: Hawk   文件: BanManager.java
@EventHandler
public void onJoin(PlayerLoginEvent e) {
    BanEntry entry = getBanInfo(e.getPlayer().getUniqueId());
    if (entry == null)
        return;
    if (entry.expireTime <= System.currentTimeMillis()) {
        pardon(e.getPlayer().getUniqueId());
        return;
    }
    e.disallow(PlayerLoginEvent.Result.KICK_BANNED, ChatColor.translateAlternateColorCodes('&', entry.reason));
}
 
源代码20 项目: helper   文件: HelperProfileRepository.java
@Override
public void setup(@Nonnull TerminableConsumer consumer) {
    try (Connection c = this.sql.getConnection()) {
        try (Statement s = c.createStatement()) {
            s.execute(replaceTableName(CREATE));
        }
    } catch (SQLException e) {
        e.printStackTrace();
    }

    // preload data
    if (this.preloadAmount > 0) {
        Log.info("[helper-profiles] Preloading the most recent " + this.preloadAmount + " entries...");
        long start = System.currentTimeMillis();
        int found = preload(this.preloadAmount);
        long time = System.currentTimeMillis() - start;
        Log.info("[helper-profiles] Preloaded " + found + " profiles into the cache! - took " + time + "ms");
    }

    // observe logins
    Events.subscribe(PlayerLoginEvent.class, EventPriority.MONITOR)
            .filter(e -> e.getResult() == PlayerLoginEvent.Result.ALLOWED)
            .handler(e -> {
                ImmutableProfile profile = new ImmutableProfile(e.getPlayer().getUniqueId(), e.getPlayer().getName());
                updateCache(profile);
                Schedulers.async().run(() -> saveProfile(profile));
            })
            .bindWith(consumer);
}
 
源代码21 项目: Plan   文件: PlayerOnlineListener.java
@EventHandler(priority = EventPriority.MONITOR)
public void onPlayerLogin(PlayerLoginEvent event) {
    try {
        PlayerLoginEvent.Result result = event.getResult();
        UUID playerUUID = event.getPlayer().getUniqueId();
        boolean operator = event.getPlayer().isOp();
        boolean banned = result == PlayerLoginEvent.Result.KICK_BANNED;
        dbSystem.getDatabase().executeTransaction(new BanStatusTransaction(playerUUID, () -> banned));
        dbSystem.getDatabase().executeTransaction(new OperatorStatusTransaction(playerUUID, operator));
    } catch (Exception e) {
        errorLogger.log(L.ERROR, e, ErrorContext.builder().related(event, event.getResult()).build());
    }
}
 
源代码22 项目: Skript   文件: ExprIP.java
@SuppressWarnings({"null", "unchecked"})
@Override
public boolean init(Expression<?>[] exprs, int matchedPattern, Kleenean isDelayed, ParseResult parseResult) {
	isProperty = matchedPattern < 2;
	isConnectEvent = ScriptLoader.isCurrentEvent(PlayerLoginEvent.class);
	boolean isServerPingEvent = ScriptLoader.isCurrentEvent(ServerListPingEvent.class) ||
			(PAPER_EVENT_EXISTS && ScriptLoader.isCurrentEvent(PaperServerListPingEvent.class));
	if (isProperty) {
		players = (Expression<Player>) exprs[0];
	} else if (!isConnectEvent && !isServerPingEvent) {
		Skript.error("You must specify players whose IP addresses to get outside of server list ping and connect events.");
		return false;
	}
	return true;
}
 
源代码23 项目: Skript   文件: EffKick.java
@Override
protected void execute(final Event e) {
	final String r = reason != null ? reason.getSingle(e) : "";
	if (r == null)
		return;
	for (final Player p : players.getArray(e)) {
		if (e instanceof PlayerLoginEvent && p.equals(((PlayerLoginEvent) e).getPlayer()) && !Delay.isDelayed(e)) {
			((PlayerLoginEvent) e).disallow(Result.KICK_OTHER, r);
		} else if (e instanceof PlayerKickEvent && p.equals(((PlayerKickEvent) e).getPlayer()) && !Delay.isDelayed(e)) {
			((PlayerKickEvent) e).setLeaveMessage(r);
		} else {
			p.kickPlayer(r);
		}
	}
}
 
源代码24 项目: LuckPerms   文件: BukkitConnectionListener.java
@EventHandler(priority = EventPriority.MONITOR)
public void onPlayerLoginMonitor(PlayerLoginEvent e) {
    /* Listen to see if the event was cancelled after we initially handled the login
       If the connection was cancelled here, we need to do something to clean up the data that was loaded. */

    // Check to see if this connection was denied at LOW. Even if it was denied at LOW, their data will still be present.
    if (this.deniedLogin.remove(e.getPlayer().getUniqueId())) {
        // This is a problem, as they were denied at low priority, but are now being allowed.
        if (e.getResult() == PlayerLoginEvent.Result.ALLOWED) {
            this.plugin.getLogger().severe("Player connection was re-allowed for " + e.getPlayer().getUniqueId());
            e.disallow(PlayerLoginEvent.Result.KICK_OTHER, "");
        }
    }
}
 
源代码25 项目: AnnihilationPro   文件: NPCMain.java
@EventHandler(priority = EventPriority.LOW)
public void onLogin(PlayerLoginEvent event)
{
    if(isTagged(event.getPlayer().getUniqueId()))
    {
        Boolean b = taggedPlayers.get(event.getPlayer().getUniqueId()).wasKilled();
        if(b == null)
        {
            event.setResult(Result.KICK_OTHER);
            event.setKickMessage(Lang.NPCALIVE.toString());
        }
    }
}
 
源代码26 项目: EliteMobs   文件: VersionWarner.java
@EventHandler
public void onPlayerLogin(PlayerLoginEvent event) {

    if (!event.getPlayer().hasPermission("elitemobs.versionnotification")) return;

    new BukkitRunnable() {
        @Override
        public void run() {
            event.getPlayer().sendMessage(ChatColorConverter.convert("&a[EliteMobs] &cYour version of EliteMobs is outdated." +
                    " &aYou can download the latest version from &3&n&ohttps://www.spigotmc.org/resources/%E2%9A%94elitemobs%E2%9A%94.40090/"));
        }
    }.runTaskLater(MetadataHandler.PLUGIN, 20*3);


}
 
源代码27 项目: EliteMobs   文件: MaxHealthBoost.java
@EventHandler
public void playerLogin(PlayerLoginEvent event) {
    new BukkitRunnable() {
        @Override
        public void run() {
            if (!PlayerData.playerMaxGuildRank.containsKey(event.getPlayer().getUniqueId())) return;
            if (PlayerData.playerMaxGuildRank.get(event.getPlayer().getUniqueId()) < 11) return;

            event.getPlayer().getAttribute(Attribute.GENERIC_MAX_HEALTH).setBaseValue((PlayerData.playerMaxGuildRank.get(event.getPlayer().getUniqueId()) - 10) * 2 + 20);

        }
    }.runTaskLater(MetadataHandler.PLUGIN, 5);
}
 
源代码28 项目: DiscordSRV   文件: RequireLinkModule.java
@EventHandler(priority = EventPriority.LOWEST)
public void onEventLowest(PlayerLoginEvent event) {
    if (!event.getResult().equals(PlayerLoginEvent.Result.ALLOWED)) {
        DiscordSRV.debug("PlayerLoginEvent event result for " + event.getPlayer().getName() + " = " + event.getResult() + ", skipping");
        return;
    }
    check(event.getClass().getSimpleName(), EventPriority.LOWEST, event.getPlayer().getName(), event.getPlayer().getUniqueId(), event.getAddress().getHostAddress(), (result, message) -> event.disallow(PlayerLoginEvent.Result.valueOf(result), message));
}
 
源代码29 项目: DiscordSRV   文件: RequireLinkModule.java
@EventHandler(priority = EventPriority.LOW)
public void onEventLow(PlayerLoginEvent event) {
    if (!event.getResult().equals(PlayerLoginEvent.Result.ALLOWED)) {
        DiscordSRV.debug("PlayerLoginEvent event result for " + event.getPlayer().getName() + " = " + event.getResult() + ", skipping");
        return;
    }
    check(event.getClass().getSimpleName(), EventPriority.LOW, event.getPlayer().getName(), event.getPlayer().getUniqueId(), event.getAddress().getHostAddress(), (result, message) -> event.disallow(PlayerLoginEvent.Result.valueOf(result), message));
}
 
源代码30 项目: DiscordSRV   文件: RequireLinkModule.java
@EventHandler(priority = EventPriority.NORMAL)
public void onEventNormal(PlayerLoginEvent event) {
    if (!event.getResult().equals(PlayerLoginEvent.Result.ALLOWED)) {
        DiscordSRV.debug("PlayerLoginEvent event result for " + event.getPlayer().getName() + " = " + event.getResult() + ", skipping");
        return;
    }
    check(event.getClass().getSimpleName(), EventPriority.NORMAL, event.getPlayer().getName(), event.getPlayer().getUniqueId(), event.getAddress().getHostAddress(), (result, message) -> event.disallow(PlayerLoginEvent.Result.valueOf(result), message));
}
 
 类所在包
 同包方法