diff --git a/src/main/java/com/replaymod/core/ReplayMod.java b/src/main/java/com/replaymod/core/ReplayMod.java index fbe56f50..fb14912a 100755 --- a/src/main/java/com/replaymod/core/ReplayMod.java +++ b/src/main/java/com/replaymod/core/ReplayMod.java @@ -11,6 +11,7 @@ import com.replaymod.recording.ReplayModRecording; import com.replaymod.render.ReplayModRender; import com.replaymod.replay.ReplayModReplay; import com.replaymod.replaystudio.util.I18n; +import com.replaymod.simplepathing.ReplayModSimplePathing; import de.johni0702.minecraft.gui.container.GuiScreen; import lombok.Getter; import net.minecraft.client.Minecraft; @@ -165,6 +166,7 @@ public class ReplayMod implements Module { modules.add(new ReplayModRecording(this)); modules.add(new ReplayModReplay(this)); modules.add(new ReplayModRender(this)); + modules.add(new ReplayModSimplePathing(this)); //#if MC>=11300 settingsRegistry.register(); diff --git a/src/main/java/com/replaymod/core/versions/MCVer.java b/src/main/java/com/replaymod/core/versions/MCVer.java index 6213cac0..a73a7fd1 100644 --- a/src/main/java/com/replaymod/core/versions/MCVer.java +++ b/src/main/java/com/replaymod/core/versions/MCVer.java @@ -31,6 +31,7 @@ import net.minecraftforge.common.MinecraftForge; //#if MC>=11300 import net.minecraft.client.MainWindow; +import net.minecraft.client.util.InputMappings; import net.minecraft.crash.ReportedException; import org.lwjgl.glfw.GLFW; //#else @@ -709,6 +710,8 @@ public class MCVer { public static void colorLogicOp(int op) { GlStateManager.logicOp(op); } public static abstract class Keyboard { + public static final int KEY_LCONTROL = GLFW.GLFW_KEY_LEFT_CONTROL; + public static final int KEY_LSHIFT = GLFW.GLFW_KEY_LEFT_SHIFT; public static final int KEY_ESCAPE = GLFW.GLFW_KEY_ESCAPE; public static final int KEY_HOME = GLFW.GLFW_KEY_HOME; public static final int KEY_END = GLFW.GLFW_KEY_END; @@ -747,6 +750,10 @@ public class MCVer { public static final int KEY_X = GLFW.GLFW_KEY_X; public static final int KEY_Y = GLFW.GLFW_KEY_Y; public static final int KEY_Z = GLFW.GLFW_KEY_Z; + + public static boolean isKeyDown(int keyCode) { + return InputMappings.isKeyDown(keyCode); + } } //#endif } diff --git a/src/main/java/com/replaymod/simplepathing/ReplayModSimplePathing.java b/src/main/java/com/replaymod/simplepathing/ReplayModSimplePathing.java index 3a558ceb..16ff409c 100644 --- a/src/main/java/com/replaymod/simplepathing/ReplayModSimplePathing.java +++ b/src/main/java/com/replaymod/simplepathing/ReplayModSimplePathing.java @@ -1,5 +1,7 @@ package com.replaymod.simplepathing; +import com.replaymod.core.KeyBindingRegistry; +import com.replaymod.core.Module; import com.replaymod.core.ReplayMod; import com.replaymod.core.events.SettingsChangedEvent; import com.replaymod.replay.ReplayModReplay; @@ -17,19 +19,19 @@ import com.replaymod.simplepathing.gui.GuiPathing; import com.replaymod.simplepathing.preview.PathPreview; import lombok.Getter; import net.minecraft.crash.CrashReport; -import net.minecraft.util.ReportedException; +import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import org.lwjgl.input.Keyboard; -//#if MC>=10800 -import net.minecraftforge.fml.common.Mod; -import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; -import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; +//#if MC>=11300 +import net.minecraftforge.eventbus.api.SubscribeEvent; +//#else +//$$ import org.lwjgl.input.Keyboard; +//#if MC>=10800 +//$$ import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; //#else -//$$ import cpw.mods.fml.common.Mod; -//$$ import cpw.mods.fml.common.event.FMLPreInitializationEvent; //$$ import cpw.mods.fml.common.eventhandler.SubscribeEvent; //#endif +//#endif import java.io.IOException; import java.util.Collections; @@ -41,38 +43,32 @@ import java.util.concurrent.atomic.AtomicInteger; import static com.replaymod.core.versions.MCVer.*; -@Mod(modid = ReplayModSimplePathing.MOD_ID, - version = "@MOD_VERSION@", - acceptedMinecraftVersions = "@MC_VERSION@", - acceptableRemoteVersions = "*", - //#if MC>=10800 - clientSideOnly = true, - //#endif - useMetadata = true) -public class ReplayModSimplePathing { - public static final String MOD_ID = "replaymod-simplepathing"; - - @Mod.Instance(MOD_ID) +public class ReplayModSimplePathing implements Module { + { instance = this; } public static ReplayModSimplePathing instance; private ReplayMod core; - public static Logger LOGGER; + public static Logger LOGGER = LogManager.getLogger(); private GuiPathing guiPathing; + private PathPreview pathPreview = new PathPreview(this); - @Mod.EventHandler - public void preInit(FMLPreInitializationEvent event) { - LOGGER = event.getModLog(); - core = ReplayMod.instance; + public ReplayModSimplePathing(ReplayMod core) { + this.core = core; core.getSettingsRegistry().register(Setting.class); + } + @Override + public void initClient() { FML_BUS.register(this); - - PathPreview pathPreview = new PathPreview(this); pathPreview.register(); + } + @Override + public void registerKeyBindings(KeyBindingRegistry registry) { + pathPreview.registerKeyBindings(registry); core.getKeyBindingRegistry().registerKeyBinding("replaymod.input.keyframerepository", Keyboard.KEY_X, () -> { if (guiPathing != null) guiPathing.keyframeRepoButtonPressed(); }); @@ -100,7 +96,7 @@ public class ReplayModSimplePathing { } } } catch (IOException e) { - throw new ReportedException(CrashReport.makeCrashReport(e, "Reading timeline")); + throw newReportedException(CrashReport.makeCrashReport(e, "Reading timeline")); } guiPathing = new GuiPathing(core, this, event.getReplayHandler()); @@ -226,7 +222,7 @@ public class ReplayModSimplePathing { timeline = serialization.deserialize(serialized).get(""); } catch (Throwable t) { CrashReport report = CrashReport.makeCrashReport(t, "Cloning timeline"); - throw new ReportedException(report); + throw newReportedException(report); } int id = lastSaveId.incrementAndGet(); diff --git a/src/main/java/com/replaymod/simplepathing/SPTimeline.java b/src/main/java/com/replaymod/simplepathing/SPTimeline.java index cb47cf4a..e0761d86 100644 --- a/src/main/java/com/replaymod/simplepathing/SPTimeline.java +++ b/src/main/java/com/replaymod/simplepathing/SPTimeline.java @@ -31,7 +31,6 @@ import com.replaymod.simplepathing.properties.ExplicitInterpolationProperty; import lombok.Getter; import net.minecraft.crash.CrashReport; import net.minecraft.crash.CrashReportCategory; -import net.minecraft.util.ReportedException; import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.Validate; import org.apache.commons.lang3.tuple.Triple; @@ -660,7 +659,7 @@ public class SPTimeline implements PathingRegistry { CrashReport crash = CrashReport.makeCrashReport(e, "Serializing interpolator"); CrashReportCategory category = crash.makeCategory("Serializing interpolator"); addDetail(category, "Interpolator", interpolator::toString); - throw new ReportedException(crash); + throw newReportedException(crash); } return baos.toString(); @@ -674,8 +673,8 @@ public class SPTimeline implements PathingRegistry { } catch (IOException e) { CrashReport crash = CrashReport.makeCrashReport(e, "De-serializing interpolator"); CrashReportCategory category = crash.makeCategory("De-serializing interpolator"); - category.addCrashSection("Interpolator", json); - throw new ReportedException(crash); + addDetail(category, "Interpolator", json::toString); + throw newReportedException(crash); } } } diff --git a/src/main/java/com/replaymod/simplepathing/gui/GuiEditKeyframe.java b/src/main/java/com/replaymod/simplepathing/gui/GuiEditKeyframe.java index 1b9e8bc0..9bdd2e4c 100644 --- a/src/main/java/com/replaymod/simplepathing/gui/GuiEditKeyframe.java +++ b/src/main/java/com/replaymod/simplepathing/gui/GuiEditKeyframe.java @@ -33,16 +33,21 @@ import de.johni0702.minecraft.gui.layout.VerticalLayout; import de.johni0702.minecraft.gui.popup.AbstractGuiPopup; import de.johni0702.minecraft.gui.utils.Colors; import de.johni0702.minecraft.gui.utils.Consumer; +import de.johni0702.minecraft.gui.utils.lwjgl.ReadablePoint; import lombok.Getter; import net.minecraft.client.resources.I18n; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import org.lwjgl.input.Keyboard; -import org.lwjgl.util.ReadablePoint; import java.util.Map; import java.util.Optional; +//#if MC>=11300 +import com.replaymod.core.versions.MCVer.Keyboard; +//#else +//$$ import org.lwjgl.input.Keyboard; +//#endif + import static de.johni0702.minecraft.gui.utils.Utils.link; public abstract class GuiEditKeyframe> extends AbstractGuiPopup implements Typeable { diff --git a/src/main/java/com/replaymod/simplepathing/gui/GuiKeyframeTimeline.java b/src/main/java/com/replaymod/simplepathing/gui/GuiKeyframeTimeline.java index d0285924..413cb501 100644 --- a/src/main/java/com/replaymod/simplepathing/gui/GuiKeyframeTimeline.java +++ b/src/main/java/com/replaymod/simplepathing/gui/GuiKeyframeTimeline.java @@ -1,6 +1,7 @@ package com.replaymod.simplepathing.gui; import com.replaymod.core.ReplayMod; +import com.replaymod.core.versions.MCVer; import com.replaymod.pathing.properties.CameraProperties; import com.replaymod.pathing.properties.SpectatorProperty; import com.replaymod.pathing.properties.TimestampProperty; @@ -16,11 +17,10 @@ import com.replaymod.simplepathing.SPTimeline.SPPath; import de.johni0702.minecraft.gui.GuiRenderer; import de.johni0702.minecraft.gui.element.advanced.AbstractGuiTimeline; import de.johni0702.minecraft.gui.function.Draggable; -import net.minecraft.client.Minecraft; import org.apache.commons.lang3.tuple.Pair; -import org.lwjgl.util.Point; -import org.lwjgl.util.ReadableDimension; -import org.lwjgl.util.ReadablePoint; +import de.johni0702.minecraft.gui.utils.lwjgl.Point; +import de.johni0702.minecraft.gui.utils.lwjgl.ReadableDimension; +import de.johni0702.minecraft.gui.utils.lwjgl.ReadablePoint; import java.util.Comparator; import java.util.Optional; @@ -46,7 +46,7 @@ public class GuiKeyframeTimeline extends AbstractGuiTimeline=11300 +//#else +//$$ import org.lwjgl.input.Keyboard; //#if MC>=10800 -import net.minecraftforge.fml.common.Loader; +//$$ import net.minecraftforge.fml.common.Loader; //#else //$$ import cpw.mods.fml.common.Loader; //#endif +//#endif import javax.annotation.Nonnull; import javax.annotation.Nullable; @@ -211,15 +214,9 @@ public class GuiPathing { }).addElements(null, timelineTime, timeline, scrollbar, zoomButtonPanel); public final GuiPanel panel = new GuiPanel() - .setLayout(new HorizontalLayout(HorizontalLayout.Alignment.CENTER).setSpacing(5)); - - { - panel.addElements(new HorizontalLayout.Data(0.5), playPauseButton); - if (Loader.isModLoaded("replaymod-render")) { - panel.addElements(new HorizontalLayout.Data(0.5), renderButton); - } - panel.addElements(new HorizontalLayout.Data(0.5), positionKeyframeButton, timeKeyframeButton, timelinePanel); - } + .setLayout(new HorizontalLayout(HorizontalLayout.Alignment.CENTER).setSpacing(5)) + .addElements(new HorizontalLayout.Data(0.5), + playPauseButton, renderButton, positionKeyframeButton, timeKeyframeButton, timelinePanel); /** * IGuiClickable dummy component that is inserted at a high level. diff --git a/src/main/java/com/replaymod/simplepathing/preview/PathPreview.java b/src/main/java/com/replaymod/simplepathing/preview/PathPreview.java index 9608c34b..578c5f9c 100644 --- a/src/main/java/com/replaymod/simplepathing/preview/PathPreview.java +++ b/src/main/java/com/replaymod/simplepathing/preview/PathPreview.java @@ -1,6 +1,6 @@ package com.replaymod.simplepathing.preview; -import com.replaymod.core.ReplayMod; +import com.replaymod.core.KeyBindingRegistry; import com.replaymod.core.SettingsRegistry; import com.replaymod.core.events.SettingsChangedEvent; import com.replaymod.replay.ReplayHandler; @@ -8,13 +8,17 @@ import com.replaymod.replay.events.ReplayCloseEvent; import com.replaymod.replay.events.ReplayOpenEvent; import com.replaymod.simplepathing.ReplayModSimplePathing; import com.replaymod.simplepathing.Setting; -import org.lwjgl.input.Keyboard; +//#if MC>=11300 +import net.minecraftforge.eventbus.api.SubscribeEvent; +//#else +//$$ import org.lwjgl.input.Keyboard; //#if MC>=10800 -import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; +//$$ import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; //#else //$$ import cpw.mods.fml.common.eventhandler.SubscribeEvent; //#endif +//#endif import static com.replaymod.core.versions.MCVer.*; @@ -30,12 +34,13 @@ public class PathPreview { public void register() { FML_BUS.register(this); + } - ReplayMod core = mod.getCore(); - mod.getCore().getKeyBindingRegistry().registerKeyBinding("replaymod.input.pathpreview", Keyboard.KEY_H, () -> { - SettingsRegistry registry = core.getSettingsRegistry(); - registry.set(Setting.PATH_PREVIEW, !registry.get(Setting.PATH_PREVIEW)); - registry.save(); + public void registerKeyBindings(KeyBindingRegistry registry) { + registry.registerKeyBinding("replaymod.input.pathpreview", Keyboard.KEY_H, () -> { + SettingsRegistry settings = mod.getCore().getSettingsRegistry(); + settings.set(Setting.PATH_PREVIEW, !settings.get(Setting.PATH_PREVIEW)); + settings.save(); }); } diff --git a/src/main/java/com/replaymod/simplepathing/preview/PathPreviewRenderer.java b/src/main/java/com/replaymod/simplepathing/preview/PathPreviewRenderer.java index 062d46d6..619f01a5 100644 --- a/src/main/java/com/replaymod/simplepathing/preview/PathPreviewRenderer.java +++ b/src/main/java/com/replaymod/simplepathing/preview/PathPreviewRenderer.java @@ -1,6 +1,7 @@ package com.replaymod.simplepathing.preview; import com.replaymod.core.ReplayMod; +import com.replaymod.core.versions.MCVer; import com.replaymod.pathing.properties.CameraProperties; import com.replaymod.pathing.properties.SpectatorProperty; import com.replaymod.pathing.properties.TimestampProperty; @@ -15,7 +16,6 @@ import com.replaymod.simplepathing.ReplayModSimplePathing; import com.replaymod.simplepathing.SPTimeline; import com.replaymod.simplepathing.gui.GuiPathing; import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.Tessellator; import net.minecraft.entity.Entity; import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.event.RenderWorldLastEvent; @@ -26,7 +26,11 @@ import org.lwjgl.opengl.GL11; //#if MC>=10800 import net.minecraft.client.renderer.GlStateManager; -import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; +//#if MC>=11300 +import net.minecraftforge.eventbus.api.SubscribeEvent; +//#else +//$$ import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; +//#endif //#else //$$ import com.replaymod.core.versions.MCVer.GlStateManager; //$$ import cpw.mods.fml.common.eventhandler.SubscribeEvent; @@ -40,7 +44,7 @@ import static com.replaymod.core.versions.MCVer.*; public class PathPreviewRenderer { private static final ResourceLocation CAMERA_HEAD = new ResourceLocation("replaymod", "camera_head.png"); - private static final Minecraft mc = Minecraft.getMinecraft(); + private static final Minecraft mc = MCVer.getMinecraft(); private static final int SLOW_PATH_COLOR = 0xffcccc; private static final int FAST_PATH_COLOR = 0x660000; @@ -239,7 +243,7 @@ public class PathPreviewRenderer { Keyframe keyframe) { BufferBuilder_setTranslation(0, 0, 0); - mc.renderEngine.bindTexture(TEXTURE); + MCVer.bindTexture(TEXTURE); float posX = 80f / ReplayMod.TEXTURE_SIZE; float posY = 0f; @@ -286,7 +290,7 @@ public class PathPreviewRenderer { Triple rot) { BufferBuilder_setTranslation(0, 0, 0); - mc.renderEngine.bindTexture(CAMERA_HEAD); + MCVer.bindTexture(CAMERA_HEAD); GL11.glPushMatrix(); diff --git a/versions/common.gradle b/versions/common.gradle index ad76535e..9c2120e1 100644 --- a/versions/common.gradle +++ b/versions/common.gradle @@ -278,7 +278,6 @@ sourceSets { exclude 'com/replaymod/extras' exclude 'com/replaymod/online' exclude 'com/replaymod/restrictions' - exclude 'com/replaymod/simplepathing' } } }