Skip to content

Commit

Permalink
CTJS: Load modules earlier, allowing for initial gameLoad to trigger
Browse files Browse the repository at this point in the history
This reverts parts of  64525a3 and f19bec1
  • Loading branch information
camnwalter authored and mattco98 committed Jan 7, 2024
1 parent ffa8d5e commit 79e7b14
Show file tree
Hide file tree
Showing 5 changed files with 42 additions and 39 deletions.
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

0 comments on commit 79e7b14

Please sign in to comment.