Подписывайтесь на наш Telegram и не пропускайте важные новости! Перейти

Вопрос Шо мне делать помогите пж

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
18 Май 2023
Сообщения
73
Реакции
0
Код:
Expand Collapse Copy
package mcp.client.module.render;

import com.mojang.blaze3d.systems.RenderSystem;
import com.mojang.blaze3d.vertex.PoseStack;
import mcp.client.events.Subscribe;
import mcp.client.events.impl.Render3DEvent;
import mcp.client.module.settings.Category;
import mcp.client.module.settings.Module;
import mcp.client.settings.BooleanSetting;
import mcp.client.settings.MultiSetting;
import mcp.client.settings.SliderSetting;
import mcp.client.ui.clickgui.other.ModuleCategory;
import mcp.client.utils.fonts.Fonts;
import mcp.client.utils.render.ColorManager;
import mcp.client.utils.render.RenderUtils;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiGraphics;
import net.minecraft.client.multiplayer.PlayerInfo;
import net.minecraft.client.renderer.texture.OverlayTexture;
import net.minecraft.core.component.DataComponents;
import net.minecraft.core.registries.Registries;
import net.minecraft.network.chat.Component;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.effect.MobEffectInstance;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.entity.animal.Animal;
import net.minecraft.world.entity.monster.Monster;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemDisplayContext;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.Items;
import net.minecraft.world.item.enchantment.ItemEnchantments;
import org.lwjgl.opengl.GL11;

import java.util.*;

public class NameTags extends Module {

    public final MultiSetting targets = new MultiSetting("Targets", "Players", "Mobs", "Animals");
    public final MultiSetting elements = new MultiSetting("Elements", "Armor", "Potions", "Enchants", "Special", "Background");
    public final SliderSetting scale = new SliderSetting("Scale", 1.0, 0.5, 2.0);
    public final BooleanSetting self = new BooleanSetting("Self", false);

    private static final Set<String> ENCHANT_WHITELIST = new HashSet<>(Arrays.asList(
            "protection", "fire_protection", "blast_protection", "projectile_protection",
            "sharpness", "fire_aspect", "unbreaking", "efficiency", "mending", "power", "punch"
    ));

    public NameTags() {
        super("NameTags", Category.RENDER);
        addSettings(targets, elements, scale, self);

        targets.setEnabled("Players", true);
        elements.setEnabled("Armor", true);
        elements.setEnabled("Background", true);
        elements.setEnabled("Enchants", true);
    }

    @Subscribe
    public void onRender3D(Render3DEvent event) {
        Minecraft mc = Minecraft.getInstance();
        if (mc.level == null || mc.player == null) return;

        for (Entity entity : mc.level.entitiesForRendering()) {
            if (!(entity instanceof LivingEntity living)) continue;
            if (living == mc.player && (!self.isEnabled() || mc.options.getCameraType().isFirstPerson())) continue;
            if (!isValidTarget(living)) continue;

            renderTag(event.getPoseStack(), living, event);
        }
    }

    private boolean isValidTarget(LivingEntity entity) {
        if (entity instanceof Player) return targets.isEnabled("Players");
        if (entity instanceof Monster) return targets.isEnabled("Mobs");
        if (entity instanceof Animal) return targets.isEnabled("Animals");
        return false;
    }

