mirror of
https://github.com/Jozufozu/Flywheel.git
synced 2024-12-26 15:06:28 +01:00
Move events to platforms
This commit is contained in:
parent
6e0702aa0b
commit
58278dd8b4
9 changed files with 76 additions and 7 deletions
|
@ -0,0 +1,15 @@
|
||||||
|
package com.jozufozu.flywheel.api.event;
|
||||||
|
|
||||||
|
import net.fabricmc.fabric.api.event.Event;
|
||||||
|
import net.fabricmc.fabric.api.event.EventFactory;
|
||||||
|
|
||||||
|
@FunctionalInterface
|
||||||
|
public interface BeginFrameCallback {
|
||||||
|
Event<BeginFrameCallback> EVENT = EventFactory.createArrayBacked(BeginFrameCallback.class, callbacks -> context -> {
|
||||||
|
for (BeginFrameCallback callback : callbacks) {
|
||||||
|
callback.onBeginFrame(context);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
void onBeginFrame(RenderContext context);
|
||||||
|
}
|
|
@ -0,0 +1,21 @@
|
||||||
|
package com.jozufozu.flywheel.api.event;
|
||||||
|
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
|
import net.fabricmc.fabric.api.event.Event;
|
||||||
|
import net.fabricmc.fabric.api.event.EventFactory;
|
||||||
|
import net.minecraft.client.Minecraft;
|
||||||
|
import net.minecraft.server.packs.resources.ResourceManager;
|
||||||
|
|
||||||
|
@FunctionalInterface
|
||||||
|
public interface EndClientResourceReloadCallback {
|
||||||
|
Event<EndClientResourceReloadCallback> EVENT = EventFactory.createArrayBacked(EndClientResourceReloadCallback.class,
|
||||||
|
callbacks -> (minecraft, resourceManager, initialReload, error) -> {
|
||||||
|
for (EndClientResourceReloadCallback callback : callbacks) {
|
||||||
|
callback.onEndClientResourceReload(minecraft, resourceManager, initialReload, error);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
void onEndClientResourceReload(Minecraft minecraft, ResourceManager resourceManager, boolean initialReload,
|
||||||
|
Optional<Throwable> error);
|
||||||
|
}
|
|
@ -0,0 +1,17 @@
|
||||||
|
package com.jozufozu.flywheel.api.event;
|
||||||
|
|
||||||
|
import net.fabricmc.fabric.api.event.Event;
|
||||||
|
import net.fabricmc.fabric.api.event.EventFactory;
|
||||||
|
import net.minecraft.client.multiplayer.ClientLevel;
|
||||||
|
|
||||||
|
@FunctionalInterface
|
||||||
|
public interface ReloadLevelRendererCallback {
|
||||||
|
Event<ReloadLevelRendererCallback> EVENT =
|
||||||
|
EventFactory.createArrayBacked(ReloadLevelRendererCallback.class, callbacks -> level -> {
|
||||||
|
for (ReloadLevelRendererCallback callback : callbacks) {
|
||||||
|
callback.onReloadLevelRenderer(level);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
void onReloadLevelRenderer(ClientLevel level);
|
||||||
|
}
|
|
@ -0,0 +1,15 @@
|
||||||
|
package com.jozufozu.flywheel.api.event;
|
||||||
|
|
||||||
|
import net.fabricmc.fabric.api.event.Event;
|
||||||
|
import net.fabricmc.fabric.api.event.EventFactory;
|
||||||
|
|
||||||
|
public interface RenderStageCallback {
|
||||||
|
Event<RenderStageCallback> EVENT =
|
||||||
|
EventFactory.createArrayBacked(RenderStageCallback.class, callbacks -> (context, stage) -> {
|
||||||
|
for (RenderStageCallback callback : callbacks) {
|
||||||
|
callback.onRenderStage(context, stage);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
void onRenderStage(RenderContext context, RenderStage stage);
|
||||||
|
}
|
|
@ -3,10 +3,6 @@ package com.jozufozu.flywheel.impl.mixin;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.concurrent.CompletableFuture;
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
|
||||||
import com.jozufozu.flywheel.api.event.EndClientResourceReloadEvent;
|
|
||||||
|
|
||||||
import net.minecraftforge.fml.ModLoader;
|
|
||||||
|
|
||||||
import org.spongepowered.asm.mixin.Final;
|
import org.spongepowered.asm.mixin.Final;
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
import org.spongepowered.asm.mixin.Shadow;
|
import org.spongepowered.asm.mixin.Shadow;
|
||||||
|
@ -14,6 +10,8 @@ import org.spongepowered.asm.mixin.injection.At;
|
||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
|
|
||||||
|
import com.jozufozu.flywheel.api.event.EndClientResourceReloadCallback;
|
||||||
|
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
import net.minecraft.server.packs.resources.ReloadableResourceManager;
|
import net.minecraft.server.packs.resources.ReloadableResourceManager;
|
||||||
|
|
||||||
|
@ -25,11 +23,14 @@ abstract class MinecraftMixin {
|
||||||
|
|
||||||
@Inject(method = "method_24040", at = @At("HEAD"))
|
@Inject(method = "method_24040", at = @At("HEAD"))
|
||||||
private void flywheel$onEndInitialResourceReload(Optional<Throwable> error, CallbackInfo ci) {
|
private void flywheel$onEndInitialResourceReload(Optional<Throwable> error, CallbackInfo ci) {
|
||||||
ModLoader.get().postEvent(new EndClientResourceReloadEvent((Minecraft) (Object) this, resourceManager, true, error));
|
EndClientResourceReloadCallback.EVENT.invoker()
|
||||||
|
.onEndClientResourceReload((Minecraft) (Object) this, resourceManager, true, error);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Inject(method = "method_24228", at = @At("HEAD"))
|
@Inject(method = "method_24228", at = @At("HEAD"))
|
||||||
private void flywheel$onEndManualResourceReload(boolean recovery, CompletableFuture<Void> future, Optional<Throwable> error, CallbackInfo ci) {
|
private void flywheel$onEndManualResourceReload(boolean recovery, CompletableFuture<Void> future,
|
||||||
ModLoader.get().postEvent(new EndClientResourceReloadEvent((Minecraft) (Object) this, resourceManager, false, error));
|
Optional<Throwable> error, CallbackInfo ci) {
|
||||||
|
EndClientResourceReloadCallback.EVENT.invoker()
|
||||||
|
.onEndClientResourceReload((Minecraft) (Object) this, resourceManager, false, error);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue