aboutsummaryrefslogtreecommitdiff
path: root/src/main/kotlin
diff options
context:
space:
mode:
authoringlettronald <inglettronald@gmail.com>2023-06-04 14:28:53 -0500
committeringlettronald <inglettronald@gmail.com>2023-06-04 14:28:53 -0500
commit41832da25f9aa5cb37fee870752e64e5a9057c17 (patch)
treef7b6015ddee527367e1d8235b2fd36a155d62a20 /src/main/kotlin
downloadDulkirMod-Fabric-41832da25f9aa5cb37fee870752e64e5a9057c17.tar.gz
DulkirMod-Fabric-41832da25f9aa5cb37fee870752e64e5a9057c17.tar.bz2
DulkirMod-Fabric-41832da25f9aa5cb37fee870752e64e5a9057c17.zip
initial commit
Diffstat (limited to 'src/main/kotlin')
-rw-r--r--src/main/kotlin/com/dulkirfabric/DulkirModFabric.kt55
-rw-r--r--src/main/kotlin/com/dulkirfabric/config/DulkirConfig.kt95
-rw-r--r--src/main/kotlin/com/dulkirfabric/events/WidgetInitEvent.kt24
3 files changed, 174 insertions, 0 deletions
diff --git a/src/main/kotlin/com/dulkirfabric/DulkirModFabric.kt b/src/main/kotlin/com/dulkirfabric/DulkirModFabric.kt
new file mode 100644
index 0000000..c81cb63
--- /dev/null
+++ b/src/main/kotlin/com/dulkirfabric/DulkirModFabric.kt
@@ -0,0 +1,55 @@
+/**
+ * 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
+
+import com.dulkirfabric.events.WidgetInitEvent
+import meteordevelopment.orbit.EventBus
+import meteordevelopment.orbit.EventHandler
+import net.fabricmc.api.ModInitializer
+import net.minecraft.client.MinecraftClient
+import org.slf4j.LoggerFactory
+import java.lang.invoke.MethodHandles
+
+
+object DulkirModFabric : ModInitializer {
+ private val logger = LoggerFactory.getLogger("dulkirmod-fabric")
+ @JvmField
+ val EVENT_BUS = EventBus()
+ @JvmField
+ val mc: MinecraftClient = MinecraftClient.getInstance()
+
+ var widgetLoadTime = 0L
+
+ override fun onInitialize() {
+ logger.info("Initializing DulkirMod...")
+
+ EVENT_BUS.registerLambdaFactory("com.dulkirfabric") { lookupInMethod, klass ->
+ lookupInMethod.invoke(null, klass, MethodHandles.lookup()) as MethodHandles.Lookup
+ }
+
+ EVENT_BUS.subscribe(this)
+ }
+
+ @EventHandler
+ fun onPreInit(event: WidgetInitEvent) {
+ if (!event.initialized) println("have not initialized widgets yet!!!!")
+ widgetLoadTime = System.nanoTime()
+ }
+
+ @EventHandler
+ fun onPostInit(event: WidgetInitEvent) {
+ val time = System.nanoTime() - widgetLoadTime
+ if (event.initialized) println("widgets initialized!!!!!, took: $time ns")
+ }
+} \ 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
new file mode 100644
index 0000000..14c8c29
--- /dev/null
+++ b/src/main/kotlin/com/dulkirfabric/config/DulkirConfig.kt
@@ -0,0 +1,95 @@
+/**
+ * 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.config
+
+import me.shedaniel.clothconfig2.api.ConfigBuilder
+import me.shedaniel.clothconfig2.api.Modifier
+import me.shedaniel.clothconfig2.api.ModifierKeyCode
+import me.shedaniel.clothconfig2.impl.builders.LongListBuilder
+import net.minecraft.client.gui.screen.Screen
+import net.minecraft.client.util.InputUtil
+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
+
+object DulkirConfig {
+
+ private val buttonText: Text =
+ MutableText.of(LiteralTextContent("Dulkir")).formatted(Formatting.BOLD, Formatting.YELLOW)
+ var screen: Screen
+
+ init {
+ /*val builder = ConfigBuilder.create()
+ .setParentScreen(mc.currentScreen)
+ .setTitle(buttonText)
+ val entryBuilder = builder.entryBuilder()
+
+ val general = builder.getOrCreateCategory(Text.of("General"))
+ val someSetting = general.addEntry(entryBuilder.)*/
+ val builder = ConfigBuilder.create().setTitle(buttonText)
+ builder.setDefaultBackgroundTexture(Identifier("minecraft:textures/block/oak_planks.png"))
+ builder.setGlobalized(true)
+ builder.setGlobalizedExpanded(true)
+ val entryBuilder = builder.entryBuilder()
+ val testing = builder.getOrCreateCategory(Text.translatable("category.cloth-config.testing"))
+ testing.addEntry(
+ entryBuilder.startKeyCodeField(Text.literal("Cool Key"), InputUtil.UNKNOWN_KEY)
+ .setDefaultValue(InputUtil.UNKNOWN_KEY).build()
+ )
+ testing.addEntry(
+ entryBuilder.startModifierKeyCodeField(
+ Text.literal("Cool Modifier Key"),
+ ModifierKeyCode.of(InputUtil.Type.KEYSYM.createFromCode(79), Modifier.of(false, true, false))
+ ).setDefaultValue(
+ ModifierKeyCode.of(
+ InputUtil.Type.KEYSYM.createFromCode(79),
+ Modifier.of(false, true, false)
+ )
+ ).build()
+ )
+ testing.addEntry(
+ entryBuilder.startDoubleList(Text.literal("A list of Doubles"), mutableListOf(1.0, 2.0, 3.0))
+ .setDefaultValue(
+ mutableListOf(1.0, 2.0, 3.0)
+ ).build()
+ )
+ testing.addEntry(
+ (entryBuilder.startLongList(Text.literal("A list of Longs"), mutableListOf(1L, 2L, 3L)).setDefaultValue(
+ mutableListOf(1L, 2L, 3L)
+ ).setInsertButtonEnabled(false) as LongListBuilder).build()
+ )
+ testing.addEntry(
+ entryBuilder.startStrList(Text.literal("A list of Strings"), mutableListOf("abc", "xyz")).setTooltip(
+ *arrayOf<Text>(
+ Text.literal("Yes this is some beautiful tooltip\nOh and this is the second line!")
+ )
+ ).setDefaultValue(mutableListOf("abc", "xyz")).build()
+ )
+ val colors = entryBuilder.startSubCategory(Text.literal("Colors")).setExpanded(true)
+ colors.add(entryBuilder.startColorField(Text.literal("A color field"), 65535).setDefaultValue(65535).build())
+ colors.add(
+ entryBuilder.startColorField(Text.literal("An alpha color field"), -16711681).setDefaultValue(-16711681)
+ .setAlphaMode(true).build()
+ )
+ colors.add(
+ entryBuilder.startColorField(Text.literal("An alpha color field"), -1).setDefaultValue(-65536)
+ .setAlphaMode(true).build()
+ )
+ builder.transparentBackground()
+ screen = builder.build()
+ }
+
+} \ 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
new file mode 100644
index 0000000..9a6eebb
--- /dev/null
+++ b/src/main/kotlin/com/dulkirfabric/events/WidgetInitEvent.kt
@@ -0,0 +1,24 @@
+/**
+ * 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