How skebzy/projectliminal works
Project Liminal is a Bukkit plugin that creates a procedurally generated Backrooms-style Level 0 world and moves joining players to its spawn. The sampled code shows the Level 0 generation stages—layout-based room painting, spawn carving, then optional lighting and pillars—and the join teleport flow. The tree also contains grid, hybrid, and noise layout strategies, but their wiring and the chunk-generator implementation were not sampled, so those connections are left out.
Main entry points: Level0.java Level 0 orchestration · LightPlacer.java Light placer · JoinListener.java Join listener · Palette.java Palette contract
Components 19
Plugin lifecycle
- Plugin entry
src/main/java/dev/skebzy/projectLiminal/ProjectLiminal.java - Join listener
src/main/java/dev/skebzy/projectLiminal/listener/JoinListener.java - Level 0 world
World generation
- Chunk generator
src/main/java/dev/skebzy/projectLiminal/levels/level0/Level0ChunkGenerator.java - Level 0 orchestration
src/main/java/dev/skebzy/projectLiminal/levels/level0/Level0.java - Level 0 config
src/main/java/dev/skebzy/projectLiminal/levels/level0/Level0Config.java
Layout engine
- Layout contract
src/main/java/dev/skebzy/projectLiminal/levels/engine/layout/LayoutStrategy.java - Noise layout
src/main/java/dev/skebzy/projectLiminal/levels/engine/layout/strategies/NoiseLayout.java - Grid layout
src/main/java/dev/skebzy/projectLiminal/levels/engine/layout/strategies/GridLayout.java - Hybrid layout
src/main/java/dev/skebzy/projectLiminal/levels/engine/layout/strategies/HybridLayout.java - Backrooms room grid
src/main/java/dev/skebzy/projectLiminal/levels/engine/layout/grid/BackroomsRoomGrid.java - Sector math
src/main/java/dev/skebzy/projectLiminal/levels/engine/layout/grid/BackroomsSectorMath.java
Block painting
- Level 0 palette
src/main/java/dev/skebzy/projectLiminal/levels/level0/Level0Palette.java - Room painter
src/main/java/dev/skebzy/projectLiminal/levels/engine/paint/surfaces/RoomPainter.java - Light placer
src/main/java/dev/skebzy/projectLiminal/levels/engine/paint/features/LightPlacer.java - Pillar decorator
src/main/java/dev/skebzy/projectLiminal/levels/engine/paint/features/PillarDecorator.java - Palette contract
src/main/java/dev/skebzy/projectLiminal/levels/engine/palette/Palette.java
Other components
- Joining player
- Bukkit server
Connections 20
- Joining player → Join listener: joins
- Plugin entry → Bukkit server: creates world
- Plugin entry → Chunk generator: sets generator
- Plugin entry → Join listener: registers listener
- Join listener → Bukkit server: gets world; schedules
- Join listener → Joining player: teleports to spawn
- Chunk generator → Level 0 orchestration: generates chunks
- Level 0 orchestration → Level 0 config: reads settings
- Level 0 orchestration → Room painter: paints rooms
- Level 0 orchestration → Light placer: places lights
- Level 0 orchestration → Pillar decorator: adds pillars
- Level 0 orchestration → Palette contract: supplies palette
- Room painter → Layout contract: checks openness
- Room painter → Palette contract: reads materials
- Noise layout → Backrooms room grid: plans sectors
- Noise layout → Sector math: maps coordinates
- Light placer → Backrooms room grid: plans fixtures
- Light placer → Sector math: maps sectors
- Light placer → Palette contract: reads light block
- Pillar decorator → Palette contract: reads wall material