Merge branch '1.8' into 1.9.4

fb39a06 Add drone ci config
030c71c Automatically disable and re-enable Optifine's Fast Render setting before rendering a video
1fef12d Include FML handshake in recording
e86c66d Move README.md, LICENSE.md and user docs from master branch to 1.8
This commit is contained in:
johni0702
2016-12-10 16:29:41 +01:00
88 changed files with 1883 additions and 13 deletions

View File

@@ -1,5 +1,6 @@
package com.replaymod.compat;
import com.replaymod.compat.optifine.DisableFastRender;
import com.replaymod.compat.shaders.ShaderBeginRender;
import com.replaymod.core.ReplayMod;
import net.minecraftforge.common.MinecraftForge;
@@ -18,6 +19,7 @@ public class ReplayModCompat {
public void init(FMLInitializationEvent event) {
EventBus bus = MinecraftForge.EVENT_BUS;
bus.register(new ShaderBeginRender());
bus.register(new DisableFastRender());
}
}

View File

@@ -0,0 +1,37 @@
package com.replaymod.compat.optifine;
import com.replaymod.render.events.ReplayRenderEvent;
import net.minecraft.client.Minecraft;
import net.minecraftforge.fml.client.FMLClientHandler;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
public class DisableFastRender {
private final Minecraft mc = Minecraft.getMinecraft();
private boolean wasFastRender = false;
@SubscribeEvent
public void onRenderBegin(ReplayRenderEvent.Pre event) {
if (!FMLClientHandler.instance().hasOptifine()) return;
try {
wasFastRender = (boolean) OptifineReflection.gameSettings_ofFastRender.get(mc.gameSettings);
OptifineReflection.gameSettings_ofFastRender.set(mc.gameSettings, false);
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
@SubscribeEvent
public void onRenderEnd(ReplayRenderEvent.Post event){
if (!FMLClientHandler.instance().hasOptifine()) return;
try {
OptifineReflection.gameSettings_ofFastRender.set(mc.gameSettings, wasFastRender);
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}

View File

@@ -0,0 +1,27 @@
package com.replaymod.compat.optifine;
import net.minecraft.client.settings.GameSettings;
import java.lang.reflect.Field;
public class OptifineReflection {
// GameSettings.ofFastRender
public static Field gameSettings_ofFastRender;
static {
try {
// this throws an ignored ClassNotFoundException if Optifine isn't installed
Class.forName("Config");
gameSettings_ofFastRender = GameSettings.class.getDeclaredField("ofFastRender");
gameSettings_ofFastRender.setAccessible(true);
} catch (ClassNotFoundException ignore) {
// no optifine installed
} catch (NoSuchFieldException e) {
// the field wasn't found. Has it been renamed?
e.printStackTrace();
}
}
}