From 20625b7180c585b41ce7a57cafd2ab27b790d3e4 Mon Sep 17 00:00:00 2001 From: johni0702 Date: Tue, 5 May 2015 14:08:44 +0200 Subject: [PATCH] Replace reflection with getters and access transformers where possible --- build.gradle | 3 +- .../replaymod/events/MinecraftTicker.java | 69 ++------- .../replaymod/events/RecordingHandler.java | 14 +- .../events/TickAndRenderListener.java | 14 +- .../replaymod/gui/PasswordTextField.java | 23 +-- .../replaymod/recording/PacketListener.java | 29 +--- .../renderer/SafeEntityRenderer.java | 17 +-- .../replaymod/replay/ReplaySender.java | 91 ++---------- .../replaymod/timer/MCTimerHandler.java | 139 ++++-------------- src/main/resources/META-INF/replaymod_at.cfg | 42 ++++++ 10 files changed, 105 insertions(+), 336 deletions(-) create mode 100644 src/main/resources/META-INF/replaymod_at.cfg diff --git a/build.gradle b/build.gradle index f9e9c274..7216917e 100755 --- a/build.gradle +++ b/build.gradle @@ -92,7 +92,8 @@ jar { manifest { attributes 'FMLCorePlugin': 'eu.crushedpixel.replaymod.coremod.LoadingPlugin', - 'FMLCorePluginContainsFMLMod': 'false' + 'FMLCorePluginContainsFMLMod': 'false', + 'FMLAT': 'replaymod_at.cfg' } } diff --git a/src/main/java/eu/crushedpixel/replaymod/events/MinecraftTicker.java b/src/main/java/eu/crushedpixel/replaymod/events/MinecraftTicker.java index 188f779d..4f09f273 100755 --- a/src/main/java/eu/crushedpixel/replaymod/events/MinecraftTicker.java +++ b/src/main/java/eu/crushedpixel/replaymod/events/MinecraftTicker.java @@ -1,6 +1,5 @@ package eu.crushedpixel.replaymod.events; -import eu.crushedpixel.replaymod.reflection.MCPNames; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.settings.GameSettings; @@ -13,53 +12,10 @@ import org.lwjgl.input.Keyboard; import org.lwjgl.input.Mouse; import java.io.IOException; -import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; public class MinecraftTicker { - private static Field debugCrashKeyPressTime, rightClickDelayTimer, systemTime, leftClickCounter; - private static Method getSystemTime, updateDebugProfilerName, - clickMouse, middleClickMouse, rightClickMouse, sendClickBlockToController; - - static { - try { - debugCrashKeyPressTime = Minecraft.class.getDeclaredField(MCPNames.field("field_83002_am")); - debugCrashKeyPressTime.setAccessible(true); - - rightClickDelayTimer = Minecraft.class.getDeclaredField(MCPNames.field("field_71467_ac")); - rightClickDelayTimer.setAccessible(true); - - systemTime = Minecraft.class.getDeclaredField(MCPNames.field("field_71423_H")); - systemTime.setAccessible(true); - - leftClickCounter = Minecraft.class.getDeclaredField(MCPNames.field("field_71429_W")); - leftClickCounter.setAccessible(true); - - getSystemTime = Minecraft.class.getDeclaredMethod(MCPNames.method("func_71386_F")); - getSystemTime.setAccessible(true); - - updateDebugProfilerName = Minecraft.class.getDeclaredMethod(MCPNames.method("func_71383_b"), int.class); - updateDebugProfilerName.setAccessible(true); - - clickMouse = Minecraft.class.getDeclaredMethod(MCPNames.method("func_147116_af")); - clickMouse.setAccessible(true); - - rightClickMouse = Minecraft.class.getDeclaredMethod(MCPNames.method("func_147121_ag")); - rightClickMouse.setAccessible(true); - - middleClickMouse = Minecraft.class.getDeclaredMethod(MCPNames.method("func_147112_ai")); - middleClickMouse.setAccessible(true); - - sendClickBlockToController = Minecraft.class.getDeclaredMethod(MCPNames.method("func_147115_a"), boolean.class); - sendClickBlockToController.setAccessible(true); - - } catch(Exception e) { - e.printStackTrace(); - } - } - public static void runMouseKeyboardTick(Minecraft mc) throws IllegalAccessException, IllegalArgumentException, InvocationTargetException, IOException { if(mc.thePlayer == null) return; @@ -78,7 +34,7 @@ public class MinecraftTicker { } } - long k = (Long) getSystemTime.invoke(mc) - (Long) systemTime.get(mc); + long k = Minecraft.getSystemTime() - mc.systemTime; if(k <= 200L) { int j = Mouse.getEventDWheel(); @@ -109,8 +65,8 @@ public class MinecraftTicker { net.minecraftforge.fml.common.FMLCommonHandler.instance().fireMouseInput(); } - if((Integer) leftClickCounter.get(mc) > 0) { - leftClickCounter.set(mc, (Integer) leftClickCounter.get(mc) - 1); + if(mc.leftClickCounter > 0) { + mc.leftClickCounter--; } mc.mcProfiler.endStartSection("keyboard"); @@ -122,16 +78,16 @@ public class MinecraftTicker { KeyBinding.onTick(i); } - if((Long) debugCrashKeyPressTime.get(mc) > 0L) { - if((Long) getSystemTime.invoke(mc) - (Long) debugCrashKeyPressTime.get(mc) >= 6000L) { + if(mc.debugCrashKeyPressTime > 0L) { + if(Minecraft.getSystemTime() - mc.debugCrashKeyPressTime >= 6000L) { throw new ReportedException(new CrashReport("Manually triggered debug crash", new Throwable())); } if(!Keyboard.isKeyDown(46) || !Keyboard.isKeyDown(61)) { - debugCrashKeyPressTime.set(mc, -1); + mc.debugCrashKeyPressTime = -1; } } else if(Keyboard.isKeyDown(46) && Keyboard.isKeyDown(61)) { - debugCrashKeyPressTime.set(mc, getSystemTime.invoke(mc)); + mc.debugCrashKeyPressTime = Minecraft.getSystemTime(); } mc.dispatchKeypresses(); @@ -233,12 +189,12 @@ public class MinecraftTicker { if(mc.gameSettings.showDebugInfo && mc.gameSettings.showDebugProfilerChart) { if(i == 11) { - updateDebugProfilerName.invoke(mc, 0); + mc.updateDebugProfilerName(0); } for(int l = 0; l < 9; ++l) { if(i == 2 + l) { - updateDebugProfilerName.invoke(mc, l + 1); + mc.updateDebugProfilerName(l + 1); } } } @@ -281,13 +237,10 @@ public class MinecraftTicker { } if(mc != null) - try { - sendClickBlockToController.invoke(mc, mc.currentScreen == null && mc.gameSettings.keyBindAttack.isKeyDown() && mc.inGameHasFocus); - } catch(Exception e) { - } + mc.sendClickBlockToController(mc.currentScreen == null && mc.gameSettings.keyBindAttack.isKeyDown() && mc.inGameHasFocus); if(mc != null) - systemTime.set(mc, getSystemTime.invoke(mc)); + mc.systemTime = Minecraft.getSystemTime(); } catch(Exception e) { } } diff --git a/src/main/java/eu/crushedpixel/replaymod/events/RecordingHandler.java b/src/main/java/eu/crushedpixel/replaymod/events/RecordingHandler.java index 008b64fc..f1bc2842 100755 --- a/src/main/java/eu/crushedpixel/replaymod/events/RecordingHandler.java +++ b/src/main/java/eu/crushedpixel/replaymod/events/RecordingHandler.java @@ -1,7 +1,6 @@ package eu.crushedpixel.replaymod.events; import eu.crushedpixel.replaymod.recording.ConnectionEventHandler; -import eu.crushedpixel.replaymod.reflection.MCPNames; import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; import net.minecraft.client.Minecraft; @@ -25,23 +24,12 @@ import net.minecraftforge.fml.common.gameevent.PlayerEvent.ItemPickupEvent; import net.minecraftforge.fml.common.gameevent.PlayerEvent.PlayerRespawnEvent; import net.minecraftforge.fml.common.gameevent.TickEvent.PlayerTickEvent; -import java.lang.reflect.Field; import java.util.ArrayList; import java.util.List; public class RecordingHandler { public static final int entityID = Integer.MIN_VALUE + 9001; - private static Field dataWatcherField; - - static { - try { - dataWatcherField = S0CPacketSpawnPlayer.class.getDeclaredField(MCPNames.field("field_148960_i")); - dataWatcherField.setAccessible(true); - } catch(Exception e) { - e.printStackTrace(); - } - } private final Minecraft mc = Minecraft.getMinecraft(); private Double lastX = null, lastY = null, lastZ = null; @@ -107,7 +95,7 @@ public class RecordingHandler { packet.readPacketData(pb); - dataWatcherField.set(packet, player.getDataWatcher()); + packet.field_148960_i = player.getDataWatcher(); return packet; } catch(Exception e) { diff --git a/src/main/java/eu/crushedpixel/replaymod/events/TickAndRenderListener.java b/src/main/java/eu/crushedpixel/replaymod/events/TickAndRenderListener.java index 2a5c6d4d..63a8b3ce 100644 --- a/src/main/java/eu/crushedpixel/replaymod/events/TickAndRenderListener.java +++ b/src/main/java/eu/crushedpixel/replaymod/events/TickAndRenderListener.java @@ -4,7 +4,6 @@ import eu.crushedpixel.replaymod.ReplayMod; import eu.crushedpixel.replaymod.chat.ChatMessageHandler; import eu.crushedpixel.replaymod.gui.GuiCancelRender; import eu.crushedpixel.replaymod.gui.GuiMouseInput; -import eu.crushedpixel.replaymod.reflection.MCPNames; import eu.crushedpixel.replaymod.replay.ReplayHandler; import eu.crushedpixel.replaymod.replay.ReplayProcess; import eu.crushedpixel.replaymod.video.ReplayScreenshot; @@ -19,25 +18,14 @@ import org.lwjgl.input.Mouse; import org.lwjgl.opengl.Display; import java.io.IOException; -import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; public class TickAndRenderListener { private static Minecraft mc = Minecraft.getMinecraft(); - private static Field isGamePaused; private static int requestScreenshot = 0; - static { - try { - isGamePaused = Minecraft.class.getDeclaredField(MCPNames.field("field_71445_n")); - isGamePaused.setAccessible(true); - } catch(Exception e) { - e.printStackTrace(); - } - } - //private boolean f1Down = false; public static void requestScreenshot() { @@ -83,7 +71,7 @@ public class TickAndRenderListener { } if(mc.isGamePaused() && ReplayHandler.isInPath()) { - isGamePaused.set(mc, false); + mc.isGamePaused = false; } } diff --git a/src/main/java/eu/crushedpixel/replaymod/gui/PasswordTextField.java b/src/main/java/eu/crushedpixel/replaymod/gui/PasswordTextField.java index 5abfa56a..775468f5 100755 --- a/src/main/java/eu/crushedpixel/replaymod/gui/PasswordTextField.java +++ b/src/main/java/eu/crushedpixel/replaymod/gui/PasswordTextField.java @@ -1,24 +1,10 @@ package eu.crushedpixel.replaymod.gui; -import eu.crushedpixel.replaymod.reflection.MCPNames; import net.minecraft.client.gui.FontRenderer; import net.minecraft.client.gui.GuiTextField; -import java.lang.reflect.Field; - public class PasswordTextField extends GuiTextField { - private static Field text; - - static { - try { - text = GuiTextField.class.getDeclaredField(MCPNames.field("field_146216_j")); - text.setAccessible(true); - } catch(Exception e) { - e.printStackTrace(); - } - } - public PasswordTextField(int p_i45542_1_, FontRenderer p_i45542_2_, int p_i45542_3_, int p_i45542_4_, int p_i45542_5_, int p_i45542_6_) { super(p_i45542_1_, p_i45542_2_, p_i45542_3_, p_i45542_4_, p_i45542_5_, @@ -34,12 +20,9 @@ public class PasswordTextField extends GuiTextField { pw += "*"; } - try { - text.set(this, pw); - super.drawTextBox(); - text.set(this, prev); - } catch(Exception e) { - } + text = pw; + super.drawTextBox(); + text = prev; } diff --git a/src/main/java/eu/crushedpixel/replaymod/recording/PacketListener.java b/src/main/java/eu/crushedpixel/replaymod/recording/PacketListener.java index 3204b349..65f40eb7 100755 --- a/src/main/java/eu/crushedpixel/replaymod/recording/PacketListener.java +++ b/src/main/java/eu/crushedpixel/replaymod/recording/PacketListener.java @@ -1,7 +1,6 @@ package eu.crushedpixel.replaymod.recording; import eu.crushedpixel.replaymod.holders.PacketData; -import eu.crushedpixel.replaymod.reflection.MCPNames; import eu.crushedpixel.replaymod.utils.ReplayFileIO; import io.netty.channel.ChannelHandlerContext; import net.minecraft.client.Minecraft; @@ -14,25 +13,11 @@ import net.minecraft.network.play.server.S0FPacketSpawnMob; import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; -import java.lang.reflect.Field; import java.util.UUID; public class PacketListener extends DataListener { private static final Minecraft mc = Minecraft.getMinecraft(); - private static Field spawnMobDataWatcher, spawnPlayerDataWatcher; - - static { - try { - spawnMobDataWatcher = S0FPacketSpawnMob.class.getDeclaredField(MCPNames.field("field_149043_l")); - spawnMobDataWatcher.setAccessible(true); - - spawnPlayerDataWatcher = S0CPacketSpawnPlayer.class.getDeclaredField(MCPNames.field("field_148960_i")); - spawnPlayerDataWatcher.setAccessible(true); - } catch(Exception e) { - e.printStackTrace(); - } - } private ChannelHandlerContext context = null; @@ -109,18 +94,16 @@ public class PacketListener extends DataListener { int timestamp = (int) (System.currentTimeMillis() - startTime); if(packet instanceof S0FPacketSpawnMob) { - DataWatcher l = (DataWatcher) spawnMobDataWatcher.get(packet); - DataWatcher dw = new DataWatcher(null); - if(l == null) { - spawnMobDataWatcher.set(packet, dw); + S0FPacketSpawnMob p = (S0FPacketSpawnMob) packet; + if(p.field_149043_l == null) { + p.field_149043_l = new DataWatcher(null); } } if(packet instanceof S0CPacketSpawnPlayer) { - DataWatcher l = (DataWatcher) spawnPlayerDataWatcher.get(packet); - DataWatcher dw = new DataWatcher(null); - if(l == null) { - spawnPlayerDataWatcher.set(packet, dw); + S0CPacketSpawnPlayer p = (S0CPacketSpawnPlayer) packet; + if(p.field_148960_i == null) { + p.field_148960_i = new DataWatcher(null); } } diff --git a/src/main/java/eu/crushedpixel/replaymod/renderer/SafeEntityRenderer.java b/src/main/java/eu/crushedpixel/replaymod/renderer/SafeEntityRenderer.java index 427f0101..824b6484 100755 --- a/src/main/java/eu/crushedpixel/replaymod/renderer/SafeEntityRenderer.java +++ b/src/main/java/eu/crushedpixel/replaymod/renderer/SafeEntityRenderer.java @@ -1,27 +1,12 @@ package eu.crushedpixel.replaymod.renderer; -import eu.crushedpixel.replaymod.reflection.MCPNames; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.EntityRenderer; -import net.minecraft.client.resources.IResourceManager; - -import java.lang.reflect.Field; public class SafeEntityRenderer extends EntityRenderer { - private static Field resourceManager; - - static { - try { - resourceManager = EntityRenderer.class.getDeclaredField(MCPNames.field("field_147711_ac")); - resourceManager.setAccessible(true); - } catch(Exception e) { - e.printStackTrace(); - } - } - public SafeEntityRenderer(Minecraft mcIn, EntityRenderer renderer) throws IllegalArgumentException, IllegalAccessException { - super(mcIn, (IResourceManager) resourceManager.get(renderer)); + super(mcIn, renderer.resourceManager); } @Override diff --git a/src/main/java/eu/crushedpixel/replaymod/replay/ReplaySender.java b/src/main/java/eu/crushedpixel/replaymod/replay/ReplaySender.java index 3e2969db..85de915e 100755 --- a/src/main/java/eu/crushedpixel/replaymod/replay/ReplaySender.java +++ b/src/main/java/eu/crushedpixel/replaymod/replay/ReplaySender.java @@ -9,7 +9,6 @@ import eu.crushedpixel.replaymod.holders.PacketData; import eu.crushedpixel.replaymod.holders.Position; import eu.crushedpixel.replaymod.recording.ConnectionEventHandler; import eu.crushedpixel.replaymod.recording.ReplayMetaData; -import eu.crushedpixel.replaymod.reflection.MCPNames; import eu.crushedpixel.replaymod.timer.MCTimerHandler; import eu.crushedpixel.replaymod.utils.ReplayFileIO; import io.netty.channel.ChannelHandler.Sharable; @@ -31,31 +30,12 @@ import org.apache.commons.io.FileUtils; import org.apache.commons.io.FilenameUtils; import java.io.*; -import java.lang.reflect.Field; import java.net.URL; import java.util.ArrayList; @Sharable public class ReplaySender extends ChannelInboundHandlerAdapter { - private static Field playerUUIDField; - private static Field gameProfileField; - - static { - try { - playerUUIDField = S0CPacketSpawnPlayer.class.getDeclaredField(MCPNames.field("field_179820_b")); - playerUUIDField.setAccessible(true); - - gameProfileField = S38PacketPlayerListItem.AddPlayerData.class.getDeclaredField("field_179964_d"); - gameProfileField.setAccessible(true); - - //dataWatcherField = S0CPacketSpawnPlayer.class.getDeclaredField(MCPNames.field("field_148960_i")); - //dataWatcherField.setAccessible(true); - } catch(Exception e) { - e.printStackTrace(); - } - } - private int currentTimeStamp; private boolean hurryToTimestamp; private long desiredTimeStamp = -1; @@ -72,11 +52,6 @@ public class ReplaySender extends ChannelInboundHandlerAdapter { private boolean terminate = false; private double replaySpeed = 1f; private boolean hasWorldLoaded = false; - private Field joinPacketEntityId, joinPacketWorldType, - joinPacketDimension, joinPacketDifficulty, joinPacketMaxPlayers; - private Field effectPacketEntityId; - private Field metadataPacketEntityId, metadataPacketList; - private Field objectTypeField; private Minecraft mc = Minecraft.getMinecraft(); private int replayLength = 0; private int actualID = -1; @@ -197,34 +172,6 @@ public class ReplaySender extends ChannelInboundHandlerAdapter { }); public ReplaySender(final File replayFile, NetworkManager nm) { - try { - joinPacketEntityId = S01PacketJoinGame.class.getDeclaredField(MCPNames.field("field_149206_a")); - joinPacketEntityId.setAccessible(true); - - joinPacketDifficulty = S01PacketJoinGame.class.getDeclaredField(MCPNames.field("field_149203_e")); - joinPacketDifficulty.setAccessible(true); - - joinPacketDimension = S01PacketJoinGame.class.getDeclaredField(MCPNames.field("field_149202_d")); - joinPacketDimension.setAccessible(true); - - joinPacketMaxPlayers = S01PacketJoinGame.class.getDeclaredField(MCPNames.field("field_149200_f")); - joinPacketMaxPlayers.setAccessible(true); - - joinPacketWorldType = S01PacketJoinGame.class.getDeclaredField(MCPNames.field("field_149201_g")); - joinPacketWorldType.setAccessible(true); - - effectPacketEntityId = S1DPacketEntityEffect.class.getDeclaredField(MCPNames.field("field_149434_a")); - effectPacketEntityId.setAccessible(true); - - metadataPacketEntityId = S1CPacketEntityMetadata.class.getDeclaredField(MCPNames.field("field_149379_a")); - metadataPacketEntityId.setAccessible(true); - - metadataPacketList = S1CPacketEntityMetadata.class.getDeclaredField(MCPNames.field("field_149378_b")); - metadataPacketList.setAccessible(true); - } catch(Exception e) { - e.printStackTrace(); - } - this.replayFile = replayFile; this.networkManager = nm; if(("." + FilenameUtils.getExtension(replayFile.getAbsolutePath())).equals(ConnectionEventHandler.ZIP_FILE_EXTENSION)) { @@ -391,21 +338,22 @@ public class ReplaySender extends ChannelInboundHandlerAdapter { try { if(p instanceof S1CPacketEntityMetadata) { - if((Integer) metadataPacketEntityId.get(p) == actualID) { - metadataPacketEntityId.set(p, RecordingHandler.entityID); + S1CPacketEntityMetadata packet = (S1CPacketEntityMetadata) p; + if(packet.field_149379_a == actualID) { + packet.field_149379_a = RecordingHandler.entityID; } } if(p instanceof S01PacketJoinGame) { - //System.out.println("FOUND JOIN PACKET"); + S01PacketJoinGame packet = (S01PacketJoinGame) p; allowMovement = true; - int entId = (Integer) joinPacketEntityId.get(p); + int entId = packet.getEntityId(); actualID = entId; entId = Integer.MIN_VALUE + 9002; - int dimension = (Integer) joinPacketDimension.get(p); - EnumDifficulty difficulty = (EnumDifficulty) joinPacketDifficulty.get(p); - int maxPlayers = (Integer) joinPacketMaxPlayers.get(p); - WorldType worldType = (WorldType) joinPacketWorldType.get(p); + int dimension = packet.getDimension(); + EnumDifficulty difficulty = packet.getDifficulty(); + int maxPlayers = packet.getMaxPlayers(); + WorldType worldType = packet.getWorldType(); p = new S01PacketJoinGame(entId, GameType.SPECTATOR, false, dimension, difficulty, maxPlayers, worldType, false); @@ -529,11 +477,7 @@ public class ReplaySender extends ChannelInboundHandlerAdapter { } public boolean paused() { - try { - return MCTimerHandler.getTimerSpeed() == 0; - } catch(Exception e) { - } - return true; + return MCTimerHandler.getTimerSpeed() == 0; } public double getReplaySpeed() { @@ -552,19 +496,9 @@ public class ReplaySender extends ChannelInboundHandlerAdapter { private static class ResourcePackCheck extends Thread { - private static Field serverResourcePackDirectory; private static Minecraft mc = Minecraft.getMinecraft(); private static ResourcePackRepository repo = mc.getResourcePackRepository(); - static { - try { - serverResourcePackDirectory = ResourcePackRepository.class.getDeclaredField(MCPNames.field("field_148534_e")); - serverResourcePackDirectory.setAccessible(true); - } catch(Exception e) { - e.printStackTrace(); - } - } - private String url, hash; public ResourcePackCheck(String url, String hash) { @@ -592,10 +526,7 @@ public class ReplaySender extends ChannelInboundHandlerAdapter { filename = "legacy_" + filename.replaceAll("\\W", ""); } - File folder = (File) serverResourcePackDirectory.get(repo); - File rp = new File(folder, filename); - - return rp; + return new File(repo.dirServerResourcepacks, filename); } private boolean downloadServerResourcePack(String url, File file) { diff --git a/src/main/java/eu/crushedpixel/replaymod/timer/MCTimerHandler.java b/src/main/java/eu/crushedpixel/replaymod/timer/MCTimerHandler.java index 9a08ff74..6bc6f8ff 100755 --- a/src/main/java/eu/crushedpixel/replaymod/timer/MCTimerHandler.java +++ b/src/main/java/eu/crushedpixel/replaymod/timer/MCTimerHandler.java @@ -1,172 +1,87 @@ package eu.crushedpixel.replaymod.timer; -import eu.crushedpixel.replaymod.reflection.MCPNames; import eu.crushedpixel.replaymod.video.ReplayTimer; import net.minecraft.client.Minecraft; import net.minecraft.util.Timer; -import java.lang.reflect.Field; - public class MCTimerHandler { - private static Field mcTimer; private static Minecraft mc = Minecraft.getMinecraft(); private static ReplayTimer rpt = new ReplayTimer(20); private static Timer timerBefore; - static { - try { - mcTimer = Minecraft.class.getDeclaredField(MCPNames.field("field_71428_T")); - mcTimer.setAccessible(true); - } catch(Exception e) { - e.printStackTrace(); - } - } - public static void setActiveTimer() { - try { - if(timerBefore != null) { - mcTimer.set(mc, timerBefore); - } - } catch(Exception e) { - e.printStackTrace(); + if(timerBefore != null) { + mc.timer = timerBefore; } } public static void setPassiveTimer() { - try { - if(!(getTimer() instanceof ReplayTimer)) { - timerBefore = getTimer(); - mcTimer.set(mc, rpt); - } - } catch(Exception e) { - e.printStackTrace(); + if(!(mc.timer instanceof ReplayTimer)) { + timerBefore = mc.timer; + mc.timer = rpt; } } public static int getTicks() { - try { - Timer t = getTimer(); - return t.elapsedTicks; - } catch(Exception e) { - e.printStackTrace(); - } - return 0; + return mc.timer.elapsedTicks; } public static void setTicks(int ticks) { - try { - getTimer().elapsedTicks = ticks; - } catch(Exception e) { - e.printStackTrace(); - } + mc.timer.elapsedTicks = ticks; } public static float getPartialTicks() { - try { - Timer t = getTimer(); - return t.elapsedPartialTicks; - } catch(Exception e) { - e.printStackTrace(); - } - return 0; + return mc.timer.elapsedPartialTicks; } public static void setPartialTicks(float ticks) { - try { - getTimer().elapsedPartialTicks = ticks; - } catch(Exception e) { - e.printStackTrace(); - } + mc.timer.elapsedPartialTicks = ticks; } public static float getRenderTicks() { - try { - Timer t = getTimer(); - return t.renderPartialTicks; - } catch(Exception e) { - e.printStackTrace(); - } - return 0; - } - - private static Timer getTimer() throws IllegalArgumentException, IllegalAccessException { - return (Timer) mcTimer.get(mc); + return mc.timer.renderPartialTicks; } public static void advanceTicks(int ticks) { - try { - Timer t = getTimer(); - t.elapsedTicks += ticks; - } catch(Exception e) { - e.printStackTrace(); - } + mc.timer.elapsedTicks += ticks; } public static void advancePartialTicks(float ticks) { - try { - Timer t = getTimer(); - t.elapsedPartialTicks += ticks; - } catch(Exception e) { - e.printStackTrace(); - } + mc.timer.elapsedPartialTicks += ticks; } public static void advanceRenderPartialTicks(float ticks) { - try { - Timer t = getTimer(); - t.renderPartialTicks += ticks; - } catch(Exception e) { - e.printStackTrace(); - } + mc.timer.renderPartialTicks += ticks; } public static void setRenderPartialTicks(float ticks) { - try { - getTimer().renderPartialTicks = ticks; - } catch(Exception e) { - e.printStackTrace(); - } + mc.timer.renderPartialTicks = ticks; } public static float getTimerSpeed() { - try { - return getTimer().timerSpeed; - } catch(Exception e) { - e.printStackTrace(); - } - return 1; + return mc.timer.timerSpeed; } public static void setTimerSpeed(float speed) { - try { - Timer t = getTimer(); - t.timerSpeed = speed; - if(timerBefore != null) { - timerBefore.timerSpeed = speed; - } - } catch(Exception e) { - e.printStackTrace(); + mc.timer.timerSpeed = speed; + if(timerBefore != null) { + timerBefore.timerSpeed = speed; } } public static void updateTimer(double d) { - try { - Timer t = getTimer(); - double d2 = d; - //d2 = MathHelper.clamp_double(d2, 0.0D, 1.0D); - t.elapsedPartialTicks = (float) ((double) t.elapsedPartialTicks + d2 * (double) t.timerSpeed * 20); - t.elapsedTicks = (int) t.elapsedPartialTicks; - t.elapsedPartialTicks -= (float) t.elapsedTicks; + Timer t = mc.timer; + //d2 = MathHelper.clamp_double(d2, 0.0D, 1.0D); + t.elapsedPartialTicks = (float) ((double) t.elapsedPartialTicks + d * (double) t.timerSpeed * 20); + t.elapsedTicks = (int) t.elapsedPartialTicks; + t.elapsedPartialTicks -= (float) t.elapsedTicks; - if(t.elapsedTicks > 10) { - t.elapsedTicks = 10; - } - - t.renderPartialTicks = t.elapsedPartialTicks; - } catch(Exception e) { - e.printStackTrace(); + if(t.elapsedTicks > 10) { + t.elapsedTicks = 10; } + + t.renderPartialTicks = t.elapsedPartialTicks; } } diff --git a/src/main/resources/META-INF/replaymod_at.cfg b/src/main/resources/META-INF/replaymod_at.cfg new file mode 100644 index 00000000..eb0a898c --- /dev/null +++ b/src/main/resources/META-INF/replaymod_at.cfg @@ -0,0 +1,42 @@ +# To apply changes in this file run: ./gradlew clean setupDevWorkspace idea + +# Minecraft +public net.minecraft.client.Minecraft field_71428_T # timer +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 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 + +# Packets +public net.minecraft.network.play.server.S0FPacketSpawnMob field_149043_l # dataWatcher +public net.minecraft.network.play.server.S0CPacketSpawnPlayer field_148960_i # dataWatcher +public net.minecraft.network.play.server.S0CPacketSpawnPlayer field_179820_b # uuid +public net.minecraft.network.play.server.S38PacketPlayerListItem field_179964_d # profile +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 + +# GuiTextField +public net.minecraft.client.gui.GuiTextField field_146216_j # text + +# Entity +public net.minecraft.entity.Entity field_70180_af # dataWatcher + +# ResourcePackRepository +public net.minecraft.client.resources.ResourcePackRepository field_148534_e # dirServerResourcepacks + +# EntityRenderer +public net.minecraft.client.renderer.EntityRenderer field_147711_ac # resourceManager + +# Example +# public net.minecraft.package.ClassName func_some_id(Ljava/lang/Class;IZS)V # methodName