Skip to content

Commit 0b0344b

Browse files
committed
Refactor client version handling and improve ViaVersion support
Centralized client version retrieval in PlayerData to improve consistency and added support for ViaVersion integration. Updated multiple checks to use PlayerData methods instead of direct access, ensuring improved maintainability. Incremented project version to 1.5.3.
1 parent 7dc47e7 commit 0b0344b

File tree

7 files changed

+35
-16
lines changed

7 files changed

+35
-16
lines changed

src/main/java/de/feelix/sierra/Sierra.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import de.feelix.sierraapi.events.EventBus;
1717
import de.feelix.sierraapi.server.SierraServer;
1818
import de.feelix.sierraapi.user.UserRepository;
19+
import io.github.retrooper.packetevents.util.viaversion.ViaVersionUtil;
1920
import lombok.Getter;
2021
import lombok.Setter;
2122
import org.bukkit.plugin.java.JavaPlugin;
@@ -147,6 +148,8 @@ public void onEnable() {
147148
setPrefix();
148149
initManager.start();
149150

151+
ViaVersionUtil.checkIfViaIsPresent();
152+
150153
SierraApiAccessor.setSierraApiInstance(this);
151154
this.getLogger().info("API is ready");
152155
LoaderAPI.triggerCallbacks();
@@ -208,4 +211,4 @@ public EventBus eventBus() {
208211
public SierraServer server() {
209212
return sierraServer;
210213
}
211-
}
214+
}

src/main/java/de/feelix/sierra/check/impl/frequency/FrequencyDetection.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ private void handleFlyingDelay(PacketReceiveEvent event, PlayerData data) {
114114
return;
115115
}
116116

