Skip to content
Open
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ public void createDirect(final ConnectedPlayer viewer) {

public boolean viewerRemove(final ConnectedPlayer viewer) {
if (this.viewers.remove(viewer)) {
viewer.getBossBarManager().remove(this, BossBarPacket.createRemovePacket(this.id, this.bar));
viewer.getBossBarManager().remove(this, BossBarPacket.createRemovePacket(this.id));
return true;
}
return false;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@
import java.util.function.Predicate;
import java.util.stream.Collectors;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.JoinConfiguration;
import net.kyori.adventure.text.TextComponent;
import net.kyori.adventure.text.TranslatableComponent;
import net.kyori.adventure.text.event.ClickEvent;
Expand All @@ -70,6 +71,7 @@
*/
public final class VelocityCommand {
private static final String USAGE = "/velocity <%s>";
private static final JoinConfiguration COMMA_JOINER = JoinConfiguration.commas(true);

@SuppressWarnings("checkstyle:MissingJavadocMethod")
public static BrigadierCommand create(final VelocityServer server) {
Expand Down Expand Up @@ -208,19 +210,14 @@ public int run(final CommandContext<CommandSource> context) {
return Command.SINGLE_SUCCESS;
}

final TextComponent.Builder listBuilder = Component.text();
for (int i = 0; i < pluginCount; i++) {
final PluginContainer plugin = plugins.get(i);
listBuilder.append(componentForPlugin(plugin.getDescription()));
if (i + 1 < pluginCount) {
listBuilder.append(Component.text(", "));
}
}
final Component pluginListComponents = plugins.stream()
.map(container -> componentForPlugin(container.getDescription()))
.collect(Component.toComponent(Component.text(", ")));

final TranslatableComponent output = Component.translatable()
.key("velocity.command.plugins-list")
.color(NamedTextColor.YELLOW)
.arguments(listBuilder.build())
.arguments(pluginListComponents)
.build();
source.sendMessage(output);
return Command.SINGLE_SUCCESS;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -420,7 +420,7 @@ public boolean handle(TransferPacket packet) {
@Override
public boolean handle(ClientboundStoreCookiePacket packet) {
server.getEventManager()
.fire(new CookieStoreEvent(serverConn.getPlayer(), packet.getKey(), packet.getPayload()))
.fire(new CookieStoreEvent(serverConn.getPlayer(), packet.key(), packet.payload()))
.thenAcceptAsync(event -> {
if (event.getResult().isAllowed()) {
final Key resultedKey = event.getResult().getKey() == null
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -328,7 +328,7 @@ public boolean handle(TransferPacket packet) {
@Override
public boolean handle(ClientboundStoreCookiePacket packet) {
server.getEventManager()
.fire(new CookieStoreEvent(serverConn.getPlayer(), packet.getKey(), packet.getPayload()))
.fire(new CookieStoreEvent(serverConn.getPlayer(), packet.key(), packet.payload()))
.thenAcceptAsync(event -> {
if (event.getResult().isAllowed()) {
final Key resultedKey = event.getResult().getKey() == null
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -157,7 +157,7 @@ public boolean handle(ServerLoginSuccessPacket packet) {
if (smc.getProtocolVersion().lessThan(ProtocolVersion.MINECRAFT_1_20_2)) {
smc.setActiveSessionHandler(StateRegistry.PLAY, new TransitionSessionHandler(server, serverConn, resultFuture));
} else {
smc.write(new LoginAcknowledgedPacket());
smc.write(LoginAcknowledgedPacket.INSTANCE);
smc.setActiveSessionHandler(StateRegistry.CONFIG, new ConfigSessionHandler(server, serverConn, resultFuture));
ConnectedPlayer player = serverConn.getPlayer();
if (player.getClientSettingsPacket() != null) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -170,26 +170,26 @@ private void startHandshake() {
.orElseGet(() -> registeredServer.getServerInfo().getAddress())
.getHostString();

HandshakePacket handshake = new HandshakePacket();
handshake.setIntent(HandshakeIntent.LOGIN);
handshake.setProtocolVersion(protocolVersion);
String serverAddress;
if (forwardingMode == PlayerInfoForwarding.LEGACY) {
handshake.setServerAddress(createLegacyForwardingAddress());
serverAddress = createLegacyForwardingAddress();
} else if (forwardingMode == PlayerInfoForwarding.BUNGEEGUARD) {
byte[] secret = server.getConfiguration().getForwardingSecret();
handshake.setServerAddress(createBungeeGuardForwardingAddress(secret));
serverAddress = createBungeeGuardForwardingAddress(secret);
} else if (proxyPlayer.getConnection().getType() == ConnectionTypes.LEGACY_FORGE) {
handshake.setServerAddress(playerVhost + HANDSHAKE_HOSTNAME_TOKEN);
serverAddress = playerVhost + HANDSHAKE_HOSTNAME_TOKEN;
} else if (proxyPlayer.getConnection().getType() instanceof ModernForgeConnectionType) {
handshake.setServerAddress(playerVhost + ((ModernForgeConnectionType) proxyPlayer
.getConnection().getType()).getModernToken());
serverAddress = playerVhost + ((ModernForgeConnectionType) proxyPlayer
.getConnection().getType()).getModernToken();
} else {
handshake.setServerAddress(playerVhost);
serverAddress = playerVhost;
}

handshake.setPort(proxyPlayer.getVirtualHost()
int port = proxyPlayer.getVirtualHost()
.orElseGet(() -> registeredServer.getServerInfo().getAddress())
.getPort());
.getPort();

HandshakePacket handshake = new HandshakePacket(protocolVersion, serverAddress, port, HandshakeIntent.LOGIN);
mc.delayedWrite(handshake);

mc.setProtocolVersion(protocolVersion);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -230,10 +230,9 @@ private void completeLoginProtocolPhaseAndInitialize(ConnectedPlayer player) {
return;
}

ServerLoginSuccessPacket success = new ServerLoginSuccessPacket();
success.setUsername(player.getUsername());
success.setProperties(player.getGameProfileProperties());
success.setUuid(player.getUniqueId());
ServerLoginSuccessPacket success = new ServerLoginSuccessPacket(
player.getUniqueId(), player.getUsername(), player.getGameProfileProperties()
);
mcConnection.write(success);

loginState = State.SUCCESS_SENT;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -387,8 +387,8 @@ public boolean handle(PluginMessagePacket packet) {
public boolean handle(ResourcePackResponsePacket packet) {
return player.resourcePackHandler().onResourcePackResponse(
new ResourcePackResponseBundle(packet.getId(),
packet.getHash(),
packet.getStatus()));
packet.hash(),
packet.status()));
}

@Override
Expand Down Expand Up @@ -428,7 +428,7 @@ public boolean handle(ChatAcknowledgementPacket packet) {
@Override
public boolean handle(ServerboundCookieResponsePacket packet) {
server.getEventManager()
.fire(new CookieReceiveEvent(player, packet.getKey(), packet.getPayload()))
.fire(new CookieReceiveEvent(player, packet.key(), packet.payload()))
.thenAcceptAsync(event -> {
if (event.getResult().isAllowed()) {
final VelocityServerConnection serverConnection = player.getConnectedServer();
Expand Down Expand Up @@ -586,10 +586,7 @@ public void handleBackendJoinGame(JoinGamePacket joinGame, VelocityServerConnect
// Remove previous boss bars. These don't get cleared when sending JoinGame (up until 1.20.2),
// thus the need to track them.
for (UUID serverBossBar : serverBossBars) {
BossBarPacket deletePacket = new BossBarPacket();
deletePacket.setUuid(serverBossBar);
deletePacket.setAction(BossBarPacket.REMOVE);
player.getConnection().delayedWrite(deletePacket);
player.getConnection().delayedWrite(BossBarPacket.createRemovePacket(serverBossBar));
}
serverBossBars.clear();
}
Expand All @@ -615,7 +612,7 @@ public void handleBackendJoinGame(JoinGamePacket joinGame, VelocityServerConnect
// Clear any title from the previous server.
if (player.getProtocolVersion().noLessThan(ProtocolVersion.MINECRAFT_1_8)) {
player.getConnection().delayedWrite(
GenericTitlePacket.constructTitlePacket(GenericTitlePacket.ActionType.RESET,
GenericTitlePacket.createClearTitlePacket(GenericTitlePacket.ActionType.RESET,
player.getProtocolVersion()));
}

Expand All @@ -634,14 +631,15 @@ private void doFastClientServerSwitch(JoinGamePacket joinGame) {
// Most notably, by having the client accept the join game packet, we can work around the need
// to perform entity ID rewrites, eliminating potential issues from rewriting packets and
// improving compatibility with mods.
final RespawnPacket respawn = RespawnPacket.fromJoinGame(joinGame);

int dim = joinGame.getDimension();
if (player.getProtocolVersion().lessThan(ProtocolVersion.MINECRAFT_1_16)) {
// Before Minecraft 1.16, we could not switch to the same dimension without sending an
// additional respawn. On older versions of Minecraft this forces the client to perform
// garbage collection which adds additional latency.
joinGame.setDimension(joinGame.getDimension() == 0 ? -1 : 0);
dim = joinGame.getDimension() == 0 ? -1 : 0;
}
final RespawnPacket respawn = RespawnPacket.fromJoinGame(joinGame, dim);

player.getConnection().delayedWrite(joinGame);
player.getConnection().delayedWrite(respawn);
}
Expand All @@ -655,8 +653,7 @@ private void doSafeClientServerSwitch(JoinGamePacket joinGame) {
player.getConnection().delayedWrite(joinGame);

// Send a respawn packet in a different dimension.
final RespawnPacket fakeSwitchPacket = RespawnPacket.fromJoinGame(joinGame);
fakeSwitchPacket.setDimension(joinGame.getDimension() == 0 ? -1 : 0);
final RespawnPacket fakeSwitchPacket = RespawnPacket.fromJoinGame(joinGame, joinGame.getDimension() == 0 ? -1 : 0);
player.getConnection().delayedWrite(fakeSwitchPacket);

// Now send a respawn packet in the correct dimension.
Expand Down Expand Up @@ -728,11 +725,9 @@ private boolean handleCommandTabComplete(TabCompleteRequestPacket packet) {
offers.add(new Offer(offer, tooltip));
}

TabCompleteResponsePacket resp = new TabCompleteResponsePacket();
resp.setTransactionId(packet.getTransactionId());
resp.setStart(startPos + 1);
resp.setLength(packet.getCommand().length() - startPos - 1);
resp.getOffers().addAll(offers);
TabCompleteResponsePacket resp = new TabCompleteResponsePacket(
packet.transactionId(), startPos + 1, packet.getCommand().length() - startPos - 1, offers
);
player.getConnection().write(resp);
}
}, player.getConnection().eventLoop()).exceptionally((ex) -> {
Expand Down Expand Up @@ -778,6 +773,7 @@ private void finishCommandTabComplete(TabCompleteRequestPacket request,
.thenAcceptAsync(offers -> {
boolean legacy =
player.getProtocolVersion().lessThan(ProtocolVersion.MINECRAFT_1_13);
List<Offer> extendedOffers = new ArrayList<>(response.offers());
try {
for (Suggestion suggestion : offers.getList()) {
String offer = suggestion.getText();
Expand All @@ -791,10 +787,10 @@ private void finishCommandTabComplete(TabCompleteRequestPacket request,
} else if (suggestion.getTooltip() != null) {
tooltip = new ComponentHolder(player.getProtocolVersion(), Component.text(suggestion.getTooltip().getString()));
}
response.getOffers().add(new Offer(offer, tooltip));
extendedOffers.add(new Offer(offer, tooltip));
}
response.getOffers().sort(null);
player.getConnection().write(response);
extendedOffers.sort(null);
player.getConnection().write(response.withOffers(extendedOffers));
} catch (Exception e) {
logger.error("Unable to provide tab list completions for {} for command '{}'",
player.getUsername(), command,
Expand All @@ -811,17 +807,17 @@ private void finishCommandTabComplete(TabCompleteRequestPacket request,

private void finishRegularTabComplete(TabCompleteRequestPacket request,
TabCompleteResponsePacket response) {
List<String> offers = new ArrayList<>();
for (Offer offer : response.getOffers()) {
offers.add(offer.getText());
List<String> textOffers = new ArrayList<>();
for (Offer offer : response.offers()) {
textOffers.add(offer.getText());
}
server.getEventManager().fire(new TabCompleteEvent(player, request.getCommand(), offers))
server.getEventManager().fire(new TabCompleteEvent(player, request.getCommand(), textOffers))
.thenAcceptAsync(e -> {
response.getOffers().clear();
List<Offer> newOffers = new ArrayList<>();
for (String s : e.getSuggestions()) {
response.getOffers().add(new Offer(s));
newOffers.add(new Offer(s));
}
player.getConnection().write(response);
player.getConnection().write(response.withOffers(newOffers));
}, player.getConnection().eventLoop()).exceptionally((ex) -> {
logger.error(
"Exception while finishing regular tab completion,"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,25 +38,25 @@ public class ClientSettingsWrapper implements PlayerSettings {

ClientSettingsWrapper(ClientSettingsPacket settings) {
this.settings = settings;
this.parts = new SkinParts((byte) settings.getSkinParts());
this.parts = new SkinParts((byte) settings.skinParts());
}

@Override
public Locale getLocale() {
if (locale == null) {
locale = Locale.forLanguageTag(settings.getLocale().replaceAll("_", "-"));
locale = Locale.forLanguageTag(settings.locale().replaceAll("_", "-"));
}
return locale;
}

@Override
public byte getViewDistance() {
return settings.getViewDistance();
return settings.viewDistance();
}

@Override
public ChatMode getChatMode() {
return switch (settings.getChatVisibility()) {
return switch (settings.chatVisibility()) {
case 1 -> ChatMode.COMMANDS_ONLY;
case 2 -> ChatMode.HIDDEN;
default -> ChatMode.SHOWN;
Expand All @@ -65,7 +65,7 @@ public ChatMode getChatMode() {

@Override
public boolean hasChatColors() {
return settings.isChatColors();
return settings.chatColors();
}

@Override
Expand All @@ -75,22 +75,22 @@ public SkinParts getSkinParts() {

@Override
public MainHand getMainHand() {
return settings.getMainHand() == 1 ? MainHand.RIGHT : MainHand.LEFT;
return settings.mainHand() == 1 ? MainHand.RIGHT : MainHand.LEFT;
}

@Override
public boolean isClientListingAllowed() {
return settings.isClientListingAllowed();
return settings.clientListingAllowed();
}

@Override
public boolean isTextFilteringEnabled() {
return settings.isTextFilteringEnabled();
return settings.textFilteringEnabled();
}

@Override
public ParticleStatus getParticleStatus() {
return switch (settings.getParticleStatus()) {
return switch (settings.particleStatus()) {
case 1 -> ParticleStatus.DECREASED;
case 2 -> ParticleStatus.MINIMAL;
default -> ParticleStatus.ALL;
Expand Down
Loading