Update to MC 1.14 / Fabric
This commit is contained in:
@@ -1,12 +1,14 @@
|
||||
package com.replaymod.compat;
|
||||
|
||||
import com.replaymod.compat.optifine.DisableFastRender;
|
||||
import com.replaymod.compat.oranges17animations.HideInvisibleEntities;
|
||||
import com.replaymod.core.Module;
|
||||
import net.minecraftforge.eventbus.api.IEventBus;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
|
||||
//#if MC<11400
|
||||
import com.replaymod.compat.oranges17animations.HideInvisibleEntities;
|
||||
//#endif
|
||||
|
||||
//#if MC<11300
|
||||
//$$ import com.replaymod.compat.bettersprinting.DisableBetterSprinting;
|
||||
//#endif
|
||||
@@ -15,19 +17,18 @@ import org.apache.logging.log4j.Logger;
|
||||
import com.replaymod.compat.shaders.ShaderBeginRender;
|
||||
//#endif
|
||||
|
||||
import static com.replaymod.core.versions.MCVer.*;
|
||||
|
||||
public class ReplayModCompat implements Module {
|
||||
public static Logger LOGGER = LogManager.getLogger();
|
||||
|
||||
@Override
|
||||
public void initClient() {
|
||||
IEventBus bus = FML_BUS;
|
||||
//#if MC>=10800
|
||||
bus.register(new ShaderBeginRender());
|
||||
new ShaderBeginRender().register();
|
||||
//#endif
|
||||
new DisableFastRender().register();
|
||||
//#if MC<11400
|
||||
new HideInvisibleEntities().register();
|
||||
//#endif
|
||||
bus.register(new DisableFastRender());
|
||||
bus.register(new HideInvisibleEntities());
|
||||
//#if MC<11300
|
||||
//$$ DisableBetterSprinting.register();
|
||||
//#endif
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
package com.replaymod.compat.optifine;
|
||||
|
||||
import de.johni0702.minecraft.gui.utils.EventRegistrations;
|
||||
import com.replaymod.core.versions.MCVer;
|
||||
import com.replaymod.render.events.ReplayRenderEvent;
|
||||
import com.replaymod.render.events.ReplayRenderCallback;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||
|
||||
public class DisableFastRender {
|
||||
public class DisableFastRender extends EventRegistrations {
|
||||
|
||||
private final Minecraft mc = Minecraft.getInstance();
|
||||
|
||||
private boolean wasFastRender = false;
|
||||
|
||||
@SubscribeEvent
|
||||
public void onRenderBegin(ReplayRenderEvent.Pre event) {
|
||||
{ on(ReplayRenderCallback.Pre.EVENT, renderer -> onRenderBegin()); }
|
||||
private void onRenderBegin() {
|
||||
if (!MCVer.hasOptifine()) return;
|
||||
|
||||
try {
|
||||
@@ -23,8 +23,8 @@ public class DisableFastRender {
|
||||
}
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public void onRenderEnd(ReplayRenderEvent.Post event){
|
||||
{ on(ReplayRenderCallback.Post.EVENT, renderer -> onRenderEnd()); }
|
||||
private void onRenderEnd() {
|
||||
if (!MCVer.hasOptifine()) return;
|
||||
|
||||
try {
|
||||
|
||||
@@ -1,17 +1,13 @@
|
||||
//#if MC<11400
|
||||
package com.replaymod.compat.oranges17animations;
|
||||
|
||||
import com.replaymod.replay.camera.CameraEntity;
|
||||
import de.johni0702.minecraft.gui.utils.EventRegistrations;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraftforge.client.event.RenderLivingEvent;
|
||||
import net.minecraftforge.eventbus.api.EventPriority;
|
||||
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||
|
||||
//#if MC>=11300
|
||||
import net.minecraftforge.fml.ModList;
|
||||
//#else
|
||||
//$$ import net.minecraftforge.fml.common.Loader;
|
||||
//#endif
|
||||
|
||||
import static com.replaymod.core.versions.MCVer.*;
|
||||
|
||||
/**
|
||||
@@ -20,13 +16,9 @@ import static com.replaymod.core.versions.MCVer.*;
|
||||
*
|
||||
* To fix this issue, we simply cancel the RenderLivingEvent.Pre before it gets to ArmorAnimation if the entity is invisible.
|
||||
*/
|
||||
public class HideInvisibleEntities {
|
||||
public class HideInvisibleEntities extends EventRegistrations {
|
||||
private final Minecraft mc = Minecraft.getInstance();
|
||||
//#if MC>=11300
|
||||
private final boolean modLoaded = ModList.get().isLoaded("animations");
|
||||
//#else
|
||||
//$$ private final boolean modLoaded = Loader.isModLoaded("animations");
|
||||
//#endif
|
||||
private final boolean modLoaded = isModLoaded("animations");
|
||||
|
||||
@SubscribeEvent(priority = EventPriority.HIGH)
|
||||
public void preRenderLiving(RenderLivingEvent.Pre event) {
|
||||
@@ -37,3 +29,4 @@ public class HideInvisibleEntities {
|
||||
}
|
||||
}
|
||||
}
|
||||
//#endif
|
||||
|
||||
@@ -2,15 +2,21 @@
|
||||
package com.replaymod.compat.shaders;
|
||||
|
||||
import com.replaymod.render.hooks.EntityRendererHandler;
|
||||
import de.johni0702.minecraft.gui.utils.EventRegistrations;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||
import net.minecraftforge.fml.common.gameevent.TickEvent;
|
||||
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
|
||||
import static com.replaymod.core.versions.MCVer.getRenderPartialTicks;
|
||||
|
||||
public class ShaderBeginRender {
|
||||
//#if MC>=11400
|
||||
//$$ import com.replaymod.core.events.PreRenderCallback;
|
||||
//#else
|
||||
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||
import net.minecraftforge.fml.common.gameevent.TickEvent;
|
||||
//#endif
|
||||
|
||||
public class ShaderBeginRender extends EventRegistrations {
|
||||
|
||||
private final Minecraft mc = Minecraft.getInstance();
|
||||
|
||||
@@ -19,9 +25,14 @@ public class ShaderBeginRender {
|
||||
* as this would usually get called by EntityRenderer#renderWorld,
|
||||
* which we're not calling during rendering.
|
||||
*/
|
||||
//#if MC>=11400
|
||||
//$$ { 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;
|
||||
|
||||
|
||||
@@ -13,11 +13,15 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||
@Mixin(GameRenderer.class)
|
||||
public abstract class MixinShaderEntityRenderer {
|
||||
|
||||
//#if MC>=11400
|
||||
//$$ @Inject(method = "renderCenter", at = @At("HEAD"))
|
||||
//#else
|
||||
//#if MC>=11300
|
||||
@Inject(method = "updateCameraAndRender(FJ)V", at = @At("HEAD"))
|
||||
//#else
|
||||
//$$ @Inject(method = "renderWorldPass", at = @At("HEAD"))
|
||||
//#endif
|
||||
//#endif
|
||||
private void replayModCompat_updateShaderFrameTimeCounter(CallbackInfo ignore) {
|
||||
if (ReplayModReplay.instance.getReplayHandler() == null) return;
|
||||
if (ShaderReflection.shaders_frameTimeCounter == null) return;
|
||||
|
||||
@@ -19,7 +19,7 @@ public abstract class MixinShaderRenderChunk {
|
||||
* to always return true while rendering so no chunks are being added
|
||||
* to a separate rendering queue
|
||||
*/
|
||||
@Inject(method = "isPlayerUpdate", at = @At("HEAD"), cancellable = true)
|
||||
@Inject(method = "isPlayerUpdate", at = @At("HEAD"), cancellable = true, remap = false)
|
||||
private void replayModCompat_disableIsPlayerUpdate(CallbackInfoReturnable<Boolean> ci) {
|
||||
// TODO: Update to 1.12 once optifine is available
|
||||
// TODO: We're on 1.13 now and haven't gotten any 1.12 complaints, so 1.12 is probably working but 1.13?
|
||||
|
||||
@@ -6,13 +6,18 @@ import com.replaymod.render.hooks.EntityRendererHandler;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.renderer.WorldRenderer;
|
||||
import net.minecraft.client.renderer.culling.ICamera;
|
||||
import net.minecraft.entity.Entity;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.Shadow;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Inject;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||
|
||||
//#if MC>=11400
|
||||
//$$ import net.minecraft.client.render.Camera;
|
||||
//#else
|
||||
import net.minecraft.entity.Entity;
|
||||
//#endif
|
||||
|
||||
@Mixin(WorldRenderer.class)
|
||||
public abstract class MixinShaderRenderGlobal {
|
||||
|
||||
@@ -22,14 +27,22 @@ public abstract class MixinShaderRenderGlobal {
|
||||
public boolean displayListEntitiesDirty;
|
||||
|
||||
@Inject(method = "setupTerrain", at = @At("HEAD"), cancellable = true)
|
||||
public void replayModCompat_setupTerrain(Entity viewEntity,
|
||||
//#if MC>=11300
|
||||
float partialTicks,
|
||||
//#else
|
||||
//$$ double partialTicks,
|
||||
//#endif
|
||||
ICamera camera,
|
||||
int frameCount, boolean playerSpectator, CallbackInfo ci) {
|
||||
public void replayModCompat_setupTerrain(
|
||||
//#if MC>=11400
|
||||
//$$ Camera viewEntity,
|
||||
//#else
|
||||
Entity viewEntity,
|
||||
//#if MC>=11300
|
||||
float partialTicks,
|
||||
//#else
|
||||
//$$ double partialTicks,
|
||||
//#endif
|
||||
//#endif
|
||||
ICamera camera,
|
||||
int frameCount,
|
||||
boolean playerSpectator,
|
||||
CallbackInfo ci
|
||||
) {
|
||||
if (((EntityRendererHandler.IEntityRenderer) mc.entityRenderer).replayModRender_getHandler() == null) return;
|
||||
if (ShaderReflection.shaders_isShadowPass == null) return;
|
||||
|
||||
@@ -38,7 +51,7 @@ public abstract class MixinShaderRenderGlobal {
|
||||
// set it to false manually to exit the loop imposed by MixinRenderGlobal#replayModRender_setupTerrain.
|
||||
try {
|
||||
if ((boolean) ShaderReflection.shaders_isShadowPass.get(null) == true) {
|
||||
displayListEntitiesDirty = false;
|
||||
this.displayListEntitiesDirty = false;
|
||||
}
|
||||
} catch (IllegalAccessException ignore) {}
|
||||
|
||||
|
||||
@@ -1,13 +1,18 @@
|
||||
package com.replaymod.compat.shaders.mixin;
|
||||
|
||||
import net.minecraft.client.renderer.GameRenderer;
|
||||
import net.minecraftforge.client.ForgeHooksClient;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.Pseudo;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Inject;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||
|
||||
//#if MC>=11400
|
||||
//$$ import com.replaymod.core.events.PreRenderHandCallback;
|
||||
//#else
|
||||
import net.minecraftforge.client.ForgeHooksClient;
|
||||
//#endif
|
||||
|
||||
@Pseudo
|
||||
@Mixin(targets = {
|
||||
"shadersmod/client/ShadersRender", // Pre Optifine 1.12.2 E1
|
||||
@@ -17,10 +22,14 @@ public abstract class MixinShadersRender {
|
||||
|
||||
@Inject(method = "renderHand0", at = @At("HEAD"), cancellable = true)
|
||||
private static void replayModCompat_disableRenderHand0(GameRenderer er, float partialTicks, int renderPass, CallbackInfo ci) {
|
||||
//#if MC>=11400
|
||||
//$$ if (PreRenderHandCallback.EVENT.invoker().preRenderHand()) {
|
||||
//#else
|
||||
//#if MC>=11300
|
||||
if (ForgeHooksClient.renderFirstPersonHand(er.getMinecraft().renderGlobal, partialTicks)) {
|
||||
//#else
|
||||
//$$ if (ForgeHooksClient.renderFirstPersonHand(er.mc.renderGlobal, partialTicks, renderPass)) {
|
||||
//#endif
|
||||
//#endif
|
||||
ci.cancel();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user