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
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user