• Ищем качественного (не новичок) разработчиков Xenforo для этого форума! В идеале, чтобы ты был фулл стек программистом. Если у тебя есть что показать, то свяжись с нами по контактным данным: https://t.me/DREDD

Вопрос Tracers

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
27 Дек 2024
Сообщения
100
Реакции
0
Писал через чат Гпт тк сам ещё не умею можете помочь что не так

Tracers:
Expand Collapse Copy
package im.geassclient.functions.impl.player;

import com.google.common.eventbus.Subscribe;
import im.geassclient.command.friends.FriendStorage;
import im.geassclient.events.EventKey;
import im.geassclient.events.EventUpdate;
import im.geassclient.functions.api.Category;
import im.geassclient.functions.api.Function;
import im.geassclient.functions.api.FunctionRegister;
import im.geassclient.functions.settings.impl.ModeSetting;
import net.minecraft.client.Minecraft;
import net.minecraft.entity.item.ItemEntity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.util.text.TextComponent;
import net.minecraft.util.math.vector.Vector3d;
import net.minecraft.util.math.AxisAlignedBB;

import java.util.List;

@FunctionRegister(name = "Tracers", type = Category.Player)
public class TracersFunction extends Function {

    private ModeSetting tracersPlayer;
    private ModeSetting tracersItems;
    private ModeSetting tracersFriends;

    public TracersFunction() {
        super("Tracers", Category.Player);

        tracersPlayer = new ModeSetting("Tracers for Players", "Включено", new String[]{"Включено", "Выключено"});
        tracersItems = new ModeSetting("Tracers for Items", "Включено", new String[]{"Включено", "Выключено"});
        tracersFriends = new ModeSetting("Tracers for Friends", "Включено", new String[]{"Включено", "Выключено"});

        addSettings(tracersPlayer, tracersItems, tracersFriends);
    }

    @Subscribe
    public void onKey(EventKey e) {
        if (e.getKey() == 1) {
            openContextMenu();
        }
    }

    private void openContextMenu() {
        print("Меню Tracers: Выберите настройки лучей.");
    }

    @Subscribe
    public void onUpdate(EventUpdate e) {
        if (tracersPlayer.get().equals("Включено")) {
            renderTracersForPlayers(Minecraft.getInstance().world.getEntitiesWithinAABB(PlayerEntity.class, new AxisAlignedBB(-100, -100, -100, 100, 100, 100)));
        }
        if (tracersItems.get().equals("Включено")) {
            renderTracersForItems(Minecraft.getInstance().world.getEntitiesWithinAABB(ItemEntity.class, new AxisAlignedBB(-100, -100, -100, 100, 100, 100)));
        }
        if (tracersFriends.get().equals("Включено")) {
            renderTracersForFriends(FriendStorage.getFriends());
        }
    }

    private void renderTracersForPlayers(List<PlayerEntity> players) {
        for (PlayerEntity player : players) {
            Vector3d playerPosition = player.getPositionVec();
            System.out.println("Отрисовываем луч к игроку: " + player.getName().getString());
        }
    }

    private void renderTracersForItems(List<ItemEntity> items) {
        for (ItemEntity item : items) {
            Vector3d itemPosition = item.getPositionVec();
            System.out.println("Отрисовываем луч к предмету: " + item.getDisplayName().getString());
        }
    }

    private void renderTracersForFriends(List<String> friends) {
        for (String friendName : friends) {
            PlayerEntity friend = Minecraft.getInstance().world.getPlayerByUuid(FriendStorage.getFriendUuid(friendName));
            if (friend != null) {
                Vector3d friendPosition = friend.getPositionVec();
                System.out.println("Отрисовываем луч к другу: " + friend.getName().getString());
            } else {
                print("Не удалось найти друга с именем: " + friendName);
            }
        }
    }




    private void print(String message) {
        if (Minecraft.getInstance().player != null) {
            Minecraft.getInstance().player.sendMessage(new TextComponent(message), Minecraft.getInstance().player.getUuid());
        }
    }
}




