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

Часть функционала UseTraker | night 1.1.3\excellent

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
10 Янв 2025
Сообщения
101
Реакции
0
Выберите загрузчик игры
  1. Прочие моды
писалось 10 минут бралось с еблуды
сс - не нужен тк просто в чат пишет
код -
Код:
Expand Collapse Copy
package dev.kodek.client.managers.module.impl.player;

import dev.kodek.client.api.events.orbit.EventHandler;
import dev.kodek.client.managers.events.other.PacketEvent;
import dev.kodek.client.managers.events.player.UpdateEvent;
import dev.kodek.client.managers.module.Category;
import dev.kodek.client.managers.module.Module;
import dev.kodek.client.managers.module.ModuleInfo;
import dev.kodek.client.managers.module.impl.combat.utils.FriendManager;
import dev.kodek.client.managers.module.settings.impl.BooleanSetting;
import lombok.Data;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.item.UseAction;
import net.minecraft.network.play.server.SEntityStatusPacket;
import net.minecraft.util.Hand;
import net.minecraft.util.text.TextFormatting;

import java.util.HashMap;
import java.util.Map;

@ModuleInfo(name = "UseTracker", category = Category.PLAYER, desc = "Кто что использовал")
public class UseTracker extends Module {

    private final BooleanSetting friendIgnore = new BooleanSetting(this, "Игнор друзей", true);
    private final BooleanSetting showSelf = new BooleanSetting(this, "Показывать свои попы", false);
    private final BooleanSetting notifications = new BooleanSetting(this, "Уведомления", true);

    private ItemStack lastItem = ItemStack.EMPTY;
    private boolean wasUsing = false;
    private int lastMaxCount = 0;
    private Hand lastHand = Hand.MAIN_HAND;

    private final Map<String, PlayerState> states = new HashMap<>();

    @Data
    static class PlayerState {
        ItemStack mainHand = ItemStack.EMPTY;
        ItemStack offHand = ItemStack.EMPTY;
        boolean mainUsing = false;
        boolean offUsing = false;
    }

    @EventHandler
    public void onPacket(PacketEvent event) {
        if (mc.player == null) return;

        if (event.getPacket() instanceof SEntityStatusPacket) {
            SEntityStatusPacket packet = (SEntityStatusPacket) event.getPacket();

            if (packet.getOpCode() == 35) {
                PlayerEntity player = (PlayerEntity) packet.getEntity(mc.world);

                if (player != null) {
                    if (player == mc.player && !showSelf.getValue()) return;

                    if (friendIgnore.getValue() && FriendManager.isFriend(player.getName().getString())) {
                        return;
                    }

                    ItemStack totem = getTotem(player);
                    sendTotemMsg(player.getName().getString(), totem, player == mc.player);
                }
            }
        }
    }

    @EventHandler
    public void onUpdate(UpdateEvent event) {
        if (mc.player == null || mc.world == null) return;

        // Свои поедалки
        if (mc.player.isHandActive()) {
            ItemStack item = mc.player.getActiveItemStack();
            Hand hand = mc.player.getActiveHand();

            if (!wasUsing) {
                if (!item.isEmpty()) {
                    UseAction action = item.getUseAction();

                    if (action == UseAction.EAT || action == UseAction.DRINK) {
                        lastItem = item.copy();
                        lastMaxCount = mc.player.getItemInUseMaxCount();
                        lastHand = hand;
                    }
                }
                wasUsing = true;
            }
        } else {
            if (wasUsing) {
                if (!lastItem.isEmpty()) {
                    ItemStack current = lastHand == Hand.MAIN_HAND
                            ? mc.player.getHeldItemMainhand()
                            : mc.player.getHeldItemOffhand();

                    boolean used = false;

                    if (lastItem.getItem() == Items.MILK_BUCKET && current.getItem() == Items.BUCKET) {
                        used = true;
                    } else if (lastItem.getItem() == Items.HONEY_BOTTLE && current.getItem() == Items.GLASS_BOTTLE) {
                        used = true;
                    } else if (lastItem.getCount() > current.getCount()) {
                        used = true;
                    }

                    if (used && showSelf.getValue()) {
                        sendEatMsg(mc.player.getName().getString(), lastItem, true);
                    }
                }

                lastItem = ItemStack.EMPTY;
                wasUsing = false;
            }
        }

        // Другие игроки
        for (PlayerEntity player : mc.world.getPlayers()) {
            if (player == mc.player) continue;

            if (friendIgnore.getValue() && FriendManager.isFriend(player.getName().getString())) {
                continue;
            }

            String name = player.getName().getString();
            PlayerState state = states.computeIfAbsent(name, k -> new PlayerState());

            ItemStack main = player.getHeldItemMainhand();
            ItemStack off = player.getHeldItemOffhand();

            boolean mainUsing = player.isHandActive() && player.getActiveHand() == Hand.MAIN_HAND;
            boolean offUsing = player.isHandActive() && player.getActiveHand() == Hand.OFF_HAND;

            if (state.mainUsing && !mainUsing) {
                if (checkUsed(state.mainHand, main)) {
                    sendEatMsg(name, state.mainHand, false);
                }
            }

            if (state.offUsing && !offUsing) {
                if (checkUsed(state.offHand, off)) {
                    sendEatMsg(name, state.offHand, false);
                }
            }

            state.mainHand = main.copy();
            state.offHand = off.copy();
            state.mainUsing = mainUsing;
            state.offUsing = offUsing;
        }

        states.entrySet().removeIf(entry ->
                mc.world.getPlayers().stream().noneMatch(p -> p.getName().getString().equals(entry.getKey()))
        );
    }

