From 41832da25f9aa5cb37fee870752e64e5a9057c17 Mon Sep 17 00:00:00 2001 From: inglettronald Date: Sun, 4 Jun 2023 14:28:53 -0500 Subject: initial commit --- .../kotlin/com/dulkirfabric/DulkirModFabric.kt | 55 +++++++++++++ .../kotlin/com/dulkirfabric/config/DulkirConfig.kt | 95 ++++++++++++++++++++++ .../com/dulkirfabric/events/WidgetInitEvent.kt | 24 ++++++ 3 files changed, 174 insertions(+) create mode 100644 src/main/kotlin/com/dulkirfabric/DulkirModFabric.kt create mode 100644 src/main/kotlin/com/dulkirfabric/config/DulkirConfig.kt create mode 100644 src/main/kotlin/com/dulkirfabric/events/WidgetInitEvent.kt (limited to 'src/main/kotlin/com') 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.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 -- cgit