Code Structure - bh679/dungeon-train-mc GitHub Wiki
Code Structure
A visual breakdown of the Java packages and classes that make up the mod.
Base package: games.brennan.dungeontrain
Totals: 206 main classes + 16 test classes across 18 top-level sub-packages.
Generated against the post-NeoForge / Sable port tree (see PR #120). Latest update: Template OOP refactor Phase 3 (PR #155) โ *Template static placers renamed to *Placer, Template.*Model records to bare names.
Package tree
games.brennan.dungeontrain (204 main classes)
โ
โโโ DungeonTrain.java [root mod entrypoint]
โ
โโโ client/ (57) โโ UI, HUDs, screens
โ โ DungeonTrainClient ยท ContainerHotkeyClient ยท VariantHotkeyClient
โ โ EditorStatusHudOverlay ยท VariantHoverHudOverlay ยท VersionHudOverlay
โ โ VersionMenuOverlay ยท DungeonTrainOptionsScreen ยท DungeonTrainSettingsScreen
โ โ VersionInfo ยท PendingWorldChoices
โ โ
โ โโโ menu/ (26) โโ in-world command menu
โ โ โ CommandMenuState/Renderer/Layout/Raycast/InputHandler
โ โ โ CommandMenuToggleHandler ยท CommandMenuKeyBindings ยท CommandMenuEntry
โ โ โ CommandRunner ยท MenuScreen ยท MainMenuScreen ยท TrainMenuScreen
โ โ โ CarriagesMenuScreen ยท EditorMenuScreen ยท SpeedMenuScreen
โ โ โ EnterCategoryMenuScreen ยท NewSourcePickerScreen
โ โ โ DebugMenuScreen ยท WireframesMenuScreen
โ โ โ PrefabNameScreen ยท PrefabSideTabButton ยท PrefabTabState
โ โ โ PrefabClientLifecycleEvents ยท MenuTypingScreen ยท MenuRenderStates
โ โ โ ConfirmScreen
โ โ โ
โ โ โโโ blockvariant/ (7) BlockVariantMenu(+ Renderer/Raycast/Input/Wireframe/SearchScreen/LockIdRenderer)
โ โ โโโ containercontents/ (5) ContainerContentsMenu(+ Renderer/Raycast/Input/SearchScreen)
โ โ โโโ parts/ (5) PartPositionMenu(+ Renderer/Raycast/Input/SearchScreen)
โ โ
โ โโโ tooltip/ (3) PrefabIconsClientTooltipComponent ยท PrefabIconsTooltipData ยท PrefabTooltipEvents
โ โโโ worldgen/ (2) FloorYState ยท PendingStartingDimension
โ
โโโ command/ (5) โโ /slash commands
โ DebugCommand ยท EditorCommand ยท ResetCommand ยท SaveCommand ยท TrainCommand
โ
โโโ config/ (1) DungeonTrainConfig
โโโ debug/ (2) CarriageDebug ยท DebugFlags
โโโ item/ (1) VariantClipboardItem
โโโ util/ (1) BundledNbtScanner
โ
โโโ editor/ (44) โโ live in-world editing
โ CarriageEditor ยท CarriagePartEditor ยท CarriageContentsEditor
โ TrackEditor ยท TunnelEditor ยท PillarEditor ยท EditorLayout
โ EditorCategory ยท EditorDevMode
โ CarriageTemplateStore ยท CarriagePartTemplateStore ยท TrackTemplateStore
โ TunnelTemplateStore ยท PillarTemplateStore ยท ContainerContentsStore
โ LootPrefabStore ยท BlockVariantPrefabStore ยท CarriageContentsStore
โ CarriagePartRegistry ยท CarriageVariantPartsStore
โ CarriageVariantBlocks ยท CarriageContentsVariantBlocks ยท CarriagePartVariantBlocks
โ VariantState ยท VariantRotation ยท VariantHotkeyState ยท VariantOverlayRenderer
โ VariantEditorPreviewState ยท VariantEditorPreviewTicker ยท VariantBlockInteractions
โ VariantBlockBreakHandler ยท RotationApplier ยท VasePotLootDrop
โ ContainerContentsEntry ยท ContainerContentsPlacement ยท ContainerContentsPool
โ ContainerContentsRoller ยท ContainerHotkeyState
โ BlockVariantMenuController ยท ContainerContentsMenuController ยท PartPositionMenuController
โ BlockVariantPlot ยท TrackPlotLocator ยท TrackSidePlots
โ
โโโ event/ (8) โโ NeoForge event handlers
โ PlayerJoinEvents ยท WorldLifecycleEvents ยท TrainBootstrapEvents ยท TrainTickEvents
โ TrackChunkEvents ยท CorridorCleanupEvents
โ CommandEvents ยท PrefabUseHandler
โ
โโโ mixin/ (10) โโ ASM mixins
โ โ CreateWorldScreenMixin ยท CreateWorldScreenAccessor ยท CreateWorldScreenWorldTabMixin
โ โ PlayerFudgeSpawnMixin ยท DecoratedPotBlockEntityPotLootMixin
โ โโโ client/ (5) CreateWorldScreenMixin ยท CreateWorldScreenDefaultPresetMixin
โ AbstractContainerScreenPrefabTintMixin
โ CreativeModeInventoryScreenAccessor ยท CreativeModeInventoryScreenPrefabMixin
โ
โโโ net/ (20) โโ client/server packets
โ DungeonTrainNet
โ BlockVariantEditPacket ยท BlockVariantSyncPacket ยท BlockVariantOutlinePacket
โ BlockVariantMenuTogglePacket ยท BlockVariantLockIdsPacket
โ ContainerContentsEditPacket ยท ContainerContentsSyncPacket ยท ContainerContentsMenuTogglePacket
โ ContainerHotkeyPacket
โ PartAssignmentEditPacket ยท PartAssignmentSyncPacket ยท PartMenuTogglePacket
โ VariantHotkeyPacket ยท VariantHoverPacket
โ CarriageIndexPacket ยท EditorStatusPacket ยท PrefabRegistrySyncPacket
โ SaveBlockVariantPrefabPacket ยท SaveLootPrefabPacket
โ
โโโ registry/ (2) ModItems ยท ModCreativeTabs
โ
โโโ template/ (11) โโ unified template-identity + persistence layer (Phases 1โ3)
โ Template ยท TemplateKind ยท TemplateType
โ TemplateRegistry ยท TemplateStore ยท SaveResult ยท Stores
โ PillarTemplateId ยท StairsTemplateId ยท TunnelTemplateId ยท CarriagePartTemplateId
โ Sealed `Template` interface permits 7 records โ Carriage, Contents, Part,
โ Track, Pillar, Adjunct, Tunnel โ each carrying capability metadata (kind,
โ type, isBuiltin, canPromote), persistence handles (store, registry), and
โ Phase-3 dispatch methods (weight, variantName, restampPlot, hasBundledTier,
โ bundled, editorPlotOrigin, eraseEditorPlot). The 6 type-discriminator
โ enums elsewhere in the tree (CarriageType, ContentsType, CarriagePartKind,
โ PillarSection, PillarAdjunct, TunnelVariant) implement `TemplateType`.
โ Phase 2 added the generic `TemplateRegistry<T>` / `TemplateStore<T>`
โ interfaces and collapsed `SaveCommand`'s per-kind `instanceof` dispatch
โ onto `template.store().save / .promote`. Phase 3 added the 4 identifier
โ records (storage-layer surface only), renamed records + static placers to
โ free the `*Template` namespace, and collapsed the remaining 12-arm chains
โ in `VariantOverlayRenderer` and `ResetCommand` โ
โ see [Feature Template Refactor](Feature-Template-Refactor.md).
โ
โโโ ship/ (9) โโ VS2 โ Sable port abstraction
โ โ ManagedShip ยท Shipyard ยท Shipyards ยท KinematicDriver
โ โ ShipFilterProcessor ยท InertiaSnapshot
โ โโโ sable/ (3) SableManagedShip ยท SableShipyard ยท SableKinematicTicker
โ
โโโ track/ (11) โโ track generation
โ โ TrackGenerator ยท TrackGeometry ยท TrackPlacer ยท TrackPalette
โ โ PillarSection ยท PillarAdjunct
โ โโโ variant/ (4) TrackKind ยท TrackVariantRegistry ยท TrackVariantStore ยท TrackVariantBlocks ยท TrackVariantWeights
โ
โโโ train/ (20) โโ train assembly + carriages
โ Trains ยท TrainAssembler ยท TrainCarriageAppender ยท TrainTransformProvider
โ CarriagePlacer ยท CarriageVariant ยท CarriageVariantRegistry
โ CarriageContents ยท CarriageContentsPlacer ยท CarriageContentsRegistry ยท CarriageContentsWeights
โ CarriagePartPlacer ยท CarriagePartAssignment ยท CarriagePartKind
โ CarriageDims ยท CarriageFootprint ยท CarriageWeights
โ CarriageGenerationConfig ยท CarriageGenerationMode ยท CarriagePersistenceStore
โ
โโโ tunnel/ (5) TunnelGenerator ยท TunnelGeometry ยท TunnelPlacer ยท TunnelPalette ยท LegacyTunnelPaint
โ
โโโ world/ (3) DungeonTrainWorldData ยท StairsRegistryData ยท StartingDimension
โ
โโโ worldgen/ (3) SilentBlockOps
โโโ feature/ (2) ModFeatures ยท TrackBedFeature
Domain groupings
| Domain | Packages | Classes |
|---|---|---|
| Client / UI (HUDs, screens, menus) | client/* |
57 |
| Editor (variants, templates, content) | editor/ |
44 |
| Template identity + persistence (Phases 1โ3) | template/ |
11 |
| Networking (packets) | net/ |
20 |
| Train logic (carriages, assembly) | train/ |
20 |
| Track generation | track/* |
11 |
| Mixins (ASM patches) | mixin/* |
10 |
| Ship abstraction (VS2 โ Sable) | ship/* |
9 |
| NeoForge events | event/ |
9 |
| Tunnels | tunnel/ |
5 |
| Commands | command/ |
5 |
| World / data / worldgen | world/, worldgen/* |
6 |
| Mod plumbing (entry, config, registry, item, debug, util) | root + various | 7 |
The two heaviest packages are client/ (57 โ UI surface) and editor/ (45 โ the live in-world editing system). The ship/ package is the abstraction layer introduced in the recent VS2 โ Sable port, with ship/sable/ being the new backend.
Tests (16) โ src/test/java/games/brennan/dungeontrain
client/menu/ EditorMenuScreenTest
editor/ CarriagePartEditorPlotLayoutTest ยท CarriageVariantBlocksTest
CarriageVariantBlocksWeightedTest ยท EditorCategoryTest
VariantEditorPreviewStateTest ยท VariantEditorPreviewTickerMathTest ยท VariantRotationTest
template/ TemplateTest
net/ EditorStatusPacketTest
train/ CarriageContentsRegistryTest ยท CarriageContentsWeightsTest ยท CarriagePlacerTest
CarriageWeightsTest ยท TrainCarriageAppenderTest ยท TrainTransformProviderTest
Related
- Development โ build & run instructions
- Features โ what each gameplay package surfaces in-game
- Compatibility โ Valkyrien Skies / Sable interactions