Skip to content

Commit 2d14bc3

Browse files
committed
Merge 1.16 into 1.18
2 parents 6c7a5c7 + 6593b6a commit 2d14bc3

File tree

1 file changed

+36
-0
lines changed

1 file changed

+36
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package org.embeddedt.modernfix.forge.mixin.bugfix.forge_vehicle_packets;
2+
3+
import net.minecraft.network.protocol.game.ServerboundMoveVehiclePacket;
4+
import net.minecraft.server.level.ServerPlayer;
5+
import net.minecraft.server.network.ServerGamePacketListenerImpl;
6+
import net.minecraft.world.phys.Vec3;
7+
import org.spongepowered.asm.mixin.Mixin;
8+
import org.spongepowered.asm.mixin.Shadow;
9+
import org.spongepowered.asm.mixin.injection.At;
10+
import org.spongepowered.asm.mixin.injection.Redirect;
11+
12+
@Mixin(ServerGamePacketListenerImpl.class)
13+
public class ServerGamePacketListenerImplMixin {
14+
@Shadow public ServerPlayer player;
15+
16+
@Redirect(method = "handleMoveVehicle", at = @At(value = "INVOKE", target = "Lnet/minecraft/server/level/ServerPlayer;absMoveTo(DDDFF)V"))
17+
private void movePlayerUsingPositionRider(ServerPlayer player, double x, double y, double z, float yRot, float xRot, ServerboundMoveVehiclePacket packet) {
18+
if(player == this.player) {
19+
// use positionRider
20+
Vec3 oldPos = this.player.position();
21+
yRot = this.player.yRot;
22+
xRot = this.player.xRot;
23+
float yHeadRot = this.player.getYHeadRot();
24+
this.player.getRootVehicle().positionRider(this.player);
25+
// keep old rotation
26+
this.player.yRot = yRot;
27+
this.player.xRot = xRot;
28+
this.player.setYHeadRot(yHeadRot);
29+
// save old position
30+
this.player.xo = oldPos.x;
31+
this.player.yo = oldPos.y;
32+
this.player.zo = oldPos.z;
33+
} else
34+
player.absMoveTo(x, y, z, yRot, xRot);
35+
}
36+
}

0 commit comments

Comments
 (0)