Отрисовка точки в мире

Версия Minecraft
1.20.1
API
Forge
7
0
Нужно при использовании предмета на ПКМ отрисовывать(на время) точки над всеми игроками кроме использователя(желательно). Желательно написать код целиком, я люблю разбирать уже готовый код.
 
Желательно написать код целиком
небуду


PlayerRenderEvent в помощь, там есть и игрок, и PoseStack, крч все что нужно.

точки над всеми игроками кроме использователя(желательно)
playeк.какойтоboolean = true
Потом проверяешь в эвенте выше

Придется пользоваться мискинами
 
Объяснил конечно супер... На 1.20.1 нет этого класса и ивента
Тебе ничто не мешает посмотреть, как рендерится ник игрока(как пример).
На 1.20.1 изменили апи


Как вариант, предложу использовать IEEP и там хранить твою переменную boolean.
Как уже сказали выше, нужно использовать миксины(пакеты) для передачи этой информации на клиент.

Теперь что касается вывода, сейчас используется RenderNameplateEvent, могу мб ошибаться.


Java:
    private static boolean testRender = false;

    @SubscribeEvent
    public static void onRenderNameplate(RenderNameplateEvent event) {
        if (testRender && event.getEntity() instanceof Player player && player != Minecraft.getInstance().player) {
            PoseStack poseStack = event.getPoseStack();
            EntityRenderDispatcher renderDispatcher = event.getRenderer();
            double x = event.getEntity().getX();
            double y = event.getEntity().getY() + player.getBbHeight() + 0.5;
            double z = event.getEntity().getZ();

            poseStack.pushPose();
            poseStack.translate(x - renderDispatcher.camera.getPosition().x, y - renderDispatcher.camera.getPosition().y, z - renderDispatcher.camera.getPosition().z);
            poseStack.scale(0.025f, 0.025f, 0.025f);

            RenderSystem.setShader(GameRenderer::getPositionColorShader);
            RenderSystem.setShaderColor(1.0f, 0.0f, 0.0f, 1.0f);

            poseStack.pushPose();
            poseStack.translate(-event.getEntity().getBbWidth() / 2, 0, 0);
            poseStack.scale(10.0f, 10.0f, 10.0f);
            Minecraft.getInstance().font.drawInBatch(Component.literal("•"), 0, 0, 0xFFFFFFFF, false, poseStack.last().pose(), poseStack, false, 0, 15728880);
            poseStack.popPose();
            poseStack.popPose();

            // Я на всякий отменяю рендер ника, ты же можешь делать как тебе угодно!
            event.setCanceled(true);
        }
    }

Код предоставлен с использованием статической переменной, тебе же нужно переделать чтоб из ieep бралась твоя переменная.
Предмет сам уже, на форуме полно гайдов по созданию предметов.
Как минимум, можешь посмотреть работу зелек/еды и т.п, которые дают эффекты(проще говоря, итемы которые что либо выполняют при использование).
 
Нужно при использовании предмета на ПКМ отрисовывать(на время) точки над всеми игроками кроме использователя(желательно).
Отрисовывается только тому, кто использовал предмет, или всем?
Это достаточно важная деталь.

Желательно написать код целиком, я люблю разбирать уже готовый код.
Выпрашивать код здесь не в почёте. Скинут - радуйся, нет - сам пили.
 
Назад
Сверху