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