Начинающий
- Статус
- Оффлайн
- Регистрация
- 16 Дек 2024
- Сообщения
- 56
- Реакции
- 0
Привет, на связи дядя Пастер (aka селфкодер). Сегодня мы сделаем ебанутый (5минутный) код на Fabric 1.17.1.
Если нету евента, то регистрируем при включение модуля:
Если остаются при выключение, то делаем проверку boolean
ss:
renderPlayerNames:
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:
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:
WorldRenderEvents.AFTER_ENTITIES.register(this::renderPlayerNames);
Если остаются при выключение, то делаем проверку boolean
ss:
Пожалуйста, авторизуйтесь для просмотра ссылки.