Use callback-style events throughout all versions
Removes the need for //#if statements on each and every event handler. Instead we now always use the equivalent Callback and have one central 1.12.2 class which forwards Forge events to the callbacks.
This commit is contained in:
@@ -2,6 +2,7 @@ package com.replaymod.core;
|
||||
|
||||
import com.google.common.collect.ArrayListMultimap;
|
||||
import com.google.common.collect.Multimap;
|
||||
import com.replaymod.core.events.PreRenderCallback;
|
||||
import com.replaymod.core.mixin.KeyBindingAccessor;
|
||||
import de.johni0702.minecraft.gui.utils.EventRegistrations;
|
||||
import com.replaymod.core.events.KeyBindingEventCallback;
|
||||
@@ -22,15 +23,6 @@ import static com.replaymod.core.ReplayMod.MOD_ID;
|
||||
//$$ import net.minecraftforge.fml.client.registry.ClientRegistry;
|
||||
//#endif
|
||||
|
||||
//#if MC>=11400
|
||||
import com.replaymod.core.events.PreRenderCallback;
|
||||
//#else
|
||||
//$$ import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
|
||||
//$$ import net.minecraftforge.fml.common.gameevent.TickEvent;
|
||||
//$$ import org.lwjgl.input.Keyboard;
|
||||
//$$ import static com.replaymod.core.versions.MCVer.FML_BUS;
|
||||
//#endif
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
@@ -102,15 +94,7 @@ public class KeyBindingRegistry extends EventRegistrations {
|
||||
return Collections.unmodifiableSet(onlyInReplay);
|
||||
}
|
||||
|
||||
//#if MC>=11400
|
||||
{ on(PreRenderCallback.EVENT, this::handleRepeatedKeyBindings); }
|
||||
//#else
|
||||
//$$ @SubscribeEvent
|
||||
//$$ public void onTick(TickEvent.RenderTickEvent event) {
|
||||
//$$ if (event.phase != TickEvent.Phase.START) return;
|
||||
//$$ handleRepeatedKeyBindings();
|
||||
//$$ }
|
||||
//#endif
|
||||
|
||||
public void handleRepeatedKeyBindings() {
|
||||
for (Binding binding : bindings.values()) {
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
//#if MC>=11400
|
||||
package com.replaymod.core.events;
|
||||
|
||||
import de.johni0702.minecraft.gui.utils.Event;
|
||||
@@ -14,4 +13,3 @@ public interface PostRenderCallback {
|
||||
|
||||
void postRender();
|
||||
}
|
||||
//#endif
|
||||
|
||||
@@ -1,33 +1,16 @@
|
||||
//#if MC>=11400
|
||||
package com.replaymod.core.events;
|
||||
|
||||
import de.johni0702.minecraft.gui.utils.Event;
|
||||
|
||||
//#if MC>=11500
|
||||
import net.minecraft.client.util.math.MatrixStack;
|
||||
//#endif
|
||||
|
||||
public interface PostRenderWorldCallback {
|
||||
Event<PostRenderWorldCallback> EVENT = Event.create((listeners) ->
|
||||
//#if MC>=11500
|
||||
(MatrixStack matrixStack) -> {
|
||||
//#else
|
||||
//$$ () -> {
|
||||
//#endif
|
||||
for (PostRenderWorldCallback listener : listeners) {
|
||||
listener.postRenderWorld(
|
||||
//#if MC>=11500
|
||||
matrixStack
|
||||
//#endif
|
||||
);
|
||||
listener.postRenderWorld(matrixStack);
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
void postRenderWorld(
|
||||
//#if MC>=11500
|
||||
MatrixStack matrixStack
|
||||
//#endif
|
||||
);
|
||||
void postRenderWorld(MatrixStack matrixStack);
|
||||
}
|
||||
//#endif
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
//#if MC>=11400
|
||||
package com.replaymod.core.events;
|
||||
|
||||
import de.johni0702.minecraft.gui.utils.Event;
|
||||
@@ -14,4 +13,3 @@ public interface PreRenderCallback {
|
||||
|
||||
void preRender();
|
||||
}
|
||||
//#endif
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
//#if MC>=11400
|
||||
package com.replaymod.core.events;
|
||||
|
||||
import de.johni0702.minecraft.gui.utils.Event;
|
||||
@@ -17,4 +16,3 @@ public interface PreRenderHandCallback {
|
||||
|
||||
boolean preRenderHand();
|
||||
}
|
||||
//#endif
|
||||
|
||||
@@ -12,30 +12,15 @@ import de.johni0702.minecraft.gui.layout.VerticalLayout;
|
||||
import de.johni0702.minecraft.gui.utils.EventRegistrations;
|
||||
import de.johni0702.minecraft.gui.utils.lwjgl.Dimension;
|
||||
import de.johni0702.minecraft.gui.utils.lwjgl.ReadableDimension;
|
||||
|
||||
//#if FABRIC>=1
|
||||
import de.johni0702.minecraft.gui.versions.callbacks.InitScreenCallback;
|
||||
import net.minecraft.client.gui.screen.Screen;
|
||||
//#else
|
||||
//$$ import net.minecraftforge.client.event.GuiScreenEvent;
|
||||
//$$ import net.minecraftforge.common.MinecraftForge;
|
||||
//$$ import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||
//$$ import static com.replaymod.core.versions.MCVer.getGui;
|
||||
//#endif
|
||||
|
||||
import static com.replaymod.core.versions.MCVer.getMinecraft;
|
||||
|
||||
public class GuiBackgroundProcesses extends EventRegistrations {
|
||||
private GuiPanel panel = new GuiPanel().setLayout(new VerticalLayout().setSpacing(10));
|
||||
|
||||
//#if FABRIC>=1
|
||||
{ on(InitScreenCallback.EVENT, (screen, buttons) -> onGuiInit(screen)); }
|
||||
private void onGuiInit(Screen guiScreen) {
|
||||
//#else
|
||||
//$$ @SubscribeEvent
|
||||
//$$ public void onGuiInit(GuiScreenEvent.InitGuiEvent.Post event) {
|
||||
//$$ net.minecraft.client.gui.screen.Screen guiScreen = getGui(event);
|
||||
//#endif
|
||||
private void onGuiInit(net.minecraft.client.gui.screen.Screen guiScreen) {
|
||||
if (guiScreen != getMinecraft().currentScreen) return; // people tend to construct GuiScreens without opening them
|
||||
|
||||
VanillaGuiScreen vanillaGui = VanillaGuiScreen.wrap(guiScreen);
|
||||
|
||||
@@ -5,15 +5,12 @@ import com.replaymod.core.events.PostRenderWorldCallback;
|
||||
import com.replaymod.core.events.PreRenderHandCallback;
|
||||
import net.minecraft.client.render.Camera;
|
||||
import net.minecraft.client.render.GameRenderer;
|
||||
import net.minecraft.client.util.math.MatrixStack;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Inject;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||
|
||||
//#if MC>=11500
|
||||
import net.minecraft.client.util.math.MatrixStack;
|
||||
//#endif
|
||||
|
||||
@Mixin(GameRenderer.class)
|
||||
public class MixinGameRenderer {
|
||||
@Inject(
|
||||
@@ -30,11 +27,10 @@ public class MixinGameRenderer {
|
||||
MatrixStack matrixStack,
|
||||
//#endif
|
||||
CallbackInfo ci) {
|
||||
PostRenderWorldCallback.EVENT.invoker().postRenderWorld(
|
||||
//#if MC>=11500
|
||||
matrixStack
|
||||
//#endif
|
||||
);
|
||||
//#if MC<11500
|
||||
//$$ MatrixStack matrixStack = new MatrixStack();
|
||||
//#endif
|
||||
PostRenderWorldCallback.EVENT.invoker().postRenderWorld(matrixStack);
|
||||
}
|
||||
|
||||
@Inject(method = "renderHand", at = @At("HEAD"), cancellable = true)
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
// Forge only
|
||||
Reference in New Issue
Block a user