Skip to content

Commit 38727ea

Browse files
committed
Fix: Optional serializer
1 parent 96867ea commit 38727ea

File tree

2 files changed

+19
-1
lines changed

2 files changed

+19
-1
lines changed

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import com.lambda.core.Loader
1010
import com.lambda.gui.impl.clickgui.windows.tag.CustomModuleWindow
1111
import com.lambda.gui.impl.clickgui.windows.tag.TagWindow
1212
import com.lambda.module.tag.ModuleTag
13-
import com.lambda.threading.runGameScheduled
1413
import com.lambda.util.KeyCode
1514
import com.mojang.authlib.GameProfile
1615
import com.mojang.blaze3d.systems.RenderSystem.recordRenderCall
@@ -20,6 +19,7 @@ import net.minecraft.util.math.BlockPos
2019
import org.apache.logging.log4j.LogManager
2120
import org.apache.logging.log4j.Logger
2221
import java.awt.Color
22+
import java.util.*
2323

2424
object Lambda {
2525
const val MOD_NAME = "Lambda"
@@ -40,6 +40,7 @@ object Lambda {
4040
.registerTypeAdapter(BlockPos::class.java, BlockPosSerializer)
4141
.registerTypeAdapter(Block::class.java, BlockSerializer)
4242
.registerTypeAdapter(GameProfile::class.java, GameProfileSerializer)
43+
.registerTypeAdapter(Optional::class.java, OptionalSerializer)
4344
.create()
4445

4546
fun initialize() {
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package com.lambda.config.serializer
2+
3+
import com.google.gson.*
4+
import java.lang.reflect.Type
5+
import java.util.*
6+
7+
object OptionalSerializer : JsonSerializer<Optional<Any>>, JsonDeserializer<Optional<Any>> {
8+
override fun serialize(src: Optional<Any>?, typeOfSrc: Type?, context: JsonSerializationContext?): JsonElement =
9+
src?.map { context?.serialize(it) }?.orElse(JsonNull.INSTANCE) ?: JsonNull.INSTANCE
10+
11+
override fun deserialize(
12+
json: JsonElement?,
13+
typeOfT: Type?,
14+
context: JsonDeserializationContext?
15+
): Optional<Any> =
16+
Optional.ofNullable(json?.let { context?.deserialize(it, typeOfT) ?: Optional.empty<Any>() })
17+
}

0 commit comments

Comments
 (0)