ClickActions:
Expand Collapse Copy
package im.geassclient.functions.impl.player;

import com.google.common.eventbus.Subscribe;
import im.geassclient.command.friends.FriendStorage;
import im.geassclient.events.EventKey;
import im.geassclient.events.EventMotion;
import im.geassclient.events.EventPacket;
import im.geassclient.events.EventUpdate;
import im.geassclient.functions.api.Category;
import im.geassclient.functions.api.Function;
import im.geassclient.functions.api.FunctionRegister;
import im.geassclient.functions.settings.impl.BindSetting;
import im.geassclient.functions.settings.impl.ModeSetting;
import im.geassclient.utils.math.StopWatch;
import im.geassclient.utils.player.InventoryUtil;
import im.geassclient.utils.player.PlayerUtils;
import lombok.AccessLevel;
import lombok.experimental.FieldDefaults;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.EnderPearlItem;
import net.minecraft.item.Items;
import net.minecraft.network.play.client.CHeldItemChangePacket;
import net.minecraft.network.play.client.CPlayerTryUseItemPacket;
import net.minecraft.util.Hand;

@FieldDefaults(level = AccessLevel.PRIVATE)
@FunctionRegister(name = "ClickActions", type = Category.Player)
public class ClickActions extends Function {

    final BindSetting throwKey = new BindSetting("Кнопка", -98);
    final ModeSetting clickPearl = new ModeSetting("ClickPearl", "Включено", new String[]{"Включено", "Выключено"});
    final ModeSetting clickFriend = new ModeSetting("ClickFriend", "Включено", new String[]{"Включено", "Выключено"});
    final StopWatch stopWatch = new StopWatch();
    final InventoryUtil.Hand handUtil = new InventoryUtil.Hand();

    private final ItemCooldown itemCooldown = new ItemCooldown();
    long delay;
    boolean throwPearl;

    public ClickActions() {
        super("ClickActions", Category.Player);
        addSettings(throwKey, clickPearl, clickFriend);
    }

    @Subscribe
    public void onKey(EventKey e) {
        if (e.getKey() == throwKey.get()) {
            if (clickFriend.get().equals("Включено")) {
                handleFriendInteraction();
            }
            if (clickPearl.get().equals("Включено")) {
                throwPearl = true;
            }
        }
    }

    private void handleFriendInteraction() {
        if (mc.pointedEntity instanceof PlayerEntity) {
            String playerName = mc.pointedEntity.getName().getString();
            if (!PlayerUtils.isNameValid(playerName)) {
                print("Невозможно добавить бота в друзья, увы, как бы вам не хотелось это сделать");
                return;
            }
            if (FriendStorage.isFriend(playerName)) {
                FriendStorage.remove(playerName);
                printStatus(playerName, true);
            } else {
                FriendStorage.add(playerName);
                printStatus(playerName, false);
            }
        }
    }

    @Subscribe
    private void onMotion(EventMotion e) {
        if (throwPearl && clickPearl.get().equals("Включено")) {
            if (!mc.player.getCooldownTracker().hasCooldown(Items.ENDER_PEARL)) {
                boolean isOffhandEnderPearl = mc.player.getHeldItemOffhand().getItem() instanceof EnderPearlItem;
                if (isOffhandEnderPearl) {
                    mc.player.connection.sendPacket(new CPlayerTryUseItemPacket(Hand.MAIN_HAND));
                    mc.player.swingArm(Hand.MAIN_HAND);
                } else {
                    int slot = findPearlAndThrow();
                    if (slot > 8) {
                        mc.playerController.pickItem(slot);
                    }
                }
            }
            throwPearl = false;
        }
    }

    @Subscribe
    private void onUpdate(EventUpdate e) {
        this.handUtil.handleItemChange(System.currentTimeMillis() - this.delay > 200L);
    }

    @Subscribe
    private void onPacket(EventPacket e) {
        this.handUtil.onEventPacket(e);
    }

