Update to MC 1.14 / Fabric

This commit is contained in:
Jonas Herzig
2019-05-04 14:37:00 +02:00
parent 17fe5b345f
commit 3d009e45c7
151 changed files with 3963 additions and 1455 deletions

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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