    private void renderTag(PoseStack stack, LivingEntity entity, Render3DEvent event) {
        Minecraft mc = Minecraft.getInstance();
        double x = entity.xo + (entity.getX() - entity.xo) * event.getPartialTicks() - event.getCamX();
        double y = entity.yo + (entity.getY() - entity.yo) * event.getPartialTicks() - event.getCamY();
        double z = entity.zo + (entity.getZ() - entity.zo) * event.getPartialTicks() - event.getCamZ();

        String name = entity.getDisplayName().getString();
        String hpText = " " + (int) Math.ceil(entity.getHealth()) + " HP";

        if (entity instanceof Player player && mc.getConnection() != null) {
            PlayerInfo info = mc.getConnection().getPlayerInfo(player.getUUID());
            if (info != null) {
                Component tabDisplay = info.getTabListDisplayName();
                if (tabDisplay != null) {
                    name = tabDisplay.getString();
                    hpText = "";
                } else {
                    name = info.getProfile().getName();
                }
            }
        }

        float[] accentRGB = ColorManager.getRGB();
        int accent = ((int) (accentRGB[0] * 255) << 16) | ((int) (accentRGB[1] * 255) << 8) | (int) (accentRGB[2] * 255) | (255 << 24);

        float fontSize = 10f;
        float width = Fonts.INTER_BOLD.getWidth(name + hpText, fontSize) + 10;
        float height = 14;

        stack.pushPose();
        stack.translate(x, y + entity.getBbHeight() + 0.6, z);
        stack.mulPose(mc.getEntityRenderDispatcher().cameraOrientation());

        float dist = mc.player.distanceTo(entity);
        float s = (float) (Math.max(dist / 15.0f, 1.0f) * 0.025f * scale.getValue());
        stack.scale(-s, -s, s);

        GuiGraphics graphics = new GuiGraphics(mc, mc.renderBuffers().bufferSource());
        graphics.pose().last().pose().set(stack.last().pose());
        graphics.pose().last().normal().set(stack.last().normal());

        RenderSystem.enableBlend();
        RenderSystem.disableDepthTest();

        float rx = -width / 2f;
        if (elements.isEnabled("Background")) {
            RenderUtils.drawRoundedRect(graphics, rx, 0, width, height, 3, 0x90000000);
        }

        Fonts.INTER_BOLD.drawString(graphics, name, rx + 5, 3f, -1, fontSize);
        if (!hpText.isEmpty()) {
            Fonts.INTER_BOLD.drawString(graphics, hpText, rx + 5 + Fonts.INTER_BOLD.getWidth(name, fontSize), 3f, accent, fontSize);
        }

        mc.renderBuffers().bufferSource().endBatch();

        if (elements.isEnabled("Potions")) {
            renderPotions(graphics, entity, width / 2f + 4, 0);
        }

        if (elements.isEnabled("Armor")) {
            renderArmor(graphics, entity, 0, -18);
        }

        if (elements.isEnabled("Special") && entity instanceof Player player) {
            renderSpecial(graphics, player, 0, height + 4);
        }

        mc.renderBuffers().bufferSource().endBatch();
        RenderSystem.enableDepthTest();
        stack.popPose();
    }

    private void renderPotions(GuiGraphics graphics, LivingEntity entity, float x, float y) {
        float currentY = y;
        for (MobEffectInstance effect : entity.getActiveEffects()) {
            String name = effect.getEffect().value().getDisplayName().getString();
            if (effect.getAmplifier() > 0) name += " " + (effect.getAmplifier() + 1);
            String time = String.format("%d:%02d", (effect.getDuration() / 20) / 60, (effect.getDuration() / 20) % 60);
            String text = name + " §7" + time;
            Fonts.INTER_BOLD.drawString(graphics, text, x, currentY, -1, 7f);
            currentY += 8;
        }
    }

    private void renderArmor(GuiGraphics graphics, LivingEntity entity, float x, float y) {
        Minecraft mc = Minecraft.getInstance();
        List<ItemStack> items = new ArrayList<>();
        items.add(entity.getMainHandItem());
        if (entity instanceof Player player) {
            for (ItemStack armor : player.getArmorSlots()) items.add(armor);
        }
        items.add(entity.getOffhandItem());
        items.removeIf(ItemStack::isEmpty);

        if (items.isEmpty()) return;

        float startX = x - (items.size() * 16 + (items.size() - 1) * 2) / 2f;
        RenderSystem.enableDepthTest();
        RenderSystem.clear(GL11.GL_DEPTH_BUFFER_BIT);

        for (int i = 0; i < items.size(); i++) {
            ItemStack stack = items.get(i);
            float ix = startX + i * 18;
            graphics.pose().pushPose();
            graphics.pose().translate(ix, y, 0);
            mc.getItemRenderer().renderStatic(stack, ItemDisplayContext.GUI, 0xF000F0, OverlayTexture.NO_OVERLAY, graphics.pose(), mc.renderBuffers().bufferSource(), mc.level, 0);
            graphics.pose().popPose();

            if (elements.isEnabled("Enchants")) {
                renderEnchants(graphics, stack, ix, y - 2);
            }
        }
        mc.renderBuffers().bufferSource().endBatch();
        RenderSystem.disableDepthTest();
    }

