From bd91d0d3bd614f134a57647ec4c6693c8dfbd345 Mon Sep 17 00:00:00 2001 From: Jonas Herzig Date: Mon, 6 May 2019 16:53:39 +0200 Subject: [PATCH] Get rid of all the ATs in favor of Mixins --- .../shaders/mixin/MixinShadersRender.java | 7 +- .../java/com/replaymod/core/ReplayMod.java | 2 +- .../core/mixin/MinecraftAccessor.java | 10 + .../replaymod/core/mixin/MixinMinecraft.java | 59 ++++- .../mixin/ResourcePackRepositoryAccessor.java | 22 ++ .../replaymod/core/mixin/TimerAccessor.java | 20 ++ .../replaymod/core/utils/WrappedTimer.java | 14 +- .../com/replaymod/core/versions/MCVer.java | 14 +- .../com/replaymod/extras/FullBrightness.java | 5 +- .../AdvancedScreenshots.java | 38 --- .../handler/RecordingEventHandler.java | 18 +- .../mixin/EntityLivingBaseAccessor.java | 4 +- .../mixin/MixinDownloadingPackFinder.java | 6 +- .../mixin/SPacketSpawnMobAccessor.java | 8 - .../mixin/SPacketSpawnPlayerAccessor.java | 8 - .../recording/packet/PacketListener.java | 48 ++-- .../packet/ResourcePackRecorder.java | 123 +--------- .../render/blend/exporters/ItemExporter.java | 13 +- .../blend/mixin/ItemRendererAccessor.java | 2 +- .../hooks/ChunkLoadingRenderGlobal.java | 2 +- .../render/hooks/EntityRendererHandler.java | 20 -- .../replaymod/render/rendering/Pipeline.java | 2 +- .../render/rendering/VideoRenderer.java | 28 --- .../replaymod/replay/InputReplayTimer.java | 212 ++--------------- .../com/replaymod/replay/NoGuiScreenshot.java | 4 +- .../com/replaymod/replay/ReplayHandler.java | 10 +- .../replaymod/replay/camera/CameraEntity.java | 10 +- .../camera/SpectatorCameraController.java | 6 +- .../mixin/EntityOtherPlayerMPAccessor.java | 21 ++ .../replay/mixin/EntityPlayerAccessor.java | 9 + .../mixin/FirstPersonRendererAccessor.java | 9 + .../replay/mixin/MixinKeyboardListener.java | 56 ++--- src/main/resources/META-INF/replaymod_at.cfg | 219 ------------------ src/main/resources/mixins.core.replaymod.json | 5 +- .../mixins.render.blend.replaymod.json | 2 +- .../resources/mixins.replay.replaymod.json | 7 +- versions/1.12/mapping.txt | 1 + versions/1.13.2/mapping.txt | 5 + versions/1.8.9/mapping.txt | 4 + versions/1.9.4/mapping.txt | 4 + versions/common.gradle | 23 -- 41 files changed, 302 insertions(+), 778 deletions(-) create mode 100644 src/main/java/com/replaymod/core/mixin/ResourcePackRepositoryAccessor.java create mode 100644 src/main/java/com/replaymod/replay/mixin/EntityOtherPlayerMPAccessor.java delete mode 100644 src/main/resources/META-INF/replaymod_at.cfg diff --git a/src/main/java/com/replaymod/compat/shaders/mixin/MixinShadersRender.java b/src/main/java/com/replaymod/compat/shaders/mixin/MixinShadersRender.java index 4ad55ec9..50059474 100644 --- a/src/main/java/com/replaymod/compat/shaders/mixin/MixinShadersRender.java +++ b/src/main/java/com/replaymod/compat/shaders/mixin/MixinShadersRender.java @@ -10,6 +10,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; //#if MC>=11400 //$$ import com.replaymod.core.events.PreRenderHandCallback; //#else +import com.replaymod.core.versions.MCVer; import net.minecraftforge.client.ForgeHooksClient; //#endif @@ -20,15 +21,15 @@ import net.minecraftforge.client.ForgeHooksClient; }, remap = false) public abstract class MixinShadersRender { - @Inject(method = "renderHand0", at = @At("HEAD"), cancellable = true) + @Inject(method = "renderHand0", at = @At("HEAD"), cancellable = true, remap = false) 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)) { + if (ForgeHooksClient.renderFirstPersonHand(MCVer.getMinecraft().renderGlobal, partialTicks)) { //#else - //$$ if (ForgeHooksClient.renderFirstPersonHand(er.mc.renderGlobal, partialTicks, renderPass)) { + //$$ if (ForgeHooksClient.renderFirstPersonHand(MCVer.getMinecraft().renderGlobal, partialTicks, renderPass)) { //#endif //#endif ci.cancel(); diff --git a/src/main/java/com/replaymod/core/ReplayMod.java b/src/main/java/com/replaymod/core/ReplayMod.java index cc32d8df..784f0d05 100755 --- a/src/main/java/com/replaymod/core/ReplayMod.java +++ b/src/main/java/com/replaymod/core/ReplayMod.java @@ -240,7 +240,7 @@ public class ReplayMod implements try { return super.getInputStream(resourceName); //#else - //$$ List defaultResourcePacks = mc.defaultResourcePacks; + //$$ List defaultResourcePacks = ((MinecraftAccessor) mc).getDefaultResourcePacks(); //$$ FolderResourcePack jGuiResourcePack = new FolderResourcePack(new File("../jGui/src/main/resources")) { //$$ @Override //$$ protected InputStream getInputStreamByName(String resourceName) throws IOException { diff --git a/src/main/java/com/replaymod/core/mixin/MinecraftAccessor.java b/src/main/java/com/replaymod/core/mixin/MinecraftAccessor.java index 9c8fbaa8..c8114d05 100644 --- a/src/main/java/com/replaymod/core/mixin/MinecraftAccessor.java +++ b/src/main/java/com/replaymod/core/mixin/MinecraftAccessor.java @@ -12,6 +12,11 @@ import java.util.Queue; import java.util.concurrent.FutureTask; //#endif +//#if MC<11300 +//$$ import net.minecraft.client.resources.IResourcePack; +//$$ import java.util.List; +//#endif + @Mixin(Minecraft.class) public interface MinecraftAccessor { @Accessor @@ -32,4 +37,9 @@ public interface MinecraftAccessor { @Accessor CrashReport getCrashReporter(); + + //#if MC<11300 + //$$ @Accessor + //$$ List getDefaultResourcePacks(); + //#endif } diff --git a/src/main/java/com/replaymod/core/mixin/MixinMinecraft.java b/src/main/java/com/replaymod/core/mixin/MixinMinecraft.java index ded66a3b..b0cf90f8 100644 --- a/src/main/java/com/replaymod/core/mixin/MixinMinecraft.java +++ b/src/main/java/com/replaymod/core/mixin/MixinMinecraft.java @@ -1,18 +1,26 @@ -//#if MC>=11300 package com.replaymod.core.mixin; -import com.replaymod.core.events.PostRenderCallback; -import com.replaymod.core.events.PreRenderCallback; import com.replaymod.core.versions.MCVer; -import de.johni0702.minecraft.gui.versions.callbacks.OpenGuiScreenCallback; -import de.johni0702.minecraft.gui.versions.callbacks.PreTickCallback; import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.GuiScreen; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; + +//#if MC>=11300 +import com.replaymod.core.events.PostRenderCallback; +import com.replaymod.core.events.PreRenderCallback; +import de.johni0702.minecraft.gui.versions.callbacks.OpenGuiScreenCallback; +import de.johni0702.minecraft.gui.versions.callbacks.PreTickCallback; +import net.minecraft.client.gui.GuiScreen; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +//#else +//$$ import org.spongepowered.asm.mixin.injection.Redirect; +//$$ import com.replaymod.replay.InputReplayTimer; +//$$ import org.lwjgl.input.Mouse; +//#endif + +import java.io.IOException; //#if MC>=11400 //$$ import net.minecraft.util.NonBlockingThreadExecutor; @@ -28,6 +36,7 @@ public abstract class MixinMinecraft //$$ public MixinMinecraft(String string_1) { super(string_1); } //#endif + //#if MC>=11300 @Shadow protected abstract void processKeyBinds(); @Override @@ -66,5 +75,41 @@ public abstract class MixinMinecraft private void openGuiScreen(GuiScreen newGuiScreen, CallbackInfo ci) { OpenGuiScreenCallback.EVENT.invoker().openGuiScreen(newGuiScreen); } + //#else + //#if MC>=10904 + //$$ @Shadow protected abstract void runTickKeyboard() throws IOException; + //$$ @Shadow protected abstract void runTickMouse() throws IOException; + //$$ + //$$ @Override + //$$ public void replayModRunTickKeyboard() { + //$$ try { + //$$ runTickKeyboard(); + //$$ } catch (IOException e) { + //$$ e.printStackTrace(); + //$$ } + //$$ } + //$$ + //$$ @Override + //$$ public void replayModRunTickMouse() { + //$$ try { + //$$ runTickMouse(); + //$$ } catch (IOException e) { + //$$ e.printStackTrace(); + //$$ } + //$$ } + //#endif + //$$ @Redirect( + //#if MC>=10904 + //$$ method = "runTickMouse", + //#else + //$$ method = "runTick", + //#endif + //$$ at = @At(value = "INVOKE", target = "Lorg/lwjgl/input/Mouse;getEventDWheel()I", remap = false) + //$$ ) + //$$ private static int scroll() { + //$$ int wheel = Mouse.getEventDWheel(); + //$$ InputReplayTimer.handleScroll(wheel); + //$$ return wheel; + //$$ } + //#endif } -//#endif diff --git a/src/main/java/com/replaymod/core/mixin/ResourcePackRepositoryAccessor.java b/src/main/java/com/replaymod/core/mixin/ResourcePackRepositoryAccessor.java new file mode 100644 index 00000000..81a00bcf --- /dev/null +++ b/src/main/java/com/replaymod/core/mixin/ResourcePackRepositoryAccessor.java @@ -0,0 +1,22 @@ +//#if MC<10800 +//$$ package com.replaymod.core.mixin; +//$$ +//$$ import net.minecraft.client.resources.IResourcePack; +//$$ import net.minecraft.client.resources.ResourcePackRepository; +//$$ import org.spongepowered.asm.mixin.Mixin; +//$$ import org.spongepowered.asm.mixin.gen.Accessor; +//$$ +//$$ import java.io.File; +//$$ +//$$ @Mixin(ResourcePackRepository.class) +//$$ public interface ResourcePackRepositoryAccessor { +//$$ @Accessor("field_148533_g") +//$$ boolean isActive(); +//$$ @Accessor("field_148533_g") +//$$ void setActive(boolean value); +//$$ @Accessor("field_148532_f") +//$$ void setPack(IResourcePack value); +//$$ @Accessor("field_148534_e") +//$$ File getCacheDir(); +//$$ } +//#endif diff --git a/src/main/java/com/replaymod/core/mixin/TimerAccessor.java b/src/main/java/com/replaymod/core/mixin/TimerAccessor.java index eb3e328b..5e97284e 100644 --- a/src/main/java/com/replaymod/core/mixin/TimerAccessor.java +++ b/src/main/java/com/replaymod/core/mixin/TimerAccessor.java @@ -21,5 +21,25 @@ public interface TimerAccessor { //$$ float getTimerSpeed(); //$$ @Accessor //$$ void setTimerSpeed(float value); + //$$ @Accessor + //$$ float getTicksPerSecond(); + //$$ @Accessor + //$$ void setTicksPerSecond(float value); + //$$ @Accessor + //$$ double getLastHRTime(); + //$$ @Accessor + //$$ void setLastHRTime(double value); + //$$ @Accessor + //$$ long getLastSyncHRClock(); + //$$ @Accessor + //$$ void setLastSyncHRClock(long value); + //$$ @Accessor + //$$ double getTimeSyncAdjustment(); + //$$ @Accessor + //$$ void setTimeSyncAdjustment(double value); + //$$ @Accessor + //$$ long getCounter(); + //$$ @Accessor + //$$ void setCounter(long value); //#endif } diff --git a/src/main/java/com/replaymod/core/utils/WrappedTimer.java b/src/main/java/com/replaymod/core/utils/WrappedTimer.java index d596c610..5e45a4ce 100644 --- a/src/main/java/com/replaymod/core/utils/WrappedTimer.java +++ b/src/main/java/com/replaymod/core/utils/WrappedTimer.java @@ -44,16 +44,12 @@ public class WrappedTimer extends Timer { //#if MC>=11200 toA.setTickLength(fromA.getTickLength()); //#else - //$$ to.ticksPerSecond = from.ticksPerSecond; - //$$ to.lastHRTime = from.lastHRTime; + //$$ toA.setTicksPerSecond(fromA.getTicksPerSecond()); + //$$ toA.setLastHRTime(fromA.getLastHRTime()); //$$ toA.setTimerSpeed(fromA.getTimerSpeed()); - //$$ to.lastSyncHRClock = from.lastSyncHRClock; - //#if MC>=10809 - //$$ to.counter = from.counter; - //#else - //$$ to.field_74285_i = from.field_74285_i; - //#endif - //$$ to.timeSyncAdjustment = from.timeSyncAdjustment; + //$$ toA.setLastSyncHRClock(fromA.getLastSyncHRClock()); + //$$ toA.setCounter(fromA.getCounter()); + //$$ toA.setTimeSyncAdjustment(fromA.getTimeSyncAdjustment()); //#endif } } diff --git a/src/main/java/com/replaymod/core/versions/MCVer.java b/src/main/java/com/replaymod/core/versions/MCVer.java index 184dbe05..db61a2c6 100644 --- a/src/main/java/com/replaymod/core/versions/MCVer.java +++ b/src/main/java/com/replaymod/core/versions/MCVer.java @@ -70,6 +70,7 @@ import net.minecraft.client.renderer.vertex.VertexFormat; import net.minecraft.client.renderer.vertex.VertexFormatElement; import net.minecraft.world.WorldType; //#else +//$$ import com.replaymod.core.mixin.ResourcePackRepositoryAccessor; //$$ import com.google.common.util.concurrent.Futures; //$$ import io.netty.handler.codec.DecoderException; //$$ import net.minecraft.client.resources.FileResourcePack; @@ -351,8 +352,9 @@ public class MCVer { //#if MC>=10800 //$$ return repo.func_177319_a(file); //#else - //$$ repo.field_148533_g = false; - //$$ repo.field_148532_f = new FileResourcePack(file); + //$$ ResourcePackRepositoryAccessor acc = (ResourcePackRepositoryAccessor) repo; + //$$ acc.setActive(false); + //$$ acc.setPack(new FileResourcePack(file)); //$$ Minecraft.getMinecraft().scheduleResourcesRefresh(); //$$ return Futures.immediateFuture(null); //#endif @@ -520,13 +522,19 @@ public class MCVer { public static void processKeyBinds() { ((MinecraftMethodAccessor) getMinecraft()).replayModProcessKeyBinds(); } + //#endif + public interface MinecraftMethodAccessor { + //#if MC>=11300 void replayModProcessKeyBinds(); + //#else + //$$ void replayModRunTickMouse(); + //$$ void replayModRunTickKeyboard(); + //#endif //#if MC>=11400 //$$ void replayModExecuteTaskQueue(); //#endif } - //#endif public static long milliTime() { //#if MC>=11300 diff --git a/src/main/java/com/replaymod/extras/FullBrightness.java b/src/main/java/com/replaymod/extras/FullBrightness.java index 7edc63fb..db7920b7 100644 --- a/src/main/java/com/replaymod/extras/FullBrightness.java +++ b/src/main/java/com/replaymod/extras/FullBrightness.java @@ -42,10 +42,11 @@ public class FullBrightness extends EventRegistrations implements Extra { @Override public void run() { active = !active; + // need to tick once to update lightmap when replay is paused //#if MC>=11300 - mod.getMinecraft().entityRenderer.tick(); // need to tick once to update lightmap when replay is paused + mod.getMinecraft().entityRenderer.tick(); //#else - //$$ mod.getMinecraft().entityRenderer.lightmapUpdateNeeded = true; + //$$ mod.getMinecraft().entityRenderer.updateRenderer(); //#endif ReplayHandler replayHandler = module.getReplayHandler(); if (replayHandler != null) { diff --git a/src/main/java/com/replaymod/extras/advancedscreenshots/AdvancedScreenshots.java b/src/main/java/com/replaymod/extras/advancedscreenshots/AdvancedScreenshots.java index 8b71d507..dd18f384 100644 --- a/src/main/java/com/replaymod/extras/advancedscreenshots/AdvancedScreenshots.java +++ b/src/main/java/com/replaymod/extras/advancedscreenshots/AdvancedScreenshots.java @@ -3,25 +3,6 @@ package com.replaymod.extras.advancedscreenshots; import com.replaymod.core.ReplayMod; import com.replaymod.extras.Extra; -//#if MC<11300 -//$$ import com.replaymod.core.versions.MCVer; -//$$ import com.replaymod.replay.events.ReplayDispatchKeypressesEvent; -//$$ import net.minecraft.client.Minecraft; -//$$ import net.minecraft.client.gui.GuiControls; -//$$ import net.minecraftforge.client.event.GuiScreenEvent; -//$$ import net.minecraftforge.common.MinecraftForge; -//$$ import org.lwjgl.input.Keyboard; -//#endif - -//#if MC>=10800 -//#if MC>=11300 -//#else -//$$ import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; -//#endif -//#else -//$$ import cpw.mods.fml.common.eventhandler.SubscribeEvent; -//#endif - public class AdvancedScreenshots implements Extra { private ReplayMod mod; @@ -29,33 +10,14 @@ public class AdvancedScreenshots implements Extra { @Override public void register(ReplayMod mod) { this.mod = mod; - //#if MC<11300 - //$$ MinecraftForge.EVENT_BUS.register(this); - //#endif } - //#if MC>=11300 private static AdvancedScreenshots instance; { instance = this; } public static void take() { if (instance != null) { instance.takeScreenshot(); } } - //#else - //$$ @SubscribeEvent - //$$ public void onDispatchKeypresses(ReplayDispatchKeypressesEvent.Pre event) { - //$$ Minecraft mc = MCVer.getMinecraft(); - //$$ if (mc.currentScreen instanceof GuiControls) return; - //$$ if (!Keyboard.getEventKeyState()) return; - //$$ if (Keyboard.isRepeatEvent()) return; - //$$ int keyCode = Keyboard.getEventKey() == 0 ? Keyboard.getEventCharacter() : Keyboard.getEventKey(); - //$$ if (keyCode == 0 || keyCode != mc.gameSettings.keyBindScreenshot.getKeyCode()) return; - //$$ - //$$ takeScreenshot(); - //$$ - //$$ event.setCanceled(true); - //$$ } - //#endif private void takeScreenshot() { ReplayMod.instance.runLater(() -> new GuiCreateScreenshot(mod).display()); diff --git a/src/main/java/com/replaymod/recording/handler/RecordingEventHandler.java b/src/main/java/com/replaymod/recording/handler/RecordingEventHandler.java index 24a58e42..d3529fcc 100755 --- a/src/main/java/com/replaymod/recording/handler/RecordingEventHandler.java +++ b/src/main/java/com/replaymod/recording/handler/RecordingEventHandler.java @@ -1,6 +1,5 @@ package com.replaymod.recording.handler; -import com.replaymod.recording.mixin.EntityLivingBaseAccessor; import com.replaymod.recording.mixin.IntegratedServerAccessor; import com.replaymod.recording.packet.PacketListener; import de.johni0702.minecraft.gui.utils.EventRegistrations; @@ -24,10 +23,7 @@ import net.minecraftforge.fml.common.gameevent.TickEvent; //#endif //#if MC>=10904 -//#if MC>=11300 -//#else -//$$ import net.minecraft.entity.EntityLiving; -//#endif +import com.replaymod.recording.mixin.EntityLivingBaseAccessor; import net.minecraft.inventory.EntityEquipmentSlot; import net.minecraft.network.datasync.EntityDataManager; import net.minecraft.util.EnumHand; @@ -169,8 +165,14 @@ public class RecordingEventHandler extends EventRegistrations { //$$ // Note: this leaves the lastY value offset by the eye height but because it's only used for relative //$$ // movement, that doesn't matter. //$$ S18PacketEntityTeleport teleportPacket = new S18PacketEntityTeleport(player); - //$$ teleportPacket.field_149457_c = MathHelper.floor_double(player.boundingBox.minY * 32); - //$$ packet = teleportPacket; + //$$ packet = new S18PacketEntityTeleport( + //$$ teleportPacket.func_149451_c(), + //$$ teleportPacket.func_149449_d(), + //$$ MathHelper.floor_double(player.boundingBox.minY * 32), + //$$ teleportPacket.func_149446_f(), + //$$ teleportPacket.func_149450_g(), + //$$ teleportPacket.func_149447_h() + //$$ ); //#endif } else { byte newYaw = (byte) ((int) (player.rotationYaw * 256.0F / 360.0F)); @@ -340,7 +342,7 @@ public class RecordingEventHandler extends EventRegistrations { //#if MC>=11300 dataManager.register(EntityLivingBaseAccessor.getLivingFlags(), (byte) state); //#else - //$$ dataManager.register(EntityLiving.HAND_STATES, (byte) state); + //$$ dataManager.register(EntityLivingBaseAccessor.getLivingFlags(), (byte) state); //#endif packetListener.save(new SPacketEntityMetadata(player.getEntityId(), dataManager, true)); } diff --git a/src/main/java/com/replaymod/recording/mixin/EntityLivingBaseAccessor.java b/src/main/java/com/replaymod/recording/mixin/EntityLivingBaseAccessor.java index 1bcd68a0..db4bdbfe 100644 --- a/src/main/java/com/replaymod/recording/mixin/EntityLivingBaseAccessor.java +++ b/src/main/java/com/replaymod/recording/mixin/EntityLivingBaseAccessor.java @@ -6,13 +6,13 @@ import org.spongepowered.asm.mixin.gen.Accessor; import javax.annotation.Nonnull; -//#if MC>=11300 +//#if MC>=10904 import net.minecraft.network.datasync.DataParameter; //#endif @Mixin(EntityLivingBase.class) public interface EntityLivingBaseAccessor { - //#if MC>=11300 + //#if MC>=10904 @Accessor("LIVING_FLAGS") @Nonnull @SuppressWarnings("ConstantConditions") diff --git a/src/main/java/com/replaymod/recording/mixin/MixinDownloadingPackFinder.java b/src/main/java/com/replaymod/recording/mixin/MixinDownloadingPackFinder.java index e1a6aed4..6f2888e3 100644 --- a/src/main/java/com/replaymod/recording/mixin/MixinDownloadingPackFinder.java +++ b/src/main/java/com/replaymod/recording/mixin/MixinDownloadingPackFinder.java @@ -1,4 +1,4 @@ -//#if MC>=11300 +//#if MC>=10800 package com.replaymod.recording.mixin; import com.replaymod.recording.packet.ResourcePackRecorder; @@ -39,7 +39,11 @@ public abstract class MixinDownloadingPackFinder implements ResourcePackRecorder //$$ @Redirect(method = "download", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/resource/ClientResourcePackCreator;loadServerPack(Ljava/io/File;)Ljava/util/concurrent/CompletableFuture;")) //$$ private CompletableFuture //#else + //#if MC>=10800 @Redirect(method = "downloadResourcePack", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/resources/DownloadingPackFinder;func_195741_a(Ljava/io/File;)Lcom/google/common/util/concurrent/ListenableFuture;")) + //#else + //$$ @Redirect(method = "func_180601_a", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/resources/ResourcePackRepository;func_177319_a(Ljava/io/File;)Lcom/google/common/util/concurrent/ListenableFuture;")) + //#endif private ListenableFuture //#endif recordDownloadedPack(DownloadingPackFinder downloadingPackFinder, File file) { diff --git a/src/main/java/com/replaymod/recording/mixin/SPacketSpawnMobAccessor.java b/src/main/java/com/replaymod/recording/mixin/SPacketSpawnMobAccessor.java index 65644251..778822af 100644 --- a/src/main/java/com/replaymod/recording/mixin/SPacketSpawnMobAccessor.java +++ b/src/main/java/com/replaymod/recording/mixin/SPacketSpawnMobAccessor.java @@ -7,16 +7,8 @@ import org.spongepowered.asm.mixin.gen.Accessor; @Mixin(SPacketSpawnMob.class) public interface SPacketSpawnMobAccessor { - //#if MC>=10904 @Accessor - //#else - //$$ @Accessor("field_149043_l") - //#endif EntityDataManager getDataManager(); - //#if MC>=10904 @Accessor - //#else - //$$ @Accessor("field_149043_l") - //#endif void setDataManager(EntityDataManager value); } diff --git a/src/main/java/com/replaymod/recording/mixin/SPacketSpawnPlayerAccessor.java b/src/main/java/com/replaymod/recording/mixin/SPacketSpawnPlayerAccessor.java index 5b87fee4..4426ec3c 100644 --- a/src/main/java/com/replaymod/recording/mixin/SPacketSpawnPlayerAccessor.java +++ b/src/main/java/com/replaymod/recording/mixin/SPacketSpawnPlayerAccessor.java @@ -7,16 +7,8 @@ import org.spongepowered.asm.mixin.gen.Accessor; @Mixin(SPacketSpawnPlayer.class) public interface SPacketSpawnPlayerAccessor { - //#if MC>=10809 @Accessor("watcher") - //#else - //$$ @Accessor("field_148960_i") - //#endif EntityDataManager getDataManager(); - //#if MC>=10809 @Accessor("watcher") - //#else - //$$ @Accessor("field_148960_i") - //#endif void setDataManager(EntityDataManager value); } diff --git a/src/main/java/com/replaymod/recording/packet/PacketListener.java b/src/main/java/com/replaymod/recording/packet/PacketListener.java index 85a68516..e4e44e0c 100755 --- a/src/main/java/com/replaymod/recording/packet/PacketListener.java +++ b/src/main/java/com/replaymod/recording/packet/PacketListener.java @@ -130,7 +130,7 @@ public class PacketListener extends ChannelInboundHandlerAdapter { //#if MC>=10800 UUID uuid = ((SPacketSpawnPlayer) packet).getUniqueId(); //#else - //$$ UUID uuid = ((S0CPacketSpawnPlayer) packet).field_148955_b.getId(); + //$$ UUID uuid = ((S0CPacketSpawnPlayer) packet).func_148948_e().getId(); //#endif Set uuids = new HashSet<>(Arrays.asList(metaData.getPlayers())); uuids.add(uuid.toString()); @@ -300,16 +300,21 @@ public class PacketListener extends ChannelInboundHandlerAdapter { @SuppressWarnings("unchecked") private byte[] getPacketData(Packet packet) throws Exception { - //#if MC>=10904 if (packet instanceof SPacketSpawnMob) { SPacketSpawnMob p = (SPacketSpawnMob) packet; SPacketSpawnMobAccessor pa = (SPacketSpawnMobAccessor) p; if (pa.getDataManager() == null) { pa.setDataManager(new EntityDataManager(null)); if (p.getDataManagerEntries() != null) { + //#if MC>=10904 for (EntityDataManager.DataEntry entry : p.getDataManagerEntries()) { DataManager_set(pa.getDataManager(), entry); } + //#else + //$$ for(DataWatcher.WatchableObject wo : (List) p.func_149027_c()) { + //$$ pa.getDataManager().addObject(wo.getDataValueId(), wo.getObject()); + //$$ } + //#endif } } } @@ -320,45 +325,18 @@ public class PacketListener extends ChannelInboundHandlerAdapter { if (pa.getDataManager() == null) { pa.setDataManager(new EntityDataManager(null)); if (p.getDataManagerEntries() != null) { + //#if MC>=10904 for (EntityDataManager.DataEntry entry : p.getDataManagerEntries()) { DataManager_set(pa.getDataManager(), entry); } + //#else + //$$ for(DataWatcher.WatchableObject wo : (List) p.func_148944_c()) { + //$$ pa.getDataManager().addObject(wo.getDataValueId(), wo.getObject()); + //$$ } + //#endif } } } - //#else - //$$ if(packet instanceof S0FPacketSpawnMob) { - //$$ S0FPacketSpawnMob p = (S0FPacketSpawnMob) packet; - //$$ if (p.field_149043_l == null) { - //$$ p.field_149043_l = new DataWatcher(null); - //$$ if(p.func_149027_c() != null) { - //$$ for(DataWatcher.WatchableObject wo : (List) p.func_149027_c()) { - //$$ p.field_149043_l.addObject(wo.getDataValueId(), wo.getObject()); - //$$ } - //$$ } - //$$ } - //$$ } - //$$ - //$$ if(packet instanceof S0CPacketSpawnPlayer) { - //$$ S0CPacketSpawnPlayer p = (S0CPacketSpawnPlayer) packet; - //#if MC>=10809 - //$$ if (p.watcher == null) { - //$$ p.watcher = new DataWatcher(null); - //$$ if(p.func_148944_c() != null) { - //$$ for(DataWatcher.WatchableObject wo : p.func_148944_c()) { - //$$ p.watcher.addObject(wo.getDataValueId(), wo.getObject()); - //#else - //$$ if (p.field_148960_i == null) { - //$$ p.field_148960_i = new DataWatcher(null); - //$$ if(p.func_148944_c() != null) { - //$$ for(DataWatcher.WatchableObject wo : (List) p.func_148944_c()) { - //$$ p.field_148960_i.addObject(wo.getDataValueId(), wo.getObject()); - //#endif - //$$ } - //$$ } - //$$ } - //$$ } - //#endif //#if MC>=10800 Integer packetId = connectionState.getPacketId(EnumPacketDirection.CLIENTBOUND, packet); diff --git a/src/main/java/com/replaymod/recording/packet/ResourcePackRecorder.java b/src/main/java/com/replaymod/recording/packet/ResourcePackRecorder.java index a3743b5f..706ff199 100644 --- a/src/main/java/com/replaymod/recording/packet/ResourcePackRecorder.java +++ b/src/main/java/com/replaymod/recording/packet/ResourcePackRecorder.java @@ -7,6 +7,7 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiYesNo; import net.minecraft.client.multiplayer.ServerData; import net.minecraft.client.multiplayer.ServerList; +import net.minecraft.client.resources.DownloadingPackFinder; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -17,12 +18,10 @@ import net.minecraft.client.gui.GuiYesNoCallback; import net.minecraft.client.resources.I18n; //#endif -//#if MC>=11300 +//#if MC>=10800 import de.johni0702.minecraft.gui.utils.Consumer; -import net.minecraft.client.resources.DownloadingPackFinder; //#else //$$ import net.minecraft.client.gui.GuiScreenWorking; -//$$ import net.minecraft.client.resources.ResourcePackRepository; //$$ import net.minecraft.util.HttpUtil; //#endif @@ -33,8 +32,6 @@ import net.minecraft.network.play.server.SPacketResourcePackSend; //#endif //#if MC>=10800 -import com.google.common.util.concurrent.FutureCallback; -import com.google.common.util.concurrent.Futures; //#if MC>=11400 //$$ import java.util.concurrent.CompletableFuture; //#else @@ -42,12 +39,8 @@ import com.google.common.util.concurrent.ListenableFuture; //#endif import net.minecraft.client.network.NetHandlerPlayClient; import net.minecraft.network.NetworkManager; -//#if MC<11300 -//$$ import org.apache.commons.io.FileUtils; -//#endif - -import javax.annotation.Nonnull; //#else +//$$ import com.replaymod.core.mixin.ResourcePackRepositoryAccessor; //$$ import net.minecraft.client.multiplayer.ServerData.ServerResourceMode; //$$ import net.minecraft.client.multiplayer.ServerList; //$$ import net.minecraft.client.resources.FileResourcePack; @@ -192,7 +185,6 @@ public class ResourcePackRecorder { throwable -> mc.getConnection().sendPacket(makeStatusPacket(hash, Action.FAILED_DOWNLOAD))); } - //#if MC>=11300 private //#if MC>=11400 //$$ CompletableFuture @@ -209,102 +201,6 @@ public class ResourcePackRecorder { void setRequestCallback(Consumer callback); } //#else - //$$ private ListenableFuture downloadResourcePack(final int requestId, String url, String hash) { - //$$ final ResourcePackRepository repo = mc.mcResourcePackRepository; - //$$ String fileName; - //$$ if (hash.matches("^[a-f0-9]{40}$")) { - //$$ fileName = hash; - //$$ } else { - //$$ fileName = url.substring(url.lastIndexOf("/") + 1); - //$$ - //$$ if (fileName.contains("?")) { - //$$ fileName = fileName.substring(0, fileName.indexOf("?")); - //$$ } - //$$ - //$$ if (!fileName.endsWith(".zip")) { - //$$ return Futures.immediateFailedFuture(new IllegalArgumentException("Invalid filename; must end in .zip")); - //$$ } - //$$ - //$$ fileName = "legacy_" + fileName.replaceAll("\\W", ""); - //$$ } - //$$ - //$$ final File file = new File(repo.dirServerResourcepacks, fileName); - //#if MC>=10809 - //$$ repo.lock.lock(); - //#else - //$$ repo.field_177321_h.lock(); - //#endif - //$$ try { - //#if MC>=10809 - //$$ repo.clearResourcePack(); - //#else - //$$ repo.func_148529_f(); - //#endif - //$$ - //$$ if (file.exists() && hash.length() == 40) { - //$$ try { - //$$ String fileHash = Hashing.sha1().hashBytes(Files.toByteArray(file)).toString(); - //$$ if (fileHash.equals(hash)) { - //$$ recordResourcePack(file, requestId); - //$$ return setServerResourcePack(file); - //$$ } - //$$ - //$$ logger.warn("File " + file + " had wrong hash (expected " + hash + ", found " + fileHash + "). Deleting it."); - //$$ FileUtils.deleteQuietly(file); - //$$ } catch (IOException ioexception) { - //$$ logger.warn("File " + file + " couldn\'t be hashed. Deleting it.", ioexception); - //$$ FileUtils.deleteQuietly(file); - //$$ } - //$$ } - //$$ - //$$ final GuiScreenWorking guiScreen = new GuiScreenWorking(); - //$$ final Minecraft mc = Minecraft.getMinecraft(); - //$$ - //$$ Futures.getUnchecked(mc.addScheduledTask(() -> mc.displayGuiScreen(guiScreen))); - //$$ - //#if MC>=10809 - //#if MC>=11002 - //#if MC>=11100 - //$$ Map sessionInfo = ResourcePackRepository.getDownloadHeaders(); - //#else - //$$ Map sessionInfo = ResourcePackRepository.func_190115_a(); - //#endif - //#else - //$$ Map sessionInfo = Minecraft.getSessionInfo(); - //#endif - //$$ repo.downloadingPacks = HttpUtil.downloadResourcePack(file, url, sessionInfo, 50 * 1024 * 1024, guiScreen, mc.getProxy()); - //$$ Futures.addCallback(repo.downloadingPacks, new FutureCallback() { - //#else - //$$ Map sessionInfo = Minecraft.getSessionInfo(); - //$$ repo.field_177322_i = HttpUtil.func_180192_a(file, url, sessionInfo, 50 * 1024 * 1024, guiScreen, mc.getProxy()); - //$$ Futures.addCallback(repo.field_177322_i, new FutureCallback() { - //#endif - //$$ @Override - //$$ public void onSuccess(Object value) { - //$$ recordResourcePack(file, requestId); - //$$ setServerResourcePack(file); - //$$ } - //$$ - //$$ @Override - //$$ public void onFailure(@Nonnull Throwable throwable) { - //$$ throwable.printStackTrace(); - //$$ } - //$$ }); - //#if MC>=10809 - //$$ return repo.downloadingPacks; - //#else - //$$ return repo.field_177322_i; - //#endif - //$$ } finally { - //#if MC>=10809 - //$$ repo.lock.unlock(); - //#else - //$$ repo.field_177321_h.unlock(); - //#endif - //$$ } - //$$ } - //#endif - //#else //$$ public synchronized S3FPacketCustomPayload handleResourcePack(S3FPacketCustomPayload packet) { //$$ final int requestId = nextRequestId++; //$$ final String url = new String(packet.func_149168_d(), Charsets.UTF_8); @@ -338,7 +234,8 @@ public class ResourcePackRecorder { //$$ } //$$ //$$ private void downloadResourcePack(final int requestId, String url) { - //$$ final ResourcePackRepository repo = mc.mcResourcePackRepository; + //$$ final ResourcePackRepository repo = mc.getResourcePackRepository(); + //$$ final ResourcePackRepositoryAccessor acc = (ResourcePackRepositoryAccessor) repo; //$$ //$$ String fileName = url.substring(url.lastIndexOf("/") + 1); //$$ @@ -352,7 +249,7 @@ public class ResourcePackRecorder { //$$ //$$ fileName = fileName.replaceAll("\\W", ""); //$$ - //$$ File file = new File(repo.field_148534_e, fileName); + //$$ File file = new File(acc.getCacheDir(), fileName); //$$ //$$ HashMap hashmap = new HashMap<>(); //$$ hashmap.put("X-Minecraft-Username", mc.getSession().getUsername()); @@ -362,14 +259,14 @@ public class ResourcePackRecorder { //$$ GuiScreenWorking guiScreen = new GuiScreenWorking(); //$$ Minecraft.getMinecraft().displayGuiScreen(guiScreen); //$$ repo.func_148529_f(); - //$$ repo.field_148533_g = true; + //$$ acc.setActive(true); //$$ // Lambdas MUST NOT be used with methods that need re-obfuscation in FG prior to 2.2 (will result in AbstractMethodError) //$$ //noinspection Convert2Lambda //$$ HttpUtil.downloadResourcePack(file, url, new HttpUtil.DownloadListener() { //$$ public void onDownloadComplete(File file) { - //$$ if (repo.field_148533_g) { - //$$ repo.field_148533_g = false; - //$$ repo.field_148532_f = new FileResourcePack(file); + //$$ if (acc.isActive()) { + //$$ acc.setActive(false); + //$$ acc.setPack(new FileResourcePack(file)); //$$ Minecraft.getMinecraft().scheduleResourcesRefresh(); //$$ recordResourcePack(file, requestId); //$$ } diff --git a/src/main/java/com/replaymod/render/blend/exporters/ItemExporter.java b/src/main/java/com/replaymod/render/blend/exporters/ItemExporter.java index 60637cf6..3af25e7c 100644 --- a/src/main/java/com/replaymod/render/blend/exporters/ItemExporter.java +++ b/src/main/java/com/replaymod/render/blend/exporters/ItemExporter.java @@ -17,20 +17,21 @@ import net.minecraftforge.client.model.pipeline.LightUtil; //#endif //#if MC>=11300 -import com.replaymod.render.blend.mixin.ItemRendererAccessor; import net.minecraft.client.renderer.model.BakedQuad; import net.minecraft.client.renderer.model.IBakedModel; //#else //$$ import net.minecraft.client.renderer.block.model.BakedQuad; //#if MC>=10904 -//$$ import net.minecraft.client.renderer.RenderItem; //$$ import net.minecraft.client.renderer.block.model.IBakedModel; //#else -//$$ import net.minecraft.client.renderer.entity.RenderItem; //$$ import net.minecraft.client.resources.model.IBakedModel; //#endif //#endif +//#if MC>=10904 +import com.replaymod.render.blend.mixin.ItemRendererAccessor; +//#endif + import java.util.List; import java.util.Random; @@ -117,15 +118,11 @@ public class ItemExporter implements Exporter { private static void renderQuads(Object renderItem, BlendMeshBuilder buffer, List quads, ItemStack stack) { for (BakedQuad quad : quads) { int color = stack != null && quad.hasTintIndex() - //#if MC>=11300 + //#if MC>=10904 ? ((ItemRendererAccessor) renderItem).getItemColors().getColor(stack, quad.getTintIndex()) | 0xff000000 //#else - //#if MC>=10904 - //$$ ? ((RenderItem) renderItem).itemColors.getColorFromItemstack(stack, quad.getTintIndex()) | 0xff000000 - //#else //$$ ? stack.getItem().getColorFromItemStack(stack, quad.getTintIndex()) | 0xff000000 //#endif - //#endif : 0xffffffff; //#if MC>=11400 //$$ buffer.putVertexData(quad.getVertexData()); diff --git a/src/main/java/com/replaymod/render/blend/mixin/ItemRendererAccessor.java b/src/main/java/com/replaymod/render/blend/mixin/ItemRendererAccessor.java index 8b6a5bf6..8f28a1e7 100644 --- a/src/main/java/com/replaymod/render/blend/mixin/ItemRendererAccessor.java +++ b/src/main/java/com/replaymod/render/blend/mixin/ItemRendererAccessor.java @@ -1,4 +1,4 @@ -//#if MC>=11300 +//#if MC>=10904 package com.replaymod.render.blend.mixin; import net.minecraft.client.renderer.ItemRenderer; diff --git a/src/main/java/com/replaymod/render/hooks/ChunkLoadingRenderGlobal.java b/src/main/java/com/replaymod/render/hooks/ChunkLoadingRenderGlobal.java index a0d921d5..5dca63b6 100644 --- a/src/main/java/com/replaymod/render/hooks/ChunkLoadingRenderGlobal.java +++ b/src/main/java/com/replaymod/render/hooks/ChunkLoadingRenderGlobal.java @@ -70,7 +70,7 @@ public class ChunkLoadingRenderGlobal { //#if MC>=10904 PriorityBlockingQueue queueChunkUpdates = renderDispatcherAcc.getQueueChunkUpdates(); //#else - //$$ BlockingQueue queueChunkUpdates = renderDispatcher.queueChunkUpdates; + //$$ BlockingQueue queueChunkUpdates = renderDispatcherAcc.getQueueChunkUpdates(); //#endif workerJailingQueue = new JailingQueue<>(queueChunkUpdates); renderDispatcherAcc.setQueueChunkUpdates(workerJailingQueue); diff --git a/src/main/java/com/replaymod/render/hooks/EntityRendererHandler.java b/src/main/java/com/replaymod/render/hooks/EntityRendererHandler.java index a1830fd5..3123f4bb 100644 --- a/src/main/java/com/replaymod/render/hooks/EntityRendererHandler.java +++ b/src/main/java/com/replaymod/render/hooks/EntityRendererHandler.java @@ -9,17 +9,11 @@ import lombok.Getter; import net.minecraft.client.Minecraft; //#if MC<11400 -//#if MC>=10800 //#if MC>=11300 import net.minecraftforge.fml.hooks.BasicEventHooks; //#else -//$$ import net.minecraft.client.renderer.GlStateManager; //$$ import net.minecraftforge.fml.common.FMLCommonHandler; //#endif -//#else -//$$ import com.replaymod.core.versions.MCVer.GlStateManager; -//$$ import cpw.mods.fml.common.FMLCommonHandler; -//#endif //#endif import java.io.IOException; @@ -59,21 +53,7 @@ public class EntityRendererHandler implements WorldRenderer { //#endif //#endif - //#if MC>=11300 mc.entityRenderer.renderWorld(partialTicks, finishTimeNano); - //#else - //$$ mc.entityRenderer.updateLightmap(partialTicks); - //$$ - //$$ GlStateManager.enableDepth(); - //$$ GlStateManager.enableAlpha(); - //$$ GlStateManager.alphaFunc(516, 0.5F); - //$$ - //#if MC>=10800 - //$$ mc.entityRenderer.renderWorldPass(2, partialTicks, finishTimeNano); - //#else - //$$ mc.entityRenderer.renderWorld(partialTicks, finishTimeNano); - //#endif - //#endif //#if MC<11400 //#if MC>=11300 diff --git a/src/main/java/com/replaymod/render/rendering/Pipeline.java b/src/main/java/com/replaymod/render/rendering/Pipeline.java index d6ed6e45..39063e79 100644 --- a/src/main/java/com/replaymod/render/rendering/Pipeline.java +++ b/src/main/java/com/replaymod/render/rendering/Pipeline.java @@ -60,7 +60,7 @@ public class Pipeline implements Runnable { //#if MC>=11300 if (GLFW.glfwWindowShouldClose(mc.mainWindow.getHandle()) || ((MinecraftAccessor) mc).hasCrashed()) { //#else - //$$ if (Display.isCloseRequested() || mc.hasCrashed) { + //$$ if (Display.isCloseRequested() || ((MinecraftAccessor) mc).hasCrashed()) { //#endif Thread.currentThread().interrupt(); return; diff --git a/src/main/java/com/replaymod/render/rendering/VideoRenderer.java b/src/main/java/com/replaymod/render/rendering/VideoRenderer.java index 44afb5e0..dcdcef53 100644 --- a/src/main/java/com/replaymod/render/rendering/VideoRenderer.java +++ b/src/main/java/com/replaymod/render/rendering/VideoRenderer.java @@ -74,11 +74,7 @@ public class VideoRenderer implements RenderInfo { private int fps; private boolean mouseWasGrabbed; private boolean debugInfoWasShown; - //#if MC>=10904 private Map originalSoundLevels; - //#else - //$$ private Map originalSoundLevels; - //#endif private TimelinePlayer timelinePlayer; private Future timelinePlayerFuture; @@ -266,7 +262,6 @@ public class VideoRenderer implements RenderInfo { //#endif // Mute all sounds except GUI sounds (buttons, etc.) - //#if MC>=11300 originalSoundLevels = new EnumMap<>(SoundCategory.class); for (SoundCategory category : SoundCategory.values()) { if (category != SoundCategory.MASTER) { @@ -274,21 +269,6 @@ public class VideoRenderer implements RenderInfo { mc.gameSettings.setSoundLevel(category, 0); } } - //#else - //$$ Map mutedSounds = new EnumMap<>(SoundCategory.class); - //$$ for (SoundCategory category : SoundCategory.values()) { - //$$ mutedSounds.put(category, 0f); - //$$ } - //#if MC>=10904 - //$$ originalSoundLevels = mc.gameSettings.soundLevels; - //$$ mutedSounds.put(SoundCategory.MASTER, originalSoundLevels.get(SoundCategory.MASTER)); - //$$ mc.gameSettings.soundLevels = mutedSounds; - //#else - //$$ originalSoundLevels = mc.gameSettings.mapSoundLevels; - //$$ mutedSounds.put(SoundCategory.MASTER, (Float) originalSoundLevels.get(SoundCategory.MASTER)); - //$$ mc.gameSettings.mapSoundLevels = mutedSounds; - //#endif - //#endif fps = settings.getFramesPerSecond(); @@ -348,17 +328,9 @@ public class VideoRenderer implements RenderInfo { //$$ mc.mouseHelper.grabMouseCursor(); //#endif } - //#if MC>=10904 - //#if MC>=11300 for (Map.Entry entry : originalSoundLevels.entrySet()) { mc.gameSettings.setSoundLevel(entry.getKey(), entry.getValue()); } - //#else - //$$ mc.gameSettings.soundLevels = originalSoundLevels; - //#endif - //#else - //$$ mc.gameSettings.mapSoundLevels = originalSoundLevels; - //#endif mc.displayGuiScreen(null); //#if MC>=10800 if (chunkLoadingRenderGlobal != null) { diff --git a/src/main/java/com/replaymod/replay/InputReplayTimer.java b/src/main/java/com/replaymod/replay/InputReplayTimer.java index 67a041d1..41efec35 100644 --- a/src/main/java/com/replaymod/replay/InputReplayTimer.java +++ b/src/main/java/com/replaymod/replay/InputReplayTimer.java @@ -1,6 +1,7 @@ package com.replaymod.replay; import com.replaymod.core.utils.WrappedTimer; +import com.replaymod.core.versions.MCVer; import com.replaymod.replay.camera.CameraController; import com.replaymod.replay.camera.CameraEntity; import net.minecraft.client.Minecraft; @@ -10,15 +11,8 @@ import net.minecraft.util.Timer; import com.replaymod.core.versions.MCVer; import org.lwjgl.glfw.GLFW; //#else -//$$ import com.replaymod.replay.events.ReplayDispatchKeypressesEvent; -//$$ import net.minecraft.client.gui.GuiScreen; -//$$ import net.minecraft.client.settings.GameSettings; //$$ import net.minecraft.client.settings.KeyBinding; -//$$ import net.minecraft.crash.CrashReport; -//$$ import net.minecraft.util.ReportedException; //$$ import net.minecraftforge.client.ForgeHooksClient; -//$$ import net.minecraftforge.common.MinecraftForge; -//$$ import org.lwjgl.input.Keyboard; //$$ import org.lwjgl.input.Mouse; //$$ import net.minecraftforge.fml.common.FMLCommonHandler; //#if MC>=10800 @@ -31,6 +25,11 @@ import org.lwjgl.glfw.GLFW; //#endif //#endif +//#if MC>=10904 +//#else +//$$ import net.minecraft.client.multiplayer.WorldClient; +//#endif + public class InputReplayTimer extends WrappedTimer { private final ReplayModReplay mod; private final Minecraft mc; @@ -70,14 +69,10 @@ public class InputReplayTimer extends WrappedTimer { } mc.keyboardListener.tick(); //#else + //#if MC>=10904 //$$ if (mc.currentScreen == null || mc.currentScreen.allowUserInput) { - //$$ while (Mouse.next()) { - //$$ handleMouseEvent(); - //$$ } - //$$ - //$$ while (Keyboard.next()) { - //$$ handleKeyEvent(); - //$$ } + //$$ ((MCVer.MinecraftMethodAccessor) mc).replayModRunTickMouse(); + //$$ ((MCVer.MinecraftMethodAccessor) mc).replayModRunTickKeyboard(); //$$ } else { //#if MC<11300 //#if MC>=10800 @@ -91,6 +86,21 @@ public class InputReplayTimer extends WrappedTimer { //#endif //#endif //$$ } + //#else + //$$ // 1.8.9 and below has one giant tick function, so we try to only do keyboard & mouse as far as possible + //$$ WorldClient world = mc.theWorld; + //$$ mc.theWorld = null; + //#if MC>=10800 + //$$ try { + //$$ mc.runTick(); + //$$ } catch (IOException e) { // *SIGH* + //$$ e.printStackTrace(); + //$$ } + //#else + //$$ mc.runTick(); + //#endif + //$$ mc.theWorld = world; + //#endif //#endif } } @@ -115,180 +125,6 @@ public class InputReplayTimer extends WrappedTimer { } } - //#if MC<11300 - //$$ protected void handleMouseEvent() { - //$$ if (ForgeHooksClient.postMouseEvent()) return; - //$$ - //$$ int button = Mouse.getEventButton() - 100; - //$$ boolean pressed = Mouse.getEventButtonState(); - //$$ - //$$ // Update key binding states - //$$ KeyBinding.setKeyBindState(button, pressed); - //$$ if (pressed) { - //$$ KeyBinding.onTick(button); - //$$ } - //$$ - //$$ int wheel = Mouse.getEventDWheel(); - //$$ handleScroll(wheel); - //$$ - //$$ if (mc.currentScreen == null) { - //$$ if (!mc.inGameHasFocus && Mouse.getEventButtonState()) { - //$$ // Regrab mouse if the user clicks into the window - //$$ mc.setIngameFocus(); - //$$ } - //$$ } else { - //#if MC>=10800 - //$$ try { - //$$ mc.currentScreen.handleMouseInput(); - //$$ } catch (IOException e) { // WHO IS RESPONSIBLE FOR THIS MESS?!? - //$$ e.printStackTrace(); - //$$ } - //#else - //$$ mc.currentScreen.handleMouseInput(); - //#endif - //$$ } - //$$ - //$$ FMLCommonHandler.instance().fireMouseInput(); - //$$ } - //$$ - //$$ protected void handleKeyEvent() { - //$$ // TODO 1.7.10: This might be missing some 1.7.10-only key bindings or implement some of them incorrectly - //$$ int key = Keyboard.getEventKey() == 0 ? Keyboard.getEventCharacter() + 256 : Keyboard.getEventKey(); - //$$ boolean pressed = Keyboard.getEventKeyState(); - //$$ - //$$ KeyBinding.setKeyBindState(key, pressed); - //$$ if (pressed) { - //$$ KeyBinding.onTick(key); - //$$ } - //$$ - //$$ // Still want to be able to create debug crashes ]:D - //$$ if (mc.debugCrashKeyPressTime > 0) { - //$$ if (Minecraft.getSystemTime() - mc.debugCrashKeyPressTime >= 6000L) { - //$$ throw new ReportedException(new CrashReport("Manually triggered debug crash", new Throwable())); - //$$ } - //$$ - //$$ if (!Keyboard.isKeyDown(Keyboard.KEY_F3) || !Keyboard.isKeyDown(Keyboard.KEY_C)) { - //$$ mc.debugCrashKeyPressTime = -1; - //$$ } - //$$ } else if (Keyboard.isKeyDown(Keyboard.KEY_F3) && Keyboard.isKeyDown(Keyboard.KEY_C)) { - //$$ mc.debugCrashKeyPressTime = Minecraft.getSystemTime(); - //$$ } - //$$ - //$$ // Twitch, screenshot, fullscreen, etc. (stuff that works everywhere) - //$$ if (!MinecraftForge.EVENT_BUS.post(new ReplayDispatchKeypressesEvent.Pre())) { - //$$ mc.dispatchKeypresses(); - //$$ } - //$$ - //$$ if (pressed) { - //$$ // This might be subject to change as vanilla shaders are still kinda unused in 1.8 - //$$ if (key == Keyboard.KEY_F4 && mc.entityRenderer != null) { - //#if MC>=10800 - //$$ mc.entityRenderer.switchUseShader(); - //#else - //$$ mc.entityRenderer.activateNextShader(); - //#endif - //$$ } - //$$ - //$$ if (mc.currentScreen != null) { - //#if MC>=10800 - //$$ try { - //$$ mc.currentScreen.handleKeyboardInput(); - //$$ } catch (IOException e) { // AND WHO THOUGHT THIS WAS A GREAT IDEA? - //$$ e.printStackTrace(); - //$$ } - //#else - //$$ mc.currentScreen.handleKeyboardInput(); - //#endif - //$$ } else { - //$$ if (key == Keyboard.KEY_ESCAPE) { - //$$ mc.displayInGameMenu(); - //$$ } - //$$ - //$$ // Following are a ton of vanilla keyboard shortcuts, some are removed as they're useless in the - //$$ // replay viewer as of now - //$$ // TODO Update maybe add new key bindings - //$$ // TODO: Translate magic values to Keyboard.KEY_ constants - //$$ - //$$ if (key == 32 && Keyboard.isKeyDown(61) && mc.ingameGUI != null) { - //#if MC>=11100 - //$$ mc.ingameGUI.getChatGUI().clearChatMessages(false); - //#else - //$$ mc.ingameGUI.getChatGUI().clearChatMessages(); - //#endif - //$$ } - //$$ - //$$ if (key == 31 && Keyboard.isKeyDown(61)) { - //$$ mc.refreshResources(); - //$$ } - //$$ - //$$ if (key == 20 && Keyboard.isKeyDown(61)) { - //$$ mc.refreshResources(); - //$$ } - //$$ - //$$ if (key == 33 && Keyboard.isKeyDown(61)) { - //$$ boolean flag1 = Keyboard.isKeyDown(42) | Keyboard.isKeyDown(54); - //$$ mc.gameSettings.setOptionValue(GameSettings.Options.RENDER_DISTANCE, flag1 ? -1 : 1); - //$$ } - //$$ - //$$ if (key == 30 && Keyboard.isKeyDown(61)) { - //$$ mc.renderGlobal.loadRenderers(); - //$$ } - //$$ - //$$ if (key == 48 && Keyboard.isKeyDown(61)) { - //#if MC>=10800 - //$$ mc.getRenderManager().setDebugBoundingBox(!mc.getRenderManager().isDebugBoundingBox()); - //#else - //$$ RenderManager.debugBoundingBox = !RenderManager.debugBoundingBox; - //#endif - //$$ } - //$$ - //$$ if (key == 25 && Keyboard.isKeyDown(61)) { - //$$ mc.gameSettings.pauseOnLostFocus = !mc.gameSettings.pauseOnLostFocus; - //$$ mc.gameSettings.saveOptions(); - //$$ } - //$$ - //$$ if (key == 59) { - //$$ mc.gameSettings.hideGUI = !mc.gameSettings.hideGUI; - //$$ } - //$$ - //$$ if (key == 61) { - //$$ mc.gameSettings.showDebugInfo = !mc.gameSettings.showDebugInfo; - //$$ mc.gameSettings.showDebugProfilerChart = GuiScreen.isShiftKeyDown(); - //$$ } - //$$ - //$$ if (mc.gameSettings.keyBindTogglePerspective.isPressed()) { - //$$ mc.gameSettings.thirdPersonView = (mc.gameSettings.thirdPersonView + 1) % 3; - //$$ - //#if MC>=10800 - //$$ if (mc.entityRenderer != null) { // Extra check, not in vanilla code - //$$ if (mc.gameSettings.thirdPersonView == 0) { - //$$ mc.entityRenderer.loadEntityShader(mc.getRenderViewEntity()); - //$$ } else if (mc.gameSettings.thirdPersonView == 1) { - //$$ mc.entityRenderer.loadEntityShader(null); - //$$ } - //$$ } - //#endif - //$$ } - //$$ } - //$$ - //$$ // Navigation in the debug chart - //$$ if (mc.gameSettings.showDebugInfo && mc.gameSettings.showDebugProfilerChart) { - //$$ if (key == Keyboard.KEY_0) { - //$$ mc.updateDebugProfilerName(0); - //$$ } - //$$ - //$$ for (int i = 0; i < 9; ++i) { - //$$ if (key == 2 + i) { - //$$ mc.updateDebugProfilerName(i + 1); - //$$ } - //$$ } - //$$ } - //$$ } - //$$ - //$$ FMLCommonHandler.instance().fireKeyInput(); - //$$ } - //#endif - //#if MC<=10710 //$$ 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 4a4ed1c4..c5433ee6 100644 --- a/src/main/java/com/replaymod/replay/NoGuiScreenshot.java +++ b/src/main/java/com/replaymod/replay/NoGuiScreenshot.java @@ -59,9 +59,9 @@ public class NoGuiScreenshot { mc.entityRenderer.renderWorld(MCVer.getRenderPartialTicks(), System.nanoTime()); //#else //#if MC>=10809 - //$$ mc.entityRenderer.updateCameraAndRender(mc.timer.renderPartialTicks, System.nanoTime()); + //$$ mc.entityRenderer.updateCameraAndRender(MCVer.getRenderPartialTicks(), System.nanoTime()); //#else - //$$ mc.entityRenderer.updateCameraAndRender(mc.timer.renderPartialTicks); + //$$ mc.entityRenderer.updateCameraAndRender(MCVer.getRenderPartialTicks()); //#endif //#endif diff --git a/src/main/java/com/replaymod/replay/ReplayHandler.java b/src/main/java/com/replaymod/replay/ReplayHandler.java index aa33b932..70262ca6 100755 --- a/src/main/java/com/replaymod/replay/ReplayHandler.java +++ b/src/main/java/com/replaymod/replay/ReplayHandler.java @@ -16,7 +16,6 @@ import com.replaymod.replay.events.ReplayClosedCallback; import com.replaymod.replay.events.ReplayClosingCallback; import com.replaymod.replay.events.ReplayOpenedCallback; import com.replaymod.replay.gui.overlay.GuiReplayOverlay; -import com.replaymod.replay.mixin.EntityLivingBaseAccessor; import com.replaymod.replaystudio.data.Marker; import com.replaymod.replaystudio.replay.ReplayFile; import com.replaymod.replaystudio.util.Location; @@ -38,9 +37,11 @@ import java.io.IOException; import java.util.*; //#if MC>=11300 +import com.replaymod.replay.mixin.EntityLivingBaseAccessor; import net.minecraft.client.MainWindow; import net.minecraft.entity.EntityLivingBase; //#else +//$$ import com.replaymod.replay.mixin.EntityOtherPlayerMPAccessor; //$$ import net.minecraft.client.entity.EntityOtherPlayerMP; //$$ import net.minecraft.client.gui.ScaledResolution; //$$ import org.lwjgl.opengl.Display; @@ -685,9 +686,10 @@ public class ReplayHandler { //#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; + //$$ EntityOtherPlayerMPAccessor ea = (EntityOtherPlayerMPAccessor) e; + //$$ e.setPosition(ea.getOtherPlayerMPX(), ea.getOtherPlayerMPY(), ea.getOtherPlayerMPZ()); + //$$ e.rotationYaw = (float) ea.getOtherPlayerMPYaw(); + //$$ e.rotationPitch = (float) ea.getOtherPlayerMPPitch(); //$$ } //#endif } diff --git a/src/main/java/com/replaymod/replay/camera/CameraEntity.java b/src/main/java/com/replaymod/replay/camera/CameraEntity.java index 3ea4de8b..7741435c 100755 --- a/src/main/java/com/replaymod/replay/camera/CameraEntity.java +++ b/src/main/java/com/replaymod/replay/camera/CameraEntity.java @@ -701,8 +701,8 @@ public class CameraEntity if (lastHandRendered != player) { lastHandRendered = player; - //#if MC>=10904 FirstPersonRendererAccessor acc = (FirstPersonRendererAccessor) mc.entityRenderer.itemRenderer; + //#if MC>=10904 acc.setPrevEquippedProgressMainHand(1); acc.setPrevEquippedProgressOffHand(1); acc.setEquippedProgressMainHand(1); @@ -710,10 +710,10 @@ public class CameraEntity acc.setItemStackMainHand(player.getItemStackFromSlot(EntityEquipmentSlot.MAINHAND)); acc.setItemStackOffHand(player.getItemStackFromSlot(EntityEquipmentSlot.OFFHAND)); //#else - //$$ mc.entityRenderer.itemRenderer.prevEquippedProgress = 1; - //$$ mc.entityRenderer.itemRenderer.equippedProgress = 1; - //$$ mc.entityRenderer.itemRenderer.itemToRender = player.inventory.getCurrentItem(); - //$$ mc.entityRenderer.itemRenderer.equippedItemSlot = player.inventory.currentItem; + //$$ acc.setPrevEquippedProgress(1); + //$$ acc.setEquippedProgress(1); + //$$ acc.setItemToRender(player.inventory.getCurrentItem()); + //$$ acc.setEquippedItemSlot(player.inventory.currentItem); //#endif diff --git a/src/main/java/com/replaymod/replay/camera/SpectatorCameraController.java b/src/main/java/com/replaymod/replay/camera/SpectatorCameraController.java index 4d92a33f..ea23fdaf 100644 --- a/src/main/java/com/replaymod/replay/camera/SpectatorCameraController.java +++ b/src/main/java/com/replaymod/replay/camera/SpectatorCameraController.java @@ -61,15 +61,15 @@ public class SpectatorCameraController implements CameraController { //#else camera.inventory = viewPlayer.inventory; //#endif - //#if MC>=10904 EntityPlayerAccessor cameraA = (EntityPlayerAccessor) camera; EntityPlayerAccessor viewPlayerA = (EntityPlayerAccessor) camera; + //#if MC>=10904 cameraA.setItemStackMainHand(viewPlayerA.getItemStackMainHand()); camera.swingingHand = viewPlayer.swingingHand; cameraA.setActiveItemStackUseCount(viewPlayerA.getActiveItemStackUseCount()); //#else - //$$ camera.itemInUse = viewPlayer.itemInUse; - //$$ camera.itemInUseCount = viewPlayer.itemInUseCount; + //$$ cameraA.setItemInUse(viewPlayerA.getItemInUse()); + //$$ cameraA.setItemInUseCount(viewPlayerA.getItemInUseCount()); //#endif } } diff --git a/src/main/java/com/replaymod/replay/mixin/EntityOtherPlayerMPAccessor.java b/src/main/java/com/replaymod/replay/mixin/EntityOtherPlayerMPAccessor.java new file mode 100644 index 00000000..ccd4cb48 --- /dev/null +++ b/src/main/java/com/replaymod/replay/mixin/EntityOtherPlayerMPAccessor.java @@ -0,0 +1,21 @@ +//#if MC<11300 +//$$ package com.replaymod.replay.mixin; +//$$ +//$$ import net.minecraft.client.entity.EntityOtherPlayerMP; +//$$ import org.spongepowered.asm.mixin.Mixin; +//$$ import org.spongepowered.asm.mixin.gen.Accessor; +//$$ +//$$ @Mixin(EntityOtherPlayerMP.class) +//$$ public interface EntityOtherPlayerMPAccessor { +//$$ @Accessor +//$$ double getOtherPlayerMPX(); +//$$ @Accessor +//$$ double getOtherPlayerMPY(); +//$$ @Accessor +//$$ double getOtherPlayerMPZ(); +//$$ @Accessor +//$$ double getOtherPlayerMPYaw(); +//$$ @Accessor +//$$ double getOtherPlayerMPPitch(); +//$$ } +//#endif diff --git a/src/main/java/com/replaymod/replay/mixin/EntityPlayerAccessor.java b/src/main/java/com/replaymod/replay/mixin/EntityPlayerAccessor.java index c361eafa..e986752b 100644 --- a/src/main/java/com/replaymod/replay/mixin/EntityPlayerAccessor.java +++ b/src/main/java/com/replaymod/replay/mixin/EntityPlayerAccessor.java @@ -12,5 +12,14 @@ public interface EntityPlayerAccessor extends EntityLivingBaseAccessor { ItemStack getItemStackMainHand(); @Accessor void setItemStackMainHand(ItemStack value); + //#else + //$$ @Accessor + //$$ ItemStack getItemInUse(); + //$$ @Accessor + //$$ void setItemInUse(ItemStack value); + //$$ @Accessor + //$$ int getItemInUseCount(); + //$$ @Accessor + //$$ void setItemInUseCount(int value); //#endif } diff --git a/src/main/java/com/replaymod/replay/mixin/FirstPersonRendererAccessor.java b/src/main/java/com/replaymod/replay/mixin/FirstPersonRendererAccessor.java index 913061a6..1d51620d 100644 --- a/src/main/java/com/replaymod/replay/mixin/FirstPersonRendererAccessor.java +++ b/src/main/java/com/replaymod/replay/mixin/FirstPersonRendererAccessor.java @@ -20,5 +20,14 @@ public interface FirstPersonRendererAccessor { void setEquippedProgressOffHand(float value); @Accessor void setPrevEquippedProgressOffHand(float value); + //#else + //$$ @Accessor + //$$ void setItemToRender(ItemStack value); + //$$ @Accessor + //$$ void setEquippedItemSlot(int value); + //$$ @Accessor + //$$ void setEquippedProgress(float value); + //$$ @Accessor + //$$ void setPrevEquippedProgress(float value); //#endif } diff --git a/src/main/java/com/replaymod/replay/mixin/MixinKeyboardListener.java b/src/main/java/com/replaymod/replay/mixin/MixinKeyboardListener.java index ab92a831..cf2c9951 100644 --- a/src/main/java/com/replaymod/replay/mixin/MixinKeyboardListener.java +++ b/src/main/java/com/replaymod/replay/mixin/MixinKeyboardListener.java @@ -1,56 +1,48 @@ -//#if MC>=11300 package com.replaymod.replay.mixin; import com.replaymod.extras.advancedscreenshots.AdvancedScreenshots; import com.replaymod.replay.ReplayModReplay; -import net.minecraft.client.KeyboardListener; -import net.minecraft.client.shader.Framebuffer; -import net.minecraft.util.ScreenShotHelper; -import net.minecraft.util.text.ITextComponent; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Redirect; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import java.io.File; -import java.util.function.Consumer; +//#if MC>=11300 +import net.minecraft.client.KeyboardListener; +//#else +//$$ import net.minecraft.client.Minecraft; +//#endif +//#if MC>=11300 @Mixin(KeyboardListener.class) +//#else +//$$ @Mixin(Minecraft.class) +//#endif public abstract class MixinKeyboardListener { - @Redirect( + @Inject( + //#if MC>=11300 method = "onKeyEvent", + //#else + //$$ method = "dispatchKeypresses", + //#endif at = @At( value = "INVOKE", //#if MC>=11400 //$$ target = "Lnet/minecraft/client/util/ScreenshotUtils;method_1662(Ljava/io/File;Ljava/lang/String;IILnet/minecraft/client/gl/GlFramebuffer;Ljava/util/function/Consumer;)V" //#else + //#if MC>=11300 target = "Lnet/minecraft/util/ScreenShotHelper;saveScreenshot(Ljava/io/File;IILnet/minecraft/client/shader/Framebuffer;Ljava/util/function/Consumer;)V" + //#else + //$$ target = "Lnet/minecraft/util/ScreenShotHelper;saveScreenshot(Ljava/io/File;IILnet/minecraft/client/shader/Framebuffer;)Lnet/minecraft/util/text/ITextComponent;" //#endif - ) + //#endif + ), + cancellable = true ) - private void takeScreenshot( - File p_148260_0_, - //#if MC>=11400 - //$$ String something, - //#endif - int p_148260_1_, - int p_148260_2_, - Framebuffer p_148260_3_, - Consumer p_148260_4_ - ) { + private void takeScreenshot(CallbackInfo ci) { if (ReplayModReplay.instance.getReplayHandler() != null) { AdvancedScreenshots.take(); - } else { - ScreenShotHelper.saveScreenshot( - p_148260_0_, - //#if MC>=11400 - //$$ something, - //#endif - p_148260_1_, - p_148260_2_, - p_148260_3_, - p_148260_4_ - ); + ci.cancel(); } } } -//#endif diff --git a/src/main/resources/META-INF/replaymod_at.cfg b/src/main/resources/META-INF/replaymod_at.cfg deleted file mode 100644 index 7d564d55..00000000 --- a/src/main/resources/META-INF/replaymod_at.cfg +++ /dev/null @@ -1,219 +0,0 @@ -##if MC<11300 -#$$ # To apply changes in this file run: ./gradlew clean setupDecompWorkspace idea -#$$ -#$$ # Minecraft -##if MC>=11300 -#$$ public net.minecraft.client.Minecraft func_184117_aA()V # processKeyBinds -##endif -##if MC>=11002 -#$$ public-f net.minecraft.client.Minecraft field_71428_T # timer -##else -#$$ public net.minecraft.client.Minecraft field_71428_T # timer -##endif -#$$ public net.minecraft.client.Minecraft field_83002_am # debugCrashKeyPressTime -#$$ public net.minecraft.client.Minecraft field_71467_ac # rightClickDelayTimer -#$$ public net.minecraft.client.Minecraft field_71423_H # systemTime -#$$ public net.minecraft.client.Minecraft field_71429_W # leftClickCounter -#$$ public net.minecraft.client.Minecraft field_71445_n # isGamePaused -#$$ public net.minecraft.client.Minecraft field_152351_aB # scheduledTasks -#$$ public net.minecraft.client.Minecraft field_110449_ao # defaultResourcePacks -#$$ public net.minecraft.client.Minecraft field_110448_aq # mcResourcePackRepository -#$$ public net.minecraft.client.Minecraft field_71434_R # hasCrashed -#$$ public net.minecraft.client.Minecraft field_71433_S # crashReporter -#$$ -#$$ #public net.minecraft.client.Minecraft func_71386_F()L # getSystemTime -#$$ public net.minecraft.client.Minecraft func_71383_b(I)V # updateDebugProfilerName -#$$ public net.minecraft.client.Minecraft func_147116_af()V # clickMouse -#$$ public net.minecraft.client.Minecraft func_147121_ag()V # rightClickMouse -#$$ public net.minecraft.client.Minecraft func_147112_ai()V # middleClickMouse -#$$ public net.minecraft.client.Minecraft func_147115_a(Z)V # sendClickBlockToController -#$$ -##if MC>=11300 -#$$ # MainWindow -#$$ public net.minecraft.client.MainWindow field_198131_r # framebufferWidth -#$$ public net.minecraft.client.MainWindow field_198132_s # framebufferHeight -##endif -#$$ -##if MC>=11300 -#$$ # FirstPersonRenderer -#$$ public net.minecraft.client.renderer.FirstPersonRenderer * -##endif -#$$ -#$$ # Packets -##if MC>=11300 -#$$ public net.minecraft.network.play.server.SPacketJoinGame field_149200_f # maxPlayers -##endif -##if MC>=10904 -#$$ public net.minecraft.network.play.server.SPacketSpawnMob field_149043_l # dataManager -#$$ public net.minecraft.network.play.server.SPacketSpawnPlayer field_148960_i # watcher -##else -#$$ public net.minecraft.network.play.server.S0FPacketSpawnMob field_149043_l # dataWatcher -#$$ public net.minecraft.network.play.server.S1DPacketEntityEffect field_149434_a # entityId -#$$ public net.minecraft.network.play.server.S1CPacketEntityMetadata field_149379_a # entityId -#$$ public net.minecraft.network.play.server.S1CPacketEntityMetadata field_149378_b # list -#$$ public net.minecraft.network.play.server.S0BPacketAnimation field_148981_a # entityId -#$$ public net.minecraft.network.play.server.S02PacketChat field_179842_b # position -#$$ public net.minecraft.network.play.server.S19PacketEntityStatus field_149164_a # entityId -#$$ public net.minecraft.network.play.server.S0CPacketSpawnPlayer * -#$$ public net.minecraft.network.play.server.S18PacketEntityTeleport * -#$$ public net.minecraft.network.play.server.S14PacketEntity * -#$$ public net.minecraft.network.play.server.S19PacketEntityHeadLook * -#$$ public net.minecraft.network.play.server.S12PacketEntityVelocity * -#$$ public net.minecraft.network.play.server.S04PacketEntityEquipment * -#$$ public net.minecraft.network.play.server.S1BPacketEntityAttach * -#$$ public net.minecraft.network.play.server.S0DPacketCollectItem * -#$$ public net.minecraft.network.play.server.S13PacketDestroyEntities * -##endif -#$$ -#$$ # GuiTextField -#$$ public net.minecraft.client.gui.GuiTextField field_146216_j # text -#$$ -#$$ # GuiMainMenu -##if MC>=11202 -#$$ public net.minecraft.client.gui.GuiMainMenu field_175372_K # realmsButton -#$$ public net.minecraft.client.gui.GuiMainMenu field_183503_M # realmsNotification -##endif -#$$ -#$$ # Entity -#$$ public net.minecraft.entity.Entity field_70180_af # dataWatcher -#$$ -#$$ # ResourcePackRepository -#$$ public net.minecraft.client.resources.ResourcePackRepository field_148534_e # dirServerResourcepacks -##if MC>=10800 -#$$ public net.minecraft.client.resources.ResourcePackRepository field_177321_h # lock -#$$ public net.minecraft.client.resources.ResourcePackRepository field_177322_i # httpRequest -##else -#$$ public net.minecraft.client.resources.ResourcePackRepository field_148532_f # resourcePack -#$$ public net.minecraft.client.resources.ResourcePackRepository field_148533_g # currentlyDownloading -##endif -#$$ -#$$ # EntityRenderer -#$$ public net.minecraft.client.renderer.EntityRenderer * -#$$ public net.minecraft.client.renderer.EntityRenderer *() -#$$ -#$$ # RenderGlobal -##if MC>=11300 -#$$ public net.minecraft.client.renderer.WorldRenderer field_174995_M # renderDispatcher -#$$ public net.minecraft.client.renderer.WorldRenderer field_147595_R # displayListEntitiesDirty -#$$ public net.minecraft.client.renderer.WorldRenderer field_175009_l # chunksToUpdate -#$$ public net.minecraft.client.renderer.WorldRenderer field_72755_R # renderInfos -#$$ public net.minecraft.client.renderer.WorldRenderer field_175009_l # chunksToUpdate -#$$ public net.minecraft.client.renderer.WorldRenderer field_72740_G # renderEntitiesStartupCounter -##else -#$$ public net.minecraft.client.renderer.RenderGlobal field_174995_M # renderDispatcher -#$$ public net.minecraft.client.renderer.RenderGlobal field_147595_R # displayListEntitiesDirty -#$$ public net.minecraft.client.renderer.RenderGlobal field_175009_l # chunksToUpdate -#$$ public net.minecraft.client.renderer.RenderGlobal field_72755_R # renderInfos -#$$ public net.minecraft.client.renderer.RenderGlobal field_175009_l # chunksToUpdate -#$$ public net.minecraft.client.renderer.RenderGlobal field_72740_G # renderEntitiesStartupCounter -##if MC<10904 -#$$ public net.minecraft.client.renderer.RenderGlobal func_174983_a(Lnet.minecraft.util.BlockPos;Lnet.minecraft.client.renderer.chunk.RenderChunk;)Z # isPositionInRenderChunk -##endif -##endif -#$$ -##if MC>=11300 -#$$ public net.minecraft.client.renderer.WorldRenderer$ContainerLocalRenderInformation -#$$ public net.minecraft.client.renderer.WorldRenderer$ContainerLocalRenderInformation field_178036_a # renderChunk -##else -#$$ public net.minecraft.client.renderer.RenderGlobal$ContainerLocalRenderInformation -#$$ public net.minecraft.client.renderer.RenderGlobal$ContainerLocalRenderInformation field_178036_a # renderChunk -##endif -#$$ -#$$ # ChunkRenderDispatcher -#$$ public-f net.minecraft.client.renderer.chunk.ChunkRenderDispatcher field_178519_d # queueChunkUpdates -#$$ public net.minecraft.client.renderer.chunk.ChunkRenderDispatcher field_178524_h # queueChunkUploads -#$$ public net.minecraft.client.renderer.chunk.ChunkRenderDispatcher field_178522_c # listThreadedWorkers -#$$ -#$$ # TextureUtil -#$$ public net.minecraft.client.renderer.texture.TextureUtil func_147947_a(I[IIIIIZZZ)V # uploadTextureSub -#$$ -#$$ # RenderManager -#$$ public net.minecraft.client.renderer.entity.RenderManager field_178636_l # skinMap -#$$ -#$$ # ItemRenderer -#$$ public net.minecraft.client.renderer.ItemRenderer * -#$$ public net.minecraft.client.renderer.ItemRenderer *() -#$$ -#$$ # RenderItem -##if MC>=10904 -#$$ public net.minecraft.client.renderer.RenderItem field_184395_f # itemColors -##endif -#$$ -#$$ # EntityPlayer -#$$ public net.minecraft.entity.player.EntityPlayer * -#$$ -#$$ # EntityOtherPlayerMP -#$$ public net.minecraft.client.entity.EntityOtherPlayerMP * -#$$ -#$$ # EffectRenderer -##if MC<10904 -#$$ public net.minecraft.client.particle.EffectRenderer field_110737_b # particleTextures -#$$ public net.minecraft.client.particle.EffectRenderer field_78876_b # fxLayers -##endif -#$$ -#$$ # IntegratedServer -#$$ public net.minecraft.server.integrated.IntegratedServer field_71348_o # isGamePaused -#$$ -#$$ # GameSettings -##if MC>=10904 -##if MC>=11002 -##if MC>=11300 -#$$ public-f net.minecraft.client.GameSettings field_186714_aM # soundLevels -##else -#$$ public-f net.minecraft.client.settings.GameSettings field_186714_aM # soundLevels -##endif -##else -#$$ public net.minecraft.client.settings.GameSettings field_186714_aM # soundLevels -##endif -##else -#$$ public net.minecraft.client.settings.GameSettings field_151446_aD # mapSoundLevels -##endif -#$$ -#$$ # Frustum -##if MC>=11002 -#$$ public-f net.minecraft.client.renderer.culling.Frustum field_78552_a # clippingHelper -##else -#$$ public net.minecraft.client.renderer.culling.Frustum field_78552_a # clippingHelper -##endif -#$$ -#$$ # CrashReportCategory -#$$ public net.minecraft.crash.CrashReportCategory field_85077_c # children -#$$ public net.minecraft.crash.CrashReportCategory$Entry -#$$ -#$$ # KeyBinding -#$$ public net.minecraft.client.settings.KeyBinding field_151474_i # pressTime -#$$ -#$$ # Timer -#$$ public-f net.minecraft.util.Timer * -#$$ -#$$ # GlStateManager -#$$ public net.minecraft.client.renderer.GlStateManager * -#$$ public net.minecraft.client.renderer.GlStateManager$TextureState -#$$ public net.minecraft.client.renderer.GlStateManager$FogState -#$$ public net.minecraft.client.renderer.GlStateManager$BooleanState -#$$ public net.minecraft.client.renderer.GlStateManager$BooleanState * -#$$ -##if MC>=10904 -#$$ # EntityLivingBase -#$$ public net.minecraft.entity.EntityLivingBase field_184621_as # HAND_STATES -#$$ public net.minecraft.entity.EntityLivingBase field_184628_bn # activeItemStackUseCount -##if MC>=11300 -#$$ public net.minecraft.entity.EntityLivingBase field_184623_bh # interpTargetX -#$$ public net.minecraft.entity.EntityLivingBase field_184624_bi # interpTargetY -#$$ public net.minecraft.entity.EntityLivingBase field_184625_bj # interpTargetZ -#$$ public net.minecraft.entity.EntityLivingBase field_184626_bk # interpTargetYaw -#$$ public net.minecraft.entity.EntityLivingBase field_70709_bj # interpTargetPitch -##endif -##endif -#$$ -#$$ # Particles -##if MC>=10904 -#$$ public net.minecraft.client.particle.Particle * -##endif -#$$ -#$$ # ScreenShotHelper -#$$ public net.minecraft.util.ScreenShotHelper func_74290_a(Ljava/io/File;)Ljava/io/File; # getTimestampedPNGFileForDirectory -#$$ -#$$ # Example -#$$ # public net.minecraft.package.ClassName func_some_id(Ljava/lang/Class;IZS)V # methodName -##endif diff --git a/src/main/resources/mixins.core.replaymod.json b/src/main/resources/mixins.core.replaymod.json index 4418b746..f7180f32 100644 --- a/src/main/resources/mixins.core.replaymod.json +++ b/src/main/resources/mixins.core.replaymod.json @@ -13,8 +13,11 @@ //#endif //#if MC>=11300 "MixinKeyboardListener", - "MixinMinecraft", //#endif + //#if MC<10800 + //$$ "ResourcePackRepositoryAccessor", + //#endif + "MixinMinecraft", "GuiMainMenuAccessor", "GuiScreenAccessor", "KeyBindingAccessor", diff --git a/src/main/resources/mixins.render.blend.replaymod.json b/src/main/resources/mixins.render.blend.replaymod.json index 57343819..1576cfdd 100644 --- a/src/main/resources/mixins.render.blend.replaymod.json +++ b/src/main/resources/mixins.render.blend.replaymod.json @@ -9,7 +9,7 @@ //#if MC<10904 //$$ "EntityAccessor", //#endif - //#if MC>=11300 + //#if MC>=10904 "ItemRendererAccessor", //#endif "ParticleAccessor", diff --git a/src/main/resources/mixins.replay.replaymod.json b/src/main/resources/mixins.replay.replaymod.json index 204f125e..306e1662 100644 --- a/src/main/resources/mixins.replay.replaymod.json +++ b/src/main/resources/mixins.replay.replaymod.json @@ -9,6 +9,9 @@ //$$ "MixinInGameHud", //#endif "EntityLivingBaseAccessor", + //#if MC<11300 + //$$ "EntityOtherPlayerMPAccessor", + //#endif "EntityPlayerAccessor", "FirstPersonRendererAccessor", //#if MC>=10904 @@ -16,15 +19,13 @@ //#endif //#if MC>=10800 "MixinGuiSpectator", - //#if MC>=11300 - "MixinKeyboardListener", - //#endif "MixinRenderArrow", //#if MC<11400 "MixinRenderManager", //#endif "MixinViewFrustum", //#endif + "MixinKeyboardListener", "MixinPlayerControllerMP", "MixinRenderItem", "MixinRenderLivingBase", diff --git a/versions/1.12/mapping.txt b/versions/1.12/mapping.txt index d409c7fb..d27ce124 100644 --- a/versions/1.12/mapping.txt +++ b/versions/1.12/mapping.txt @@ -1,3 +1,4 @@ +net.minecraft.client.resources.ResourcePackRepository setServerResourcePack() setResourcePackInstance() net.minecraft.client.Minecraft fontRenderer fontRendererObj net.minecraft.client.renderer.BufferBuilder net.minecraft.client.renderer.VertexBuffer net.minecraft.client.gui.GuiButton x xPosition diff --git a/versions/1.13.2/mapping.txt b/versions/1.13.2/mapping.txt index 2fdc5f98..6ef958a8 100644 --- a/versions/1.13.2/mapping.txt +++ b/versions/1.13.2/mapping.txt @@ -1,3 +1,7 @@ +net.minecraft.entity.EntityLivingBase LIVING_FLAGS HAND_STATES +net.minecraft.client.resources.DownloadingPackFinder net.minecraft.client.resources.ResourcePackRepository +net.minecraft.client.resources.DownloadingPackFinder func_195741_a() setServerResourcePack() +net.minecraft.client.renderer.color.ItemColors getColor() getColorFromItemstack() net.minecraft.client.renderer.GlStateManager activeTexture activeTextureUnit net.minecraft.client.renderer.FirstPersonRenderer net.minecraft.client.renderer.ItemRenderer net.minecraft.client.renderer.chunk.ChunkRenderTask net.minecraft.client.renderer.chunk.ChunkCompileTaskGenerator @@ -13,6 +17,7 @@ net.minecraftforge.eventbus.api.IEventBus net.minecraftforge.fml.common.eventhan com.replaymod.core.versions.MCVer.Keyboard org.lwjgl.input.Keyboard net.minecraft.client.Minecraft gameDir mcDataDir net.minecraft.client.Minecraft getInstance() getMinecraft() +net.minecraft.client.Minecraft getPackFinder() getResourcePackRepository() net.minecraft.client.renderer.WorldRenderer net.minecraft.client.renderer.RenderGlobal net.minecraft.network.play.server.SPacketEntity.Move net.minecraft.network.play.server.SPacketEntity.S17PacketEntityLookMove net.minecraft.entity.Entity isPassenger() isRiding() diff --git a/versions/1.8.9/mapping.txt b/versions/1.8.9/mapping.txt index 9230ed73..c4869fb0 100644 --- a/versions/1.8.9/mapping.txt +++ b/versions/1.8.9/mapping.txt @@ -1,7 +1,11 @@ +net.minecraft.util.Timer counter field_74285_i +net.minecraft.client.resources.ResourcePackRepository downloadResourcePack() func_180601_a() +net.minecraft.client.resources.ResourcePackRepository setResourcePackInstance() func_177319_a() net.minecraft.network.play.server.S38PacketPlayerListItem getAction() func_179768_b() net.minecraft.network.play.server.S38PacketPlayerListItem.AddPlayerData getProfile() func_179962_a() net.minecraft.network.play.server.S48PacketResourcePackSend getURL() func_179783_a() net.minecraft.network.play.server.S48PacketResourcePackSend getHash() func_179784_b() +net.minecraft.network.play.server.S0CPacketSpawnPlayer watcher field_148960_i net.minecraft.network.play.server.S0CPacketSpawnPlayer getPlayer() func_179819_c() net.minecraft.network.play.server.S40PacketDisconnect getReason() func_149165_c() net.minecraft.network.play.server.S2BPacketChangeGameState getGameState() func_149138_c() diff --git a/versions/1.9.4/mapping.txt b/versions/1.9.4/mapping.txt index 9f5dd9fe..1ffe5d26 100644 --- a/versions/1.9.4/mapping.txt +++ b/versions/1.9.4/mapping.txt @@ -6,6 +6,7 @@ net.minecraft.util.text.Style net.minecraft.util.ChatStyle net.minecraft.util.text.TextFormatting net.minecraft.util.EnumChatFormatting net.minecraft.util.text.ITextComponent net.minecraft.util.IChatComponent net.minecraft.network.datasync.EntityDataManager net.minecraft.entity.DataWatcher +net.minecraft.network.datasync.EntityDataManager.DataEntry net.minecraft.entity.DataWatcher.WatchableObject net.minecraft.client.renderer.VertexBuffer net.minecraft.client.renderer.WorldRenderer net.minecraft.client.renderer.Tessellator getBuffer() getWorldRenderer() net.minecraft.client.particle.Particle net.minecraft.client.particle.EntityFX @@ -30,8 +31,11 @@ net.minecraft.network.play.server.SPacketPlayerPosLook net.minecraft.network.pla net.minecraft.network.play.server.SPacketPlayerListItem net.minecraft.network.play.server.S38PacketPlayerListItem net.minecraft.network.play.server.SPacketRespawn net.minecraft.network.play.server.S07PacketRespawn net.minecraft.network.play.server.SPacketSpawnPlayer net.minecraft.network.play.server.S0CPacketSpawnPlayer +net.minecraft.network.play.server.SPacketSpawnPlayer getDataManagerEntries() func_148944_c() net.minecraft.network.play.server.SPacketSpawnObject net.minecraft.network.play.server.S0EPacketSpawnObject net.minecraft.network.play.server.SPacketSpawnMob net.minecraft.network.play.server.S0FPacketSpawnMob +net.minecraft.network.play.server.SPacketSpawnMob dataManager field_149043_l +net.minecraft.network.play.server.SPacketSpawnMob getDataManagerEntries() func_149027_c() net.minecraft.network.play.server.SPacketSpawnGlobalEntity net.minecraft.network.play.server.S2CPacketSpawnGlobalEntity net.minecraft.network.play.server.SPacketSpawnPainting net.minecraft.network.play.server.S10PacketSpawnPainting net.minecraft.network.play.server.SPacketSpawnExperienceOrb net.minecraft.network.play.server.S11PacketSpawnExperienceOrb diff --git a/versions/common.gradle b/versions/common.gradle index 077f4bf4..90a3787d 100644 --- a/versions/common.gradle +++ b/versions/common.gradle @@ -301,34 +301,11 @@ if (mcVersion <= 10710) { } if (project.name != 'core') { - def preprocessedRes = 'build/preprocessed/res' - def preprocessedAT = 'build/preprocessed/at.cfg' - def originalRes = '../../src/main/resources' - def originalAT = originalRes + '/META-INF/replaymod_at.cfg' - def vars = [MC: mcVersion as int] - - if (FABRIC) { - // Fabric doesn't have ATs, so we've stopped using them on 1.13+ - } else if (FG3) { - // FG3 reads the AT file right after project evaluation, so we need to convert it right now - PreprocessTask.convertFile(PreprocessTask.CFG_KEYWORDS, vars, file(originalAT), file(preprocessedAT)) - minecraft.accessTransformers << file(preprocessedAT) - } else { - (mcVersion >= 10800 ? [deobfMcMCP, deobfMcSRG] : [deobfuscateJar, deobfBinJar]).each { task -> - task.dependsOn preprocessResources - } - minecraft.accessTransformer preprocessedRes + '/META-INF/replaymod_at.cfg' - } - def jGui = project.evaluationDependsOn(":jGui:$jGuiVersion") // Make sure the corresponding jGui setCoreVersion task runs project.tasks.setCoreVersionJava.dependsOn jGui.tasks.setCoreVersion // and it doesn't run too early (i.e. before we're done with preprocessing) jGui.tasks.setCoreVersionJava.mustRunAfter project.tasks.preprocessJava -} else { - if (FG3) { - minecraft.accessTransformers << file('../../src/main/resources/META-INF/replaymod_at.cfg') - } } task configureRelocation() {