    private int findPearlAndThrow() {
        int hbSlot = InventoryUtil.getInstance().getSlotInInventoryOrHotbar(Items.ENDER_PEARL, true);
        if (hbSlot != -1) {
            this.handUtil.setOriginalSlot(mc.player.inventory.currentItem);
            if (hbSlot != mc.player.inventory.currentItem) {
                mc.player.connection.sendPacket(new CHeldItemChangePacket(hbSlot));
            }
            mc.player.connection.sendPacket(new CPlayerTryUseItemPacket(Hand.MAIN_HAND));
            mc.player.swingArm(Hand.MAIN_HAND);
            updateItemCooldown();
            if (hbSlot != mc.player.inventory.currentItem) {
                mc.player.connection.sendPacket(new CHeldItemChangePacket(mc.player.inventory.currentItem));
            }
            this.delay = System.currentTimeMillis();
            return hbSlot;
        }

        int invSlot = InventoryUtil.getInstance().getSlotInInventoryOrHotbar(Items.ENDER_PEARL, false);
        if (invSlot != -1) {
            this.handUtil.setOriginalSlot(mc.player.inventory.currentItem);
            mc.playerController.pickItem(invSlot);
            mc.player.connection.sendPacket(new CPlayerTryUseItemPacket(Hand.MAIN_HAND));
            mc.player.swingArm(Hand.MAIN_HAND);
            updateItemCooldown();
            this.delay = System.currentTimeMillis();
            return invSlot;
        }

        return -1;
    }

    private void updateItemCooldown() {
        itemCooldown.updateItemCooldown(Items.ENDER_PEARL);
    }

    void printStatus(String name, boolean remove) {
        if (remove) {
            print(name + " удалён из друзей");
        } else {
            print(name + " добавлен в друзья");
        }
    }

    [USER=1367676]@override[/USER]
    public void onDisable() {
        throwPearl = false;
        delay = 0;
        super.onDisable();
    }
}
ClickActions работает, а вот код трайсеров не работает помогите кому не сложно
 
А что именно не работает?
 
А что именно не работает?
Tracers:
Expand Collapse Copy
package im.geassclient.functions.impl.player;

import com.google.common.eventbus.Subscribe;
import im.geassclient.events.EventKey;
import im.geassclient.events.EventUpdate;
import im.geassclient.functions.api.Category;
import im.geassclient.functions.api.Function;
import im.geassclient.functions.api.FunctionRegister;
import im.geassclient.functions.settings.impl.ModeSetting;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.BufferBuilder;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
import net.minecraft.entity.item.ItemEntity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.util.math.vector.Vector3d;
import net.minecraft.util.text.StringTextComponent;
import org.lwjgl.opengl.GL11;

import java.util.List;

@FunctionRegister(name = "Tracers", type = Category.Player)
public class Tracers extends Function {

    private ModeSetting tracersPlayer;
    private ModeSetting tracersItems;
    private ModeSetting tracersFriends;

    public Tracers() {
        super("Tracers", Category.Player);

        tracersPlayer = new ModeSetting("Tracers for Players", "Включено", new String[]{"Включено", "Выключено"});
        tracersItems = new ModeSetting("Tracers for Items", "Включено", new String[]{"Включено", "Выключено"});
        tracersFriends = new ModeSetting("Tracers for Friends", "Включено", new String[]{"Включено", "Выключено"});

        addSettings(tracersPlayer, tracersItems, tracersFriends);
    }

    @Subscribe
    public void onKey(EventKey e) {
        if (e.getKey() == 1) {  // 1 — это правая кнопка мыши
            openContextMenu();
        }
    }

    private void openContextMenu() {
        print("Меню Tracers: Выберите настройки лучей.");
    }