    private boolean checkUsed(ItemStack before, ItemStack after) {
        if (before.isEmpty()) return false;

        if (before.getItem() == Items.MILK_BUCKET && after.getItem() == Items.BUCKET) return true;
        if (before.getItem() == Items.HONEY_BOTTLE && after.getItem() == Items.GLASS_BOTTLE) return true;
        if (before.getCount() > after.getCount()) return true;

        return false;
    }

    private ItemStack getTotem(PlayerEntity player) {
        ItemStack main = player.getHeldItemMainhand();
        ItemStack off = player.getHeldItemOffhand();

        if (main.getItem() == Items.TOTEM_OF_UNDYING) return main;
        if (off.getItem() == Items.TOTEM_OF_UNDYING) return off;

        return new ItemStack(Items.TOTEM_OF_UNDYING);
    }

    private void sendTotemMsg(String name, ItemStack totem, boolean self) {
        if (!notifications.getValue()) return;

        String ench = totem.isEnchanted() ? TextFormatting.GREEN + "✔" : TextFormatting.RED + "✘";
        String prefix = self ? TextFormatting.YELLOW + "[Я] " : "";

        String msg = String.format(
                "%s%s%s %sдернул тотем %s",
                prefix,
                TextFormatting.WHITE,
                name,
                TextFormatting.GRAY,
                ench
        );

        print(msg);
    }

    private void sendEatMsg(String name, ItemStack item, boolean self) {
        if (!notifications.getValue()) return;

        String prefix = self ? TextFormatting.YELLOW + "[Я] " : "";
        String itemName = item.getDisplayName().getString();

        String msg = String.format(
                "%s%s%s %sсъел/выпил %s%s",
                prefix,
                TextFormatting.WHITE,
                name,
                TextFormatting.GRAY,
                TextFormatting.YELLOW,
                itemName
        );

        print(msg);
    }

    private void print(String text) {
        if (mc.player != null && mc.ingameGUI != null) {
            mc.ingameGUI.getChatGUI().printChatMessage(new net.minecraft.util.text.StringTextComponent(text));
        }
    }
}
 
писалось 10 минут бралось с еблуды
сс - не нужен тк просто в чат пишет
код -
Код:
Expand Collapse Copy
package dev.kodek.client.managers.module.impl.player;

import dev.kodek.client.api.events.orbit.EventHandler;
import dev.kodek.client.managers.events.other.PacketEvent;
import dev.kodek.client.managers.events.player.UpdateEvent;
import dev.kodek.client.managers.module.Category;
import dev.kodek.client.managers.module.Module;
import dev.kodek.client.managers.module.ModuleInfo;
import dev.kodek.client.managers.module.impl.combat.utils.FriendManager;
import dev.kodek.client.managers.module.settings.impl.BooleanSetting;
import lombok.Data;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.item.UseAction;
import net.minecraft.network.play.server.SEntityStatusPacket;
import net.minecraft.util.Hand;
import net.minecraft.util.text.TextFormatting;

import java.util.HashMap;
import java.util.Map;

@ModuleInfo(name = "UseTracker", category = Category.PLAYER, desc = "Кто что использовал")
public class UseTracker extends Module {

    private final BooleanSetting friendIgnore = new BooleanSetting(this, "Игнор друзей", true);
    private final BooleanSetting showSelf = new BooleanSetting(this, "Показывать свои попы", false);
    private final BooleanSetting notifications = new BooleanSetting(this, "Уведомления", true);

    private ItemStack lastItem = ItemStack.EMPTY;
    private boolean wasUsing = false;
    private int lastMaxCount = 0;
    private Hand lastHand = Hand.MAIN_HAND;

    private final Map<String, PlayerState> states = new HashMap<>();

    @Data
    static class PlayerState {
        ItemStack mainHand = ItemStack.EMPTY;
        ItemStack offHand = ItemStack.EMPTY;
        boolean mainUsing = false;
        boolean offUsing = false;
    }

    @EventHandler
    public void onPacket(PacketEvent event) {
        if (mc.player == null) return;

        if (event.getPacket() instanceof SEntityStatusPacket) {
            SEntityStatusPacket packet = (SEntityStatusPacket) event.getPacket();

            if (packet.getOpCode() == 35) {
                PlayerEntity player = (PlayerEntity) packet.getEntity(mc.world);

                if (player != null) {
                    if (player == mc.player && !showSelf.getValue()) return;

                    if (friendIgnore.getValue() && FriendManager.isFriend(player.getName().getString())) {
                        return;
                    }

                    ItemStack totem = getTotem(player);
                    sendTotemMsg(player.getName().getString(), totem, player == mc.player);
                }
            }
        }
    }

