-
Автор темы
- #1
Перед прочтением основного контента ниже, пожалуйста, обратите внимание на обновление внутри секции Майна на нашем форуме. У нас появились:
- бесплатные читы для Майнкрафт — любое использование на свой страх и риск;
- маркетплейс Майнкрафт — абсолютно любая коммерция, связанная с игрой, за исключением продажи читов (аккаунты, предоставления услуг, поиск кодеров читов и так далее);
- приватные читы для Minecraft — в этом разделе только платные хаки для игры, покупайте группу "Продавец" и выставляйте на продажу свой софт;
- обсуждения и гайды — всё тот же раздел с вопросами, но теперь модернизированный: поиск нужных хаков, пати с игроками-читерами и другая полезная информация.
Спасибо!
Слив нейметегов. Можно их доделать и сделать esp отображают криво тк залазиют на оригинальный нейметг от майна (можно убрать через миксин) сделать боксы и хп - будет есп
Nametags.java:
package ru.wuq.implement.features.modules.render;
import com.mojang.blaze3d.systems.RenderSystem;
import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderContext;
import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderEvents;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.font.TextRenderer;
import net.minecraft.client.render.GameRenderer;
import net.minecraft.client.render.VertexConsumerProvider;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.entity.player.PlayerEntity;
import ru.wuq.api.feature.module.Module;
import ru.wuq.api.feature.module.ModuleCategory;
import ru.wuq.core.Wuq;
public class NameTags extends Module {
private final MinecraftClient mc = MinecraftClient.getInstance();
public NameTags() {
super("NameTags", ModuleCategory.RENDER);
WorldRenderEvents.AFTER_ENTITIES.register(this::renderPlayerNames);
}
private void renderPlayerNames(WorldRenderContext context) {
if (!Wuq.getInstance().getModuleProvider()
.module("NameTags")
.isState() || mc.world == null) return;
MatrixStack matrixStack = context.matrixStack();
float tickDelta = context.tickDelta();
for (PlayerEntity player : mc.world.getPlayers()) {
if (player != mc.player) {
renderPlayerName(player, matrixStack, tickDelta);
}
}
}
private void renderPlayerName(PlayerEntity player, MatrixStack matrixStack, 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() + 0.5f,
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;
VertexConsumerProvider.Immediate immediate = mc.getBufferBuilders().getEntityVertexConsumers();
RenderSystem.disableDepthTest();
RenderSystem.enableBlend();
RenderSystem.defaultBlendFunc();
RenderSystem.setShader(GameRenderer::getPositionColorProgram);
textRenderer.draw(name, width, 0, 0xFFFFFFFF, false, matrixStack.peek().getPositionMatrix(), immediate, TextRenderer.TextLayerType.SEE_THROUGH, 0, 0xF000F0);
immediate.draw();
RenderSystem.enableDepthTest();
RenderSystem.disableBlend();
matrixStack.pop();
}
@Override
public void activate() {
WorldRenderEvents.AFTER_ENTITIES.register(this::renderPlayerNames);
super.activate();
}
@Override
public void deactivate() {
super.deactivate();
}
}