1201-mods-exsample
A reference guide for high-level architectural patterns in Minecraft 1.20.1 Forge modding.
Install
mkdir -p .claude/skills/1201-mods-exsample && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/9841" && unzip -o skill.zip -d .claude/skills/1201-mods-exsample && rm skill.zipInstalls to .claude/skills/1201-mods-exsample
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
Minecraft 1.20.1 Forge Moddingにおける実践的な実装パターン集。 エネルギー・GUI・ネットワーク・マルチブロック・レシピ・レンダリング・ スペル/AI/スクリプトなどの設計パターンを、17の主要Modの実装から抽出して解説。 Addon作成に使える部分は各Modトピックとして維持しつつ、Modに依存しない アーキテクチャ知識として整理する。Key capabilities
- →BlockEntity design patterns
- →Energy system architecture
- →GUI and networking synchronization
- →Multi-block structure implementation
- →Data-driven recipe design
How it works
It extracts and documents design patterns from 17 major Minecraft mods to provide architectural guidance for complex mod development.
Inputs & outputs
When to use 1201-mods-exsample
- →Designing robust energy systems
- →Implementing custom GUI and networking
- →Optimizing BlockEntity performance
About this skill
概要
このSkillは Minecraft 1.20.1 Forge における設計パターンを、主要Modの実装から抽出したリファレンスです。 チュートリアルに載らない「実際の大規模Modがどう実装しているか」を設計カテゴリ別に整理し、 アーキテクチャ設計・パフォーマンス最適化・API設計・データ駆動設計などの実践的ノウハウを提供します。
✅ やるべきこと — 設計パターン別
BlockEntity設計
- BEが必要かどうかを最初に判断する — Botania機能花はBlock.tick() + scheduleTickで動作。BEは持続状態/Tick/ネットワーク参加が必要な場合のみ。
- BE登録方式はModの規模に合わせて選ぶ — 小規模: DeferredRegister / 中規模: Registrate / 大規模: 型安全ラッパー(Mek)かMachineBuilder(GT) / マルチローダー: abstract bind(Botania)。
- 保存データと同期データは分離して考える — 永続化(saveAdditional/load)・全量同期(getUpdateTag)・差分同期(カスタムパケット/SyncData/@SyncToClient)の3層構造を意識する。
- 同期頻度に応じて方式を選ぶ — 低頻度(数秒単位): 全量NBT / 中頻度(毎Tick数回): ContainerData / 高頻度(毎Tick): カスタム差分パケット / 宣言的: @SyncToClient/SyncData。
- Capability提供はResolver/Proxy/Holderの3層分離を検討する — Mekanismの設計が参考になる。BlockLookaside(Botania)という選択肢もある。
エネルギーシステム
- 独自電力型の定義はGregTech EUを参考にする — 実数型FloatingLong + Capabilityプロバイダ分離。long/doubleでは不足する精密演算への対処。
- 魔法エネルギーはBotania Mana / Ars Nouveau Source / Goety Soulを比較検討する — ネットワーク型(Mana) vs ブロック局所型(Source) vs マルチCapability型(Soul)の使い分け。
- 複数流体/ガス型はMekanism Chemicalを参考にする — ChemicalType + ChemicalStack + Capabilityの3層設計。IGasHandler / IInfusionHandler / IPigmentHandler の派生体系。
- 他Modエネルギーとの互換はMekanism IEnergyCompatを参考にする — FE互換ラッパーと動的変換レート。
GUI/UIフレームワーク
- ウィジェットツリーはLDLib ModularUIを参考にする — Widget親子構造 + SyncData自動双方向同期 + レイアウト自動計算。
- 高パフォーマンスUIはModernUIのスレッド分離を参考にする — 専用UIスレッド + ハンドラーメッセージパイプ + Granite GPUレンダリング。
- Containerのデータ同期はContainerData + カスタムパケットの組み合わせを理解する — 16bit制約とエネルギー量の2スロット分割。
ネットワーク/同期
- 大規模ネットワークグラフはAE2 ME Networkを参考にする — GridNode + GridTick のO(ネットワーク数)ティック vs O(ノード数)ティックの設計判断。
- 動的ネットワークはMekanism DynamicNetwork (CRTP)を参考にする — TransmitterNetworkRegistry + Network-Level Tickingによるパフォーマンス最適化。
- ブロック状態の自動同期はFarmer's DelightのSyncedBlockEntityを参考にする — 自動同期BE + ContainerDataパターン。
マルチブロック
- 複雑マルチブロックはGregTech MetaMachine/Patternを参考にする — Trait分離 + BlockPattern 3Dマッチング + ベンチレベルの機械階層。
- 簡易マルチブロックはMultiblocked2のJSON定義を参考にする — 宣言的JSON定義 + Traitシステム + 他Mod連携。
- 巨大コンテナ構造はMekanismの階層型マルチブロックを参考にする — 4層抽象(MultiblockManager→Data→Cache→FormationProtocol)の設計。
レシピ・データ駆動設計
- 大規模レシピインデックスはMekanism逆引きインデックスを参考にする — IngredientType別のO(1)ルックアップ。
- プラグインAPIはJEI/Jadeの段階的登録を参考にする — 登録フェーズを分割してロード順序問題を回避。
- データ駆動装備/武器はSuperbWarfare GunData JSONを参考にする — JSON定義パラメータ + アタッチメント合成システム。
- Codecファースト設計はEMIのComponentChangesパターンを参考にする — CodecがあればJSON⇔Javaの双方向変換が保証される。
レンダリング
- インスタンスレンダリングはCreate Flywheelを参考にする — BERフォールバック付きインスタンスレンダリング。
- カスタムモデルアニメーションはSuperbWarfare GeoRenderを参考にする — GeckoLibモデル + アニメーション状態マシン。
- エフェクトレンダリングはBotaniaの花エフェクトを参考にする — 軽量パーティクル + イベント駆動描画。
スペル/エフェクトシステム
- 構築型スペルはArs Nouveau Glyph/Context/Resolverを参考にする — Glyph(部品)→Context(実行環境)→Resolver(効果解決)の3層分離。
- イベント駆動ブロックはBotania機能花を参考にする — BlockEntityなしでBlockが機能する設計。ManaPoolやSparkの連携。
AI/エンティティ
- 高度エンティティAIはTouhouLittleMaidのBrainベースを参考にする — GoalSelectorよりBrain/Activity/Scheduleの方が拡張性が高い。
- 使い魔システムはArs Nouveau Familiar / Goety Summonを参考にする — プレイヤー追従・オーダー発行・スキル実行の一連の流れ。
- カスタムモデル/アニメーションはTouhouLittleMaidを参考にする — JSアニメーション定義 + マルチレイヤーモデルローダー。
スクリプト連携
- JSエンジン統合はKubeJS/Rhinoを参考にする — イベントブリッジ・型ラッパー・サンドボックスの3層設計。
- プラグインスクリプトのサンドボックス分離はKubeJSのセキュリティモデルを参考にする — ClassFilter + カスタムクラスローダー + タイムアウト制御。
パーティクルシステム
- カスタムパーティクルのフルライフサイクルを理解する — ParticleType登録→Particleクラス実装→Provider+SpriteSet→テクスチャ/particles.json→スポーン→(任意)ネットワーク同期。Botaniaの軽量設計方針も参考にする。
- サーバー発動パーティクルはSimpleChannelで送信する — 常時エフェクトは
Block.animateTick()でクライアントローカルで十分。レシピ完了などサーバー判断が必要な場合のみパケットを使う。 - パーティクルパフォーマンスを意識する — 同時表示2000超でFPS低下。
addAlwaysVisibleParticleは必要な場面だけ。負荷に応じた動的スポーン制御を検討する。
カスタムシェーダー
- カスタムシェーダーは
RegisterShadersEventでCoreShaderとして登録する — GLSL(.vsh/.fsh) + RenderType.CompositeRenderType + CompositeState の3点セット。 - PostChainポストプロセスはフルスクリーンGLパスのため高コスト — 1pass=1フルスクリーン描画。必要な場面だけ使い、軽量なエフェクトはParticle/シェーダーで済ませる。
ワールドジェン/鉱石生成
- ワールドジェンはConfiguredFeature/PlacedFeatureの2段階分離を理解する — Feature(生成ロジック)→ConfiguredFeature(設定)→PlacedFeature(配置)の3層パイプライン。
- カスタム鉱脈はFeatureクラス継承 + Partパイプラインで実装する — trunk→branch→leafの複数Part置換。StoneDepth + TagMatch RuleTestの組み合わせで鉱石タイプ別制御。
- 鉱石追加はBiome Modification APIで行う —
BiomeLoadingEvent+BiomeSelectors+FeatureOrderの順序制御。
設定システム
- ConfigはForgeConfigSpecで型安全に定義する — SpecPair + CommonConfig/ClientConfig/ServerConfigの3分割。カテゴリpush/popでグループ化。
- 動的ConfigやホットリロードはCachedConfig + JSONパターンを検討する — キャッシュ無効化 + ConfigEvent.Reloading購読。CodecベースJSON Configでランタイム変更。
- マルチローダー対応はInterfaceベースConfigを検討する — Configインターフェース + Forge/Fabric実装分離。CachedConfigラッパーで遅延読み込み。
Mixin戦略
- Mixinは@Mixin + @Inject + @Atの基本3点を押さえる — HEAD/RETURN/INVOKE選択基準。CallbackInfo vs CallbackInfoReturnableの使い分け。@Accessor/@Invokerでprivate公開。
- Mixinはdomain別パッケージ + mixin.jsonプラグインで組織化する — IMixinConfigPluginで条件付き適用。shouldApplyMixin()で他Mod競合回避。
- Mixin以外の選択肢を常に先に検討する — イベント購読 / Interface Injection / Capability / CoreModの順。
サンドボックス/スクリプトセキュリティ
- スクリプトサンドボックスはClassFilter + カスタムClassLoaderの直列で実装する — ホワイトリスト/ブラックリスト2段階フィルター。ASM ClassVisitorでバイトコード検証。
- スクリプト実行にはタイムアウト制御 + 例外ハンドリングを必須とする — Watchdogスレッドによる割り込み。InstructionCounterでPrecise制御。
パフォーマンス/キャッシュ
- 高頻度ルックアップはLoadingCache + LRU + TTLでキャッシュする — Caffeine/LRU + ヒット率/ミス率のMetrics計測を組み込む。
- BlockEntityキャッシュはチャンク単位の無効化 + ワールドアンロードリスナーで設計する — ChunkedBECache + WorldEvent.Unload購読。スナップショット反復でCME回避。
Mod統合/互換
- 他Mod統合はServiceLoaderベースのSPIで設計する — IModIntegration + ModIntegrationManagerで一括管理。ModList.get().isLoaded()でOptional分岐。
- JEI/Jade/Curios統合は専用Pluginクラスで疎結合に保つ — IXeiPlugin / ITooltipProvider / ICuriosSlot実装。Data Componentで共通データ共有。
レジストリ管理
- 登録はDeferredRegister + 型安全ラッパーで統一する — 16種のバニラレジストリ対応。RegisterEventでの動的追加も理解。
- カスタムレジストリはRegistryBuilder + NewRegistryEventで作成する — Codec + StreamCodec実装必須。フリーズ前にDatagen。
- DataFixerUpperでレジストリ名変更に備える — RenameDataFix / BlockStateRenameFixで破壊的変更回避。MissingMappingsEventで未登録エントリのリマップ。
❌ やってはいけないこと
- チュートリアルレベルの質問にこのSkillを使わない — 基礎は
1201-forge-moddingスキルを参照。 - 外部Modの実装をそのままコピペしない — ライセンス違反になる。設計思想のみ参考にする。
- 独自電力型をいきなり作らない — FE(Forge Energy)で十分なケースが大半。どうしても必要な場合のみGregTech EUやBotania Manaを参考にする。
- マルチブロックをスクラッチで実装しない — Multiblocked2などのフレームワーク利用を先に検討する。
- 大規模ネットワークを単純なループで実装しない — AE2/MekanismのNetwork-Level Tickingパターンを理解してから設計する。
- GUI描画でバニラ範囲を超える場合に直接GLステートを操作しない — ModernUIの抽象化またはLDLibのWidgetを活用する。
- GUIスレッドでワールド操作をしない — ModernUIのメッセージパイプかSimpleChannelを使う。
- パーティクルシステムをスクラッチで書かない —
Particle/TextureSheetParticleの継承とParticleProviderのファクトリパターンを理解してから実装する。 - MCのレンダリングパイプラインを無視してGL呼び出しを直接書かない — カスタムシェーダーは
RegisterShadersEvent+RenderTypeの枠組みに従う。 - 独自Featureをスクラッチで書かない — 標準OreFeatureで十分なケースが大半。Trident/Partパイプラインが必要かどうかを先に判断する。
- Mixinの@Overwriteを避ける — compat問題の原因。@Inject / @Redirect / Interface Injectionで代替できないか必ず検討する。
- サンドボックスなしで外部スクリプトを実行しない — ClassFilter + カスタムClassLoader + タイムアウト制御の3点セットが必須。
- 大規模Modで全設定を1ファイルに詰め込まない — CommonConfig/ClientConfig/ServerConfigに分割する。
設計パターンリファレンス
| 設計カテゴリ | 内容 | ファイル | 読むタイミング | |---|---|---|---|---| | BlockEntity実装 | BE登録4方式、BEライフサイクル、ティック戦略、データ保存/読込、ネットワーク同期5方式、Capability提供、GUI連携、設計判断フローチャート | references/patterns/BE_IMPLEMENTATION.md | BEを新規実装・設計する際の最初に読むべき参照 | | エネルギーシステム | GregTech EU, Botania Mana, Ars Source, Goety Soul, Mekanism Chemical, FE互換 | references/patterns/POWER_SYSTEMS.md | 独自電力/エネルギー型を実装する際 | | GUI/UIフレームワーク | LDLib ModularUI Widgetツリー, ModernUIスレッド分離, ContainerData | references/patterns/GUI_FRAMEWORKS.md | カスタムGUIや高度なUIを実装する際 | | ネットワーク/同期 | AE2 GridNodeティック, Mekanism DynamicNetwork, Create Catnip, SyncedBlockEntity | references/patterns/NETWORK_SYNC.md | ブロック間ネットワーク・同期システムを実装する際 | | マルチブロック | GregTech MetaMachine+Pattern, Multiblocked2 JSON定義, Mekanism 4層抽象 | references/patterns/MULTIBLOCK.md | マルチブロック構造を実装する際 | | レシピ・データ駆動 | Mekanism逆引きインデックス, JEI/EMI Plugin, SuperbWarfare JSON駆動, KubeJSデータ | references/patterns/RECIPE_DATA.md | レシピシステム・データ駆動設計を実装する際 | | レンダリング | Create Flywheel, SuperbWarfare GeoRender, Botaniaエフェクト, BER, VertexConsumer実践, Flywheel Instance, GeckoLib実装手順, EntityRenderer | references/patterns/RENDERING.md | インスタンスレンダリングやカスタムモデルを実装する際 | | パーティクルシステム | ParticleType登録, Particleクラス実装, Provider/SpriteSet, テクスチャ設定, スポーン方法, Network同期, 応用パターン(軌跡/ビーム/バースト), 完全E2E例 | references/patterns/PARTICLE_SYSTEM.md | カスタムパーティクルエフェクトを実装する際 | | カスタムシェーダー | CoreShader登録, GLSLソース, RenderType+CompositeState, BER+シェーダー連携, PostChainポストプロセス | references/patterns/SHADER_SYSTEM.md | 発光/カスタム描画効果にシェーダーを使いたい際 | | スペル/エフェクト | Ars Nouveau Glyph 3層分離, Botania機能花 イベント駆動 | references/patterns/SPELL_EFFECT.md | 構築型スペルやエフェクトブロックを実装する際 | | AI/エンティティ | TouhouLittleMaid Brain, Ars Familiar, Goety Summon, Botania Spark | references/patterns/AI_ENTITY.md | 高度なエンティティAIや使い魔を実装する際 | | スクリプト連携 | KubeJS/Rhino イベントブリッジ・サンドボックス・CodecTypeWrapper | references/patterns/SCRIPTING.md | JSスクリプト連携やプラグインシステムを実装する際 | | ビルドアーキテクチャ | マルチモジュールBuild, Xplat/Forge/Fabric分離, ServiceLoader抽象, アノテーションプロセッサ | references/patterns/BUILD_ARCHITECTURE.md | 大規模Modのビルド構成・マルチローダー対応を設計する際 | | レジストリ管理 | カスタムレジストリ+フリーズ, 型安全RegistryObject, DoubleDeferredRegister, Addonアノテーション発見 | references/patterns/REGISTRY_MANAGEMENT.md | 多数のオブジェクトを体系的に登録するレジストリ設計を行う際
Content truncated.
When not to use it
- →Non-Forge Minecraft environments
- →Projects not targeting Minecraft 1.20.1
Prerequisites
Limitations
- →Strictly limited to Minecraft 1.20.1 Forge
- →Requires understanding of Java and Forge API
How it compares
It focuses on real-world large-scale mod implementations rather than generic tutorial-based approaches.
Compared to similar skills
1201-mods-exsample side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| 1201-mods-exsample (this skill) | 0 | 2mo | No flags | Advanced |
| workflow-orchestration-patterns | 10 | 2mo | No flags | Advanced |
| ignite-cluster-setup | 1 | 7mo | Review | Intermediate |
| alm-processing | 1 | 5mo | No flags | Intermediate |
Try saying
Example prompts that trigger this skill in your AI assistant.
You might also like
workflow-orchestration-patterns
wshobson
Design durable workflows with Temporal for distributed systems. Covers workflow vs activity separation, saga patterns, state management, and determinism constraints. Use when building long-running processes, distributed transactions, or microservice orchestration.
ignite-cluster-setup
apache
Set up and manage a local Apache Ignite 3 cluster using just commands. Use when asked to setup cluster, start nodes, rebuild, initialize cluster, or check status.
alm-processing
langgraph4j
Use this to perform operations on the langgraph4j project. 1) create a new project release 2) move to next dev release
azure-eventhub-java
microsoft
Build real-time streaming applications with Azure Event Hubs SDK for Java. Use when implementing event streaming, high-throughput data ingestion, or building event-driven architectures.
gs
go-spring
Go-Spring 项目研发托管入口:一句话诉求经 规划(Plan)→ 执行(Execute)→ 交付(Settle)循环,从工具集(起骨架/加接口/重生成/接组件/补测试)中选取组合并落地。在 Go-Spring 项目中开展任一研发任务时触发;由 Plan 判定是否接管,超范围时放手。
run_flash_experiments
equinor
Execute NeqSim flash calculations in batch mode, collect metrics, and produce