Compatibility
Minecraft: Java Edition
1.21.1
1.20.1
Platforms
Supported environments
Client and server
Links
Creators
Details
Licensed MIT
Published last month
Customizable Player Spawn is a config-driven spawn control mod for Forge, NeoForge and Fabric.
It is made for worlds and modpacks where the first spawn should happen in a prepared place: a starter ruin, house, island, lobby, intro area, or any other .nbt structure. The mod can place that structure, find the real spawn point inside it, save the result, and keep using the same assigned spawn later.
What it can do
- place structures from mod resources, datapacks, other mods, world files, or loose
.nbtfiles inconfig/customizableplayerspawn/structures - use a marker block, a vanilla
DATAstructure marker, a relative position, or the structure center as the spawn anchor - create one shared spawn for everyone or separate per-player spawn structures
- choose the target dimension and allowed biomes
- search by heightmap, by smart surface validation, or by fixed Y level
- check the structure footprint, dangerous blocks, fluids, tree overlap, and surface height difference
- clear the placement volume, fill support gaps, refresh lighting, and process markers after placement
- optionally protect generated spawn structures from blocks, placement, containers, explosions, fire, and fluids
Profiles
The recommended setup is a profile file:
config/customizableplayerspawn/profiles/<profile>.toml
Loose structure files go here:
config/customizableplayerspawn/structures/<structure>.nbt
Minimal example:
schemaVersion = 2
id = "starter_ruin"
enabled = true
priority = 100
dimension = "minecraft:overworld"
structure = "config:starter_ruin.nbt"
[anchor]
mode = "MARKER_BLOCK"
markerBlock = "customizableplayerspawn:player_spawn_marker"
removeMarkerBlock = true
offsetX = 0
offsetY = 0
offsetZ = 0
angle = 0
fallback = "SAFE_NEARBY"
[placement]
strategy = "FLAT_FOOTPRINT"
surfaceSearchMode = "SMART"
searchRadius = 2048
searchAttempts = 128
maxSurfaceStep = 3
allowFluidsBelow = false
allowReplaceableAtFeet = true
allowReplaceableAtHead = true
forbiddenSurfaceBlocks = ["minecraft:lava", "minecraft:magma_block"]
Issues and suggestions: https://github.com/mayorovyf/CustomizablePlayerSpawn/issues


