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

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

源代码1 项目: AuthMeReloaded   文件: PlayerListenerTest.java
@Test
public void shouldRemoveMessageOnQuit() {
    // given
    given(settings.getProperty(RegistrationSettings.REMOVE_LEAVE_MESSAGE)).willReturn(true);
    given(antiBotService.wasPlayerKicked(anyString())).willReturn(false);
    Player player = mockPlayerWithName("Billy");
    PlayerQuitEvent event = new PlayerQuitEvent(player, "Player has quit the server");

    // when
    listener.onPlayerQuit(event);

    // then
    assertThat(event.getQuitMessage(), nullValue());
    verify(antiBotService).wasPlayerKicked("Billy");
    verify(management).performQuit(player);
}
 
源代码2 项目: Plan   文件: PlayerOnlineListener.java
private void actOnQuitEvent(PlayerQuitEvent event) {
    long time = System.currentTimeMillis();
    Player player = event.getPlayer();
    String playerName = player.getName();
    UUID playerUUID = player.getUniqueId();
    UUID serverUUID = serverInfo.getServerUUID();
    JSONCache.invalidate(DataID.SERVER_OVERVIEW, serverUUID);
    JSONCache.invalidate(DataID.GRAPH_PERFORMANCE, serverUUID);

    BukkitAFKListener.AFK_TRACKER.loggedOut(playerUUID, time);

    nicknameCache.removeDisplayName(playerUUID);

    dbSystem.getDatabase().executeTransaction(new BanStatusTransaction(playerUUID, player::isBanned));

    sessionCache.endSession(playerUUID, time)
            .ifPresent(endedSession -> dbSystem.getDatabase().executeTransaction(new SessionEndTransaction(endedSession)));

    if (config.isTrue(ExportSettings.EXPORT_ON_ONLINE_STATUS_CHANGE)) {
        processing.submitNonCritical(() -> exporter.exportPlayerPage(playerUUID, playerName));
    }
}
 
源代码3 项目: PGM   文件: PGMListener.java
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void removePlayerOnDisconnect(PlayerQuitEvent event) {
  Match match = this.mm.getMatch(event.getWorld());
  if (match == null) return;

  if (event.getQuitMessage() != null) {
    MatchPlayer player = match.getPlayer(event.getPlayer());
    if (player != null) {
      if (!vm.isVanished(player.getId())) {
        announceJoinOrLeave(player, false, false);
      } else {
        // Announce actual staff quit
        announceJoinOrLeave(player, false, true);
      }
    }
    event.setQuitMessage(null);
  }

  match.removePlayer(event.getPlayer());
  PGM.get().getPrefixRegistry().removePlayer(event.getPlayer().getUniqueId());
}
 
源代码4 项目: PlayerSQL   文件: EventExecutor.java
@EventHandler(priority = MONITOR)
public void handle(PlayerQuitEvent event) {
    Player player = event.getPlayer();
    UUID id = player.getUniqueId();
    Lifecycle lifecycle = handled.remove(id);
    if (manager.isNotLocked(id)) {
        manager.cancelTimerSaver(id);
        manager.lockUser(player);// Lock user if not in bungee enchant mode
        PlayerData data = (lifecycle == Lifecycle.DATA_SENT)
                ? (PlayerData) pending.get(id)
                : manager.getUserData(id, true);
        if (data == null) {
            main.run(() -> manager.unlockUser(player));// Err? unlock next tick
        } else {
            runAsync(() -> manager.saveUser(data, false)).thenRun(() -> main.run(() -> manager.unlockUser(player)));
        }
    } else {
    	UUID guid = GuidResolveService.getService().getGuid(player);
        runAsync(() -> manager.updateDataLock(guid, false)).thenRun(() -> main.run(() -> manager.unlockUser(player)));
    }
    pending.remove(id);
    LocalDataMgr.quit(player);
}
 
源代码5 项目: iDisguise   文件: EventListener.java
@EventHandler
public void onPlayerQuit(PlayerQuitEvent event) {
	Player player = event.getPlayer();
	if(plugin.getConfiguration().MODIFY_MESSAGE_LEAVE) {
		if(event.getQuitMessage() != null && DisguiseManager.isDisguised(player)) {
			if(DisguiseManager.getDisguise(player) instanceof PlayerDisguise) {
				event.setQuitMessage(event.getQuitMessage().replace(player.getName(), ((PlayerDisguise)DisguiseManager.getDisguise(player)).getDisplayName()));
			} else {
				event.setQuitMessage(null);
			}
		}
	}
	if(!plugin.getConfiguration().KEEP_DISGUISE_LEAVE) {
		if(DisguiseManager.isDisguised(player)) {
			DisguiseManager.undisguise(player);
		}
	}
	ChannelInjector.remove(player);
	EntityIdList.removeEntity(player);
}
 
