Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore: update adventure #1163

Closed
wants to merge 2 commits into from
Closed
Show file tree
Hide file tree
Changes from all 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
3 changes: 1 addition & 2 deletions api/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -61,8 +61,7 @@ tasks {
"https://guava.dev/releases/${libs.guava.get().version}/api/docs/",
"https://google.github.io/guice/api-docs/${libs.guice.get().version}/javadoc/",
"https://docs.oracle.com/en/java/javase/17/docs/api/",
//"https://jd.advntr.dev/api/${libs.adventure.bom.get().version}/",
"https://jd.advntr.dev/api/4.14.0/",
"https://jd.advntr.dev/api/${libs.adventure.bom.get().version}/",
"https://javadoc.io/doc/com.github.ben-manes.caffeine/caffeine"
)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,16 @@
package com.velocitypowered.api.proxy.player;

import java.util.UUID;
import net.kyori.adventure.resource.ResourcePackInfoLike;
import net.kyori.adventure.resource.ResourcePackRequestLike;
import net.kyori.adventure.text.Component;
import org.checkerframework.checker.nullness.qual.Nullable;

/**
* Represents the information for a resource pack to apply that can be sent to the client.
*/
public interface ResourcePackInfo {
@Deprecated
public interface ResourcePackInfo extends ResourcePackRequestLike {

/**
* Gets the id of this resource-pack.
Expand Down
3 changes: 1 addition & 2 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,7 @@ shadow = "com.github.johnrengelman.shadow:8.1.0"
spotless = "com.diffplug.spotless:6.12.0"

[libraries]
# See JD links in velocity-apo when moving to non-snapshot versions
adventure-bom = "net.kyori:adventure-bom:4.15.0-SNAPSHOT"
adventure-bom = "net.kyori:adventure-bom:4.15.0"
adventure-facet = "net.kyori:adventure-platform-facet:4.3.0"
asm = "org.ow2.asm:asm:9.5"
asynchttpclient = "org.asynchttpclient:async-http-client:2.12.3"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,6 @@
import com.velocitypowered.api.proxy.crypto.KeyIdentifiable;
import com.velocitypowered.api.proxy.messages.ChannelIdentifier;
import com.velocitypowered.api.proxy.player.PlayerSettings;
import com.velocitypowered.api.proxy.player.ResourcePackInfo;
import com.velocitypowered.api.proxy.server.RegisteredServer;
import com.velocitypowered.api.util.GameProfile;
import com.velocitypowered.api.util.ModInfo;
Expand All @@ -64,6 +63,7 @@
import com.velocitypowered.proxy.protocol.packet.HeaderAndFooter;
import com.velocitypowered.proxy.protocol.packet.KeepAlive;
import com.velocitypowered.proxy.protocol.packet.PluginMessage;
import com.velocitypowered.proxy.protocol.packet.RemoveResourcePack;
import com.velocitypowered.proxy.protocol.packet.ResourcePackRequest;
import com.velocitypowered.proxy.protocol.packet.chat.ChatQueue;
import com.velocitypowered.proxy.protocol.packet.chat.ChatType;
Expand All @@ -83,6 +83,7 @@
import io.netty.buffer.ByteBufUtil;
import io.netty.buffer.Unpooled;
import java.net.InetSocketAddress;
import java.nio.charset.StandardCharsets;
import java.util.ArrayDeque;
import java.util.Collection;
import java.util.Collections;
Expand All @@ -101,6 +102,7 @@
import net.kyori.adventure.platform.facet.FacetPointers;
import net.kyori.adventure.platform.facet.FacetPointers.Type;
import net.kyori.adventure.pointer.Pointers;
import net.kyori.adventure.resource.ResourcePackInfo;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.format.NamedTextColor;
import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
Expand Down Expand Up @@ -151,7 +153,7 @@ public class ConnectedPlayer implements MinecraftConnectionAssociation, Player,
private final CompletableFuture<Void> teardownFuture = new CompletableFuture<>();
private @MonotonicNonNull List<String> serversToTry = null;
private @MonotonicNonNull Boolean previousResourceResponse;
private final Queue<ResourcePackInfo> outstandingResourcePacks = new ArrayDeque<>();
private final Queue<net.kyori.adventure.resource.ResourcePackRequest> outstandingResourcePacks = new ArrayDeque<>();
private @Nullable ResourcePackInfo pendingResourcePack;
private @Nullable ResourcePackInfo appliedResourcePack;
private final @NotNull Pointers pointers =
Expand Down Expand Up @@ -519,6 +521,31 @@ public void showBossBar(@NonNull BossBar bar) {
}
}

@Override
public void sendResourcePacks(net.kyori.adventure.resource.@NotNull ResourcePackRequest request) {
if (this.getProtocolVersion().compareTo(ProtocolVersion.MINECRAFT_1_8) >= 0) {
Preconditions.checkNotNull(request, "request");
for (final ResourcePackInfo pack : request.packs()) {
this.queueResourcePack(pack);
}
}
}

@Override
public void removeResourcePacks(@NotNull UUID id, @NotNull UUID @NotNull ... others) {
this.connection.write(new RemoveResourcePack(id));
for (final UUID other : others) {
this.connection.write(new RemoveResourcePack(other));
}
// TODO: change attributes
}

@Override
public void clearResourcePacks() {
this.connection.write(new RemoveResourcePack(null));
// TODO: change attributes
}

@Override
public ConnectionRequestBuilder createConnectionRequest(RegisteredServer server) {
return new ConnectionRequestBuilderImpl(server, this.connectedServer);
Expand Down Expand Up @@ -966,26 +993,24 @@ public void sendResourcePack(String url, byte[] hash) {
}

@Override
public void sendResourcePackOffer(ResourcePackInfo packInfo) {
if (this.getProtocolVersion().compareTo(ProtocolVersion.MINECRAFT_1_8) >= 0) {
Preconditions.checkNotNull(packInfo, "packInfo");
queueResourcePack(packInfo);
}
public void sendResourcePackOffer(com.velocitypowered.api.proxy.player.ResourcePackInfo packInfo) {
Preconditions.checkNotNull(packInfo, "packInfo");
this.sendResourcePacks(packInfo.asResourcePackRequest());
}

/**
* Queues a resource-pack for sending to the player and sends it immediately if the queue is
* empty.
*/
public void queueResourcePack(ResourcePackInfo info) {
outstandingResourcePacks.add(info);
public void queueResourcePack(net.kyori.adventure.resource.ResourcePackRequest request) {
outstandingResourcePacks.add(request);
if (outstandingResourcePacks.size() == 1) {
tickResourcePackQueue();
}
}

private void tickResourcePackQueue() {
ResourcePackInfo queued = outstandingResourcePacks.peek();
net.kyori.adventure.resource.ResourcePackRequest queued = outstandingResourcePacks.peek();

if (queued != null) {
// Check if the player declined a resource pack once already
Expand All @@ -994,7 +1019,7 @@ private void tickResourcePackQueue() {
// Unless its 1.17+ and forced it will come back denied anyway
while (!outstandingResourcePacks.isEmpty()) {
queued = outstandingResourcePacks.peek();
if (queued.getShouldForce() && getProtocolVersion()
if (queued.required() && getProtocolVersion()
.compareTo(ProtocolVersion.MINECRAFT_1_17) >= 0) {
break;
}
Expand All @@ -1015,9 +1040,9 @@ private void tickResourcePackQueue() {
} else {
request.setHash("");
}
request.setRequired(queued.getShouldForce());
request.setPrompt(queued.getPrompt() == null ? null :
new ComponentHolder(getProtocolVersion(), queued.getPrompt()));
request.setRequired(queued.required());
request.setPrompt(queued.prompt() == null ? null :
new ComponentHolder(getProtocolVersion(), queued.prompt()));

connection.write(request);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,14 @@

import com.google.common.base.Preconditions;
import com.velocitypowered.api.proxy.player.ResourcePackInfo;
import java.net.URI;
import java.nio.charset.StandardCharsets;
import java.util.Arrays;
import java.util.UUID;
import net.kyori.adventure.resource.ResourcePackRequest;
import net.kyori.adventure.text.Component;
import org.checkerframework.checker.nullness.qual.Nullable;
import org.jetbrains.annotations.NotNull;

/**
* Implements {@link ResourcePackInfo}.
Expand Down Expand Up @@ -105,6 +109,19 @@ public Builder asBuilder(String newUrl) {
.setPrompt(prompt);
}

@Override
public @NotNull ResourcePackRequest asResourcePackRequest() {
return ResourcePackRequest.resourcePackRequest()
.packs(net.kyori.adventure.resource.ResourcePackInfo.resourcePackInfo()
.id(this.id)
.uri(URI.create(this.url))
.hash(Arrays.toString(this.hash))
.build())
.required(this.shouldForce)
.prompt(this.prompt)
.build();
}

/**
* Implements the builder for {@link ResourcePackInfo} instances.
*/
Expand Down