diff --git a/src/main/java/semmiedev/disc_jockey/Main.java b/src/main/java/semmiedev/disc_jockey/Main.java index efe4802..c0b5226 100644 --- a/src/main/java/semmiedev/disc_jockey/Main.java +++ b/src/main/java/semmiedev/disc_jockey/Main.java @@ -1,17 +1,23 @@ package semmiedev.disc_jockey; import net.fabricmc.api.ClientModInitializer; +import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource; import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents; +import net.fabricmc.fabric.api.client.keybinding.v1.KeyBindingHelper; import net.fabricmc.fabric.api.client.networking.v1.ClientLoginConnectionEvents; import net.fabricmc.fabric.api.client.rendering.v1.HudRenderCallback; import net.fabricmc.loader.api.FabricLoader; import net.minecraft.client.MinecraftClient; +import net.minecraft.client.option.KeyBinding; +import net.minecraft.client.util.InputUtil; import net.minecraft.client.world.ClientWorld; import net.minecraft.text.MutableText; import net.minecraft.text.Text; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import org.lwjgl.glfw.GLFW; import semmiedev.disc_jockey.gui.hud.BlocksOverlay; +import semmiedev.disc_jockey.gui.screen.DiscJockeyScreen; import java.io.File; import java.util.ArrayList; @@ -36,6 +42,8 @@ public class Main implements ClientModInitializer { SongLoader.loadSongs(); + KeyBinding openScreenKeyBind = KeyBindingHelper.registerKeyBinding(new KeyBinding(MOD_ID+".key_bind.open_screen", InputUtil.Type.KEYSYM, GLFW.GLFW_KEY_J, "key.category."+MOD_ID)); + ClientTickEvents.START_CLIENT_TICK.register(new ClientTickEvents.StartTick() { private ClientWorld prevWorld; @@ -46,6 +54,14 @@ public class Main implements ClientModInitializer { SONG_PLAYER.stop(); } prevWorld = client.world; + + if (openScreenKeyBind.wasPressed()) { + if (SongLoader.loadingSongs) { + client.inGameHud.getChatHud().addMessage(Text.translatable(Main.MOD_ID+".still_loading")); + } else { + client.setScreen(new DiscJockeyScreen()); + } + } } }); ClientTickEvents.START_WORLD_TICK.register(world -> { diff --git a/src/main/resources/assets/disc_jockey/lang/en_us.json b/src/main/resources/assets/disc_jockey/lang/en_us.json index 481fc30..80573c6 100644 --- a/src/main/resources/assets/disc_jockey/lang/en_us.json +++ b/src/main/resources/assets/disc_jockey/lang/en_us.json @@ -15,5 +15,7 @@ "disc_jockey.loading_done": "All songs are loaded", "disc_jockey.song_not_found": " Song '%s' does not exist", "disc_jockey.not_playing": "Not playing any song", - "disc_jockey.stopped_playing": "Stopped playing '%s'" + "disc_jockey.stopped_playing": "Stopped playing '%s'", + "key.category.disc_jockey": "Disc Jockey", + "disc_jockey.key_bind.open_screen": "Open song selection screen" } \ No newline at end of file diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index e3bb845..8341eba 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -23,6 +23,7 @@ "fabric-lifecycle-events-v1": "*", "fabric-networking-api-v1": "*", "fabric-rendering-v1": "*", + "fabric-key-binding-api-v1": "*", "minecraft": "1.19-beta.4" } }