117-
if(!event.getUser().getClientVersion().isOlderThan(ClientVersion.V_1_9)) {
117+
if(!data.getClientVersion().isOlderThan(ClientVersion.V_1_9)) {
118118
return;
119119
}
120120

src/main/java/de/feelix/sierra/check/impl/post/PostCheck.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,7 @@ public PostCheck(PlayerData playerData) {
4242
private boolean hasSentFlyingPacket = false;
4343

4444
private void handleFlyingPacket(PacketReceiveEvent event) {
45-
if (!flags.isEmpty() && configEngine().config().getBoolean("prevent-post-packets", true) && event.getUser()
46-
.getClientVersion()
47-
.isOlderThan(ClientVersion.V_1_9)) {
45+
if (!flags.isEmpty() && configEngine().config().getBoolean("prevent-post-packets", true)) {
4846

4947
// Okay, the user might be cheating, let's double check
5048
// 1.8 clients have the idle packet, and this shouldn't false on 1.8 clients
@@ -158,4 +156,4 @@ public void handle(PacketSendEvent event, PlayerData playerData) {
158156
}
159157
}
160158
}
161-
}
159+
}

src/main/java/de/feelix/sierra/check/impl/protocol/ProtocolValidation.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -530,7 +530,7 @@ private void checkBlockPlacement(WrapperPlayClientPlayerBlockPlacement wrapper,
530530
}
531531

532532
boolean isSequenceNegative = wrapper.getSequence() < 0;
533-
boolean isNewerThanV119 = event.getUser().getClientVersion().isNewerThanOrEquals(ClientVersion.V_1_19);
533+
boolean isNewerThanV119 = playerData.getClientVersion().isNewerThanOrEquals(ClientVersion.V_1_19);
534534
ServerVersion currentVersion = PacketEvents.getAPI().getServerManager().getVersion();
535535
boolean isVersionV119OrNewer = currentVersion.isNewerThanOrEquals(ServerVersion.V_1_19);
536536

@@ -640,7 +640,7 @@ private void checkNameItem(WrapperPlayClientNameItem wrapper, PacketReceiveEvent
640640

641641
private void handlePlayerDigging(PacketReceiveEvent event, PlayerData playerData) {
642642

643-
ClientVersion playerVersion = event.getUser().getClientVersion();
643+
ClientVersion playerVersion = playerData.getClientVersion();
644644
boolean isClientVersion19OrNewer = playerVersion.isNewerThanOrEquals(ClientVersion.V_1_19);
645645

646646
ServerVersion currentVersion = PacketEvents.getAPI().getServerManager().getVersion();
@@ -657,7 +657,7 @@ private void handlePlayerDigging(PacketReceiveEvent event, PlayerData playerData
657657

658658
private void checkPlayerDigging(WrapperPlayClientPlayerDigging dig, PacketReceiveEvent event) {
659659
boolean isSequenceNegative = dig.getSequence() < 0;
660-
boolean isNewerVersion = event.getUser().getClientVersion().isNewerThanOrEquals(ClientVersion.V_1_19);
660+
boolean isNewerVersion = playerData.getClientVersion().isNewerThanOrEquals(ClientVersion.V_1_19);
661661
ServerVersion currentVersion = PacketEvents.getAPI().getServerManager().getVersion();
662662
boolean isVersion19OrNewer = currentVersion.isNewerThanOrEquals(ServerVersion.V_1_19);
663663

@@ -671,7 +671,7 @@ private void checkPlayerDigging(WrapperPlayClientPlayerDigging dig, PacketReceiv
671671
}
672672

673673
private void handleUseItem(PacketReceiveEvent event, PlayerData playerData) {
674-
ClientVersion playerVersion = event.getUser().getClientVersion();
674+
ClientVersion playerVersion = playerData.getClientVersion();
675675
boolean isClientVersionAtLeastV1_19 = playerVersion.isNewerThanOrEquals(ClientVersion.V_1_19);
676676

677677
ServerVersion currentVersion = PacketEvents.getAPI().getServerManager().getVersion();

src/main/java/de/feelix/sierra/listener/PacketReceiveListener.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,10 +48,6 @@ public void onPacketReceive(PacketReceiveEvent event) {
4848

4949
playerData.getTimingProcessor().getPacketReceiveTask().prepare();
5050

51-
if (playerData.getClientVersion() == null) {
52-
playerData.setClientVersion(event.getUser().getClientVersion());
53-
}
54-
5551
playerData.getTransactionProcessor().handleTransactionClient(event);
5652

5753
handleLocale(event, playerData);

src/main/java/de/feelix/sierra/manager/storage/PlayerData.java

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package de.feelix.sierra.manager.storage;
22

3+
import com.github.retrooper.packetevents.PacketEvents;
34
import com.github.retrooper.packetevents.event.ProtocolPacketEvent;
45
import com.github.retrooper.packetevents.protocol.player.ClientVersion;
56
import com.github.retrooper.packetevents.protocol.player.GameMode;
@@ -15,6 +16,7 @@
1516
import de.feelix.sierraapi.timing.TimingHandler;
1617
import de.feelix.sierraapi.user.settings.AlertSettings;
1718
import io.github.retrooper.packetevents.util.folia.FoliaScheduler;
19+
import io.github.retrooper.packetevents.util.viaversion.ViaVersionUtil;
1820
import lombok.Data;
1921
import de.feelix.sierraapi.check.CheckRepository;
2022
import de.feelix.sierraapi.user.impl.SierraUser;
@@ -76,6 +78,26 @@ public void pollData(Player bukkitPlayer) {
7678
sendTransaction();
7779
}
7880

81+
public ClientVersion getClientVersion() {
82+
// Use ViaVersion cause its an early injector
83+
if (ViaVersionUtil.getViaVersionAccessor() != null) {
84+
this.clientVersion = ClientVersion.getById(ViaVersionUtil.getViaVersionAccessor().getProtocolVersion(user));
85+
return this.clientVersion;
86+
}
87+
88+
if (this.clientVersion == null) {
89+
// First use players own sent client version
90+
this.clientVersion= user.getClientVersion();
91+
92+
// If players version is still null use server version as client version
93+
if (this.clientVersion == null) {
94+
this.clientVersion = ClientVersion.getById(
95+
PacketEvents.getAPI().getServerManager().getVersion().getProtocolVersion());
96+
}
97+
}
98+
return this.clientVersion;
99+
}
100+
79101
public void sendTransaction() {
80102
this.transactionProcessor.sendTransaction(true);
81103
}
@@ -167,7 +189,7 @@ public long existSince() {
167189

168190
@Override
169191
public String version() {
170-
return user.getClientVersion().name().replace("V_", "").replace("_", ".");
192+
return getClientVersion().name().replace("V_", "").replace("_", ".");
171193
}
172194

173195
@Override

src/main/resources/plugin.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name: Sierra
2-
version: '1.5.2'
2+
version: '1.5.3'
33
author: Feelix
44
main: de.feelix.sierra.Sierra
55
description: Packet Analysis Tool for the Minecraft Protocol

0 commit comments

Comments
 (0)