Auto Shield Breaker

Auto_Shield_Breaker Бой (Combat) HIGH +8 очков

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

Мгновенно переключает активный слот в хотбаре на топор, как только противник поднимает щит, наносит удар топором (вызывая оглушение щита на 5 секунд) и возвращает меч обратно за 1 игровой тик.

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

PlayerInventory.setSelectedSlot

Переключение выбранного слота хотбара (method_7376) с отправкой пакета слота.

LivingEntity.isBlocking

Проверка блокирования противником урона щитом (method_6039).

ClientPlayerInteractionManager.attackEntity

Удар топором для отключения щита цели.

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

// Developer Source (Fabric / Yarn mappings)
public class AutoShieldBreak {
    public static void onAttackTarget(MinecraftClient client, LivingEntity target) {
        if (target.isBlocking()) {
            int axeSlot = findAxeSlot(client.player.getInventory());
            if (axeSlot != -1) {
                int prevSlot = client.player.getInventory().selectedSlot;
                client.player.getInventory().selectedSlot = axeSlot;
                client.interactionManager.attackEntity(client.player, target);
                client.player.getInventory().selectedSlot = prevSlot;
            }
        }
    }
}

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

// Decompiled with Vineflower 1.12 (Intermediary mappings)
public class AutoShieldBreak {
    public static void onAttackTarget(class_310 client, class_1309 target) {
        if (target.method_6039()) {
            int axeSlot = findAxeSlot(client.field_1724.method_31548());
            if (axeSlot != -1) {
                int prevSlot = client.field_1724.method_31548().field_7545;
                client.field_1724.method_31548().field_7545 = axeSlot;
                client.field_1761.method_2918(client.field_1724, target);
                client.field_1724.method_31548().field_7545 = prevSlot;
            }
        }
    }
}

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

Проверка состояния блокирования щитом (isBlocking / method_6039) в сочетании со сменой слота хотбара (setSelectedSlot) и ударом attackEntity.