NameTags | Fabric 1.17.1

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
16 Дек 2024
Сообщения
56
Реакции
0
Привет, на связи дядя Пастер (aka селфкодер). Сегодня мы сделаем ебанутый (5минутный) код на Fabric 1.17.1.

renderPlayerNames:
Expand Collapse Copy
    private void renderPlayerNames(WorldRenderContext context) {
        MatrixStack matrixStack = context.matrixStack();
        VertexConsumerProvider consumers = context.consumers();
        float tickDelta = mc.getTickDelta();
        for (PlayerEntity player : mc.world.getPlayers()) {
            if (player.isInvisible()) player.setInvisible(false);
            renderPlayerName(player, matrixStack, consumers, tickDelta);
        }
    }

Java:
Expand Collapse Copy
    private void renderPlayerName(PlayerEntity player, MatrixStack matrixStack, VertexConsumerProvider consumers, float tickDelta) {
        double x = player.prevX + (player.getX() - player.prevX) * tickDelta;
        double y = player.prevY + (player.getY() - player.prevY) * tickDelta;
        double z = player.prevZ + (player.getZ() - player.prevZ) * tickDelta;
        matrixStack.push();
        matrixStack.translate(x - mc.getEntityRenderDispatcher().camera.getPos().x, y - mc.getEntityRenderDispatcher().camera.getPos().y + player.getHeight() - 2f, z - mc.getEntityRenderDispatcher().camera.getPos().z);
        matrixStack.multiply(mc.getEntityRenderDispatcher().getRotation());
        matrixStack.scale(-0.025f, -0.025f, 0.025f);
        TextRenderer textRenderer = mc.textRenderer;
        String name = player.getName().getString();
        float width = -textRenderer.getWidth(name) / 2f;
        RenderSystem.disableDepthTest();
        RenderSystem.enableBlend();
        RenderSystem.defaultBlendFunc();
        RenderSystem.setShader(GameRenderer::getPositionColorShader);
        Color colorsreen = new Color(0,0,0,50);
        Screen.fill(matrixStack, (int) width - 2, -2,textRenderer.getWidth(name) / 2 + 2 ,10, colorsreen.getRGB());
        Text text = Text.of(name);
        textRenderer.draw(text, width, 0, Formatting.WHITE.getColorValue(), false, matrixStack.peek().getModel(), consumers, true, 0, 0xF000F0);
        RenderSystem.enableDepthTest();
        RenderSystem.disableBlend();
        matrixStack.pop();
    }

Если нету евента, то регистрируем при включение модуля:
Java:
Expand Collapse Copy
WorldRenderEvents.AFTER_ENTITIES.register(this::renderPlayerNames);

Если остаются при выключение, то делаем проверку boolean

ss:
Пожалуйста, авторизуйтесь для просмотра ссылки.
 
в дестени паста 1 17 1 пизже соси писют
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Привет, на связи дядя Пастер (aka селфкодер). Сегодня мы сделаем ебанутый (5минутный) код на Fabric 1.17.1.

renderPlayerNames:
Expand Collapse Copy
    private void renderPlayerNames(WorldRenderContext context) {
        MatrixStack matrixStack = context.matrixStack();
        VertexConsumerProvider consumers = context.consumers();
        float tickDelta = mc.getTickDelta();
        for (PlayerEntity player : mc.world.getPlayers()) {
            if (player.isInvisible()) player.setInvisible(false);
            renderPlayerName(player, matrixStack, consumers, tickDelta);
        }
    }

