Sorry for this painful commit, but git somehow f'd up and sees changes in files where there aren't any.
117 lines
4.8 KiB
Java
Executable File
117 lines
4.8 KiB
Java
Executable File
package eu.crushedpixel.replaymod;
|
|
|
|
import net.minecraft.client.Minecraft;
|
|
import net.minecraftforge.common.MinecraftForge;
|
|
import net.minecraftforge.common.config.Configuration;
|
|
import net.minecraftforge.common.config.Property;
|
|
import net.minecraftforge.fml.common.FMLCommonHandler;
|
|
import net.minecraftforge.fml.common.Mod;
|
|
import net.minecraftforge.fml.common.Mod.EventHandler;
|
|
import net.minecraftforge.fml.common.Mod.Instance;
|
|
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
|
|
import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
|
|
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
|
|
import eu.crushedpixel.replaymod.api.client.ApiClient;
|
|
import eu.crushedpixel.replaymod.events.GuiEventHandler;
|
|
import eu.crushedpixel.replaymod.events.GuiReplayOverlay;
|
|
import eu.crushedpixel.replaymod.events.KeyInputHandler;
|
|
import eu.crushedpixel.replaymod.events.RecordingHandler;
|
|
import eu.crushedpixel.replaymod.recording.ConnectionEventHandler;
|
|
import eu.crushedpixel.replaymod.registry.KeybindRegistry;
|
|
import eu.crushedpixel.replaymod.renderer.SafeEntityRenderer;
|
|
import eu.crushedpixel.replaymod.settings.ReplaySettings;
|
|
|
|
@Mod(modid = ReplayMod.MODID, version = ReplayMod.VERSION)
|
|
public class ReplayMod
|
|
{
|
|
|
|
//TODO: Set ReplayHandler replaying to false when replay is exited
|
|
//TODO: Hide Titles upon hurrying
|
|
//TODO: Override Enchantment Rendering for items when replaying (to adjust speed of animation)
|
|
|
|
//TODO: Show the player whether he has already uploaded a replay
|
|
|
|
//TODO: Hinting to the b/v key feature
|
|
|
|
//XXX
|
|
//Known Bugs
|
|
//
|
|
//Keyframes have problems with Linear Paths
|
|
//Rain isn't working
|
|
//Incompatible with Shaders Mod
|
|
//
|
|
//
|
|
|
|
public static final String MODID = "replaymod";
|
|
public static final String VERSION = "0.0.1";
|
|
|
|
private static final Minecraft mc = Minecraft.getMinecraft();
|
|
|
|
public static GuiReplayOverlay overlay = new GuiReplayOverlay();
|
|
|
|
public static ReplaySettings replaySettings = new ReplaySettings(true, true, true, false, false, 30, 0.5f);
|
|
public static Configuration config;
|
|
|
|
public static boolean firstMainMenu = true;
|
|
|
|
public static RecordingHandler recordingHandler;
|
|
|
|
public static int TP_DISTANCE_LIMIT = 128;
|
|
|
|
public static final ApiClient apiClient = new ApiClient();
|
|
|
|
// The instance of your mod that Forge uses.
|
|
@Instance(value = "ReplayModID")
|
|
public static ReplayMod instance;
|
|
|
|
@EventHandler
|
|
public void preInit(FMLPreInitializationEvent event) {
|
|
config = new Configuration(event.getSuggestedConfigurationFile());
|
|
config.load();
|
|
|
|
Property recServer = config.get("settings", "enableRecordingServer", true, "Defines whether a recording should be started upon joining a server.");
|
|
Property recSP = config.get("settings", "enableRecordingSingleplayer", true, "Defines whether a recording should be started upon joining a singleplayer world.");
|
|
Property showNot = ReplayMod.instance.config.get("settings", "showNotifications", true, "Defines whether notifications should be sent to the player.");
|
|
Property linear = ReplayMod.instance.config.get("settings", "forceLinearPath", false, "Defines whether travelling paths should be linear instead of interpolated.");
|
|
Property lighting = ReplayMod.instance.config.get("settings", "enableLighting", false, "If enabled, the whole map is lighted.");
|
|
Property vq = ReplayMod.instance.config.get("settings", "videoQuality", 0.5f, "The quality of the exported video files from 0.1 to 0.9");
|
|
Property framerate = ReplayMod.instance.config.get("settings", "videoFramerate", 30, "The framerate of the exported video files from 10 to 120");
|
|
|
|
replaySettings = new ReplaySettings(recServer.getBoolean(true), recSP.getBoolean(true), showNot.getBoolean(true),
|
|
linear.getBoolean(false), lighting.getBoolean(false), framerate.getInt(30), (float)vq.getDouble(0.5));
|
|
|
|
config.save();
|
|
}
|
|
|
|
@EventHandler
|
|
public void init(FMLInitializationEvent event) {
|
|
FMLCommonHandler.instance().bus().register(new ConnectionEventHandler());
|
|
MinecraftForge.EVENT_BUS.register(new GuiEventHandler());
|
|
|
|
FMLCommonHandler.instance().bus().register(new KeyInputHandler());
|
|
|
|
recordingHandler = new RecordingHandler();
|
|
FMLCommonHandler.instance().bus().register(recordingHandler);
|
|
MinecraftForge.EVENT_BUS.register(recordingHandler);
|
|
}
|
|
|
|
@EventHandler
|
|
public void postInit(FMLPostInitializationEvent event) {
|
|
overlay = new GuiReplayOverlay();
|
|
FMLCommonHandler.instance().bus().register(overlay);
|
|
MinecraftForge.EVENT_BUS.register(overlay);
|
|
|
|
KeybindRegistry.initialize();
|
|
|
|
try {
|
|
mc.entityRenderer = new SafeEntityRenderer(mc, mc.entityRenderer);
|
|
} catch(Exception e) {
|
|
e.printStackTrace();
|
|
}
|
|
//ReplayTrimmer.trim(new File("/Users/mariusmetzger/toTrim.mcpr"), new File("/Users/mariusmetzger/trimmed.mcpr"), 1000*60, 2000*60);
|
|
//if(AuthenticationHandler.isBlacklisted(Minecraft.getMinecraft().getSession().getPlayerID())) {
|
|
//System.exit(0);
|
|
//}
|
|
}
|
|
}
|