Auto Totem Replacer

AutoTotem Инвентарь (Inventory) HIGH +8 очков

🎮 Влияние на механику Minecraft

Отслеживает слот второй руки (offhand). Как только тотем активируется и сгорает, модуль мгновенно (за 0 тиков) находит запасной тотем в инвентаре и помещает его во вторую руку через пакеты clickSlot.

🔍 Анализируемые функции и API

ClientPlayerInteractionManager.clickSlot

Отправка пакетов взаимодействия со слотами инвентаря (method_2906).

Items.TOTEM_OF_UNDYING

Константа предмета «Тотем бессмертия» (field_8288).

PlayerEntity.getOffHandStack

Проверка предмета, находящегося во второй руке игрока (method_6079).

💻 Реализация в моде (Исходный код)

// Developer Source (Fabric / Yarn mappings)
public class AutoTotem {
    public static void update(MinecraftClient client) {
        if (client.player.getOffHandStack().getItem() != Items.TOTEM_OF_UNDYING) {
            int slot = findTotemSlot(client.player.getInventory());
            if (slot != -1) {
                client.interactionManager.clickSlot(client.player.currentScreenHandler.syncId, slot, 0, SlotActionType.PICKUP, client.player);
                client.interactionManager.clickSlot(client.player.currentScreenHandler.syncId, 45, 0, SlotActionType.PICKUP, client.player);
            }
        }
    }
}

⚙️ Декомпилированный вид (Vineflower)

// Decompiled with Vineflower 1.12 (Intermediary mappings)
public class AutoTotem {
    public static void update(class_310 client) {
        if (client.field_1724.method_6079().method_7909() != class_1802.field_8288) {
            int slot = findTotemSlot(client.field_1724.method_31548());
            if (slot != -1) {
                client.field_1761.method_2906(client.field_1724.field_7512.field_7763, slot, 0, class_1713.field_7790, client.field_1724);
                client.field_1761.method_2906(client.field_1724.field_7512.field_7763, 45, 0, class_1713.field_7790, client.field_1724);
            }
        }
    }
}

🛡️ Сигнатура байткода и статический детект

Совпадение Items.TOTEM_OF_UNDYING (field_8288) в сочетании с ClientPlayerInteractionManager.clickSlot (method_2906), направленным в слот 45.