源代码6 项目: helper   文件: Metadata.java
private static void ensureSetup() {
    if (SETUP.get()) {
        return;
    }

    if (!SETUP.getAndSet(true)) {

        // remove player metadata when they leave the server
        Events.subscribe(PlayerQuitEvent.class, EventPriority.MONITOR)
                .handler(e -> StandardMetadataRegistries.PLAYER.remove(e.getPlayer().getUniqueId()));

        // cache housekeeping task
        Schedulers.builder()
                .async()
                .afterAndEvery(1, TimeUnit.MINUTES)
                .run(() -> {
                    for (MetadataRegistry<?> registry : StandardMetadataRegistries.values()) {
                        registry.cleanup();
                    }
                });
    }
}
 
源代码7 项目: AuthMeReloaded   文件: PlayerListenerTest.java
@Test
public void shouldRemoveMessageForUnloggedUser() {
    // given
    given(settings.getProperty(RegistrationSettings.REMOVE_LEAVE_MESSAGE)).willReturn(false);
    given(settings.getProperty(RegistrationSettings.REMOVE_UNLOGGED_LEAVE_MESSAGE)).willReturn(true);
    String name = "Joel";
    given(antiBotService.wasPlayerKicked(name)).willReturn(true);
    Player player = mockPlayerWithName(name);
    PlayerQuitEvent event = new PlayerQuitEvent(player, "Joel exits the party");
    given(listenerService.shouldCancelEvent(event)).willReturn(true);

    // when
    listener.onPlayerQuit(event);

    // then
    assertThat(event.getQuitMessage(), nullValue());
    verify(antiBotService).wasPlayerKicked(name);
    verifyNoInteractions(management);
}
 
源代码8 项目: askyblock   文件: JoinLeaveEvents.java
@EventHandler(priority = EventPriority.NORMAL)
public void onPlayerQuit(final PlayerQuitEvent event) {
    // Remove from TopTen if the player has the permission
    if (!event.getPlayer().hasPermission(Settings.PERMPREFIX + "intopten")) {
        plugin.getTopTen().topTenRemoveEntry(event.getPlayer().getUniqueId());
    }
    // Remove from coop list
    if (!Settings.persistantCoops) {
        CoopPlay.getInstance().clearMyCoops(event.getPlayer());
        CoopPlay.getInstance().clearMyInvitedCoops(event.getPlayer());
    }
    plugin.getChatListener().unSetPlayer(event.getPlayer().getUniqueId());
    // CoopPlay.getInstance().returnAllInventories(event.getPlayer());
    // plugin.setMessage(event.getPlayer().getUniqueId(),
    // "Hello! This is a test. You logged out");
    players.removeOnlinePlayer(event.getPlayer().getUniqueId());
}
 
/**
 * When a player leaves the server, listener saves a player's data from
 * hashmap to file, but will not write to disk.
 *
 * @param e
 */
@EventHandler(priority = EventPriority.MONITOR)
public void onQuit(PlayerQuitEvent e) {
    String playername = e.getPlayer().getName();
    PlayerStat playerstat = PlayerStatsManager.getPlayerStats(playername);
    if (playerstat != null) {
        new BukkitRunnable() {
            @Override
            public void run() {
                try {
                    DataStorage.get().saveStats(playerstat);
                    PlayerStatsManager.removePlayerStats(playername);
                } catch (Exception ex) {
                    // Unexpected Error.
                    ex.printStackTrace();
                }
            }
        }.runTaskLater(Main.getMain(), 20L);
    }
}
 
源代码10 项目: Skript   文件: ExprMessage.java
@Override
@Nullable
String get(final Event e) {
	if (e instanceof PlayerKickEvent)
		return ((PlayerKickEvent) e).getLeaveMessage();
	else
		return ((PlayerQuitEvent) e).getQuitMessage();
}
 
源代码11 项目: mcspring-boot   文件: ScopeTest.java
@Test
@SneakyThrows
public void shouldClearScopeAfterPlayerQuit() {
    context.runWithSender(player1, () -> counterService.setCounter(2));
    context.runWithSender(player2, () -> counterService.setCounter(3));

    PlayerQuitEvent event = new PlayerQuitEvent(player1, "");
    eventExecutor.execute(senderContextScope, event);

    Integer counter1 = context.runWithSender(player1, counterService::getCounter);
    Integer counter2 = context.runWithSender(player2, counterService::getCounter);
    assertEquals(Integer.valueOf(0), counter1);
    assertEquals(Integer.valueOf(3), counter2);
}
 
