make fabric entry points wired through an adapter

This commit is contained in:
bbldrizzy committed 2026-11-03 11:46:46 +00:00
1 parent 0abefe7a04
commit 5152e6e0a6
7 files changed
+52 -32

No files matched your search

@@ -34,11 +34,10 @@ import dev.zprestige.prestige.util.SimulatedClickManager;
import dev.zprestige.prestige.util.FrameDeltaTimer; import dev.zprestige.prestige.util.FrameDeltaTimer;
import dev.zprestige.prestige.util.NotificationManager; import dev.zprestige.prestige.util.NotificationManager;
import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicBoolean;
import net.fabricmc.api.ModInitializer;
import net.minecraft.client.MinecraftClient; import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.screen.ChatScreen; import net.minecraft.client.gui.screen.ChatScreen;
public class Prestige implements ModInitializer { public class Prestige {
private static final AtomicBoolean initialized = new AtomicBoolean(false); private static final AtomicBoolean initialized = new AtomicBoolean(false);
private static final java.util.concurrent.atomic.AtomicInteger renderErrorCount = new java.util.concurrent.atomic.AtomicInteger(); private static final java.util.concurrent.atomic.AtomicInteger renderErrorCount = new java.util.concurrent.atomic.AtomicInteger();
public static EventBus eventBus; public static EventBus eventBus;
@@ -160,8 +159,4 @@ public class Prestige implements ModInitializer {
} }
} }
@Override
public void onInitialize() {
this.init();
}
} }
@@ -0,0 +1,21 @@
package dev.zprestige.prestige.fabric;
import dev.zprestige.prestige.client.Prestige;
import dev.zprestige.prestige.ui.mc.Entry;
import net.fabricmc.api.ClientModInitializer;
import net.fabricmc.api.ModInitializer;
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents;
public final class FabricEntrypoints implements ModInitializer, ClientModInitializer {
@Override
public void onInitialize() {
new Prestige().init();
}
@Override
public void onInitializeClient() {
Entry entry = new Entry();
entry.initialize();
ClientTickEvents.END_CLIENT_TICK.register(entry::tick);
}
}
@@ -1,10 +1,9 @@
package dev.zprestige.prestige.inject; package dev.zprestige.prestige.inject;
import dev.zprestige.prestige.client.Prestige;
import dev.zprestige.prestige.engine.EnginePlugin; import dev.zprestige.prestige.engine.EnginePlugin;
import dev.zprestige.prestige.engine.EngineState; import dev.zprestige.prestige.engine.EngineState;
import dev.zprestige.prestige.fabric.FabricEntrypoints;
import dev.zprestige.prestige.hooks.Definer; import dev.zprestige.prestige.hooks.Definer;
import dev.zprestige.prestige.ui.mc.Entry;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.LinkedHashSet; import java.util.LinkedHashSet;
@@ -297,8 +296,9 @@ public final class Bootstrap {
private static void initClient() { private static void initClient() {
try { try {
new Prestige().onInitialize(); FabricEntrypoints entrypoints = new FabricEntrypoints();
new Entry().onInitializeClient(); entrypoints.onInitialize();
entrypoints.onInitializeClient();
log("client initialised"); log("client initialised");
} catch (Throwable t) { } catch (Throwable t) {
log("client init failed: " + t); log("client init failed: " + t);
@@ -89,7 +89,7 @@ public class RenderCore {
Render2D.currentBuffers = BUFFER_SOURCE; Render2D.currentBuffers = BUFFER_SOURCE;
worldContext = context; worldContext = context;
try { try {
((RenderCallback)RenderEvents.WORLD_RENDER.invoker()).onRender(BUFFER_SOURCE, context); RenderEvents.WORLD_RENDER.invoker().onRender(BUFFER_SOURCE, context);
BUFFER_SOURCE.flush(context); BUFFER_SOURCE.flush(context);
} catch (Throwable throwable) { } catch (Throwable throwable) {
LOGGER.error("World render failed", throwable); LOGGER.error("World render failed", throwable);
@@ -102,9 +102,9 @@ public class RenderCore {
Render2D.currentContext = context; Render2D.currentContext = context;
Render2D.currentBuffers = BUFFER_SOURCE; Render2D.currentBuffers = BUFFER_SOURCE;
try { try {
((RenderCallback)RenderEvents.HUD_RENDER.invoker()).onRender(BUFFER_SOURCE, context); RenderEvents.HUD_RENDER.invoker().onRender(BUFFER_SOURCE, context);
BUFFER_SOURCE.flush(context); BUFFER_SOURCE.flush(context);
((RenderCallback)RenderEvents.AFTER_HUD_RENDER.invoker()).onRender(BUFFER_SOURCE, context); RenderEvents.AFTER_HUD_RENDER.invoker().onRender(BUFFER_SOURCE, context);
BUFFER_SOURCE.flush(context); BUFFER_SOURCE.flush(context);
} catch (Throwable throwable) { } catch (Throwable throwable) {
LOGGER.error("HUD render failed", throwable); LOGGER.error("HUD render failed", throwable);
@@ -1,27 +1,34 @@
package dev.zprestige.prestige.render; package dev.zprestige.prestige.render;
import net.fabricmc.fabric.api.event.Event; import java.util.Objects;
import net.fabricmc.fabric.api.event.EventFactory; import java.util.concurrent.CopyOnWriteArrayList;
import org.jetbrains.annotations.NotNull;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
public interface RenderEvents { public interface RenderEvents {
Logger LOGGER = LoggerFactory.getLogger(RenderEvents.class); Logger LOGGER = LoggerFactory.getLogger(RenderEvents.class);
Event HUD_RENDER = createEvent(); RenderEvent HUD_RENDER = new RenderEvent();
Event WORLD_RENDER = createEvent(); RenderEvent WORLD_RENDER = new RenderEvent();
Event AFTER_HUD_RENDER = createEvent(); RenderEvent AFTER_HUD_RENDER = new RenderEvent();
@NotNull final class RenderEvent {
private static Event createEvent() { private final CopyOnWriteArrayList<RenderCallback> listeners = new CopyOnWriteArrayList<>();
return EventFactory.createArrayBacked(RenderCallback.class, listeners -> (buffers, context) -> { private final RenderCallback invoker = (buffers, context) -> {
for (RenderCallback listener : (listeners)) { for (RenderCallback listener : listeners) {
try { try {
listener.onRender(buffers, context); listener.onRender(buffers, context);
} catch (Throwable throwable) { } catch (Throwable throwable) {
LOGGER.error("Render listener failed", throwable); LOGGER.error("Render listener failed", throwable);
} }
} }
}); };
public void register(RenderCallback listener) {
listeners.add(Objects.requireNonNull(listener));
}
public RenderCallback invoker() {
return invoker;
}
} }
} }
@@ -1,19 +1,16 @@
package dev.zprestige.prestige.ui.mc; package dev.zprestige.prestige.ui.mc;
import dev.zprestige.prestige.ui.Input; import dev.zprestige.prestige.ui.Input;
import net.fabricmc.api.ClientModInitializer;
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents;
import net.minecraft.client.MinecraftClient; import net.minecraft.client.MinecraftClient;
import org.lwjgl.glfw.GLFW; import org.lwjgl.glfw.GLFW;
/** Opens the ported ClickGUI with the configured menu key (Input.menuKey, default RIGHT SHIFT); closing is handled by Input via the key mixin. */ /** Opens the ported ClickGUI with the configured menu key (Input.menuKey, default RIGHT SHIFT); closing is handled by Input via the key mixin. */
public final class Entry implements ClientModInitializer { public final class Entry {
static boolean prev; static boolean prev;
private static int cachedVk = -1, cachedGlfw; private static int cachedVk = -1, cachedGlfw;
@Override public void onInitializeClient() { public void initialize() {
try { Skid.run(); } catch (Throwable t) { System.out.println("[prestige-ui] splash " + t); } try { Skid.run(); } catch (Throwable t) { System.out.println("[prestige-ui] splash " + t); }
ClientTickEvents.END_CLIENT_TICK.register(this::tick);
System.out.println("[prestige-ui] loaded (menu key opens the menu)"); System.out.println("[prestige-ui] loaded (menu key opens the menu)");
} }
@@ -30,7 +27,7 @@ public final class Entry implements ClientModInitializer {
static boolean bridgeTried; static boolean bridgeTried;
void tick(MinecraftClient mc) { public void tick(MinecraftClient mc) {
if (dev.zprestige.prestige.client.Prestige.selfDestructed) return; if (dev.zprestige.prestige.client.Prestige.selfDestructed) return;
if (!bridgeTried) { bridgeTried = true; dev.zprestige.prestige.ui.bridge.Bridge.bind(); } if (!bridgeTried) { bridgeTried = true; dev.zprestige.prestige.ui.bridge.Bridge.bind(); }
try { try {
+2 -2
View File
@@ -6,8 +6,8 @@
"description": "Prestige client with the imgui-java ClickGUI.", "description": "Prestige client with the imgui-java ClickGUI.",
"environment": "client", "environment": "client",
"entrypoints": { "entrypoints": {
"main": ["dev.zprestige.prestige.client.Prestige"], "main": ["dev.zprestige.prestige.fabric.FabricEntrypoints"],
"client": ["dev.zprestige.prestige.ui.mc.Entry", "dev.zprestige.prestige.engine.EngineDev"] "client": ["dev.zprestige.prestige.fabric.FabricEntrypoints", "dev.zprestige.prestige.engine.EngineDev"]
}, },
"mixins": ["prestige-engine.mixins.json", "prestige.mixins.json"], "mixins": ["prestige-engine.mixins.json", "prestige.mixins.json"],
"accessWidener": "prestige-client.accesswidener", "accessWidener": "prestige-client.accesswidener",