🏛️ 架构设计与扩展钩子 (Minecraft 26.3)
📌 代码仓库来源免责声明:本维基文档反映了代码仓库中的当前源码状态,可能包含领先于 CurseForge 和 Modrinth 平台公开发布版本的最新未发布提交或开发中功能。
1. Official Infobox
| Parameter | Technical Details |
|---|---|
| Subsystem Name | Architecture & Addon Extension Hooks |
| Root Package | net.instantgratification.stewstacker |
| Core Entrypoint | StewStackerFabric.java (ModInitializer) |
| Client Entrypoint | StewStackerFabricClient.java (ClientModInitializer) |
| ModMenu Entrypoint | ModMenuIntegration.java (ModMenuApi) |
| Core Manager | StewStackerManager.java |
| Network Payload | StewLimitSyncPayload.java |
| Configuration | StewStackerConfig.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
StewStackerConfig.load(...). - Step B: Register functional override callback into
StackSizeManager.registerOverride(...). - Step C: Register
STEW_LIMITGameRule 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
StewLimitSyncPayload.TYPEonClientPlayNetworking.
- Register global receiver for
Stack Query Resolution:
- When Minecraft queries item stack limit, Stack Size Adjuster iterates registered overrides.
- Stew Stacker Addon inspects item class; returns
stewLimitif stew or soup, 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() |
+------------------------------------+------------------------------------+
|
v
+-------------------------------------------------------------------------+
| Stew Stacker Addon |
| StewStackerManager.java |
+------------------------------------+------------------------------------+
|
v
+-------------------------------------------------------------------------+
| DasikLibrary (API) |
| DynamicGameRuleManager | ConfigHelper | GuiHelper |
+-------------------------------------------------------------------------+5. Addon Hook Registration Schema
java
@FunctionalInterface
public interface CustomStackSizeOverride {
int getModifiedStackSize(Item item, int originalSize);
}