    private void renderEnchants(GuiGraphics graphics, ItemStack stack, float x, float y) {
        ItemEnchantments enchantments = stack.get(DataComponents.ENCHANTMENTS);
        if (enchantments == null || enchantments.isEmpty()) return;

        float curY = y;
        var registry = Minecraft.getInstance().level.registryAccess().lookupOrThrow(Registries.ENCHANTMENT);

        for (var entry : enchantments.entrySet()) {
            ResourceLocation loc = registry.getKey(entry.getKey().value());
            if (loc == null) continue;

            String id = loc.getPath();
            if (!ENCHANT_WHITELIST.contains(id)) continue;

            String shortName = id.substring(0, Math.min(id.length(), 3)).toUpperCase();
            Fonts.INTER_BOLD.drawString(graphics, shortName + entry.getIntValue(), x, curY, -1, 5f);
            curY -= 6;
        }
    }

    private void renderSpecial(GuiGraphics graphics, Player player, float x, float y) {
        List<String> found = new ArrayList<>();
        for (int i = 0; i < player.getInventory().getContainerSize(); i++) {
            ItemStack stack = player.getInventory().getItem(i);
            if (stack.isEmpty()) continue;
            String name = stack.getHoverName().getString();
            boolean isSpec = name.contains("Сфера") || name.contains("Руна") || name.contains("Шар") ||
                    name.contains("Талисман") || name.contains("Круш") ||
                    (name.contains("Крылья") && stack.is(Items.ELYTRA));
            if (isSpec && !found.contains(name)) found.add(name);
        }

        float curY = y;
        for (String s : found) {
            float tw = Fonts.INTER_BOLD.getWidth(s, 7f);
            Fonts.INTER_BOLD.drawString(graphics, s, x - tw / 2f, curY, -1, 7f);
            curY += 8;
        }
    }
}

помогите исправить мне этот пиздец нейросеть написала
дс: sw4g1ioniks
ss(этого пиздеца):
1778513677373.png
кто поможет тому спасибо огромное
P.S: у меня mcp reborn 1.21.4
 
Код:
Expand Collapse Copy
package mcp.client.module.render;

import com.mojang.blaze3d.systems.RenderSystem;
import com.mojang.blaze3d.vertex.PoseStack;
import mcp.client.events.Subscribe;
import mcp.client.events.impl.Render3DEvent;
import mcp.client.module.settings.Category;
import mcp.client.module.settings.Module;
import mcp.client.settings.BooleanSetting;
import mcp.client.settings.MultiSetting;
import mcp.client.settings.SliderSetting;
import mcp.client.ui.clickgui.other.ModuleCategory;
import mcp.client.utils.fonts.Fonts;
import mcp.client.utils.render.ColorManager;
import mcp.client.utils.render.RenderUtils;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiGraphics;
import net.minecraft.client.multiplayer.PlayerInfo;
import net.minecraft.client.renderer.texture.OverlayTexture;
import net.minecraft.core.component.DataComponents;
import net.minecraft.core.registries.Registries;
import net.minecraft.network.chat.Component;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.effect.MobEffectInstance;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.entity.animal.Animal;
import net.minecraft.world.entity.monster.Monster;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemDisplayContext;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.Items;
import net.minecraft.world.item.enchantment.ItemEnchantments;
import org.lwjgl.opengl.GL11;

import java.util.*;

public class NameTags extends Module {

    public final MultiSetting targets = new MultiSetting("Targets", "Players", "Mobs", "Animals");
    public final MultiSetting elements = new MultiSetting("Elements", "Armor", "Potions", "Enchants", "Special", "Background");
    public final SliderSetting scale = new SliderSetting("Scale", 1.0, 0.5, 2.0);
    public final BooleanSetting self = new BooleanSetting("Self", false);

    private static final Set<String> ENCHANT_WHITELIST = new HashSet<>(Arrays.asList(
            "protection", "fire_protection", "blast_protection", "projectile_protection",
            "sharpness", "fire_aspect", "unbreaking", "efficiency", "mending", "power", "punch"
    ));

