Skip to content

🏛️ Архитектура и хуки аддонов (Minecraft 26.2) ​

📌 Отказ от ответственности за источник репозитория: Документация в этой вики отражает текущее состояние исходного кода в репозитории, которое может включать недавние невыпущенные коммиты или разрабатываемые функции, опережающие общедоступные сборки на CurseForge и Modrinth.

1. Official Infobox ​

ParameterTechnical Details
Subsystem NameArchitecture & Addon Extension Hooks
Root Packagenet.instantgratification.potionstacker
Core EntrypointPotionStackerFabric.java (ModInitializer)
Client EntrypointPotionStackerFabricClient.java (ClientModInitializer)
ModMenu EntrypointModMenuIntegration.java (ModMenuApi)
Core ManagerPotionStackerManager.java
Network PayloadPotionLimitSyncPayload.java
ConfigurationPotionStackerConfig.java, YaclScreenHelper.java
Mixin Count0 Mixins (100% Pure Addon Delegation)
Upstream FrameworkStack Size Adjuster (StackSizeManager)

2. Step-by-Step Subsystem Lifecycle ​

  1. onInitialize() Lifecycle Execution:

    • Step A: Load configuration baseline via PotionStackerConfig.load(...).
    • Step B: Register functional override callback into StackSizeManager.registerOverride(...).
    • Step C: Register POTION_LIMIT and STEW_LIMIT GameRules under namespaced category.
    • Step D: Register S2C payload type and codec via PayloadTypeRegistry.clientboundPlay().
    • Step E: Attach ServerPlayConnectionEvents.JOIN listener for client sync.
    • Step F: Attach ServerLifecycleEvents.SERVER_STARTED listener for world initialization checks.
  2. Client Initialization (onInitializeClient):

    • Register global receiver for PotionLimitSyncPayload.TYPE on ClientPlayNetworking.
  3. Stack Query Resolution:

    • When Minecraft queries item stack limit, Stack Size Adjuster iterates registered overrides.
    • Potion Stacker Addon inspects item class; returns potionLimit if potion, stewLimit if soup (and stew mod absent), or -1 to continue chain.

3. Algorithmic Complexity & Zero-Allocation Path ​

  • Time Complexity: $O(1)$ constant time lookup.
  • Space Complexity: $O(1)$ zero heap allocation on the hot path.

4. Visual ASCII Architecture Diagram ​

+-------------------------------------------------------------------------+
|                            Minecraft Engine                             |
+------------------------------------+------------------------------------+
                                     |
                                     v
+-------------------------------------------------------------------------+
|                       Stack Size Adjuster (Core)                        |
|                     StackSizeManager.getStackSize()                     |
+------------------------------------+------------------------------------+
                                     |
              +----------------------+----------------------+
              | CustomStackSizeOverride                     |
              v                                             v
+-----------------------------+             +-----------------------------+
|    Potion Stacker Addon     |             |     Stew Stacker Addon      |
|  PotionStackerManager.java  |             |      (Sibling Addon)        |
+--------------+--------------+             +-----------------------------+
               |                                            ^
               |-- isModLoaded("stew-stacker-addon")? ------|
               |   If TRUE: returns -1 (defers stew logic)
               |
               v
+-------------------------------------------------------------------------+
|                           DasikLibrary (API)                            |
|       DynamicGameRuleManager  |  ConfigHelper  |  GuiHelper             |
+-------------------------------------------------------------------------+

5. Addon Hook Registration Schema ​

java
@FunctionalInterface
public interface CustomStackSizeOverride {
    int getModifiedStackSize(Item item, int originalSize);
}

6. Глобальная навигация ​

Official documentation & web portal for Dasik Igaijinn mods.