Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CTJS: Load modules earlier, allowing for initial gameLoad to trigger #102

Merged
merged 1 commit into from
Jan 7, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import com.chattriggers.ctjs.internal.engine.CTEvents;
import com.chattriggers.ctjs.api.triggers.TriggerType;
import com.chattriggers.ctjs.internal.engine.module.ModuleManager;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.screen.Screen;
import net.minecraft.client.network.ServerInfo;
Expand Down Expand Up @@ -56,7 +57,10 @@ private void injectScreenOpened(Screen screen, CallbackInfo ci) {

@Inject(method = "run", at = @At("HEAD"))
private void injectRun(CallbackInfo ci) {
TriggerType.GAME_LOAD.triggerAll();
new Thread(() -> {
ModuleManager.INSTANCE.entryPass();
TriggerType.GAME_LOAD.triggerAll();
}).start();
}

@Inject(method = "render", at = @At("HEAD"))
Expand Down
48 changes: 11 additions & 37 deletions src/main/kotlin/com/chattriggers/ctjs/CTJS.kt
Original file line number Diff line number Diff line change
Expand Up @@ -10,20 +10,14 @@ import com.chattriggers.ctjs.api.message.ChatLib
import com.chattriggers.ctjs.api.render.Image
import com.chattriggers.ctjs.api.triggers.TriggerType
import com.chattriggers.ctjs.api.world.World
import com.chattriggers.ctjs.engine.Console
import com.chattriggers.ctjs.engine.Register
import com.chattriggers.ctjs.internal.commands.StaticCommand
import com.chattriggers.ctjs.engine.Console
import com.chattriggers.ctjs.internal.console.ConsoleHostProcess
import com.chattriggers.ctjs.internal.engine.CTEvents
import com.chattriggers.ctjs.internal.engine.module.ModuleManager
import com.chattriggers.ctjs.internal.utils.Initializer
import kotlinx.serialization.json.Json
import net.fabricmc.api.ClientModInitializer
import net.fabricmc.fabric.api.client.keybinding.v1.KeyBindingHelper
import net.fabricmc.loader.api.FabricLoader
import net.minecraft.client.option.KeyBinding
import net.minecraft.client.util.InputUtil
import org.lwjgl.glfw.GLFW
import java.io.File
import java.net.URL
import java.net.URLConnection
Expand All @@ -33,39 +27,19 @@ import kotlin.concurrent.thread

class CTJS : ClientModInitializer {
override fun onInitializeClient() {
// Need to initialize the keybind here, as putting it inside the MinecraftClient::send
// runs it too late
val keybind = KeyBindingHelper.registerKeyBinding(
KeyBinding(
"chattriggers.key.binding.console",
InputUtil.Type.KEYSYM,
GLFW.GLFW_KEY_GRAVE_ACCENT,
"chattriggers.key.category",
)
)

CTEvents.RENDER_GAME.register {
if (keybind.wasPressed())
ConsoleHostProcess.show()
}
Client.referenceSystemTime = System.nanoTime()
Initializer.initializers.forEach(Initializer::init)

Client.getMinecraft().send {
Client.referenceSystemTime = System.nanoTime()

Initializer.initializers.forEach(Initializer::init)

thread {
ModuleManager.entryPass()
reportHashedUUID()
}
thread {
reportHashedUUID()
}

Config.loadData()
Config.loadData()

Runtime.getRuntime().addShutdownHook(Thread {
TriggerType.GAME_UNLOAD.triggerAll()
Console.close()
})
}
Runtime.getRuntime().addShutdownHook(Thread {
TriggerType.GAME_UNLOAD.triggerAll()
Console.close()
})
}

private fun reportHashedUUID() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,16 @@ import com.chattriggers.ctjs.api.Config
import com.chattriggers.ctjs.api.client.Client
import com.chattriggers.ctjs.engine.LogType
import com.chattriggers.ctjs.engine.printTraceToConsole
import com.chattriggers.ctjs.internal.engine.CTEvents
import com.chattriggers.ctjs.internal.engine.JSLoader
import com.chattriggers.ctjs.internal.utils.Initializer
import gg.essential.universal.UDesktop
import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Json
import net.fabricmc.fabric.api.client.keybinding.v1.KeyBindingHelper
import net.minecraft.client.option.KeyBinding
import net.minecraft.client.util.InputUtil
import org.lwjgl.glfw.GLFW
import java.awt.Color
import java.io.BufferedReader
import java.io.File
Expand Down Expand Up @@ -37,7 +43,7 @@ import kotlin.io.path.Path
* Each console gets its own Host/Client pair running on their own port, so there will be
* `<number of loaders> + 1` sockets (the extra 1 is for the generic console).
*/
object ConsoleHostProcess {
object ConsoleHostProcess : Initializer {
private var PORT = 9002
private var running = true
private lateinit var socketOut: PrintWriter
Expand All @@ -53,6 +59,22 @@ object ConsoleHostProcess {
thread { hostMain() }
}

override fun init() {
val keybind = KeyBindingHelper.registerKeyBinding(
KeyBinding(
"chattriggers.key.binding.console",
InputUtil.Type.KEYSYM,
GLFW.GLFW_KEY_GRAVE_ACCENT,
"chattriggers.key.category",
)
)

CTEvents.RENDER_GAME.register {
if (keybind.wasPressed())
show()
}
}

private fun hostMain() {
// Spawn the Client process. This remote process can be easily debugged in IntelliJ by
// adding the Remote JVM Debug command line arguments after the class path argument, and
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@ object ModuleManager {
JSLoader.setup(jars)
}

@JvmOverloads
fun entryPass(modules: List<Module> = cachedModules, completionListener: (percentComplete: Float) -> Unit = {}) {
JSLoader.entrySetup()

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import com.chattriggers.ctjs.api.client.KeyBind
import com.chattriggers.ctjs.api.commands.DynamicCommands
import com.chattriggers.ctjs.internal.commands.CTCommand
import com.chattriggers.ctjs.internal.commands.StaticCommand
import com.chattriggers.ctjs.internal.console.ConsoleHostProcess
import com.chattriggers.ctjs.internal.engine.module.ModuleUpdater
import com.chattriggers.ctjs.internal.listeners.ClientListener
import com.chattriggers.ctjs.internal.listeners.MouseListener
Expand All @@ -16,6 +17,7 @@ internal interface Initializer {
companion object {
internal val initializers = listOf(
ClientListener,
ConsoleHostProcess,
CPS,
CTCommand,
DynamicCommands,
Expand Down
Loading