Combat Inventory Hotbar Auto-Swap
Влияние на механику Minecraft
Автоматически перемещает вспомогательные предметы (жемчуг Края, золотые яблоки, зелья, обсидиан) в активный хотбар при нажатии горячих клавиш или падении HP.
Анализируемые функции и API
ScreenHandler.onSlotClick
Взаимодействие со слотами контейнеров инвентаря.
PlayerInventory.swapSlotWithHotbar
Обмен предметов из основного хранилища в активную панель быстрого доступа.
Реализация в моде (Исходный код)
// Developer Source (Fabric / Yarn mappings)
public class AutoSwap {
public static void quickSwap(MinecraftClient client, Item item) {
int slot = findItem(client.player.getInventory(), item);
if (slot != -1) {
client.interactionManager.clickSlot(0, slot, client.player.getInventory().selectedSlot, SlotActionType.SWAP, client.player);
}
}
}
Декомпилированный вид (Vineflower)
// Decompiled with Vineflower 1.12 (Intermediary mappings)
public class AutoSwap {
public static void quickSwap(class_310 client, class_1792 item) {
int slot = findItem(client.field_1724.method_31548(), item);
if (slot != -1) {
client.field_1761.method_2906(0, slot, client.field_1724.method_31548().field_7545, class_1713.field_7791, client.field_1724);
}
}
}
Сигнатура байткода и статический детект
Идентификация SlotActionType.SWAP (field_7791) при вызове ClientPlayerInteractionManager.clickSlot.