Код:
public void render() {
player1 = mc.player;
player2 = player1; //mc.world.getPlayerEntityByName("d1mbI4");
//EntityOtherPlayerMP targetPlayer = (EntityOtherPlayerMP)
//mc.world.getPlayerEntityByName("d1mbI4");
player1.sendMessage(new TextComponentString("RENDERING"));
if (player1 != null && player2 != null) {
Vec3d playerPos = new Vec3d(player1.posX, player1.posY, player1.posZ);
Vec3d targetPos = new Vec3d(player2.posX + 10, player2.posY, player2.posZ);
ScaledResolution res = new ScaledResolution(mc);
int screenWidth = res.getScaledWidth();
int screenHeight = res.getScaledHeight();
FloatBuffer modelView = BufferUtils.createFloatBuffer(16);
FloatBuffer projection = BufferUtils.createFloatBuffer(16);
GL11.glGetFloat(GL11.GL_MODELVIEW_MATRIX, modelView);
GL11.glGetFloat(GL11.GL_PROJECTION_MATRIX, projection);
Matrix4f modelViewMatrix = new Matrix4f(modelView.array());
Matrix4f projectionMatrix = new Matrix4f(projection.array());
player1.sendMessage(new TextComponentString("RENDERING====================="));
Vector4f rawCoords = new Vector4f((float) targetPos.x, (float) targetPos.y, (float) targetPos.z, 1.0f);
modelViewMatrix.transform(rawCoords);
Vector4f transformedCoords = new Vector4f();
projectionMatrix.transform(rawCoords, transformedCoords);
int targetX = (int) ((transformedCoords.x + 1) * screenWidth / 2);
int targetY = (int) ((1 - transformedCoords.y) * screenHeight / 2);
player1.sendMessage(new TextComponentString("Coordinates: x - " + targetX + " y - " + targetY));
// Рисую стрелку посредством GUIUtils
// ...
}
}