    @EventHandler
    public void onUpdate(UpdateEvent event) {
        if (mc.player == null || mc.world == null) return;

        // Свои поедалки
        if (mc.player.isHandActive()) {
            ItemStack item = mc.player.getActiveItemStack();
            Hand hand = mc.player.getActiveHand();

            if (!wasUsing) {
                if (!item.isEmpty()) {
                    UseAction action = item.getUseAction();

                    if (action == UseAction.EAT || action == UseAction.DRINK) {
                        lastItem = item.copy();
                        lastMaxCount = mc.player.getItemInUseMaxCount();
                        lastHand = hand;
                    }
                }
                wasUsing = true;
            }
        } else {
            if (wasUsing) {
                if (!lastItem.isEmpty()) {
                    ItemStack current = lastHand == Hand.MAIN_HAND
                            ? mc.player.getHeldItemMainhand()
                            : mc.player.getHeldItemOffhand();

                    boolean used = false;

                    if (lastItem.getItem() == Items.MILK_BUCKET && current.getItem() == Items.BUCKET) {
                        used = true;
                    } else if (lastItem.getItem() == Items.HONEY_BOTTLE && current.getItem() == Items.GLASS_BOTTLE) {
                        used = true;
                    } else if (lastItem.getCount() > current.getCount()) {
                        used = true;
                    }

                    if (used && showSelf.getValue()) {
                        sendEatMsg(mc.player.getName().getString(), lastItem, true);
                    }
                }

                lastItem = ItemStack.EMPTY;
                wasUsing = false;
            }
        }

        // Другие игроки
        for (PlayerEntity player : mc.world.getPlayers()) {
            if (player == mc.player) continue;

            if (friendIgnore.getValue() && FriendManager.isFriend(player.getName().getString())) {
                continue;
            }

            String name = player.getName().getString();
            PlayerState state = states.computeIfAbsent(name, k -> new PlayerState());

            ItemStack main = player.getHeldItemMainhand();
            ItemStack off = player.getHeldItemOffhand();

            boolean mainUsing = player.isHandActive() && player.getActiveHand() == Hand.MAIN_HAND;
            boolean offUsing = player.isHandActive() && player.getActiveHand() == Hand.OFF_HAND;

            if (state.mainUsing && !mainUsing) {
                if (checkUsed(state.mainHand, main)) {
                    sendEatMsg(name, state.mainHand, false);
                }
            }

            if (state.offUsing && !offUsing) {
                if (checkUsed(state.offHand, off)) {
                    sendEatMsg(name, state.offHand, false);
                }
            }

            state.mainHand = main.copy();
            state.offHand = off.copy();
            state.mainUsing = mainUsing;
            state.offUsing = offUsing;
        }

        states.entrySet().removeIf(entry ->
                mc.world.getPlayers().stream().noneMatch(p -> p.getName().getString().equals(entry.getKey()))
        );
    }

    private boolean checkUsed(ItemStack before, ItemStack after) {
        if (before.isEmpty()) return false;

        if (before.getItem() == Items.MILK_BUCKET && after.getItem() == Items.BUCKET) return true;
        if (before.getItem() == Items.HONEY_BOTTLE && after.getItem() == Items.GLASS_BOTTLE) return true;
        if (before.getCount() > after.getCount()) return true;

        return false;
    }

    private ItemStack getTotem(PlayerEntity player) {
        ItemStack main = player.getHeldItemMainhand();
        ItemStack off = player.getHeldItemOffhand();

        if (main.getItem() == Items.TOTEM_OF_UNDYING) return main;
        if (off.getItem() == Items.TOTEM_OF_UNDYING) return off;

        return new ItemStack(Items.TOTEM_OF_UNDYING);
    }

    private void sendTotemMsg(String name, ItemStack totem, boolean self) {
        if (!notifications.getValue()) return;

        String ench = totem.isEnchanted() ? TextFormatting.GREEN + "✔" : TextFormatting.RED + "✘";
        String prefix = self ? TextFormatting.YELLOW + "[Я] " : "";

        String msg = String.format(
                "%s%s%s %sдернул тотем %s",
                prefix,
                TextFormatting.WHITE,
                name,
                TextFormatting.GRAY,
                ench
        );

        print(msg);
    }

    private void sendEatMsg(String name, ItemStack item, boolean self) {
        if (!notifications.getValue()) return;

        String prefix = self ? TextFormatting.YELLOW + "[Я] " : "";
        String itemName = item.getDisplayName().getString();

        String msg = String.format(
                "%s%s%s %sсъел/выпил %s%s",
                prefix,
                TextFormatting.WHITE,
                name,
                TextFormatting.GRAY,
                TextFormatting.YELLOW,
                itemName
        );

        print(msg);
    }

    private void print(String text) {
        if (mc.player != null && mc.ingameGUI != null) {
            mc.ingameGUI.getChatGUI().printChatMessage(new net.minecraft.util.text.StringTextComponent(text));
        }
    }
}
нахуй?
 
Назад
Сверху Снизу