    public NameTags() {
        super("NameTags", Category.RENDER);
        addSettings(targets, elements, scale, self);

        targets.setEnabled("Players", true);
        elements.setEnabled("Armor", true);
        elements.setEnabled("Background", true);
        elements.setEnabled("Enchants", true);
    }

    @Subscribe
    public void onRender3D(Render3DEvent event) {
        Minecraft mc = Minecraft.getInstance();
        if (mc.level == null || mc.player == null) return;

        for (Entity entity : mc.level.entitiesForRendering()) {
            if (!(entity instanceof LivingEntity living)) continue;
            if (living == mc.player && (!self.isEnabled() || mc.options.getCameraType().isFirstPerson())) continue;
            if (!isValidTarget(living)) continue;

            renderTag(event.getPoseStack(), living, event);
        }
    }

    private boolean isValidTarget(LivingEntity entity) {
        if (entity instanceof Player) return targets.isEnabled("Players");
        if (entity instanceof Monster) return targets.isEnabled("Mobs");
        if (entity instanceof Animal) return targets.isEnabled("Animals");
        return false;
    }

    private void renderTag(PoseStack stack, LivingEntity entity, Render3DEvent event) {
        Minecraft mc = Minecraft.getInstance();
        double x = entity.xo + (entity.getX() - entity.xo) * event.getPartialTicks() - event.getCamX();
        double y = entity.yo + (entity.getY() - entity.yo) * event.getPartialTicks() - event.getCamY();
        double z = entity.zo + (entity.getZ() - entity.zo) * event.getPartialTicks() - event.getCamZ();

        String name = entity.getDisplayName().getString();
        String hpText = " " + (int) Math.ceil(entity.getHealth()) + " HP";

        if (entity instanceof Player player && mc.getConnection() != null) {
            PlayerInfo info = mc.getConnection().getPlayerInfo(player.getUUID());
            if (info != null) {
                Component tabDisplay = info.getTabListDisplayName();
                if (tabDisplay != null) {
                    name = tabDisplay.getString();
                    hpText = "";
                } else {
                    name = info.getProfile().getName();
                }
            }
        }

        float[] accentRGB = ColorManager.getRGB();
        int accent = ((int) (accentRGB[0] * 255) << 16) | ((int) (accentRGB[1] * 255) << 8) | (int) (accentRGB[2] * 255) | (255 << 24);

        float fontSize = 10f;
        float width = Fonts.INTER_BOLD.getWidth(name + hpText, fontSize) + 10;
        float height = 14;

        stack.pushPose();
        stack.translate(x, y + entity.getBbHeight() + 0.6, z);
        stack.mulPose(mc.getEntityRenderDispatcher().cameraOrientation());

        float dist = mc.player.distanceTo(entity);
        float s = (float) (Math.max(dist / 15.0f, 1.0f) * 0.025f * scale.getValue());
        stack.scale(-s, -s, s);

        GuiGraphics graphics = new GuiGraphics(mc, mc.renderBuffers().bufferSource());
        graphics.pose().last().pose().set(stack.last().pose());
        graphics.pose().last().normal().set(stack.last().normal());

        RenderSystem.enableBlend();
        RenderSystem.disableDepthTest();

        float rx = -width / 2f;
        if (elements.isEnabled("Background")) {
            RenderUtils.drawRoundedRect(graphics, rx, 0, width, height, 3, 0x90000000);
        }

        Fonts.INTER_BOLD.drawString(graphics, name, rx + 5, 3f, -1, fontSize);
        if (!hpText.isEmpty()) {
            Fonts.INTER_BOLD.drawString(graphics, hpText, rx + 5 + Fonts.INTER_BOLD.getWidth(name, fontSize), 3f, accent, fontSize);
        }

        mc.renderBuffers().bufferSource().endBatch();

        if (elements.isEnabled("Potions")) {
            renderPotions(graphics, entity, width / 2f + 4, 0);
        }

        if (elements.isEnabled("Armor")) {
            renderArmor(graphics, entity, 0, -18);
        }

        if (elements.isEnabled("Special") && entity instanceof Player player) {
            renderSpecial(graphics, player, 0, height + 4);
        }

        mc.renderBuffers().bufferSource().endBatch();
        RenderSystem.enableDepthTest();
        stack.popPose();
    }

