org.bukkit.util.CachedServerIcon#com.destroystokyo.paper.event.server.PaperServerListPingEvent源码实例Demo

下面列出了org.bukkit.util.CachedServerIcon#com.destroystokyo.paper.event.server.PaperServerListPingEvent 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: Skript   文件: ExprOnlinePlayersCount.java
@SuppressWarnings("null")
@Override
public void change(Event e, @Nullable Object[] delta, ChangeMode mode) {
	PaperServerListPingEvent event = (PaperServerListPingEvent) e;
	switch (mode) {
		case SET:
			event.setNumPlayers(((Number) delta[0]).intValue());
			break;
		case ADD:
			event.setNumPlayers(event.getNumPlayers() + ((Number) delta[0]).intValue());
			break;
		case REMOVE:
			event.setNumPlayers(event.getNumPlayers() - ((Number) delta[0]).intValue());
			break;
		case DELETE:
		case RESET:
			event.setNumPlayers(PlayerUtils.getOnlinePlayers().size());
	}
}
 
源代码2 项目: Kettle   文件: PaperLegacyStatusClient.java
public static PaperServerListPingEvent processRequest(MinecraftServer server,
                                                      InetSocketAddress address, int protocolVersion, @Nullable InetSocketAddress virtualHost) {

    PaperServerListPingEvent event = new PaperServerListPingEventImpl(server,
            new PaperLegacyStatusClient(address, protocolVersion, virtualHost), Byte.MAX_VALUE, null);
    server.server.getPluginManager().callEvent(event);

    if (event.isCancelled()) {
        return null;
    }

    return event;
}
 
源代码3 项目: Skript   文件: ExprMOTD.java
@SuppressWarnings({"unchecked", "null"})
@Override
public boolean init(Expression<?>[] exprs, int matchedPattern, Kleenean isDelayed, ParseResult parseResult) {
	boolean isServerPingEvent = ScriptLoader.isCurrentEvent(ServerListPingEvent.class) ||
			(PAPER_EVENT_EXISTS && ScriptLoader.isCurrentEvent(PaperServerListPingEvent.class));
	if (parseResult.mark == 2 && !isServerPingEvent) {
		Skript.error("The 'shown' MOTD expression can't be used outside of a server list ping event");
		return false;
	}
	isDefault = (parseResult.mark == 0 && !isServerPingEvent) || parseResult.mark == 1;
	return true;
}
 
源代码4 项目: 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;
}
 
源代码5 项目: Skript   文件: ExprVersionString.java
@Override
public boolean init(Expression<?>[] exprs, int matchedPattern, Kleenean isDelayed, ParseResult parseResult) {
	if (ScriptLoader.isCurrentEvent(ServerListPingEvent.class)) {
		Skript.error("The version string expression requires Paper 1.12.2 or newer");
		return false;
	} else if (!(PAPER_EVENT_EXISTS && ScriptLoader.isCurrentEvent(PaperServerListPingEvent.class))) {
		Skript.error("The version string expression can't be used outside of a server list ping event");
		return false;
	}
	return true;
}
 
源代码6 项目: Skript   文件: ExprServerIcon.java
@Override
public boolean init(Expression<?>[] exprs, int matchedPattern, Kleenean isDelayed, ParseResult parseResult) {
	if (!PAPER_EVENT_EXISTS) {
		Skript.error("The server icon expression requires Paper 1.12.2 or newer");
		return false;
	}
	isServerPingEvent = ScriptLoader.isCurrentEvent(PaperServerListPingEvent.class);
	isDefault = (parseResult.mark == 0 && !isServerPingEvent) || parseResult.mark == 1;
	if (!isServerPingEvent && !isDefault) {
		Skript.error("The 'shown' server icon expression can't be used outside of a server list ping event");
		return false;
	}
	return true;
}
 
源代码7 项目: Skript   文件: ExprServerIcon.java
@Override
@Nullable
public CachedServerIcon[] get(Event e) {
	CachedServerIcon icon = null;
	if ((isServerPingEvent && !isDefault) && PAPER_EVENT_EXISTS)
		icon = ((PaperServerListPingEvent) e).getServerIcon();
	else
		icon = Bukkit.getServerIcon();
	if (icon == null || icon.getData() == null)
		return null;
	return CollectionUtils.array(icon);
}
 
