- 19
- 0
int direction = MathHelper.floor_double((player.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3;
Я так понимаю этот код делает то, что мне нужноМожно измерить абсолютный угол между игроком и блоком, и через него уже сторону света. Если вкратце, то считаешь угол через Math#atan2, туда нужно тоже передавать дельты координат(x= blockX - playerX, y = blockZ - playerZ). И переводишь радианы в градусы. далее считаешь уже, если угол в пределах 0-90 градусов, то одна сторона, если в пределах 90-180 то другая, и т.д.
public enum Side {EAST, SOUTH, WEST, NORTH};
public static Side get2dOrientation(double x1, double z1, double x2, double z2) {
double dx = x1 - x2;
double dz = z1 - z2;
double angle = Math.atan2(dz, dx) / Math.PI * 180 + 180;
if (angle < 45 || angle > 315) {
return Side.EAST;
} else if (angle < 135) {
return Side.SOUTH;
} else if (angle < 225) {
return Side.WEST;
} else {
return Side.NORTH;
}
}
Я так понимаю этот код делает то, что мне нужно
Java:public enum Side {EAST, SOUTH, WEST, NORTH}; public static Side get2dOrientation(double x1, double z1, double x2, double z2) { double dx = x1 - x2; double dz = z1 - z2; double angle = Math.atan2(dz, dx) / Math.PI * 180 + 180; if (angle < 45 || angle > 315) { return Side.EAST; } else if (angle < 135) { return Side.SOUTH; } else if (angle < 225) { return Side.WEST; } else { return Side.NORTH; } }