aboutsummaryrefslogtreecommitdiff
path: root/src/main/kotlin/com/dulkirfabric
diff options
context:
space:
mode:
authoringlettronald <inglettronald@gmail.com>2023-06-09 16:55:24 -0500
committeringlettronald <inglettronald@gmail.com>2023-06-09 16:55:24 -0500
commitc0eb625a9b937bcb9256e98afb80d32443daa795 (patch)
tree3b1056bb17a50faabce65ee62a763050bb636741 /src/main/kotlin/com/dulkirfabric
parent88a2da60ac3a074dd93fa13f262775b05573548f (diff)
downloadDulkirMod-Fabric-c0eb625a9b937bcb9256e98afb80d32443daa795.tar.gz
DulkirMod-Fabric-c0eb625a9b937bcb9256e98afb80d32443daa795.tar.bz2
DulkirMod-Fabric-c0eb625a9b937bcb9256e98afb80d32443daa795.zip
1.20 refactor
Diffstat (limited to 'src/main/kotlin/com/dulkirfabric')
-rw-r--r--src/main/kotlin/com/dulkirfabric/DulkirModFabric.kt1
-rw-r--r--src/main/kotlin/com/dulkirfabric/Registrations.kt3
-rw-r--r--src/main/kotlin/com/dulkirfabric/config/DulkirConfig.kt60
-rw-r--r--src/main/kotlin/com/dulkirfabric/config/ListHelper.kt4
-rw-r--r--src/main/kotlin/com/dulkirfabric/config/serializations/KeySerializer.kt22
-rw-r--r--src/main/kotlin/com/dulkirfabric/events/ClientTickEvent.kt9
-rw-r--r--src/main/kotlin/com/dulkirfabric/events/InventoryKeyPressEvent.kt5
-rw-r--r--src/main/kotlin/com/dulkirfabric/events/SlotRenderEvent.kt29
-rw-r--r--src/main/kotlin/com/dulkirfabric/events/WidgetInitEvent.kt24
-rw-r--r--src/main/kotlin/com/dulkirfabric/events/WorldLoadEvent.kt8
-rw-r--r--src/main/kotlin/com/dulkirfabric/events/base/CancellableEvent.kt25
-rw-r--r--src/main/kotlin/com/dulkirfabric/events/base/Event.kt9
12 files changed, 123 insertions, 76 deletions
diff --git a/src/main/kotlin/com/dulkirfabric/DulkirModFabric.kt b/src/main/kotlin/com/dulkirfabric/DulkirModFabric.kt
index 95e3eb2..e32e50a 100644
--- a/src/main/kotlin/com/dulkirfabric/DulkirModFabric.kt
+++ b/src/main/kotlin/com/dulkirfabric/DulkirModFabric.kt
@@ -14,7 +14,6 @@
package com.dulkirfabric
import com.dulkirfabric.config.DulkirConfig
-import com.dulkirfabric.events.WidgetInitEvent
import meteordevelopment.orbit.EventBus
import meteordevelopment.orbit.EventHandler
import net.fabricmc.api.ModInitializer
diff --git a/src/main/kotlin/com/dulkirfabric/Registrations.kt b/src/main/kotlin/com/dulkirfabric/Registrations.kt
index 1d99640..8a90f7b 100644
--- a/src/main/kotlin/com/dulkirfabric/Registrations.kt
+++ b/src/main/kotlin/com/dulkirfabric/Registrations.kt
@@ -40,8 +40,7 @@ object Registrations {
fun registerEvents() {
// Register Custom Tick event, so we can use it like 1.8.9 forge
ClientTickEvents.START_CLIENT_TICK.register(
- ClientTickEvents.StartTick { _ -> EVENT_BUS.post(ClientTickEvent.get()) }
+ ClientTickEvents.StartTick { _ -> ClientTickEvent.post() }
)
- // WorldLoadFinishedEvent TODO
}
} \ No newline at end of file
diff --git a/src/main/kotlin/com/dulkirfabric/config/DulkirConfig.kt b/src/main/kotlin/com/dulkirfabric/config/DulkirConfig.kt
index 9aeb190..a34016d 100644
--- a/src/main/kotlin/com/dulkirfabric/config/DulkirConfig.kt
+++ b/src/main/kotlin/com/dulkirfabric/config/DulkirConfig.kt
@@ -10,25 +10,27 @@
*
* You may add additional accurate notices of copyright ownership.
*/
-
+@file:UseSerializers(com.dulkirfabric.config.serializations.KeySerializer::class)
package com.dulkirfabric.config
import com.dulkirfabric.DulkirModFabric.mc
import com.dulkirfabric.config.ListHelper.mkKeyField
import com.dulkirfabric.config.ListHelper.mkStringField
-import com.google.gson.Gson
import kotlinx.serialization.Serializable
-import me.shedaniel.cloth.clothconfig.shadowed.blue.endless.jankson.annotation.SerializedName
+import kotlinx.serialization.UseSerializers
+import kotlinx.serialization.decodeFromString
+import kotlinx.serialization.encodeToString
+import kotlinx.serialization.json.Json
import me.shedaniel.clothconfig2.api.ConfigBuilder
import net.minecraft.client.gui.screen.Screen
import net.minecraft.client.util.InputUtil
+import net.minecraft.client.util.InputUtil.UNKNOWN_KEY
import net.minecraft.text.LiteralTextContent
import net.minecraft.text.MutableText
import net.minecraft.text.Text
import net.minecraft.util.Formatting
import net.minecraft.util.Identifier
import java.io.File
-import java.util.*
class DulkirConfig {
@@ -46,15 +48,15 @@ class DulkirConfig {
val entryBuilder = builder.entryBuilder()
val general = builder.getOrCreateCategory(Text.literal("General"))
general.addEntry(
- entryBuilder.startBooleanToggle(Text.literal("Custom Inventory Scale Toggle"), invScaleBool)
+ entryBuilder.startBooleanToggle(Text.literal("Custom Inventory Scale Toggle"), configOptions.invScaleBool)
.setTooltip(Text.literal("WAHOO!"))
- .setSaveConsumer { newValue -> invScaleBool = newValue }
+ .setSaveConsumer { newValue -> configOptions.invScaleBool = newValue }
.build()
)
general.addEntry(
- entryBuilder.startIntSlider(Text.literal("Inventory Scale"), inventoryScale, 1, 5)
+ entryBuilder.startIntSlider(Text.literal("Inventory Scale"), configOptions.inventoryScale, 1, 5)
.setTooltip(Text.literal("Size of GUI whenever you're in an inventory screen"))
- .setSaveConsumer { newValue -> inventoryScale = newValue }
+ .setSaveConsumer { newValue -> configOptions.inventoryScale = newValue }
.build()
)
@@ -62,8 +64,8 @@ class DulkirConfig {
shortcuts.addEntry(
ListHelper.mkConfigList(
Text.literal("Macros"),
- ListHelper.Holder::macros,
- { Macro(InputUtil.UNKNOWN_KEY, "") },
+ configOptions::macrosList,
+ { Macro(UNKNOWN_KEY, "") },
Text.literal("Macro"),
{ value ->
listOf(
@@ -79,11 +81,9 @@ class DulkirConfig {
}
data class ConfigOptions(
- @SerializedName("testOption")
- val invScaleBool: Boolean,
-
- @SerializedName("inventoryScale")
- val inventoryScale: Int
+ var invScaleBool: Boolean = true,
+ var inventoryScale: Int = 1,
+ var macrosList: List<Macro> = listOf(Macro(UNKNOWN_KEY, ""))
)
@Serializable
@@ -96,38 +96,36 @@ class DulkirConfig {
* Object for storing all the actual config values that will be used in doing useful stuff with the config
*/
companion object ConfigVars {
- var invScaleBool: Boolean = true
- var inventoryScale: Int = 1
- var value: List<Pair<Int, Int>> = listOf(Pair(1, 2), Pair(3, 4))
-
+ var configOptions = ConfigOptions()
private fun saveConfig() {
- val gson = Gson()
- val configOptions = ConfigOptions(
- invScaleBool,
- inventoryScale)
- val json = gson.toJson(configOptions)
+ val json = Json {
+ prettyPrint = true
+ ignoreUnknownKeys = true
+ encodeDefaults = true
+ }
val configDirectory = File(mc.runDirectory, "config")
if (!configDirectory.exists()) {
configDirectory.mkdir()
}
val configFile = File(configDirectory, "dulkirConfig.json")
- configFile.writeText(json)
+ configFile.writeText(json.encodeToString(configOptions))
}
fun loadConfig() {
- val gson = Gson()
val configDir = File(mc.runDirectory, "config")
if (!configDir.exists()) return
val configFile = File(configDir, "dulkirConfig.json")
if (configFile.exists()) {
- val json = configFile.readText()
- val configOptions = gson.fromJson(json, ConfigOptions::class.java)
-
- invScaleBool = configOptions.invScaleBool
- inventoryScale = configOptions.inventoryScale
+ val json = Json {
+ prettyPrint = true
+ ignoreUnknownKeys = true
+ encodeDefaults = true
+ }
+ configOptions = json.decodeFromString<ConfigOptions>(configFile.readText())
}
+
}
}
diff --git a/src/main/kotlin/com/dulkirfabric/config/ListHelper.kt b/src/main/kotlin/com/dulkirfabric/config/ListHelper.kt
index 3476bcc..8f50943 100644
--- a/src/main/kotlin/com/dulkirfabric/config/ListHelper.kt
+++ b/src/main/kotlin/com/dulkirfabric/config/ListHelper.kt
@@ -35,10 +35,6 @@ object ListHelper {
)
}
- object Holder {
- var macros = listOf(DulkirConfig.Macro(InputUtil.UNKNOWN_KEY, "Hello World"))
- }
-
fun ConfigEntryBuilder.mkStringField(text: Text, prop: KMutableProperty0<String>) = startStrField(text, prop.get())
.setSaveConsumer { prop.set(it) }
.setDefaultValue("")
diff --git a/src/main/kotlin/com/dulkirfabric/config/serializations/KeySerializer.kt b/src/main/kotlin/com/dulkirfabric/config/serializations/KeySerializer.kt
new file mode 100644
index 0000000..a737bf0
--- /dev/null
+++ b/src/main/kotlin/com/dulkirfabric/config/serializations/KeySerializer.kt
@@ -0,0 +1,22 @@
+package com.dulkirfabric.config.serializations
+
+import kotlinx.serialization.KSerializer
+import kotlinx.serialization.descriptors.PrimitiveKind
+import kotlinx.serialization.descriptors.PrimitiveSerialDescriptor
+import kotlinx.serialization.descriptors.SerialDescriptor
+import kotlinx.serialization.encoding.Decoder
+import kotlinx.serialization.encoding.Encoder
+import net.minecraft.client.util.InputUtil
+import org.lwjgl.glfw.GLFW
+
+object KeySerializer: KSerializer<InputUtil.Key> {
+ override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor("InputUtil.Key", PrimitiveKind.INT)
+
+ override fun deserialize(decoder: Decoder): InputUtil.Key {
+ return InputUtil.fromKeyCode(GLFW.GLFW_KEY_UNKNOWN, decoder.decodeInt())
+ }
+
+ override fun serialize(encoder: Encoder, value: InputUtil.Key) {
+ encoder.encodeInt(value.code)
+ }
+} \ No newline at end of file
diff --git a/src/main/kotlin/com/dulkirfabric/events/ClientTickEvent.kt b/src/main/kotlin/com/dulkirfabric/events/ClientTickEvent.kt
index f24fdf7..d8184f1 100644
--- a/src/main/kotlin/com/dulkirfabric/events/ClientTickEvent.kt
+++ b/src/main/kotlin/com/dulkirfabric/events/ClientTickEvent.kt
@@ -1,8 +1,5 @@
package com.dulkirfabric.events
-object ClientTickEvent {
- @JvmStatic
- fun get(): ClientTickEvent {
- return this
- }
-} \ No newline at end of file
+import com.dulkirfabric.events.base.Event
+
+object ClientTickEvent: Event() \ No newline at end of file
diff --git a/src/main/kotlin/com/dulkirfabric/events/InventoryKeyPressEvent.kt b/src/main/kotlin/com/dulkirfabric/events/InventoryKeyPressEvent.kt
new file mode 100644
index 0000000..f4f9e13
--- /dev/null
+++ b/src/main/kotlin/com/dulkirfabric/events/InventoryKeyPressEvent.kt
@@ -0,0 +1,5 @@
+package com.dulkirfabric.events
+
+import com.dulkirfabric.events.base.CancellableEvent
+
+data class InventoryKeyPressEvent(val keyCode: Int, val scanCode: Int, val modifiers: Int): CancellableEvent() \ No newline at end of file
diff --git a/src/main/kotlin/com/dulkirfabric/events/SlotRenderEvent.kt b/src/main/kotlin/com/dulkirfabric/events/SlotRenderEvent.kt
new file mode 100644
index 0000000..3670998
--- /dev/null
+++ b/src/main/kotlin/com/dulkirfabric/events/SlotRenderEvent.kt
@@ -0,0 +1,29 @@
+package com.dulkirfabric.events
+
+import com.dulkirfabric.events.base.CancellableEvent
+import net.minecraft.client.gui.DrawContext
+import net.minecraft.screen.slot.Slot
+
+interface SlotRenderEvent {
+ val context: DrawContext
+ val slot: Slot
+ val mouseX: Int
+ val mouseY: Int
+ val delta: Float
+
+ data class Before(
+ override val context: DrawContext, override val slot: Slot,
+ override val mouseX: Int,
+ override val mouseY: Int,
+ override val delta: Float
+ ) : CancellableEvent(),
+ SlotRenderEvent
+
+ data class After(
+ override val context: DrawContext, override val slot: Slot,
+ override val mouseX: Int,
+ override val mouseY: Int,
+ override val delta: Float
+ ) : CancellableEvent(),
+ SlotRenderEvent
+} \ No newline at end of file
diff --git a/src/main/kotlin/com/dulkirfabric/events/WidgetInitEvent.kt b/src/main/kotlin/com/dulkirfabric/events/WidgetInitEvent.kt
deleted file mode 100644
index 9a6eebb..0000000
--- a/src/main/kotlin/com/dulkirfabric/events/WidgetInitEvent.kt
+++ /dev/null
@@ -1,24 +0,0 @@
-/**
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * If it is not possible or desirable to put the notice in a particular
- * file, then You may include the notice in a location (such as a LICENSE
- * file in a relevant directory) where a recipient would be likely to look
- * for such a notice.
- *
- * You may add additional accurate notices of copyright ownership.
- */
-
-package com.dulkirfabric.events
-
-object WidgetInitEvent {
- var initialized = false
-
- @JvmStatic
- fun get(initialized: Boolean): WidgetInitEvent {
- this.initialized = initialized
- return this
- }
-} \ No newline at end of file
diff --git a/src/main/kotlin/com/dulkirfabric/events/WorldLoadEvent.kt b/src/main/kotlin/com/dulkirfabric/events/WorldLoadEvent.kt
deleted file mode 100644
index 99039a8..0000000
--- a/src/main/kotlin/com/dulkirfabric/events/WorldLoadEvent.kt
+++ /dev/null
@@ -1,8 +0,0 @@
-package com.dulkirfabric.events
-
-object WorldLoadEvent {
- @JvmStatic
- fun get(): WorldLoadEvent {
- return this
- }
-} \ No newline at end of file
diff --git a/src/main/kotlin/com/dulkirfabric/events/base/CancellableEvent.kt b/src/main/kotlin/com/dulkirfabric/events/base/CancellableEvent.kt
new file mode 100644
index 0000000..1c1ddcd
--- /dev/null
+++ b/src/main/kotlin/com/dulkirfabric/events/base/CancellableEvent.kt
@@ -0,0 +1,25 @@
+package com.dulkirfabric.events.base
+
+import com.dulkirfabric.DulkirModFabric
+import meteordevelopment.orbit.ICancellable
+
+abstract class CancellableEvent: ICancellable {
+
+ var cancelled: Boolean = false
+
+ override fun isCancelled(): Boolean {
+ return cancelled
+ }
+
+ override fun setCancelled(cancelled: Boolean) {
+ this.cancelled = cancelled
+ }
+
+ /**
+ * Posts a given event to the bus and returns whether the user wishes to cancel it
+ */
+ fun post(): Boolean {
+ DulkirModFabric.EVENT_BUS.post(this)
+ return cancelled
+ }
+} \ No newline at end of file
diff --git a/src/main/kotlin/com/dulkirfabric/events/base/Event.kt b/src/main/kotlin/com/dulkirfabric/events/base/Event.kt
new file mode 100644
index 0000000..7671199
--- /dev/null
+++ b/src/main/kotlin/com/dulkirfabric/events/base/Event.kt
@@ -0,0 +1,9 @@
+package com.dulkirfabric.events.base
+
+import com.dulkirfabric.DulkirModFabric
+
+abstract class Event {
+ fun post() {
+ DulkirModFabric.EVENT_BUS.post(this)
+ }
+} \ No newline at end of file