Skip to content

Commit 58398ec

Browse files
committed
1.17+ transaction fixes
1 parent db122ad commit 58398ec

9 files changed

Lines changed: 83 additions & 23 deletions

File tree

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ ViaForgePlus will not support >= 1.21 due to ViaVersion dropped support Java 8 a
1212
- 1.20.4, 1.20.5, 1.20.6 Support
1313
- Hypixel Connection Fix
1414
- Block Break and Place Sound Fix
15+
- 1.17+ Transaction Packet Fix
1516
- 1.16+ Drop Item Swing Packet
1617
- 1.7.x breaking blocks while using items
1718
- 1.9+ Attack Packet Order Fix

build.gradle

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -59,9 +59,9 @@ dependencies {
5959
exclude module: "slf4j-api"
6060
}
6161

62-
include "com.viaversion:viaversion:${project.viaversion_version}"
63-
include "com.viaversion:viabackwards:${project.viabackwards_version}"
64-
include "com.viaversion:viarewind:${project.viarewind_version}"
62+
include "com.viaversion:viaversion-common:${project.viaversion_version}"
63+
include "com.viaversion:viabackwards-common:${project.viabackwards_version}"
64+
include "com.viaversion:viarewind-common:${project.viarewind_version}"
6565
include ("net.raphimc:ViaLegacy:${project.vialegacy_version}") {
6666
exclude group: "com.google.code.gson", module: "gson"
6767
}

gradle.properties

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ snake_yml_version=2.2
2020
slf4j_version=2.0.12
2121

2222
viaversion_version=4.10.1-SNAPSHOT
23-
viabackwards_version=4.10.0
24-
viarewind_version=3.1.0
23+
viabackwards_version=4.10.1-SNAPSHOT
24+
viarewind_version=3.1.1-SNAPSHOT
2525
vialoader_version=2.2.14-SNAPSHOT
2626
vialegacy_version=2.2.23-SNAPSHOT

src/main/java/net/aspw/viaforgeplus/ProtocolInject.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import net.aspw.viaforgeplus.network.APIConnecter
1010