源代码8 项目: Skript   文件: ExprServerIcon.java
@SuppressWarnings("null")
@Override
public void change(Event e, @Nullable Object[] delta, ChangeMode mode) {
	PaperServerListPingEvent event = (PaperServerListPingEvent) e;
	switch (mode) {
		case SET:
			event.setServerIcon((CachedServerIcon) delta[0]);
			break;
		case RESET:
			event.setServerIcon(Bukkit.getServerIcon());
	}
}
 
源代码9 项目: Skript   文件: ExprHoverList.java
@Override
public boolean init(Expression<?>[] exprs, int matchedPattern, Kleenean isDelayed, ParseResult parseResult) {
	if (!PAPER_EVENT_EXISTS) {
		Skript.error("The hover list expression requires Paper 1.12.2 or newer");
		return false;
	} else if (!ScriptLoader.isCurrentEvent(PaperServerListPingEvent.class)) {
		Skript.error("The hover list expression can't be used outside of a server list ping event");
		return false;
	}
	return true;
}
 
源代码10 项目: Skript   文件: ExprHoverList.java
@Override
@Nullable
public String[] get(Event e) {
	return ((PaperServerListPingEvent) e).getPlayerSample().stream()
			.map(PlayerProfile::getName)
			.toArray(String[]::new);
}
 
源代码11 项目: Skript   文件: ExprHoverList.java
@SuppressWarnings("null")
@Override
public void change(Event e, @Nullable Object[] delta, ChangeMode mode) {
	List<PlayerProfile> values = new ArrayList<>();
	if (mode != ChangeMode.DELETE && mode != ChangeMode.RESET) {
		for (Object o : delta) {
			if (o instanceof Player) {
				Player player = ((Player) o);
				values.add(Bukkit.createProfile(player.getUniqueId(), player.getName()));
			} else {
				values.add(Bukkit.createProfile(UUID.randomUUID(), (String) o));
			}
		}
	}

	List<PlayerProfile> sample = ((PaperServerListPingEvent) e).getPlayerSample();
	switch (mode){
		case SET:
			sample.clear();
			sample.addAll(values);
			break;
		case ADD:
			sample.addAll(values);
			break;
		case REMOVE:
			sample.removeAll(values);
			break;
		case DELETE:
		case RESET:
			sample.clear();
	}
}
 
源代码12 项目: Skript   文件: ExprOnlinePlayersCount.java
@Override
public boolean init(Expression<?>[] exprs, int matchedPattern, Kleenean isDelayed, ParseResult parseResult) {
	boolean isPaperEvent = PAPER_EVENT_EXISTS && ScriptLoader.isCurrentEvent(PaperServerListPingEvent.class);
	if (parseResult.mark == 2) {
		if (ScriptLoader.isCurrentEvent(ServerListPingEvent.class)) {
			Skript.error("The 'fake' online players count expression requires Paper 1.12.2 or newer");
			return false;
		} else if (!isPaperEvent) {
			Skript.error("The 'fake' online players count expression can't be used outside of a server list ping event");
			return false;
		}
	}
	isReal = (parseResult.mark == 0 && !isPaperEvent) || parseResult.mark == 1;
	return true;
}
 
源代码13 项目: Skript   文件: ExprOnlinePlayersCount.java
@Override
@Nullable
public Number[] get(Event e) {
	if (isReal)
		return CollectionUtils.array(PlayerUtils.getOnlinePlayers().size());
	else
		return CollectionUtils.array(((PaperServerListPingEvent) e).getNumPlayers());
}
 
源代码14 项目: Skript   文件: ExprMaxPlayers.java
@SuppressWarnings({"unchecked", "null"})
@Override
public boolean init(Expression<?>[] exprs, int matchedPattern, Kleenean isDelayed, SkriptParser.ParseResult parseResult) {
	boolean isServerPingEvent = ScriptLoader.isCurrentEvent(ServerListPingEvent.class) ||
			(PAPER_EVENT_EXISTS && ScriptLoader.isCurrentEvent(PaperServerListPingEvent.class));
	if (parseResult.mark == 2 && !isServerPingEvent) {
		Skript.error("The 'shown' max players count expression can't be used outside of a server list ping event");
		return false;
	}
	isReal = (parseResult.mark == 0 && !isServerPingEvent) || parseResult.mark == 1;
	return true;
}
 
