From 1470123ec9a70681db0896da5f11876a7b391d0a Mon Sep 17 00:00:00 2001 From: Jonas Herzig Date: Wed, 19 Dec 2018 10:11:08 +0100 Subject: [PATCH] Get replay module compiling on 1.13 --- .../java/com/replaymod/core/ReplayMod.java | 2 + .../replaymod/replay/FullReplaySender.java | 59 ++++-- .../replaymod/replay/InputReplayTimer.java | 2 + .../com/replaymod/replay/NoGuiScreenshot.java | 10 +- .../replaymod/replay/QuickReplaySender.java | 19 +- .../com/replaymod/replay/ReplayHandler.java | 181 ++++++++++++------ .../com/replaymod/replay/ReplayModReplay.java | 45 ++--- .../com/replaymod/replay/ReplaySender.java | 4 +- .../replaymod/replay/camera/CameraEntity.java | 86 +++++++-- .../camera/ClassicCameraController.java | 20 +- .../camera/SpectatorCameraController.java | 15 +- .../camera/VanillaCameraController.java | 14 +- .../replay/events/ReplayChatMessageEvent.java | 9 +- .../replay/events/ReplayCloseEvent.java | 6 +- .../events/ReplayDispatchKeypressesEvent.java | 9 +- .../replay/events/ReplayOpenEvent.java | 6 +- .../gui/overlay/GuiEditMarkerPopup.java | 9 +- .../replay/gui/overlay/GuiMarkerTimeline.java | 6 +- .../replay/gui/overlay/GuiReplayOverlay.java | 23 ++- .../replay/gui/screen/GuiReplayViewer.java | 45 ++--- .../replaymod/replay/handler/GuiHandler.java | 11 +- .../replay/mixin/MixinGuiSpectator.java | 3 +- .../replay/mixin/MixinParticleManager.java | 12 +- .../replay/mixin/MixinPlayerControllerMP.java | 25 ++- .../replay/mixin/MixinRenderItem.java | 29 ++- .../replay/mixin/MixinRenderLivingBase.java | 3 +- .../replay/mixin/MixinRenderManager.java | 7 +- .../MixinTileEntityEndPortalRenderer.java | 21 +- versions/common.gradle | 1 - 29 files changed, 476 insertions(+), 206 deletions(-) diff --git a/src/main/java/com/replaymod/core/ReplayMod.java b/src/main/java/com/replaymod/core/ReplayMod.java index 9e55c3d8..67cc6323 100755 --- a/src/main/java/com/replaymod/core/ReplayMod.java +++ b/src/main/java/com/replaymod/core/ReplayMod.java @@ -8,6 +8,7 @@ import com.replaymod.core.handler.MainMenuHandler; import com.replaymod.core.utils.OpenGLUtils; import com.replaymod.core.versions.MCVer; import com.replaymod.recording.ReplayModRecording; +import com.replaymod.replay.ReplayModReplay; import com.replaymod.replaystudio.util.I18n; import de.johni0702.minecraft.gui.container.GuiScreen; import lombok.Getter; @@ -138,6 +139,7 @@ public class ReplayMod { private final List modules = new ArrayList<>(); { modules.add(new ReplayModRecording(this)); + modules.add(new ReplayModReplay(this)); } public KeyBindingRegistry getKeyBindingRegistry() { diff --git a/src/main/java/com/replaymod/replay/FullReplaySender.java b/src/main/java/com/replaymod/replay/FullReplaySender.java index ec0a3693..c1b462e0 100755 --- a/src/main/java/com/replaymod/replay/FullReplaySender.java +++ b/src/main/java/com/replaymod/replay/FullReplaySender.java @@ -34,6 +34,10 @@ import net.minecraftforge.common.MinecraftForge; import org.apache.commons.io.FileUtils; import org.apache.commons.io.IOUtils; +//#if MC>=11300 +import net.minecraft.util.ResourceLocation; +//#endif + //#if MC>=11200 import com.replaymod.core.utils.WrappedTimer; //#endif @@ -49,7 +53,11 @@ import net.minecraft.util.text.ITextComponent; //#endif //#if MC>=10800 -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 import net.minecraftforge.fml.common.gameevent.TickEvent; //#else //$$ import cpw.mods.fml.common.eventhandler.SubscribeEvent; @@ -185,7 +193,7 @@ public class FullReplaySender extends ChannelDuplexHandler implements ReplaySend /** * The minecraft instance. */ - protected Minecraft mc = Minecraft.getMinecraft(); + protected Minecraft mc = getMinecraft(); /** * The total length of this replay in milliseconds. @@ -265,7 +273,7 @@ public class FullReplaySender extends ChannelDuplexHandler implements ReplaySend } /** - * Return a fake {@link Minecraft#getSystemTime()} value that respects slowdown/speedup/pause and works in both, + * Return a fake system tile in milliseconds value that respects slowdown/speedup/pause and works in both, * sync and async mode. * Note: For sync mode this returns the last value passed to {@link #sendPacketsTill(int)}. * @return The timestamp in milliseconds since the start of the replay @@ -308,7 +316,7 @@ public class FullReplaySender extends ChannelDuplexHandler implements ReplaySend if (world(mc) != null) { for (EntityPlayer playerEntity : playerEntities(world(mc))) { if (!playerEntity.addedToChunk && playerEntity instanceof EntityOtherPlayerMP) { - playerEntity.onLivingUpdate(); + // FIXME playerEntity.onLivingUpdate(); } } } @@ -361,7 +369,11 @@ public class FullReplaySender extends ChannelDuplexHandler implements ReplaySend World world = world(mc); for (int i = 0; i < world.loadedEntityList.size(); ++i) { Entity entity = loadedEntityList(world).get(i); - if (entity.isDead) { + //#if MC>=11300 + if (entity.removed) { + //#else + //$$ if (entity.isDead) { + //#endif int chunkX = entity.chunkCoordX; int chunkY = entity.chunkCoordZ; @@ -370,7 +382,12 @@ public class FullReplaySender extends ChannelDuplexHandler implements ReplaySend //#else //$$ if (entity.addedToChunk && world.getChunkProvider().chunkExists(chunkX, chunkY)) { //#endif - world.getChunkFromChunkCoords(chunkX, chunkY).removeEntity(entity); + //#if MC>=11300 + //#else + world.getChunk(chunkX, chunkY).removeEntity(entity); + //#else + //$$ world.getChunkFromChunkCoords(chunkX, chunkY).removeEntity(entity); + //#endif } world.loadedEntityList.remove(i--); @@ -418,11 +435,15 @@ public class FullReplaySender extends ChannelDuplexHandler implements ReplaySend //$$ if (p instanceof S3FPacketCustomPayload) { //$$ S3FPacketCustomPayload packet = (S3FPacketCustomPayload) p; //#endif + //#if MC>=11300 + ResourceLocation channelName = packet.getChannelName(); + //#else //#if MC>=10800 - String channelName = packet.getChannelName(); + //$$ String channelName = packet.getChannelName(); //#else //$$ String channelName = packet.func_149169_c(); //#endif + //#endif if (Restrictions.PLUGIN_CHANNEL.equals(channelName)) { final String unknown = replayHandler.getRestrictions().handle(packet); if (unknown == null) { @@ -459,7 +480,13 @@ public class FullReplaySender extends ChannelDuplexHandler implements ReplaySend //$$ IChatComponent reason = ((S40PacketDisconnect) p).func_149165_c(); //#endif //#endif - if ("Please update to view this replay.".equals(reason.getUnformattedText())) { + //#if MC>=11300 + // FIXME or is it getString? + String message = reason.getUnformattedComponentText(); + //#else + //$$ String message = reason.getUnformattedText(); + //#endif + if ("Please update to view this replay.".equals(message)) { // This version of the mod supports replay restrictions so we are allowed // to remove this packet. return null; @@ -475,6 +502,7 @@ public class FullReplaySender extends ChannelDuplexHandler implements ReplaySend //$$ if (p instanceof S3FPacketCustomPayload) { //$$ S3FPacketCustomPayload packet = (S3FPacketCustomPayload) p; //#endif + /* FIXME //#if MC>=10800 String channelName = packet.getChannelName(); //#else @@ -483,6 +511,7 @@ public class FullReplaySender extends ChannelDuplexHandler implements ReplaySend if ("MC|BOpen".equals(channelName)) { return null; } + */ //#if MC>=10800 } @@ -514,7 +543,7 @@ public class FullReplaySender extends ChannelDuplexHandler implements ReplaySend if (!file.exists()) { IOUtils.copy(replayFile.getResourcePack(hash).get(), new FileOutputStream(file)); } - setServerResourcePack(mc.getResourcePackRepository(), file); + // FIXME setServerResourcePack(mc.getResourcePackRepository(), file); } } return null; @@ -540,7 +569,11 @@ public class FullReplaySender extends ChannelDuplexHandler implements ReplaySend //#if MC>=10800 int dimension = packet.getDimension(); EnumDifficulty difficulty = packet.getDifficulty(); - int maxPlayers = packet.getMaxPlayers(); + //#if MC>=11300 + int maxPlayers = 0;// FIXME needs AT packet.maxPlayers; + //#else + //$$ int maxPlayers = packet.getMaxPlayers(); + //#endif WorldType worldType = packet.getWorldType(); //#if MC>=10904 @@ -1064,7 +1097,11 @@ public class FullReplaySender extends ChannelDuplexHandler implements ReplaySend // Needs to be called at least 4 times thanks to // EntityOtherPlayerMP#otherPlayerMPPosRotationIncrements (max vanilla value is 3) for (int i = 0; i < 4; i++) { - entity.onUpdate(); + //#if MC>=11300 + entity.tick(); + //#else + //$$ entity.onUpdate(); + //#endif } // Check whether the entity has left the chunk diff --git a/src/main/java/com/replaymod/replay/InputReplayTimer.java b/src/main/java/com/replaymod/replay/InputReplayTimer.java index 4baa0f1c..33c023a1 100644 --- a/src/main/java/com/replaymod/replay/InputReplayTimer.java +++ b/src/main/java/com/replaymod/replay/InputReplayTimer.java @@ -1,3 +1,4 @@ +/* FIXME package com.replaymod.replay; import com.replaymod.core.utils.WrappedTimer; @@ -264,3 +265,4 @@ public class InputReplayTimer extends WrappedTimer { //$$ public static class RunScheduledTasks extends Event {} //#endif } +*/ diff --git a/src/main/java/com/replaymod/replay/NoGuiScreenshot.java b/src/main/java/com/replaymod/replay/NoGuiScreenshot.java index 88a8cc3a..5aec7e4e 100644 --- a/src/main/java/com/replaymod/replay/NoGuiScreenshot.java +++ b/src/main/java/com/replaymod/replay/NoGuiScreenshot.java @@ -38,6 +38,12 @@ public class NoGuiScreenshot { return; } + //#if MC>=11300 + int frameWidth = mc.mainWindow.getFramebufferWidth(), frameHeight = mc.mainWindow.getFramebufferHeight(); + //#else + //$$ int frameWidth = mc.displayWidth, frameHeight = mc.displayHeight; + //#endif + final boolean guiHidden = mc.gameSettings.hideGUI; try { mc.gameSettings.hideGUI = true; @@ -57,7 +63,7 @@ public class NoGuiScreenshot { mc.getFramebuffer().unbindFramebuffer(); GlStateManager.popMatrix(); GlStateManager.pushMatrix(); - mc.getFramebuffer().framebufferRender(mc.displayWidth, mc.displayHeight); + mc.getFramebuffer().framebufferRender(frameWidth, frameHeight); GlStateManager.popMatrix(); } catch (Throwable t) { future.setException(t); @@ -73,7 +79,7 @@ public class NoGuiScreenshot { // disk for better maintainability File tmpFolder = Files.createTempDir(); try { - ScreenShotHelper.saveScreenshot(tmpFolder, "tmp", mc.displayWidth, mc.displayHeight, mc.getFramebuffer()); + ScreenShotHelper.saveScreenshot(tmpFolder, "tmp", frameWidth, frameHeight, mc.getFramebuffer()); File screenshotFile = new File(tmpFolder, "screenshots/tmp"); BufferedImage image = ImageIO.read(screenshotFile); int imageWidth = image.getWidth(); diff --git a/src/main/java/com/replaymod/replay/QuickReplaySender.java b/src/main/java/com/replaymod/replay/QuickReplaySender.java index 8ec020a1..f5bf7543 100644 --- a/src/main/java/com/replaymod/replay/QuickReplaySender.java +++ b/src/main/java/com/replaymod/replay/QuickReplaySender.java @@ -62,7 +62,6 @@ import net.minecraft.network.EnumConnectionState; import net.minecraft.network.EnumPacketDirection; import net.minecraft.network.Packet; import net.minecraft.network.PacketBuffer; -import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import net.minecraftforge.fml.common.gameevent.TickEvent; import javax.annotation.Nullable; @@ -85,11 +84,18 @@ import java.util.function.Consumer; import java.util.zip.Deflater; import java.util.zip.Inflater; +//#if MC>=11300 +import net.minecraftforge.eventbus.api.SubscribeEvent; +//#else +//$$ import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; +//#endif + //#if MC>=11200 import com.replaymod.core.utils.WrappedTimer; //#endif import static com.replaymod.core.versions.MCVer.FML_BUS; +import static com.replaymod.core.versions.MCVer.getMinecraft; import static com.replaymod.replay.ReplayModReplay.LOGGER; /** @@ -104,7 +110,7 @@ public class QuickReplaySender extends ChannelHandlerAdapter implements ReplaySe private static final String CACHE_INDEX_ENTRY = "quickModeCacheIndex.bin"; private static final int CACHE_VERSION = 0; - private final Minecraft mc = Minecraft.getMinecraft(); + private final Minecraft mc = getMinecraft(); private final ReplayModReplay mod; private final ReplayFile replayFile; @@ -980,8 +986,13 @@ public class QuickReplaySender extends ChannelHandlerAdapter implements ReplaySe for (BlockChange blockChange : blockChanges) { NetUtil.writePosition(cacheOut, blockChange.pos); index += 8; - index += writeVarInt(cacheOut, blockChange.from.getId() << 4 | blockChange.from.getData() & 15); - index += writeVarInt(cacheOut, blockChange.to.getId() << 4 | blockChange.to.getData() & 15); + //#if MC>=11300 + index += writeVarInt(cacheOut, blockChange.from.getId()); + index += writeVarInt(cacheOut, blockChange.to.getId()); + //#else + //$$ index += writeVarInt(cacheOut, blockChange.from.getId() << 4 | blockChange.from.getData() & 15); + //$$ index += writeVarInt(cacheOut, blockChange.to.getId() << 4 | blockChange.to.getData() & 15); + //#endif } } diff --git a/src/main/java/com/replaymod/replay/ReplayHandler.java b/src/main/java/com/replaymod/replay/ReplayHandler.java index 3317045b..1ac42f97 100755 --- a/src/main/java/com/replaymod/replay/ReplayHandler.java +++ b/src/main/java/com/replaymod/replay/ReplayHandler.java @@ -21,19 +21,25 @@ import de.johni0702.minecraft.gui.popup.AbstractGuiPopup; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.embedded.EmbeddedChannel; import net.minecraft.client.Minecraft; -import net.minecraft.client.entity.EntityOtherPlayerMP; import net.minecraft.client.gui.GuiScreen; -import net.minecraft.client.gui.ScaledResolution; import net.minecraft.client.resources.I18n; import net.minecraft.crash.CrashReport; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.network.NetworkManager; -import org.lwjgl.opengl.Display; import java.io.IOException; import java.util.*; +//#if MC>=11300 +import net.minecraft.client.MainWindow; +import net.minecraft.entity.EntityLivingBase; +//#else +//$$ import net.minecraft.client.entity.EntityOtherPlayerMP; +//$$ import net.minecraft.client.gui.ScaledResolution; +//$$ import org.lwjgl.opengl.Display; +//#endif + //#if MC<10904 //$$ import de.johni0702.minecraft.gui.element.GuiLabel; //$$ import de.johni0702.minecraft.gui.popup.GuiInfoPopup; @@ -41,11 +47,16 @@ import java.util.*; //#endif //#if MC>=10800 -import com.mojang.authlib.GameProfile; -import net.minecraft.client.network.NetHandlerPlayClient; import net.minecraft.network.EnumPacketDirection; -import net.minecraftforge.fml.client.FMLClientHandler; -import net.minecraftforge.fml.common.network.handshake.NetworkDispatcher; +//#if MC>=11300 +import net.minecraft.client.network.NetHandlerLoginClient; +import net.minecraftforge.fml.network.NetworkHooks; +//#else +//$$ import com.mojang.authlib.GameProfile; +//$$ import net.minecraft.client.network.NetHandlerPlayClient; +//$$ import net.minecraftforge.fml.client.FMLClientHandler; +//$$ import net.minecraftforge.fml.common.network.handshake.NetworkDispatcher; +//#endif import static net.minecraft.client.renderer.GlStateManager.*; //#else @@ -73,7 +84,7 @@ import static org.lwjgl.opengl.GL11.GL_DEPTH_BUFFER_BIT; public class ReplayHandler { - private static Minecraft mc = Minecraft.getMinecraft(); + private static Minecraft mc = getMinecraft(); /** * The file currently being played. @@ -146,7 +157,11 @@ public class ReplayHandler { // Force re-creation of camera entity by unloading the previous world mc.addScheduledTask(() -> { - mc.setIngameNotInFocus(); + //#if MC>=11300 + mc.mouseHelper.ungrabMouse(); + //#else + //$$ mc.setIngameNotInFocus(); + //#endif mc.loadWorld(null); }); @@ -171,7 +186,11 @@ public class ReplayHandler { channel.close().awaitUninterruptibly(); if (player(mc) instanceof CameraEntity) { - player(mc).setDead(); + //#if MC>=11300 + player(mc).remove(); + //#else + //$$ player(mc).setDead(); + //#endif } if (world(mc) != null) { @@ -207,21 +226,32 @@ public class ReplayHandler { t.printStackTrace(); } }; - NetHandlerPlayClient netHandlerPlayClient = - new NetHandlerPlayClient(mc, null, networkManager, new GameProfile(UUID.randomUUID(), "Player")); - networkManager.setNetHandler(netHandlerPlayClient); - FMLClientHandler.instance().setPlayClient(netHandlerPlayClient); - - //#if MC>=11200 + //#if MC>=11300 channel = new EmbeddedChannel(); - NetworkDispatcher networkDispatcher = new NetworkDispatcher(networkManager); - channel.attr(NetworkDispatcher.FML_DISPATCHER).set(networkDispatcher); channel.pipeline().addFirst("ReplayModReplay_replaySender", fullReplaySender); channel.pipeline().addFirst("ReplayModReplay_quickReplaySender", quickReplaySender); channel.pipeline().addLast("packet_handler", networkManager); channel.pipeline().fireChannelActive(); - networkDispatcher.clientToServerHandshake(); + + networkManager.setNetHandler(new NetHandlerLoginClient(networkManager, mc, null, it -> {})); + NetworkHooks.registerClientLoginChannel(networkManager); + //#else + //$$ NetHandlerPlayClient netHandlerPlayClient = + //$$ new NetHandlerPlayClient(mc, null, networkManager, new GameProfile(UUID.randomUUID(), "Player")); + //$$ networkManager.setNetHandler(netHandlerPlayClient); + //$$ FMLClientHandler.instance().setPlayClient(netHandlerPlayClient); + //$$ + //#if MC>=11200 + //$$ channel = new EmbeddedChannel(); + //$$ NetworkDispatcher networkDispatcher = new NetworkDispatcher(networkManager); + //$$ channel.attr(NetworkDispatcher.FML_DISPATCHER).set(networkDispatcher); + //$$ + //$$ channel.pipeline().addFirst("ReplayModReplay_replaySender", fullReplaySender); + //$$ channel.pipeline().addFirst("ReplayModReplay_quickReplaySender", quickReplaySender); + //$$ channel.pipeline().addLast("packet_handler", networkManager); + //$$ channel.pipeline().fireChannelActive(); + //$$ networkDispatcher.clientToServerHandshake(); //#else //$$ channel = new EmbeddedChannel(networkManager); //$$ NetworkDispatcher networkDispatcher = new NetworkDispatcher(networkManager); @@ -234,6 +264,7 @@ public class ReplayHandler { //$$ channel.pipeline().addAfter("ReplayModReplay_replaySender", "fml:packet_handler", networkDispatcher); //$$ channel.pipeline().fireChannelActive(); //#endif + //#endif //#else //$$ NetworkManager networkManager = new NetworkManager(true) { //$$ @Override @@ -520,12 +551,7 @@ public class ReplayHandler { // Update all entity positions (especially prev/lastTick values) for (Entity entity : loadedEntityList(world(mc))) { - if (entity instanceof EntityOtherPlayerMP) { - EntityOtherPlayerMP e = (EntityOtherPlayerMP) entity; - e.setPosition(e.otherPlayerMPX, e.otherPlayerMPY, e.otherPlayerMPZ); - e.rotationYaw = (float) e.otherPlayerMPYaw; - e.rotationPitch = (float) e.otherPlayerMPPitch; - } + skipTeleportInterpolation(entity); entity.lastTickPosX = entity.prevPosX = entity.posX; entity.lastTickPosY = entity.prevPosY = entity.posY; entity.lastTickPosZ = entity.prevPosZ = entity.posZ; @@ -534,23 +560,22 @@ public class ReplayHandler { } // Run previous tick - try { - mc.runTick(); - } catch (IOException e) { - throw new RuntimeException(e); - } + //#if MC>=11300 + mc.runTick(); + //#else + //$$ try { + //$$ mc.runTick(); + //$$ } catch (IOException e) { + //$$ throw new RuntimeException(e); + //$$ } + //#endif // Jump to target tick quickReplaySender.sendPacketsTill(targetTime); // Immediately apply player teleport interpolation for (Entity entity : loadedEntityList(world(mc))) { - if (entity instanceof EntityOtherPlayerMP) { - EntityOtherPlayerMP e = (EntityOtherPlayerMP) entity; - e.setPosition(e.otherPlayerMPX, e.otherPlayerMPY, e.otherPlayerMPZ); - e.rotationYaw = (float) e.otherPlayerMPYaw; - e.rotationPitch = (float) e.otherPlayerMPPitch; - } + skipTeleportInterpolation(entity); } return; } @@ -583,7 +608,11 @@ public class ReplayHandler { // Render our please-wait-screen GuiScreen guiScreen = new GuiScreen() { @Override - public void drawScreen(int mouseX, int mouseY, float partialTicks) { + //#if MC>=11300 + public void render(int mouseX, int mouseY, float partialTicks) { + //#else + //$$ public void drawScreen(int mouseX, int mouseY, float partialTicks) { + //#endif drawBackground(0); drawCenteredString(getFontRenderer(mc), I18n.format("replaymod.gui.pleasewait"), width / 2, height / 2, 0xffffffff); @@ -598,47 +627,68 @@ public class ReplayHandler { clear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); enableTexture2D(); mc.getFramebuffer().bindFramebuffer(true); - mc.entityRenderer.setupOverlayRendering(); + //#if MC>=11300 + mc.mainWindow.setupOverlayRendering(); + //#else + //$$ mc.entityRenderer.setupOverlayRendering(); + //#endif - ScaledResolution resolution = newScaledResolution(mc); + //#if MC>=11300 + MainWindow + //#else + //$$ ScaledResolution + //#endif + resolution = newScaledResolution(mc); guiScreen.setWorldAndResolution(mc, resolution.getScaledWidth(), resolution.getScaledHeight()); - guiScreen.drawScreen(0, 0, 0); + //#if MC>=11300 + guiScreen.render(0, 0, 0); + //#else + //$$ guiScreen.drawScreen(0, 0, 0); + //#endif mc.getFramebuffer().unbindFramebuffer(); popMatrix(); pushMatrix(); - mc.getFramebuffer().framebufferRender(mc.displayWidth, mc.displayHeight); + //#if MC>=11300 + mc.getFramebuffer().framebufferRender(mc.mainWindow.getFramebufferWidth(), mc.mainWindow.getFramebufferHeight()); + //#else + //$$ mc.getFramebuffer().framebufferRender(mc.displayWidth, mc.displayHeight); + //#endif popMatrix(); - Display.update(); + //#if MC>=11300 + mc.mainWindow.update(true); + //#else + //$$ Display.update(); + //#endif // Send the packets replaySender.sendPacketsTill(targetTime); replaySender.setAsyncMode(true); replaySender.setReplaySpeed(0); - getConnection(mc).getNetworkManager().processReceivedPackets(); + getConnection(mc).getNetworkManager() + //#if MC>=11300 + .tick(); + //#else + //$$ .processReceivedPackets(); + //#endif for (Entity entity : loadedEntityList(world(mc))) { - if (entity instanceof EntityOtherPlayerMP) { - EntityOtherPlayerMP e = (EntityOtherPlayerMP) entity; - e.setPosition(e.otherPlayerMPX, e.otherPlayerMPY, e.otherPlayerMPZ); - e.rotationYaw = (float) e.otherPlayerMPYaw; - e.rotationPitch = (float) e.otherPlayerMPPitch; - } + skipTeleportInterpolation(entity); entity.lastTickPosX = entity.prevPosX = entity.posX; entity.lastTickPosY = entity.prevPosY = entity.posY; entity.lastTickPosZ = entity.prevPosZ = entity.posZ; entity.prevRotationYaw = entity.rotationYaw; entity.prevRotationPitch = entity.rotationPitch; } - //#if MC>=10800 - try { - mc.runTick(); - } catch (IOException e) { - e.printStackTrace(); // This should never be thrown but whatever - } + //#if MC>=10800 && MC<11300 + //$$ try { + //$$ mc.runTick(); + //$$ } catch (IOException e) { + //$$ e.printStackTrace(); // This should never be thrown but whatever + //$$ } //#else - //$$ mc.runTick(); + mc.runTick(); //#endif //finally, updating the camera's position (which is not done by the sync jumping) @@ -649,4 +699,23 @@ public class ReplayHandler { } } } + + private void skipTeleportInterpolation(Entity entity) { + //#if MC>=11300 + if (entity instanceof EntityLivingBase) { + EntityLivingBase e = (EntityLivingBase) entity; + // FIXME + // e.setPosition(e.otherPlayerMPX, e.otherPlayerMPY, e.otherPlayerMPZ); + // e.rotationYaw = (float) e.otherPlayerMPYaw; + // e.rotationPitch = (float) e.otherPlayerMPPitch; + } + //#else + //$$ if (entity instanceof EntityOtherPlayerMP) { + //$$ EntityOtherPlayerMP e = (EntityOtherPlayerMP) entity; + //$$ e.setPosition(e.otherPlayerMPX, e.otherPlayerMPY, e.otherPlayerMPZ); + //$$ e.rotationYaw = (float) e.otherPlayerMPYaw; + //$$ e.rotationPitch = (float) e.otherPlayerMPPitch; + //$$ } + //#endif + } } diff --git a/src/main/java/com/replaymod/replay/ReplayModReplay.java b/src/main/java/com/replaymod/replay/ReplayModReplay.java index 0032acea..b1f087ba 100644 --- a/src/main/java/com/replaymod/replay/ReplayModReplay.java +++ b/src/main/java/com/replaymod/replay/ReplayModReplay.java @@ -6,6 +6,7 @@ import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.ListenableFuture; import com.replaymod.core.ReplayMod; import com.replaymod.core.utils.ModCompat; +import com.replaymod.core.versions.MCVer; import com.replaymod.replay.camera.CameraController; import com.replaymod.replay.camera.CameraControllerRegistry; import com.replaymod.replay.camera.CameraEntity; @@ -19,16 +20,20 @@ import com.replaymod.replaystudio.replay.ReplayFile; import com.replaymod.replaystudio.replay.ZipReplayFile; import com.replaymod.replaystudio.studio.ReplayStudio; import net.minecraft.client.Minecraft; +import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import org.lwjgl.input.Keyboard; + +//#if MC>=11300 +import com.replaymod.core.versions.MCVer.Keyboard; +//#else +//$$ import org.lwjgl.input.Keyboard; +//#endif //#if MC>=10800 -import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.event.FMLInitializationEvent; import net.minecraftforge.fml.common.event.FMLPostInitializationEvent; import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; //#else -//$$ import cpw.mods.fml.common.Mod; //$$ import cpw.mods.fml.common.event.FMLInitializationEvent; //$$ import cpw.mods.fml.common.event.FMLPostInitializationEvent; //$$ import cpw.mods.fml.common.event.FMLPreInitializationEvent; @@ -40,25 +45,16 @@ import java.io.IOException; import java.util.ArrayList; import java.util.Optional; -@Mod(modid = ReplayModReplay.MOD_ID, - version = "@MOD_VERSION@", - acceptedMinecraftVersions = "@MC_VERSION@", - acceptableRemoteVersions = "*", - //#if MC>=10800 - clientSideOnly = true, - //#endif - useMetadata = true) -public class ReplayModReplay { - public static final String MOD_ID = "replaymod-replay"; +public class ReplayModReplay extends ReplayMod.Module { - @Mod.Instance(MOD_ID) + { instance = this; } public static ReplayModReplay instance; private ReplayMod core; private final CameraControllerRegistry cameraControllerRegistry = new CameraControllerRegistry(); - public static Logger LOGGER; + public static Logger LOGGER = LogManager.getLogger(); protected ReplayHandler replayHandler; @@ -66,14 +62,15 @@ public class ReplayModReplay { return replayHandler; } - @Mod.EventHandler - public void preInit(FMLPreInitializationEvent event) { - LOGGER = event.getModLog(); - core = ReplayMod.instance; + public ReplayModReplay(ReplayMod core) { + this.core = core; + } + @Override + public void preInit(FMLPreInitializationEvent event) { core.getSettingsRegistry().register(Setting.class); - core.getKeyBindingRegistry().registerKeyBinding("replaymod.input.marker", Keyboard.KEY_M, new Runnable() { + core.getKeyBindingRegistry().registerKeyBinding("replaymod.input.marker", MCVer.Keyboard.KEY_M, new Runnable() { @Override public void run() { if (replayHandler != null ) { @@ -109,7 +106,7 @@ public class ReplayModReplay { @Override public void run() { if (replayHandler != null) { - Minecraft mc = Minecraft.getMinecraft(); + Minecraft mc = MCVer.getMinecraft(); ListenableFuture future = NoGuiScreenshot.take(mc, 1280, 720); Futures.addCallback(future, new FutureCallback() { @Override @@ -181,15 +178,15 @@ public class ReplayModReplay { }); } - @Mod.EventHandler + @Override public void init(FMLInitializationEvent event) { Minecraft mc = core.getMinecraft(); - mc.timer = new InputReplayTimer(mc.timer, this); + // FIXME mc.timer = new InputReplayTimer(mc.timer, this); new GuiHandler(this).register(); } - @Mod.EventHandler + @Override public void postInit(FMLPostInitializationEvent event) { Setting.CAMERA.setChoices(new ArrayList<>(cameraControllerRegistry.getControllers())); } diff --git a/src/main/java/com/replaymod/replay/ReplaySender.java b/src/main/java/com/replaymod/replay/ReplaySender.java index 8e2d63d4..53a23c62 100644 --- a/src/main/java/com/replaymod/replay/ReplaySender.java +++ b/src/main/java/com/replaymod/replay/ReplaySender.java @@ -2,6 +2,8 @@ package com.replaymod.replay; import net.minecraft.client.Minecraft; +import static com.replaymod.core.versions.MCVer.getMinecraft; + public interface ReplaySender { int currentTimeStamp(); @@ -10,7 +12,7 @@ public interface ReplaySender { * @return {@code true} if it is paused, {@code false} otherwise */ public default boolean paused() { - Minecraft mc = Minecraft.getMinecraft(); + Minecraft mc = getMinecraft(); //#if MC>=11200 return mc.timer.tickLength == Float.POSITIVE_INFINITY; //#else diff --git a/src/main/java/com/replaymod/replay/camera/CameraEntity.java b/src/main/java/com/replaymod/replay/camera/CameraEntity.java index fecd2ef0..cf769179 100755 --- a/src/main/java/com/replaymod/replay/camera/CameraEntity.java +++ b/src/main/java/com/replaymod/replay/camera/CameraEntity.java @@ -3,6 +3,7 @@ package com.replaymod.replay.camera; import com.replaymod.core.ReplayMod; import com.replaymod.core.events.SettingsChangedEvent; import com.replaymod.core.utils.Utils; +import com.replaymod.core.versions.MCVer; import com.replaymod.replay.ReplayModReplay; import com.replaymod.replay.Setting; import com.replaymod.replay.events.ReplayChatMessageEvent; @@ -26,10 +27,18 @@ import net.minecraftforge.client.event.RenderGameOverlayEvent; import net.minecraftforge.client.event.RenderHandEvent; import net.minecraftforge.common.MinecraftForge; +//#if MC>=11300 +import net.minecraft.util.math.RayTraceFluidMode; +//#endif + //#if MC>=10904 import net.minecraft.inventory.EntityEquipmentSlot; //#if MC>=11200 -import net.minecraft.stats.RecipeBook; +//#if MC>=11300 +import net.minecraft.client.util.RecipeBookClient; +//#else +//$$ import net.minecraft.stats.RecipeBook; +//#endif //#endif import net.minecraft.stats.StatisticsManager; import net.minecraft.util.EnumHand; @@ -45,9 +54,14 @@ import net.minecraft.util.text.ITextComponent; //#if MC>=10800 import net.minecraft.client.entity.EntityPlayerSP; -import net.minecraftforge.fml.common.eventhandler.EventPriority; -import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import net.minecraftforge.fml.common.gameevent.TickEvent; +//#if MC>=11300 +import net.minecraftforge.eventbus.api.EventPriority; +import net.minecraftforge.eventbus.api.SubscribeEvent; +//#else +//$$ import net.minecraftforge.fml.common.eventhandler.EventPriority; +//$$ import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; +//#endif //#else //$$ import cpw.mods.fml.common.eventhandler.EventPriority; //$$ import cpw.mods.fml.common.eventhandler.SubscribeEvent; @@ -97,9 +111,13 @@ public class CameraEntity */ private final EventHandler eventHandler = new EventHandler(); + //#if MC>=11300 + public CameraEntity(Minecraft mcIn, World worldIn, NetHandlerPlayClient netHandlerPlayClient, StatisticsManager statisticsManager, RecipeBookClient recipeBookClient) { + super(mcIn, worldIn, netHandlerPlayClient, statisticsManager, recipeBookClient); + //#else //#if MC>=11200 - public CameraEntity(Minecraft mcIn, World worldIn, NetHandlerPlayClient netHandlerPlayClient, StatisticsManager statisticsManager, RecipeBook recipeBook) { - super(mcIn, worldIn, netHandlerPlayClient, statisticsManager, recipeBook); + //$$ public CameraEntity(Minecraft mcIn, World worldIn, NetHandlerPlayClient netHandlerPlayClient, StatisticsManager statisticsManager, RecipeBook recipeBook) { + //$$ super(mcIn, worldIn, netHandlerPlayClient, statisticsManager, recipeBook); //#else //#if MC>=10904 //$$ public CameraEntity(Minecraft mcIn, World worldIn, NetHandlerPlayClient netHandlerPlayClient, StatisticsManager statisticsManager) { @@ -113,6 +131,7 @@ public class CameraEntity //$$ super(mcIn, worldIn, session, netHandlerPlayClient, statFileWriter); //#endif //#endif + //#endif //#endif FORGE_BUS.register(eventHandler); FML_BUS.register(eventHandler); @@ -196,7 +215,11 @@ public class CameraEntity private void updateBoundingBox() { //#if MC>=10800 - setEntityBoundingBox(new AxisAlignedBB( + //#if MC>=11300 + setBoundingBox(new AxisAlignedBB( + //#else + //$$ setEntityBoundingBox(new AxisAlignedBB( + //#endif //#else //$$ this.boundingBox.setBB(AxisAlignedBB.getBoundingBox( //#endif @@ -205,7 +228,11 @@ public class CameraEntity } @Override - public void onUpdate() { + //#if MC>=11300 + public void tick() { + //#else + //$$ public void onUpdate() { + //#endif //#if MC>=10800 Entity view = getRenderViewEntity(mc); //#else @@ -262,10 +289,12 @@ public class CameraEntity return falseUnlessSpectating(Entity::isEntityInsideOpaqueBlock); // Make sure no suffocation overlay is rendered } + /* FIXME @Override public boolean isInsideOfMaterial(Material materialIn) { return falseUnlessSpectating(e -> e.isInsideOfMaterial(materialIn)); // Make sure no overlays are rendered } + */ //#if MC>=10800 @Override @@ -405,19 +434,33 @@ public class CameraEntity return super.isHandActive(); } + //#if MC>=11300 @Override - public RayTraceResult rayTrace(double p_174822_1_, float p_174822_3_) { - RayTraceResult pos = super.rayTrace(p_174822_1_, 1f); + public RayTraceResult rayTrace(double blockReachDistance, float partialTicks, RayTraceFluidMode p_174822_4_) { + RayTraceResult pos = super.rayTrace(blockReachDistance, partialTicks, p_174822_4_); // Make sure we can never look at blocks (-> no outline) - if(pos != null && pos.typeOfHit == RayTraceResult.Type.BLOCK) { - pos.typeOfHit = RayTraceResult.Type.MISS; + if(pos != null && pos.type == RayTraceResult.Type.BLOCK) { + pos.type = RayTraceResult.Type.MISS; } return pos; } //#else //$$ @Override + //$$ public RayTraceResult rayTrace(double p_174822_1_, float p_174822_3_) { + //$$ RayTraceResult pos = super.rayTrace(p_174822_1_, 1f); + //$$ + //$$ // Make sure we can never look at blocks (-> no outline) + //$$ if(pos != null && pos.typeOfHit == RayTraceResult.Type.BLOCK) { + //$$ pos.typeOfHit = RayTraceResult.Type.MISS; + //$$ } + //$$ + //$$ return pos; + //$$ } + //#endif + //#else + //$$ @Override //$$ public MovingObjectPosition rayTrace(double p_174822_1_, float p_174822_3_) { //$$ MovingObjectPosition pos = super.rayTrace(p_174822_1_, 1f); //$$ @@ -430,15 +473,22 @@ public class CameraEntity //$$ } //#endif + /* FIXME @Override public void openGui(Object mod, int modGuiId, World world, int x, int y, int z) { // Do not open any block GUIs for the camera entities // Note: Vanilla GUIs are filtered out on a packet level, this only applies to mod GUIs } + */ @Override - public void setDead() { - super.setDead(); + //#if MC>=11300 + public void remove() { + super.remove(); + //#else + //$$ public void setDead() { + //$$ super.setDead(); + //#endif FORGE_BUS.unregister(eventHandler); FML_BUS.unregister(eventHandler); } @@ -530,11 +580,11 @@ public class CameraEntity @SubscribeEvent public void preCrosshairRender(RenderGameOverlayEvent.Pre event) { // The crosshair should only render if targeted entity can actually be spectated - if (getType(event) == RenderGameOverlayEvent.ElementType.CROSSHAIRS) { + if (MCVer.getType(event) == RenderGameOverlayEvent.ElementType.CROSSHAIRS) { event.setCanceled(!canSpectate(mc.pointedEntity)); } // Hotbar should never be rendered - if (getType(event) == RenderGameOverlayEvent.ElementType.HOTBAR) { + if (MCVer.getType(event) == RenderGameOverlayEvent.ElementType.HOTBAR) { event.setCanceled(true); } } @@ -568,12 +618,14 @@ public class CameraEntity lastHandRendered = player; //#if MC>=10904 + /* FIXME needs AT mc.entityRenderer.itemRenderer.prevEquippedProgressMainHand = 1; mc.entityRenderer.itemRenderer.prevEquippedProgressOffHand = 1; mc.entityRenderer.itemRenderer.equippedProgressMainHand = 1; mc.entityRenderer.itemRenderer.equippedProgressOffHand = 1; mc.entityRenderer.itemRenderer.itemStackMainHand = player.getItemStackFromSlot(EntityEquipmentSlot.MAINHAND); mc.entityRenderer.itemRenderer.itemStackOffHand = player.getItemStackFromSlot(EntityEquipmentSlot.OFFHAND); + */ //#else //$$ mc.entityRenderer.itemRenderer.prevEquippedProgress = 1; //$$ mc.entityRenderer.itemRenderer.equippedProgress = 1; @@ -605,7 +657,7 @@ public class CameraEntity @SubscribeEvent public void preRenderGameOverlay(RenderGameOverlayEvent.Pre event) { - switch (getType(event)) { + switch (MCVer.getType(event)) { case ALL: heldItemTooltipsWasTrue = mc.gameSettings.heldItemTooltips; mc.gameSettings.heldItemTooltips = false; @@ -641,7 +693,7 @@ public class CameraEntity @SubscribeEvent public void postRenderGameOverlay(RenderGameOverlayEvent.Post event) { - if (getType(event) != RenderGameOverlayEvent.ElementType.ALL) return; + if (MCVer.getType(event) != RenderGameOverlayEvent.ElementType.ALL) return; mc.gameSettings.heldItemTooltips = heldItemTooltipsWasTrue; } } diff --git a/src/main/java/com/replaymod/replay/camera/ClassicCameraController.java b/src/main/java/com/replaymod/replay/camera/ClassicCameraController.java index 60d168c2..e9b609cd 100644 --- a/src/main/java/com/replaymod/replay/camera/ClassicCameraController.java +++ b/src/main/java/com/replaymod/replay/camera/ClassicCameraController.java @@ -1,9 +1,8 @@ package com.replaymod.replay.camera; -import net.minecraft.client.Minecraft; import net.minecraft.client.settings.KeyBinding; -import org.lwjgl.Sys; -import org.lwjgl.util.vector.Vector3f; + +import javax.vecmath.Vector3f; import static com.replaymod.core.versions.MCVer.*; @@ -22,7 +21,7 @@ public class ClassicCameraController implements CameraController { private Vector3f direction; private Vector3f dirBefore; private double motion; - private long lastCall = Sys.getTime(); + private long lastCall = System.currentTimeMillis(); private boolean speedup = false; @@ -34,7 +33,7 @@ public class ClassicCameraController implements CameraController { public void update(float partialTicksPassed) { boolean forward = false, backward = false, left = false, right = false, up = false, down = false; speedup = false; - for(KeyBinding kb : Minecraft.getMinecraft().gameSettings.keyBindings) { + for(KeyBinding kb : getMinecraft().gameSettings.keyBindings) { if(!isKeyDown(kb)) continue; if(kb.getKeyDescription().equals("key.forward")) { forward = true; @@ -109,7 +108,7 @@ public class ClassicCameraController implements CameraController { } private void updateMovement() { - long frac = Sys.getTime() - lastCall; + long frac = System.currentTimeMillis() - lastCall; if(frac == 0) return; @@ -124,13 +123,14 @@ public class ClassicCameraController implements CameraController { motion = Math.min(motion, MAX_SPEED); - lastCall = Sys.getTime(); + lastCall = System.currentTimeMillis(); if(direction == null || direction.lengthSquared() == 0 || motion < THRESHOLD) { return; } - Vector3f movement = direction.normalise(null); + Vector3f movement = new Vector3f(direction); + movement.normalize(); double factor = motion * (frac / 1000D); camera.moveCamera(movement.x * factor, movement.y * factor, movement.z * factor); @@ -162,7 +162,9 @@ public class ClassicCameraController implements CameraController { Vector3f dbf = direction; if(dirBefore != null) { - direction = Vector3f.add(direction, dirBefore.normalise(null), null); + dirBefore.normalize(); + dirBefore.add(direction); + direction = dirBefore; } dirBefore = dbf; diff --git a/src/main/java/com/replaymod/replay/camera/SpectatorCameraController.java b/src/main/java/com/replaymod/replay/camera/SpectatorCameraController.java index d66f954e..256440f7 100644 --- a/src/main/java/com/replaymod/replay/camera/SpectatorCameraController.java +++ b/src/main/java/com/replaymod/replay/camera/SpectatorCameraController.java @@ -6,7 +6,12 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.settings.KeyBinding; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; -import org.lwjgl.input.Mouse; + +//#if MC>=11300 +// FIXME +//#else +//$$ import org.lwjgl.input.Mouse; +//#endif import java.util.Arrays; @@ -18,7 +23,7 @@ public class SpectatorCameraController implements CameraController { @Override public void update(float partialTicksPassed) { - Minecraft mc = Minecraft.getMinecraft(); + Minecraft mc = getMinecraft(); if (mc.gameSettings.keyBindSneak.isPressed()) { ReplayModReplay.instance.getReplayHandler().spectateCamera(); } @@ -31,7 +36,11 @@ public class SpectatorCameraController implements CameraController { } // Prevent mouse movement - Mouse.updateCursor(); + //#if MC>=11300 + // FIXME + //#else + //$$ Mouse.updateCursor(); + //#endif // Always make sure the camera is in the exact same spot as the spectated entity // This is necessary as some rendering code for the hand doesn't respect the view entity diff --git a/src/main/java/com/replaymod/replay/camera/VanillaCameraController.java b/src/main/java/com/replaymod/replay/camera/VanillaCameraController.java index 7e1085e1..803322f8 100644 --- a/src/main/java/com/replaymod/replay/camera/VanillaCameraController.java +++ b/src/main/java/com/replaymod/replay/camera/VanillaCameraController.java @@ -1,9 +1,15 @@ package com.replaymod.replay.camera; import net.minecraft.client.Minecraft; -import net.minecraft.client.settings.GameSettings; import net.minecraft.client.settings.KeyBinding; -import org.lwjgl.util.vector.Vector3f; + +//#if MC>=11300 +import net.minecraft.client.GameSettings; +//#else +//$$ import net.minecraft.client.settings.GameSettings; +//#endif + +import javax.vecmath.Vector3f; import static com.replaymod.core.versions.MCVer.*; @@ -42,11 +48,11 @@ public class VanillaCameraController implements CameraController { Vector3f direction = new Vector3f(0, 0, 0); for (int i = 0; i < 6; i++) { // First, get movement direction depending on keys pressed if (isKeyDown(bindings[i])) { - Vector3f.add(direction, DIRECTIONS[i], direction); + direction.add(DIRECTIONS[i]); } } if (direction.length() == 0) return; - direction.normalise(direction); // Normalize, so we don't move quicker if we hold down multiple keys + direction.normalize(); // Normalize, so we don't move quicker if we hold down multiple keys double yawRadians = Math.toRadians(camera.rotationYaw); float yawSin = (float) Math.sin(yawRadians), yawCos = (float) Math.cos(yawRadians); // Rotate by yaw diff --git a/src/main/java/com/replaymod/replay/events/ReplayChatMessageEvent.java b/src/main/java/com/replaymod/replay/events/ReplayChatMessageEvent.java index 9ad07adf..2c096a45 100644 --- a/src/main/java/com/replaymod/replay/events/ReplayChatMessageEvent.java +++ b/src/main/java/com/replaymod/replay/events/ReplayChatMessageEvent.java @@ -5,8 +5,13 @@ import lombok.Getter; import lombok.RequiredArgsConstructor; //#if MC>=10800 -import net.minecraftforge.fml.common.eventhandler.Cancelable; -import net.minecraftforge.fml.common.eventhandler.Event; +//#if MC>=11300 +import net.minecraftforge.eventbus.api.Cancelable; +import net.minecraftforge.eventbus.api.Event; +//#else +//$$ import net.minecraftforge.fml.common.eventhandler.Cancelable; +//$$ import net.minecraftforge.fml.common.eventhandler.Event; +//#endif //#else //$$ import cpw.mods.fml.common.eventhandler.Cancelable; //$$ import cpw.mods.fml.common.eventhandler.Event; diff --git a/src/main/java/com/replaymod/replay/events/ReplayCloseEvent.java b/src/main/java/com/replaymod/replay/events/ReplayCloseEvent.java index b228c675..23c0fc1d 100644 --- a/src/main/java/com/replaymod/replay/events/ReplayCloseEvent.java +++ b/src/main/java/com/replaymod/replay/events/ReplayCloseEvent.java @@ -5,7 +5,11 @@ import lombok.Getter; import lombok.RequiredArgsConstructor; //#if MC>=10800 -import net.minecraftforge.fml.common.eventhandler.Event; +//#if MC>=11300 +import net.minecraftforge.eventbus.api.Event; +//#else +//$$ import net.minecraftforge.fml.common.eventhandler.Event; +//#endif //#else //$$ import cpw.mods.fml.common.eventhandler.Event; //#endif diff --git a/src/main/java/com/replaymod/replay/events/ReplayDispatchKeypressesEvent.java b/src/main/java/com/replaymod/replay/events/ReplayDispatchKeypressesEvent.java index 5d972056..d769747d 100644 --- a/src/main/java/com/replaymod/replay/events/ReplayDispatchKeypressesEvent.java +++ b/src/main/java/com/replaymod/replay/events/ReplayDispatchKeypressesEvent.java @@ -1,8 +1,13 @@ package com.replaymod.replay.events; //#if MC>=10800 -import net.minecraftforge.fml.common.eventhandler.Cancelable; -import net.minecraftforge.fml.common.eventhandler.Event; +//#if MC>=11300 +import net.minecraftforge.eventbus.api.Cancelable; +import net.minecraftforge.eventbus.api.Event; +//#else +//$$ import net.minecraftforge.fml.common.eventhandler.Cancelable; +//$$ import net.minecraftforge.fml.common.eventhandler.Event; +//#endif //#else //$$ import cpw.mods.fml.common.eventhandler.Cancelable; //$$ import cpw.mods.fml.common.eventhandler.Event; diff --git a/src/main/java/com/replaymod/replay/events/ReplayOpenEvent.java b/src/main/java/com/replaymod/replay/events/ReplayOpenEvent.java index 0e305532..6aef11ce 100644 --- a/src/main/java/com/replaymod/replay/events/ReplayOpenEvent.java +++ b/src/main/java/com/replaymod/replay/events/ReplayOpenEvent.java @@ -5,7 +5,11 @@ import lombok.Getter; import lombok.RequiredArgsConstructor; //#if MC>=10800 -import net.minecraftforge.fml.common.eventhandler.Event; +//#if MC>=11300 +import net.minecraftforge.eventbus.api.Event; +//#else +//$$ import net.minecraftforge.fml.common.eventhandler.Event; +//#endif //#else //$$ import cpw.mods.fml.common.eventhandler.Event; //#endif diff --git a/src/main/java/com/replaymod/replay/gui/overlay/GuiEditMarkerPopup.java b/src/main/java/com/replaymod/replay/gui/overlay/GuiEditMarkerPopup.java index cc94f3cc..3d797cf6 100644 --- a/src/main/java/com/replaymod/replay/gui/overlay/GuiEditMarkerPopup.java +++ b/src/main/java/com/replaymod/replay/gui/overlay/GuiEditMarkerPopup.java @@ -12,8 +12,13 @@ import de.johni0702.minecraft.gui.layout.VerticalLayout; import de.johni0702.minecraft.gui.popup.AbstractGuiPopup; import de.johni0702.minecraft.gui.utils.Colors; import com.replaymod.replaystudio.data.Marker; -import org.lwjgl.input.Keyboard; -import org.lwjgl.util.ReadablePoint; +import de.johni0702.minecraft.gui.utils.lwjgl.ReadablePoint; + +//#if MC>=11300 +import com.replaymod.core.versions.MCVer.Keyboard; +//#else +//$$ import org.lwjgl.input.Keyboard; +//#endif public class GuiEditMarkerPopup extends AbstractGuiPopup implements Typeable { private static GuiNumberField newGuiNumberField() { diff --git a/src/main/java/com/replaymod/replay/gui/overlay/GuiMarkerTimeline.java b/src/main/java/com/replaymod/replay/gui/overlay/GuiMarkerTimeline.java index 0a376fbf..d48343c0 100644 --- a/src/main/java/com/replaymod/replay/gui/overlay/GuiMarkerTimeline.java +++ b/src/main/java/com/replaymod/replay/gui/overlay/GuiMarkerTimeline.java @@ -8,10 +8,10 @@ import de.johni0702.minecraft.gui.GuiRenderer; import de.johni0702.minecraft.gui.RenderInfo; import de.johni0702.minecraft.gui.element.advanced.AbstractGuiTimeline; import de.johni0702.minecraft.gui.function.Draggable; +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 net.minecraft.client.resources.I18n; -import org.lwjgl.util.Point; -import org.lwjgl.util.ReadableDimension; -import org.lwjgl.util.ReadablePoint; import static de.johni0702.minecraft.gui.utils.Utils.clamp; diff --git a/src/main/java/com/replaymod/replay/gui/overlay/GuiReplayOverlay.java b/src/main/java/com/replaymod/replay/gui/overlay/GuiReplayOverlay.java index 6f968243..ec9f5e1a 100644 --- a/src/main/java/com/replaymod/replay/gui/overlay/GuiReplayOverlay.java +++ b/src/main/java/com/replaymod/replay/gui/overlay/GuiReplayOverlay.java @@ -14,15 +14,24 @@ import de.johni0702.minecraft.gui.element.GuiTooltip; import de.johni0702.minecraft.gui.element.advanced.IGuiTimeline; import de.johni0702.minecraft.gui.layout.CustomLayout; import de.johni0702.minecraft.gui.layout.HorizontalLayout; +import de.johni0702.minecraft.gui.utils.lwjgl.ReadableDimension; +import de.johni0702.minecraft.gui.utils.lwjgl.ReadablePoint; +import de.johni0702.minecraft.gui.utils.lwjgl.WritablePoint; import net.minecraft.client.resources.I18n; -import net.minecraft.client.settings.GameSettings; -import org.lwjgl.input.Keyboard; -import org.lwjgl.util.ReadableDimension; -import org.lwjgl.util.ReadablePoint; -import org.lwjgl.util.WritablePoint; + +//#if MC>=11300 +import net.minecraft.client.GameSettings; +//#else +//$$ import net.minecraft.client.settings.GameSettings; +//$$ import org.lwjgl.input.Keyboard; +//#endif //#if MC>=10800 -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 import net.minecraftforge.fml.common.gameevent.InputEvent; //#else //$$ import cpw.mods.fml.common.eventhandler.SubscribeEvent; @@ -160,12 +169,14 @@ public class GuiReplayOverlay extends AbstractGuiOverlay { setMouseVisible(true); } } + /* FIXME if (Keyboard.getEventKeyState()) { // Handle the F1 key binding while the overlay is opened as a gui screen if (isMouseVisible() && Keyboard.getEventKey() == Keyboard.KEY_F1) { gameSettings.hideGUI = !gameSettings.hideGUI; } } + */ } @Override diff --git a/src/main/java/com/replaymod/replay/gui/screen/GuiReplayViewer.java b/src/main/java/com/replaymod/replay/gui/screen/GuiReplayViewer.java index 388714ed..378750c3 100755 --- a/src/main/java/com/replaymod/replay/gui/screen/GuiReplayViewer.java +++ b/src/main/java/com/replaymod/replay/gui/screen/GuiReplayViewer.java @@ -10,6 +10,7 @@ import com.replaymod.core.ReplayMod; import com.replaymod.core.SettingsRegistry; import com.replaymod.core.gui.GuiReplaySettings; import com.replaymod.core.utils.Utils; +import com.replaymod.core.versions.MCVer; import com.replaymod.replay.ReplayModReplay; import com.replaymod.replay.Setting; import com.replaymod.replaystudio.replay.ReplayFile; @@ -31,24 +32,24 @@ import de.johni0702.minecraft.gui.popup.AbstractGuiPopup; import de.johni0702.minecraft.gui.popup.GuiYesNoPopup; import de.johni0702.minecraft.gui.utils.Colors; import de.johni0702.minecraft.gui.utils.Consumer; +import de.johni0702.minecraft.gui.utils.lwjgl.Dimension; +import de.johni0702.minecraft.gui.utils.lwjgl.ReadableDimension; +import de.johni0702.minecraft.gui.utils.lwjgl.ReadablePoint; import lombok.Getter; import net.minecraft.client.gui.GuiErrorScreen; import net.minecraft.client.resources.I18n; import net.minecraft.crash.CrashReport; -import net.minecraft.util.ReportedException; -import net.minecraft.util.Util; import org.apache.commons.io.FileUtils; import org.apache.commons.io.IOCase; import org.apache.commons.io.filefilter.SuffixFileFilter; import org.apache.commons.lang3.StringUtils; -import org.apache.logging.log4j.LogManager; -import org.lwjgl.Sys; -import org.lwjgl.input.Keyboard; -import org.lwjgl.util.Dimension; -import org.lwjgl.util.ReadableDimension; -import org.lwjgl.util.ReadablePoint; -import java.awt.*; +//#if MC>=11300 +import com.replaymod.core.versions.MCVer.Keyboard; +//#else +//$$ import org.lwjgl.input.Keyboard; +//#endif + import java.awt.image.BufferedImage; import java.io.File; import java.io.FileFilter; @@ -57,6 +58,7 @@ import java.text.SimpleDateFormat; import java.util.Date; import static com.replaymod.replay.ReplayModReplay.LOGGER; +import static com.replaymod.core.versions.MCVer.*; public class GuiReplayViewer extends GuiScreen { private final ReplayModReplay mod; @@ -93,29 +95,8 @@ public class GuiReplayViewer extends GuiScreen { public void run() { try { File folder = mod.getCore().getReplayFolder(); - String path = folder.getAbsolutePath(); - // First try OS specific methods - try { - switch (Util.getOSType()) { - case WINDOWS: - Runtime.getRuntime().exec(String.format("cmd.exe /C start \"Open file\" \"%s\"", path)); - return; - case OSX: - Runtime.getRuntime().exec(new String[]{"/usr/bin/open", path}); - return; - } - } catch (IOException e) { - LogManager.getLogger().error("Cannot open file", e); - } - - // Otherwise try to java way - try { - Desktop.getDesktop().browse(folder.toURI()); - } catch (Throwable throwable) { - // And if all fails, lwjgl - Sys.openURL("file://" + path); - } + MCVer.openFile(folder); } catch (IOException e) { mod.getLogger().error("Cannot open file", e); } @@ -232,7 +213,7 @@ public class GuiReplayViewer extends GuiScreen { try { list.setFolder(mod.getCore().getReplayFolder()); } catch (IOException e) { - throw new ReportedException(CrashReport.makeCrashReport(e, "Getting replay folder")); + throw newReportedException(CrashReport.makeCrashReport(e, "Getting replay folder")); } setTitle(new GuiLabel().setI18nText("replaymod.gui.replayviewer")); diff --git a/src/main/java/com/replaymod/replay/handler/GuiHandler.java b/src/main/java/com/replaymod/replay/handler/GuiHandler.java index fd1116b4..587d639d 100644 --- a/src/main/java/com/replaymod/replay/handler/GuiHandler.java +++ b/src/main/java/com/replaymod/replay/handler/GuiHandler.java @@ -1,5 +1,6 @@ package com.replaymod.replay.handler; +import com.replaymod.core.versions.MCVer; import com.replaymod.replay.ReplayModReplay; import com.replaymod.replay.gui.screen.GuiReplayViewer; import net.minecraft.client.Minecraft; @@ -11,7 +12,11 @@ import net.minecraft.client.resources.I18n; import net.minecraftforge.client.event.GuiScreenEvent; //#if MC>=10800 -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 cpw.mods.fml.common.eventhandler.SubscribeEvent; //#endif @@ -32,7 +37,7 @@ public class GuiHandler { private static final int BUTTON_REPLAY_VIEWER = 17890234; private static final int BUTTON_EXIT_REPLAY = 17890235; - private static final Minecraft mc = Minecraft.getMinecraft(); + private static final Minecraft mc = MCVer.getMinecraft(); private final ReplayModReplay mod; @@ -130,7 +135,7 @@ public class GuiHandler { return; } GuiButton button = new GuiButton(BUTTON_REPLAY_VIEWER, getGui(event).width / 2 - 100, - getGui(event).height / 4 + 10 + 3 * 24, I18n.format("replaymod.gui.replayviewer")); + getGui(event).height / 4 + 10 + 3 * 24, I18n.format("replaymod.gui.replayviewer")){}; button.width = button.width / 2 - 2; getButtonList(event).add(button); } diff --git a/src/main/java/com/replaymod/replay/mixin/MixinGuiSpectator.java b/src/main/java/com/replaymod/replay/mixin/MixinGuiSpectator.java index e2ce7c2d..2a64aef8 100644 --- a/src/main/java/com/replaymod/replay/mixin/MixinGuiSpectator.java +++ b/src/main/java/com/replaymod/replay/mixin/MixinGuiSpectator.java @@ -2,7 +2,6 @@ package com.replaymod.replay.mixin; import com.replaymod.replay.camera.CameraEntity; -import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiSpectator; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; @@ -20,7 +19,7 @@ public abstract class MixinGuiSpectator { //#endif public void isInReplay(int i, CallbackInfo ci) { // Prevent spectator gui from opening while in a replay - if (player(Minecraft.getMinecraft()) instanceof CameraEntity) { + if (player(getMinecraft()) instanceof CameraEntity) { ci.cancel(); } } diff --git a/src/main/java/com/replaymod/replay/mixin/MixinParticleManager.java b/src/main/java/com/replaymod/replay/mixin/MixinParticleManager.java index dd3201a2..14210b94 100644 --- a/src/main/java/com/replaymod/replay/mixin/MixinParticleManager.java +++ b/src/main/java/com/replaymod/replay/mixin/MixinParticleManager.java @@ -15,7 +15,11 @@ import java.util.Queue; @Mixin(ParticleManager.class) public abstract class MixinParticleManager { @Shadow - private Queue queueEntityFX; + //#if MC>=11300 + private Queue queue; + //#else + //$$ private Queue queueEntityFX; + //#endif /** * This method additionally clears the queue of particles to be added when the world is changed. @@ -27,7 +31,11 @@ public abstract class MixinParticleManager { */ @Inject(method = "clearEffects", at = @At("HEAD")) public void replayModReplay_clearParticleQueue(World world, CallbackInfo ci) { - queueEntityFX.clear(); + //#if MC>=11300 + queue.clear(); + //#else + //$$ queueEntityFX.clear(); + //#endif } } //#endif diff --git a/src/main/java/com/replaymod/replay/mixin/MixinPlayerControllerMP.java b/src/main/java/com/replaymod/replay/mixin/MixinPlayerControllerMP.java index ded49f19..d4a1cc14 100644 --- a/src/main/java/com/replaymod/replay/mixin/MixinPlayerControllerMP.java +++ b/src/main/java/com/replaymod/replay/mixin/MixinPlayerControllerMP.java @@ -13,7 +13,11 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; //#if MC>=11200 -import net.minecraft.stats.RecipeBook; +//#if MC>=11300 +import net.minecraft.client.util.RecipeBookClient; +//#else +//$$ import net.minecraft.stats.RecipeBook; +//#endif //#endif //#if MC>=10904 import net.minecraft.stats.StatisticsManager; @@ -44,10 +48,16 @@ public abstract class MixinPlayerControllerMP { //#endif //#if MC>=11200 - @Inject(method = "func_192830_a", at=@At("HEAD"), cancellable = true) - private void replayModReplay_createReplayCamera(World worldIn, StatisticsManager statisticsManager, RecipeBook recipeBook, CallbackInfoReturnable ci) { + @Inject(method = "createPlayer", at=@At("HEAD"), cancellable = true) + private void replayModReplay_createReplayCamera(World worldIn, StatisticsManager statisticsManager, RecipeBookClient recipeBookClient, CallbackInfoReturnable ci) { if (ReplayModReplay.instance.getReplayHandler() != null) { - ci.setReturnValue(new CameraEntity(mc, worldIn, connection, statisticsManager, recipeBook)); + ci.setReturnValue(new CameraEntity(mc, worldIn, connection, statisticsManager, recipeBookClient)); + //#else + //#if MC>=11200 + //$$ @Inject(method = "func_192830_a", at=@At("HEAD"), cancellable = true) + //$$ private void replayModReplay_createReplayCamera(World worldIn, StatisticsManager statisticsManager, RecipeBook recipeBook, CallbackInfoReturnable ci) { + //$$ if (ReplayModReplay.instance.getReplayHandler() != null) { + //$$ ci.setReturnValue(new CameraEntity(mc, worldIn, connection, statisticsManager, recipeBook)); //#else //#if MC>=10904 //$$ @Inject(method = "createClientPlayer", at=@At("HEAD"), cancellable = true) @@ -67,13 +77,18 @@ public abstract class MixinPlayerControllerMP { //$$ ci.setReturnValue(new CameraEntity(mc, worldIn, mc.getSession(), netClientHandler, statFileWriter)); //#endif //#endif + //#endif //#endif ci.cancel(); } } //#if MC>=10800 - @Inject(method = "isSpectator", at=@At("HEAD"), cancellable = true) + //#if MC>=11300 + @Inject(method = "isSpectatorMode", at=@At("HEAD"), cancellable = true) + //#else + //$$ @Inject(method = "isSpectator", at=@At("HEAD"), cancellable = true) + //#endif private void replayModReplay_isSpectator(CallbackInfoReturnable ci) { if (player(mc) instanceof CameraEntity) { // this check should in theory not be required ci.setReturnValue(player(mc).isSpectator()); diff --git a/src/main/java/com/replaymod/replay/mixin/MixinRenderItem.java b/src/main/java/com/replaymod/replay/mixin/MixinRenderItem.java index aaf11b77..bb9d3f06 100644 --- a/src/main/java/com/replaymod/replay/mixin/MixinRenderItem.java +++ b/src/main/java/com/replaymod/replay/mixin/MixinRenderItem.java @@ -2,25 +2,42 @@ package com.replaymod.replay.mixin; import com.replaymod.replay.ReplayHandler; import com.replaymod.replay.ReplayModReplay; -import net.minecraft.client.Minecraft; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Redirect; +//#if MC>=11300 +import net.minecraft.client.renderer.ItemRenderer; +import net.minecraft.util.Util; +//#else +//$$ import net.minecraft.client.Minecraft; //#if MC>=10904 -import net.minecraft.client.renderer.RenderItem; +//$$ import net.minecraft.client.renderer.RenderItem; //#else //$$ import net.minecraft.client.renderer.entity.RenderItem; //#endif +//#endif -@Mixin(RenderItem.class) +//#if MC>=11300 +@Mixin(ItemRenderer.class) +//#else +//$$ @Mixin(RenderItem.class) +//#endif public class MixinRenderItem { - @Redirect(method = "renderEffect", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Minecraft;getSystemTime()J")) - private long getEnchantmentTime() { + //#if MC>=11300 + @Redirect(method = "renderEffect", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/Util;milliTime()J")) + //#else + //$$ @Redirect(method = "renderEffect", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Minecraft;getSystemTime()J")) + //#endif + private static long getEnchantmentTime() { ReplayHandler replayHandler = ReplayModReplay.instance.getReplayHandler(); if (replayHandler != null) { return replayHandler.getReplaySender().currentTimeStamp(); } - return Minecraft.getSystemTime(); + //#if MC>=11300 + return Util.milliTime(); + //#else + //$$ return Minecraft.getSystemTime(); + //#endif } } diff --git a/src/main/java/com/replaymod/replay/mixin/MixinRenderLivingBase.java b/src/main/java/com/replaymod/replay/mixin/MixinRenderLivingBase.java index 75afcf23..24ca21b7 100644 --- a/src/main/java/com/replaymod/replay/mixin/MixinRenderLivingBase.java +++ b/src/main/java/com/replaymod/replay/mixin/MixinRenderLivingBase.java @@ -1,7 +1,6 @@ package com.replaymod.replay.mixin; import com.replaymod.replay.camera.CameraEntity; -import net.minecraft.client.Minecraft; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import org.spongepowered.asm.mixin.Mixin; @@ -26,7 +25,7 @@ import static com.replaymod.core.versions.MCVer.*; public abstract class MixinRenderLivingBase { @Inject(method = "canRenderName", at = @At("HEAD"), cancellable = true) private void replayModReplay_canRenderInvisibleName(EntityLivingBase entity, CallbackInfoReturnable ci) { - EntityPlayer thePlayer = player(Minecraft.getMinecraft()); + EntityPlayer thePlayer = player(getMinecraft()); if (thePlayer instanceof CameraEntity && entity.isInvisible()) { ci.setReturnValue(false); } diff --git a/src/main/java/com/replaymod/replay/mixin/MixinRenderManager.java b/src/main/java/com/replaymod/replay/mixin/MixinRenderManager.java index 71ab6cfb..7c6ef7bd 100644 --- a/src/main/java/com/replaymod/replay/mixin/MixinRenderManager.java +++ b/src/main/java/com/replaymod/replay/mixin/MixinRenderManager.java @@ -3,7 +3,6 @@ package com.replaymod.replay.mixin; import net.minecraft.client.gui.FontRenderer; import net.minecraft.client.renderer.entity.RenderManager; -import net.minecraft.client.settings.GameSettings; import net.minecraft.entity.Entity; import net.minecraft.entity.passive.EntityAnimal; import net.minecraft.world.World; @@ -13,6 +12,12 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +//#if MC>=11300 +import net.minecraft.client.GameSettings; +//#else +//$$ import net.minecraft.client.settings.GameSettings; +//#endif + @Mixin(RenderManager.class) public class MixinRenderManager { @Shadow diff --git a/src/main/java/com/replaymod/replay/mixin/MixinTileEntityEndPortalRenderer.java b/src/main/java/com/replaymod/replay/mixin/MixinTileEntityEndPortalRenderer.java index cd1d9493..0d07041c 100644 --- a/src/main/java/com/replaymod/replay/mixin/MixinTileEntityEndPortalRenderer.java +++ b/src/main/java/com/replaymod/replay/mixin/MixinTileEntityEndPortalRenderer.java @@ -2,11 +2,16 @@ package com.replaymod.replay.mixin; import com.replaymod.replay.ReplayHandler; import com.replaymod.replay.ReplayModReplay; -import net.minecraft.client.Minecraft; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Redirect; +//#if MC>=11300 +import net.minecraft.util.Util; +//#else +import net.minecraft.client.Minecraft; +//#endif + //#if MC>=10800 import net.minecraft.client.renderer.tileentity.TileEntityEndPortalRenderer; //#else @@ -19,8 +24,11 @@ import net.minecraft.client.renderer.tileentity.TileEntityEndPortalRenderer; //$$ @Mixin(RenderEndPortal.class) //#endif public class MixinTileEntityEndPortalRenderer { + //#if MC>=11300 + @Redirect(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/Util;milliTime()J")) + //#else //#if MC>=10809 - @Redirect(method = "renderTileEntityAt", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Minecraft;getSystemTime()J")) + //$$ @Redirect(method = "renderTileEntityAt", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Minecraft;getSystemTime()J")) //#else //#if MC>=10800 //$$ @Redirect(method = "func_180544_a", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Minecraft;getSystemTime()J")) @@ -28,11 +36,16 @@ public class MixinTileEntityEndPortalRenderer { //$$ @Redirect(method = "renderTileEntityAt(Lnet/minecraft/tileentity/TileEntityEndPortal;DDDF)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Minecraft;getSystemTime()J")) //#endif //#endif - private long replayModReplay_getEnchantmentTime() { + //#endif + private static long replayModReplay_getEnchantmentTime() { ReplayHandler replayHandler = ReplayModReplay.instance.getReplayHandler(); if (replayHandler != null) { return replayHandler.getReplaySender().currentTimeStamp(); } - return Minecraft.getSystemTime(); + //#if MC>=11300 + return Util.milliTime(); + //#else + //$$ return Minecraft.getSystemTime(); + //#endif } } diff --git a/versions/common.gradle b/versions/common.gradle index 4c2aacf0..a6d9c344 100644 --- a/versions/common.gradle +++ b/versions/common.gradle @@ -273,7 +273,6 @@ sourceSets { exclude 'com/replaymod/online' exclude 'com/replaymod/pathing' exclude 'com/replaymod/render' - exclude 'com/replaymod/replay' exclude 'com/replaymod/restrictions' exclude 'com/replaymod/simplepathing' }