🏛️ 架構設計與擴充鉤子 (Minecraft 26.3)
📌 程式碼倉庫來源免責聲明:本維基文件反映了程式碼倉庫中的當前原始碼狀態,可能包含領先於 CurseForge 與 Modrinth 平臺公開發布版本的最新未發布提交或開發中功能。
1. Official Infobox
| Parameter | Technical Details |
|---|---|
| Subsystem Name | Architecture & Addon Extension Hooks |
| Root Package | net.instantgratification.potionstacker |
| Core Entrypoint | PotionStackerFabric.java (ModInitializer) |
| Client Entrypoint | PotionStackerFabricClient.java (ClientModInitializer) |
| ModMenu Entrypoint | ModMenuIntegration.java (ModMenuApi) |
| Core Manager | PotionStackerManager.java |
| Network Payload | PotionLimitSyncPayload.java |
| Configuration | PotionStackerConfig.java, YaclScreenHelper.java |
| Mixin Count | 0 Mixins (100% Pure Addon Delegation) |
| Upstream Framework | Stack Size Adjuster (StackSizeManager) |
2. Step-by-Step Subsystem Lifecycle
onInitialize()Lifecycle Execution:- Step A: Load configuration baseline via
PotionStackerConfig.load(...). - Step B: Register functional override callback into
StackSizeManager.registerOverride(...). - Step C: Register
POTION_LIMITandSTEW_LIMITGameRules under namespaced category. - Step D: Register S2C payload type and codec via
PayloadTypeRegistry.clientboundPlay(). - Step E: Attach
ServerPlayConnectionEvents.JOINlistener for client sync. - Step F: Attach
ServerLifecycleEvents.SERVER_STARTEDlistener for world initialization checks.
- Step A: Load configuration baseline via
Client Initialization (
onInitializeClient):- Register global receiver for
PotionLimitSyncPayload.TYPEonClientPlayNetworking.
- Register global receiver for
Stack Query Resolution:
- When Minecraft queries item stack limit, Stack Size Adjuster iterates registered overrides.
- Potion Stacker Addon inspects item class; returns
potionLimitif potion,stewLimitif soup (and stew mod absent), or-1to 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);
}