Skip to content

Commit 570d4d4

Browse files
committed
More compact json and qol
1 parent f4683e9 commit 570d4d4

29 files changed

+209
-114
lines changed

common/src/main/java/com/lambda/mixin/MixinKeyBinding.java renamed to common/src/main/java/com/lambda/mixin/KeyBindingMixin.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
import java.util.Objects;
1111

1212
@Mixin(KeyBinding.class)
13-
public class MixinKeyBinding {
13+
public class KeyBindingMixin {
1414
@Inject(method = "isPressed", at = @At("HEAD"), cancellable = true)
1515
void autoSprint(CallbackInfoReturnable<Boolean> cir) {
1616
KeyBinding instance = (KeyBinding) (Object) this;

common/src/main/kotlin/com/lambda/Lambda.kt

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@ package com.lambda
22

33
import com.google.gson.Gson
44
import com.google.gson.GsonBuilder
5-
import com.lambda.config.serializer.BlockPosSerializer
6-
import com.lambda.config.serializer.BlockSerializer
7-
import com.lambda.config.serializer.ColorSerializer
5+
import com.lambda.config.serializer.*
6+
import com.lambda.module.tag.ModuleTag
7+
import com.lambda.util.KeyCode
88
import dev.architectury.platform.Platform
99
import net.minecraft.block.Block
1010
import net.minecraft.client.MinecraftClient
@@ -22,10 +22,12 @@ object Lambda {
2222
val VERSION: String = LoaderInfo.getVersion()
2323
val LOG = (LogManager.getLogger(SYMBOL) as Logger)
2424
.apply { level = if (Platform.isDevelopmentEnvironment()) Level.DEBUG else Level.INFO }
25-
val mc: MinecraftClient by lazy { MinecraftClient.getInstance() }
25+
@JvmStatic val mc: MinecraftClient by lazy { MinecraftClient.getInstance() }
2626

2727
val gson: Gson = GsonBuilder()
2828
.setPrettyPrinting()
29+
.registerTypeAdapter(ModuleTag::class.java, ModuleTagSerializer)
30+
.registerTypeAdapter(KeyCode::class.java, KeyCodeSerializer)
2931
.registerTypeAdapter(Color::class.java, ColorSerializer)
3032
.registerTypeAdapter(BlockPos::class.java, BlockPosSerializer)
3133
.registerTypeAdapter(Block::class.java, BlockSerializer)

common/src/main/kotlin/com/lambda/config/AbstractSetting.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,13 +48,13 @@ import kotlin.reflect.KProperty
4848
* ```
4949
*
5050
* @property defaultValue The default value of the setting.
51-
* @property visibility A function that determines whether the setting is visible.
5251
* @property description A description of the setting.
52+
* @property visibility A function that determines whether the setting is visible.
5353
*/
5454
abstract class AbstractSetting<T : Any>(
5555
private val defaultValue: T,
56-
val visibility: () -> Boolean,
5756
val description: String,
57+
val visibility: () -> Boolean,
5858
) : Jsonable, Nameable {
5959
private val listeners = mutableListOf<(from: T, to: T) -> Unit>()
6060

common/src/main/kotlin/com/lambda/config/Configurable.kt

Lines changed: 63 additions & 51 deletions
Large diffs are not rendered by default.
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package com.lambda.config.serializer
2+
3+
import com.google.gson.*
4+
import com.lambda.util.KeyCode
5+
import java.lang.reflect.Type
6+
7+
object KeyCodeSerializer : JsonSerializer<KeyCode>, JsonDeserializer<KeyCode> {
8+
override fun serialize(
9+
src: KeyCode?,
10+
typeOfSrc: Type?,
11+
context: JsonSerializationContext?
12+
): JsonElement =
13+
src?.let {
14+
JsonPrimitive(it.key)
15+
} ?: JsonNull.INSTANCE
16+
17+
override fun deserialize(
18+
json: JsonElement?,
19+
typeOfT: Type?,
20+
context: JsonDeserializationContext?
21+
): KeyCode =
22+
json?.asInt?.let { KeyCode(it) } ?: throw JsonParseException("Invalid key code format")
23+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package com.lambda.config.serializer
2+
3+
import com.google.gson.*
4+
import com.lambda.module.tag.ModuleTag
5+
import java.lang.reflect.Type
6+
7+
object ModuleTagSerializer : JsonSerializer<ModuleTag>, JsonDeserializer<ModuleTag> {
8+
override fun serialize(
9+
src: ModuleTag?,
10+
typeOfSrc: Type?,
11+
context: JsonSerializationContext?
12+
): JsonElement =
13+
src?.let {
14+
JsonPrimitive(it.name)
15+
} ?: JsonNull.INSTANCE
16+
17+
override fun deserialize(
18+
json: JsonElement?,
19+
typeOfT: Type?,
20+
context: JsonDeserializationContext?
21+
): ModuleTag =
22+
json?.asString?.let { ModuleTag(it) } ?: throw JsonParseException("Invalid module tag format")
23+
}

common/src/main/kotlin/com/lambda/config/settings/CharSetting.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,10 @@ import com.lambda.config.AbstractSetting
1313
class CharSetting(
1414
override val name: String,
1515
defaultValue: Char,
16-
visibility: () -> Boolean,
1716
description: String,
17+
visibility: () -> Boolean,
1818
) : AbstractSetting<Char>(
1919
defaultValue,
20-
visibility,
21-
description
20+
description,
21+
visibility
2222
)

common/src/main/kotlin/com/lambda/config/settings/NumericSetting.kt

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.lambda.config.settings
22

33
import com.lambda.config.AbstractSetting
4+
import com.lambda.util.math.MathUtils.roundToStep
45
import kotlin.math.round
56
import kotlin.reflect.KProperty
67

@@ -14,18 +15,22 @@ import kotlin.reflect.KProperty
1415
* @property step The [step] to which the setting's [value] is rounded.
1516
* @property visibility A function that determines whether the setting [isVisible].
1617
* @property description A [description] of the setting.
18+
* @property unit The unit of the setting's [value].
1719
*/
1820
abstract class NumericSetting<T>(
1921
value: T,
2022
open val range: ClosedRange<T>,
2123
open val step: T,
22-
visibility: () -> Boolean,
2324
description: String,
25+
visibility: () -> Boolean,
26+
val unit: String,
2427
) : AbstractSetting<T>(
2528
value,
26-
visibility,
27-
description
29+
description,
30+
visibility
2831
) where T : Number, T : Comparable<T> {
32+
override fun toString() = "$value$unit"
33+
2934
override operator fun setValue(thisRef: Any?, property: KProperty<*>, valueIn: T) {
3035
value = valueIn.coerceIn(range).roundToStep(step)
3136
}

common/src/main/kotlin/com/lambda/config/settings/StringSetting.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,16 @@ import com.lambda.config.AbstractSetting
77
*
88
* @property name The [name] of the setting.
99
* @property defaultValue The default [String] [value] of the setting.
10-
* @property visibility A function that determines whether the setting [isVisible].
1110
* @property description A [description] of the setting.
11+
* @property visibility A function that determines whether the setting [isVisible].
1212
*/
1313
class StringSetting(
1414
override val name: String,
1515
defaultValue: String,
16-
visibility: () -> Boolean,
1716
description: String,
17+
visibility: () -> Boolean,
1818
) : AbstractSetting<String>(
1919
defaultValue,
20-
visibility,
21-
description
20+
description,
21+
visibility
2222
)

common/src/main/kotlin/com/lambda/config/settings/collections/ListSetting.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,12 @@ import com.lambda.config.AbstractSetting
88
class ListSetting<T>(
99
override val name: String,
1010
defaultValue: List<T>,
11-
visibility: () -> Boolean,
1211
description: String,
12+
visibility: () -> Boolean,
1313
) : AbstractSetting<List<T>>(
1414
defaultValue,
15-
visibility,
16-
description
15+
description,
16+
visibility
1717
) {
1818
override fun loadFromJson(serialized: JsonElement) {
1919
val listType = object : TypeToken<List<T>>() {}.type

0 commit comments

Comments
 (0)