Skip to content

Commit 58ec132

Browse files
Fixes #481 (#487)
* Fixes #481 * Update some javadocs * Just in case, you never know --------- Co-authored-by: Aizistral <admin@aizistral.com>
1 parent 0400e5f commit 58ec132

File tree

5 files changed

+32
-110
lines changed

5 files changed

+32
-110
lines changed

forge/src/main/java/com/aizistral/nochatreports/forge/mixins/client/MixinServerStatusPinger$1.java

Lines changed: 0 additions & 52 deletions
This file was deleted.

forge/src/main/resources/mixins/forge/nochatreports-forge.mixins.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,7 @@
77
"client": [
88
"client.MixinClientConnection",
99
"client.MixinClientHandshakePacketListenerImpl",
10-
"client.MixinClientPacketListener",
11-
"client.MixinServerStatusPinger$1"
10+
"client.MixinClientPacketListener"
1211
],
1312
"server": [],
1413
"injectors": {

neoforge/src/main/java/com/aizistral/nochatreports/neoforge/mixins/client/MixinServerStatusPinger$1.java

Lines changed: 0 additions & 43 deletions
This file was deleted.

neoforge/src/main/resources/mixins/neoforge/nochatreports-neoforge.mixins.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,7 @@
77
"client": [
88
"client.MixinClientConnection",
99
"client.MixinClientHandshakePacketListenerImpl",
10-
"client.MixinClientPacketListener",
11-
"client.MixinServerStatusPinger$1"
10+
"client.MixinClientPacketListener"
1211
],
1312
"server": [],
1413
"injectors": {

src/main/java/com/aizistral/nochatreports/common/mixins/client/MixinServerStatusPinger$1.java

Lines changed: 30 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
11
package com.aizistral.nochatreports.common.mixins.client;
22

3-
import java.lang.reflect.Field;
3+
import java.net.InetSocketAddress;
44

5+
import net.minecraft.client.multiplayer.ServerStatusPinger;
6+
import net.minecraft.client.multiplayer.resolver.ServerAddress;
7+
import net.minecraft.network.Connection;
58
import org.spongepowered.asm.mixin.Mixin;
9+
import org.spongepowered.asm.mixin.Unique;
610
import org.spongepowered.asm.mixin.injection.At;
711
import org.spongepowered.asm.mixin.injection.Inject;
812
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
@@ -12,28 +16,43 @@
1216
import com.aizistral.nochatreports.common.core.ServerDataExtension;
1317
import com.aizistral.nochatreports.common.platform.extensions.ServerPingerExtension;
1418

15-
import net.minecraft.client.Minecraft;
1619
import net.minecraft.client.multiplayer.ServerData;
1720
import net.minecraft.network.protocol.status.ClientboundStatusResponsePacket;
1821
import net.minecraft.network.protocol.status.ServerStatus;
1922

23+
24+
/**
25+
* This one ensures "preventsChatReports" property is transferred from {@link ServerStatus} to
26+
* {@link ServerData} when handling status response.
27+
* @author fxmorin (original implementation)
28+
* @author Aizistral (current version)
29+
* @author pietro-lopes (fixed https://github.com/Aizistral-Studios/No-Chat-Reports/issues/481)
30+
*/
31+
2032
@Mixin(targets = "net/minecraft/client/multiplayer/ServerStatusPinger$1")
2133
public abstract class MixinServerStatusPinger$1 implements ServerPingerExtension {
2234

23-
/**
24-
* @reason Ensure "preventsChatReports" property is transferred from {@link ServerStatus} to
25-
* {@link ServerData} when handling status response.
26-
* @author fxmorin (original implementation)
27-
* @author Aizistral (current version)
28-
*/
35+
@Unique
36+
private ServerDataExtension nochatreports$serverData;
37+
38+
@Inject(method = "<init>", at = @At("RETURN"))
39+
private void captureServerData(ServerStatusPinger serverStatusPinger, Connection connection, ServerData serverData, Runnable runnable, Runnable runnable2, InetSocketAddress inetSocketAddress, ServerAddress serverAddress, CallbackInfo ci){
40+
this.nochatreports$serverData = (ServerDataExtension) serverData;
41+
}
2942

3043
@Inject(method = "handleStatusResponse(Lnet/minecraft/network/protocol/status/ClientboundStatusResponsePacket;)V",
3144
at = @At(value = "INVOKE", target = "Lnet/minecraft/network/protocol/status/ServerStatus;"
32-
+ "description()Lnet/minecraft/network/chat/Component;",
33-
ordinal = 0, shift = At.Shift.BEFORE))
45+
+ "description()Lnet/minecraft/network/chat/Component;"))
3446
private void getNoChatReports(ClientboundStatusResponsePacket packet, CallbackInfo info) {
3547
boolean preventsReports = ((ServerDataExtension) (Object) packet.status()).preventsChatReports();
36-
((ServerDataExtension) this.getServerData()).setPreventsChatReports(preventsReports);
48+
49+
if (this.nochatreports$serverData == null) {
50+
NCRCore.LOGGER.error("Failed to capture ServerData instance in MixinServerStatusPinger$1!");
51+
NCRCore.LOGGER.catching(new IllegalStateException());
52+
return;
53+
}
54+
55+
this.nochatreports$serverData.setPreventsChatReports(preventsReports);
3756

3857
if (NCRConfig.getCommon().enableDebugLog()) {
3958
NCRCore.LOGGER.info("Received status response packet from server, preventsChatReports: {}",

0 commit comments

Comments
 (0)