Java:
Expand Collapse Copy
    private void renderPlayerName(PlayerEntity player, MatrixStack matrixStack, VertexConsumerProvider consumers, float tickDelta) {
        double x = player.prevX + (player.getX() - player.prevX) * tickDelta;
        double y = player.prevY + (player.getY() - player.prevY) * tickDelta;
        double z = player.prevZ + (player.getZ() - player.prevZ) * tickDelta;
        matrixStack.push();
        matrixStack.translate(x - mc.getEntityRenderDispatcher().camera.getPos().x, y - mc.getEntityRenderDispatcher().camera.getPos().y + player.getHeight() - 2f, z - mc.getEntityRenderDispatcher().camera.getPos().z);
        matrixStack.multiply(mc.getEntityRenderDispatcher().getRotation());
        matrixStack.scale(-0.025f, -0.025f, 0.025f);
        TextRenderer textRenderer = mc.textRenderer;
        String name = player.getName().getString();
        float width = -textRenderer.getWidth(name) / 2f;
        RenderSystem.disableDepthTest();
        RenderSystem.enableBlend();
        RenderSystem.defaultBlendFunc();
        RenderSystem.setShader(GameRenderer::getPositionColorShader);
        Color colorsreen = new Color(0,0,0,50);
        Screen.fill(matrixStack, (int) width - 2, -2,textRenderer.getWidth(name) / 2 + 2 ,10, colorsreen.getRGB());
        Text text = Text.of(name);
        textRenderer.draw(text, width, 0, Formatting.WHITE.getColorValue(), false, matrixStack.peek().getModel(), consumers, true, 0, 0xF000F0);
        RenderSystem.enableDepthTest();
        RenderSystem.disableBlend();
        matrixStack.pop();
    }

Если нету евента, то регистрируем при включение модуля:
Java:
Expand Collapse Copy
WorldRenderEvents.AFTER_ENTITIES.register(this::renderPlayerNames);

Если остаются при выключение, то делаем проверку boolean

ss:
Пожалуйста, авторизуйтесь для просмотра ссылки.
так это обычный ник и все
 
Хз, я только начал все изучать, от силы неделя, до этого сидел на экспе 2.0, перешел на фабрик так как по мне он легче и удобен, но бесит с версиями своими, сейчас думаю на 1.21 делать, там фпс куча
 
Привет, на связи дядя Пастер (aka селфкодер). Сегодня мы сделаем ебанутый (5минутный) код на Fabric 1.17.1.

renderPlayerNames:
Expand Collapse Copy
    private void renderPlayerNames(WorldRenderContext context) {
        MatrixStack matrixStack = context.matrixStack();
        VertexConsumerProvider consumers = context.consumers();
        float tickDelta = mc.getTickDelta();
        for (PlayerEntity player : mc.world.getPlayers()) {
            if (player.isInvisible()) player.setInvisible(false);
            renderPlayerName(player, matrixStack, consumers, tickDelta);
        }
    }

Java:
Expand Collapse Copy
    private void renderPlayerName(PlayerEntity player, MatrixStack matrixStack, VertexConsumerProvider consumers, float tickDelta) {
        double x = player.prevX + (player.getX() - player.prevX) * tickDelta;
        double y = player.prevY + (player.getY() - player.prevY) * tickDelta;
        double z = player.prevZ + (player.getZ() - player.prevZ) * tickDelta;
        matrixStack.push();
        matrixStack.translate(x - mc.getEntityRenderDispatcher().camera.getPos().x, y - mc.getEntityRenderDispatcher().camera.getPos().y + player.getHeight() - 2f, z - mc.getEntityRenderDispatcher().camera.getPos().z);
        matrixStack.multiply(mc.getEntityRenderDispatcher().getRotation());
        matrixStack.scale(-0.025f, -0.025f, 0.025f);
        TextRenderer textRenderer = mc.textRenderer;
        String name = player.getName().getString();
        float width = -textRenderer.getWidth(name) / 2f;
        RenderSystem.disableDepthTest();
        RenderSystem.enableBlend();
        RenderSystem.defaultBlendFunc();
        RenderSystem.setShader(GameRenderer::getPositionColorShader);
        Color colorsreen = new Color(0,0,0,50);
        Screen.fill(matrixStack, (int) width - 2, -2,textRenderer.getWidth(name) / 2 + 2 ,10, colorsreen.getRGB());
        Text text = Text.of(name);
        textRenderer.draw(text, width, 0, Formatting.WHITE.getColorValue(), false, matrixStack.peek().getModel(), consumers, true, 0, 0xF000F0);
        RenderSystem.enableDepthTest();
        RenderSystem.disableBlend();
        matrixStack.pop();
    }

Если нету евента, то регистрируем при включение модуля:
Java:
Expand Collapse Copy
WorldRenderEvents.AFTER_ENTITIES.register(this::renderPlayerNames);

Если остаются при выключение, то делаем проверку boolean

ss:
Пожалуйста, авторизуйтесь для просмотра ссылки.
мог бы хотябы оригинальный рендер ников показать как отменять, а то для некоторых это покажется не выполнимой задачей, а так ну такое себе
 
Назад
Сверху Снизу