Skip to content

Commit ebf59ba

Browse files
committed
Merge branch 'dev/3.0.0' of https://github.com/WiIIiam278/Velocity into merge/dev3.0.0
# Conflicts: # gradle/libs.versions.toml # proxy/src/main/java/com/velocitypowered/proxy/connection/client/ClientPlaySessionHandler.java
2 parents a8e1c87 + b71d9f4 commit ebf59ba

File tree

2 files changed

+51
-76
lines changed

2 files changed

+51
-76
lines changed

gradle/libs.versions.toml

Lines changed: 28 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,28 @@
11
[versions]
22
configurate3 = "3.7.3"
3-
configurate4 = "4.2.0"
3+
configurate4 = "4.1.2"
44
flare = "2.0.1"
5-
log4j = "2.25.3"
6-
netty = "4.2.9.Final"
5+
log4j = "2.24.3"
6+
netty = "4.2.3.Final"
77

88
[plugins]
9-
fill = "io.papermc.fill.gradle:1.0.10"
10-
shadow = "com.gradleup.shadow:9.3.1"
11-
spotless = "com.diffplug.spotless:8.2.1"
9+
fill = "io.papermc.fill.gradle:1.0.3"
10+
indra-publishing = "net.kyori.indra.publishing:2.0.6"
11+
shadow = "com.gradleup.shadow:8.3.6"
12+
spotless = "com.diffplug.spotless:6.25.0"
1213

