1.0.10
Compatibility
Changes
The hub moves out of the way — and datapacks take over content
Hub
The hub used to sit at the world origin, right where the island chain starts. Shrink
island.player_spacing and the first island landed on top of it: the player couldn't build,
couldn't break their own one-block, and the hub was in view from their island.
It now sits well clear of the island line by default, and its position is configurable:
hub.center_x/hub.center_z— move the hub anywhere. Change it and the hub relocates on the next server start: the old structure is cleared, the new one built, and the shopkeepers brought across.- A move that would land on an existing island is refused and logged, so a mistyped coordinate can't bulldoze someone's base.
⚠️ Existing worlds will move their hub on first start, since the default position changed. To keep it exactly where it is, set
hub.center_xandhub.center_zto0before starting up.
Content is now datapack-driven
Phases, shop stock and the Scavenger Hunt item pool load through the resource manager instead
of being baked into the jar. A datapack under data/oneblock/ can override any of them —
oneblock_phases/, shops/, scavenger_items/ — or add new files alongside. /reload
applies changes without a restart. Chest loot tables already worked this way.
Reusing a bundled file's path replaces it; a new path adds to it.
More configuration
rewardsper event — OneCoins for 1st, 2nd, 3rd and participation, previously fixed in code- Scavenger Hunt checklist —
easy_items,medium_items,hard_items,bonus_item_chanceandcompletion_bonus
Fixes
- Players could be locked out of their own island. If a claim overlapped the hub's no-build zone, the hub check ran first and won, so the owner couldn't break their own one-block — the game was unplayable for them. Your own claim now outranks the hub zone, on both breaking and placing.
- Island placement now keeps the first island clear of world spawn and the hub zone. Positions are unchanged at default settings.
- Shop villagers duplicated on every restart. The check for "is this stall already occupied" ran before saved entities were loaded, so it always saw an empty stall and added six more shopkeepers. Spawning is now idempotent — existing shop villagers are cleared and exactly six placed — so hubs that have piled them up will tidy themselves on next start.
- Two of the six market stalls were never built. They landed on the hub's paths and were skipped, leaving Miner's Goods and Explorer's Outpost standing in the open with no building. The stall ring is nudged clear of the paths, and its position is now defined once and shared, rather than calculated separately by the generator and the shop code where the two could disagree. Shopkeepers are only placed at stalls that actually exist.
- Relocating the hub left its shopkeepers behind, floating at the old site. Entities restored from disk aren't loaded yet when the server fires its started event, so the sweep searched an empty world; the move now runs shortly after startup instead.
- Teleporting no longer carries fall damage. Walking off your one-block and using
/oneblock homeor/oneblock hubto escape killed you on landing, because the fall distance came with you. Applies to/oneblock visitand the hub return portal too. - Hub demolition clears from the top down, so roofs and lanterns aren't left briefly unsupported and popped into items. Loose items around the hub are swept after it's built, when it's torn down, and when a player teleports in.
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:muiliBCF:56CcBxar"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:muiliBCF:56CcBxar"
}
