Compatibility
Minecraft: Java Edition
Platforms
Supported environments
Links
Tags
Creators
Details
Changelog
Optimisation changes
-
Горячий путь — AtomicLong счётчики вызовов (высокий приоритет) Проблема: FE_TO_MI_CALLS.incrementAndGet() и MI_TO_FE_CALLS.incrementAndGet() вызывались при каждом запросе capability — это CAS-операция на атомарной переменной. При 17 000+ вызовов только за время сессии это заметная нагрузка. Решение: Полностью удалены. Счётчики BRIDGES (только при создании моста) оставлены — они редкие.
-
Баг переполнения в MIToFEBridge.getEnergyStored() Проблема: mi.getAmount() * ratio — перемножение двух long могло переполниться до вызова Math.min. Решение: Math.min(mi.getAmount(), maxEUfromFE) * ratio — сначала обрезаем EU, потом умножаем.
-
Двойной вызов FE-хранилища при simulate=true (средний приоритет) Проблема: В FESourceToMIBridge.extract/receive при ratio > 1 делался вызов fe.extractEnergy(..., true) для выравнивания, а потом второй fe.extractEnergy(..., true) для результата — лишний вызов. Решение: if (simulate) return maxFE / ratio — возвращаем результат сразу после выравнивания.
-
Аллокации BlockPos в /mifecompat scan Проблема: origin.offset(dx,dy,dz) создавал 1331 новый объект BlockPos на один вызов команды. Решение: Один MutableBlockPos, обновляемый через pos.set().