1111
object ProtocolInject {
1212

13-
const val modVersion = "1.0.2"
13+
const val modVersion = "1.0.3"
1414

1515
lateinit var eventManager: EventManager
1616

src/main/java/net/aspw/viaforgeplus/api/ProtocolFixer.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,10 +39,6 @@ public static boolean newerThanOrEqualsTo1_9() {
3939
return ProtocolBase.getManager().getTargetVersion().newerThanOrEqualTo(ProtocolVersion.v1_9) && !MinecraftInstance.mc.isIntegratedServerRunning();
4040
}
4141

42-
public static boolean newerThanOrEqualsTo1_10() {
43-
return ProtocolBase.getManager().getTargetVersion().newerThanOrEqualTo(ProtocolVersion.v1_10) && !MinecraftInstance.mc.isIntegratedServerRunning();
44-
}
45-
4642
public static boolean newerThanOrEqualsTo1_13() {
4743
return ProtocolBase.getManager().getTargetVersion().newerThanOrEqualTo(ProtocolVersion.v1_13) && !MinecraftInstance.mc.isIntegratedServerRunning();
4844
}
@@ -58,4 +54,8 @@ public static boolean newerThanOrEqualsTo1_14() {
5854
public static boolean newerThanOrEqualsTo1_16() {
5955
return ProtocolBase.getManager().getTargetVersion().newerThanOrEqualTo(ProtocolVersion.v1_14) && !MinecraftInstance.mc.isIntegratedServerRunning();
6056
}
57+
58+
public static boolean newerThanOrEqualsTo1_17() {
59+
return ProtocolBase.getManager().getTargetVersion().newerThanOrEqualTo(ProtocolVersion.v1_17) && !MinecraftInstance.mc.isIntegratedServerRunning();
60+
}
6161
}

src/main/java/net/aspw/viaforgeplus/injection/forge/mixins/packets/MixinC00Handshake.java renamed to src/main/java/net/aspw/viaforgeplus/injection/forge/mixins/packets/client/MixinC00Handshake.java

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,14 @@
1-
package net.aspw.viaforgeplus.injection.forge.mixins.packets;
1+
package net.aspw.viaforgeplus.injection.forge.mixins.packets.client;
22

33
import net.aspw.viaforgeplus.network.MinecraftInstance;
4-
import net.minecraft.network.EnumConnectionState;
54
import net.minecraft.network.handshake.client.C00Handshake;
65
import org.spongepowered.asm.mixin.Mixin;
7-
import org.spongepowered.asm.mixin.Shadow;
86
import org.spongepowered.asm.mixin.injection.Constant;
97
import org.spongepowered.asm.mixin.injection.ModifyConstant;
108

119
@Mixin(C00Handshake.class)
1210
public class MixinC00Handshake {
1311

14-
@Shadow
15-
public int port;
16-
@Shadow
17-
public String ip;
18-
@Shadow
19-
private int protocolVersion;
20-
@Shadow
21-
private EnumConnectionState requestedState;
22-
2312
@ModifyConstant(method = "writePacketData", constant = @Constant(stringValue = "\u0000FML\u0000"))
2413
private String connectionFixes(String constant) {
2514
return !MinecraftInstance.mc.isIntegratedServerRunning() ? "" : "\u0000FML\u0000";
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package net.aspw.viaforgeplus.injection.forge.mixins.packets.client;
2+
3+
import net.aspw.viaforgeplus.api.ProtocolFixer;
4+
import net.minecraft.network.PacketBuffer;
5+
import net.minecraft.network.play.client.C0FPacketConfirmTransaction;
6+
import org.spongepowered.asm.mixin.Mixin;
7+
import org.spongepowered.asm.mixin.Overwrite;
8+
import org.spongepowered.asm.mixin.Shadow;
9+
10+
@Mixin(C0FPacketConfirmTransaction.class)
11+
public class MixinC0FPacketConfirmTransaction {
12+
13+
@Shadow
14+
private int windowId;
15+
@Shadow
16+
private short uid;
17+
@Shadow
18+
private boolean accepted;
19+
20+
/**
21+
* @author As_pw
22+
* @reason 1.17+ Transaction Fix
23+
*/
24+
@Overwrite
25+
public void writePacketData(PacketBuffer buf) {
26+
if (ProtocolFixer.newerThanOrEqualsTo1_17())
27+
buf.writeInt(this.windowId);
28+
else {
29+
buf.writeByte(this.windowId);
30+
buf.writeShort(this.uid);
31+
buf.writeByte(this.accepted ? 1 : 0);
32+
}
33+
}
34+
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package net.aspw.viaforgeplus.injection.forge.mixins.packets.server;
2+
3+
import net.aspw.viaforgeplus.api.ProtocolFixer;
4+
import net.minecraft.network.PacketBuffer;
5+
import net.minecraft.network.play.server.S32PacketConfirmTransaction;
6+
import org.spongepowered.asm.mixin.Mixin;
7+
import org.spongepowered.asm.mixin.Overwrite;
8+
import org.spongepowered.asm.mixin.Shadow;
9+
10+
@Mixin(S32PacketConfirmTransaction.class)
11+
public class MixinS32PacketConfirmTransaction {
12+
13+
@Shadow
14+
private int windowId;
15+
@Shadow
16+
private short actionNumber;
17+
@Shadow
18+
private boolean field_148893_c;
19+
20+
/**
21+
* @author As_pw
22+
* @reason 1.17+ Transaction Fix
23+
*/
24+
@Overwrite
25+
public void readPacketData(PacketBuffer buf) {
26+
if (ProtocolFixer.newerThanOrEqualsTo1_17())
27+
this.windowId = buf.readInt();
28+
else {
29+
this.windowId = buf.readUnsignedByte();
30+
this.actionNumber = buf.readShort();
31+
this.field_148893_c = buf.readBoolean();
32+
}
33+
}
34+
}

src/main/resources/viaforgeplus.forge.mixins.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,9 @@
1919
"network.MixinNetworkManager",
2020
"network.MixinNetworkManager$5",
2121
"network.MixinServerData",
22-
"packets.MixinC00Handshake",
22+
"packets.client.MixinC00Handshake",
23+
"packets.client.MixinC0FPacketConfirmTransaction",
24+
"packets.server.MixinS32PacketConfirmTransaction",
2325
"render.MixinEntityRenderer",
2426
"render.MixinLayerArmorBase",
2527
"render.MixinModelBiped"

0 commit comments

Comments
 (0)