源代码12 项目: ScoreboardStats   文件: StatsListener.java
/**
 * Saves the stats to database if the player leaves
 *
 * @param quitEvent leave event
 * @see Database
 */
@EventHandler(ignoreCancelled = true, priority = EventPriority.HIGH)
public void onQuit(PlayerQuitEvent quitEvent) {
    Player player = quitEvent.getPlayer();

    database.getStats(player).ifPresent(database::saveAsync);

    //just remove our metadata to prevent memory leaks
    player.removeMetadata("player_stats", plugin);
}
 
源代码13 项目: Plan   文件: PlayerOnlineListener.java
@EventHandler(priority = EventPriority.MONITOR)
public void onPlayerQuit(PlayerQuitEvent event) {
    try {
        actOnQuitEvent(event);
    } catch (Exception e) {
        errorLogger.log(L.ERROR, e, ErrorContext.builder().related(event).build());
    }
}
 
源代码14 项目: HoloAPI   文件: HoloListener.java
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onPlayerQuit(PlayerQuitEvent event) {
    Player player = event.getPlayer();
    for (Hologram h : HoloAPI.getManager().getAllHolograms().keySet()) {
        if (h.getLocationFor(player) != null) {
            h.clear(player);
        }
    }
}
 
源代码15 项目: Slimefun4   文件: TestPlayerProfileListener.java
@Test
public void testPlayerLeave() throws InterruptedException {
    Player player = server.addPlayer();
    PlayerProfile profile = TestUtilities.awaitProfile(player);
    PlayerQuitEvent event = new PlayerQuitEvent(player, "bye");
    listener.onDisconnect(event);

    Assertions.assertTrue(profile.isMarkedForDeletion());
}
 
源代码16 项目: Assemble   文件: AssembleListener.java
@EventHandler
public void onPlayerQuit(PlayerQuitEvent event) {
	AssembleBoardDestroyEvent destroyEvent = new AssembleBoardDestroyEvent(event.getPlayer());

	Bukkit.getPluginManager().callEvent(destroyEvent);
	if (destroyEvent.isCancelled()) {
		return;
	}

	getAssemble().getBoards().remove(event.getPlayer().getUniqueId());
	event.getPlayer().setScoreboard(Bukkit.getScoreboardManager().getMainScoreboard());
}
 
源代码17 项目: GlobalWarming   文件: PlayerListener.java
/**
 * When players leave:
 * - Remove them from the scoreboard
 */
@EventHandler(ignoreCancelled = true)
public void onPlayerQuit(PlayerQuitEvent event) {
    if (gw.getConf().isScoreboardEnabled()) {
        PlayerTable playerTable = gw.getTableManager().getPlayerTable();
        GPlayer gPlayer = playerTable.getPlayers().get(event.getPlayer().getUniqueId());
        gw.getScoreboard().disconnect(gPlayer);
    }
}
 
源代码18 项目: TabooLib   文件: PlayerContainerLoader.java
@EventHandler(priority = EventPriority.MONITOR)
public void onQuit(PlayerQuitEvent e) {
    pluginContainer.values().stream().flatMap(Collection::stream).forEach(container -> {
        if (container.getContainer() instanceof Map) {
            ((Map) container.getContainer()).remove(container.isUniqueId() ? e.getPlayer().getUniqueId() : e.getPlayer().getName());
        } else if (container.getContainer() instanceof Collection) {
            ((Collection) container.getContainer()).remove(container.isUniqueId() ? e.getPlayer().getUniqueId() : e.getPlayer().getName());
        } else {
            TLogger.getGlobalLogger().error("Invalid Container: " + container.getContainer().getClass().getSimpleName());
        }
    });
}
 
源代码19 项目: Hawk   文件: MouseRecorder.java
@EventHandler
public void onQuit(PlayerQuitEvent e) {
    if(e.getPlayer().equals(target)) {
        if(admin != null) {
            admin.sendMessage(ChatColor.GOLD + "Recording progress for " + target.getName() + " interrupted because of disconnection.");
        }
        hawkListeners.remove(this);
        HandlerList.unregisterAll(this);
        render(this);
    }

}
 
源代码20 项目: Slimefun4   文件: PlayerProfileListener.java
@EventHandler
public void onDisconnect(PlayerQuitEvent e) {
    Optional<PlayerProfile> profile = PlayerProfile.find(e.getPlayer());

    // if we still have a profile of this Player in memory, delete it
    if (profile.isPresent()) {
        profile.get().markForDeletion();
    }
}
 
