Commit 1dd64987f1b054d2d9e8e3b75bd657c4a7cc8c82

Authored by Mumfrey
1 parent 171e491f

moving PrivateFields to common and adding PrivateFieldsClient for client side

debug/obfuscation.properties
@@ -18,6 +18,7 @@ field_71477_af=serverPort @@ -18,6 +18,7 @@ field_71477_af=serverPort
18 field_147712_ad=shaderResourceLocations 18 field_147712_ad=shaderResourceLocations
19 field_147713_ae=shaderIndex 19 field_147713_ae=shaderIndex
20 field_175083_ad=useShader 20 field_175083_ad=useShader
  21 +field_149528_b=view
21 func_148833_a=processPacket 22 func_148833_a=processPacket
22 func_71411_J=runGameLoop 23 func_71411_J=runGameLoop
23 func_71407_l=runTick 24 func_71407_l=runTick
@@ -52,4 +53,11 @@ func_71370_a=resize @@ -52,4 +53,11 @@ func_71370_a=resize
52 func_175069_a=loadShader 53 func_175069_a=loadShader
53 func_78481_a=getFOVModifier 54 func_78481_a=getFOVModifier
54 func_78479_a=setupCameraTransform 55 func_78479_a=setupCameraTransform
55 -func_147693_a=loadSoundResource  
56 \ No newline at end of file 56 \ No newline at end of file
  57 +func_147693_a=loadSoundResource
  58 +func_180784_a=onBlockClicked
  59 +func_180236_a=activateBlockOrUseItem
  60 +func_147346_a=processPlayerBlockPlacement
  61 +func_175087_a=handleAnimation
  62 +func_147345_a=processPlayerDigging
  63 +func_71190_q=updateTimeLightAndEntities
  64 +func_180031_a=checkThreadAndEnqueue