1314
[libraries]
14-
adventure-bom = "net.kyori:adventure-bom:4.26.1"
15-
adventure-text-serializer-json-legacy-impl = "net.kyori:adventure-text-serializer-json-legacy-impl:4.26.1"
16-
adventure-facet = "net.kyori:adventure-platform-facet:4.4.1"
17-
asm = "org.ow2.asm:asm:9.9.1"
18-
auto-service = "com.google.auto.service:auto-service:1.1.1"
19-
auto-service-annotations = "com.google.auto.service:auto-service-annotations:1.1.1"
15+
adventure-bom = "net.kyori:adventure-bom:4.23.0"
16+
adventure-text-serializer-json-legacy-impl = "net.kyori:adventure-text-serializer-json-legacy-impl:4.23.0"
17+
adventure-facet = "net.kyori:adventure-platform-facet:4.3.4"
18+
asm = "org.ow2.asm:asm:9.8"
19+
auto-service = "com.google.auto.service:auto-service:1.0.1"
20+
auto-service-annotations = "com.google.auto.service:auto-service-annotations:1.0.1"
2021
brigadier = "com.velocitypowered:velocity-brigadier:1.0.0-SNAPSHOT"
21-
bstats = "org.bstats:bstats-base:3.1.0"
22-
caffeine = "com.github.ben-manes.caffeine:caffeine:3.2.3"
23-
checker-qual = "org.checkerframework:checker-qual:3.53.0"
24-
checkstyle = "com.puppycrawl.tools:checkstyle:13.0.0"
22+
bstats = "org.bstats:bstats-base:3.0.3"
23+
caffeine = "com.github.ben-manes.caffeine:caffeine:3.1.8"
24+
checker-qual = "org.checkerframework:checker-qual:3.42.0"
25+
checkstyle = "com.puppycrawl.tools:checkstyle:10.9.3"
2526
completablefutures = "com.spotify:completable-futures:0.3.6"
2627
configurate3-hocon = { module = "org.spongepowered:configurate-hocon", version.ref = "configurate3" }
2728
configurate3-yaml = { module = "org.spongepowered:configurate-yaml", version.ref = "configurate3" }
@@ -30,35 +31,35 @@ configurate4-hocon = { module = "org.spongepowered:configurate-hocon", version.r
3031
configurate4-yaml = { module = "org.spongepowered:configurate-yaml", version.ref = "configurate4" }
3132
configurate4-gson = { module = "org.spongepowered:configurate-gson", version.ref = "configurate4" }
3233
disruptor = "com.lmax:disruptor:4.0.0"
33-
fastutil = "it.unimi.dsi:fastutil:8.5.18"
34+
fastutil = "it.unimi.dsi:fastutil:8.5.15"
3435
flare-core = { module = "space.vectrix.flare:flare", version.ref = "flare" }
3536
flare-fastutil = { module = "space.vectrix.flare:flare-fastutil", version.ref = "flare" }
36-
jline = "org.jline:jline-terminal-jansi:3.30.6"
37+
jline = "org.jline:jline-terminal-jansi:3.30.2"
3738
jopt = "net.sf.jopt-simple:jopt-simple:5.0.4"
38-
junit = "org.junit.jupiter:junit-jupiter:6.0.2"
39-
jspecify = "org.jspecify:jspecify:1.0.0"
39+
junit = "org.junit.jupiter:junit-jupiter:5.10.2"
40+
jspecify = "org.jspecify:jspecify:0.3.0"
4041
kyori-ansi = "net.kyori:ansi:1.1.1"
41-
guava = "com.google.guava:guava:33.5.0-jre"
42-
gson = "com.google.code.gson:gson:2.13.2"
43-
guice = "com.google.inject:guice:7.0.0"
42+
guava = "com.google.guava:guava:25.1-jre"
43+
gson = "com.google.code.gson:gson:2.10.1"
44+
guice = "com.google.inject:guice:6.0.0"
4445
lmbda = "org.lanternpowered:lmbda:2.0.0"
4546
log4j-api = { module = "org.apache.logging.log4j:log4j-api", version.ref = "log4j" }
4647
log4j-core = { module = "org.apache.logging.log4j:log4j-core", version.ref = "log4j" }
4748
log4j-slf4j-impl = { module = "org.apache.logging.log4j:log4j-slf4j2-impl", version.ref = "log4j" }
4849
log4j-iostreams = { module = "org.apache.logging.log4j:log4j-iostreams", version.ref = "log4j" }
4950
log4j-jul = { module = "org.apache.logging.log4j:log4j-jul", version.ref = "log4j" }
50-
mockito = "org.mockito:mockito-core:5.21.0"
51+
mockito = "org.mockito:mockito-core:5.10.0"
5152
netty-codec = { module = "io.netty:netty-codec", version.ref = "netty" }
5253
netty-codec-haproxy = { module = "io.netty:netty-codec-haproxy", version.ref = "netty" }
5354
netty-codec-http = { module = "io.netty:netty-codec-http", version.ref = "netty" }
5455
netty-handler = { module = "io.netty:netty-handler", version.ref = "netty" }
5556
netty-transport-native-epoll = { module = "io.netty:netty-transport-native-epoll", version.ref = "netty" }
5657
netty-transport-native-kqueue = { module = "io.netty:netty-transport-native-kqueue", version.ref = "netty" }
5758
netty-transport-native-iouring = { module = "io.netty:netty-transport-native-io_uring", version.ref = "netty" }
58-
nightconfig = "com.electronwill.night-config:toml:3.8.3"
59+
nightconfig = "com.electronwill.night-config:toml:3.6.7"
5960
slf4j = "org.slf4j:slf4j-api:2.0.17"
60-
snakeyaml = "org.yaml:snakeyaml:2.5"
61-
spotbugs-annotations = "com.github.spotbugs:spotbugs-annotations:4.9.8"
61+
snakeyaml = "org.yaml:snakeyaml:1.33"
62+
spotbugs-annotations = "com.github.spotbugs:spotbugs-annotations:4.7.3"
6263
terminalconsoleappender = "net.minecrell:terminalconsoleappender:1.3.0"
6364

6465
[bundles]

proxy/src/main/java/com/velocitypowered/proxy/connection/client/ClientPlaySessionHandler.java

Lines changed: 23 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424
import com.velocitypowered.api.event.connection.PluginMessageEvent;
2525
import com.velocitypowered.api.event.player.CookieReceiveEvent;
2626
import com.velocitypowered.api.event.player.PlayerChannelRegisterEvent;
27-
import com.velocitypowered.api.event.player.PlayerChannelUnregisterEvent;
2827
import com.velocitypowered.api.event.player.PlayerClientBrandEvent;
2928
import com.velocitypowered.api.event.player.TabCompleteEvent;
3029
import com.velocitypowered.api.event.player.configuration.PlayerEnteredConfigurationEvent;
@@ -319,12 +318,8 @@ public boolean handle(PluginMessagePacket packet) {
319318
new PlayerChannelRegisterEvent(player, ImmutableList.copyOf(channels)));
320319
backendConn.write(packet.retain());
321320
} else if (PluginMessageUtil.isUnregister(packet)) {
322-
List<ChannelIdentifier> channels =
323-
PluginMessageUtil.getChannels(0, packet, this.player.getProtocolVersion());
324-
player.getClientsideChannels().removeAll(channels);
325-
server.getEventManager()
326-
.fireAndForget(
327-
new PlayerChannelUnregisterEvent(player, ImmutableList.copyOf(channels)));
321+
player.getClientsideChannels()
322+
.removeAll(PluginMessageUtil.getChannels(0, packet, this.player.getProtocolVersion()));
328323
backendConn.write(packet.retain());
329324
} else if (PluginMessageUtil.isMcBrand(packet)) {
330325
String brand = PluginMessageUtil.readBrandMessage(packet.content());
@@ -540,13 +535,9 @@ public CompletableFuture<Void> doSwitch() {
540535

541536
// Config state clears everything in the client. No need to clear later.
542537
spawned = false;
538+
serverBossBars.clear();
543539
player.clearPlayerListHeaderAndFooterSilent();
544540
player.getTabList().clearAllSilent();
545-
if (player.getProtocolVersion().noLessThan(ProtocolVersion.MINECRAFT_1_20_2)) {
546-
player.getBossBarManager().dropPackets();
547-
} else {
548-
serverBossBars.clear();
549-
}
550541
}
551542

552543
player.switchToConfigState();
@@ -584,20 +575,15 @@ public void handleBackendJoinGame(JoinGamePacket joinGame, VelocityServerConnect
584575
}
585576
}
586577