源代码15 项目: Skript   文件: ExprProtocolVersion.java
@Override
public boolean init(Expression<?>[] exprs, int matchedPattern, Kleenean isDelayed, ParseResult parseResult) {
	if (!PAPER_EVENT_EXISTS) {
		Skript.error("The protocol version expression requires Paper 1.12.2 or newer");
		return false;
	} else if (!ScriptLoader.isCurrentEvent(PaperServerListPingEvent.class)) {
		Skript.error("The protocol version expression can't be used outside of a server list ping event");
		return false;
	}
	return true;
}
 
源代码16 项目: Skript   文件: EffHidePlayerFromServerList.java
@SuppressWarnings({"unchecked", "null"})
@Override
public boolean init(Expression<?>[] exprs, int matchedPattern, Kleenean isDelayed, ParseResult parseResult) {
	boolean isServerPingEvent = ScriptLoader.isCurrentEvent(ServerListPingEvent.class) ||
			(PAPER_EVENT_EXISTS && ScriptLoader.isCurrentEvent(PaperServerListPingEvent.class));
	if (!isServerPingEvent) {
		Skript.error("The hide player from server list effect can't be used outside of a server list ping event");
		return false;
	} else if (isDelayed == Kleenean.TRUE) {
		Skript.error("Can't hide players from the server list anymore after the server list ping event has already passed");
		return false;
	}
	players = (Expression<Player>) exprs[0];
	return true;
}
 
源代码17 项目: Skript   文件: EffPlayerInfoVisibility.java
@Override
public boolean init(Expression<?>[] exprs, int matchedPattern, Kleenean isDelayed, ParseResult parseResult) {
	if (!PAPER_EVENT_EXISTS) {
		Skript.error("The player info visibility effect requires Paper 1.12.2 or newer");
		return false;
	} else if (!ScriptLoader.isCurrentEvent(PaperServerListPingEvent.class)) {
		Skript.error("The player info visibility effect can't be used outside of a server list ping event");
		return false;
	} else if (isDelayed == Kleenean.TRUE) {
		Skript.error("Can't change the player info visibility anymore after the server list ping event has already passed");
		return false;
	}
	shouldHide = matchedPattern == 0;
	return true;
}
 
源代码18 项目: ProtocolSupport   文件: PaperPingResponseHandler.java
@Override
public ServerPingResponseEvent createResponse(Connection connection) {
	PaperServerListPingEvent bevent = new PaperServerListPingEvent(
		new StatusClientImpl(connection),
		Bukkit.getMotd(),
		Bukkit.getOnlinePlayers().size(), Bukkit.getMaxPlayers(),
		createServerVersionString(), connection.getVersion().getId(),
		Bukkit.getServerIcon()
	);
	List<PlayerProfile> playerSample = bevent.getPlayerSample();
	Bukkit.getOnlinePlayers().stream()
	.limit(SpigotConfig.playerSample)
	.map(player -> new NameUUIDPlayerProfile(player.getUniqueId(), player.getName()))
	.forEach(playerSample::add);
	Bukkit.getPluginManager().callEvent(bevent);

	ServerPingResponseEvent revent = new ServerPingResponseEvent(
		connection,
		new ProtocolInfo(bevent.getProtocolVersion(), bevent.getVersion()),
		bevent.getServerIcon() != null ? ServerPlatform.get().getMiscUtils().convertBukkitIconToBase64(bevent.getServerIcon()) : null,
		bevent.getMotd(),
		bevent.getNumPlayers(), bevent.getMaxPlayers(),
		bevent.getPlayerSample().stream().map(PlayerProfile::getName).collect(Collectors.toList())
	);
	Bukkit.getPluginManager().callEvent(revent);

	return revent;
}
 
源代码19 项目: ServerListPlus   文件: PaperEventHandler.java
@Override
@EventHandler
public void onServerListPing(ServerListPingEvent event) {
    if (event instanceof PaperServerListPingEvent) {
        handlePaperServerListPing((PaperServerListPingEvent) event);
    } else {
        // Still handle events that don't implement PaperServerListPingEvent
        super.onServerListPing(event);
    }
}
 
