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:
Jonas Herzig
2021-02-22 23:11:34 +01:00
parent 0be2082fe7
commit 633bc19650
27 changed files with 110 additions and 378 deletions

2
jGui

Submodule jGui updated: 80ff9223d3...96edf0fe31

View File

@@ -1,6 +1,7 @@
//#if MC>=10800
package com.replaymod.compat.shaders;
import com.replaymod.core.events.PreRenderCallback;
import com.replaymod.render.hooks.EntityRendererHandler;
import de.johni0702.minecraft.gui.utils.EventRegistrations;
import net.minecraft.client.MinecraftClient;
@@ -9,13 +10,6 @@ import java.lang.reflect.InvocationTargetException;
import static com.replaymod.core.versions.MCVer.getRenderPartialTicks;
//#if FABRIC>=1
import com.replaymod.core.events.PreRenderCallback;
//#else
//$$ import net.minecraftforge.eventbus.api.SubscribeEvent;
//$$ import net.minecraftforge.event.TickEvent;
//#endif
public class ShaderBeginRender extends EventRegistrations {
private final MinecraftClient mc = MinecraftClient.getInstance();
@@ -25,14 +19,8 @@ public class ShaderBeginRender extends EventRegistrations {
* as this would usually get called by EntityRenderer#renderWorld,
* which we're not calling during rendering.
*/
//#if FABRIC>=1
{ on(PreRenderCallback.EVENT, this::onRenderTickStart); }
private void onRenderTickStart() {
//#else
//$$ @SubscribeEvent
//$$ public void onRenderTickStart(TickEvent.RenderTickEvent event) {
//$$ if (event.phase != TickEvent.Phase.START) return;
//#endif
if (ShaderReflection.shaders_beginRender == null) return;
if (ShaderReflection.config_isShaders == null) return;

View File

@@ -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()) {

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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);

View File

@@ -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)

View File

@@ -0,0 +1 @@
// Forge only

View File

@@ -1,6 +1,5 @@
package com.replaymod.editor.handler;
import de.johni0702.minecraft.gui.utils.EventRegistrations;
import com.replaymod.core.utils.Utils;
import com.replaymod.editor.ReplayModEditor;
import com.replaymod.editor.gui.GuiEditReplay;
@@ -8,31 +7,15 @@ import com.replaymod.replay.gui.screen.GuiReplayViewer;
import de.johni0702.minecraft.gui.container.AbstractGuiScreen;
import de.johni0702.minecraft.gui.container.GuiScreen;
import de.johni0702.minecraft.gui.element.GuiButton;
import net.minecraft.util.crash.CrashReport;
//#if FABRIC>=1
import de.johni0702.minecraft.gui.utils.EventRegistrations;
import de.johni0702.minecraft.gui.versions.callbacks.InitScreenCallback;
import net.minecraft.client.gui.screen.Screen;
import net.minecraft.client.gui.widget.AbstractButtonWidget;
import java.util.List;
//#else
//$$ import net.minecraftforge.client.event.GuiScreenEvent;
//$$ import net.minecraftforge.eventbus.api.SubscribeEvent;
//#endif
import net.minecraft.util.crash.CrashReport;
import java.io.IOException;
import static com.replaymod.core.versions.MCVer.*;
public class GuiHandler extends EventRegistrations {
//#if FABRIC>=1
{ on(InitScreenCallback.EVENT, this::injectIntoReplayViewer); }
public void injectIntoReplayViewer(Screen vanillaGuiScreen, List<AbstractButtonWidget> buttonList) {
//#else
//$$ @SubscribeEvent
//$$ public void injectIntoReplayViewer(GuiScreenEvent.InitGuiEvent.Post event) {
//$$ net.minecraft.client.gui.screen.Screen vanillaGuiScreen = getGui(event);
//#endif
{ on(InitScreenCallback.EVENT, (vanillaGuiScreen, buttonList) -> injectIntoReplayViewer(vanillaGuiScreen)); }
public void injectIntoReplayViewer(net.minecraft.client.gui.screen.Screen vanillaGuiScreen) {
AbstractGuiScreen guiScreen = GuiScreen.from(vanillaGuiScreen);
if (!(guiScreen instanceof GuiReplayViewer)) {
return;

View File

@@ -1,6 +1,8 @@
package com.replaymod.extras;
import com.replaymod.core.ReplayMod;
import com.replaymod.core.events.PostRenderCallback;
import com.replaymod.core.events.PreRenderCallback;
import com.replaymod.core.versions.MCVer.Keyboard;
import com.replaymod.replay.ReplayHandler;
import com.replaymod.replay.ReplayModReplay;
@@ -14,14 +16,6 @@ import net.minecraft.client.MinecraftClient;
import net.minecraft.entity.effect.StatusEffectInstance;
import net.minecraft.entity.effect.StatusEffects;
//#if FABRIC>=1
import com.replaymod.core.events.PreRenderCallback;
import com.replaymod.core.events.PostRenderCallback;
//#else
//$$ import net.minecraftforge.eventbus.api.SubscribeEvent;
//$$ import net.minecraftforge.event.TickEvent;
//#endif
public class FullBrightness extends EventRegistrations implements Extra {
private ReplayMod core;
private ReplayModReplay module;
@@ -72,14 +66,8 @@ public class FullBrightness extends EventRegistrations implements Extra {
return Type.Gamma;
}
//#if FABRIC>=1
{ on(PreRenderCallback.EVENT, this::preRender); }
private void preRender() {
//#else
//$$ @SubscribeEvent
//$$ public void preRender(TickEvent.RenderTickEvent event) {
//$$ if (event.phase != TickEvent.Phase.START) return;
//#endif
if (active && module.getReplayHandler() != null) {
Type type = getType();
if (type == Type.Gamma || type == Type.Both) {
@@ -98,14 +86,8 @@ public class FullBrightness extends EventRegistrations implements Extra {
}
}
//#if FABRIC>=1
{ on(PostRenderCallback.EVENT, this::postRender); }
private void postRender() {
//#else
//$$ @SubscribeEvent
//$$ public void postRender(TickEvent.RenderTickEvent event) {
//$$ if (event.phase != TickEvent.Phase.END) return;
//#endif
if (active && module.getReplayHandler() != null) {
Type type = getType();
if (type == Type.Gamma || type == Type.Both) {

View File

@@ -2,6 +2,7 @@ package com.replaymod.extras.playeroverview;
import com.google.common.base.Optional;
import com.replaymod.core.ReplayMod;
import com.replaymod.core.events.PreRenderHandCallback;
import com.replaymod.core.utils.Utils;
import com.replaymod.extras.Extra;
import com.replaymod.replay.ReplayHandler;
@@ -14,23 +15,11 @@ import net.minecraft.entity.Entity;
import net.minecraft.entity.player.PlayerEntity;
//#if MC>=11400
import com.replaymod.core.events.PreRenderHandCallback;
import java.util.stream.Collectors;
//#else
//$$ import net.minecraftforge.client.event.RenderHandEvent;
//$$
//#if MC>=11400
//#else
//$$ import org.lwjgl.input.Keyboard;
//#endif
//$$
//#if MC>=10800
//$$ import com.google.common.base.Predicate;
//#if MC>=11400
//$$ import net.minecraftforge.eventbus.api.SubscribeEvent;
//#else
//$$ import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
//#endif
//#else
//$$ import cpw.mods.fml.common.eventhandler.EventPriority;
//$$ import cpw.mods.fml.common.eventhandler.SubscribeEvent;
@@ -126,16 +115,7 @@ public class PlayerOverview extends EventRegistrations implements Extra {
hiddenPlayers.clear();
}
//#if MC>=11400
{ on(PreRenderHandCallback.EVENT, this::shouldHideHand); }
//#else
//$$ @SubscribeEvent
//$$ public void oRenderHand(RenderHandEvent event) {
//$$ if (shouldHideHand()) {
//$$ event.setCanceled(true);
//$$ }
//$$ }
//#endif
private boolean shouldHideHand() {
Entity view = getRenderViewEntity(module.getCore().getMinecraft());
return view != null && isHidden(view.getUuid());

View File

@@ -3,19 +3,11 @@ package com.replaymod.extras.youtube;
import com.replaymod.core.ReplayMod;
import com.replaymod.extras.Extra;
import com.replaymod.render.gui.GuiRenderingDone;
import de.johni0702.minecraft.gui.container.GuiScreen;
import de.johni0702.minecraft.gui.container.AbstractGuiScreen;
import de.johni0702.minecraft.gui.element.GuiButton;
import de.johni0702.minecraft.gui.utils.EventRegistrations;
//#if FABRIC>=1
import de.johni0702.minecraft.gui.versions.callbacks.OpenGuiScreenCallback;
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.eventbus.api.SubscribeEvent;
//#endif
import static com.replaymod.core.versions.MCVer.*;
public class YoutubeUpload extends EventRegistrations implements Extra {
@Override
@@ -23,16 +15,11 @@ public class YoutubeUpload extends EventRegistrations implements Extra {
register();
}
//#if FABRIC>=1
{ on(OpenGuiScreenCallback.EVENT, this::onGuiOpen); }
{ on(InitScreenCallback.EVENT, ((screen, buttons) -> onGuiOpen(screen))); }
private void onGuiOpen(Screen vanillaGui) {
//#else
//$$ @SubscribeEvent
//$$ public void onGuiOpen(GuiScreenEvent.InitGuiEvent.Post event) {
//$$ net.minecraft.client.gui.screen.Screen vanillaGui = getGui(event);
//#endif
if (GuiScreen.from(vanillaGui) instanceof GuiRenderingDone) {
GuiRenderingDone gui = (GuiRenderingDone) GuiScreen.from(vanillaGui);
AbstractGuiScreen<?> abstractScreen = de.johni0702.minecraft.gui.container.GuiScreen.from(vanillaGui);
if (abstractScreen instanceof GuiRenderingDone) {
GuiRenderingDone gui = (GuiRenderingDone) abstractScreen;
// Check if there already is a youtube button
if (gui.actionsPanel.getChildren().stream().anyMatch(it -> it instanceof YoutubeButton)) {
return; // Button already added

View File

@@ -4,7 +4,6 @@ import com.replaymod.core.ReplayMod;
import com.replaymod.core.utils.Utils;
import com.replaymod.core.versions.MCVer;
import com.replaymod.editor.gui.MarkerProcessor;
import com.replaymod.recording.Setting;
import com.replaymod.recording.packet.PacketListener;
import de.johni0702.minecraft.gui.container.GuiPanel;
import de.johni0702.minecraft.gui.container.VanillaGuiScreen;
@@ -12,19 +11,10 @@ import de.johni0702.minecraft.gui.element.GuiButton;
import de.johni0702.minecraft.gui.layout.CustomLayout;
import de.johni0702.minecraft.gui.layout.HorizontalLayout;
import de.johni0702.minecraft.gui.utils.EventRegistrations;
import de.johni0702.minecraft.gui.versions.callbacks.InitScreenCallback;
import net.minecraft.client.gui.screen.GameMenuScreen;
import net.minecraft.client.gui.screen.Screen;
//#if FABRIC>=1
import de.johni0702.minecraft.gui.versions.callbacks.InitScreenCallback;
//#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
//#if MC>=11400
import net.minecraft.client.gui.widget.AbstractButtonWidget;
//#endif
@@ -85,19 +75,14 @@ public class GuiRecordingControls extends EventRegistrations {
buttonPauseResume.setEnabled(!stopped);
}
//#if FABRIC>=1
{ on(InitScreenCallback.EVENT, this::injectIntoIngameMenu); }
private void injectIntoIngameMenu(Screen guiScreen, List<AbstractButtonWidget> buttonList) {
//#else
//$$ @SubscribeEvent
//$$ public void injectIntoIngameMenu(GuiScreenEvent.InitGuiEvent.Post event) {
//$$ Screen guiScreen = getGui(event);
//#if MC>=11400
//$$ List<Widget> buttonList = MCVer.getButtonList(event);
//#else
//$$ List<net.minecraft.client.gui.GuiButton> buttonList = MCVer.getButtonList(event);
//#endif
//#endif
private void injectIntoIngameMenu(Screen guiScreen,
//#if MC>=11400
List<AbstractButtonWidget> buttonList
//#else
//$$ List<net.minecraft.client.gui.GuiButton> buttonList
//#endif
) {
if (!(guiScreen instanceof GameMenuScreen)) {
return;
}

View File

@@ -1,24 +1,16 @@
package com.replaymod.recording.gui;
import com.replaymod.core.SettingsRegistry;
import com.replaymod.core.versions.MCVer;
import com.replaymod.recording.Setting;
import de.johni0702.minecraft.gui.GuiRenderer;
import de.johni0702.minecraft.gui.MinecraftGuiRenderer;
import de.johni0702.minecraft.gui.utils.EventRegistrations;
import de.johni0702.minecraft.gui.versions.callbacks.RenderHudCallback;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.font.TextRenderer;
import net.minecraft.client.resource.language.I18n;
import net.minecraft.client.util.math.MatrixStack;
//#if FABRIC>=1
import de.johni0702.minecraft.gui.versions.callbacks.RenderHudCallback;
//#else
//$$ import net.minecraftforge.client.event.RenderGameOverlayEvent;
//$$ import net.minecraftforge.common.MinecraftForge;
//$$ import net.minecraftforge.eventbus.api.SubscribeEvent;
//#endif
import static com.replaymod.core.ReplayMod.TEXTURE;
import static com.replaymod.core.ReplayMod.TEXTURE_SIZE;
import static com.replaymod.core.versions.MCVer.*;
@@ -41,15 +33,8 @@ public class GuiRecordingOverlay extends EventRegistrations {
/**
* Render the recording icon and text in the top left corner of the screen.
*/
//#if FABRIC>=1
{ on(RenderHudCallback.EVENT, (stack, partialTicks) -> renderRecordingIndicator(stack)); }
private void renderRecordingIndicator(MatrixStack stack) {
//#else
//$$ @SubscribeEvent
//$$ public void renderRecordingIndicator(RenderGameOverlayEvent.Post event) {
//$$ if (getType(event) != RenderGameOverlayEvent.ElementType.ALL) return;
//$$ MatrixStack stack = new MatrixStack();
//#endif
if (guiControls.isStopped()) return;
if (settingsRegistry.get(Setting.INDICATOR)) {
TextRenderer fontRenderer = mc.textRenderer;

View File

@@ -14,23 +14,13 @@ import de.johni0702.minecraft.gui.element.GuiToggleButton;
import de.johni0702.minecraft.gui.layout.CustomLayout;
import de.johni0702.minecraft.gui.popup.GuiInfoPopup;
import de.johni0702.minecraft.gui.utils.EventRegistrations;
import de.johni0702.minecraft.gui.versions.callbacks.InitScreenCallback;
import net.minecraft.client.gui.screen.AddServerScreen;
import net.minecraft.client.gui.screen.multiplayer.MultiplayerScreen;
import net.minecraft.client.gui.screen.world.SelectWorldScreen;
import net.minecraft.client.network.ServerInfo;
import net.minecraft.client.resource.language.I18n;
//#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
public class GuiHandler extends EventRegistrations {
private final ReplayMod mod;
@@ -39,14 +29,8 @@ public class GuiHandler extends EventRegistrations {
this.mod = mod;
}
//#if FABRIC>=1
{ on(InitScreenCallback.EVENT, (screen, buttons) -> onGuiInit(screen)); }
private void onGuiInit(Screen gui) {
//#else
//$$ @SubscribeEvent
//$$ public void onGuiInit(GuiScreenEvent.InitGuiEvent.Post event) {
//$$ net.minecraft.client.gui.screen.Screen gui = getGui(event);
//#endif
private void onGuiInit(net.minecraft.client.gui.screen.Screen gui) {
if (gui instanceof SelectWorldScreen || gui instanceof MultiplayerScreen) {
boolean sp = gui instanceof SelectWorldScreen;
SettingsRegistry settingsRegistry = mod.getSettingsRegistry();

View File

@@ -1,8 +1,10 @@
package com.replaymod.recording.handler;
import com.replaymod.core.events.PreRenderCallback;
import com.replaymod.recording.mixin.IntegratedServerAccessor;
import com.replaymod.recording.packet.PacketListener;
import de.johni0702.minecraft.gui.utils.EventRegistrations;
import de.johni0702.minecraft.gui.versions.callbacks.PreTickCallback;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.network.ClientPlayerEntity;
import net.minecraft.network.packet.s2c.play.BlockBreakingProgressS2CPacket;
@@ -20,15 +22,11 @@ import net.minecraft.network.Packet;
import net.minecraft.server.integrated.IntegratedServer;
// FIXME not (yet?) 1.13 import net.minecraftforge.event.entity.minecart.MinecartInteractEvent;
//#if FABRIC>=1
import com.replaymod.core.events.PreRenderCallback;
import de.johni0702.minecraft.gui.versions.callbacks.PreTickCallback;
//#else
//#if FABRIC<1
//$$ import net.minecraft.network.play.server.SCollectItemPacket;
//$$ import net.minecraftforge.event.entity.player.PlayerSleepInBedEvent;
//$$ import net.minecraftforge.eventbus.api.SubscribeEvent;
//$$ import net.minecraftforge.event.entity.player.PlayerEvent.ItemPickupEvent;
//$$ import net.minecraftforge.event.TickEvent;
//#endif
//#if MC>=11600
@@ -139,15 +137,9 @@ public class RecordingEventHandler extends EventRegistrations {
}
//#endif
//#if FABRIC>=1
{ on(PreTickCallback.EVENT, this::onPlayerTick); }
private void onPlayerTick() {
if (mc.player == null) return;
//#else
//$$ @SubscribeEvent
//$$ public void onPlayerTick(TickEvent.ClientTickEvent e) {
//$$ if(e.phase != TickEvent.Phase.START || mc.player == null) return;
//#endif
ClientPlayerEntity player = mc.player;
try {
@@ -465,14 +457,8 @@ public class RecordingEventHandler extends EventRegistrations {
}
}
//#if FABRIC>=1
{ on(PreRenderCallback.EVENT, this::checkForGamePaused); }
private void checkForGamePaused() {
//#else
//$$ @SubscribeEvent
//$$ public void checkForGamePaused(TickEvent.RenderTickEvent event) {
//$$ if (event.phase != TickEvent.Phase.START) return;
//#endif
if (mc.isIntegratedServerRunning()) {
IntegratedServer server = mc.getServer();
if (server != null && ((IntegratedServerAccessor) server).isGamePaused()) {

View File

@@ -1,5 +1,6 @@
package com.replaymod.render.hooks;
import com.replaymod.core.events.PreRenderHandCallback;
import com.replaymod.core.versions.MCVer;
import com.replaymod.render.RenderSettings;
import com.replaymod.render.capturer.CaptureData;
@@ -15,7 +16,6 @@ import net.minecraft.client.util.math.MatrixStack;
//#if MC>=11400
import com.replaymod.core.events.PostRenderCallback;
import com.replaymod.core.events.PreRenderCallback;
import com.replaymod.core.events.PreRenderHandCallback;
//#else
//#if MC>=11400
//$$ import net.minecraftforge.fml.hooks.BasicEventHooks;
@@ -41,9 +41,7 @@ public class EntityRendererHandler extends EventRegistrations implements WorldRe
this.settings = settings;
this.renderInfo = renderInfo;
//#if MC>=11400
on(PreRenderHandCallback.EVENT, () -> omnidirectional);
//#endif
((IEntityRenderer) mc.gameRenderer).replayModRender_setHandler(this);
register();

View File

@@ -12,6 +12,7 @@ import com.replaymod.replay.camera.CameraEntity;
import com.replaymod.replaystudio.io.ReplayInputStream;
import com.replaymod.replaystudio.replay.ReplayFile;
import de.johni0702.minecraft.gui.utils.EventRegistrations;
import de.johni0702.minecraft.gui.versions.callbacks.PreTickCallback;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import io.netty.channel.ChannelDuplexHandler;
@@ -57,13 +58,6 @@ import net.minecraft.util.math.MathHelper;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;
//#if FABRIC>=1
import de.johni0702.minecraft.gui.versions.callbacks.PreTickCallback;
//#else
//$$ import net.minecraftforge.eventbus.api.SubscribeEvent;
//$$ import net.minecraftforge.event.TickEvent;
//#endif
//#if MC>=11600
//#else
//$$ import net.minecraft.network.packet.s2c.play.EntitySpawnGlobalS2CPacket;
@@ -364,22 +358,9 @@ public class FullReplaySender extends ChannelDuplexHandler implements ReplaySend
}
}
//#if MC>=10800
private
//#else
//$$ public // All event handlers need to be public in 1.7.10
//#endif
class EventHandler extends EventRegistrations {
//#if FABRIC>=1
private class EventHandler extends EventRegistrations {
{ on(PreTickCallback.EVENT, this::onWorldTick); }
private void onWorldTick() {
//#else
//$$ @SubscribeEvent
//$$ public void onWorldTick(TickEvent.ClientTickEvent event) {
//$$ // Unfortunately the WorldTickEvent doesn't seem to be emitted on the CLIENT side
//$$ if (event.phase != TickEvent.Phase.START) return;
//#endif
// Spawning a player into an empty chunk (which we might do with the recording player)
// prevents it from being moved by teleport packets (it essentially gets stuck) because
// Entity#addedToChunk is not set and it is therefore not updated every tick.

View File

@@ -12,6 +12,7 @@ import com.replaymod.core.mixin.TimerAccessor;
import com.replaymod.replaystudio.replay.ReplayFile;
import com.replaymod.replaystudio.util.RandomAccessReplay;
import de.johni0702.minecraft.gui.utils.EventRegistrations;
import de.johni0702.minecraft.gui.versions.callbacks.PreTickCallback;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import io.netty.channel.ChannelHandler;
@@ -25,15 +26,6 @@ import net.minecraft.network.NetworkSide;
import net.minecraft.network.Packet;
import net.minecraft.network.PacketByteBuf;
//#if FABRIC>=1
import de.johni0702.minecraft.gui.versions.callbacks.PreTickCallback;
//#else
//$$ import net.minecraftforge.eventbus.api.SubscribeEvent;
//$$ import net.minecraftforge.event.TickEvent;
//$$
//$$ import static com.replaymod.core.versions.MCVer.FML_BUS;
//#endif
import javax.annotation.Nullable;
import java.io.IOException;
import java.util.Collections;
@@ -285,14 +277,8 @@ public class QuickReplaySender extends ChannelHandlerAdapter implements ReplaySe
}
private class EventHandler extends EventRegistrations {
//#if FABRIC>=1
{ on(PreTickCallback.EVENT, this::onTick); }
private void onTick() {
//#else
//$$ @SubscribeEvent
//$$ public void onTick(TickEvent.ClientTickEvent event) {
//$$ if (event.phase != TickEvent.Phase.START) return;
//#endif
if (!asyncMode || paused()) return;
long now = System.currentTimeMillis();

View File

@@ -3,9 +3,13 @@ package com.replaymod.replay.camera;
import com.replaymod.core.KeyBindingRegistry;
import com.replaymod.core.ReplayMod;
import com.replaymod.core.SettingsRegistry;
import com.replaymod.core.events.KeyBindingEventCallback;
import com.replaymod.core.events.PreRenderCallback;
import com.replaymod.core.events.PreRenderHandCallback;
import com.replaymod.core.events.SettingsChangedCallback;
import com.replaymod.replay.ReplayHandler;
import de.johni0702.minecraft.gui.utils.EventRegistrations;
import de.johni0702.minecraft.gui.versions.callbacks.PreTickCallback;
import com.replaymod.core.utils.Utils;
import com.replaymod.replay.ReplayModReplay;
import com.replaymod.replay.Setting;
@@ -24,20 +28,14 @@ import net.minecraft.util.Identifier;
import net.minecraft.util.math.Box;
//#if FABRIC>=1
import com.replaymod.core.events.KeyBindingEventCallback;
import com.replaymod.core.events.PreRenderCallback;
import com.replaymod.core.events.PreRenderHandCallback;
import com.replaymod.replay.events.RenderSpectatorCrosshairCallback;
import de.johni0702.minecraft.gui.versions.callbacks.PreTickCallback;
//#else
//$$ import com.replaymod.core.versions.MCVer;
//$$ import net.minecraftforge.client.event.EntityViewRenderEvent;
//$$ import net.minecraftforge.client.event.RenderGameOverlayEvent;
//$$ import net.minecraftforge.client.event.RenderHandEvent;
//$$ import net.minecraftforge.common.MinecraftForge;
//$$ import net.minecraftforge.eventbus.api.EventPriority;
//$$ import net.minecraftforge.eventbus.api.SubscribeEvent;
//$$ import net.minecraftforge.event.TickEvent;
//#endif
//#if MC>=11400
@@ -51,7 +49,6 @@ import net.minecraft.util.hit.HitResult;
//$$ import net.minecraft.util.math.RayTraceResult;
//$$ import net.minecraft.util.text.ITextComponent;
//$$ import net.minecraft.world.World;
//$$ import net.minecraftforge.fml.common.gameevent.InputEvent;
//$$
//#if MC>=11400
//$$ import net.minecraft.util.math.RayTraceFluidMode;
@@ -671,41 +668,17 @@ public class CameraEntity
private EventHandler() {}
//#if FABRIC>=1
{ on(PreTickCallback.EVENT, this::onPreClientTick); }
private void onPreClientTick() {
//#else
//$$ @SubscribeEvent
//$$ public void onPreClientTick(TickEvent.ClientTickEvent event) {
//$$ if (event.phase != TickEvent.Phase.START) return;
//#endif
updateArmYawAndPitch();
}
//#if FABRIC>=1
{ on(PreRenderCallback.EVENT, this::onRenderUpdate); }
private void onRenderUpdate() {
//#else
//$$ @SubscribeEvent
//$$ public void onRenderUpdate(TickEvent.RenderTickEvent event) {
//$$ if (event.phase != TickEvent.Phase.START) return;
//#endif
update();
}
//#if FABRIC>=1
{ on(KeyBindingEventCallback.EVENT, CameraEntity.this::handleInputEvents); }
//#elseif MC<11400
//$$ @SubscribeEvent
//$$ public void onKeyEvent(InputEvent.KeyInputEvent event) {
//$$ handleInputEvents();
//$$ }
//$$
//$$ @SubscribeEvent
//$$ public void onMouseInput(InputEvent.MouseInputEvent event) {
//$$ handleInputEvents();
//$$ }
//#endif
//#if FABRIC>=1
{ on(RenderSpectatorCrosshairCallback.EVENT, this::shouldRenderSpectatorCrosshair); }
@@ -737,35 +710,13 @@ public class CameraEntity
}
}
//#if FABRIC>=1
{ on(PreRenderHandCallback.EVENT, this::onRenderHand); }
private boolean onRenderHand() {
// Unless we are spectating another player, don't render our hand
if (getRenderViewEntity(mc) == CameraEntity.this || !(getRenderViewEntity(mc) instanceof PlayerEntity)) {
Entity view = getRenderViewEntity(mc);
if (view == CameraEntity.this || !(view instanceof PlayerEntity)) {
return true; // cancel hand rendering
} else {
onRenderHandMonitor();
return false;
}
}
//#else
//$$ @SubscribeEvent
//$$ public void onRenderHand(RenderHandEvent event) {
//$$ // Unless we are spectating another player, don't render our hand
//$$ if (getRenderViewEntity(mc) == CameraEntity.this || !(getRenderViewEntity(mc) instanceof PlayerEntity)) {
//$$ event.setCanceled(true);
//$$ }
//$$ }
//#endif
//#if FABRIC>=1
private void onRenderHandMonitor() {
//#else
//$$ @SubscribeEvent(priority = EventPriority.LOWEST)
//$$ public void onRenderHandMonitor(RenderHandEvent event) {
//#endif
Entity view = getRenderViewEntity(mc);
if (view instanceof PlayerEntity) {
PlayerEntity player = (PlayerEntity) view;
// When the spectated player has changed, force equip their items to prevent the equip animation
if (lastHandRendered != player) {
@@ -790,6 +741,7 @@ public class CameraEntity
mc.player.renderYaw = mc.player.lastRenderYaw = player.yaw;
mc.player.renderPitch = mc.player.lastRenderPitch = player.pitch;
}
return false;
}
}

View File

@@ -170,12 +170,7 @@ public class GuiReplayOverlay extends AbstractGuiOverlay<GuiReplayOverlay> {
return this;
}
//#if MC>=10800
private
//#else
//$$ public // All event handlers need to be public in 1.7.10
//#endif
class EventHandler extends EventRegistrations {
private class EventHandler extends EventRegistrations {
{ on(KeyBindingEventCallback.EVENT, this::onKeyBindingEvent); }
private void onKeyBindingEvent() {
GameOptions gameSettings = getMinecraft().options;

View File

@@ -1,6 +1,7 @@
package com.replaymod.replay.handler;
import de.johni0702.minecraft.gui.utils.EventRegistrations;
import de.johni0702.minecraft.gui.versions.callbacks.InitScreenCallback;
import com.replaymod.replay.ReplayModReplay;
import com.replaymod.replay.gui.screen.GuiReplayViewer;
import net.minecraft.client.gui.screen.GameMenuScreen;
@@ -16,9 +17,7 @@ import net.minecraft.text.TranslatableText;
//$$ import net.minecraft.client.resource.language.I18n;
//#endif
//#if FABRIC>=1
import de.johni0702.minecraft.gui.versions.callbacks.InitScreenCallback;
//#else
//#if FABRIC<1
//$$ import net.minecraftforge.client.event.GuiScreenEvent;
//$$ import net.minecraftforge.eventbus.api.SubscribeEvent;
//#endif
@@ -46,15 +45,8 @@ public class GuiHandler extends EventRegistrations {
this.mod = mod;
}
//#if FABRIC>=1
{ on(InitScreenCallback.EVENT, this::injectIntoIngameMenu); }
private void injectIntoIngameMenu(Screen guiScreen, List<AbstractButtonWidget> buttonList) {
//#else
//$$ @SubscribeEvent
//$$ public void injectIntoIngameMenu(GuiScreenEvent.InitGuiEvent.Post event) {
//$$ Screen guiScreen = getGui(event);
//$$ List<Widget> buttonList = getButtonList(event);
//#endif
if (!(guiScreen instanceof GameMenuScreen)) {
return;
}
@@ -198,14 +190,8 @@ public class GuiHandler extends EventRegistrations {
.forEach(button -> button.y += moveBy);
}
//#if FABRIC>=1
{ on(InitScreenCallback.EVENT, this::ensureReplayStopped); }
private void ensureReplayStopped(Screen guiScreen, List<AbstractButtonWidget> buttonList) {
//#else
//$$ @SubscribeEvent
//$$ public void ensureReplayStopped(GuiScreenEvent.InitGuiEvent event) {
//$$ Screen guiScreen = getGui(event);
//#endif
if (!(guiScreen instanceof TitleScreen || guiScreen instanceof MultiplayerScreen)) {
return;
}
@@ -225,15 +211,8 @@ public class GuiHandler extends EventRegistrations {
}
}
//#if FABRIC>=1
{ on(InitScreenCallback.EVENT, this::injectIntoMainMenu); }
private void injectIntoMainMenu(Screen guiScreen, List<AbstractButtonWidget> buttonList) {
//#else
//$$ @SubscribeEvent
//$$ public void injectIntoMainMenu(GuiScreenEvent.InitGuiEvent event) {
//$$ Screen guiScreen = getGui(event);
//$$ List<Widget> buttonList = getButtonList(event);
//#endif
if (!(guiScreen instanceof TitleScreen)) {
return;
}
@@ -269,7 +248,7 @@ public class GuiHandler extends EventRegistrations {
//#if FABRIC<=0
//$$ if (guiScreen.getClass().getName().endsWith("custommainmenu.gui.GuiFakeMain")) {
//$$ // CustomMainMenu uses a different list in the event than in its Fake gui
//$$ addButton(event, button);
//$$ buttonList.add(button);
//$$ return;
//$$ }
//#endif

View File

@@ -1,6 +1,8 @@
package com.replaymod.simplepathing.preview;
import com.mojang.blaze3d.platform.GlStateManager;
import com.replaymod.core.ReplayMod;
import com.replaymod.core.events.PostRenderWorldCallback;
import com.replaymod.core.versions.MCVer;
import com.replaymod.pathing.properties.CameraProperties;
import com.replaymod.pathing.properties.SpectatorProperty;
@@ -17,7 +19,7 @@ import com.replaymod.simplepathing.SPTimeline;
import com.replaymod.simplepathing.gui.GuiPathing;
import de.johni0702.minecraft.gui.utils.EventRegistrations;
import net.minecraft.client.MinecraftClient;
import com.mojang.blaze3d.platform.GlStateManager;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.entity.Entity;
import net.minecraft.util.Identifier;
import org.apache.commons.lang3.tuple.Pair;
@@ -26,14 +28,6 @@ import org.lwjgl.opengl.GL11;
//#if MC>=11500
import com.mojang.blaze3d.systems.RenderSystem;
import net.minecraft.client.util.math.MatrixStack;
//#endif
//#if FABRIC>=1
import com.replaymod.core.events.PostRenderWorldCallback;
//#else
//$$ import net.minecraftforge.client.event.RenderWorldLastEvent;
//$$ import net.minecraftforge.eventbus.api.SubscribeEvent;
//#endif
import java.util.Comparator;
@@ -58,17 +52,8 @@ public class PathPreviewRenderer extends EventRegistrations {
this.replayHandler = replayHandler;
}
//#if FABRIC>=1
{ on(PostRenderWorldCallback.EVENT, this::renderCameraPath); }
//#if MC>=11500
private void renderCameraPath(MatrixStack matrixStack) {
//#else
//$$ private void renderCameraPath() {
//#endif
//#else
//$$ @SubscribeEvent
//$$ public void renderCameraPath(RenderWorldLastEvent event) {
//#endif
if (!replayHandler.getReplaySender().isAsyncMode() || mc.options.hudHidden) return;
Entity view = getRenderViewEntity(mc);

View File

@@ -1,6 +1,7 @@
package com.replaymod.core;
import com.replaymod.core.mixin.MinecraftAccessor;
import com.replaymod.core.versions.forge.EventsAdapter;
import net.minecraft.client.resources.IResourcePack;
import net.minecraftforge.common.config.Configuration;
import net.minecraftforge.fml.common.Loader;
@@ -36,6 +37,7 @@ import static com.replaymod.core.versions.MCVer.getMinecraft;
guiFactory = "com.replaymod.core.gui.GuiFactory")
public class ReplayModBackend {
private final ReplayMod mod = new ReplayMod(this);
private final EventsAdapter eventsAdapter = new EventsAdapter();
@Deprecated
public static Configuration config;
@@ -52,6 +54,7 @@ public class ReplayModBackend {
@EventHandler
public void init(FMLInitializationEvent event) {
mod.initModules();
eventsAdapter.register();
}
public String getVersion() {

View File

@@ -0,0 +1,50 @@
package com.replaymod.core.versions.forge;
import com.replaymod.core.events.KeyBindingEventCallback;
import com.replaymod.core.events.PostRenderCallback;
import com.replaymod.core.events.PostRenderWorldCallback;
import com.replaymod.core.events.PreRenderCallback;
import com.replaymod.core.events.PreRenderHandCallback;
import de.johni0702.minecraft.gui.utils.EventRegistrations;
import de.johni0702.minecraft.gui.versions.MatrixStack;
import net.minecraftforge.client.event.RenderHandEvent;
import net.minecraftforge.client.event.RenderWorldLastEvent;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.common.gameevent.InputEvent;
import net.minecraftforge.fml.common.gameevent.TickEvent;
public class EventsAdapter extends EventRegistrations {
@SubscribeEvent
public void onKeyEvent(InputEvent.KeyInputEvent event) {
KeyBindingEventCallback.EVENT.invoker().onKeybindingEvent();
}
@SubscribeEvent
public void onMouseInput(InputEvent.MouseInputEvent event) {
KeyBindingEventCallback.EVENT.invoker().onKeybindingEvent();
}
@SubscribeEvent
public void preRender(TickEvent.RenderTickEvent event) {
if (event.phase != TickEvent.Phase.START) return;
PreRenderCallback.EVENT.invoker().preRender();
}
@SubscribeEvent
public void postRender(TickEvent.RenderTickEvent event) {
if (event.phase != TickEvent.Phase.END) return;
PostRenderCallback.EVENT.invoker().postRender();
}
@SubscribeEvent
public void renderCameraPath(RenderWorldLastEvent event) {
PostRenderWorldCallback.EVENT.invoker().postRenderWorld(new MatrixStack());
}
@SubscribeEvent
public void oRenderHand(RenderHandEvent event) {
if (PreRenderHandCallback.EVENT.invoker().preRenderHand()) {
event.setCanceled(true);
}
}
}