forked from SteamWar/SteamWar
Fix entity orientation
This commit is contained in:
@@ -33,7 +33,7 @@ public class BountifulWrapper21 extends BountifulWrapper9 {
|
|||||||
return (packet, x, y, z, pitch, yaw) -> {
|
return (packet, x, y, z, pitch, yaw) -> {
|
||||||
PositionMoveRotation pos = field.get(packet);
|
PositionMoveRotation pos = field.get(packet);
|
||||||
|
|
||||||
field.set(packet, new PositionMoveRotation(new Vec3D(x, y, z), pos.b(), pitch, yaw));
|
field.set(packet, new PositionMoveRotation(new Vec3D(x, y, z), pos.b(), yaw, pitch));
|
||||||
};
|
};
|
||||||
} catch (IllegalArgumentException e) {
|
} catch (IllegalArgumentException e) {
|
||||||
return super.getPositionSetter(packetClass, fieldOffset);
|
return super.getPositionSetter(packetClass, fieldOffset);
|
||||||
|
|||||||
@@ -25,7 +25,6 @@ import net.md_5.bungee.api.chat.BaseComponent;
|
|||||||
import net.minecraft.server.v1_8_R3.ChatComponentText;
|
import net.minecraft.server.v1_8_R3.ChatComponentText;
|
||||||
import net.minecraft.server.v1_8_R3.MathHelper;
|
import net.minecraft.server.v1_8_R3.MathHelper;
|
||||||
import net.minecraft.server.v1_8_R3.PacketPlayOutChat;
|
import net.minecraft.server.v1_8_R3.PacketPlayOutChat;
|
||||||
import net.minecraft.server.v1_8_R3.PacketPlayOutEntityTeleport;
|
|
||||||
import org.bukkit.Sound;
|
import org.bukkit.Sound;
|
||||||
import org.bukkit.craftbukkit.v1_8_R3.entity.CraftPlayer;
|
import org.bukkit.craftbukkit.v1_8_R3.entity.CraftPlayer;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
@@ -71,15 +70,15 @@ public class BountifulWrapper8 implements BountifulWrapper.IBountifulWrapper {
|
|||||||
Reflection.FieldAccessor<Integer> posX = Reflection.getField(packetClass, int.class, fieldOffset);
|
Reflection.FieldAccessor<Integer> posX = Reflection.getField(packetClass, int.class, fieldOffset);
|
||||||
Reflection.FieldAccessor<Integer> posY = Reflection.getField(packetClass, int.class, fieldOffset +1);
|
Reflection.FieldAccessor<Integer> posY = Reflection.getField(packetClass, int.class, fieldOffset +1);
|
||||||
Reflection.FieldAccessor<Integer> posZ = Reflection.getField(packetClass, int.class, fieldOffset +2);
|
Reflection.FieldAccessor<Integer> posZ = Reflection.getField(packetClass, int.class, fieldOffset +2);
|
||||||
Reflection.FieldAccessor<Byte> lookPitch = Reflection.getField(packetClass, byte.class, 0);
|
Reflection.FieldAccessor<Byte> lookYaw = Reflection.getField(packetClass, byte.class, 0);
|
||||||
Reflection.FieldAccessor<Byte> lookYaw = Reflection.getField(packetClass, byte.class, 1);
|
Reflection.FieldAccessor<Byte> lookPitch = Reflection.getField(packetClass, byte.class, 1);
|
||||||
|
|
||||||
return (packet, x, y, z, pitch, yaw) -> {
|
return (packet, x, y, z, pitch, yaw) -> {
|
||||||
posX.set(packet, MathHelper.floor(x * 32));
|
posX.set(packet, MathHelper.floor(x * 32));
|
||||||
posY.set(packet, MathHelper.floor(y * 32));
|
posY.set(packet, MathHelper.floor(y * 32));
|
||||||
posZ.set(packet, MathHelper.floor(z * 32));
|
posZ.set(packet, MathHelper.floor(z * 32));
|
||||||
lookPitch.set(packet, (byte)(pitch * 256 / 360));
|
|
||||||
lookYaw.set(packet, (byte)(yaw * 256 / 360));
|
lookYaw.set(packet, (byte)(yaw * 256 / 360));
|
||||||
|
lookPitch.set(packet, (byte)(pitch * 256 / 360));
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -67,19 +67,19 @@ public class BountifulWrapper9 implements BountifulWrapper.IBountifulWrapper {
|
|||||||
Reflection.FieldAccessor<Double> posZ = Reflection.getField(packetClass, double.class, fieldOffset+2);
|
Reflection.FieldAccessor<Double> posZ = Reflection.getField(packetClass, double.class, fieldOffset+2);
|
||||||
boolean isByteClass = packetClass.getSimpleName().contains("PacketPlayOutEntityTeleport") || packetClass.getSimpleName().contains("PacketPlayOutNamedEntitySpawn");
|
boolean isByteClass = packetClass.getSimpleName().contains("PacketPlayOutEntityTeleport") || packetClass.getSimpleName().contains("PacketPlayOutNamedEntitySpawn");
|
||||||
Class<?> pitchYawType = isByteClass ? byte.class : int.class;
|
Class<?> pitchYawType = isByteClass ? byte.class : int.class;
|
||||||
Reflection.FieldAccessor<?> lookPitch = Reflection.getField(packetClass, pitchYawType, isByteClass ? 0 : 1);
|
Reflection.FieldAccessor<?> lookYaw = Reflection.getField(packetClass, pitchYawType, isByteClass ? 0 : 1);
|
||||||
Reflection.FieldAccessor<?> lookYaw = Reflection.getField(packetClass, pitchYawType, isByteClass ? 1 : 2);
|
Reflection.FieldAccessor<?> lookPitch = Reflection.getField(packetClass, pitchYawType, isByteClass ? 1 : 2);
|
||||||
|
|
||||||
return (packet, x, y, z, pitch, yaw) -> {
|
return (packet, x, y, z, pitch, yaw) -> {
|
||||||
posX.set(packet, x);
|
posX.set(packet, x);
|
||||||
posY.set(packet, y);
|
posY.set(packet, y);
|
||||||
posZ.set(packet, z);
|
posZ.set(packet, z);
|
||||||
if (isByteClass) {
|
if (isByteClass) {
|
||||||
lookPitch.set(packet, (byte) (pitch*256/360));
|
|
||||||
lookYaw.set(packet, (byte) (yaw*256/360));
|
lookYaw.set(packet, (byte) (yaw*256/360));
|
||||||
|
lookPitch.set(packet, (byte) (pitch*256/360));
|
||||||
} else {
|
} else {
|
||||||
lookPitch.set(packet, (int) (pitch*256/360));
|
|
||||||
lookYaw.set(packet, (int) (yaw*256/360));
|
lookYaw.set(packet, (int) (yaw*256/360));
|
||||||
|
lookPitch.set(packet, (int) (pitch*256/360));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@@ -90,15 +90,15 @@ public class BountifulWrapper9 implements BountifulWrapper.IBountifulWrapper {
|
|||||||
Reflection.FieldAccessor<?> moveX = Reflection.getField(packetClass, "b", type);
|
Reflection.FieldAccessor<?> moveX = Reflection.getField(packetClass, "b", type);
|
||||||
Reflection.FieldAccessor<?> moveY = Reflection.getField(packetClass, "c", type);
|
Reflection.FieldAccessor<?> moveY = Reflection.getField(packetClass, "c", type);
|
||||||
Reflection.FieldAccessor<?> moveZ = Reflection.getField(packetClass, "d", type);
|
Reflection.FieldAccessor<?> moveZ = Reflection.getField(packetClass, "d", type);
|
||||||
Reflection.FieldAccessor<Byte> movePitch = Reflection.getField(packetClass, "e", byte.class);
|
Reflection.FieldAccessor<Byte> moveYaw = Reflection.getField(packetClass, "e", byte.class);
|
||||||
Reflection.FieldAccessor<Byte> moveYaw = Reflection.getField(packetClass, "f", byte.class);
|
Reflection.FieldAccessor<Byte> movePitch = Reflection.getField(packetClass, "f", byte.class);
|
||||||
|
|
||||||
return (packet, x, y, z, pitch, yaw) -> {
|
return (packet, x, y, z, pitch, yaw) -> {
|
||||||
moveX.set(packet, (short)(x*4096));
|
moveX.set(packet, (short)(x*4096));
|
||||||
moveY.set(packet, (short)(y*4096));
|
moveY.set(packet, (short)(y*4096));
|
||||||
moveZ.set(packet, (short)(z*4096));
|
moveZ.set(packet, (short)(z*4096));
|
||||||
movePitch.set(packet, (byte)(pitch*256/360));
|
|
||||||
moveYaw.set(packet, (byte)(yaw*256/360));
|
moveYaw.set(packet, (byte)(yaw*256/360));
|
||||||
|
movePitch.set(packet, (byte)(pitch*256/360));
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user