Перейти к содержанию

Duck1910

Пользователи
  • Постов

    5
  • Зарегистрирован

  • Посещение

Контакты

  • Логин на сайте
    Duck1910

Достижения Duck1910

  1. [12:27:47] [main/WARN]: Error loading class: net/raphimc/immediatelyfast/feature/map_atlas_generation/MapAtlasTexture (java.lang.ClassNotFoundException: net.raphimc.immediatelyfast.feature.map_atlas_generation.MapAtlasTexture) [12:27:47] [main/WARN]: Error loading class: mekanism/client/render/entity/RenderFlame (java.lang.ClassNotFoundException: mekanism.client.render.entity.RenderFlame) [12:27:47] [main/WARN]: Error loading class: mekanism/client/render/armor/MekaSuitArmor (java.lang.ClassNotFoundException: mekanism.client.render.armor.MekaSuitArmor) mekanism и map_atlas_generation повреждены скорее всего, попробуй убрать их пока
  2. Я случайно написал в этот раздел, продублировал в нужный. Модераторы, как удалить этот топик?
  3. Всем привет! Я пытался реализовать ESP в своём моде с использованием forge API 1.20.1. Но я столкнулся с проблемой: я никак не могу получить верную позицию сущности на экране. Квадрат, который должен распологаться на месте сущности не попадает на неё. Вот мой код: ```java import net.minecraft.client.Camera; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.GameRenderer; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.phys.Vec3; import net.minecraftforge.client.event.RenderGuiEvent; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraft.client.gui.GuiGraphics; import org.joml.Matrix4f; import org.joml.Vector4f; public class ESP { private final Minecraft mc; public ESP() { this.mc = Minecraft.getInstance(); MinecraftForge.EVENT_BUS.register(this); } @SubscribeEvent public void onRenderGui(RenderGuiEvent.Post event) { GuiGraphics guiGraphics = event.getGuiGraphics(); for (Entity entity : mc.level.entitiesForRendering()) { if (entity != mc.player && entity instanceof Player) { // Пример координат сущности float partialTicks = event.getPartialTick(); Vector4f screenPos = worldToScreen(entity.getPosition(partialTicks)); int screenX = (int) screenPos.x; int screenY = (int) screenPos.y; System.out.println(screenX + " " + screenY); renderRectangle(guiGraphics, screenX, screenY, 20, 20, 0x80FF0000); } } } public void renderRectangle(GuiGraphics guiGraphics, int x, int y, int width, int height, int color) { guiGraphics.fill(x, y, x + width, y + height, color); } public Vector4f worldToScreen(Vec3 worldPos) { Minecraft minecraft = Minecraft.getInstance(); GameRenderer gameRenderer = minecraft.gameRenderer; Camera camera = gameRenderer.getMainCamera(); Matrix4f projectionMatrix = gameRenderer.getProjectionMatrix(minecraft.getWindow().getGuiScale()); Matrix4f viewMatrix = new Matrix4f(); viewMatrix.identity(); Vec3 cameraPos = camera.getPosition(); viewMatrix.translate((float) -cameraPos.x, (float) -cameraPos.y, (float) -cameraPos.z); viewMatrix.rotate((float) Math.toRadians(-camera.getXRot()), new org.joml.Vector3f(1, 0, 0)); viewMatrix.rotate((float) Math.toRadians(-camera.getYRot()), new org.joml.Vector3f(0, 1, 0)); Vector4f screenPos = new Vector4f((float) worldPos.x, (float) worldPos.y, (float) worldPos.z, 1.0F); screenPos.mul(viewMatrix); screenPos.mul(projectionMatrix); if (screenPos.w > 0.0F) { screenPos.div(screenPos.w); } float screenX = (screenPos.x + 1.0F) / 2.0F * minecraft.getWindow().getGuiScaledWidth(); float screenY = (1.0F - screenPos.y) / 2.0F * minecraft.getWindow().getGuiScaledHeight(); return new Vector4f(screenX, screenY, screenPos.z, screenPos.w); } } ``` В чём ошибка? Почему я получаю неверные экранные координаты?
×
×
  • Создать...