57 \ No newline at end of file 65 \ No newline at end of file
java/client/com/mumfrey/liteloader/client/ClientPluginChannelsClient.java
@@ -12,7 +12,7 @@ import net.minecraft.network.play.client.C17PacketCustomPayload; @@ -12,7 +12,7 @@ import net.minecraft.network.play.client.C17PacketCustomPayload;
12 import net.minecraft.network.play.server.S01PacketJoinGame; 12 import net.minecraft.network.play.server.S01PacketJoinGame;
13 import net.minecraft.network.play.server.S3FPacketCustomPayload; 13 import net.minecraft.network.play.server.S3FPacketCustomPayload;
14 14
15 -import com.mumfrey.liteloader.client.util.PrivateFields; 15 +import com.mumfrey.liteloader.client.util.PrivateFieldsClient;
16 import com.mumfrey.liteloader.core.ClientPluginChannels; 16 import com.mumfrey.liteloader.core.ClientPluginChannels;
17 import com.mumfrey.liteloader.core.exceptions.UnregisteredChannelException; 17 import com.mumfrey.liteloader.core.exceptions.UnregisteredChannelException;
18 18
@@ -67,7 +67,7 @@ public class ClientPluginChannelsClient extends ClientPluginChannels @@ -67,7 +67,7 @@ public class ClientPluginChannelsClient extends ClientPluginChannels
67 { 67 {
68 if (netHandler instanceof INetHandlerLoginClient) 68 if (netHandler instanceof INetHandlerLoginClient)
69 { 69 {
70 - NetworkManager networkManager = PrivateFields.netManager.get(((NetHandlerLoginClient)netHandler)); 70 + NetworkManager networkManager = PrivateFieldsClient.netManager.get(((NetHandlerLoginClient)netHandler));
71 networkManager.sendPacket(new C17PacketCustomPayload(CHANNEL_REGISTER, registrationData)); 71 networkManager.sendPacket(new C17PacketCustomPayload(CHANNEL_REGISTER, registrationData));
72 } 72 }
73 else if (netHandler instanceof INetHandlerPlayClient) 73 else if (netHandler instanceof INetHandlerPlayClient)
java/client/com/mumfrey/liteloader/client/SoundHandlerReloadInhibitor.java
@@ -6,7 +6,7 @@ import net.minecraft.client.audio.SoundHandler; @@ -6,7 +6,7 @@ import net.minecraft.client.audio.SoundHandler;
6 import net.minecraft.client.resources.IResourceManagerReloadListener; 6 import net.minecraft.client.resources.IResourceManagerReloadListener;
7 import net.minecraft.client.resources.SimpleReloadableResourceManager; 7 import net.minecraft.client.resources.SimpleReloadableResourceManager;
8 8
9 -import com.mumfrey.liteloader.client.util.PrivateFields; 9 +import com.mumfrey.liteloader.client.util.PrivateFieldsClient;
10 import com.mumfrey.liteloader.util.log.LiteLoaderLogger; 10 import com.mumfrey.liteloader.util.log.LiteLoaderLogger;
11 11
12 /** 12 /**
@@ -53,7 +53,7 @@ public class SoundHandlerReloadInhibitor @@ -53,7 +53,7 @@ public class SoundHandlerReloadInhibitor
53 { 53 {
54 if (!this.inhibited) 54 if (!this.inhibited)
55 { 55 {
56 - List<IResourceManagerReloadListener> reloadListeners = PrivateFields.reloadListeners.get(this.resourceManager); 56 + List<IResourceManagerReloadListener> reloadListeners = PrivateFieldsClient.reloadListeners.get(this.resourceManager);
57 if (reloadListeners != null) 57 if (reloadListeners != null)
58 { 58 {
59 this.storedIndex = reloadListeners.indexOf(this.soundHandler); 59 this.storedIndex = reloadListeners.indexOf(this.soundHandler);
@@ -87,7 +87,7 @@ public class SoundHandlerReloadInhibitor @@ -87,7 +87,7 @@ public class SoundHandlerReloadInhibitor
87 { 87 {
88 if (this.inhibited) 88 if (this.inhibited)
89 { 89 {
90 - List<IResourceManagerReloadListener> reloadListeners = PrivateFields.reloadListeners.get(this.resourceManager); 90 + List<IResourceManagerReloadListener> reloadListeners = PrivateFieldsClient.reloadListeners.get(this.resourceManager);
91 if (reloadListeners != null) 91 if (reloadListeners != null)
92 { 92 {
93 if (this.storedIndex > -1) 93 if (this.storedIndex > -1)
java/client/com/mumfrey/liteloader/client/util/PrivateFieldsClient.java 0 โ†’ 100644
  1 +package com.mumfrey.liteloader.client.util;
  2 +
  3 +import java.util.IdentityHashMap;
  4 +import java.util.List;
  5 +import java.util.Map;
  6 +
  7 +import net.minecraft.client.network.NetHandlerLoginClient;
  8 +import net.minecraft.client.renderer.entity.RenderManager;
  9 +import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher;
  10 +import net.minecraft.client.resources.IResourceManagerReloadListener;
  11 +import net.minecraft.client.resources.SimpleReloadableResourceManager;
  12 +import net.minecraft.network.NetworkManager;
  13 +import net.minecraft.tileentity.TileEntity;
  14 +import net.minecraft.util.ObjectIntIdentityMap;
  15 +import net.minecraft.util.RegistryNamespaced;
  16 +import net.minecraft.util.RegistrySimple;
  17 +
  18 +import com.mumfrey.liteloader.core.runtime.Obf;
  19 +import com.mumfrey.liteloader.util.PrivateFields;
  20 +
  21 +@SuppressWarnings("rawtypes")
  22 +public class PrivateFieldsClient<P, T> extends PrivateFields<P, T>
  23 +{
  24 + private PrivateFieldsClient(Class<P> owner, Obf obf)
  25 + {
  26 + super(owner, obf);
  27 + }
  28 +
  29 + public static final PrivateFieldsClient<RenderManager, Map> entityRenderMap = new PrivateFieldsClient<RenderManager, Map> (RenderManager.class, Obf.entityRenderMap);
  30 + public static final PrivateFieldsClient<NetHandlerLoginClient, NetworkManager> netManager = new PrivateFieldsClient<NetHandlerLoginClient, NetworkManager> (NetHandlerLoginClient.class, Obf.networkManager);
  31 + public static final PrivateFieldsClient<RegistrySimple, Map> registryObjects = new PrivateFieldsClient<RegistrySimple, Map> (RegistrySimple.class, Obf.registryObjects);
  32 + public static final PrivateFieldsClient<RegistryNamespaced, ObjectIntIdentityMap> underlyingIntegerMap = new PrivateFieldsClient<RegistryNamespaced, ObjectIntIdentityMap>(RegistryNamespaced.class, Obf.underlyingIntegerMap);
  33 + public static final PrivateFieldsClient<ObjectIntIdentityMap, IdentityHashMap> identityMap = new PrivateFieldsClient<ObjectIntIdentityMap, IdentityHashMap> (ObjectIntIdentityMap.class, Obf.identityMap);
  34 + public static final PrivateFieldsClient<ObjectIntIdentityMap, List> objectList = new PrivateFieldsClient<ObjectIntIdentityMap, List> (ObjectIntIdentityMap.class, Obf.objectList);
  35 + public static final PrivateFieldsClient<TileEntityRendererDispatcher, Map> specialRendererMap = new PrivateFieldsClient<TileEntityRendererDispatcher, Map> (TileEntityRendererDispatcher.class, Obf.mapSpecialRenderers);
  36 + public static final PrivateFieldsClient<TileEntity, Map> tileEntityNameToClassMap = new PrivateFieldsClient<TileEntity, Map> (TileEntity.class, Obf.tileEntityNameToClassMap);
  37 + public static final PrivateFieldsClient<TileEntity, Map> tileEntityClassToNameMap = new PrivateFieldsClient<TileEntity, Map> (TileEntity.class, Obf.tileEntityClassToNameMap);
  38 +
  39 + public static final PrivateFieldsClient<SimpleReloadableResourceManager, List<IResourceManagerReloadListener>> reloadListeners =
  40 + new PrivateFieldsClient<SimpleReloadableResourceManager, List<IResourceManagerReloadListener>>(SimpleReloadableResourceManager.class, Obf.reloadListeners);
  41 +}
0 \ No newline at end of file 42 \ No newline at end of file
java/client/com/mumfrey/liteloader/util/ModUtilities.java
@@ -6,13 +6,8 @@ import java.util.IdentityHashMap; @@ -6,13 +6,8 @@ import java.util.IdentityHashMap;
6 import java.util.List; 6 import java.util.List;
7 import java.util.Map; 7 import java.util.Map;
8 8
9 -import org.lwjgl.LWJGLException;  
10 -import org.lwjgl.opengl.Display;  
11 -import org.lwjgl.opengl.DisplayMode;  
12 -  
13 import net.minecraft.block.Block; 9 import net.minecraft.block.Block;
14 import net.minecraft.client.Minecraft; 10 import net.minecraft.client.Minecraft;
15 -import net.minecraft.client.renderer.Tessellator;  
16 import net.minecraft.client.renderer.entity.Render; 11 import net.minecraft.client.renderer.entity.Render;
17 import net.minecraft.client.renderer.entity.RenderManager; 12 import net.minecraft.client.renderer.entity.RenderManager;
18 import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher; 13 import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher;
@@ -21,16 +16,18 @@ import net.minecraft.entity.Entity; @@ -21,16 +16,18 @@ import net.minecraft.entity.Entity;
21 import net.minecraft.init.Blocks; 16 import net.minecraft.init.Blocks;
22 import net.minecraft.init.Items; 17 import net.minecraft.init.Items;
23 import net.minecraft.item.Item; 18 import net.minecraft.item.Item;
24 -import net.minecraft.launchwrapper.IClassTransformer;  
25 -import net.minecraft.launchwrapper.Launch;  
26 import net.minecraft.tileentity.TileEntity; 19 import net.minecraft.tileentity.TileEntity;
27 import net.minecraft.util.ObjectIntIdentityMap; 20 import net.minecraft.util.ObjectIntIdentityMap;
28 import net.minecraft.util.RegistryNamespaced; 21 import net.minecraft.util.RegistryNamespaced;
29 import net.minecraft.util.RegistrySimple; 22 import net.minecraft.util.RegistrySimple;
30 import net.minecraft.util.ResourceLocation; 23 import net.minecraft.util.ResourceLocation;
31 24
  25 +import org.lwjgl.LWJGLException;
  26 +import org.lwjgl.opengl.Display;
  27 +import org.lwjgl.opengl.DisplayMode;
  28 +
32 import com.mumfrey.liteloader.client.overlays.IMinecraft; 29 import com.mumfrey.liteloader.client.overlays.IMinecraft;
33 -import com.mumfrey.liteloader.client.util.PrivateFields; 30 +import com.mumfrey.liteloader.client.util.PrivateFieldsClient;
34 import com.mumfrey.liteloader.core.runtime.Obf; 31 import com.mumfrey.liteloader.core.runtime.Obf;
35 import com.mumfrey.liteloader.util.log.LiteLoaderLogger; 32 import com.mumfrey.liteloader.util.log.LiteLoaderLogger;
36 33
@@ -42,41 +39,11 @@ import com.mumfrey.liteloader.util.log.LiteLoaderLogger; @@ -42,41 +39,11 @@ import com.mumfrey.liteloader.util.log.LiteLoaderLogger;
42 public abstract class ModUtilities 39 public abstract class ModUtilities
43 { 40 {
44 /** 41 /**
45 - * True if FML is being used, in which case we use searge names instead of raw field/method names  
46 - */  
47 - private static boolean fmlDetected = false;  
48 -  
49 - private static boolean seargeNames = false;  
50 -  
51 - static  
52 - {  
53 - // Check for FML  
54 - ModUtilities.fmlDetected = ModUtilities.fmlIsPresent();  
55 -  
56 - try  
57 - {  
58 - Minecraft.class.getDeclaredField("running");  
59 - }  
60 - catch (SecurityException ex)  
61 - {  
62 - }  
63 - catch (NoSuchFieldException ex)  
64 - {  
65 - ModUtilities.seargeNames = true;  
66 - }  
67 - }  
68 -  
69 - /**  
70 * @return true if FML is present in the current environment 42 * @return true if FML is present in the current environment
71 */ 43 */
72 public static boolean fmlIsPresent() 44 public static boolean fmlIsPresent()
73 { 45 {
74 -// if (ClientBrandRetriever.getClientModName().contains("fml")) return true;  
75 -  
76 - for (IClassTransformer transformer : Launch.classLoader.getTransformers())  
77 - if (transformer.getClass().getName().contains("fml")) return true;  
78 -  
79 - return false; 46 + return Obf.fmlIsPresent();
80 } 47 }
81 48
82 public static void setWindowSize(int width, int height) 49 public static void setWindowSize(int width, int height)
@@ -105,7 +72,7 @@ public abstract class ModUtilities @@ -105,7 +72,7 @@ public abstract class ModUtilities
105 { 72 {
106 RenderManager renderManager = Minecraft.getMinecraft().getRenderManager(); 73 RenderManager renderManager = Minecraft.getMinecraft().getRenderManager();
107 74
108 - Map<Class<? extends Entity>, Render> entityRenderMap = PrivateFields.entityRenderMap.get(renderManager); 75 + Map<Class<? extends Entity>, Render> entityRenderMap = PrivateFieldsClient.entityRenderMap.get(renderManager);
109 if (entityRenderMap != null) 76 if (entityRenderMap != null)
110 { 77 {
111 entityRenderMap.put(entityClass, renderer); 78 entityRenderMap.put(entityClass, renderer);
@@ -123,7 +90,7 @@ public abstract class ModUtilities @@ -123,7 +90,7 @@ public abstract class ModUtilities
123 90
124 try 91 try
125 { 92 {
126 - Map<Class<? extends TileEntity>, TileEntitySpecialRenderer> specialRendererMap = PrivateFields.specialRendererMap.get(tileEntityRenderer); 93 + Map<Class<? extends TileEntity>, TileEntitySpecialRenderer> specialRendererMap = PrivateFieldsClient.specialRendererMap.get(tileEntityRenderer);
127 specialRendererMap.put(tileEntityClass, renderer); 94 specialRendererMap.put(tileEntityClass, renderer);
128 renderer.setRendererDispatcher(tileEntityRenderer); 95 renderer.setRendererDispatcher(tileEntityRenderer);
129 } 96 }
@@ -228,8 +195,8 @@ public abstract class ModUtilities @@ -228,8 +195,8 @@ public abstract class ModUtilities
228 { 195 {
229 try 196 try
230 { 197 {
231 - Map<String, Class<? extends TileEntity>> nameToClassMap = PrivateFields.tileEntityNameToClassMap.get(null);  
232 - Map<Class<? extends TileEntity>, String> classToNameMap = PrivateFields.tileEntityClassToNameMap.get(null); 198 + Map<String, Class<? extends TileEntity>> nameToClassMap = PrivateFieldsClient.tileEntityNameToClassMap.get(null);
  199 + Map<Class<? extends TileEntity>, String> classToNameMap = PrivateFieldsClient.tileEntityClassToNameMap.get(null);
233 200
234 nameToClassMap.put(entityName, tileEntityClass); 201 nameToClassMap.put(entityName, tileEntityClass);
235 classToNameMap.put(tileEntityClass, entityName); 202 classToNameMap.put(tileEntityClass, entityName);
@@ -248,8 +215,7 @@ public abstract class ModUtilities @@ -248,8 +215,7 @@ public abstract class ModUtilities
248 */ 215 */
249 public static String getObfuscatedFieldName(String fieldName, String obfuscatedFieldName, String seargeFieldName) 216 public static String getObfuscatedFieldName(String fieldName, String obfuscatedFieldName, String seargeFieldName)
250 { 217 {
251 - boolean deobfuscated = Tessellator.class.getSimpleName().equals("Tessellator");  
252 - return deobfuscated ? (ModUtilities.seargeNames ? seargeFieldName : fieldName) : (ModUtilities.fmlDetected ? seargeFieldName : obfuscatedFieldName); 218 + return Obf.getObfuscatedFieldName(fieldName, obfuscatedFieldName, seargeFieldName);
253 } 219 }
254 220
255 /** 221 /**
@@ -260,8 +226,7 @@ public abstract class ModUtilities @@ -260,8 +226,7 @@ public abstract class ModUtilities
260 */ 226 */
261 public static String getObfuscatedFieldName(Obf obf) 227 public static String getObfuscatedFieldName(Obf obf)
262 { 228 {
263 - boolean deobfuscated = Tessellator.class.getSimpleName().equals("Tessellator");  
264 - return deobfuscated ? (ModUtilities.seargeNames ? obf.srg : obf.name) : (ModUtilities.fmlDetected ? obf.srg : obf.obf); 229 + return Obf.getObfuscatedFieldName(obf);
265 } 230 }
266 231
267 @SuppressWarnings("unchecked") 232 @SuppressWarnings("unchecked")
@@ -274,10 +239,10 @@ public abstract class ModUtilities @@ -274,10 +239,10 @@ public abstract class ModUtilities
274 if (registry instanceof RegistryNamespaced) 239 if (registry instanceof RegistryNamespaced)
275 { 240 {
276 RegistryNamespaced rns = (RegistryNamespaced)registry; 241 RegistryNamespaced rns = (RegistryNamespaced)registry;
277 - underlyingIntegerMap = PrivateFields.underlyingIntegerMap.get(rns); 242 + underlyingIntegerMap = PrivateFieldsClient.underlyingIntegerMap.get(rns);
278 } 243 }
279 244
280 - Map<K, V> registryObjects = PrivateFields.registryObjects.get(registry); 245 + Map<K, V> registryObjects = PrivateFieldsClient.registryObjects.get(registry);
281 if (registryObjects != null) 246 if (registryObjects != null)
282 { 247 {
283 V existingValue = registryObjects.get(key); 248 V existingValue = registryObjects.get(key);
@@ -287,8 +252,8 @@ public abstract class ModUtilities @@ -287,8 +252,8 @@ public abstract class ModUtilities
287 252
288 if (underlyingIntegerMap != null) 253 if (underlyingIntegerMap != null)
289 { 254 {
290 - IdentityHashMap<V, Integer> identityMap = PrivateFields.identityMap.get(underlyingIntegerMap);  
291 - List<V> objectList = PrivateFields.objectList.get(underlyingIntegerMap); 255 + IdentityHashMap<V, Integer> identityMap = PrivateFieldsClient.identityMap.get(underlyingIntegerMap);
  256 + List<V> objectList = PrivateFieldsClient.objectList.get(underlyingIntegerMap);
292 if (identityMap != null) identityMap.remove(existingValue); 257 if (identityMap != null) identityMap.remove(existingValue);
293 if (objectList != null) objectList.remove(existingValue); 258 if (objectList != null) objectList.remove(existingValue);
294 } 259 }
java/common/com/mumfrey/liteloader/core/runtime/Obf.java
@@ -7,6 +7,10 @@ import java.util.HashMap; @@ -7,6 +7,10 @@ import java.util.HashMap;
7 import java.util.Map; 7 import java.util.Map;
8 import java.util.Properties; 8 import java.util.Properties;
9 9
  10 +import net.minecraft.launchwrapper.IClassTransformer;
  11 +import net.minecraft.launchwrapper.Launch;
  12 +import net.minecraft.server.MinecraftServer;
  13 +
10 /** 14 /**
11 * Centralised obfuscation table for LiteLoader 15 * Centralised obfuscation table for LiteLoader
12 * 16 *
@@ -70,6 +74,14 @@ public class Obf @@ -70,6 +74,14 @@ public class Obf
70 public static final Obf Render = new Obf("net.minecraft.client.renderer.entity.Render", "cpu" ); 74 public static final Obf Render = new Obf("net.minecraft.client.renderer.entity.Render", "cpu" );
71 public static final Obf GuiTextField = new Obf("net.minecraft.client.gui.GuiTextField", "bul" ); 75 public static final Obf GuiTextField = new Obf("net.minecraft.client.gui.GuiTextField", "bul" );
72 public static final Obf SoundHandler = new Obf("net.minecraft.client.audio.SoundHandler", "czh" ); 76 public static final Obf SoundHandler = new Obf("net.minecraft.client.audio.SoundHandler", "czh" );
  77 + public static final Obf BlockPos = new Obf("net.minecraft.util.BlockPos", "dt" );
  78 + public static final Obf EnumFacing = new Obf("net.minecraft.util.EnumFacing", "ej" );
  79 + public static final Obf ItemInWorldManager = new Obf("net.minecraft.server.management.ItemInWorldManager", "qx" );
  80 + public static final Obf NetHandlerPlayServer = new Obf("net.minecraft.network.NetHandlerPlayServer", "rj" );
  81 + public static final Obf EntityPlayer = new Obf("net.minecraft.entity.player.EntityPlayer", "ahd" );
  82 + public static final Obf World = new Obf("net.minecraft.world.World", "aqu" );
  83 + public static final Obf ItemStack = new Obf("net.minecraft.item.ItemStack", "amj" );
  84 + public static final Obf PacketThreadUtil = new Obf("net.minecraft.network.PacketThreadUtil", "ig" );
73 85
74 // Fields 86 // Fields
75 // ----------------------------------------------------------------------------------------- 87 // -----------------------------------------------------------------------------------------
@@ -93,6 +105,7 @@ public class Obf @@ -93,6 +105,7 @@ public class Obf
93 public static final Obf shaderResourceLocations = new Obf("field_147712_ad", "ab" ); 105 public static final Obf shaderResourceLocations = new Obf("field_147712_ad", "ab" );
94 public static final Obf shaderIndex = new Obf("field_147713_ae", "ac" ); 106 public static final Obf shaderIndex = new Obf("field_147713_ae", "ac" );
95 public static final Obf useShader = new Obf("field_175083_ad", "ad" ); 107 public static final Obf useShader = new Obf("field_175083_ad", "ad" );
  108 + public static final Obf viewDistance = new Obf("field_149528_b", "b" );
96 109
97 // Methods 110 // Methods
98 // ----------------------------------------------------------------------------------------- 111 // -----------------------------------------------------------------------------------------
@@ -132,6 +145,13 @@ public class Obf @@ -132,6 +145,13 @@ public class Obf
132 public static final Obf getFOVModifier = new Obf("func_78481_a", "a" ); 145 public static final Obf getFOVModifier = new Obf("func_78481_a", "a" );
133 public static final Obf setupCameraTransform = new Obf("func_78479_a", "a" ); 146 public static final Obf setupCameraTransform = new Obf("func_78479_a", "a" );
134 public static final Obf loadSoundResource = new Obf("func_147693_a", "a" ); 147 public static final Obf loadSoundResource = new Obf("func_147693_a", "a" );
  148 + public static final Obf onBlockClicked = new Obf("func_180784_a", "a" );
  149 + public static final Obf activateBlockOrUseItem = new Obf("func_180236_a", "a" );
  150 + public static final Obf processPlayerBlockPlacement = new Obf("func_147346_a", "a" );
  151 + public static final Obf handleAnimation = new Obf("func_175087_a", "a" );
  152 + public static final Obf processPlayerDigging = new Obf("func_147345_a", "a" );
  153 + public static final Obf updateTimeLightAndEntities = new Obf("func_71190_q", "z" );
  154 + public static final Obf checkThreadAndEnqueue = new Obf("func_180031_a", "a" );
135 155
136 public static final int MCP = 0; 156 public static final int MCP = 0;
137 public static final int SRG = 1; 157 public static final int SRG = 1;
@@ -383,4 +403,61 @@ public class Obf @@ -383,4 +403,61 @@ public class Obf
383 return this.ordinal; 403 return this.ordinal;
384 } 404 }
385 } 405 }
  406 +
  407 + /**
  408 + * True if FML is being used, in which case we use searge names instead of raw field/method names
  409 + */
  410 + private static boolean fmlDetected = false;
  411 +
  412 + private static boolean seargeNames = false;
  413 +
  414 + static
  415 + {
  416 + // Check for FML
  417 + Obf.fmlDetected = Obf.fmlIsPresent();
  418 +
  419 + try
  420 + {
  421 + MinecraftServer.class.getDeclaredField("serverRunning");
  422 + }
  423 + catch (SecurityException ex)
  424 + {
  425 + }
  426 + catch (NoSuchFieldException ex)
  427 + {
  428 + Obf.seargeNames = true;
  429 + }
  430 + }
  431 +
  432 + public static boolean fmlIsPresent()
  433 + {
  434 + for (IClassTransformer transformer : Launch.classLoader.getTransformers())
  435 + if (transformer.getClass().getName().contains("fml")) return true;
  436 +
  437 + return false;
  438 + }
  439 +
  440 + /**
  441 + * Abstraction helper function
  442 + *
  443 + * @param fieldName Name of field to get, returned unmodified if in debug mode
  444 + * @return Obfuscated field name if present
  445 + */
  446 + public static String getObfuscatedFieldName(String fieldName, String obfuscatedFieldName, String seargeFieldName)
  447 + {
  448 + boolean deobfuscated = MinecraftServer.class.getSimpleName().equals("MinecraftServer");
  449 + return deobfuscated ? (Obf.seargeNames ? seargeFieldName : fieldName) : (Obf.fmlDetected ? seargeFieldName : obfuscatedFieldName);
  450 + }
  451 +
  452 + /**
  453 + * Abstraction helper function
  454 + *
  455 + * @param obf Field to get, returned unmodified if in debug mode
  456 + * @return Obfuscated field name if present
  457 + */
  458 + public static String getObfuscatedFieldName(Obf obf)
  459 + {
  460 + boolean deobfuscated = MinecraftServer.class.getSimpleName().equals("MinecraftServer");
  461 + return deobfuscated ? (Obf.seargeNames ? obf.srg : obf.name) : (Obf.fmlDetected ? obf.srg : obf.obf);
  462 + }
386 } 463 }
java/client/com/mumfrey/liteloader/client/util/PrivateFields.java renamed to java/common/com/mumfrey/liteloader/util/PrivateFields.java
1 -package com.mumfrey.liteloader.client.util; 1 +package com.mumfrey.liteloader.util;
2 2
3 import java.lang.reflect.Field; 3 import java.lang.reflect.Field;
4 import java.lang.reflect.Modifier; 4 import java.lang.reflect.Modifier;
5 -import java.util.IdentityHashMap;  
6 -import java.util.List;  
7 -import java.util.Map;  
8 5
9 -import net.minecraft.client.network.NetHandlerLoginClient;  
10 -import net.minecraft.client.renderer.entity.RenderManager;  
11 -import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher;  
12 -import net.minecraft.client.resources.IResourceManagerReloadListener;  
13 -import net.minecraft.client.resources.SimpleReloadableResourceManager;  
14 -import net.minecraft.network.NetworkManager;  
15 -import net.minecraft.tileentity.TileEntity;  
16 -import net.minecraft.util.ObjectIntIdentityMap;  
17 -import net.minecraft.util.RegistryNamespaced;  
18 -import net.minecraft.util.RegistrySimple; 6 +import net.minecraft.network.play.client.C15PacketClientSettings;
19 7
20 import com.mumfrey.liteloader.core.runtime.Obf; 8 import com.mumfrey.liteloader.core.runtime.Obf;
21 -import com.mumfrey.liteloader.util.ModUtilities;  
22 9
23 /** 10 /**
24 * Wrapper for obf/mcp reflection-accessed private fields, mainly added to centralise the locations I have to update the obfuscated field names 11 * Wrapper for obf/mcp reflection-accessed private fields, mainly added to centralise the locations I have to update the obfuscated field names
@@ -28,7 +15,6 @@ import com.mumfrey.liteloader.util.ModUtilities; @@ -28,7 +15,6 @@ import com.mumfrey.liteloader.util.ModUtilities;
28 * @param <P> Parent class type, the type of the class that owns the field 15 * @param <P> Parent class type, the type of the class that owns the field
29 * @param <T> Field type, the type of the field value 16 * @param <T> Field type, the type of the field value
30 */ 17 */
31 -@SuppressWarnings("rawtypes")  
32 public class PrivateFields<P, T> 18 public class PrivateFields<P, T>
33 { 19 {
34 /** 20 /**
@@ -51,7 +37,7 @@ public class PrivateFields&lt;P, T&gt; @@ -51,7 +37,7 @@ public class PrivateFields&lt;P, T&gt;
51 protected PrivateFields(Class<P> owner, Obf obf) 37 protected PrivateFields(Class<P> owner, Obf obf)
52 { 38 {
53 this.parentClass = owner; 39 this.parentClass = owner;
54 - this.fieldName = ModUtilities.getObfuscatedFieldName(obf); 40 + this.fieldName = Obf.getObfuscatedFieldName(obf);
55 } 41 }
56 42
57 /** 43 /**
@@ -137,17 +123,7 @@ public class PrivateFields&lt;P, T&gt; @@ -137,17 +123,7 @@ public class PrivateFields&lt;P, T&gt;
137 123
138 return value; 124 return value;
139 } 125 }
140 -  
141 - public static final PrivateFields<RenderManager, Map> entityRenderMap = new PrivateFields<RenderManager, Map> (RenderManager.class, Obf.entityRenderMap);  
142 - public static final PrivateFields<NetHandlerLoginClient, NetworkManager> netManager = new PrivateFields<NetHandlerLoginClient, NetworkManager> (NetHandlerLoginClient.class, Obf.networkManager);  
143 - public static final PrivateFields<RegistrySimple, Map> registryObjects = new PrivateFields<RegistrySimple, Map> (RegistrySimple.class, Obf.registryObjects);  
144 - public static final PrivateFields<RegistryNamespaced, ObjectIntIdentityMap> underlyingIntegerMap = new PrivateFields<RegistryNamespaced, ObjectIntIdentityMap>(RegistryNamespaced.class, Obf.underlyingIntegerMap);  
145 - public static final PrivateFields<ObjectIntIdentityMap, IdentityHashMap> identityMap = new PrivateFields<ObjectIntIdentityMap, IdentityHashMap> (ObjectIntIdentityMap.class, Obf.identityMap);  
146 - public static final PrivateFields<ObjectIntIdentityMap, List> objectList = new PrivateFields<ObjectIntIdentityMap, List> (ObjectIntIdentityMap.class, Obf.objectList);  
147 - public static final PrivateFields<TileEntityRendererDispatcher, Map> specialRendererMap = new PrivateFields<TileEntityRendererDispatcher, Map> (TileEntityRendererDispatcher.class, Obf.mapSpecialRenderers);  
148 - public static final PrivateFields<TileEntity, Map> tileEntityNameToClassMap = new PrivateFields<TileEntity, Map> (TileEntity.class, Obf.tileEntityNameToClassMap);  
149 - public static final PrivateFields<TileEntity, Map> tileEntityClassToNameMap = new PrivateFields<TileEntity, Map> (TileEntity.class, Obf.tileEntityClassToNameMap);  
150 126
151 - public static final PrivateFields<SimpleReloadableResourceManager, List<IResourceManagerReloadListener>> reloadListeners =  
152 - new PrivateFields<SimpleReloadableResourceManager, List<IResourceManagerReloadListener>>(SimpleReloadableResourceManager.class, Obf.reloadListeners); 127 + public static final PrivateFields<C15PacketClientSettings, Integer> viewDistance = new PrivateFields<C15PacketClientSettings, Integer>(C15PacketClientSettings.class, Obf.viewDistance);
  128 +
153 } 129 }
154 \ No newline at end of file 130 \ No newline at end of file