aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main/java/com/dulkirfabric/mixin/render/GameMenuScreenMixin.java2
-rw-r--r--src/main/kotlin/com/dulkirfabric/DulkirModFabric.kt20
-rw-r--r--src/main/kotlin/com/dulkirfabric/Registrations.kt24
-rw-r--r--src/main/kotlin/com/dulkirfabric/commands/ConfigCommand.kt20
-rw-r--r--src/main/kotlin/com/dulkirfabric/config/DulkirConfig.kt11
5 files changed, 66 insertions, 11 deletions
diff --git a/src/main/java/com/dulkirfabric/mixin/render/GameMenuScreenMixin.java b/src/main/java/com/dulkirfabric/mixin/render/GameMenuScreenMixin.java
index 020413e..b644595 100644
--- a/src/main/java/com/dulkirfabric/mixin/render/GameMenuScreenMixin.java
+++ b/src/main/java/com/dulkirfabric/mixin/render/GameMenuScreenMixin.java
@@ -45,7 +45,7 @@ public abstract class GameMenuScreenMixin extends ScreenMixin {
*/
@Inject(method = "initWidgets", at = @At(value = "FIELD", target = "Lnet/minecraft/client/gui/screen/GameMenuScreen;OPTIONS_TEXT:Lnet/minecraft/text/Text;"), locals = LocalCapture.CAPTURE_FAILEXCEPTION)
private void initWidget(CallbackInfo ci, GridWidget gridWidget, GridWidget.Adder adder) {
- adder.add(this.createButton(buttonText, DulkirConfig.INSTANCE::getScreen));
+ adder.add(this.createButton(buttonText, new DulkirConfig()::getScreen));
}
@Inject(method = "initWidgets", at = @At(value = "HEAD"))
diff --git a/src/main/kotlin/com/dulkirfabric/DulkirModFabric.kt b/src/main/kotlin/com/dulkirfabric/DulkirModFabric.kt
index c81cb63..0a66f69 100644
--- a/src/main/kotlin/com/dulkirfabric/DulkirModFabric.kt
+++ b/src/main/kotlin/com/dulkirfabric/DulkirModFabric.kt
@@ -17,7 +17,9 @@ import com.dulkirfabric.events.WidgetInitEvent
import meteordevelopment.orbit.EventBus
import meteordevelopment.orbit.EventHandler
import net.fabricmc.api.ModInitializer
+import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents
import net.minecraft.client.MinecraftClient
+import net.minecraft.client.gui.screen.Screen
import org.slf4j.LoggerFactory
import java.lang.invoke.MethodHandles
@@ -28,8 +30,8 @@ object DulkirModFabric : ModInitializer {
val EVENT_BUS = EventBus()
@JvmField
val mc: MinecraftClient = MinecraftClient.getInstance()
-
var widgetLoadTime = 0L
+ var delayedScreen: Screen? = null
override fun onInitialize() {
logger.info("Initializing DulkirMod...")
@@ -38,7 +40,16 @@ object DulkirModFabric : ModInitializer {
lookupInMethod.invoke(null, klass, MethodHandles.lookup()) as MethodHandles.Lookup
}
- EVENT_BUS.subscribe(this)
+ // Register a tick event listener to delay the screen opening
+ ClientTickEvents.END_CLIENT_TICK.register(ClientTickEvents.EndTick { client: MinecraftClient? ->
+ if (delayedScreen != null) {
+ MinecraftClient.getInstance().setScreen(delayedScreen)
+ delayedScreen = null
+ }
+ })
+
+ Registrations.registerEventListeners()
+ Registrations.registerCommands()
}
@EventHandler
@@ -52,4 +63,9 @@ object DulkirModFabric : ModInitializer {
val time = System.nanoTime() - widgetLoadTime
if (event.initialized) println("widgets initialized!!!!!, took: $time ns")
}
+
+ // Call this method when you want to open the new screen
+ fun openScreenDelayed(screen: Screen) {
+ delayedScreen = screen
+ }
} \ No newline at end of file
diff --git a/src/main/kotlin/com/dulkirfabric/Registrations.kt b/src/main/kotlin/com/dulkirfabric/Registrations.kt
new file mode 100644
index 0000000..101feca
--- /dev/null
+++ b/src/main/kotlin/com/dulkirfabric/Registrations.kt
@@ -0,0 +1,24 @@
+package com.dulkirfabric
+
+import com.dulkirfabric.DulkirModFabric.EVENT_BUS
+import com.dulkirfabric.commands.ConfigCommand
+import com.mojang.brigadier.CommandDispatcher
+import net.fabricmc.fabric.api.client.command.v2.ClientCommandRegistrationCallback
+import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource
+import net.minecraft.command.CommandRegistryAccess
+
+/**
+ * Collection of different mod registration stuff ran on initializing the mod. It is separated for readability
+ * purposes, as the list of features is planned to be quite large.
+ */
+object Registrations {
+
+ fun registerCommands() {
+ val cre = ClientCommandRegistrationCallback.EVENT
+ cre.register(ConfigCommand::register)
+ }
+
+ fun registerEventListeners() {
+ EVENT_BUS.subscribe(DulkirModFabric)
+ }
+} \ No newline at end of file
diff --git a/src/main/kotlin/com/dulkirfabric/commands/ConfigCommand.kt b/src/main/kotlin/com/dulkirfabric/commands/ConfigCommand.kt
new file mode 100644
index 0000000..81d5d07
--- /dev/null
+++ b/src/main/kotlin/com/dulkirfabric/commands/ConfigCommand.kt
@@ -0,0 +1,20 @@
+package com.dulkirfabric.commands
+
+import com.dulkirfabric.DulkirModFabric
+import com.dulkirfabric.DulkirModFabric.mc
+import com.dulkirfabric.config.DulkirConfig
+import com.google.common.eventbus.Subscribe
+import com.mojang.brigadier.CommandDispatcher
+import com.mojang.brigadier.builder.LiteralArgumentBuilder
+import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource
+import net.minecraft.command.CommandRegistryAccess
+
+object ConfigCommand {
+ fun register(dispatcher: CommandDispatcher<FabricClientCommandSource>, registryAccess: CommandRegistryAccess) {
+ dispatcher.register(LiteralArgumentBuilder.literal<FabricClientCommandSource>("dulkir").executes {
+ println("command running")
+ DulkirModFabric.openScreenDelayed(DulkirConfig().screen)
+ return@executes 0
+ })
+ }
+} \ 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 14c8c29..8e0be9e 100644
--- a/src/main/kotlin/com/dulkirfabric/config/DulkirConfig.kt
+++ b/src/main/kotlin/com/dulkirfabric/config/DulkirConfig.kt
@@ -13,6 +13,7 @@
package com.dulkirfabric.config
+import com.dulkirfabric.DulkirModFabric.mc
import me.shedaniel.clothconfig2.api.ConfigBuilder
import me.shedaniel.clothconfig2.api.Modifier
import me.shedaniel.clothconfig2.api.ModifierKeyCode
@@ -25,24 +26,18 @@ import net.minecraft.text.Text
import net.minecraft.util.Formatting
import net.minecraft.util.Identifier
-object DulkirConfig {
+class 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)
+ builder.setParentScreen(mc.currentScreen)
val entryBuilder = builder.entryBuilder()
val testing = builder.getOrCreateCategory(Text.translatable("category.cloth-config.testing"))
testing.addEntry(