Skip to content

Commit 44b7e73

Browse files
committed
again
1 parent 58398ec commit 44b7e73

5 files changed

Lines changed: 49 additions & 0 deletions

File tree

README.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,3 +34,9 @@ GitHub Releases: https://github.com/Aspw-w/ViaForgePlus
3434
- ViaFabricPlus - https://github.com/ViaVersion/ViaFabricPlus (Includes additional modifications to make the experience better)
3535
- ViaProxy (App) - https://github.com/ViaVersion/ViaProxy
3636
- ViaaaS (Proxy) - https://github.com/ViaVersion/ViaaaS
37+
38+
# Contributors
39+
- Aspw (Owner of ViaForgePlus, NightX)
40+
- ViaVersion
41+
- ViaMCP
42+
- toidicakhia (Owner of MinusBounce)

src/main/java/net/aspw/viaforgeplus/ProtocolBase.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,8 @@ public static void init(final VFPlatform platform) {
4646
versions.addAll(ProtocolVersion.getProtocols());
4747

4848
versions.removeIf(i -> i == ProtocolVersion.unknown || i.olderThan(ProtocolVersion.v1_7_2));
49+
50+
ProtocolFixer.transactionFix1_17();
4951
}
5052

5153
public void inject(final Channel channel, final VFNetworkManager networkManager) {

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

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,12 @@
11
package net.aspw.viaforgeplus.api;
22

3+
import com.viaversion.viabackwards.protocol.protocol1_16_4to1_17.Protocol1_16_4To1_17;
4+
import com.viaversion.viaversion.api.Via;
35
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
6+
import com.viaversion.viaversion.protocols.protocol1_16_2to1_16_1.ClientboundPackets1_16_2;
7+
import com.viaversion.viaversion.protocols.protocol1_16_2to1_16_1.ServerboundPackets1_16_2;
8+
import com.viaversion.viaversion.protocols.protocol1_17to1_16_4.ClientboundPackets1_17;
9+
import com.viaversion.viaversion.protocols.protocol1_17to1_16_4.ServerboundPackets1_17;
410
import net.aspw.viaforgeplus.ProtocolBase;
511
import net.aspw.viaforgeplus.network.MinecraftInstance;
612
import net.minecraft.client.Minecraft;
@@ -27,6 +33,13 @@ public static void sendFixedAttack(final EntityPlayer entityIn, final Entity tar
2733
}
2834
}
2935

36+
public static void transactionFix1_17() {
37+
final Protocol1_16_4To1_17 protocol = Via.getManager().getProtocolManager().getProtocol(Protocol1_16_4To1_17.class);
38+
assert protocol != null;
39+
protocol.registerClientbound(ClientboundPackets1_17.PING, ClientboundPackets1_16_2.WINDOW_CONFIRMATION, wrapper -> {}, true);
40+
protocol.registerServerbound(ServerboundPackets1_16_2.WINDOW_CONFIRMATION, ServerboundPackets1_17.PONG, wrapper -> {}, true);
41+
}
42+
3043
public static boolean newerThanOrEqualsTo1_8() {
3144
return ProtocolBase.getManager().getTargetVersion().newerThanOrEqualTo(ProtocolVersion.v1_8) && !MinecraftInstance.mc.isIntegratedServerRunning() || MinecraftInstance.mc.isIntegratedServerRunning();
3245
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package net.aspw.viaforgeplus.injection.forge.mixins.network;
2+
3+
import net.aspw.viaforgeplus.api.ProtocolFixer;
4+
import net.aspw.viaforgeplus.network.MinecraftInstance;
5+
import net.minecraft.client.network.NetHandlerPlayClient;
6+
import net.minecraft.network.play.client.C0FPacketConfirmTransaction;
7+
import net.minecraft.network.play.server.S32PacketConfirmTransaction;
8+
import org.spongepowered.asm.mixin.Mixin;
9+
import org.spongepowered.asm.mixin.injection.At;
10+
import org.spongepowered.asm.mixin.injection.Inject;
11+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
12+
13+
@Mixin(value = NetHandlerPlayClient.class, priority = 1001)
14+
public class MixinNetHandlerPlayClient {
15+
16+
/**
17+
* @author As_pw
18+
* @reason 1.17+ Transaction fix
19+
*/
20+
@Inject(method = "handleConfirmTransaction", at = @At(value = "INVOKE", target = "Lnet/minecraft/network/PacketThreadUtil;checkThreadAndEnqueue(Lnet/minecraft/network/Packet;Lnet/minecraft/network/INetHandler;Lnet/minecraft/util/IThreadListener;)V", shift = At.Shift.AFTER), cancellable=true)
21+
private void handleConfirmTransaction(S32PacketConfirmTransaction packetIn, CallbackInfo ci) {
22+
if (ProtocolFixer.newerThanOrEqualsTo1_17()) {
23+
MinecraftInstance.mc.getNetHandler().addToSendQueue(new C0FPacketConfirmTransaction(packetIn.getWindowId(), (short) 0, false));
24+
ci.cancel();
25+
}
26+
}
27+
}

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
"gui.MixinGuiOverlayDebug",
1717
"item.MixinItemBlock",
1818
"network.MixinGuiConnecting_1",
19+
"network.MixinNetHandlerPlayClient",
1920
"network.MixinNetworkManager",
2021
"network.MixinNetworkManager$5",
2122
"network.MixinServerData",

0 commit comments

Comments
 (0)