Repository navigation
Releases: igentuman/MC-Mod-Template
Releases · igentuman/MC-Mod-Template
Release list
v1.0.2 - NeoForge 1.21.1
v1.0.2 - NeoForge 1.21.1
Per-Entry Config Gating
config/Entries.java- universal TOML toggle perModEntryBuilderregistration, default enabledModEntry.isEnabled()- single accessor read live per-call, so config reload takes effect without restart- Enforced in creative tab (every entry kind),
GlobalBlockEntity.serverTick(disabled = inert), and block menu open - Disabled entries stay registered (inert + hidden), not unregistered;
Processorsaligned to the unified gate
New Registry Builders
Registers:PARTICLE_TYPES,ENTITY_TYPES,SOUND_EVENTS,MOB_EFFECTS,ATTACHMENT_TYPESModEntryBuilder:addParticleType,addEntityType,addSoundEvent,addMobEffect,addWorldCapability,addEntityCapability- World/entity persistent data backed by
AttachmentType(uniformDeferredRegisterpath)
Catalyst System
CatalystType(ENERGY/SPEED/EFFICIENCY), abstractCatalystwithpower+preTick/postTick,CatalystRegistry,CatalystDef,CatalystFactory- Concrete
EnergyCatalyst,SpeedCatalyst,EfficiencyCatalyst ModEntryBuilder.addCatalyst(name, type, factory)registers the catalyst item + def;.catalysts(types...)declares processor supportUniversalProcessorBEattaches active catalysts from the catalyst slot and runs hooks around operation;power= catalyst item count
Tag-Based Recipe Outputs
- Item and fluid recipe outputs may be tags;
recipe/ItemOutput+recipe/FluidOutputunion types with either-form codecs TagOutputResolverresolves a tag to one concrete stack viamod_tag_priority(config/Common); global cache refreshed on config reload- Empty tags mark a recipe incomplete (runtime skip); item-tag datagen emits a
NOT(tag_empty)condition (no native fluid-tag condition in NeoForge 21.1.228) UniversalProcessorRecipecarries union outputs +getOutputStack/getOutputFluidStack;RecipeInfo.produceOutputsresolves at production- JEI/EMI display all tag members, priority-ordered
Custom Rendering
BillboardingEffectRenderer- draws a camera-facing animated sprite at any world positionCustomEffect- billboard descriptor (texture sprite-sheet grid, position, RGBA color, scale)DelayedRenderHandler- per-frame translucent render queue; depth-sorted, flushed atAFTER_TRANSLUCENT_BLOCKS, translated to world originDistortShader- screen-space lens distortion post effect;DistortionSourceregistry keyed by arbitrary object; depth-buffer occlusion; per-source radius/magnificationModRenderType.BILLBOARDrender type +ModShaders(billboard core shader +distortpost chain), auto-registered viaRegisterShadersEvent- Shaders:
rendertype_billboardcore (POSITION_TEX_COLOR),distortpost chain + program GLSL
Docs
docs/entry-config-gating.md- per-entry config gating guidedocs/registry-builders.md- new registry builder referencedocs/catalysts.md- catalyst system guidedocs/tag-outputs.md- tag-based recipe output guidedocs/custom-rendering.md- billboard + distortion guide with worked "Anomaly" block chain example (block + block entity + BlockEntityRenderer)
v1.0.1 - NeoForge 1.21.1
v1.0.1 - NeoForge 1.21.1
Multiblock API
MultiblockEntryBuilder- fluent registration for controller + ports, casing/interior block predicates, or NBT structure templatesMultiblockRegistryholds all multiblock entries; capabilities auto-wired inMain.registerCapabilitiesIMultiblockValidator/IMultiblockLogic/IMultiblockCacheinterfaces with default impls (CubicMultiblockValidator,DeterminedMultiblockValidator,MultiblockLogicImpl,MultiblockCacheImpl)MultiblockPattern+BlockPredicatefor declarative shape definitionsMultiblockStructure+.nbttemplate loading for arbitrary structuresMultiblockControllerBlock/MultiblockPartBlockwith form/break lifecycle and port linkingMultiblockControllerBE/MultiblockPartBE- controller aggregates port I/O; ports forward capabilities to controllerMultiblockControllerContainer/MultiblockPortContainer+ screens with structure previewStructurePreviewRenderer- in-world ghost rendering of unformed structurePacketMultiblockFormed/PacketMultiblockBrokennetwork syncmultiblocksTOML config gates entries
Recipe Integration
- JEI:
MultiblockExampleCategory+MultiblockStructureRecipeshow multiblock assembly - EMI:
MultiblockExampleEmiRecipemirrors JEI integration - KubeJS: multiblock recipe schema (
foo_controller/dirt_silver_to_waterexample) FooMultiblockRecipesdatagen example
ComputerCraft
ControllerPerihperal- peripheral exposing multiblock controller state, I/O, recipe progress to CC programs
Example Content
foo_controller+foo_portblocks demonstrating full multiblock setupfoo_multiblock.nbtexample structure
Docs
docs/multiblocks.md- full multiblock registration guide
v1.0.0 - NeoForge 1.21.1
Release Notes
v1.0.0 - NeoForge 1.21.1
Core Framework
- Single-point registration via
ModEntryBuilder- one builder chain registers block, block entity, menu, screen, recipe type, serializer, and creative tab entry ModEntryrecord holds all deferred references in one object
Machine / Processor System
- Universal processor block, block entity, container, screen, and recipe classes - reusable across any machine type
- Side configuration system: per-slot, per-face push/pull/disable for items and fluids; NBT-persistent; auto-transfer via
SidedContentHandler - Block updates propagated on content handler changes
GUI
- Energy bar widget (
EnergyBar) - renders live FE fill bar with hover tooltip - Slot layout fixes and GUI rendering improvements
- Side config button and panel
- Fluid rendering in GUI
Materials
addMetalOreMaterial/addCrystalOreMaterial- registers full material set (ore, ingot, dust, plate, nugget, raw ore, storage block, molten fluid, bucket) from one call- Fluid, item, and block tags auto-registered per material
World Generation
- Automatic ore worldgen: configured features, placed features, and biome modifiers auto-registered when
worldgenQty > 0 - Height range and vein counts driven by live TOML config
Recipe Integration
- JEI: dynamic category, catalyst, and recipe registration for every processor entry
- EMI support - recipe viewer integration + transfer to AE2 pattern encoder
- KubeJS: processor recipe schemas auto-registered for all entries
- Recipe datagen via
UniversalProcessorRecipeBuilder(fluent API, item/fluid I/O, process time, energy cost) - Incomplete recipes filtered from displays
Networking
- Network sync for GUI fluid/item state
Datagen
- Providers: block states, item models, loot tables, recipes, tags (block/item/fluid), language files
- Dynamic JEI category datagen