    private void renderPotions(GuiGraphics graphics, LivingEntity entity, float x, float y) {
        float currentY = y;
        for (MobEffectInstance effect : entity.getActiveEffects()) {
            String name = effect.getEffect().value().getDisplayName().getString();
            if (effect.getAmplifier() > 0) name += " " + (effect.getAmplifier() + 1);
            String time = String.format("%d:%02d", (effect.getDuration() / 20) / 60, (effect.getDuration() / 20) % 60);
            String text = name + " §7" + time;
            Fonts.INTER_BOLD.drawString(graphics, text, x, currentY, -1, 7f);
            currentY += 8;
        }
    }

    private void renderArmor(GuiGraphics graphics, LivingEntity entity, float x, float y) {
        Minecraft mc = Minecraft.getInstance();
        List<ItemStack> items = new ArrayList<>();
        items.add(entity.getMainHandItem());
        if (entity instanceof Player player) {
            for (ItemStack armor : player.getArmorSlots()) items.add(armor);
        }
        items.add(entity.getOffhandItem());
        items.removeIf(ItemStack::isEmpty);

        if (items.isEmpty()) return;

        float startX = x - (items.size() * 16 + (items.size() - 1) * 2) / 2f;
        RenderSystem.enableDepthTest();
        RenderSystem.clear(GL11.GL_DEPTH_BUFFER_BIT);

        for (int i = 0; i < items.size(); i++) {
            ItemStack stack = items.get(i);
            float ix = startX + i * 18;
            graphics.pose().pushPose();
            graphics.pose().translate(ix, y, 0);
            mc.getItemRenderer().renderStatic(stack, ItemDisplayContext.GUI, 0xF000F0, OverlayTexture.NO_OVERLAY, graphics.pose(), mc.renderBuffers().bufferSource(), mc.level, 0);
            graphics.pose().popPose();

            if (elements.isEnabled("Enchants")) {
                renderEnchants(graphics, stack, ix, y - 2);
            }
        }
        mc.renderBuffers().bufferSource().endBatch();
        RenderSystem.disableDepthTest();
    }

    private void renderEnchants(GuiGraphics graphics, ItemStack stack, float x, float y) {
        ItemEnchantments enchantments = stack.get(DataComponents.ENCHANTMENTS);
        if (enchantments == null || enchantments.isEmpty()) return;

        float curY = y;
        var registry = Minecraft.getInstance().level.registryAccess().lookupOrThrow(Registries.ENCHANTMENT);

        for (var entry : enchantments.entrySet()) {
            ResourceLocation loc = registry.getKey(entry.getKey().value());
            if (loc == null) continue;

            String id = loc.getPath();
            if (!ENCHANT_WHITELIST.contains(id)) continue;

            String shortName = id.substring(0, Math.min(id.length(), 3)).toUpperCase();
            Fonts.INTER_BOLD.drawString(graphics, shortName + entry.getIntValue(), x, curY, -1, 5f);
            curY -= 6;
        }
    }

    private void renderSpecial(GuiGraphics graphics, Player player, float x, float y) {
        List<String> found = new ArrayList<>();
        for (int i = 0; i < player.getInventory().getContainerSize(); i++) {
            ItemStack stack = player.getInventory().getItem(i);
            if (stack.isEmpty()) continue;
            String name = stack.getHoverName().getString();
            boolean isSpec = name.contains("Сфера") || name.contains("Руна") || name.contains("Шар") ||
                    name.contains("Талисман") || name.contains("Круш") ||
                    (name.contains("Крылья") && stack.is(Items.ELYTRA));
            if (isSpec && !found.contains(name)) found.add(name);
        }

        float curY = y;
        for (String s : found) {
            float tw = Fonts.INTER_BOLD.getWidth(s, 7f);
            Fonts.INTER_BOLD.drawString(graphics, s, x - tw / 2f, curY, -1, 7f);
            curY += 8;
        }
    }
}

помогите исправить мне этот пиздец нейросеть написала
дс: sw4g1ioniks
ss(этого пиздеца): Посмотреть вложение 335659кто поможет тому спасибо огромное
P.S: у меня mcp reborn 1.21.4

С чем именно помочь? Ты предложение нормально составь и объясни чо те нужно
 
Назад
Сверху Снизу