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

@@ -1,27 +1,34 @@
package dev.zprestige.prestige.render;
import net.fabricmc.fabric.api.event.Event;
import net.fabricmc.fabric.api.event.EventFactory;
import org.jetbrains.annotations.NotNull;
import java.util.Objects;
import java.util.concurrent.CopyOnWriteArrayList;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public interface RenderEvents {
Logger LOGGER = LoggerFactory.getLogger(RenderEvents.class);
Event HUD_RENDER = createEvent();
Event WORLD_RENDER = createEvent();
Event AFTER_HUD_RENDER = createEvent();
RenderEvent HUD_RENDER = new RenderEvent();
RenderEvent WORLD_RENDER = new RenderEvent();
RenderEvent AFTER_HUD_RENDER = new RenderEvent();
@NotNull
private static Event createEvent() {
return EventFactory.createArrayBacked(RenderCallback.class, listeners -> (buffers, context) -> {
for (RenderCallback listener : (listeners)) {
final class RenderEvent {
private final CopyOnWriteArrayList<RenderCallback> listeners = new CopyOnWriteArrayList<>();
private final RenderCallback invoker = (buffers, context) -> {
for (RenderCallback listener : listeners) {
try {
listener.onRender(buffers, context);
} catch (Throwable throwable) {
LOGGER.error("Render listener failed", throwable);
}
}
});
};
public void register(RenderCallback listener) {
listeners.add(Objects.requireNonNull(listener));
}
public RenderCallback invoker() {
return invoker;
}
}
}