make fabric entry points wired through an adapter
This commit is contained in:
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 {
|
||||||
|
|||||||
@@ -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",
|
||||||
|
|||||||
Reference in new issue
Block a user