From a10c097974d0b476be275c1fd2888d7502508efd Mon Sep 17 00:00:00 2001 From: hannibal2 <24389977+hannibal00212@users.noreply.github.com> Date: Thu, 18 May 2023 00:27:01 +0200 Subject: added profile specific config support --- .../at/hannibal2/skyhanni/utils/LorenzUtils.kt | 36 +++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) (limited to 'src/main/java/at/hannibal2/skyhanni/utils') diff --git a/src/main/java/at/hannibal2/skyhanni/utils/LorenzUtils.kt b/src/main/java/at/hannibal2/skyhanni/utils/LorenzUtils.kt index b7930bfd1..556eb59a0 100644 --- a/src/main/java/at/hannibal2/skyhanni/utils/LorenzUtils.kt +++ b/src/main/java/at/hannibal2/skyhanni/utils/LorenzUtils.kt @@ -24,6 +24,10 @@ import java.text.DecimalFormat import java.text.NumberFormat import java.text.SimpleDateFormat import java.util.* +import kotlin.properties.ReadWriteProperty +import kotlin.reflect.KMutableProperty1 +import kotlin.reflect.KProperty +import kotlin.reflect.KProperty0 object LorenzUtils { @@ -183,7 +187,9 @@ object LorenzUtils { return monthNr } - fun getPlayerUuid() = Minecraft.getMinecraft().thePlayer.uniqueID.toDashlessUUID() + fun getPlayerUuid() = getRawPlayerUuid().toDashlessUUID() + + fun getRawPlayerUuid() = Minecraft.getMinecraft().thePlayer.uniqueID fun getPlayerName() = Minecraft.getMinecraft().thePlayer.name @@ -312,4 +318,32 @@ object LorenzUtils { } add(newList) } + + // TODO nea? +// fun dynamic(block: () -> KMutableProperty0?): ReadWriteProperty { +// return object : ReadWriteProperty { +// override fun getValue(thisRef: Any?, property: KProperty<*>): T? { +// return block()?.get() +// } +// +// override fun setValue(thisRef: Any?, property: KProperty<*>, value: T?) { +// if (value != null) +// block()?.set(value) +// } +// } +// } + + fun dynamic(root: KProperty0, child: KMutableProperty1) = + object : ReadWriteProperty { + override fun getValue(thisRef: Any?, property: KProperty<*>): T? { + val rootObj = root.get() ?: return null + return child.get(rootObj) + } + + override fun setValue(thisRef: Any?, property: KProperty<*>, value: T?) { + if (value == null) return + val rootObj = root.get() ?: return + child.set(rootObj, value) + } + } } \ No newline at end of file -- cgit