源代码20 项目: Kettle   文件: PaperLegacyStatusClient.java
public static String getMotd(PaperServerListPingEvent event) {
    return getFirstLine(event.getMotd());
}
 
源代码21 项目: Kettle   文件: PaperLegacyStatusClient.java
public static String getUnformattedMotd(PaperServerListPingEvent event) {
    // Strip color codes and all other occurrences of the color char (because it's used as delimiter)
    return getFirstLine(StringUtils.remove(ChatColor.stripColor(event.getMotd()), ChatColor.COLOR_CHAR));
}
 
源代码22 项目: Skript   文件: ExprVersionString.java
@Override
@Nullable
public String[] get(Event e) {
	return CollectionUtils.array(((PaperServerListPingEvent) e).getVersion());
}
 
源代码23 项目: Skript   文件: ExprVersionString.java
@SuppressWarnings("null")
@Override
public void change(Event e, @Nullable Object[] delta, ChangeMode mode) {
	((PaperServerListPingEvent) e).setVersion(((String) delta[0]));
}
 
源代码24 项目: Skript   文件: ExprProtocolVersion.java
@Override
@Nullable
public Number[] get(Event e) {
	return CollectionUtils.array(((PaperServerListPingEvent) e).getProtocolVersion());
}
 
源代码25 项目: Skript   文件: ExprProtocolVersion.java
@SuppressWarnings("null")
@Override
public void change(Event e, @Nullable Object[] delta, ChangeMode mode) {
	((PaperServerListPingEvent) e).setProtocolVersion(((Number) delta[0]).intValue());
}
 
源代码26 项目: Skript   文件: EffPlayerInfoVisibility.java
@Override
protected void execute(Event e) {
	((PaperServerListPingEvent) e).setHidePlayers(shouldHide);
}
 
源代码27 项目: ServerListPlus   文件: PaperEventHandler.java
private void handlePaperServerListPing(final PaperServerListPingEvent event) {
    if (bukkit.getCore() == null) return; // Too early, we haven't finished initializing yet

    StatusRequest request = bukkit.getCore().createRequest(event.getAddress());
    request.setProtocolVersion(event.getClient().getProtocolVersion());
    InetSocketAddress host = event.getClient().getVirtualHost();
    if (host != null) {
        request.setTarget(host);
    }

    StatusResponse response = request.createResponse(bukkit.getCore().getStatus(),
            // Return unknown player counts if it has been hidden
            new ResponseFetcher() {
                @Override
                public Integer getOnlinePlayers() {
                    return event.shouldHidePlayers() ? null : event.getNumPlayers();
                }

                @Override
                public Integer getMaxPlayers() {
                    return event.shouldHidePlayers() ? null : event.getMaxPlayers();
                }

                @Override
                public int getProtocolVersion() {
                    return event.getProtocolVersion();
                }
            }
    );

    // Description
    String message = response.getDescription();
    if (message != null) event.setMotd(message);

    // Version name
    message = response.getVersion();
    if (message != null) event.setVersion(message);
    // Protocol version
    Integer protocol = response.getProtocolVersion();
    if (protocol != null) event.setProtocolVersion(protocol);

    if (response.hidePlayers()) {
        event.setHidePlayers(true);
    } else {
        // Online players
        Integer count = response.getOnlinePlayers();
        if (count != null) event.setNumPlayers(count);
        // Max players
        count = response.getMaxPlayers();
        if (count != null) event.setMaxPlayers(count);

        // Player hover
        message = response.getPlayerHover();
        if (message != null) {
            List<PlayerProfile> profiles = event.getPlayerSample();
            profiles.clear();

            if (!message.isEmpty()) {
                if (response.useMultipleSamples()) {
                    count = response.getDynamicSamples();
                    List<String> lines = count != null ? Helper.splitLinesCached(message, count) :
                            Helper.splitLinesCached(message);

                    for (String line : lines) {
                        profiles.add(bukkit.getServer().createProfile(line));
                    }
                } else {
                    profiles.add(bukkit.getServer().createProfile(message));
                }
            }
        }
    }

    // Favicon
    FaviconSource favicon = response.getFavicon();
    if (favicon != null) {
        CachedServerIcon icon = bukkit.getFavicon(favicon);
        if (icon != null)
            try {
                event.setServerIcon(icon);
            } catch (UnsupportedOperationException ignored) {}
    }
}