    @Subscribe
    public void onUpdate(EventUpdate e) {
        if (tracersPlayer.get().equals("Включено")) {
            renderTracersForPlayers(Minecraft.getInstance().world.getEntitiesWithinAABB(PlayerEntity.class, new AxisAlignedBB(-100, -100, -100, 100, 100, 100)));
        }
        if (tracersItems.get().equals("Включено")) {
            renderTracersForItems(Minecraft.getInstance().world.getEntitiesWithinAABB(ItemEntity.class, new AxisAlignedBB(-100, -100, -100, 100, 100, 100)));
        }
        if (tracersFriends.get().equals("Включено")) {
            List<PlayerEntity> friends = FriendStorage.getFriendsEntities(); // Получаем список объектов игроков-друзей
            for (PlayerEntity friend : friends) {
                if (friend != null) {
                    renderTracersForFriends(friend); // Отрисовываем трайсер для друга
                }
            }
        }
    }

    private void renderTracersForPlayers(List<PlayerEntity> players) {
        for (PlayerEntity player : players) {
            Vector3d playerPosition = player.getPositionVec();
            renderTracer(playerPosition, 1.0f, 0.0f, 0.0f); // Красный цвет для игроков
        }
    }

    private void renderTracersForItems(List<ItemEntity> items) {
        for (ItemEntity item : items) {
            Vector3d itemPosition = item.getPositionVec();
            renderTracer(itemPosition, 0.0f, 0.0f, 1.0f); // Синий цвет для предметов
        }
    }

    private void renderTracersForFriends(PlayerEntity friend) {
        Vector3d friendPosition = friend.getPositionVec();
        renderTracer(friendPosition, 0.0f, 1.0f, 0.0f); // Зеленый цвет для друзей
    }

    private void renderTracer(Vector3d position, float red, float green, float blue) {
        Minecraft mc = Minecraft.getInstance();
        if (mc.player == null) return;

        // Получаем позицию игрока
        Vector3d playerPos = mc.player.getPositionVec();

        // Делаем рендеринг в контексте OpenGL
        GL11.glPushMatrix();
        GL11.glDisable(GL11.GL_TEXTURE_2D);
        GL11.glDisable(GL11.GL_DEPTH_TEST);
        GL11.glEnable(GL11.GL_BLEND);
        GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);

        // Рисуем линию с помощью Minecraft Rendering API (Tessellator)
        Tessellator tessellator = Tessellator.getInstance();
        BufferBuilder buffer = tessellator.getBuffer();
        buffer.begin(GL11.GL_LINES, DefaultVertexFormats.POSITION_COLOR);

        // Начало линии: от позиции игрока
        buffer.pos(playerPos.x, playerPos.y + mc.player.getEyeHeight(), playerPos.z)
                .color(red, green, blue, 1.0f) // Устанавливаем цвет линии
                .endVertex();

        // Конец линии: позиция объекта
        buffer.pos(position.x, position.y, position.z)
                .color(red, green, blue, 1.0f) // Устанавливаем цвет линии
                .endVertex();

        tessellator.draw();

        GL11.glDisable(GL11.GL_BLEND);
        GL11.glEnable(GL11.GL_DEPTH_TEST);
        GL11.glEnable(GL11.GL_TEXTURE_2D);
        GL11.glPopMatrix();
    }

    // Метод для вывода сообщений в чат
    public void print(String message) {
        if (Minecraft.getInstance().player != null) {
            Minecraft.getInstance().player.sendMessage(new StringTextComponent(message), Minecraft.getInstance().player.getUniqueID());
        }
    }
}
Немного изменил код теперь в нём пишет что ошибок нету но трайсера в игре не показываются хз уже что делать
 
так у тебя кода на отрисоввку нету даже, тупо в консоль выводит сообщение
 
нет, в чём проблема если ты сидишь на 3.1 базе, у тебя же там уже есть модуль трейсеров
У меня чистая база 3.1 без функций я их с 0 добавляю
или ты не про это
 
не было у меня у меня чистая база 3.1 без антибота без нечего я всё с 0 добавляю
если ты криворукий зачем ты с 0 что то делаешь, на югейме есть много говна напасти
 
Назад
Сверху Снизу