源代码21 项目: SkyWarsReloaded   文件: SpectateListener.java
@EventHandler
public void onPlayerQuit(PlayerQuitEvent e) {
	final Player player = e.getPlayer();
	final GameMap gameMap = MatchManager.get().getSpectatorMap(player);
	if (gameMap == null) {
		return;
	}
	gameMap.getSpectators().remove(player.getUniqueId());
	MatchManager.get().removeSpectator(player);
}
 
源代码22 项目: BungeePerms   文件: BukkitEventListener.java
@EventHandler(priority = EventPriority.MONITOR)
public void onQuit(PlayerQuitEvent e)
{
    //todo delay by one tick
    //uninject permissible
    Injector.uninject(e.getPlayer());

    User u = config.isUseUUIDs() ? pm().getUser(e.getPlayer().getUniqueId()) : pm().getUser(e.getPlayer().getName());
    pm().removeUserFromCache(u);
}
 
源代码23 项目: Crazy-Crates   文件: CrateControl.java
@EventHandler
public void onLeave(PlayerQuitEvent e) {
    Player player = e.getPlayer();
    if (cc.hasCrateTask(player)) {
        cc.endCrate(player);
    }
    if (cc.hasQuadCrateTask(player)) {
        cc.endQuadCrate(player);
    }
    if (cc.isInOpeningList(player)) {
        cc.removePlayerFromOpeningList(player);
    }
}
 
源代码24 项目: Plan   文件: PlayerOnlineListener.java
@EventHandler(priority = EventPriority.NORMAL)
public void beforePlayerQuit(PlayerQuitEvent event) {
    Player player = event.getPlayer();
    UUID playerUUID = player.getUniqueId();
    String playerName = player.getName();
    processing.submitNonCritical(() -> extensionService.updatePlayerValues(playerUUID, playerName, CallEvents.PLAYER_LEAVE));
}
 
源代码25 项目: ProjectAres   文件: PlayerListener.java
@EventHandler(priority = EventPriority.MONITOR)
public void leave(final PlayerQuitEvent event) {
    int count = lobby.getServer().getOnlinePlayers().size();
    if(lobby.getServer().getOnlinePlayers().contains(event.getPlayer())) count--;
    minecraftService.updateLocalServer(new SignUpdate(count));

    if(count == 0 && restartDeferral != null) {
        final RequestRestartEvent.Deferral deferral = restartDeferral;
        restartDeferral = null;
        deferral.resume();
    }
}
 
源代码26 项目: NovaGuilds   文件: LoginListener.java
@EventHandler
public void onPlayerLeave(PlayerQuitEvent event) {
	NovaPlayer nPlayer = PlayerManager.getPlayer(event.getPlayer());

	if(nPlayer.isAtRegion()) {
		plugin.getRegionManager().playerExitedRegion(nPlayer.getPlayer());
	}

	//Guild inactive time
	if(nPlayer.hasGuild()) {
		nPlayer.getGuild().updateInactiveTime();
	}
}
 
源代码27 项目: ProjectAres   文件: TabManager.java
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onQuit(PlayerQuitEvent event) {
    TabView view = this.getViewOrNull(event.getPlayer());
    if(view != null) {
        view.disable();
        this.removeView(view);
    }
    this.removePlayerEntry(event.getPlayer());
}
 
源代码28 项目: ProjectAres   文件: PlayerServerChanger.java
@EventHandler(priority = EventPriority.LOWEST)
public void onQuit(PlayerQuitEvent event) {
    final MetadataValue future = event.getPlayer().getMetadata(METADATA_KEY, plugin);
    if(future != null) {
        ((SettableFuture) future.value()).set(null);
    }
}
 
源代码29 项目: ProjectAres   文件: JoinMessageAnnouncer.java
@EventHandler(priority = EventPriority.HIGHEST)
public void onQuit(PlayerQuitEvent event) throws EventException {
    event.setQuitMessage(null);
    final User user = userStore.getUser(event.getPlayer());
    final SessionChange change = pendingQuits.getIfPresent(user);

    event.yield();

    if(change != null) {
        pendingQuits.invalidate(user);
        announce(change);
    }
}
 
源代码30 项目: CardinalPGM   文件: TitleRespawn.java
@EventHandler(priority = EventPriority.LOW)
public void onPlayerLeave(PlayerQuitEvent event) {
    Optional<TeamModule> team = Teams.getTeamByPlayer(event.getPlayer());
    if (!team.isPresent() || !team.get().isObserver()) dropInventory(event.getPlayer());
    this.deadPlayers.remove(event.getPlayer().getUniqueId());
    this.hasLeftClicked.remove(event.getPlayer().getUniqueId());
}
 
 类所在包
 同包方法