@@ -21,15 +21,24 @@ import com.lambda.context.SafeContext
2121import com.lambda.module.HudModule
2222import com.lambda.module.tag.ModuleTag
2323import com.lambda.threading.runSafe
24+ import com.lambda.util.Formatting.asString
2425import com.lambda.util.Formatting.string
26+ import com.lambda.util.extension.dimensionName
27+ import com.lambda.util.math.VecUtils.netherCoord
28+ import com.lambda.util.math.VecUtils.overworldCoord
29+ import net.minecraft.registry.RegistryKey
30+ import net.minecraft.world.World
2531
2632object Coordinates : HudModule(
2733 name = " Coordinates" ,
2834 description = " Show your coordinates" ,
2935 defaultTags = setOf(ModuleTag .CLIENT ),
3036) {
37+ private val showDimension by setting(" Show Dimension" , true )
38+ private val decimals by setting(" Decimals" , 2 , 0 .. 4 , 1 )
39+
3140 private val SafeContext .text: String
32- get() = " Position: ${player.pos.string } "
41+ get() = " XYZ ${if (showDimension) dimensionName else " " } ${positionForDimension(world.registryKey) }"
3342
3443 // TODO: Replace by LambdaAtlas height cache and actually build a proper text with highlighted parameters
3544
@@ -43,4 +52,10 @@ object Coordinates : HudModule(
4352 }
4453 }
4554 }
55+
56+ private fun SafeContext.positionForDimension (dimension : RegistryKey <World >) =
57+ when (dimension) {
58+ World .NETHER -> " [${player.netherCoord.asString(decimals)} , ${player.netherCoord.z.string} ] ${player.overworldCoord.asString(decimals)} "
59+ else -> " ${player.overworldCoord.asString(decimals)} [${player.netherCoord.x.string} , ${player.netherCoord.z.string} ]"
60+ }
4661}
0 commit comments