587-
destination.setEntityId(joinGame.getEntityId()); // used for sound api
588-
if (player.getProtocolVersion().noLessThan(ProtocolVersion.MINECRAFT_1_20_2)) {
589-
player.getBossBarManager().sendBossBars();
590-
} else {
591-
// Remove previous boss bars. These don't get cleared when sending JoinGame (up until 1.20.2),
592-
// thus the need to track them.
593-
for (UUID serverBossBar : serverBossBars) {
594-
BossBarPacket deletePacket = new BossBarPacket();
595-
deletePacket.setUuid(serverBossBar);
596-
deletePacket.setAction(BossBarPacket.REMOVE);
597-
player.getConnection().delayedWrite(deletePacket);
598-
}
599-
serverBossBars.clear();
578+
// Remove previous boss bars. These don't get cleared when sending JoinGame, thus the need to
579+
// track them.
580+
for (UUID serverBossBar : serverBossBars) {
581+
BossBarPacket deletePacket = new BossBarPacket();
582+
deletePacket.setUuid(serverBossBar);
583+
deletePacket.setAction(BossBarPacket.REMOVE);
584+
player.getConnection().delayedWrite(deletePacket);
600585
}
586+
serverBossBars.clear();
601587

602588
// Tell the server about the proxy's plugin message channels.
603589
ProtocolVersion serverVersion = serverMc.getProtocolVersion();
@@ -708,35 +694,23 @@ private boolean handleCommandTabComplete(TabCompleteRequestPacket packet) {
708694
return;
709695
}
710696

711-
int startPos = -1;
712-
for (var suggestion : suggestions.getList()) {
713-
if (startPos == -1 || startPos > suggestion.getRange().getStart()) {
714-
startPos = suggestion.getRange().getStart();
697+
List<Offer> offers = new ArrayList<>();
698+
for (Suggestion suggestion : suggestions.getList()) {
699+
String offer = suggestion.getText();
700+
ComponentHolder tooltip = null;
701+
if (suggestion.getTooltip() instanceof ComponentLike componentLike) {
702+
tooltip = new ComponentHolder(player.getProtocolVersion(), componentLike.asComponent());
703+
} else if (suggestion.getTooltip() != null) {
704+
tooltip = new ComponentHolder(player.getProtocolVersion(), Component.text(suggestion.getTooltip().getString()));
715705
}
706+
offers.add(new Offer(offer, tooltip));
716707
}
717-
708+
int startPos = packet.getCommand().lastIndexOf(' ') + 1;
718709
if (startPos > 0) {
719-
List<Offer> offers = new ArrayList<>();
720-
for (Suggestion suggestion : suggestions.getList()) {
721-
String offer;
722-
if (suggestion.getRange().getStart() == startPos) {
723-
offer = suggestion.getText();
724-
} else {
725-
offer = command.substring(startPos, suggestion.getRange().getStart()) + suggestion.getText();
726-
}
727-
ComponentHolder tooltip = null;
728-
if (suggestion.getTooltip() instanceof ComponentLike componentLike) {
729-
tooltip = new ComponentHolder(player.getProtocolVersion(), componentLike.asComponent());
730-
} else if (suggestion.getTooltip() != null) {
731-
tooltip = new ComponentHolder(player.getProtocolVersion(), Component.text(suggestion.getTooltip().getString()));
732-
}
733-
offers.add(new Offer(offer, tooltip));
734-
}
735-
736710
TabCompleteResponsePacket resp = new TabCompleteResponsePacket();
737711
resp.setTransactionId(packet.getTransactionId());
738-
resp.setStart(startPos + 1);
739-
resp.setLength(packet.getCommand().length() - startPos - 1);
712+
resp.setStart(startPos);
713+
resp.setLength(packet.getCommand().length() - startPos);
740714
resp.getOffers().addAll(offers);
741715
player.getConnection().write(resp);
742716
}

0 commit comments

Comments
 (0)