Начинающий
- Статус
- Оффлайн
- Регистрация
- 9 Дек 2022
- Сообщения
- 80
- Реакции
- 1
всем qq вот проблема
private void renderPlayerNameTags(EventRender2D e) {
final int screenW = mc.getWindow().getScaledWidth();
final int screenH = mc.getWindow().getScaledHeight();
final float tickDelta = e.getDeltatick().getTickDelta(true);
MatrixStack matrixStack = e.getMatrixStack();
for (PlayerEntity player : Luxury.getSync().getPlayers()) {
if (player == null || (player instanceof ClientPlayerEntity && mc.options.getPerspective() == Perspective.FIRST_PERSON))
continue;
if (!shouldRender(player)) continue;
Vec3d pos = new Vec3d(player.prevX + (player.getX() - player.prevX) * tickDelta, player.prevY + (player.getY() - player.prevY) * tickDelta + player.getEyeHeight(player.getPose()) * 0.85 + 0.2, player.prevZ + (player.getZ() - player.prevZ) * tickDelta);
Vec3d screen = RenderUtil.render3D.worldCoordinatesToScreen(pos);
if (screen.z < 0 || screen.z >= 1 || screen.x < 0 || screen.x > screenW || screen.y < 0 || screen.y > screenH)
continue;
String friendPrefix = FriendManager.getInstance().isFriend(player.getName().getString()) ? Formatting.GRAY + "[" + Formatting.GREEN + "F" + Formatting.GRAY + "] " : "";
float health = player.getHealth() + player.getAbsorptionAmount();
String hpText = Formatting.GRAY + " [" + (health < 300 ? Formatting.RED.toString() + (int) health : Formatting.RED + "Unknown") + Formatting.GRAY + "]" + Formatting.RESET;
String name = player.getGameProfile().getName();
Text prefix = player.getScoreboardTeam() != null ? player.getScoreboardTeam().getPrefix() : Text.literal("");
Text itemText = null;
if (showSpheres.get()) {
ItemStack offHand = player.getOffHandStack();
if (!offHand.isEmpty() && (offHand.getItem() == Items.TOTEM_OF_UNDYING || offHand.getItem() instanceof PlayerHeadItem)) {
Text customName = offHand.getCustomName();
if (customName != null) {
itemText = customName;
}
}
public static Vec3d worldSpaceToScreenSpace(Vec3d pos) {
Camera camera = mc.getEntityRenderDispatcher().camera;
int displayHeight = mc.getWindow().getHeight();
int[] viewport = new int[4];
GL11.glGetIntegerv(GL11.GL_VIEWPORT, viewport);
Vector3f target = new Vector3f();
double deltaX = pos.x - camera.getPos().x;
double deltaY = pos.y - camera.getPos().y;
double deltaZ = pos.z - camera.getPos().z;
Vector4f transformedCoordinates = new Vector4f((float) deltaX, (float) deltaY, (float) deltaZ, 1.f).mul(lastWorldSpaceMatrix);
Matrix4f matrixProj = new Matrix4f(lastProjMat);
Matrix4f matrixModel = new Matrix4f(lastModMat);
matrixProj.mul(matrixModel).project(transformedCoordinates.x(), transformedCoordinates.y(), transformedCoordinates.z(), viewport, target);
return new Vec3d(target.x / mc.getWindow().getScaleFactor(), (displayHeight - target.y) / mc.getWindow().getScaleFactor(), target.z);
}
}
@Inject(method = "renderWorld", at = @At(value = "FIELD", target = "Lnet/minecraft/client/render/GameRenderer;renderHand:Z", opcode = Opcodes.GETFIELD, ordinal = 0))
public void hookWorldRender(RenderTickCounter tickCounter, CallbackInfo ci, @Local(ordinal = 2) Matrix4f matrix4f) {
MatrixStack matrixStack = new MatrixStack();
matrixStack.multiplyPositionMatrix(matrix4f);
matrixStack.translate(mc.getEntityRenderDispatcher().camera.getPos().negate());
ProjectionUtil.setLastProjMat(RenderSystem.getProjectionMatrix());
ProjectionUtil.setLastWorldSpaceMatrix(matrixStack.peek());
RenderUtil3D.hookEvent3d();
}
@Inject(at = @At(value = "FIELD", target = "Lnet/minecraft/client/render/GameRenderer;renderHand:Z", opcode = Opcodes.GETFIELD, ordinal = 0), method = "renderWorld")
private void render3dHook(RenderTickCounter tickCounter, CallbackInfo ci) {
MatrixStack matrixStack = new MatrixStack();
Camera camera = mc.gameRenderer.getCamera();
RenderSystem.getModelViewStack().pushMatrix().mul(matrixStack.peek().getPositionMatrix());
matrixStack.multiply(RotationAxis.POSITIVE_X.rotationDegrees(camera.getPitch()));
matrixStack.multiply(RotationAxis.POSITIVE_Y.rotationDegrees(camera.getYaw() + 180.0f));
RenderSystem.setShaderFog(Fog.DUMMY);
//ебаная хуйня но она нада
RenderUtil.render3D.setTranslation(matrixStack);
RenderSystem.getModelViewStack().popMatrix();
RenderSystem.getModelViewMatrix();
}
всем qq мне надо сделать чтобы оно было статично по размеру просто оно берет позицию камеры и когда ты отходишь у тебя тупо они увеличиваються а когда подходишь уменьшаються и это не удобно я считаю мне надо сделать чтобы всегда было статично кто шарит чекните код сверху я его наебашил за 1 день так как очень хочу перенести дизайн энтити есп поскорее забыл дописать еще когда я отвожу взгляд влево оно меняеть позицию ну типо не статично как бы также а у меня стиль энтити есп это corners и когда я буду отводить взгляд в какую ту из сторон они буду соединяться это надо исправить тоже сразу говорю с таким я работаю впервый раз мне помог 1 человек с этим а дальше он хз
private void renderPlayerNameTags(EventRender2D e) {
final int screenW = mc.getWindow().getScaledWidth();
final int screenH = mc.getWindow().getScaledHeight();
final float tickDelta = e.getDeltatick().getTickDelta(true);
MatrixStack matrixStack = e.getMatrixStack();
for (PlayerEntity player : Luxury.getSync().getPlayers()) {
if (player == null || (player instanceof ClientPlayerEntity && mc.options.getPerspective() == Perspective.FIRST_PERSON))
continue;
if (!shouldRender(player)) continue;
Vec3d pos = new Vec3d(player.prevX + (player.getX() - player.prevX) * tickDelta, player.prevY + (player.getY() - player.prevY) * tickDelta + player.getEyeHeight(player.getPose()) * 0.85 + 0.2, player.prevZ + (player.getZ() - player.prevZ) * tickDelta);
Vec3d screen = RenderUtil.render3D.worldCoordinatesToScreen(pos);
if (screen.z < 0 || screen.z >= 1 || screen.x < 0 || screen.x > screenW || screen.y < 0 || screen.y > screenH)
continue;
String friendPrefix = FriendManager.getInstance().isFriend(player.getName().getString()) ? Formatting.GRAY + "[" + Formatting.GREEN + "F" + Formatting.GRAY + "] " : "";
float health = player.getHealth() + player.getAbsorptionAmount();
String hpText = Formatting.GRAY + " [" + (health < 300 ? Formatting.RED.toString() + (int) health : Formatting.RED + "Unknown") + Formatting.GRAY + "]" + Formatting.RESET;
String name = player.getGameProfile().getName();
Text prefix = player.getScoreboardTeam() != null ? player.getScoreboardTeam().getPrefix() : Text.literal("");
Text itemText = null;
if (showSpheres.get()) {
ItemStack offHand = player.getOffHandStack();
if (!offHand.isEmpty() && (offHand.getItem() == Items.TOTEM_OF_UNDYING || offHand.getItem() instanceof PlayerHeadItem)) {
Text customName = offHand.getCustomName();
if (customName != null) {
itemText = customName;
}
}
public static Vec3d worldSpaceToScreenSpace(Vec3d pos) {
Camera camera = mc.getEntityRenderDispatcher().camera;
int displayHeight = mc.getWindow().getHeight();
int[] viewport = new int[4];
GL11.glGetIntegerv(GL11.GL_VIEWPORT, viewport);
Vector3f target = new Vector3f();
double deltaX = pos.x - camera.getPos().x;
double deltaY = pos.y - camera.getPos().y;
double deltaZ = pos.z - camera.getPos().z;
Vector4f transformedCoordinates = new Vector4f((float) deltaX, (float) deltaY, (float) deltaZ, 1.f).mul(lastWorldSpaceMatrix);
Matrix4f matrixProj = new Matrix4f(lastProjMat);
Matrix4f matrixModel = new Matrix4f(lastModMat);
matrixProj.mul(matrixModel).project(transformedCoordinates.x(), transformedCoordinates.y(), transformedCoordinates.z(), viewport, target);
return new Vec3d(target.x / mc.getWindow().getScaleFactor(), (displayHeight - target.y) / mc.getWindow().getScaleFactor(), target.z);
}
}
@Inject(method = "renderWorld", at = @At(value = "FIELD", target = "Lnet/minecraft/client/render/GameRenderer;renderHand:Z", opcode = Opcodes.GETFIELD, ordinal = 0))
public void hookWorldRender(RenderTickCounter tickCounter, CallbackInfo ci, @Local(ordinal = 2) Matrix4f matrix4f) {
MatrixStack matrixStack = new MatrixStack();
matrixStack.multiplyPositionMatrix(matrix4f);
matrixStack.translate(mc.getEntityRenderDispatcher().camera.getPos().negate());
ProjectionUtil.setLastProjMat(RenderSystem.getProjectionMatrix());
ProjectionUtil.setLastWorldSpaceMatrix(matrixStack.peek());
RenderUtil3D.hookEvent3d();
}
@Inject(at = @At(value = "FIELD", target = "Lnet/minecraft/client/render/GameRenderer;renderHand:Z", opcode = Opcodes.GETFIELD, ordinal = 0), method = "renderWorld")
private void render3dHook(RenderTickCounter tickCounter, CallbackInfo ci) {
MatrixStack matrixStack = new MatrixStack();
Camera camera = mc.gameRenderer.getCamera();
RenderSystem.getModelViewStack().pushMatrix().mul(matrixStack.peek().getPositionMatrix());
matrixStack.multiply(RotationAxis.POSITIVE_X.rotationDegrees(camera.getPitch()));
matrixStack.multiply(RotationAxis.POSITIVE_Y.rotationDegrees(camera.getYaw() + 180.0f));
RenderSystem.setShaderFog(Fog.DUMMY);
//ебаная хуйня но она нада
RenderUtil.render3D.setTranslation(matrixStack);
RenderSystem.getModelViewStack().popMatrix();
RenderSystem.getModelViewMatrix();
}
всем qq мне надо сделать чтобы оно было статично по размеру просто оно берет позицию камеры и когда ты отходишь у тебя тупо они увеличиваються а когда подходишь уменьшаються и это не удобно я считаю мне надо сделать чтобы всегда было статично кто шарит чекните код сверху я его наебашил за 1 день так как очень хочу перенести дизайн энтити есп поскорее забыл дописать еще когда я отвожу взгляд влево оно меняеть позицию ну типо не статично как бы также а у меня стиль энтити есп это corners и когда я буду отводить взгляд в какую ту из сторон они буду соединяться это надо исправить тоже сразу говорю с таким я работаю впервый раз мне помог 1 человек с этим а дальше он хз
Последнее редактирование: