Commit 2a878253b8f7bbae107cef2bcf5f10642b93bf4d

Authored by Mumfrey
1 parent 48da29aa

initial commit for 1.8

+ All GL moved to GLStateManager
 + GL Convenience class added
 + Added EnumerationObserver
 + CallbackInjectionTransformer is deprecated
 + PacketTransformer is removed
 + Added JSON Event Transformer definitions
 + Event Transformers now support capturing local vars
Showing 63 changed files with 2313 additions and 753 deletions

Too many changes to show.

To preserve performance only 63 of 86 files are displayed.

.classpath
@@ -7,17 +7,18 @@ @@ -7,17 +7,18 @@
7 <classpathentry combineaccessrules="false" exported="true" kind="src" path="/Client"/> 7 <classpathentry combineaccessrules="false" exported="true" kind="src" path="/Client"/>
8 <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> 8 <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
9 <classpathentry exported="true" kind="lib" path="/Client/jars/libraries/com/google/code/gson/gson/2.2.4/gson-2.2.4.jar"/> 9 <classpathentry exported="true" kind="lib" path="/Client/jars/libraries/com/google/code/gson/gson/2.2.4/gson-2.2.4.jar"/>
10 - <classpathentry exported="true" kind="lib" path="/Client/jars/libraries/com/google/guava/guava/15.0/guava-15.0.jar"/> 10 + <classpathentry exported="true" kind="lib" path="/Client/jars/libraries/com/google/guava/guava/17.0/guava-17.0.jar"/>
11 <classpathentry exported="true" kind="lib" path="/Client/jars/libraries/commons-io/commons-io/2.4/commons-io-2.4.jar"/> 11 <classpathentry exported="true" kind="lib" path="/Client/jars/libraries/commons-io/commons-io/2.4/commons-io-2.4.jar"/>
12 <classpathentry exported="true" kind="lib" path="lib/launchwrapper-1.11.jar" sourcepath="externals/launchwrapper/src"/> 12 <classpathentry exported="true" kind="lib" path="lib/launchwrapper-1.11.jar" sourcepath="externals/launchwrapper/src"/>
13 - <classpathentry exported="true" kind="lib" path="/Client/jars/libraries/org/apache/commons/commons-lang3/3.1/commons-lang3-3.1.jar"/>  
14 - <classpathentry kind="lib" path="/Client/jars/libraries/net/sf/jopt-simple/jopt-simple/4.5/jopt-simple-4.5.jar"/>  
15 - <classpathentry exported="true" kind="lib" path="/Client/jars/libraries/io/netty/netty-all/4.0.10.Final/netty-all-4.0.10.Final.jar"/> 13 + <classpathentry exported="true" kind="lib" path="/Client/jars/libraries/org/apache/commons/commons-lang3/3.3.2/commons-lang3-3.3.2.jar"/>
  14 + <classpathentry kind="lib" path="/Client/jars/libraries/net/sf/jopt-simple/jopt-simple/4.6/jopt-simple-4.6.jar"/>
  15 + <classpathentry exported="true" kind="lib" path="/Client/jars/libraries/io/netty/netty-all/4.0.15.Final/netty-all-4.0.15.Final.jar"/>
16 <classpathentry exported="true" kind="lib" path="/Client/jars/libraries/org/apache/logging/log4j/log4j-api/2.0-beta9/log4j-api-2.0-beta9.jar"/> 16 <classpathentry exported="true" kind="lib" path="/Client/jars/libraries/org/apache/logging/log4j/log4j-api/2.0-beta9/log4j-api-2.0-beta9.jar"/>
17 <classpathentry exported="true" kind="lib" path="/Client/jars/libraries/org/apache/logging/log4j/log4j-core/2.0-beta9/log4j-core-2.0-beta9.jar"/> 17 <classpathentry exported="true" kind="lib" path="/Client/jars/libraries/org/apache/logging/log4j/log4j-core/2.0-beta9/log4j-core-2.0-beta9.jar"/>
18 <classpathentry exported="true" kind="lib" path="/Client/jars/libraries/net/java/jinput/jinput/2.0.5/jinput-2.0.5.jar"/> 18 <classpathentry exported="true" kind="lib" path="/Client/jars/libraries/net/java/jinput/jinput/2.0.5/jinput-2.0.5.jar"/>
19 - <classpathentry exported="true" kind="lib" path="/Client/jars/libraries/com/mojang/authlib/1.5.16/authlib-1.5.16.jar"/> 19 + <classpathentry exported="true" kind="lib" path="/Client/jars/libraries/com/mojang/authlib/1.5.17/authlib-1.5.17.jar"/>
20 <classpathentry exported="true" kind="lib" path="/Client/jars/libraries/org/lwjgl/lwjgl/lwjgl/2.9.1/lwjgl-2.9.1.jar"/> 20 <classpathentry exported="true" kind="lib" path="/Client/jars/libraries/org/lwjgl/lwjgl/lwjgl/2.9.1/lwjgl-2.9.1.jar"/>
21 <classpathentry exported="true" kind="lib" path="lib/asm-debug-all-5.0.3.jar"/> 21 <classpathentry exported="true" kind="lib" path="lib/asm-debug-all-5.0.3.jar"/>
  22 + <classpathentry exported="true" kind="lib" path="/Client/jars/libraries/org/lwjgl/lwjgl/lwjgl_util/2.9.1/lwjgl_util-2.9.1.jar"/>
22 <classpathentry kind="output" path="bin"/> 23 <classpathentry kind="output" path="bin"/>
23 </classpath> 24 </classpath>
ant/build_liteloader.xml
@@ -4,8 +4,8 @@ @@ -4,8 +4,8 @@
4 <taskdef resource="net/sf/antcontrib/antcontrib.properties" classpath="tasks/ant-contrib.jar" /> 4 <taskdef resource="net/sf/antcontrib/antcontrib.properties" classpath="tasks/ant-contrib.jar" />
5 5
6 <!-- Versions !!IMPORTANT --> 6 <!-- Versions !!IMPORTANT -->
7 - <property name="version" value="1.7.10_04" />  
8 - <property name="mcversion" value="1.7.10" /> 7 + <property name="version" value="1.8.0_00" />
  8 + <property name="mcversion" value="1.8.00" />
9 <property name="author" value="Mumfrey" /> 9 <property name="author" value="Mumfrey" />
10 10
11 <!-- Project definitions and dependencies --> 11 <!-- Project definitions and dependencies -->
debug/obfuscation.properties
1 field_71424_I=mcProfiler 1 field_71424_I=mcProfiler
2 field_78729_o=entityRenderMap field_110546_b=reloadListeners 2 field_78729_o=entityRenderMap field_110546_b=reloadListeners
3 -func_148833_a=processPacket func_71411_J=runGameLoop func_71407_l=runTick func_78480_b=updateCameraAndRender func_78471_a=renderWorld func_73830_a=renderGameOverlay func_76320_a=startSection func_76319_b=endSection func_76318_c=endStartSection  
4 -func_72368_a=respawnPlayer func_72355_a=initializeConnectionToPlayer func_72377_c=playerLoggedIn func_72367_e=playerLoggedOut 3 +field_147393_d=networkManager
  4 +field_82596_a=registryObjects field_148759_a=underlyingIntegerMap #field_148749_a=
  5 +#field_148748_b= field_147559_m=mapSpecialRenderers
  6 +field_145855_i=nameToClassMap
  7 +field_145853_j=classToNameMap func_148833_a=processPacket func_71411_J=runGameLoop func_71407_l=runTick func_78480_b=updateCameraAndRender
  8 +func_78471_a=renderWorld func_175180_a=renderGameOverlay func_76320_a=startSection
  9 +func_76319_b=endSection
  10 +func_76318_c=endStartSection
  11 +func_148545_a=createPlayerForUser
  12 +func_72368_a=recreatePlayerEntity
  13 +func_72355_a=initializeConnectionToPlayer
  14 +func_72377_c=playerLoggedIn
  15 +func_72367_e=playerLoggedOut
5 func_71384_a=startGame 16 func_71384_a=startGame
6 func_71197_b=startServer 17 func_71197_b=startServer
7 func_71256_s=startServerThread 18 func_71256_s=startServerThread
8 func_71165_d=sendChatMessage 19 func_71165_d=sendChatMessage
9 -func_148545_a=createPlayerForUser  
10 func_147119_ah=updateFramebufferSize 20 func_147119_ah=updateFramebufferSize
11 -field_82596_a=registryObjects  
12 -field_148759_a=underlyingIntegerMap  
13 -#field_148749_a=  
14 -#field_148748_b=  
15 -field_147559_m=mapSpecialRenderers  
16 -field_145855_i=nameToClassMap  
17 -field_145853_j=classToNameMap  
18 func_147615_c=framebufferRender 21 func_147615_c=framebufferRender
  22 +func_178038_a=framebufferRenderExt
19 func_147612_c=bindFramebufferTexture 23 func_147612_c=bindFramebufferTexture
20 -func_146230_a=drawChat  
21 \ No newline at end of file 24 \ No newline at end of file
  25 +func_146230_a=drawChat
  26 +func_179086_m=clear
  27 +func_175068_a=renderWorldPass
  28 +func_148256_e=getProfile
22 \ No newline at end of file 29 \ No newline at end of file
java/client/com/mumfrey/liteloader/FrameBufferListener.java
@@ -15,7 +15,7 @@ public interface FrameBufferListener extends LiteMod @@ -15,7 +15,7 @@ public interface FrameBufferListener extends LiteMod
15 public abstract void preRenderFBO(Framebuffer fbo); 15 public abstract void preRenderFBO(Framebuffer fbo);
16 16
17 /** 17 /**
18 - * Called immediately before the FBO is rendered to the screen, after the appropriate GL modes and matrix transforms 18 + * Called immediately before the FBO is rendered to the screen, after the appropriate IGL modes and matrix transforms
19 * have been set but before the FBO is actually rendered into the main output buffer. 19 * have been set but before the FBO is actually rendered into the main output buffer.
20 * 20 *
21 * @param fbo FBO instance 21 * @param fbo FBO instance
java/client/com/mumfrey/liteloader/client/CallbackProxyClient.java
1 package com.mumfrey.liteloader.client; 1 package com.mumfrey.liteloader.client;
2 2
  3 +import java.util.UUID;
  4 +
3 import net.minecraft.client.Minecraft; 5 import net.minecraft.client.Minecraft;
4 -import net.minecraft.client.entity.EntityClientPlayerMP; 6 +import net.minecraft.client.entity.EntityPlayerSP;
5 import net.minecraft.client.gui.GuiIngame; 7 import net.minecraft.client.gui.GuiIngame;
6 import net.minecraft.client.renderer.EntityRenderer; 8 import net.minecraft.client.renderer.EntityRenderer;
7 import net.minecraft.client.renderer.OpenGlHelper; 9 import net.minecraft.client.renderer.OpenGlHelper;
8 import net.minecraft.client.shader.Framebuffer; 10 import net.minecraft.client.shader.Framebuffer;
  11 +import net.minecraft.entity.player.EntityPlayer;
9 import net.minecraft.entity.player.EntityPlayerMP; 12 import net.minecraft.entity.player.EntityPlayerMP;
10 import net.minecraft.network.NetworkManager; 13 import net.minecraft.network.NetworkManager;
11 import net.minecraft.server.integrated.IntegratedServer; 14 import net.minecraft.server.integrated.IntegratedServer;
12 import net.minecraft.server.management.ServerConfigurationManager; 15 import net.minecraft.server.management.ServerConfigurationManager;
  16 +import net.minecraft.util.Session;
13 import net.minecraft.world.WorldSettings; 17 import net.minecraft.world.WorldSettings;
14 18
15 import com.mojang.authlib.GameProfile; 19 import com.mojang.authlib.GameProfile;
@@ -30,7 +34,7 @@ public class CallbackProxyClient @@ -30,7 +34,7 @@ public class CallbackProxyClient
30 */ 34 */
31 private static boolean clock = false; 35 private static boolean clock = false;
32 36
33 - private static ClientEvents events; 37 + private static EventsClient events;
34 38
35 private static boolean fboEnabled; 39 private static boolean fboEnabled;
36 40
@@ -38,7 +42,7 @@ public class CallbackProxyClient @@ -38,7 +42,7 @@ public class CallbackProxyClient
38 42
39 public static void onStartupComplete(EventInfo<Minecraft> e) 43 public static void onStartupComplete(EventInfo<Minecraft> e)
40 { 44 {
41 - CallbackProxyClient.events = ClientEvents.getInstance(); 45 + CallbackProxyClient.events = EventsClient.getInstance();
42 46
43 if (CallbackProxyClient.events == null) 47 if (CallbackProxyClient.events == null)
44 { 48 {
@@ -74,12 +78,12 @@ public class CallbackProxyClient @@ -74,12 +78,12 @@ public class CallbackProxyClient
74 CallbackProxyClient.events.preRenderGUI(partialTicks); 78 CallbackProxyClient.events.preRenderGUI(partialTicks);
75 } 79 }
76 80
77 - public static void onSetupCameraTransform(EventInfo<EntityRenderer> e, float partialTicks, long timeSlice) 81 + public static void onSetupCameraTransform(EventInfo<EntityRenderer> e, int pass, float partialTicks, long timeSlice)
78 { 82 {
79 CallbackProxyClient.events.onSetupCameraTransform(partialTicks, timeSlice); 83 CallbackProxyClient.events.onSetupCameraTransform(partialTicks, timeSlice);
80 } 84 }
81 85
82 - public static void postRenderEntities(EventInfo<EntityRenderer> e, float partialTicks, long timeSlice) 86 + public static void postRenderEntities(EventInfo<EntityRenderer> e, int pass, float partialTicks, long timeSlice)
83 { 87 {
84 CallbackProxyClient.events.postRenderEntities(partialTicks, timeSlice); 88 CallbackProxyClient.events.postRenderEntities(partialTicks, timeSlice);
85 } 89 }
@@ -94,14 +98,14 @@ public class CallbackProxyClient @@ -94,14 +98,14 @@ public class CallbackProxyClient
94 CallbackProxyClient.events.onRenderHUD(partialTicks); 98 CallbackProxyClient.events.onRenderHUD(partialTicks);
95 } 99 }
96 100
97 - public static void onRenderChat(EventInfo<GuiIngame> e, float partialTicks, boolean guiActive, int mouseX, int mouseY) 101 + public static void onRenderChat(EventInfo<GuiIngame> e, float partialTicks)
98 { 102 {
99 - CallbackProxyClient.events.onRenderChat(e.getSource().getChatGUI(), partialTicks, guiActive, mouseX, mouseY); 103 + CallbackProxyClient.events.onRenderChat(e.getSource().getChatGUI(), partialTicks);
100 } 104 }
101 105
102 - public static void postRenderChat(EventInfo<GuiIngame> e, float partialTicks, boolean guiActive, int mouseX, int mouseY) 106 + public static void postRenderChat(EventInfo<GuiIngame> e, float partialTicks)
103 { 107 {
104 - CallbackProxyClient.events.postRenderChat(e.getSource().getChatGUI(), partialTicks, guiActive, mouseX, mouseY); 108 + CallbackProxyClient.events.postRenderChat(e.getSource().getChatGUI(), partialTicks);
105 } 109 }
106 110
107 public static void postRenderHUD(EventInfo<EntityRenderer> e, float partialTicks) 111 public static void postRenderHUD(EventInfo<EntityRenderer> e, float partialTicks)
@@ -139,7 +143,7 @@ public class CallbackProxyClient @@ -139,7 +143,7 @@ public class CallbackProxyClient
139 CallbackProxyClient.events.onRespawnPlayer(e.getSource(), e.getReturnValue(), oldPlayer, dimension, won); 143 CallbackProxyClient.events.onRespawnPlayer(e.getSource(), e.getReturnValue(), oldPlayer, dimension, won);
140 } 144 }
141 145
142 - public static void onOutboundChat(EventInfo<EntityClientPlayerMP> e, String message) 146 + public static void onOutboundChat(EventInfo<EntityPlayerSP> e, String message)
143 { 147 {
144 CallbackProxyClient.events.onSendChatMessage(e, message); 148 CallbackProxyClient.events.onSendChatMessage(e, message);
145 } 149 }
@@ -173,7 +177,7 @@ public class CallbackProxyClient @@ -173,7 +177,7 @@ public class CallbackProxyClient
173 } 177 }
174 } 178 }
175 179
176 - public static void renderFBO(EventInfo<Framebuffer> e, int width, int height) 180 + public static void renderFBO(EventInfo<Framebuffer> e, int width, int height, boolean flag)
177 { 181 {
178 if (CallbackProxyClient.events == null) return; 182 if (CallbackProxyClient.events == null) return;
179 if (CallbackProxyClient.renderingFBO) 183 if (CallbackProxyClient.renderingFBO)
@@ -188,4 +192,15 @@ public class CallbackProxyClient @@ -188,4 +192,15 @@ public class CallbackProxyClient
188 { 192 {
189 CallbackProxyClient.events.onRenderWorld(partialTicks, timeSlice); 193 CallbackProxyClient.events.onRenderWorld(partialTicks, timeSlice);
190 } 194 }
  195 +
  196 + /**
  197 + * Compatiblbe behaviour with FML, this method is called to generate a consistent offline UUID between client and server
  198 + * for a given username.
  199 + */
  200 + public static void generateOfflineUUID(ReturnEventInfo<Session, GameProfile> e)
  201 + {
  202 + Session session = e.getSource();
  203 + UUID uuid = EntityPlayer.getUUID(new GameProfile((UUID)null, session.getUsername()));
  204 + e.setReturnValue(new GameProfile(uuid, session.getUsername()));
  205 + }
191 } 206 }
java/client/com/mumfrey/liteloader/client/ClientPluginChannelsClient.java
@@ -4,6 +4,7 @@ import net.minecraft.client.Minecraft; @@ -4,6 +4,7 @@ import net.minecraft.client.Minecraft;
4 import net.minecraft.client.network.NetHandlerLoginClient; 4 import net.minecraft.client.network.NetHandlerLoginClient;
5 import net.minecraft.network.INetHandler; 5 import net.minecraft.network.INetHandler;
6 import net.minecraft.network.NetworkManager; 6 import net.minecraft.network.NetworkManager;
  7 +import net.minecraft.network.PacketBuffer;
7 import net.minecraft.network.login.INetHandlerLoginClient; 8 import net.minecraft.network.login.INetHandlerLoginClient;
8 import net.minecraft.network.login.server.S02PacketLoginSuccess; 9 import net.minecraft.network.login.server.S02PacketLoginSuccess;
9 import net.minecraft.network.play.INetHandlerPlayClient; 10 import net.minecraft.network.play.INetHandlerPlayClient;
@@ -48,10 +49,10 @@ public class ClientPluginChannelsClient extends ClientPluginChannels @@ -48,10 +49,10 @@ public class ClientPluginChannelsClient extends ClientPluginChannels
48 @Override 49 @Override
49 public void onPluginChannelMessage(S3FPacketCustomPayload customPayload) 50 public void onPluginChannelMessage(S3FPacketCustomPayload customPayload)
50 { 51 {
51 - if (customPayload != null && customPayload.func_149169_c() != null) // getChannel 52 + if (customPayload != null && customPayload.getChannelName() != null)
52 { 53 {
53 - String channel = customPayload.func_149169_c(); // getChannel  
54 - byte[] data = customPayload.func_149168_d(); // getData 54 + String channel = customPayload.getChannelName();
  55 + PacketBuffer data = customPayload.getBufferData();
55 56
56 this.onPluginChannelMessage(channel, data); 57 this.onPluginChannelMessage(channel, data);
57 } 58 }
@@ -62,12 +63,12 @@ public class ClientPluginChannelsClient extends ClientPluginChannels @@ -62,12 +63,12 @@ public class ClientPluginChannelsClient extends ClientPluginChannels
62 * @param registrationData 63 * @param registrationData
63 */ 64 */
64 @Override 65 @Override
65 - protected void sendRegistrationData(INetHandler netHandler, byte[] registrationData) 66 + protected void sendRegistrationData(INetHandler netHandler, PacketBuffer registrationData)
66 { 67 {
67 if (netHandler instanceof INetHandlerLoginClient) 68 if (netHandler instanceof INetHandlerLoginClient)
68 { 69 {
69 NetworkManager networkManager = PrivateFields.netManager.get(((NetHandlerLoginClient)netHandler)); 70 NetworkManager networkManager = PrivateFields.netManager.get(((NetHandlerLoginClient)netHandler));
70 - networkManager.scheduleOutboundPacket(new C17PacketCustomPayload(CHANNEL_REGISTER, registrationData)); 71 + networkManager.sendPacket(new C17PacketCustomPayload(CHANNEL_REGISTER, registrationData));
71 } 72 }
72 else if (netHandler instanceof INetHandlerPlayClient) 73 else if (netHandler instanceof INetHandlerPlayClient)
73 { 74 {
@@ -82,7 +83,7 @@ public class ClientPluginChannelsClient extends ClientPluginChannels @@ -82,7 +83,7 @@ public class ClientPluginChannelsClient extends ClientPluginChannels
82 * @param data 83 * @param data
83 */ 84 */
84 @Override 85 @Override
85 - protected boolean send(String channel, byte[] data, ChannelPolicy policy) 86 + protected boolean send(String channel, PacketBuffer data, ChannelPolicy policy)
86 { 87 {
87 if (channel == null || channel.length() > 16 || CHANNEL_REGISTER.equals(channel) || CHANNEL_UNREGISTER.equals(channel)) 88 if (channel == null || channel.length() > 16 || CHANNEL_REGISTER.equals(channel) || CHANNEL_UNREGISTER.equals(channel))
88 throw new RuntimeException("Invalid channel name specified"); 89 throw new RuntimeException("Invalid channel name specified");
java/client/com/mumfrey/liteloader/client/ClientEvents.java renamed to java/client/com/mumfrey/liteloader/client/EventsClient.java
1 package com.mumfrey.liteloader.client; 1 package com.mumfrey.liteloader.client;
2 2
3 import net.minecraft.client.Minecraft; 3 import net.minecraft.client.Minecraft;
4 -import net.minecraft.client.entity.EntityClientPlayerMP; 4 +import net.minecraft.client.entity.EntityPlayerSP;
5 import net.minecraft.client.gui.GuiNewChat; 5 import net.minecraft.client.gui.GuiNewChat;
6 import net.minecraft.client.gui.ScaledResolution; 6 import net.minecraft.client.gui.ScaledResolution;
7 import net.minecraft.client.shader.Framebuffer; 7 import net.minecraft.client.shader.Framebuffer;
  8 +import net.minecraft.entity.Entity;
8 import net.minecraft.network.play.client.C01PacketChatMessage; 9 import net.minecraft.network.play.client.C01PacketChatMessage;
9 import net.minecraft.server.integrated.IntegratedServer; 10 import net.minecraft.server.integrated.IntegratedServer;
10 import net.minecraft.util.Timer; 11 import net.minecraft.util.Timer;
11 12
12 import org.lwjgl.input.Mouse; 13 import org.lwjgl.input.Mouse;
13 14
14 -import com.mumfrey.liteloader.*; 15 +import com.mumfrey.liteloader.ChatRenderListener;
  16 +import com.mumfrey.liteloader.FrameBufferListener;
  17 +import com.mumfrey.liteloader.GameLoopListener;
  18 +import com.mumfrey.liteloader.HUDRenderListener;
  19 +import com.mumfrey.liteloader.InitCompleteListener;
  20 +import com.mumfrey.liteloader.OutboundChatFilter;
  21 +import com.mumfrey.liteloader.OutboundChatListener;
  22 +import com.mumfrey.liteloader.PostRenderListener;
  23 +import com.mumfrey.liteloader.RenderListener;
  24 +import com.mumfrey.liteloader.Tickable;
  25 +import com.mumfrey.liteloader.ViewportListener;
15 import com.mumfrey.liteloader.client.overlays.IMinecraft; 26 import com.mumfrey.liteloader.client.overlays.IMinecraft;
16 import com.mumfrey.liteloader.common.LoadingProgress; 27 import com.mumfrey.liteloader.common.LoadingProgress;
17 import com.mumfrey.liteloader.core.Events; 28 import com.mumfrey.liteloader.core.Events;
@@ -24,9 +35,9 @@ import com.mumfrey.liteloader.launch.LoaderProperties; @@ -24,9 +35,9 @@ import com.mumfrey.liteloader.launch.LoaderProperties;
24 import com.mumfrey.liteloader.transformers.event.EventInfo; 35 import com.mumfrey.liteloader.transformers.event.EventInfo;
25 import com.mumfrey.liteloader.util.log.LiteLoaderLogger; 36 import com.mumfrey.liteloader.util.log.LiteLoaderLogger;
26 37
27 -public class ClientEvents extends Events<Minecraft, IntegratedServer> 38 +public class EventsClient extends Events<Minecraft, IntegratedServer>
28 { 39 {
29 - private static ClientEvents instance; 40 + private static EventsClient instance;
30 41
31 /** 42 /**
32 * Reference to the game 43 * Reference to the game
@@ -82,18 +93,18 @@ public class ClientEvents extends Events&lt;Minecraft, IntegratedServer&gt; @@ -82,18 +93,18 @@ public class ClientEvents extends Events&lt;Minecraft, IntegratedServer&gt;
82 private FastIterableDeque<OutboundChatFilter> outboundChatFilters = new HandlerList<OutboundChatFilter>(OutboundChatFilter.class, ReturnLogicOp.AND); 93 private FastIterableDeque<OutboundChatFilter> outboundChatFilters = new HandlerList<OutboundChatFilter>(OutboundChatFilter.class, ReturnLogicOp.AND);
83 94
84 @SuppressWarnings("cast") 95 @SuppressWarnings("cast")
85 - public ClientEvents(LiteLoader loader, GameEngineClient engine, LoaderProperties properties) 96 + public EventsClient(LiteLoader loader, GameEngineClient engine, LoaderProperties properties)
86 { 97 {
87 super(loader, engine, properties); 98 super(loader, engine, properties);
88 99
89 - ClientEvents.instance = this; 100 + EventsClient.instance = this;
90 101
91 this.engineClient = (GameEngineClient)engine; 102 this.engineClient = (GameEngineClient)engine;
92 } 103 }
93 104
94 - static ClientEvents getInstance() 105 + static EventsClient getInstance()
95 { 106 {
96 - return ClientEvents.instance; 107 + return EventsClient.instance;
97 } 108 }
98 109
99 /* (non-Javadoc) 110 /* (non-Javadoc)
@@ -330,20 +341,20 @@ public class ClientEvents extends Events&lt;Minecraft, IntegratedServer&gt; @@ -330,20 +341,20 @@ public class ClientEvents extends Events&lt;Minecraft, IntegratedServer&gt;
330 * Called immediately before the chat log is rendered 341 * Called immediately before the chat log is rendered
331 * 342 *
332 * @param chatGui 343 * @param chatGui
333 - * @param mouseY  
334 - * @param mouseX  
335 - * @param guiActive  
336 * @param partialTicks 344 * @param partialTicks
337 */ 345 */
338 - void onRenderChat(GuiNewChat chatGui, float partialTicks, boolean guiActive, int mouseX, int mouseY) 346 + void onRenderChat(GuiNewChat chatGui, float partialTicks)
339 { 347 {
340 this.chatRenderListeners.all().onPreRenderChat(this.screenWidth, this.screenHeight, chatGui); 348 this.chatRenderListeners.all().onPreRenderChat(this.screenWidth, this.screenHeight, chatGui);
341 } 349 }
342 350
343 /** 351 /**
344 * Called immediately after the chat log is rendered 352 * Called immediately after the chat log is rendered
  353 + *
  354 + * @param chatGui
  355 + * @param partialTicks
345 */ 356 */
346 - void postRenderChat(GuiNewChat chatGui, float partialTicks, boolean guiActive, int mouseX, int mouseY) 357 + void postRenderChat(GuiNewChat chatGui, float partialTicks)
347 { 358 {
348 GuiNewChat chat = this.engineClient.getChatGUI(); 359 GuiNewChat chat = this.engineClient.getChatGUI();
349 this.chatRenderListeners.all().onPostRenderChat(this.screenWidth, this.screenHeight, chat); 360 this.chatRenderListeners.all().onPostRenderChat(this.screenWidth, this.screenHeight, chat);
@@ -401,7 +412,8 @@ public class ClientEvents extends Events&lt;Minecraft, IntegratedServer&gt; @@ -401,7 +412,8 @@ public class ClientEvents extends Events&lt;Minecraft, IntegratedServer&gt;
401 Minecraft minecraft = this.engine.getClient(); 412 Minecraft minecraft = this.engine.getClient();
402 413
403 // Flag indicates whether we are in game at the moment 414 // Flag indicates whether we are in game at the moment
404 - boolean inGame = minecraft.renderViewEntity != null && minecraft.renderViewEntity.worldObj != null; 415 + Entity renderViewEntity = minecraft.getRenderViewEntity(); // TODO OBF MCPTEST func_175606_aa - getRenderViewEntity
  416 + boolean inGame = renderViewEntity != null && renderViewEntity.worldObj != null;
405 417
406 this.profiler.startSection("loader"); 418 this.profiler.startSection("loader");
407 super.onTick(clock, partialTicks, inGame); 419 super.onTick(clock, partialTicks, inGame);
@@ -445,7 +457,7 @@ public class ClientEvents extends Events&lt;Minecraft, IntegratedServer&gt; @@ -445,7 +457,7 @@ public class ClientEvents extends Events&lt;Minecraft, IntegratedServer&gt;
445 /** 457 /**
446 * @param message 458 * @param message
447 */ 459 */
448 - void onSendChatMessage(EventInfo<EntityClientPlayerMP> e, String message) 460 + void onSendChatMessage(EventInfo<EntityPlayerSP> e, String message)
449 { 461 {
450 if (!this.outboundChatFilters.all().onSendChatMessage(message)) 462 if (!this.outboundChatFilters.all().onSendChatMessage(message))
451 { 463 {
java/client/com/mumfrey/liteloader/client/api/LiteLoaderBrandingProvider.java
@@ -3,10 +3,10 @@ package com.mumfrey.liteloader.client.api; @@ -3,10 +3,10 @@ package com.mumfrey.liteloader.client.api;
3 import java.net.URI; 3 import java.net.URI;
4 4
5 import net.minecraft.client.resources.I18n; 5 import net.minecraft.client.resources.I18n;
6 -import net.minecraft.util.IIcon;  
7 import net.minecraft.util.ResourceLocation; 6 import net.minecraft.util.ResourceLocation;
8 7
9 import com.mumfrey.liteloader.api.BrandingProvider; 8 import com.mumfrey.liteloader.api.BrandingProvider;
  9 +import com.mumfrey.liteloader.client.util.render.Icon;
10 import com.mumfrey.liteloader.client.util.render.IconAbsolute; 10 import com.mumfrey.liteloader.client.util.render.IconAbsolute;
11 import com.mumfrey.liteloader.core.LiteLoader; 11 import com.mumfrey.liteloader.core.LiteLoader;
12 12
@@ -84,7 +84,7 @@ public class LiteLoaderBrandingProvider implements BrandingProvider @@ -84,7 +84,7 @@ public class LiteLoaderBrandingProvider implements BrandingProvider
84 * @see com.mumfrey.liteloader.api.BrandingProvider#getLogoCoords() 84 * @see com.mumfrey.liteloader.api.BrandingProvider#getLogoCoords()
85 */ 85 */
86 @Override 86 @Override
87 - public IIcon getLogoCoords() 87 + public Icon getLogoCoords()
88 { 88 {
89 return LiteLoaderBrandingProvider.LOGO_COORDS; 89 return LiteLoaderBrandingProvider.LOGO_COORDS;
90 } 90 }
@@ -102,7 +102,7 @@ public class LiteLoaderBrandingProvider implements BrandingProvider @@ -102,7 +102,7 @@ public class LiteLoaderBrandingProvider implements BrandingProvider
102 * @see com.mumfrey.liteloader.api.BrandingProvider#getIconCoords() 102 * @see com.mumfrey.liteloader.api.BrandingProvider#getIconCoords()
103 */ 103 */
104 @Override 104 @Override
105 - public IIcon getIconCoords() 105 + public Icon getIconCoords()
106 { 106 {
107 return LiteLoaderBrandingProvider.ICON_COORDS; 107 return LiteLoaderBrandingProvider.ICON_COORDS;
108 } 108 }
@@ -129,7 +129,7 @@ public class LiteLoaderBrandingProvider implements BrandingProvider @@ -129,7 +129,7 @@ public class LiteLoaderBrandingProvider implements BrandingProvider
129 * @see com.mumfrey.liteloader.api.BrandingProvider#getTwitterAvatarCoords() 129 * @see com.mumfrey.liteloader.api.BrandingProvider#getTwitterAvatarCoords()
130 */ 130 */
131 @Override 131 @Override
132 - public IIcon getTwitterAvatarCoords() 132 + public Icon getTwitterAvatarCoords()
133 { 133 {
134 return LiteLoaderBrandingProvider.TWITTER_AVATAR_COORDS; 134 return LiteLoaderBrandingProvider.TWITTER_AVATAR_COORDS;
135 } 135 }
java/client/com/mumfrey/liteloader/client/api/LiteLoaderCoreAPIClient.java
@@ -15,6 +15,7 @@ import com.mumfrey.liteloader.core.LiteLoader; @@ -15,6 +15,7 @@ import com.mumfrey.liteloader.core.LiteLoader;
15 import com.mumfrey.liteloader.core.api.LiteLoaderCoreAPI; 15 import com.mumfrey.liteloader.core.api.LiteLoaderCoreAPI;
16 import com.mumfrey.liteloader.interfaces.ObjectFactory; 16 import com.mumfrey.liteloader.interfaces.ObjectFactory;
17 import com.mumfrey.liteloader.messaging.MessageBus; 17 import com.mumfrey.liteloader.messaging.MessageBus;
  18 +import com.mumfrey.liteloader.transformers.event.json.ModEvents;
18 19
19 /** 20 /**
20 * Client side of the core API 21 * Client side of the core API
@@ -34,11 +35,10 @@ public class LiteLoaderCoreAPIClient extends LiteLoaderCoreAPI @@ -34,11 +35,10 @@ public class LiteLoaderCoreAPIClient extends LiteLoaderCoreAPI
34 private static final String[] requiredDownstreamTransformers = { 35 private static final String[] requiredDownstreamTransformers = {
35 LiteLoaderCoreAPI.PKG_LITELOADER_COMMON + ".transformers.LiteLoaderPacketTransformer", 36 LiteLoaderCoreAPI.PKG_LITELOADER_COMMON + ".transformers.LiteLoaderPacketTransformer",
36 LiteLoaderCoreAPIClient.PKG_LITELOADER_CLIENT + ".transformers.LiteLoaderEventInjectionTransformer", 37 LiteLoaderCoreAPIClient.PKG_LITELOADER_CLIENT + ".transformers.LiteLoaderEventInjectionTransformer",
37 - LiteLoaderCoreAPIClient.PKG_LITELOADER_CLIENT + ".transformers.MinecraftOverlayTransformer" 38 + LiteLoaderCoreAPIClient.PKG_LITELOADER_CLIENT + ".transformers.MinecraftOverlayTransformer",
  39 + LiteLoaderCoreAPI.PKG_LITELOADER + ".transformers.event.json.ModEventInjectionTransformer"
38 }; 40 };
39 41
40 - private static final String[] defaultPacketTransformers = {};  
41 -  
42 private ObjectFactory<Minecraft, IntegratedServer> objectFactory; 42 private ObjectFactory<Minecraft, IntegratedServer> objectFactory;
43 43
44 /* (non-Javadoc) 44 /* (non-Javadoc)
@@ -60,15 +60,6 @@ public class LiteLoaderCoreAPIClient extends LiteLoaderCoreAPI @@ -60,15 +60,6 @@ public class LiteLoaderCoreAPIClient extends LiteLoaderCoreAPI
60 } 60 }
61 61
62 /* (non-Javadoc) 62 /* (non-Javadoc)
63 - * @see com.mumfrey.liteloader.api.LiteAPI#getPacketTransformers()  
64 - */  
65 - @Override  
66 - public String[] getPacketTransformers()  
67 - {  
68 - return LiteLoaderCoreAPIClient.defaultPacketTransformers;  
69 - }  
70 -  
71 - /* (non-Javadoc)  
72 * @see com.mumfrey.liteloader.api.LiteAPI#getCustomisationProviders() 63 * @see com.mumfrey.liteloader.api.LiteAPI#getCustomisationProviders()
73 */ 64 */
74 @Override 65 @Override
@@ -114,6 +105,18 @@ public class LiteLoaderCoreAPIClient extends LiteLoaderCoreAPI @@ -114,6 +105,18 @@ public class LiteLoaderCoreAPIClient extends LiteLoaderCoreAPI
114 } 105 }
115 106
116 /* (non-Javadoc) 107 /* (non-Javadoc)
  108 + * @see com.mumfrey.liteloader.api.LiteAPI#getPreInitObservers()
  109 + */
  110 + @Override
  111 + public List<Observer> getPreInitObservers()
  112 + {
  113 + return ImmutableList.<Observer>of
  114 + (
  115 + new ModEvents()
  116 + );
  117 + }
  118 +
  119 + /* (non-Javadoc)
117 * @see com.mumfrey.liteloader.api.LiteAPI#getObservers() 120 * @see com.mumfrey.liteloader.api.LiteAPI#getObservers()
118 */ 121 */
119 @Override 122 @Override
java/client/com/mumfrey/liteloader/client/api/ObjectFactoryClient.java
@@ -4,7 +4,7 @@ import net.minecraft.client.Minecraft; @@ -4,7 +4,7 @@ import net.minecraft.client.Minecraft;
4 import net.minecraft.client.gui.GuiScreen; 4 import net.minecraft.client.gui.GuiScreen;
5 import net.minecraft.server.integrated.IntegratedServer; 5 import net.minecraft.server.integrated.IntegratedServer;
6 6
7 -import com.mumfrey.liteloader.client.ClientEvents; 7 +import com.mumfrey.liteloader.client.EventsClient;
8 import com.mumfrey.liteloader.client.ClientPluginChannelsClient; 8 import com.mumfrey.liteloader.client.ClientPluginChannelsClient;
9 import com.mumfrey.liteloader.client.GameEngineClient; 9 import com.mumfrey.liteloader.client.GameEngineClient;
10 import com.mumfrey.liteloader.client.LiteLoaderPanelManager; 10 import com.mumfrey.liteloader.client.LiteLoaderPanelManager;
@@ -34,7 +34,7 @@ class ObjectFactoryClient implements ObjectFactory&lt;Minecraft, IntegratedServer&gt; @@ -34,7 +34,7 @@ class ObjectFactoryClient implements ObjectFactory&lt;Minecraft, IntegratedServer&gt;
34 34
35 private LoaderProperties properties; 35 private LoaderProperties properties;
36 36
37 - private ClientEvents clientEvents; 37 + private EventsClient clientEvents;
38 38
39 private PacketEventsClient clientPacketEvents; 39 private PacketEventsClient clientPacketEvents;
40 40
@@ -57,7 +57,7 @@ class ObjectFactoryClient implements ObjectFactory&lt;Minecraft, IntegratedServer&gt; @@ -57,7 +57,7 @@ class ObjectFactoryClient implements ObjectFactory&lt;Minecraft, IntegratedServer&gt;
57 { 57 {
58 if (this.clientEvents == null) 58 if (this.clientEvents == null)
59 { 59 {
60 - this.clientEvents = new ClientEvents(LiteLoader.getInstance(), (GameEngineClient)this.getGameEngine(), this.properties); 60 + this.clientEvents = new EventsClient(LiteLoader.getInstance(), (GameEngineClient)this.getGameEngine(), this.properties);
61 } 61 }
62 62
63 return this.clientEvents; 63 return this.clientEvents;
java/client/com/mumfrey/liteloader/client/gui/GuiCheckbox.java
1 package com.mumfrey.liteloader.client.gui; 1 package com.mumfrey.liteloader.client.gui;
2 2
3 -import static org.lwjgl.opengl.GL11.*;  
4 -  
5 -import com.mumfrey.liteloader.client.api.LiteLoaderBrandingProvider;  
6 - 3 +import static com.mumfrey.liteloader.client.util.GL.*;
7 import net.minecraft.client.Minecraft; 4 import net.minecraft.client.Minecraft;
8 import net.minecraft.client.gui.GuiButton; 5 import net.minecraft.client.gui.GuiButton;
9 6
  7 +import com.mumfrey.liteloader.client.api.LiteLoaderBrandingProvider;
  8 +
10 /** 9 /**
11 * Super-simple implementation of a checkbox control 10 * Super-simple implementation of a checkbox control
12 * 11 *
java/client/com/mumfrey/liteloader/client/gui/GuiLiteLoaderPanel.java
1 package com.mumfrey.liteloader.client.gui; 1 package com.mumfrey.liteloader.client.gui;
2 2
3 -import static org.lwjgl.opengl.GL11.*; 3 +import static com.mumfrey.liteloader.client.util.GL.*;
4 4
  5 +import java.io.IOException;
5 import java.util.ArrayList; 6 import java.util.ArrayList;
6 import java.util.List; 7 import java.util.List;
7 8
@@ -11,21 +12,22 @@ import net.minecraft.client.gui.GuiButton; @@ -11,21 +12,22 @@ import net.minecraft.client.gui.GuiButton;
11 import net.minecraft.client.gui.GuiMainMenu; 12 import net.minecraft.client.gui.GuiMainMenu;
12 import net.minecraft.client.gui.GuiScreen; 13 import net.minecraft.client.gui.GuiScreen;
13 import net.minecraft.client.renderer.Tessellator; 14 import net.minecraft.client.renderer.Tessellator;
  15 +import net.minecraft.client.renderer.WorldRenderer;
14 import net.minecraft.client.resources.I18n; 16 import net.minecraft.client.resources.I18n;
15 -import net.minecraft.util.IIcon;  
16 import net.minecraft.util.ResourceLocation; 17 import net.minecraft.util.ResourceLocation;
17 18
18 import org.lwjgl.input.Keyboard; 19 import org.lwjgl.input.Keyboard;
19 import org.lwjgl.input.Mouse; 20 import org.lwjgl.input.Mouse;
20 21
21 import com.mumfrey.liteloader.LiteMod; 22 import com.mumfrey.liteloader.LiteMod;
22 -import com.mumfrey.liteloader.api.LiteAPI;  
23 import com.mumfrey.liteloader.api.BrandingProvider; 23 import com.mumfrey.liteloader.api.BrandingProvider;
  24 +import com.mumfrey.liteloader.api.LiteAPI;
24 import com.mumfrey.liteloader.api.ModInfoDecorator; 25 import com.mumfrey.liteloader.api.ModInfoDecorator;
25 import com.mumfrey.liteloader.client.api.LiteLoaderBrandingProvider; 26 import com.mumfrey.liteloader.client.api.LiteLoaderBrandingProvider;
  27 +import com.mumfrey.liteloader.client.util.render.Icon;
26 import com.mumfrey.liteloader.core.LiteLoader; 28 import com.mumfrey.liteloader.core.LiteLoader;
27 -import com.mumfrey.liteloader.core.LiteLoaderVersion;  
28 import com.mumfrey.liteloader.core.LiteLoaderMods; 29 import com.mumfrey.liteloader.core.LiteLoaderMods;
  30 +import com.mumfrey.liteloader.core.LiteLoaderVersion;
29 import com.mumfrey.liteloader.core.ModInfo; 31 import com.mumfrey.liteloader.core.ModInfo;
30 import com.mumfrey.liteloader.core.api.LiteLoaderCoreAPI; 32 import com.mumfrey.liteloader.core.api.LiteLoaderCoreAPI;
31 import com.mumfrey.liteloader.launch.LoaderEnvironment; 33 import com.mumfrey.liteloader.launch.LoaderEnvironment;
@@ -109,10 +111,10 @@ public class GuiLiteLoaderPanel extends GuiScreen @@ -109,10 +111,10 @@ public class GuiLiteLoaderPanel extends GuiScreen
109 private int brandColour = LiteLoaderBrandingProvider.BRANDING_COLOUR; 111 private int brandColour = LiteLoaderBrandingProvider.BRANDING_COLOUR;
110 112
111 private ResourceLocation logoResource = LiteLoaderBrandingProvider.ABOUT_TEXTURE; 113 private ResourceLocation logoResource = LiteLoaderBrandingProvider.ABOUT_TEXTURE;
112 - private IIcon logoCoords = LiteLoaderBrandingProvider.LOGO_COORDS; 114 + private Icon logoCoords = LiteLoaderBrandingProvider.LOGO_COORDS;
113 115
114 private ResourceLocation iconResource = LiteLoaderBrandingProvider.ABOUT_TEXTURE; 116 private ResourceLocation iconResource = LiteLoaderBrandingProvider.ABOUT_TEXTURE;
115 - private IIcon iconCoords = LiteLoaderBrandingProvider.ICON_COORDS; 117 + private Icon iconCoords = LiteLoaderBrandingProvider.ICON_COORDS;
116 118
117 private List<ModInfoDecorator> modInfoDecorators = new ArrayList<ModInfoDecorator>(); 119 private List<ModInfoDecorator> modInfoDecorators = new ArrayList<ModInfoDecorator>();
118 120
@@ -174,7 +176,7 @@ public class GuiLiteLoaderPanel extends GuiScreen @@ -174,7 +176,7 @@ public class GuiLiteLoaderPanel extends GuiScreen
174 } 176 }
175 177
176 ResourceLocation logoResource = brandingProvider.getLogoResource(); 178 ResourceLocation logoResource = brandingProvider.getLogoResource();
177 - IIcon logoCoords = brandingProvider.getLogoCoords(); 179 + Icon logoCoords = brandingProvider.getLogoCoords();
178 if (logoResource != null && logoCoords != null && brandingProvider.getPriority() > logoProviderPriority) 180 if (logoResource != null && logoCoords != null && brandingProvider.getPriority() > logoProviderPriority)
179 { 181 {
180 logoProvider = api; 182 logoProvider = api;
@@ -184,7 +186,7 @@ public class GuiLiteLoaderPanel extends GuiScreen @@ -184,7 +186,7 @@ public class GuiLiteLoaderPanel extends GuiScreen
184 } 186 }
185 187
186 ResourceLocation iconResource = brandingProvider.getIconResource(); 188 ResourceLocation iconResource = brandingProvider.getIconResource();
187 - IIcon iconCoords = brandingProvider.getIconCoords(); 189 + Icon iconCoords = brandingProvider.getIconCoords();
188 if (iconResource != null && iconCoords != null && brandingProvider.getPriority() > iconProviderPriority) 190 if (iconResource != null && iconCoords != null && brandingProvider.getPriority() > iconProviderPriority)
189 { 191 {
190 iconProviderPriority = brandingProvider.getPriority(); 192 iconProviderPriority = brandingProvider.getPriority();
@@ -551,7 +553,7 @@ public class GuiLiteLoaderPanel extends GuiScreen @@ -551,7 +553,7 @@ public class GuiLiteLoaderPanel extends GuiScreen
551 * @see net.minecraft.client.gui.GuiScreen#mouseClicked(int, int, int) 553 * @see net.minecraft.client.gui.GuiScreen#mouseClicked(int, int, int)
552 */ 554 */
553 @Override 555 @Override
554 - protected void mouseClicked(int mouseX, int mouseY, int button) 556 + protected void mouseClicked(int mouseX, int mouseY, int button) throws IOException
555 { 557 {
556 this.currentPanel.mousePressed(mouseX - LEFT_EDGE, mouseY, button); 558 this.currentPanel.mousePressed(mouseX - LEFT_EDGE, mouseY, button);
557 559
@@ -587,7 +589,7 @@ public class GuiLiteLoaderPanel extends GuiScreen @@ -587,7 +589,7 @@ public class GuiLiteLoaderPanel extends GuiScreen
587 * @see net.minecraft.client.gui.GuiScreen#handleMouseInput() 589 * @see net.minecraft.client.gui.GuiScreen#handleMouseInput()
588 */ 590 */
589 @Override 591 @Override
590 - public void handleMouseInput() 592 + public void handleMouseInput() throws IOException
591 { 593 {
592 int mouseWheelDelta = Mouse.getEventDWheel(); 594 int mouseWheelDelta = Mouse.getEventDWheel();
593 if (mouseWheelDelta != 0) 595 if (mouseWheelDelta != 0)
@@ -699,7 +701,7 @@ public class GuiLiteLoaderPanel extends GuiScreen @@ -699,7 +701,7 @@ public class GuiLiteLoaderPanel extends GuiScreen
699 mouseX = Math.max(0, Math.min(screenWidth - 4, mouseX - 4)); 701 mouseX = Math.max(0, Math.min(screenWidth - 4, mouseX - 4));
700 mouseY = Math.max(0, Math.min(screenHeight - 16, mouseY)); 702 mouseY = Math.max(0, Math.min(screenHeight - 16, mouseY));
701 drawRect(mouseX - textSize - 2, mouseY, mouseX + 2, mouseY + 12, backgroundColour); 703 drawRect(mouseX - textSize - 2, mouseY, mouseX + 2, mouseY + 12, backgroundColour);
702 - fontRenderer.drawStringWithShadow(tooltipText, mouseX - textSize, mouseY + 2, colour); 704 + fontRenderer.drawStringWithShadow(tooltipText, mouseX - textSize, mouseY + 2, colour); // TODO OBF MCPTEST drawStringWithShadow - func_175063_a
703 } 705 }
704 706
705 707
@@ -733,21 +735,22 @@ public class GuiLiteLoaderPanel extends GuiScreen @@ -733,21 +735,22 @@ public class GuiLiteLoaderPanel extends GuiScreen
733 */ 735 */
734 static void glDrawTexturedRect(int x, int y, int width, int height, float u, float v, float u2, float v2, float alpha) 736 static void glDrawTexturedRect(int x, int y, int width, int height, float u, float v, float u2, float v2, float alpha)
735 { 737 {
736 - glDisable(GL_LIGHTING);  
737 - glEnable(GL_BLEND); 738 + glDisableLighting();
  739 + glEnableBlend();
738 glAlphaFunc(GL_GREATER, 0.0F); 740 glAlphaFunc(GL_GREATER, 0.0F);
739 - glEnable(GL_TEXTURE_2D); 741 + glEnableTexture2D();
740 glColor4f(1.0F, 1.0F, 1.0F, alpha); 742 glColor4f(1.0F, 1.0F, 1.0F, alpha);
741 743
742 - Tessellator tessellator = Tessellator.instance;  
743 - tessellator.startDrawingQuads();  
744 - tessellator.addVertexWithUV(x + 0, y + height, 0, u , v2);  
745 - tessellator.addVertexWithUV(x + width, y + height, 0, u2, v2);  
746 - tessellator.addVertexWithUV(x + width, y + 0, 0, u2, v );  
747 - tessellator.addVertexWithUV(x + 0, y + 0, 0, u , v ); 744 + Tessellator tessellator = Tessellator.getInstance();
  745 + WorldRenderer worldRenderer = tessellator.getWorldRenderer();
  746 + worldRenderer.startDrawingQuads();
  747 + worldRenderer.addVertexWithUV(x + 0, y + height, 0, u , v2);
  748 + worldRenderer.addVertexWithUV(x + width, y + height, 0, u2, v2);
  749 + worldRenderer.addVertexWithUV(x + width, y + 0, 0, u2, v );
  750 + worldRenderer.addVertexWithUV(x + 0, y + 0, 0, u , v );
748 tessellator.draw(); 751 tessellator.draw();
749 752
750 - glDisable(GL_BLEND); 753 + glEnableBlend();
751 glAlphaFunc(GL_GREATER, 0.01F); 754 glAlphaFunc(GL_GREATER, 0.01F);
752 } 755 }
753 756
@@ -757,7 +760,7 @@ public class GuiLiteLoaderPanel extends GuiScreen @@ -757,7 +760,7 @@ public class GuiLiteLoaderPanel extends GuiScreen
757 * @param y 760 * @param y
758 * @param icon 761 * @param icon
759 */ 762 */
760 - static void glDrawTexturedRect(int x, int y, IIcon icon, float alpha) 763 + static void glDrawTexturedRect(int x, int y, Icon icon, float alpha)
761 { 764 {
762 glDrawTexturedRect(x, y, icon.getIconWidth(), icon.getIconHeight(), icon.getMinU(), icon.getMinV(), icon.getMaxU(), icon.getMaxV(), alpha); 765 glDrawTexturedRect(x, y, icon.getIconWidth(), icon.getIconHeight(), icon.getMinU(), icon.getMinV(), icon.getMaxU(), icon.getMaxV(), alpha);
763 } 766 }
java/client/com/mumfrey/liteloader/client/gui/GuiModListPanel.java
1 package com.mumfrey.liteloader.client.gui; 1 package com.mumfrey.liteloader.client.gui;
2 2
  3 +import static com.mumfrey.liteloader.client.util.GL.*;
3 import static com.mumfrey.liteloader.client.util.GLClippingPlanes.*; 4 import static com.mumfrey.liteloader.client.util.GLClippingPlanes.*;
4 -import static org.lwjgl.opengl.GL11.*;  
5 5
6 import java.util.ArrayList; 6 import java.util.ArrayList;
7 import java.util.List; 7 import java.util.List;
@@ -142,10 +142,10 @@ public class GuiModListPanel extends Gui @@ -142,10 +142,10 @@ public class GuiModListPanel extends Gui
142 glColor4f(1.0F, 1.0F, 1.0F, 1.0F); 142 glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
143 Minecraft.getMinecraft().getTextureManager().bindTexture(icon.getTextureResource()); 143 Minecraft.getMinecraft().getTextureManager().bindTexture(icon.getTextureResource());
144 144
145 - glEnable(GL_BLEND); 145 + glEnableBlend();
146 this.drawTexturedModalRect(xPosition, yPosition, icon.getUPos(), icon.getVPos(), icon.getIconWidth(), icon.getIconHeight()); 146 this.drawTexturedModalRect(xPosition, yPosition, icon.getUPos(), icon.getVPos(), icon.getIconWidth(), icon.getIconHeight());
147 - glDisable(GL_BLEND);  
148 - 147 + glDisableBlend();
  148 +
149 if (mouseX >= xPosition && mouseX <= xPosition + 12 && mouseY >= yPosition && mouseY <= yPosition + 12) 149 if (mouseX >= xPosition && mouseX <= xPosition + 12 && mouseY >= yPosition && mouseY <= yPosition + 12)
150 { 150 {
151 String tooltipText = icon.getDisplayText(); 151 String tooltipText = icon.getDisplayText();
java/client/com/mumfrey/liteloader/client/gui/GuiPanel.java
1 package com.mumfrey.liteloader.client.gui; 1 package com.mumfrey.liteloader.client.gui;
2 2
3 -import static org.lwjgl.opengl.GL11.*; 3 +import static com.mumfrey.liteloader.client.util.GL.*;
4 4
5 import java.util.LinkedList; 5 import java.util.LinkedList;
6 import java.util.List; 6 import java.util.List;
@@ -200,11 +200,11 @@ public abstract class GuiPanel extends Gui @@ -200,11 +200,11 @@ public abstract class GuiPanel extends Gui
200 */ 200 */
201 protected void drawThrobber(int x, int y, int frame) 201 protected void drawThrobber(int x, int y, int frame)
202 { 202 {
203 - glEnable(GL_BLEND); 203 + glEnableBlend();
204 glAlphaFunc(GL_GREATER, 0.0F); 204 glAlphaFunc(GL_GREATER, 0.0F);
205 this.mc.getTextureManager().bindTexture(LiteLoaderBrandingProvider.ABOUT_TEXTURE); 205 this.mc.getTextureManager().bindTexture(LiteLoaderBrandingProvider.ABOUT_TEXTURE);
206 drawTexturedModalRect(x, y, (frame % 4) * 16, 171 + (((frame / 4) % 3) * 16), 16, 16); 206 drawTexturedModalRect(x, y, (frame % 4) * 16, 171 + (((frame / 4) % 3) * 16), 16, 16);
207 glAlphaFunc(GL_GREATER, 0.1F); 207 glAlphaFunc(GL_GREATER, 0.1F);
208 - glDisable(GL_BLEND); 208 + glDisableBlend();
209 } 209 }
210 } 210 }
211 \ No newline at end of file 211 \ No newline at end of file
java/client/com/mumfrey/liteloader/client/gui/GuiPanelAbout.java
@@ -10,7 +10,6 @@ import net.minecraft.client.Minecraft; @@ -10,7 +10,6 @@ import net.minecraft.client.Minecraft;
10 import net.minecraft.client.gui.FontRenderer; 10 import net.minecraft.client.gui.FontRenderer;
11 import net.minecraft.client.gui.GuiButton; 11 import net.minecraft.client.gui.GuiButton;
12 import net.minecraft.client.resources.I18n; 12 import net.minecraft.client.resources.I18n;
13 -import net.minecraft.util.IIcon;  
14 import net.minecraft.util.ResourceLocation; 13 import net.minecraft.util.ResourceLocation;
15 14
16 import org.lwjgl.input.Keyboard; 15 import org.lwjgl.input.Keyboard;
@@ -18,6 +17,7 @@ import org.lwjgl.input.Keyboard; @@ -18,6 +17,7 @@ import org.lwjgl.input.Keyboard;
18 import com.mumfrey.liteloader.api.BrandingProvider; 17 import com.mumfrey.liteloader.api.BrandingProvider;
19 import com.mumfrey.liteloader.api.LiteAPI; 18 import com.mumfrey.liteloader.api.LiteAPI;
20 import com.mumfrey.liteloader.client.api.LiteLoaderBrandingProvider; 19 import com.mumfrey.liteloader.client.api.LiteLoaderBrandingProvider;
  20 +import com.mumfrey.liteloader.client.util.render.Icon;
21 import com.mumfrey.liteloader.client.util.render.IconAbsolute; 21 import com.mumfrey.liteloader.client.util.render.IconAbsolute;
22 import com.mumfrey.liteloader.core.LiteLoader; 22 import com.mumfrey.liteloader.core.LiteLoader;
23 import com.mumfrey.liteloader.util.SortableValue; 23 import com.mumfrey.liteloader.util.SortableValue;
@@ -124,7 +124,7 @@ class GuiPanelAbout extends GuiPanel implements ScrollPanelContent @@ -124,7 +124,7 @@ class GuiPanelAbout extends GuiPanel implements ScrollPanelContent
124 for (BrandingProvider branding : this.brandings) 124 for (BrandingProvider branding : this.brandings)
125 { 125 {
126 ResourceLocation twitterAvatarResource = branding.getTwitterAvatarResource(); 126 ResourceLocation twitterAvatarResource = branding.getTwitterAvatarResource();
127 - IIcon twitterAvatarCoords = branding.getTwitterAvatarCoords(); 127 + Icon twitterAvatarCoords = branding.getTwitterAvatarCoords();
128 128
129 this.mc.getTextureManager().bindTexture(twitterAvatarResource != null ? twitterAvatarResource : LiteLoaderBrandingProvider.ABOUT_TEXTURE); 129 this.mc.getTextureManager().bindTexture(twitterAvatarResource != null ? twitterAvatarResource : LiteLoaderBrandingProvider.ABOUT_TEXTURE);
130 GuiLiteLoaderPanel.glDrawTexturedRect(0, yPos, twitterAvatarCoords != null ? twitterAvatarCoords : GuiPanelAbout.apiIconCoords, 1.0F); 130 GuiLiteLoaderPanel.glDrawTexturedRect(0, yPos, twitterAvatarCoords != null ? twitterAvatarCoords : GuiPanelAbout.apiIconCoords, 1.0F);
java/client/com/mumfrey/liteloader/client/gui/GuiPanelConfigContainer.java
1 package com.mumfrey.liteloader.client.gui; 1 package com.mumfrey.liteloader.client.gui;
2 2
  3 +import static com.mumfrey.liteloader.client.util.GL.*;
3 import static com.mumfrey.liteloader.client.util.GLClippingPlanes.*; 4 import static com.mumfrey.liteloader.client.util.GLClippingPlanes.*;
4 -import static org.lwjgl.opengl.GL11.*;  
5 import net.minecraft.client.Minecraft; 5 import net.minecraft.client.Minecraft;
6 import net.minecraft.client.gui.GuiButton; 6 import net.minecraft.client.gui.GuiButton;
7 import net.minecraft.client.resources.I18n; 7 import net.minecraft.client.resources.I18n;
java/client/com/mumfrey/liteloader/client/gui/GuiPanelLiteLoaderLog.java
1 package com.mumfrey.liteloader.client.gui; 1 package com.mumfrey.liteloader.client.gui;
2 2
3 -import static org.lwjgl.opengl.GL11.*; 3 +import static com.mumfrey.liteloader.client.util.GL.*;
4 4
5 import java.net.URI; 5 import java.net.URI;
6 import java.util.ArrayList; 6 import java.util.ArrayList;
@@ -14,6 +14,7 @@ import net.minecraft.util.Session; @@ -14,6 +14,7 @@ import net.minecraft.util.Session;
14 14
15 import org.lwjgl.input.Keyboard; 15 import org.lwjgl.input.Keyboard;
16 16
  17 +import com.mumfrey.liteloader.core.LiteLoader;
17 import com.mumfrey.liteloader.util.log.LiteLoaderLogger; 18 import com.mumfrey.liteloader.util.log.LiteLoaderLogger;
18 import com.mumfrey.liteloader.util.net.LiteLoaderLogUpload; 19 import com.mumfrey.liteloader.util.net.LiteLoaderLogUpload;
19 20
@@ -50,6 +51,8 @@ class GuiPanelLiteLoaderLog extends GuiPanel implements ScrollPanelContent @@ -50,6 +51,8 @@ class GuiPanelLiteLoaderLog extends GuiPanel implements ScrollPanelContent
50 51
51 private GuiLiteLoaderPanel parent; 52 private GuiLiteLoaderPanel parent;
52 53
  54 + private int debugInfoTimer = 0;
  55 +
53 /** 56 /**
54 * @param parent 57 * @param parent
55 * @param minecraft 58 * @param minecraft
@@ -157,6 +160,19 @@ class GuiPanelLiteLoaderLog extends GuiPanel implements ScrollPanelContent @@ -157,6 +160,19 @@ class GuiPanelLiteLoaderLog extends GuiPanel implements ScrollPanelContent
157 this.logURL = null; 160 this.logURL = null;
158 this.setSize(this.width, this.height); 161 this.setSize(this.width, this.height);
159 } 162 }
  163 +
  164 + if (Keyboard.isKeyDown(Keyboard.KEY_F3))
  165 + {
  166 + this.debugInfoTimer++;
  167 + if (this.debugInfoTimer == 60)
  168 + {
  169 + LiteLoader.dumpDebugInfo();
  170 + }
  171 + }
  172 + else
  173 + {
  174 + this.debugInfoTimer = 0;
  175 + }
160 } 176 }
161 177
162 /** 178 /**
java/client/com/mumfrey/liteloader/client/gui/GuiPanelMods.java
1 package com.mumfrey.liteloader.client.gui; 1 package com.mumfrey.liteloader.client.gui;
2 2
  3 +import static com.mumfrey.liteloader.client.util.GL.*;
3 import static com.mumfrey.liteloader.client.util.GLClippingPlanes.*; 4 import static com.mumfrey.liteloader.client.util.GLClippingPlanes.*;
4 -import static org.lwjgl.opengl.GL11.*;  
5 5
6 import java.util.ArrayList; 6 import java.util.ArrayList;
7 import java.util.List; 7 import java.util.List;
java/client/com/mumfrey/liteloader/client/gui/GuiScrollPanel.java
1 package com.mumfrey.liteloader.client.gui; 1 package com.mumfrey.liteloader.client.gui;
2 2
  3 +import static com.mumfrey.liteloader.client.util.GL.*;
3 import static com.mumfrey.liteloader.client.util.GLClippingPlanes.*; 4 import static com.mumfrey.liteloader.client.util.GLClippingPlanes.*;
4 -import static org.lwjgl.opengl.GL11.*;  
5 import net.minecraft.client.Minecraft; 5 import net.minecraft.client.Minecraft;
6 import net.minecraft.client.gui.GuiButton; 6 import net.minecraft.client.gui.GuiButton;
7 7
java/client/com/mumfrey/liteloader/client/gui/startup/LoadingBar.java
1 package com.mumfrey.liteloader.client.gui.startup; 1 package com.mumfrey.liteloader.client.gui.startup;
2 2
3 -import static org.lwjgl.opengl.GL11.*; 3 +import static com.mumfrey.liteloader.client.util.GL.*;
4 4
5 import java.awt.image.BufferedImage; 5 import java.awt.image.BufferedImage;
6 import java.io.IOException; 6 import java.io.IOException;
@@ -14,6 +14,7 @@ import net.minecraft.client.Minecraft; @@ -14,6 +14,7 @@ import net.minecraft.client.Minecraft;
14 import net.minecraft.client.gui.FontRenderer; 14 import net.minecraft.client.gui.FontRenderer;
15 import net.minecraft.client.gui.ScaledResolution; 15 import net.minecraft.client.gui.ScaledResolution;
16 import net.minecraft.client.renderer.Tessellator; 16 import net.minecraft.client.renderer.Tessellator;
  17 +import net.minecraft.client.renderer.WorldRenderer;
17 import net.minecraft.client.renderer.texture.DynamicTexture; 18 import net.minecraft.client.renderer.texture.DynamicTexture;
18 import net.minecraft.client.renderer.texture.ITextureObject; 19 import net.minecraft.client.renderer.texture.ITextureObject;
19 import net.minecraft.client.renderer.texture.TextureManager; 20 import net.minecraft.client.renderer.texture.TextureManager;
@@ -245,19 +246,20 @@ public class LoadingBar extends LoadingProgress @@ -245,19 +246,20 @@ public class LoadingBar extends LoadingProgress
245 246
246 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 247 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
247 248
248 - glDisable(GL_LIGHTING);  
249 - glDisable(GL_FOG);  
250 - glDisable(GL_DEPTH_TEST);  
251 - glEnable(GL_TEXTURE_2D); 249 + glDisableLighting();
  250 + glDisableFog();
  251 + glDisableDepth();
  252 + glEnableTexture2D();
252 253
253 this.textureManager.bindTexture(this.textureLocation); 254 this.textureManager.bindTexture(this.textureLocation);
254 - Tessellator tessellator = Tessellator.instance;  
255 - tessellator.startDrawingQuads();  
256 - tessellator.setColorOpaque_I(0xFFFFFFFF);  
257 - tessellator.addVertexWithUV(0.0D, scaledHeight, 0.0D, 0.0D, 0.0D);  
258 - tessellator.addVertexWithUV(scaledWidth, scaledHeight, 0.0D, 0.0D, 0.0D);  
259 - tessellator.addVertexWithUV(scaledWidth, 0.0D, 0.0D, 0.0D, 0.0D);  
260 - tessellator.addVertexWithUV(0.0D, 0.0D, 0.0D, 0.0D, 0.0D); 255 + Tessellator tessellator = Tessellator.getInstance();
  256 + WorldRenderer worldRenderer = tessellator.getWorldRenderer();
  257 + worldRenderer.startDrawingQuads();
  258 + worldRenderer.setColorOpaque_I(0xFFFFFFFF); // TODO OBF MCPTEST func_178991_c - setColorOpaque_I
  259 + worldRenderer.addVertexWithUV(0.0D, scaledHeight, 0.0D, 0.0D, 0.0D);
  260 + worldRenderer.addVertexWithUV(scaledWidth, scaledHeight, 0.0D, 0.0D, 0.0D);
  261 + worldRenderer.addVertexWithUV(scaledWidth, 0.0D, 0.0D, 0.0D, 0.0D);
  262 + worldRenderer.addVertexWithUV(0.0D, 0.0D, 0.0D, 0.0D, 0.0D);
261 tessellator.draw(); 263 tessellator.draw();
262 264
263 glColor4f(1.0F, 1.0F, 1.0F, 1.0F); 265 glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
@@ -270,16 +272,17 @@ public class LoadingBar extends LoadingProgress @@ -270,16 +272,17 @@ public class LoadingBar extends LoadingProgress
270 int v2 = 256; 272 int v2 = 256;
271 273
272 float texMapScale = 0.00390625F; 274 float texMapScale = 0.00390625F;
273 - tessellator.startDrawingQuads();  
274 - tessellator.setColorOpaque_I(0xFFFFFFFF);  
275 - tessellator.addVertexWithUV(left + 0, top + v2, 0.0D, (u1 + 0) * texMapScale, (v1 + v2) * texMapScale);  
276 - tessellator.addVertexWithUV(left + u2, top + v2, 0.0D, (u1 + u2) * texMapScale, (v1 + v2) * texMapScale);  
277 - tessellator.addVertexWithUV(left + u2, top + 0, 0.0D, (u1 + u2) * texMapScale, (v1 + 0) * texMapScale);  
278 - tessellator.addVertexWithUV(left + 0, top + 0, 0.0D, (u1 + 0) * texMapScale, (v1 + 0) * texMapScale); 275 + worldRenderer.startDrawingQuads();
  276 + worldRenderer.setColorOpaque_I(0xFFFFFFFF); // TODO OBF MCPTEST func_178991_c - setColorOpaque_I
  277 + worldRenderer.addVertexWithUV(left + 0, top + v2, 0.0D, (u1 + 0) * texMapScale, (v1 + v2) * texMapScale);
  278 + worldRenderer.addVertexWithUV(left + u2, top + v2, 0.0D, (u1 + u2) * texMapScale, (v1 + v2) * texMapScale);
  279 + worldRenderer.addVertexWithUV(left + u2, top + 0, 0.0D, (u1 + u2) * texMapScale, (v1 + 0) * texMapScale);
  280 + worldRenderer.addVertexWithUV(left + 0, top + 0, 0.0D, (u1 + 0) * texMapScale, (v1 + 0) * texMapScale);
279 tessellator.draw(); 281 tessellator.draw();
280 282
281 - glEnable(GL_COLOR_LOGIC_OP);  
282 - glLogicOp(GL_OR_REVERSE); 283 + glEnableTexture2D();
  284 + glEnableColorLogic();
  285 + glColorLogicOp(GL_OR_REVERSE);
283 this.fontRenderer.drawString(this.message, 1, scaledHeight - 19, 0xFF000000); 286 this.fontRenderer.drawString(this.message, 1, scaledHeight - 19, 0xFF000000);
284 287
285 if (LiteLoaderLogger.DEBUG) 288 if (LiteLoaderLogger.DEBUG)
@@ -292,16 +295,16 @@ public class LoadingBar extends LoadingProgress @@ -292,16 +295,16 @@ public class LoadingBar extends LoadingProgress
292 glPopMatrix(); 295 glPopMatrix();
293 } 296 }
294 297
295 - glDisable(GL_COLOR_LOGIC_OP);  
296 - glEnable(GL_TEXTURE_2D); 298 + glDisableColorLogic();
  299 + glEnableTexture2D();
297 300
298 double barHeight = 10.0D; 301 double barHeight = 10.0D;
299 302
300 double barWidth = scaledResolution.getScaledWidth_double() - 2.0D; 303 double barWidth = scaledResolution.getScaledWidth_double() - 2.0D;
301 304
302 - glDisable(GL_TEXTURE_2D);  
303 - glEnable(GL_BLEND);  
304 - glEnable(GL_ALPHA_TEST); 305 + glDisableTexture2D();
  306 + glEnableBlend();
  307 + glEnableAlpha();
305 glAlphaFunc(GL_GREATER, 0.0F); 308 glAlphaFunc(GL_GREATER, 0.0F);
306 glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); 309 glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
307 310
@@ -315,37 +318,37 @@ public class LoadingBar extends LoadingProgress @@ -315,37 +318,37 @@ public class LoadingBar extends LoadingProgress
315 // tessellator.addVertex(0.0D, scaledHeight - (scaledHeight / 3), 0.0D); 318 // tessellator.addVertex(0.0D, scaledHeight - (scaledHeight / 3), 0.0D);
316 // tessellator.draw(); 319 // tessellator.draw();
317 320
318 - tessellator.startDrawingQuads();  
319 - tessellator.setColorRGBA(this.barLuma, this.barLuma, this.barLuma, 128);  
320 - tessellator.addVertex(0.0D, scaledHeight, 0.0D);  
321 - tessellator.addVertex(0.0D + scaledWidth, scaledHeight, 0.0D);  
322 - tessellator.addVertex(0.0D + scaledWidth, scaledHeight - barHeight, 0.0D);  
323 - tessellator.addVertex(0.0D, scaledHeight - barHeight, 0.0D); 321 + worldRenderer.startDrawingQuads();
  322 + worldRenderer.func_178961_b(this.barLuma, this.barLuma, this.barLuma, 128);
  323 + worldRenderer.addVertex(0.0D, scaledHeight, 0.0D);
  324 + worldRenderer.addVertex(0.0D + scaledWidth, scaledHeight, 0.0D);
  325 + worldRenderer.addVertex(0.0D + scaledWidth, scaledHeight - barHeight, 0.0D);
  326 + worldRenderer.addVertex(0.0D, scaledHeight - barHeight, 0.0D);
324 tessellator.draw(); 327 tessellator.draw();
325 328
326 barHeight -= 1; 329 barHeight -= 1;
327 330
328 - tessellator.startDrawingQuads();  
329 - tessellator.setColorRGBA(this.r2, this.g2, this.b2, 255);  
330 - tessellator.addVertex(1.0D + barWidth * progress, scaledHeight - 1, 1.0D);  
331 - tessellator.addVertex(1.0D + barWidth * progress, scaledHeight - barHeight, 1.0D);  
332 - tessellator.setColorRGBA(0, 0, 0, 255);  
333 - tessellator.addVertex(1.0D, scaledHeight - barHeight, 1.0D);  
334 - tessellator.addVertex(1.0D, scaledHeight - 1, 1.0D); 331 + worldRenderer.startDrawingQuads();
  332 + worldRenderer.func_178961_b(this.r2, this.g2, this.b2, 255);
  333 + worldRenderer.addVertex(1.0D + barWidth * progress, scaledHeight - 1, 1.0D);
  334 + worldRenderer.addVertex(1.0D + barWidth * progress, scaledHeight - barHeight, 1.0D);
  335 + worldRenderer.func_178961_b(0, 0, 0, 255);
  336 + worldRenderer.addVertex(1.0D, scaledHeight - barHeight, 1.0D);
  337 + worldRenderer.addVertex(1.0D, scaledHeight - 1, 1.0D);
335 tessellator.draw(); 338 tessellator.draw();
336 339
337 glAlphaFunc(GL_GREATER, 0.1F); 340 glAlphaFunc(GL_GREATER, 0.1F);
338 - glDisable(GL_LIGHTING);  
339 - glDisable(GL_FOG); 341 + glDisableLighting();
  342 + glDisableFog();
340 this.fbo.unbindFramebuffer(); 343 this.fbo.unbindFramebuffer();
341 344
342 this.fbo.framebufferRender(fboWidth, fboHeight); 345 this.fbo.framebufferRender(fboWidth, fboHeight);
343 346
344 - glEnable(GL_ALPHA_TEST); 347 + glEnableAlpha();
345 glAlphaFunc(GL_GREATER, 0.1F); 348 glAlphaFunc(GL_GREATER, 0.1F);
346 - glFlush(); 349 +// glFlush();
347 350
348 - this.minecraft.resetSize(); 351 + this.minecraft.updateDisplay(); // TODO OBF MCPTEST updateDisplay - func_175601_h
349 } 352 }
350 353
351 private void renderLogTail(int yPos) 354 private void renderLogTail(int yPos)
java/client/com/mumfrey/liteloader/client/overlays/MinecraftOverlay.java
@@ -25,14 +25,14 @@ public abstract class MinecraftOverlay implements IMinecraft @@ -25,14 +25,14 @@ public abstract class MinecraftOverlay implements IMinecraft
25 @SuppressWarnings("unused") 25 @SuppressWarnings("unused")
26 private static Minecraft __TARGET; 26 private static Minecraft __TARGET;
27 27
28 - // TODO Obfuscation 1.7.10 28 + // TODO Obfuscation 1.8
29 // Fields 29 // Fields
30 - @Obfuscated({"field_71428_T", "Q"}) private Timer timer;  
31 - @Obfuscated({"field_71424_I", "z"}) private Profiler mcProfiler;  
32 - @Obfuscated({"field_71425_J", "A"}) private boolean running;  
33 - @Obfuscated({"field_110449_ao", "ap"}) private List<?> defaultResourcePacks = Lists.newArrayList();  
34 - @Obfuscated({"field_71475_ae", "af"}) private String serverName;  
35 - @Obfuscated({"field_71477_af", "ag"}) private int serverPort; 30 + @Obfuscated({"field_71428_T", "U"}) private Timer timer;
  31 + @Obfuscated({"field_71424_I", "y"}) private Profiler mcProfiler;
  32 + @Obfuscated({"field_71425_J", "z"}) private boolean running;
  33 + @Obfuscated({"field_110449_ao", "aw"}) private List<?> defaultResourcePacks = Lists.newArrayList();
  34 + @Obfuscated({"field_71475_ae", "am"}) private String serverName;
  35 + @Obfuscated({"field_71477_af", "an"}) private int serverPort;
36 36
37 // Methods 37 // Methods
38 @Obfuscated({"func_71370_a", "a"}) @Stub abstract void resize(int width, int height); 38 @Obfuscated({"func_71370_a", "a"}) @Stub abstract void resize(int width, int height);
java/client/com/mumfrey/liteloader/client/transformers/LiteLoaderEventInjectionTransformer.java
@@ -9,15 +9,22 @@ import com.mumfrey.liteloader.transformers.event.EventInjectionTransformer; @@ -9,15 +9,22 @@ import com.mumfrey.liteloader.transformers.event.EventInjectionTransformer;
9 import com.mumfrey.liteloader.transformers.event.InjectionPoint; 9 import com.mumfrey.liteloader.transformers.event.InjectionPoint;
10 import com.mumfrey.liteloader.transformers.event.MethodInfo; 10 import com.mumfrey.liteloader.transformers.event.MethodInfo;
11 import com.mumfrey.liteloader.transformers.event.inject.BeforeInvoke; 11 import com.mumfrey.liteloader.transformers.event.inject.BeforeInvoke;
  12 +import com.mumfrey.liteloader.transformers.event.inject.BeforeNew;
12 import com.mumfrey.liteloader.transformers.event.inject.BeforeReturn; 13 import com.mumfrey.liteloader.transformers.event.inject.BeforeReturn;
13 import com.mumfrey.liteloader.transformers.event.inject.BeforeStringInvoke; 14 import com.mumfrey.liteloader.transformers.event.inject.BeforeStringInvoke;
14 import com.mumfrey.liteloader.transformers.event.inject.MethodHead; 15 import com.mumfrey.liteloader.transformers.event.inject.MethodHead;
15 16
  17 +/**
  18 + * Injector for LiteLoader's main events
  19 + *
  20 + * @author Adam Mummery-Smith
  21 + */
16 public class LiteLoaderEventInjectionTransformer extends EventInjectionTransformer 22 public class LiteLoaderEventInjectionTransformer extends EventInjectionTransformer
17 { 23 {
18 @Override 24 @Override
19 protected void addEvents() 25 protected void addEvents()
20 { 26 {
  27 + // Event declaraions
21 Event onOutboundChat = Event.getOrCreate("onOutboundChat", true); 28 Event onOutboundChat = Event.getOrCreate("onOutboundChat", true);
22 Event onResize = Event.getOrCreate("updateFramebufferSize", false); 29 Event onResize = Event.getOrCreate("updateFramebufferSize", false);
23 Event preRenderFBO = Event.getOrCreate("preRenderFBO", false); 30 Event preRenderFBO = Event.getOrCreate("preRenderFBO", false);
@@ -43,7 +50,9 @@ public class LiteLoaderEventInjectionTransformer extends EventInjectionTransform @@ -43,7 +50,9 @@ public class LiteLoaderEventInjectionTransformer extends EventInjectionTransform
43 Event onSpawnPlayer = Event.getOrCreate("onSpawnPlayer", false); 50 Event onSpawnPlayer = Event.getOrCreate("onSpawnPlayer", false);
44 Event onRespawnPlayer = Event.getOrCreate("onRespawnPlayer", false); 51 Event onRespawnPlayer = Event.getOrCreate("onRespawnPlayer", false);
45 Event onStartupComplete = Event.getOrCreate("onStartupComplete", false); 52 Event onStartupComplete = Event.getOrCreate("onStartupComplete", false);
  53 + Event onSessionProfileBad = Event.getOrCreate("onSessionProfileBad", true);
46 54
  55 + // Injection Points
47 InjectionPoint methodHead = new MethodHead(); 56 InjectionPoint methodHead = new MethodHead();
48 InjectionPoint methodReturn = new BeforeReturn(); 57 InjectionPoint methodReturn = new BeforeReturn();
49 InjectionPoint beforeGlClear = new BeforeInvoke(glClear); 58 InjectionPoint beforeGlClear = new BeforeInvoke(glClear);
@@ -54,17 +63,19 @@ public class LiteLoaderEventInjectionTransformer extends EventInjectionTransform @@ -54,17 +63,19 @@ public class LiteLoaderEventInjectionTransformer extends EventInjectionTransform
54 InjectionPoint beforeDrawChat = new BeforeInvoke(drawChat); 63 InjectionPoint beforeDrawChat = new BeforeInvoke(drawChat);
55 InjectionPoint beforeEndProfiler = new BeforeInvoke(endSection); 64 InjectionPoint beforeEndProfiler = new BeforeInvoke(endSection);
56 InjectionPoint beforeTickProfiler = new BeforeStringInvoke("tick", startSection); 65 InjectionPoint beforeTickProfiler = new BeforeStringInvoke("tick", startSection);
57 - InjectionPoint beforePickProfiler = new BeforeStringInvoke("pick", endStartSection); 66 + InjectionPoint beforeCenterProfiler = new BeforeStringInvoke("center", startSection);
58 InjectionPoint beforeRenderProfiler = new BeforeStringInvoke("gameRenderer", endStartSection); 67 InjectionPoint beforeRenderProfiler = new BeforeStringInvoke("gameRenderer", endStartSection);
59 - InjectionPoint beforeFrustumProfiler = new BeforeStringInvoke("frustrum", endStartSection); 68 + InjectionPoint beforeFrustumProfiler = new BeforeStringInvoke("frustum", endStartSection);
60 InjectionPoint beforeParticlesProfiler = new BeforeStringInvoke("litParticles", endStartSection); 69 InjectionPoint beforeParticlesProfiler = new BeforeStringInvoke("litParticles", endStartSection);
  70 + InjectionPoint beforeNewGameProfile = new BeforeNew(1, Obf.GameProfile);
61 71
  72 + // Hooks
62 this.add(onOutboundChat, sendChatMessage, (methodHead), "onOutboundChat"); 73 this.add(onOutboundChat, sendChatMessage, (methodHead), "onOutboundChat");
63 this.add(onResize, updateFramebufferSize, (methodHead), "onResize"); 74 this.add(onResize, updateFramebufferSize, (methodHead), "onResize");
64 this.add(preRenderFBO, runGameLoop, (beforeFBORender), "preRenderFBO"); 75 this.add(preRenderFBO, runGameLoop, (beforeFBORender), "preRenderFBO");
65 - this.add(renderFBO, framebufferRender, (beforeBindFBOTex), "renderFBO"); 76 + this.add(renderFBO, framebufferRenderExt, (beforeBindFBOTex), "renderFBO");
66 this.add(postRenderFBO, runGameLoop, after(beforeFBORender), "postRenderFBO"); 77 this.add(postRenderFBO, runGameLoop, after(beforeFBORender), "postRenderFBO");
67 - this.add(onRenderWorld, renderWorld, (beforePickProfiler), "onRenderWorld"); 78 + this.add(onRenderWorld, renderWorld, (beforeCenterProfiler), "onRenderWorld");
68 this.add(onTimerUpdate, runGameLoop, (beforeTickProfiler), "onTimerUpdate"); 79 this.add(onTimerUpdate, runGameLoop, (beforeTickProfiler), "onTimerUpdate");
69 this.add(onRender, runGameLoop, (beforeRenderProfiler), "onRender"); 80 this.add(onRender, runGameLoop, (beforeRenderProfiler), "onRender");
70 this.add(newTick, runTick, (methodHead), "newTick"); 81 this.add(newTick, runTick, (methodHead), "newTick");
@@ -72,8 +83,8 @@ public class LiteLoaderEventInjectionTransformer extends EventInjectionTransform @@ -72,8 +83,8 @@ public class LiteLoaderEventInjectionTransformer extends EventInjectionTransform
72 this.add(preRenderGUI, updateCameraAndRender, after(beforeGlClear), "preRenderGUI"); 83 this.add(preRenderGUI, updateCameraAndRender, after(beforeGlClear), "preRenderGUI");
73 this.add(onRenderHUD, updateCameraAndRender, (beforeRenderHUD), "onRenderHUD"); 84 this.add(onRenderHUD, updateCameraAndRender, (beforeRenderHUD), "onRenderHUD");
74 this.add(postRenderHUD, updateCameraAndRender, after(beforeRenderHUD), "postRenderHUD"); 85 this.add(postRenderHUD, updateCameraAndRender, after(beforeRenderHUD), "postRenderHUD");
75 - this.add(onSetupCameraTransform, renderWorld, (beforeFrustumProfiler), "onSetupCameraTransform");  
76 - this.add(postRenderEntities, renderWorld, (beforeParticlesProfiler), "postRenderEntities"); 86 + this.add(onSetupCameraTransform, renderWorldPass, (beforeFrustumProfiler), "onSetupCameraTransform");
  87 + this.add(postRenderEntities, renderWorldPass, (beforeParticlesProfiler), "postRenderEntities");
77 this.add(postRender, renderWorld, (beforeEndProfiler), "postRender"); 88 this.add(postRender, renderWorld, (beforeEndProfiler), "postRender");
78 this.add(onRenderChat, renderGameOverlay, (beforeDrawChat), "onRenderChat"); 89 this.add(onRenderChat, renderGameOverlay, (beforeDrawChat), "onRenderChat");
79 this.add(postRenderChat, renderGameOverlay, after(beforeDrawChat), "postRenderChat"); 90 this.add(postRenderChat, renderGameOverlay, after(beforeDrawChat), "postRenderChat");
@@ -84,6 +95,9 @@ public class LiteLoaderEventInjectionTransformer extends EventInjectionTransform @@ -84,6 +95,9 @@ public class LiteLoaderEventInjectionTransformer extends EventInjectionTransform
84 this.add(onSpawnPlayer, spawnPlayer, (methodReturn), "onSpawnPlayer"); 95 this.add(onSpawnPlayer, spawnPlayer, (methodReturn), "onSpawnPlayer");
85 this.add(onRespawnPlayer, respawnPlayer, (methodReturn), "onRespawnPlayer"); 96 this.add(onRespawnPlayer, respawnPlayer, (methodReturn), "onRespawnPlayer");
86 this.add(onStartupComplete, startGame, (methodReturn), "onStartupComplete"); 97 this.add(onStartupComplete, startGame, (methodReturn), "onStartupComplete");
  98 +
  99 + // Compatibility handlers
  100 + this.add(onSessionProfileBad, getProfile, (beforeNewGameProfile), "generateOfflineUUID");
87 } 101 }
88 102
89 protected final Event add(Event event, MethodInfo targetMethod, InjectionPoint injectionPoint, String callback) 103 protected final Event add(Event event, MethodInfo targetMethod, InjectionPoint injectionPoint, String callback)
java/client/com/mumfrey/liteloader/client/util/GL.java 0 โ†’ 100644
  1 +package com.mumfrey.liteloader.client.util;
  2 +
  3 +import java.nio.FloatBuffer;
  4 +
  5 +import net.minecraft.client.renderer.GlStateManager;
  6 +import net.minecraft.client.renderer.GlStateManager.TexGen;
  7 +
  8 +/**
  9 + * Convenience class for working with Mojang's GLStateManager:
  10 + *
  11 + * It would be pretty tolerable to work with GLStateManager as a static import were it not for the fact that you still need to
  12 + * import the GL namespaces themselves from LWJGL in order to get the constants, and also have to deal with the fact that
  13 + * GLStateManager's methods don't have "gl-style" names, making it annoying to work with. This class is designed to function as
  14 + * an adapter to allow changeover to be more painless. Using this class means that the following code:
  15 + *
  16 + * glEnable(GL_BLEND);
  17 + * glAlphaFunc(GL_GREATER, 0.0F);
  18 + *
  19 + * becomes:
  20 + *
  21 + * glEnableBlend();
  22 + * glAlphaFunc(GL_GREATER, 0.0F);
  23 + *
  24 + * Notice that the glAlphaFunc invokation remains unchanged, and the glEnable call simply gets replaced with a logical equivalent
  25 + * which invokes the GLStateManager method behind the scenes.
  26 + *
  27 + * To use this class, simply replace existing static imports in your classes with this single static import, then change glEnable
  28 + * and glDisable calls accordingly.
  29 + *
  30 + * @author Adam Mummery-Smith
  31 + */
  32 +public class GL
  33 +{
  34 + // GL11
  35 + public static final int GL_ACCUM = 0x100;
  36 + public static final int GL_LOAD = 0x101;
  37 + public static final int GL_RETURN = 0x102;
  38 + public static final int GL_MULT = 0x103;
  39 + public static final int GL_ADD = 0x104;
  40 + public static final int GL_NEVER = 0x200;
  41 + public static final int GL_LESS = 0x201;
  42 + public static final int GL_EQUAL = 0x202;
  43 + public static final int GL_LEQUAL = 0x203;
  44 + public static final int GL_GREATER = 0x204;
  45 + public static final int GL_NOTEQUAL = 0x205;
  46 + public static final int GL_GEQUAL = 0x206;
  47 + public static final int GL_ALWAYS = 0x207;
  48 + public static final int GL_CURRENT_BIT = 0x1;
  49 + public static final int GL_POINT_BIT = 0x2;
  50 + public static final int GL_LINE_BIT = 0x4;
  51 + public static final int GL_POLYGON_BIT = 0x8;
  52 + public static final int GL_POLYGON_STIPPLE_BIT = 0x10;
  53 + public static final int GL_PIXEL_MODE_BIT = 0x20;
  54 + public static final int GL_LIGHTING_BIT = 0x40;
  55 + public static final int GL_FOG_BIT = 0x80;
  56 + public static final int GL_DEPTH_BUFFER_BIT = 0x100;
  57 + public static final int GL_ACCUM_BUFFER_BIT = 0x200;
  58 + public static final int GL_STENCIL_BUFFER_BIT = 0x400;
  59 + public static final int GL_VIEWPORT_BIT = 0x800;
  60 + public static final int GL_TRANSFORM_BIT = 0x1000;
  61 + public static final int GL_ENABLE_BIT = 0x2000;
  62 + public static final int GL_COLOR_BUFFER_BIT = 0x4000;
  63 + public static final int GL_HINT_BIT = 0x8000;
  64 + public static final int GL_EVAL_BIT = 0x10000;
  65 + public static final int GL_LIST_BIT = 0x20000;
  66 + public static final int GL_TEXTURE_BIT = 0x40000;
  67 + public static final int GL_SCISSOR_BIT = 0x80000;
  68 + public static final int GL_ALL_ATTRIB_BITS = 0xfffff;
  69 + public static final int GL_POINTS = 0x0;
  70 + public static final int GL_LINES = 0x1;
  71 + public static final int GL_LINE_LOOP = 0x2;
  72 + public static final int GL_LINE_STRIP = 0x3;
  73 + public static final int GL_TRIANGLES = 0x4;
  74 + public static final int GL_TRIANGLE_STRIP = 0x5;
  75 + public static final int GL_TRIANGLE_FAN = 0x6;
  76 + public static final int GL_QUADS = 0x7;
  77 + public static final int GL_QUAD_STRIP = 0x8;
  78 + public static final int GL_POLYGON = 0x9;
  79 + public static final int GL_ZERO = 0x0;
  80 + public static final int GL_ONE = 0x1;
  81 + public static final int GL_SRC_COLOR = 0x300;
  82 + public static final int GL_ONE_MINUS_SRC_COLOR = 0x301;
  83 + public static final int GL_SRC_ALPHA = 0x302;
  84 + public static final int GL_ONE_MINUS_SRC_ALPHA = 0x303;
  85 + public static final int GL_DST_ALPHA = 0x304;
  86 + public static final int GL_ONE_MINUS_DST_ALPHA = 0x305;
  87 + public static final int GL_DST_COLOR = 0x306;
  88 + public static final int GL_ONE_MINUS_DST_COLOR = 0x307;
  89 + public static final int GL_SRC_ALPHA_SATURATE = 0x308;
  90 + public static final int GL_CONSTANT_COLOR = 0x8001;
  91 + public static final int GL_ONE_MINUS_CONSTANT_COLOR = 0x8002;
  92 + public static final int GL_CONSTANT_ALPHA = 0x8003;
  93 + public static final int GL_ONE_MINUS_CONSTANT_ALPHA = 0x8004;
  94 + public static final int GL_TRUE = 0x1;
  95 + public static final int GL_FALSE = 0x0;
  96 + public static final int GL_CLIP_PLANE0 = 0x3000;
  97 + public static final int GL_CLIP_PLANE1 = 0x3001;
  98 + public static final int GL_CLIP_PLANE2 = 0x3002;
  99 + public static final int GL_CLIP_PLANE3 = 0x3003;
  100 + public static final int GL_CLIP_PLANE4 = 0x3004;
  101 + public static final int GL_CLIP_PLANE5 = 0x3005;
  102 + public static final int GL_BYTE = 0x1400;
  103 + public static final int GL_UNSIGNED_BYTE = 0x1401;
  104 + public static final int GL_SHORT = 0x1402;
  105 + public static final int GL_UNSIGNED_SHORT = 0x1403;
  106 + public static final int GL_INT = 0x1404;
  107 + public static final int GL_UNSIGNED_INT = 0x1405;
  108 + public static final int GL_FLOAT = 0x1406;
  109 + public static final int GL_2_BYTES = 0x1407;
  110 + public static final int GL_3_BYTES = 0x1408;
  111 + public static final int GL_4_BYTES = 0x1409;
  112 + public static final int GL_DOUBLE = 0x140a;
  113 + public static final int GL_NONE = 0x0;
  114 + public static final int GL_FRONT_LEFT = 0x400;
  115 + public static final int GL_FRONT_RIGHT = 0x401;
  116 + public static final int GL_BACK_LEFT = 0x402;
  117 + public static final int GL_BACK_RIGHT = 0x403;
  118 + public static final int GL_FRONT = 0x404;
  119 + public static final int GL_BACK = 0x405;
  120 + public static final int GL_LEFT = 0x406;
  121 + public static final int GL_RIGHT = 0x407;
  122 + public static final int GL_FRONT_AND_BACK = 0x408;
  123 + public static final int GL_AUX0 = 0x409;
  124 + public static final int GL_AUX1 = 0x40a;
  125 + public static final int GL_AUX2 = 0x40b;
  126 + public static final int GL_AUX3 = 0x40c;
  127 + public static final int GL_NO_ERROR = 0x0;
  128 + public static final int GL_INVALID_ENUM = 0x500;
  129 + public static final int GL_INVALID_VALUE = 0x501;
  130 + public static final int GL_INVALID_OPERATION = 0x502;
  131 + public static final int GL_STACK_OVERFLOW = 0x503;
  132 + public static final int GL_STACK_UNDERFLOW = 0x504;
  133 + public static final int GL_OUT_OF_MEMORY = 0x505;
  134 + public static final int GL_2D = 0x600;
  135 + public static final int GL_3D = 0x601;
  136 + public static final int GL_3D_COLOR = 0x602;
  137 + public static final int GL_3D_COLOR_TEXTURE = 0x603;
  138 + public static final int GL_4D_COLOR_TEXTURE = 0x604;
  139 + public static final int GL_PASS_THROUGH_TOKEN = 0x700;
  140 + public static final int GL_POINT_TOKEN = 0x701;
  141 + public static final int GL_LINE_TOKEN = 0x702;
  142 + public static final int GL_POLYGON_TOKEN = 0x703;
  143 + public static final int GL_BITMAP_TOKEN = 0x704;
  144 + public static final int GL_DRAW_PIXEL_TOKEN = 0x705;
  145 + public static final int GL_COPY_PIXEL_TOKEN = 0x706;
  146 + public static final int GL_LINE_RESET_TOKEN = 0x707;
  147 + public static final int GL_EXP = 0x800;
  148 + public static final int GL_EXP2 = 0x801;
  149 + public static final int GL_CW = 0x900;
  150 + public static final int GL_CCW = 0x901;
  151 + public static final int GL_COEFF = 0xa00;
  152 + public static final int GL_ORDER = 0xa01;
  153 + public static final int GL_DOMAIN = 0xa02;
  154 + public static final int GL_CURRENT_COLOR = 0xb00;
  155 + public static final int GL_CURRENT_INDEX = 0xb01;
  156 + public static final int GL_CURRENT_NORMAL = 0xb02;
  157 + public static final int GL_CURRENT_TEXTURE_COORDS = 0xb03;
  158 + public static final int GL_CURRENT_RASTER_COLOR = 0xb04;
  159 + public static final int GL_CURRENT_RASTER_INDEX = 0xb05;
  160 + public static final int GL_CURRENT_RASTER_TEXTURE_COORDS = 0xb06;
  161 + public static final int GL_CURRENT_RASTER_POSITION = 0xb07;
  162 + public static final int GL_CURRENT_RASTER_POSITION_VALID = 0xb08;
  163 + public static final int GL_CURRENT_RASTER_DISTANCE = 0xb09;
  164 + public static final int GL_POINT_SMOOTH = 0xb10;
  165 + public static final int GL_POINT_SIZE = 0xb11;
  166 + public static final int GL_POINT_SIZE_RANGE = 0xb12;
  167 + public static final int GL_POINT_SIZE_GRANULARITY = 0xb13;
  168 + public static final int GL_LINE_SMOOTH = 0xb20;
  169 + public static final int GL_LINE_WIDTH = 0xb21;
  170 + public static final int GL_LINE_WIDTH_RANGE = 0xb22;
  171 + public static final int GL_LINE_WIDTH_GRANULARITY = 0xb23;
  172 + public static final int GL_LINE_STIPPLE = 0xb24;
  173 + public static final int GL_LINE_STIPPLE_PATTERN = 0xb25;
  174 + public static final int GL_LINE_STIPPLE_REPEAT = 0xb26;
  175 + public static final int GL_LIST_MODE = 0xb30;
  176 + public static final int GL_MAX_LIST_NESTING = 0xb31;
  177 + public static final int GL_LIST_BASE = 0xb32;
  178 + public static final int GL_LIST_INDEX = 0xb33;
  179 + public static final int GL_POLYGON_MODE = 0xb40;
  180 + public static final int GL_POLYGON_SMOOTH = 0xb41;
  181 + public static final int GL_POLYGON_STIPPLE = 0xb42;
  182 + public static final int GL_EDGE_FLAG = 0xb43;
  183 + public static final int GL_CULL_FACE = 0xb44;
  184 + public static final int GL_CULL_FACE_MODE = 0xb45;
  185 + public static final int GL_FRONT_FACE = 0xb46;
  186 + public static final int GL_LIGHTING = 0xb50;
  187 + public static final int GL_LIGHT_MODEL_LOCAL_VIEWER = 0xb51;
  188 + public static final int GL_LIGHT_MODEL_TWO_SIDE = 0xb52;
  189 + public static final int GL_LIGHT_MODEL_AMBIENT = 0xb53;
  190 + public static final int GL_SHADE_MODEL = 0xb54;
  191 + public static final int GL_COLOR_MATERIAL_FACE = 0xb55;
  192 + public static final int GL_COLOR_MATERIAL_PARAMETER = 0xb56;
  193 + public static final int GL_COLOR_MATERIAL = 0xb57;
  194 + public static final int GL_FOG = 0xb60;
  195 + public static final int GL_FOG_INDEX = 0xb61;
  196 + public static final int GL_FOG_DENSITY = 0xb62;
  197 + public static final int GL_FOG_START = 0xb63;
  198 + public static final int GL_FOG_END = 0xb64;
  199 + public static final int GL_FOG_MODE = 0xb65;
  200 + public static final int GL_FOG_COLOR = 0xb66;
  201 + public static final int GL_DEPTH_RANGE = 0xb70;
  202 + public static final int GL_DEPTH_TEST = 0xb71;
  203 + public static final int GL_DEPTH_WRITEMASK = 0xb72;
  204 + public static final int GL_DEPTH_CLEAR_VALUE = 0xb73;
  205 + public static final int GL_DEPTH_FUNC = 0xb74;
  206 + public static final int GL_ACCUM_CLEAR_VALUE = 0xb80;
  207 + public static final int GL_STENCIL_TEST = 0xb90;
  208 + public static final int GL_STENCIL_CLEAR_VALUE = 0xb91;
  209 + public static final int GL_STENCIL_FUNC = 0xb92;
  210 + public static final int GL_STENCIL_VALUE_MASK = 0xb93;
  211 + public static final int GL_STENCIL_FAIL = 0xb94;
  212 + public static final int GL_STENCIL_PASS_DEPTH_FAIL = 0xb95;
  213 + public static final int GL_STENCIL_PASS_DEPTH_PASS = 0xb96;
  214 + public static final int GL_STENCIL_REF = 0xb97;
  215 + public static final int GL_STENCIL_WRITEMASK = 0xb98;
  216 + public static final int GL_MATRIX_MODE = 0xba0;
  217 + public static final int GL_NORMALIZE = 0xba1;
  218 + public static final int GL_VIEWPORT = 0xba2;
  219 + public static final int GL_MODELVIEW_STACK_DEPTH = 0xba3;
  220 + public static final int GL_PROJECTION_STACK_DEPTH = 0xba4;
  221 + public static final int GL_TEXTURE_STACK_DEPTH = 0xba5;
  222 + public static final int GL_MODELVIEW_MATRIX = 0xba6;
  223 + public static final int GL_PROJECTION_MATRIX = 0xba7;
  224 + public static final int GL_TEXTURE_MATRIX = 0xba8;
  225 + public static final int GL_ATTRIB_STACK_DEPTH = 0xbb0;
  226 + public static final int GL_CLIENT_ATTRIB_STACK_DEPTH = 0xbb1;
  227 + public static final int GL_ALPHA_TEST = 0xbc0;
  228 + public static final int GL_ALPHA_TEST_FUNC = 0xbc1;
  229 + public static final int GL_ALPHA_TEST_REF = 0xbc2;
  230 + public static final int GL_DITHER = 0xbd0;
  231 + public static final int GL_BLEND_DST = 0xbe0;
  232 + public static final int GL_BLEND_SRC = 0xbe1;
  233 + public static final int GL_BLEND = 0xbe2;
  234 + public static final int GL_LOGIC_OP_MODE = 0xbf0;
  235 + public static final int GL_INDEX_LOGIC_OP = 0xbf1;
  236 + public static final int GL_COLOR_LOGIC_OP = 0xbf2;
  237 + public static final int GL_AUX_BUFFERS = 0xc00;
  238 + public static final int GL_DRAW_BUFFER = 0xc01;
  239 + public static final int GL_READ_BUFFER = 0xc02;
  240 + public static final int GL_SCISSOR_BOX = 0xc10;
  241 + public static final int GL_SCISSOR_TEST = 0xc11;
  242 + public static final int GL_INDEX_CLEAR_VALUE = 0xc20;
  243 + public static final int GL_INDEX_WRITEMASK = 0xc21;
  244 + public static final int GL_COLOR_CLEAR_VALUE = 0xc22;
  245 + public static final int GL_COLOR_WRITEMASK = 0xc23;
  246 + public static final int GL_INDEX_MODE = 0xc30;
  247 + public static final int GL_RGBA_MODE = 0xc31;
  248 + public static final int GL_DOUBLEBUFFER = 0xc32;
  249 + public static final int GL_STEREO = 0xc33;
  250 + public static final int GL_RENDER_MODE = 0xc40;
  251 + public static final int GL_PERSPECTIVE_CORRECTION_HINT = 0xc50;
  252 + public static final int GL_POINT_SMOOTH_HINT = 0xc51;
  253 + public static final int GL_LINE_SMOOTH_HINT = 0xc52;
  254 + public static final int GL_POLYGON_SMOOTH_HINT = 0xc53;
  255 + public static final int GL_FOG_HINT = 0xc54;
  256 + public static final int GL_TEXTURE_GEN_S = 0xc60;
  257 + public static final int GL_TEXTURE_GEN_T = 0xc61;
  258 + public static final int GL_TEXTURE_GEN_R = 0xc62;
  259 + public static final int GL_TEXTURE_GEN_Q = 0xc63;
  260 + public static final int GL_PIXEL_MAP_I_TO_I = 0xc70;
  261 + public static final int GL_PIXEL_MAP_S_TO_S = 0xc71;
  262 + public static final int GL_PIXEL_MAP_I_TO_R = 0xc72;
  263 + public static final int GL_PIXEL_MAP_I_TO_G = 0xc73;
  264 + public static final int GL_PIXEL_MAP_I_TO_B = 0xc74;
  265 + public static final int GL_PIXEL_MAP_I_TO_A = 0xc75;
  266 + public static final int GL_PIXEL_MAP_R_TO_R = 0xc76;
  267 + public static final int GL_PIXEL_MAP_G_TO_G = 0xc77;
  268 + public static final int GL_PIXEL_MAP_B_TO_B = 0xc78;
  269 + public static final int GL_PIXEL_MAP_A_TO_A = 0xc79;
  270 + public static final int GL_PIXEL_MAP_I_TO_I_SIZE = 0xcb0;
  271 + public static final int GL_PIXEL_MAP_S_TO_S_SIZE = 0xcb1;
  272 + public static final int GL_PIXEL_MAP_I_TO_R_SIZE = 0xcb2;
  273 + public static final int GL_PIXEL_MAP_I_TO_G_SIZE = 0xcb3;
  274 + public static final int GL_PIXEL_MAP_I_TO_B_SIZE = 0xcb4;
  275 + public static final int GL_PIXEL_MAP_I_TO_A_SIZE = 0xcb5;
  276 + public static final int GL_PIXEL_MAP_R_TO_R_SIZE = 0xcb6;
  277 + public static final int GL_PIXEL_MAP_G_TO_G_SIZE = 0xcb7;
  278 + public static final int GL_PIXEL_MAP_B_TO_B_SIZE = 0xcb8;
  279 + public static final int GL_PIXEL_MAP_A_TO_A_SIZE = 0xcb9;
  280 + public static final int GL_UNPACK_SWAP_BYTES = 0xcf0;
  281 + public static final int GL_UNPACK_LSB_FIRST = 0xcf1;
  282 + public static final int GL_UNPACK_ROW_LENGTH = 0xcf2;
  283 + public static final int GL_UNPACK_SKIP_ROWS = 0xcf3;
  284 + public static final int GL_UNPACK_SKIP_PIXELS = 0xcf4;
  285 + public static final int GL_UNPACK_ALIGNMENT = 0xcf5;
  286 + public static final int GL_PACK_SWAP_BYTES = 0xd00;
  287 + public static final int GL_PACK_LSB_FIRST = 0xd01;
  288 + public static final int GL_PACK_ROW_LENGTH = 0xd02;
  289 + public static final int GL_PACK_SKIP_ROWS = 0xd03;
  290 + public static final int GL_PACK_SKIP_PIXELS = 0xd04;
  291 + public static final int GL_PACK_ALIGNMENT = 0xd05;
  292 + public static final int GL_MAP_COLOR = 0xd10;
  293 + public static final int GL_MAP_STENCIL = 0xd11;
  294 + public static final int GL_INDEX_SHIFT = 0xd12;
  295 + public static final int GL_INDEX_OFFSET = 0xd13;
  296 + public static final int GL_RED_SCALE = 0xd14;
  297 + public static final int GL_RED_BIAS = 0xd15;
  298 + public static final int GL_ZOOM_X = 0xd16;
  299 + public static final int GL_ZOOM_Y = 0xd17;
  300 + public static final int GL_GREEN_SCALE = 0xd18;
  301 + public static final int GL_GREEN_BIAS = 0xd19;
  302 + public static final int GL_BLUE_SCALE = 0xd1a;
  303 + public static final int GL_BLUE_BIAS = 0xd1b;
  304 + public static final int GL_ALPHA_SCALE = 0xd1c;
  305 + public static final int GL_ALPHA_BIAS = 0xd1d;
  306 + public static final int GL_DEPTH_SCALE = 0xd1e;
  307 + public static final int GL_DEPTH_BIAS = 0xd1f;
  308 + public static final int GL_MAX_EVAL_ORDER = 0xd30;
  309 + public static final int GL_MAX_LIGHTS = 0xd31;
  310 + public static final int GL_MAX_CLIP_PLANES = 0xd32;
  311 + public static final int GL_MAX_TEXTURE_SIZE = 0xd33;
  312 + public static final int GL_MAX_PIXEL_MAP_TABLE = 0xd34;
  313 + public static final int GL_MAX_ATTRIB_STACK_DEPTH = 0xd35;
  314 + public static final int GL_MAX_MODELVIEW_STACK_DEPTH = 0xd36;
  315 + public static final int GL_MAX_NAME_STACK_DEPTH = 0xd37;
  316 + public static final int GL_MAX_PROJECTION_STACK_DEPTH = 0xd38;
  317 + public static final int GL_MAX_TEXTURE_STACK_DEPTH = 0xd39;
  318 + public static final int GL_MAX_VIEWPORT_DIMS = 0xd3a;
  319 + public static final int GL_MAX_CLIENT_ATTRIB_STACK_DEPTH = 0xd3b;
  320 + public static final int GL_SUBPIXEL_BITS = 0xd50;
  321 + public static final int GL_INDEX_BITS = 0xd51;
  322 + public static final int GL_RED_BITS = 0xd52;
  323 + public static final int GL_GREEN_BITS = 0xd53;
  324 + public static final int GL_BLUE_BITS = 0xd54;
  325 + public static final int GL_ALPHA_BITS = 0xd55;
  326 + public static final int GL_DEPTH_BITS = 0xd56;
  327 + public static final int GL_STENCIL_BITS = 0xd57;
  328 + public static final int GL_ACCUM_RED_BITS = 0xd58;
  329 + public static final int GL_ACCUM_GREEN_BITS = 0xd59;
  330 + public static final int GL_ACCUM_BLUE_BITS = 0xd5a;
  331 + public static final int GL_ACCUM_ALPHA_BITS = 0xd5b;
  332 + public static final int GL_NAME_STACK_DEPTH = 0xd70;
  333 + public static final int GL_AUTO_NORMAL = 0xd80;
  334 + public static final int GL_MAP1_COLOR_4 = 0xd90;
  335 + public static final int GL_MAP1_INDEX = 0xd91;
  336 + public static final int GL_MAP1_NORMAL = 0xd92;
  337 + public static final int GL_MAP1_TEXTURE_COORD_1 = 0xd93;
  338 + public static final int GL_MAP1_TEXTURE_COORD_2 = 0xd94;
  339 + public static final int GL_MAP1_TEXTURE_COORD_3 = 0xd95;
  340 + public static final int GL_MAP1_TEXTURE_COORD_4 = 0xd96;
  341 + public static final int GL_MAP1_VERTEX_3 = 0xd97;
  342 + public static final int GL_MAP1_VERTEX_4 = 0xd98;
  343 + public static final int GL_MAP2_COLOR_4 = 0xdb0;
  344 + public static final int GL_MAP2_INDEX = 0xdb1;
  345 + public static final int GL_MAP2_NORMAL = 0xdb2;
  346 + public static final int GL_MAP2_TEXTURE_COORD_1 = 0xdb3;
  347 + public static final int GL_MAP2_TEXTURE_COORD_2 = 0xdb4;
  348 + public static final int GL_MAP2_TEXTURE_COORD_3 = 0xdb5;
  349 + public static final int GL_MAP2_TEXTURE_COORD_4 = 0xdb6;
  350 + public static final int GL_MAP2_VERTEX_3 = 0xdb7;
  351 + public static final int GL_MAP2_VERTEX_4 = 0xdb8;
  352 + public static final int GL_MAP1_GRID_DOMAIN = 0xdd0;
  353 + public static final int GL_MAP1_GRID_SEGMENTS = 0xdd1;
  354 + public static final int GL_MAP2_GRID_DOMAIN = 0xdd2;
  355 + public static final int GL_MAP2_GRID_SEGMENTS = 0xdd3;
  356 + public static final int GL_TEXTURE_1D = 0xde0;
  357 + public static final int GL_TEXTURE_2D = 0xde1;
  358 + public static final int GL_FEEDBACK_BUFFER_POINTER = 0xdf0;
  359 + public static final int GL_FEEDBACK_BUFFER_SIZE = 0xdf1;
  360 + public static final int GL_FEEDBACK_BUFFER_TYPE = 0xdf2;
  361 + public static final int GL_SELECTION_BUFFER_POINTER = 0xdf3;
  362 + public static final int GL_SELECTION_BUFFER_SIZE = 0xdf4;
  363 + public static final int GL_TEXTURE_WIDTH = 0x1000;
  364 + public static final int GL_TEXTURE_HEIGHT = 0x1001;
  365 + public static final int GL_TEXTURE_INTERNAL_FORMAT = 0x1003;
  366 + public static final int GL_TEXTURE_BORDER_COLOR = 0x1004;
  367 + public static final int GL_TEXTURE_BORDER = 0x1005;
  368 + public static final int GL_DONT_CARE = 0x1100;
  369 + public static final int GL_FASTEST = 0x1101;
  370 + public static final int GL_NICEST = 0x1102;
  371 + public static final int GL_LIGHT0 = 0x4000;
  372 + public static final int GL_LIGHT1 = 0x4001;
  373 + public static final int GL_LIGHT2 = 0x4002;
  374 + public static final int GL_LIGHT3 = 0x4003;
  375 + public static final int GL_LIGHT4 = 0x4004;
  376 + public static final int GL_LIGHT5 = 0x4005;
  377 + public static final int GL_LIGHT6 = 0x4006;
  378 + public static final int GL_LIGHT7 = 0x4007;
  379 + public static final int GL_AMBIENT = 0x1200;
  380 + public static final int GL_DIFFUSE = 0x1201;
  381 + public static final int GL_SPECULAR = 0x1202;
  382 + public static final int GL_POSITION = 0x1203;
  383 + public static final int GL_SPOT_DIRECTION = 0x1204;
  384 + public static final int GL_SPOT_EXPONENT = 0x1205;
  385 + public static final int GL_SPOT_CUTOFF = 0x1206;
  386 + public static final int GL_CONSTANT_ATTENUATION = 0x1207;
  387 + public static final int GL_LINEAR_ATTENUATION = 0x1208;
  388 + public static final int GL_QUADRATIC_ATTENUATION = 0x1209;
  389 + public static final int GL_COMPILE = 0x1300;
  390 + public static final int GL_COMPILE_AND_EXECUTE = 0x1301;
  391 + public static final int GL_CLEAR = 0x1500;
  392 + public static final int GL_AND = 0x1501;
  393 + public static final int GL_AND_REVERSE = 0x1502;
  394 + public static final int GL_COPY = 0x1503;
  395 + public static final int GL_AND_INVERTED = 0x1504;
  396 + public static final int GL_NOOP = 0x1505;
  397 + public static final int GL_XOR = 0x1506;
  398 + public static final int GL_OR = 0x1507;
  399 + public static final int GL_NOR = 0x1508;
  400 + public static final int GL_EQUIV = 0x1509;
  401 + public static final int GL_INVERT = 0x150a;
  402 + public static final int GL_OR_REVERSE = 0x150b;
  403 + public static final int GL_COPY_INVERTED = 0x150c;
  404 + public static final int GL_OR_INVERTED = 0x150d;
  405 + public static final int GL_NAND = 0x150e;
  406 + public static final int GL_SET = 0x150f;
  407 + public static final int GL_EMISSION = 0x1600;
  408 + public static final int GL_SHININESS = 0x1601;
  409 + public static final int GL_AMBIENT_AND_DIFFUSE = 0x1602;
  410 + public static final int GL_COLOR_INDEXES = 0x1603;
  411 + public static final int GL_MODELVIEW = 0x1700;
  412 + public static final int GL_PROJECTION = 0x1701;
  413 + public static final int GL_TEXTURE = 0x1702;
  414 + public static final int GL_COLOR = 0x1800;
  415 + public static final int GL_DEPTH = 0x1801;
  416 + public static final int GL_STENCIL = 0x1802;
  417 + public static final int GL_COLOR_INDEX = 0x1900;
  418 + public static final int GL_STENCIL_INDEX = 0x1901;
  419 + public static final int GL_DEPTH_COMPONENT = 0x1902;
  420 + public static final int GL_RED = 0x1903;
  421 + public static final int GL_GREEN = 0x1904;
  422 + public static final int GL_BLUE = 0x1905;
  423 + public static final int GL_ALPHA = 0x1906;
  424 + public static final int GL_RGB = 0x1907;
  425 + public static final int GL_RGBA = 0x1908;
  426 + public static final int GL_LUMINANCE = 0x1909;
  427 + public static final int GL_LUMINANCE_ALPHA = 0x190a;
  428 + public static final int GL_BITMAP = 0x1a00;
  429 + public static final int GL_POINT = 0x1b00;
  430 + public static final int GL_LINE = 0x1b01;
  431 + public static final int GL_FILL = 0x1b02;
  432 + public static final int GL_RENDER = 0x1c00;
  433 + public static final int GL_FEEDBACK = 0x1c01;
  434 + public static final int GL_SELECT = 0x1c02;
  435 + public static final int GL_FLAT = 0x1d00;
  436 + public static final int GL_SMOOTH = 0x1d01;
  437 + public static final int GL_KEEP = 0x1e00;
  438 + public static final int GL_REPLACE = 0x1e01;
  439 + public static final int GL_INCR = 0x1e02;
  440 + public static final int GL_DECR = 0x1e03;
  441 + public static final int GL_VENDOR = 0x1f00;
  442 + public static final int GL_RENDERER = 0x1f01;
  443 + public static final int GL_VERSION = 0x1f02;
  444 + public static final int GL_EXTENSIONS = 0x1f03;
  445 + public static final int GL_S = 0x2000;
  446 + public static final int GL_T = 0x2001;
  447 + public static final int GL_R = 0x2002;
  448 + public static final int GL_Q = 0x2003;
  449 + public static final int GL_MODULATE = 0x2100;
  450 + public static final int GL_DECAL = 0x2101;
  451 + public static final int GL_TEXTURE_ENV_MODE = 0x2200;
  452 + public static final int GL_TEXTURE_ENV_COLOR = 0x2201;
  453 + public static final int GL_TEXTURE_ENV = 0x2300;
  454 + public static final int GL_EYE_LINEAR = 0x2400;
  455 + public static final int GL_OBJECT_LINEAR = 0x2401;
  456 + public static final int GL_SPHERE_MAP = 0x2402;
  457 + public static final int GL_TEXTURE_GEN_MODE = 0x2500;
  458 + public static final int GL_OBJECT_PLANE = 0x2501;
  459 + public static final int GL_EYE_PLANE = 0x2502;
  460 + public static final int GL_NEAREST = 0x2600;
  461 + public static final int GL_LINEAR = 0x2601;
  462 + public static final int GL_NEAREST_MIPMAP_NEAREST = 0x2700;
  463 + public static final int GL_LINEAR_MIPMAP_NEAREST = 0x2701;
  464 + public static final int GL_NEAREST_MIPMAP_LINEAR = 0x2702;
  465 + public static final int GL_LINEAR_MIPMAP_LINEAR = 0x2703;
  466 + public static final int GL_TEXTURE_MAG_FILTER = 0x2800;
  467 + public static final int GL_TEXTURE_MIN_FILTER = 0x2801;
  468 + public static final int GL_TEXTURE_WRAP_S = 0x2802;
  469 + public static final int GL_TEXTURE_WRAP_T = 0x2803;
  470 + public static final int GL_CLAMP = 0x2900;
  471 + public static final int GL_REPEAT = 0x2901;
  472 + public static final int GL_CLIENT_PIXEL_STORE_BIT = 0x1;
  473 + public static final int GL_CLIENT_VERTEX_ARRAY_BIT = 0x2;
  474 + public static final int GL_ALL_CLIENT_ATTRIB_BITS = 0xffffffff;
  475 + public static final int GL_POLYGON_OFFSET_FACTOR = 0x8038;
  476 + public static final int GL_POLYGON_OFFSET_UNITS = 0x2a00;
  477 + public static final int GL_POLYGON_OFFSET_POINT = 0x2a01;
  478 + public static final int GL_POLYGON_OFFSET_LINE = 0x2a02;
  479 + public static final int GL_POLYGON_OFFSET_FILL = 0x8037;
  480 + public static final int GL_ALPHA4 = 0x803b;
  481 + public static final int GL_ALPHA8 = 0x803c;
  482 + public static final int GL_ALPHA12 = 0x803d;
  483 + public static final int GL_ALPHA16 = 0x803e;
  484 + public static final int GL_LUMINANCE4 = 0x803f;
  485 + public static final int GL_LUMINANCE8 = 0x8040;
  486 + public static final int GL_LUMINANCE12 = 0x8041;
  487 + public static final int GL_LUMINANCE16 = 0x8042;
  488 + public static final int GL_LUMINANCE4_ALPHA4 = 0x8043;
  489 + public static final int GL_LUMINANCE6_ALPHA2 = 0x8044;
  490 + public static final int GL_LUMINANCE8_ALPHA8 = 0x8045;
  491 + public static final int GL_LUMINANCE12_ALPHA4 = 0x8046;
  492 + public static final int GL_LUMINANCE12_ALPHA12 = 0x8047;
  493 + public static final int GL_LUMINANCE16_ALPHA16 = 0x8048;
  494 + public static final int GL_INTENSITY = 0x8049;
  495 + public static final int GL_INTENSITY4 = 0x804a;
  496 + public static final int GL_INTENSITY8 = 0x804b;
  497 + public static final int GL_INTENSITY12 = 0x804c;
  498 + public static final int GL_INTENSITY16 = 0x804d;
  499 + public static final int GL_R3_G3_B2 = 0x2a10;
  500 + public static final int GL_RGB4 = 0x804f;
  501 + public static final int GL_RGB5 = 0x8050;
  502 + public static final int GL_RGB8 = 0x8051;
  503 + public static final int GL_RGB10 = 0x8052;
  504 + public static final int GL_RGB12 = 0x8053;
  505 + public static final int GL_RGB16 = 0x8054;
  506 + public static final int GL_RGBA2 = 0x8055;
  507 + public static final int GL_RGBA4 = 0x8056;
  508 + public static final int GL_RGB5_A1 = 0x8057;
  509 + public static final int GL_RGBA8 = 0x8058;
  510 + public static final int GL_RGB10_A2 = 0x8059;
  511 + public static final int GL_RGBA12 = 0x805a;
  512 + public static final int GL_RGBA16 = 0x805b;
  513 + public static final int GL_TEXTURE_RED_SIZE = 0x805c;
  514 + public static final int GL_TEXTURE_GREEN_SIZE = 0x805d;
  515 + public static final int GL_TEXTURE_BLUE_SIZE = 0x805e;
  516 + public static final int GL_TEXTURE_ALPHA_SIZE = 0x805f;
  517 + public static final int GL_TEXTURE_LUMINANCE_SIZE = 0x8060;
  518 + public static final int GL_TEXTURE_INTENSITY_SIZE = 0x8061;
  519 + public static final int GL_PROXY_TEXTURE_1D = 0x8063;
  520 + public static final int GL_PROXY_TEXTURE_2D = 0x8064;
  521 + public static final int GL_TEXTURE_PRIORITY = 0x8066;
  522 + public static final int GL_TEXTURE_RESIDENT = 0x8067;
  523 + public static final int GL_TEXTURE_BINDING_1D = 0x8068;
  524 + public static final int GL_TEXTURE_BINDING_2D = 0x8069;
  525 + public static final int GL_VERTEX_ARRAY = 0x8074;
  526 + public static final int GL_NORMAL_ARRAY = 0x8075;
  527 + public static final int GL_COLOR_ARRAY = 0x8076;
  528 + public static final int GL_INDEX_ARRAY = 0x8077;
  529 + public static final int GL_TEXTURE_COORD_ARRAY = 0x8078;
  530 + public static final int GL_EDGE_FLAG_ARRAY = 0x8079;
  531 + public static final int GL_VERTEX_ARRAY_SIZE = 0x807a;
  532 + public static final int GL_VERTEX_ARRAY_TYPE = 0x807b;
  533 + public static final int GL_VERTEX_ARRAY_STRIDE = 0x807c;
  534 + public static final int GL_NORMAL_ARRAY_TYPE = 0x807e;
  535 + public static final int GL_NORMAL_ARRAY_STRIDE = 0x807f;
  536 + public static final int GL_COLOR_ARRAY_SIZE = 0x8081;
  537 + public static final int GL_COLOR_ARRAY_TYPE = 0x8082;
  538 + public static final int GL_COLOR_ARRAY_STRIDE = 0x8083;
  539 + public static final int GL_INDEX_ARRAY_TYPE = 0x8085;
  540 + public static final int GL_INDEX_ARRAY_STRIDE = 0x8086;
  541 + public static final int GL_TEXTURE_COORD_ARRAY_SIZE = 0x8088;
  542 + public static final int GL_TEXTURE_COORD_ARRAY_TYPE = 0x8089;
  543 + public static final int GL_TEXTURE_COORD_ARRAY_STRIDE = 0x808a;
  544 + public static final int GL_EDGE_FLAG_ARRAY_STRIDE = 0x808c;
  545 + public static final int GL_VERTEX_ARRAY_POINTER = 0x808e;
  546 + public static final int GL_NORMAL_ARRAY_POINTER = 0x808f;
  547 + public static final int GL_COLOR_ARRAY_POINTER = 0x8090;
  548 + public static final int GL_INDEX_ARRAY_POINTER = 0x8091;
  549 + public static final int GL_TEXTURE_COORD_ARRAY_POINTER = 0x8092;
  550 + public static final int GL_EDGE_FLAG_ARRAY_POINTER = 0x8093;
  551 + public static final int GL_V2F = 0x2a20;
  552 + public static final int GL_V3F = 0x2a21;
  553 + public static final int GL_C4UB_V2F = 0x2a22;
  554 + public static final int GL_C4UB_V3F = 0x2a23;
  555 + public static final int GL_C3F_V3F = 0x2a24;
  556 + public static final int GL_N3F_V3F = 0x2a25;
  557 + public static final int GL_C4F_N3F_V3F = 0x2a26;
  558 + public static final int GL_T2F_V3F = 0x2a27;
  559 + public static final int GL_T4F_V4F = 0x2a28;
  560 + public static final int GL_T2F_C4UB_V3F = 0x2a29;
  561 + public static final int GL_T2F_C3F_V3F = 0x2a2a;
  562 + public static final int GL_T2F_N3F_V3F = 0x2a2b;
  563 + public static final int GL_T2F_C4F_N3F_V3F = 0x2a2c;
  564 + public static final int GL_T4F_C4F_N3F_V4F = 0x2a2d;
  565 + public static final int GL_LOGIC_OP = 0xbf1;
  566 + public static final int GL_TEXTURE_COMPONENTS = 0x1003;
  567 +
  568 + // GL12
  569 + public static final int GL_TEXTURE_BINDING_3D = 0x806a;
  570 + public static final int GL_PACK_SKIP_IMAGES = 0x806b;
  571 + public static final int GL_PACK_IMAGE_HEIGHT = 0x806c;
  572 + public static final int GL_UNPACK_SKIP_IMAGES = 0x806d;
  573 + public static final int GL_UNPACK_IMAGE_HEIGHT = 0x806e;
  574 + public static final int GL_TEXTURE_3D = 0x806f;
  575 + public static final int GL_PROXY_TEXTURE_3D = 0x8070;
  576 + public static final int GL_TEXTURE_DEPTH = 0x8071;
  577 + public static final int GL_TEXTURE_WRAP_R = 0x8072;
  578 + public static final int GL_MAX_3D_TEXTURE_SIZE = 0x8073;
  579 + public static final int GL_BGR = 0x80e0;
  580 + public static final int GL_BGRA = 0x80e1;
  581 + public static final int GL_UNSIGNED_BYTE_3_3_2 = 0x8032;
  582 + public static final int GL_UNSIGNED_BYTE_2_3_3_REV = 0x8362;
  583 + public static final int GL_UNSIGNED_SHORT_5_6_5 = 0x8363;
  584 + public static final int GL_UNSIGNED_SHORT_5_6_5_REV = 0x8364;
  585 + public static final int GL_UNSIGNED_SHORT_4_4_4_4 = 0x8033;
  586 + public static final int GL_UNSIGNED_SHORT_4_4_4_4_REV = 0x8365;
  587 + public static final int GL_UNSIGNED_SHORT_5_5_5_1 = 0x8034;
  588 + public static final int GL_UNSIGNED_SHORT_1_5_5_5_REV = 0x8366;
  589 + public static final int GL_UNSIGNED_INT_8_8_8_8 = 0x8035;
  590 + public static final int GL_UNSIGNED_INT_8_8_8_8_REV = 0x8367;
  591 + public static final int GL_UNSIGNED_INT_10_10_10_2 = 0x8036;
  592 + public static final int GL_UNSIGNED_INT_2_10_10_10_REV = 0x8368;
  593 + public static final int GL_RESCALE_NORMAL = 0x803a;
  594 + public static final int GL_LIGHT_MODEL_COLOR_CONTROL = 0x81f8;
  595 + public static final int GL_SINGLE_COLOR = 0x81f9;
  596 + public static final int GL_SEPARATE_SPECULAR_COLOR = 0x81fa;
  597 + public static final int GL_CLAMP_TO_EDGE = 0x812f;
  598 + public static final int GL_TEXTURE_MIN_LOD = 0x813a;
  599 + public static final int GL_TEXTURE_MAX_LOD = 0x813b;
  600 + public static final int GL_TEXTURE_BASE_LEVEL = 0x813c;
  601 + public static final int GL_TEXTURE_MAX_LEVEL = 0x813d;
  602 + public static final int GL_MAX_ELEMENTS_VERTICES = 0x80e8;
  603 + public static final int GL_MAX_ELEMENTS_INDICES = 0x80e9;
  604 + public static final int GL_ALIASED_POINT_SIZE_RANGE = 0x846d;
  605 + public static final int GL_ALIASED_LINE_WIDTH_RANGE = 0x846e;
  606 + public static final int GL_SMOOTH_POINT_SIZE_RANGE = 0xb12;
  607 + public static final int GL_SMOOTH_POINT_SIZE_GRANULARITY = 0xb13;
  608 + public static final int GL_SMOOTH_LINE_WIDTH_RANGE = 0xb22;
  609 + public static final int GL_SMOOTH_LINE_WIDTH_GRANULARITY = 0xb23;
  610 +
  611 + // GL13
  612 + public static final int GL_TEXTURE0 = 0x84c0;
  613 + public static final int GL_TEXTURE1 = 0x84c1;
  614 + public static final int GL_TEXTURE2 = 0x84c2;
  615 + public static final int GL_TEXTURE3 = 0x84c3;
  616 + public static final int GL_TEXTURE4 = 0x84c4;
  617 + public static final int GL_TEXTURE5 = 0x84c5;
  618 + public static final int GL_TEXTURE6 = 0x84c6;
  619 + public static final int GL_TEXTURE7 = 0x84c7;
  620 + public static final int GL_TEXTURE8 = 0x84c8;
  621 + public static final int GL_TEXTURE9 = 0x84c9;
  622 + public static final int GL_TEXTURE10 = 0x84ca;
  623 + public static final int GL_TEXTURE11 = 0x84cb;
  624 + public static final int GL_TEXTURE12 = 0x84cc;
  625 + public static final int GL_TEXTURE13 = 0x84cd;
  626 + public static final int GL_TEXTURE14 = 0x84ce;
  627 + public static final int GL_TEXTURE15 = 0x84cf;
  628 + public static final int GL_TEXTURE16 = 0x84d0;
  629 + public static final int GL_TEXTURE17 = 0x84d1;
  630 + public static final int GL_TEXTURE18 = 0x84d2;
  631 + public static final int GL_TEXTURE19 = 0x84d3;
  632 + public static final int GL_TEXTURE20 = 0x84d4;
  633 + public static final int GL_TEXTURE21 = 0x84d5;
  634 + public static final int GL_TEXTURE22 = 0x84d6;
  635 + public static final int GL_TEXTURE23 = 0x84d7;
  636 + public static final int GL_TEXTURE24 = 0x84d8;
  637 + public static final int GL_TEXTURE25 = 0x84d9;
  638 + public static final int GL_TEXTURE26 = 0x84da;
  639 + public static final int GL_TEXTURE27 = 0x84db;
  640 + public static final int GL_TEXTURE28 = 0x84dc;
  641 + public static final int GL_TEXTURE29 = 0x84dd;
  642 + public static final int GL_TEXTURE30 = 0x84de;
  643 + public static final int GL_TEXTURE31 = 0x84df;
  644 + public static final int GL_ACTIVE_TEXTURE = 0x84e0;
  645 + public static final int GL_CLIENT_ACTIVE_TEXTURE = 0x84e1;
  646 + public static final int GL_MAX_TEXTURE_UNITS = 0x84e2;
  647 + public static final int GL_NORMAL_MAP = 0x8511;
  648 + public static final int GL_REFLECTION_MAP = 0x8512;
  649 + public static final int GL_TEXTURE_CUBE_MAP = 0x8513;
  650 + public static final int GL_TEXTURE_BINDING_CUBE_MAP = 0x8514;
  651 + public static final int GL_TEXTURE_CUBE_MAP_POSITIVE_X = 0x8515;
  652 + public static final int GL_TEXTURE_CUBE_MAP_NEGATIVE_X = 0x8516;
  653 + public static final int GL_TEXTURE_CUBE_MAP_POSITIVE_Y = 0x8517;
  654 + public static final int GL_TEXTURE_CUBE_MAP_NEGATIVE_Y = 0x8518;
  655 + public static final int GL_TEXTURE_CUBE_MAP_POSITIVE_Z = 0x8519;
  656 + public static final int GL_TEXTURE_CUBE_MAP_NEGATIVE_Z = 0x851a;
  657 + public static final int GL_PROXY_TEXTURE_CUBE_MAP = 0x851b;
  658 + public static final int GL_MAX_CUBE_MAP_TEXTURE_SIZE = 0x851c;
  659 + public static final int GL_COMPRESSED_ALPHA = 0x84e9;
  660 + public static final int GL_COMPRESSED_LUMINANCE = 0x84ea;
  661 + public static final int GL_COMPRESSED_LUMINANCE_ALPHA = 0x84eb;
  662 + public static final int GL_COMPRESSED_INTENSITY = 0x84ec;
  663 + public static final int GL_COMPRESSED_RGB = 0x84ed;
  664 + public static final int GL_COMPRESSED_RGBA = 0x84ee;
  665 + public static final int GL_TEXTURE_COMPRESSION_HINT = 0x84ef;
  666 + public static final int GL_TEXTURE_COMPRESSED_IMAGE_SIZE = 0x86a0;
  667 + public static final int GL_TEXTURE_COMPRESSED = 0x86a1;
  668 + public static final int GL_NUM_COMPRESSED_TEXTURE_FORMATS = 0x86a2;
  669 + public static final int GL_COMPRESSED_TEXTURE_FORMATS = 0x86a3;
  670 + public static final int GL_MULTISAMPLE = 0x809d;
  671 + public static final int GL_SAMPLE_ALPHA_TO_COVERAGE = 0x809e;
  672 + public static final int GL_SAMPLE_ALPHA_TO_ONE = 0x809f;
  673 + public static final int GL_SAMPLE_COVERAGE = 0x80a0;
  674 + public static final int GL_SAMPLE_BUFFERS = 0x80a8;
  675 + public static final int GL_SAMPLES = 0x80a9;
  676 + public static final int GL_SAMPLE_COVERAGE_VALUE = 0x80aa;
  677 + public static final int GL_SAMPLE_COVERAGE_INVERT = 0x80ab;
  678 + public static final int GL_MULTISAMPLE_BIT = 0x20000000;
  679 + public static final int GL_TRANSPOSE_MODELVIEW_MATRIX = 0x84e3;
  680 + public static final int GL_TRANSPOSE_PROJECTION_MATRIX = 0x84e4;
  681 + public static final int GL_TRANSPOSE_TEXTURE_MATRIX = 0x84e5;
  682 + public static final int GL_TRANSPOSE_COLOR_MATRIX = 0x84e6;
  683 + public static final int GL_COMBINE = 0x8570;
  684 + public static final int GL_COMBINE_RGB = 0x8571;
  685 + public static final int GL_COMBINE_ALPHA = 0x8572;
  686 + public static final int GL_SOURCE0_RGB = 0x8580;
  687 + public static final int GL_SOURCE1_RGB = 0x8581;
  688 + public static final int GL_SOURCE2_RGB = 0x8582;
  689 + public static final int GL_SOURCE0_ALPHA = 0x8588;
  690 + public static final int GL_SOURCE1_ALPHA = 0x8589;
  691 + public static final int GL_SOURCE2_ALPHA = 0x858a;
  692 + public static final int GL_OPERAND0_RGB = 0x8590;
  693 + public static final int GL_OPERAND1_RGB = 0x8591;
  694 + public static final int GL_OPERAND2_RGB = 0x8592;
  695 + public static final int GL_OPERAND0_ALPHA = 0x8598;
  696 + public static final int GL_OPERAND1_ALPHA = 0x8599;
  697 + public static final int GL_OPERAND2_ALPHA = 0x859a;
  698 + public static final int GL_RGB_SCALE = 0x8573;
  699 + public static final int GL_ADD_SIGNED = 0x8574;
  700 + public static final int GL_INTERPOLATE = 0x8575;
  701 + public static final int GL_SUBTRACT = 0x84e7;
  702 + public static final int GL_CONSTANT = 0x8576;
  703 + public static final int GL_PRIMARY_COLOR = 0x8577;
  704 + public static final int GL_PREVIOUS = 0x8578;
  705 + public static final int GL_DOT3_RGB = 0x86ae;
  706 + public static final int GL_DOT3_RGBA = 0x86af;
  707 + public static final int GL_CLAMP_TO_BORDER = 0x812d;
  708 +
  709 + // GL14
  710 + public static final int GL_GENERATE_MIPMAP = 0x8191;
  711 + public static final int GL_GENERATE_MIPMAP_HINT = 0x8192;
  712 + public static final int GL_DEPTH_COMPONENT16 = 0x81a5;
  713 + public static final int GL_DEPTH_COMPONENT24 = 0x81a6;
  714 + public static final int GL_DEPTH_COMPONENT32 = 0x81a7;
  715 + public static final int GL_TEXTURE_DEPTH_SIZE = 0x884a;
  716 + public static final int GL_DEPTH_TEXTURE_MODE = 0x884b;
  717 + public static final int GL_TEXTURE_COMPARE_MODE = 0x884c;
  718 + public static final int GL_TEXTURE_COMPARE_FUNC = 0x884d;
  719 + public static final int GL_COMPARE_R_TO_TEXTURE = 0x884e;
  720 + public static final int GL_FOG_COORDINATE_SOURCE = 0x8450;
  721 + public static final int GL_FOG_COORDINATE = 0x8451;
  722 + public static final int GL_FRAGMENT_DEPTH = 0x8452;
  723 + public static final int GL_CURRENT_FOG_COORDINATE = 0x8453;
  724 + public static final int GL_FOG_COORDINATE_ARRAY_TYPE = 0x8454;
  725 + public static final int GL_FOG_COORDINATE_ARRAY_STRIDE = 0x8455;
  726 + public static final int GL_FOG_COORDINATE_ARRAY_POINTER = 0x8456;
  727 + public static final int GL_FOG_COORDINATE_ARRAY = 0x8457;
  728 + public static final int GL_POINT_SIZE_MIN = 0x8126;
  729 + public static final int GL_POINT_SIZE_MAX = 0x8127;
  730 + public static final int GL_POINT_FADE_THRESHOLD_SIZE = 0x8128;
  731 + public static final int GL_POINT_DISTANCE_ATTENUATION = 0x8129;
  732 + public static final int GL_COLOR_SUM = 0x8458;
  733 + public static final int GL_CURRENT_SECONDARY_COLOR = 0x8459;
  734 + public static final int GL_SECONDARY_COLOR_ARRAY_SIZE = 0x845a;
  735 + public static final int GL_SECONDARY_COLOR_ARRAY_TYPE = 0x845b;
  736 + public static final int GL_SECONDARY_COLOR_ARRAY_STRIDE = 0x845c;
  737 + public static final int GL_SECONDARY_COLOR_ARRAY_POINTER = 0x845d;
  738 + public static final int GL_SECONDARY_COLOR_ARRAY = 0x845e;
  739 + public static final int GL_BLEND_DST_RGB = 0x80c8;
  740 + public static final int GL_BLEND_SRC_RGB = 0x80c9;
  741 + public static final int GL_BLEND_DST_ALPHA = 0x80ca;
  742 + public static final int GL_BLEND_SRC_ALPHA = 0x80cb;
  743 + public static final int GL_INCR_WRAP = 0x8507;
  744 + public static final int GL_DECR_WRAP = 0x8508;
  745 + public static final int GL_TEXTURE_FILTER_CONTROL = 0x8500;
  746 + public static final int GL_TEXTURE_LOD_BIAS = 0x8501;
  747 + public static final int GL_MAX_TEXTURE_LOD_BIAS = 0x84fd;
  748 + public static final int GL_MIRRORED_REPEAT = 0x8370;
  749 + public static final int GL_BLEND_COLOR = 0x8005;
  750 + public static final int GL_BLEND_EQUATION = 0x8009;
  751 + public static final int GL_FUNC_ADD = 0x8006;
  752 + public static final int GL_FUNC_SUBTRACT = 0x800a;
  753 + public static final int GL_FUNC_REVERSE_SUBTRACT = 0x800b;
  754 + public static final int GL_MIN = 0x8007;
  755 + public static final int GL_MAX = 0x8008;
  756 +
  757 + // GL15
  758 + public static final int GL_ARRAY_BUFFER = 0x8892;
  759 + public static final int GL_ELEMENT_ARRAY_BUFFER = 0x8893;
  760 + public static final int GL_ARRAY_BUFFER_BINDING = 0x8894;
  761 + public static final int GL_ELEMENT_ARRAY_BUFFER_BINDING = 0x8895;
  762 + public static final int GL_VERTEX_ARRAY_BUFFER_BINDING = 0x8896;
  763 + public static final int GL_NORMAL_ARRAY_BUFFER_BINDING = 0x8897;
  764 + public static final int GL_COLOR_ARRAY_BUFFER_BINDING = 0x8898;
  765 + public static final int GL_INDEX_ARRAY_BUFFER_BINDING = 0x8899;
  766 + public static final int GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING = 0x889a;
  767 + public static final int GL_EDGE_FLAG_ARRAY_BUFFER_BINDING = 0x889b;
  768 + public static final int GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING = 0x889c;
  769 + public static final int GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING = 0x889d;
  770 + public static final int GL_WEIGHT_ARRAY_BUFFER_BINDING = 0x889e;
  771 + public static final int GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING = 0x889f;
  772 + public static final int GL_STREAM_DRAW = 0x88e0;
  773 + public static final int GL_STREAM_READ = 0x88e1;
  774 + public static final int GL_STREAM_COPY = 0x88e2;
  775 + public static final int GL_STATIC_DRAW = 0x88e4;
  776 + public static final int GL_STATIC_READ = 0x88e5;
  777 + public static final int GL_STATIC_COPY = 0x88e6;
  778 + public static final int GL_DYNAMIC_DRAW = 0x88e8;
  779 + public static final int GL_DYNAMIC_READ = 0x88e9;
  780 + public static final int GL_DYNAMIC_COPY = 0x88ea;
  781 + public static final int GL_READ_ONLY = 0x88b8;
  782 + public static final int GL_WRITE_ONLY = 0x88b9;
  783 + public static final int GL_READ_WRITE = 0x88ba;
  784 + public static final int GL_BUFFER_SIZE = 0x8764;
  785 + public static final int GL_BUFFER_USAGE = 0x8765;
  786 + public static final int GL_BUFFER_ACCESS = 0x88bb;
  787 + public static final int GL_BUFFER_MAPPED = 0x88bc;
  788 + public static final int GL_BUFFER_MAP_POINTER = 0x88bd;
  789 + public static final int FOG_COORD_SRC = 0x8450;
  790 + public static final int GL_FOG_COORD = 0x8451;
  791 + public static final int GL_CURRENT_FOG_COORD = 0x8453;
  792 + public static final int GL_FOG_COORD_ARRAY_TYPE = 0x8454;
  793 + public static final int GL_FOG_COORD_ARRAY_STRIDE = 0x8455;
  794 + public static final int GL_FOG_COORD_ARRAY_POINTER = 0x8456;
  795 + public static final int GL_FOG_COORD_ARRAY = 0x8457;
  796 + public static final int GL_FOG_COORD_ARRAY_BUFFER_BINDING = 0x889d;
  797 + public static final int GL_SRC0_RGB = 0x8580;
  798 + public static final int GL_SRC1_RGB = 0x8581;
  799 + public static final int GL_SRC2_RGB = 0x8582;
  800 + public static final int GL_SRC0_ALPHA = 0x8588;
  801 + public static final int GL_SRC1_ALPHA = 0x8589;
  802 + public static final int GL_SRC2_ALPHA = 0x858a;
  803 +
  804 + public static void glPushAttrib()
  805 + {
  806 + GlStateManager.pushAttrib();
  807 + }
  808 +
  809 + public static void glPopAttrib()
  810 + {
  811 + GlStateManager.popAttrib();
  812 + }
  813 +
  814 + public static void glDisableAlpha()
  815 + {
  816 + GlStateManager.disableAlpha();
  817 + }
  818 +
  819 + public static void glEnableAlpha()
  820 + {
  821 + GlStateManager.enableAlpha();
  822 + }
  823 +
  824 + public static void glAlphaFunc(int func, float ref)
  825 + {
  826 + GlStateManager.alphaFunc(func, ref);
  827 + }
  828 +
  829 + public static void glEnableLighting()
  830 + {
  831 + GlStateManager.enableLighting();
  832 + }
  833 +
  834 + public static void glDisableLighting()
  835 + {
  836 + GlStateManager.disableLighting();
  837 + }
  838 +
  839 + public static void glEnableLight(int light)
  840 + {
  841 + GlStateManager.enableLight(light); // TODO OBF MCPTEST enableBooleanStateAt - enableLight
  842 + }
  843 +
  844 + public static void glDisableLight(int light)
  845 + {
  846 + GlStateManager.disableLight(light); // TODO OBF MCPTEST disableBooleanStateAt - disableLight
  847 + }
  848 +
  849 + public static void glEnableColorMaterial()
  850 + {
  851 + GlStateManager.enableColorMaterial();
  852 + }
  853 +
  854 + public static void glDisableColorMaterial()
  855 + {
  856 + GlStateManager.disableColorMaterial();
  857 + }
  858 +
  859 + public static void glColorMaterial(int face, int mode)
  860 + {
  861 + GlStateManager.colorMaterial(face, mode);
  862 + }
  863 +
  864 + public static void glDisableDepth()
  865 + {
  866 + GlStateManager.disableDepth();
  867 + }
  868 +
  869 + public static void glEnableDepth()
  870 + {
  871 + GlStateManager.enableDepth();
  872 + }
  873 +
  874 + public static void glDepthFunc(int func)
  875 + {
  876 + GlStateManager.depthFunc(func);
  877 + }
  878 +
  879 + public static void glDepthMask(boolean flag)
  880 + {
  881 + GlStateManager.depthMask(flag);
  882 + }
  883 +
  884 + public static void glDisableBlend()
  885 + {
  886 + GlStateManager.disableBlend();
  887 + }
  888 +
  889 + public static void glEnableBlend()
  890 + {
  891 + GlStateManager.enableBlend();
  892 + }
  893 +
  894 + public static void glBlendFunc(int sfactor, int dfactor)
  895 + {
  896 + GlStateManager.blendFunc(sfactor, dfactor);
  897 + }
  898 +
  899 + public static void glBlendFuncSeparate(int sfactorRGB, int dfactorRGB, int sfactorAlpha, int dfactorAlpha)
  900 + {
  901 + GlStateManager.tryBlendFuncSeparate(sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha);
  902 + }
  903 +
  904 + public static void glEnableFog()
  905 + {
  906 + GlStateManager.enableFog();
  907 + }
  908 +
  909 + public static void glDisableFog()
  910 + {
  911 + GlStateManager.disableFog();
  912 + }
  913 +
  914 + public static void glSetFogMode(int mode)
  915 + {
  916 + GlStateManager.setFog(mode);
  917 + }
  918 +
  919 + public static void glSetFogDensity(float density)
  920 + {
  921 + GlStateManager.setFogDensity(density);
  922 + }
  923 +
  924 + public static void glSetFogStart(float start)
  925 + {
  926 + GlStateManager.setFogStart(start);
  927 + }
  928 +
  929 + public static void glSetFogEnd(float end)
  930 + {
  931 + GlStateManager.setFogEnd(end);
  932 + }
  933 +
  934 + public static void glEnableCulling()
  935 + {
  936 + GlStateManager.enableCull();
  937 + }
  938 +
  939 + public static void glDisableCulling()
  940 + {
  941 + GlStateManager.disableCull();
  942 + }
  943 +
  944 + public static void glCullFace(int mode)
  945 + {
  946 + GlStateManager.cullFace(mode);
  947 + }
  948 +
  949 + public static void glEnablePolygonOffset()
  950 + {
  951 + GlStateManager.enablePolygonOffset();
  952 + }
  953 +
  954 + public static void glDisablePolygonOffset()
  955 + {
  956 + GlStateManager.disablePolygonOffset();
  957 + }
  958 +
  959 + public static void glPolygonOffset(float factor, float units)
  960 + {
  961 + GlStateManager.doPolygonOffset(factor, units);
  962 + }
  963 +
  964 + public static void glEnableColorLogic()
  965 + {
  966 + GlStateManager.enableColorLogic();
  967 + }
  968 +
  969 + public static void glDisableColorLogic()
  970 + {
  971 + GlStateManager.disableColorLogic();
  972 + }
  973 +
  974 + public static void glColorLogicOp(int opcode)
  975 + {
  976 + GlStateManager.colorLogicOp(opcode);
  977 + }
  978 +
  979 + public static void glEnableTexGenCoord(TexGen tex)
  980 + {
  981 + GlStateManager.enableTexGenCoord(tex);
  982 + }
  983 +
  984 + public static void glDisableTexGenCoord(TexGen tex)
  985 + {
  986 + GlStateManager.disableTexGenCoord(tex);
  987 + }
  988 +
  989 + public static void glTexGeni(TexGen tex, int mode)
  990 + {
  991 + GlStateManager.texGen(tex, mode);
  992 + }
  993 +
  994 + public static void glTexGen(TexGen tex, int pname, FloatBuffer params)
  995 + {
  996 + GlStateManager.func_179105_a(tex, pname, params);
  997 + }
  998 +
  999 + public static void glSetActiveTextureUnit(int texture)
  1000 + {
  1001 + GlStateManager.setActiveTexture(texture);
  1002 + }
  1003 +
  1004 + public static void glEnableTexture2D()
  1005 + {
  1006 + GlStateManager.enableTexture2D(); // TODO OBF MCPTEST func_179098_w - enableTexture2D
  1007 + }
  1008 +
  1009 + public static void glDisableTexture2D()
  1010 + {
  1011 + GlStateManager.disableTexture2D(); // TODO OBF MCPTEST func_179090_x - disableTexture2D
  1012 + }
  1013 +
  1014 + public static int glGenTextures()
  1015 + {
  1016 + return GlStateManager.generateTexture(); // TODO OBF MCPTEST func_179146_y - generateTexture
  1017 + }
  1018 +
  1019 + public static void glDeleteTexture(int textureName)
  1020 + {
  1021 + GlStateManager.deleteTexture(textureName); // TODO OBF MCPTEST func_179150_h - deleteTexture
  1022 + }
  1023 +
  1024 + public static void glBindTexture(int textureName)
  1025 + {
  1026 + GlStateManager.bindTexture(textureName); // TODO OBF MCPTEST func_179144_i - bindTexture
  1027 + }
  1028 +
  1029 + public static void glEnableNormalize()
  1030 + {
  1031 + GlStateManager.enableNormalize();
  1032 + }
  1033 +
  1034 + public static void glDisableNormalize()
  1035 + {
  1036 + GlStateManager.disableNormalize();
  1037 + }
  1038 +
  1039 + public static void glShadeModel(int mode)
  1040 + {
  1041 + GlStateManager.shadeModel(mode);
  1042 + }
  1043 +
  1044 + public static void glEnableRescaleNormal()
  1045 + {
  1046 + GlStateManager.enableRescaleNormal();
  1047 + }
  1048 +
  1049 + public static void glDisableRescaleNormal()
  1050 + {
  1051 + GlStateManager.disableRescaleNormal();
  1052 + }
  1053 +
  1054 + public static void glViewport(int x, int y, int width, int height)
  1055 + {
  1056 + GlStateManager.viewport(x, y, width, height);
  1057 + }
  1058 +
  1059 + public static void glColorMask(boolean red, boolean green, boolean blue, boolean alpha)
  1060 + {
  1061 + GlStateManager.colorMask(red, green, blue, alpha);
  1062 + }
  1063 +
  1064 + public static void glClearDepth(double depth)
  1065 + {
  1066 + GlStateManager.clearDepth(depth);
  1067 + }
  1068 +
  1069 + public static void glClearColor(float red, float green, float blue, float alpha)
  1070 + {
  1071 + GlStateManager.clearColor(red, green, blue, alpha);
  1072 + }
  1073 +
  1074 + public static void glClear(int mask)
  1075 + {
  1076 + GlStateManager.clear(mask);
  1077 + }
  1078 +
  1079 + public static void glMatrixMode(int mode)
  1080 + {
  1081 + GlStateManager.matrixMode(mode);
  1082 + }
  1083 +
  1084 + public static void glLoadIdentity()
  1085 + {
  1086 + GlStateManager.loadIdentity();
  1087 + }
  1088 +
  1089 + public static void glPushMatrix()
  1090 + {
  1091 + GlStateManager.pushMatrix();
  1092 + }
  1093 +
  1094 + public static void glPopMatrix()
  1095 + {
  1096 + GlStateManager.popMatrix();
  1097 + }
  1098 +
  1099 + public static void glGetFloat(int pname, FloatBuffer params)
  1100 + {
  1101 + GlStateManager.getFloat(pname, params);
  1102 + }
  1103 +
  1104 + public static void glOrtho(double left, double right, double bottom, double top, double zNear, double zFar)
  1105 + {
  1106 + GlStateManager.ortho(left, right, bottom, top, zNear, zFar);
  1107 + }
  1108 +
  1109 + public static void glRotatef(float angle, float x, float y, float z)
  1110 + {
  1111 + GlStateManager.rotate(angle, x, y, z);
  1112 + }
  1113 +
  1114 + public static void glScalef(float x, float y, float z)
  1115 + {
  1116 + GlStateManager.scale(x, y, z);
  1117 + }
  1118 +
  1119 + public static void glScaled(double x, double y, double z)
  1120 + {
  1121 + GlStateManager.scale(x, y, z);
  1122 + }
  1123 +
  1124 + public static void glTranslatef(float x, float y, float z)
  1125 + {
  1126 + GlStateManager.translate(x, y, z);
  1127 + }
  1128 +
  1129 + public static void glTranslated(double x, double y, double z)
  1130 + {
  1131 + GlStateManager.translate(x, y, z);
  1132 + }
  1133 +
  1134 + public static void glMultMatrix(FloatBuffer m)
  1135 + {
  1136 + GlStateManager.multMatrix(m);
  1137 + }
  1138 +
  1139 + public static void glColor4f(float red, float green, float blue, float alpha)
  1140 + {
  1141 + GlStateManager.color(red, green, blue, alpha);
  1142 + }
  1143 +
  1144 + public static void glColor3f(float red, float green, float blue)
  1145 + {
  1146 + GlStateManager.color(red, green, blue, 1.0F);
  1147 + }
  1148 +
  1149 + public static void glResetColor()
  1150 + {
  1151 + GlStateManager.func_179117_G();
  1152 + }
  1153 +
  1154 + public static void glCallList(int list)
  1155 + {
  1156 + GlStateManager.callList(list);
  1157 + }
  1158 +}
java/client/com/mumfrey/liteloader/client/util/PrivateFields.java
@@ -139,7 +139,7 @@ public class PrivateFields&lt;P, T&gt; @@ -139,7 +139,7 @@ public class PrivateFields&lt;P, T&gt;
139 } 139 }
140 140
141 public static final PrivateFields<RenderManager, Map> entityRenderMap = new PrivateFields<RenderManager, Map> (RenderManager.class, Obf.entityRenderMap); 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.netManager); 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); 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); 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); 145 public static final PrivateFields<ObjectIntIdentityMap, IdentityHashMap> identityMap = new PrivateFields<ObjectIntIdentityMap, IdentityHashMap> (ObjectIntIdentityMap.class, Obf.identityMap);
java/client/com/mumfrey/liteloader/client/util/render/Icon.java 0 โ†’ 100644
  1 +package com.mumfrey.liteloader.client.util.render;
  2 +
  3 +public interface Icon
  4 +{
  5 + public abstract int getIconWidth();
  6 + public abstract int getIconHeight();
  7 + public abstract float getMinU();
  8 + public abstract float getMaxU();
  9 + public abstract float getInterpolatedU(double p_94214_1_);
  10 + public abstract float getMinV();
  11 + public abstract float getMaxV();
  12 + public abstract float getInterpolatedV(double p_94207_1_);
  13 + public abstract String getIconName();
  14 +}
java/client/com/mumfrey/liteloader/client/util/render/IconTiled.java
1 package com.mumfrey.liteloader.client.util.render; 1 package com.mumfrey.liteloader.client.util.render;
2 2
3 -import net.minecraft.util.IIcon;  
4 import net.minecraft.util.ResourceLocation; 3 import net.minecraft.util.ResourceLocation;
5 4
6 -public class IconTiled implements IIcon 5 +public class IconTiled implements Icon
7 { 6 {
8 private ResourceLocation textureResource; 7 private ResourceLocation textureResource;
9 8
java/client/com/mumfrey/liteloader/util/ModUtilities.java
@@ -24,6 +24,7 @@ import net.minecraft.tileentity.TileEntity; @@ -24,6 +24,7 @@ import net.minecraft.tileentity.TileEntity;
24 import net.minecraft.util.ObjectIntIdentityMap; 24 import net.minecraft.util.ObjectIntIdentityMap;
25 import net.minecraft.util.RegistryNamespaced; 25 import net.minecraft.util.RegistryNamespaced;
26 import net.minecraft.util.RegistrySimple; 26 import net.minecraft.util.RegistrySimple;
  27 +import net.minecraft.util.ResourceLocation;
27 28
28 import com.mumfrey.liteloader.client.util.PrivateFields; 29 import com.mumfrey.liteloader.client.util.PrivateFields;
29 import com.mumfrey.liteloader.core.LiteLoader; 30 import com.mumfrey.liteloader.core.LiteLoader;
@@ -84,11 +85,12 @@ public abstract class ModUtilities @@ -84,11 +85,12 @@ public abstract class ModUtilities
84 @SuppressWarnings("unchecked") 85 @SuppressWarnings("unchecked")
85 public static void addRenderer(Class<? extends Entity> entityClass, Render renderer) 86 public static void addRenderer(Class<? extends Entity> entityClass, Render renderer)
86 { 87 {
87 - Map<Class<? extends Entity>, Render> entityRenderMap = PrivateFields.entityRenderMap.get(RenderManager.instance); 88 + RenderManager renderManager = Minecraft.getMinecraft().getRenderManager();
  89 +
  90 + Map<Class<? extends Entity>, Render> entityRenderMap = PrivateFields.entityRenderMap.get(renderManager);
88 if (entityRenderMap != null) 91 if (entityRenderMap != null)
89 { 92 {
90 entityRenderMap.put(entityClass, renderer); 93 entityRenderMap.put(entityClass, renderer);
91 - renderer.setRenderManager(RenderManager.instance);  
92 } 94 }
93 else 95 else
94 { 96 {
@@ -105,7 +107,7 @@ public abstract class ModUtilities @@ -105,7 +107,7 @@ public abstract class ModUtilities
105 { 107 {
106 Map<Class<? extends TileEntity>, TileEntitySpecialRenderer> specialRendererMap = PrivateFields.specialRendererMap.get(tileEntityRenderer); 108 Map<Class<? extends TileEntity>, TileEntitySpecialRenderer> specialRendererMap = PrivateFields.specialRendererMap.get(tileEntityRenderer);
107 specialRendererMap.put(tileEntityClass, renderer); 109 specialRendererMap.put(tileEntityClass, renderer);
108 - renderer.func_147497_a(tileEntityRenderer); // setDispatcher 110 + renderer.setRendererDispatcher(tileEntityRenderer);
109 } 111 }
110 catch (Exception ex) 112 catch (Exception ex)
111 { 113 {
@@ -121,20 +123,20 @@ public abstract class ModUtilities @@ -121,20 +123,20 @@ public abstract class ModUtilities
121 * @param block Block to register 123 * @param block Block to register
122 * @param force Force insertion even if the operation is blocked by FMl 124 * @param force Force insertion even if the operation is blocked by FMl
123 */ 125 */
124 - public static void addBlock(int blockId, String blockName, Block block, boolean force) 126 + public static void addBlock(int blockId, ResourceLocation blockName, Block block, boolean force)
125 { 127 {
126 - Block existingBlock = Block.blockRegistry.getObject(blockName); 128 + Block existingBlock = (Block)Block.blockRegistry.getObject(blockName);
127 129
128 try 130 try
129 { 131 {
130 - Block.blockRegistry.addObject(blockId, blockName, block); 132 + Block.blockRegistry.register(blockId, blockName, block);
131 } 133 }
132 catch (IllegalArgumentException ex) 134 catch (IllegalArgumentException ex)
133 { 135 {
134 if (!force) throw new IllegalArgumentException("Could not register block '" + blockName + "', the operation was blocked by FML.", ex); 136 if (!force) throw new IllegalArgumentException("Could not register block '" + blockName + "', the operation was blocked by FML.", ex);
135 137
136 ModUtilities.removeObjectFromRegistry(Block.blockRegistry, blockName); 138 ModUtilities.removeObjectFromRegistry(Block.blockRegistry, blockName);
137 - Block.blockRegistry.addObject(blockId, blockName, block); 139 + Block.blockRegistry.register(blockId, blockName, block);
138 } 140 }
139 141
140 if (existingBlock != null) 142 if (existingBlock != null)
@@ -166,20 +168,20 @@ public abstract class ModUtilities @@ -166,20 +168,20 @@ public abstract class ModUtilities
166 * @param item Item to register 168 * @param item Item to register
167 * @param force Force insertion even if the operation is blocked by FMl 169 * @param force Force insertion even if the operation is blocked by FMl
168 */ 170 */
169 - public static void addItem(int itemId, String itemName, Item item, boolean force) 171 + public static void addItem(int itemId, ResourceLocation itemName, Item item, boolean force)
170 { 172 {
171 - Item existingItem = Item.itemRegistry.getObject(itemName); 173 + Item existingItem = (Item)Item.itemRegistry.getObject(itemName);
172 174
173 try 175 try
174 { 176 {
175 - Item.itemRegistry.addObject(itemId, itemName, item); 177 + Item.itemRegistry.register(itemId, itemName, item);
176 } 178 }
177 catch (IllegalArgumentException ex) 179 catch (IllegalArgumentException ex)
178 { 180 {
179 if (!force) throw new IllegalArgumentException("Could not register item '" + itemName + "', the operation was blocked by FML.", ex); 181 if (!force) throw new IllegalArgumentException("Could not register item '" + itemName + "', the operation was blocked by FML.", ex);
180 182
181 ModUtilities.removeObjectFromRegistry(Block.blockRegistry, itemName); 183 ModUtilities.removeObjectFromRegistry(Block.blockRegistry, itemName);
182 - Item.itemRegistry.addObject(itemId, itemName, item); 184 + Item.itemRegistry.register(itemId, itemName, item);
183 } 185 }
184 186
185 if (existingItem != null) 187 if (existingItem != null)
@@ -269,15 +271,15 @@ public abstract class ModUtilities @@ -269,15 +271,15 @@ public abstract class ModUtilities
269 } 271 }
270 272
271 @SuppressWarnings("unchecked") 273 @SuppressWarnings("unchecked")
272 - private static <K, V> V removeObjectFromRegistry(RegistrySimple<K, V> registry, K key) 274 + private static <K, V> V removeObjectFromRegistry(RegistrySimple registry, K key)
273 { 275 {
274 if (registry == null) return null; 276 if (registry == null) return null;
275 277
276 - ObjectIntIdentityMap<V> underlyingIntegerMap = null; 278 + ObjectIntIdentityMap underlyingIntegerMap = null;
277 279
278 if (registry instanceof RegistryNamespaced) 280 if (registry instanceof RegistryNamespaced)
279 { 281 {
280 - RegistryNamespaced<V> rns = (RegistryNamespaced<V>)registry; 282 + RegistryNamespaced rns = (RegistryNamespaced)registry;
281 underlyingIntegerMap = PrivateFields.underlyingIntegerMap.get(rns); 283 underlyingIntegerMap = PrivateFields.underlyingIntegerMap.get(rns);
282 } 284 }
283 285
java/common/com/mumfrey/liteloader/PluginChannelListener.java
1 package com.mumfrey.liteloader; 1 package com.mumfrey.liteloader;
2 2
  3 +import net.minecraft.network.PacketBuffer;
  4 +
3 import com.mumfrey.liteloader.core.CommonPluginChannelListener; 5 import com.mumfrey.liteloader.core.CommonPluginChannelListener;
4 6
5 /** 7 /**
@@ -13,8 +15,7 @@ public interface PluginChannelListener extends CommonPluginChannelListener, Join @@ -13,8 +15,7 @@ public interface PluginChannelListener extends CommonPluginChannelListener, Join
13 * Called when a custom payload packet arrives on a channel this mod has registered 15 * Called when a custom payload packet arrives on a channel this mod has registered
14 * 16 *
15 * @param channel Channel on which the custom payload was received 17 * @param channel Channel on which the custom payload was received
16 - * @param length Length of the custom payload data  
17 * @param data Custom payload data 18 * @param data Custom payload data
18 */ 19 */
19 - public abstract void onCustomPayload(String channel, int length, byte[] data); 20 + public abstract void onCustomPayload(String channel, PacketBuffer data);
20 } 21 }
java/common/com/mumfrey/liteloader/PreJoinGameListener.java
@@ -12,15 +12,12 @@ import net.minecraft.network.play.server.S01PacketJoinGame; @@ -12,15 +12,12 @@ import net.minecraft.network.play.server.S01PacketJoinGame;
12 public interface PreJoinGameListener extends LiteMod 12 public interface PreJoinGameListener extends LiteMod
13 { 13 {
14 /** 14 /**
15 - * Called on login 15 + * Called before login. NOTICE: as of 1.8 the return value of this method has a different meaning!
16 * 16 *
17 * @param netHandler Net handler 17 * @param netHandler Net handler
18 * @param joinGamePacket Join game packet 18 * @param joinGamePacket Join game packet
19 * 19 *
20 - * @return true to cancel the event  
21 - * @deprecated this event's return code is not compatible with other events expressing the same pattern,  
22 - * it will be replaced in the next release with a method whose return value is boolean to NOT cancel 20 + * @return true to allow login to continue, false to cancel login
23 */ 21 */
24 - @Deprecated  
25 public abstract boolean onPreJoinGame(INetHandler netHandler, S01PacketJoinGame joinGamePacket); 22 public abstract boolean onPreJoinGame(INetHandler netHandler, S01PacketJoinGame joinGamePacket);
26 } 23 }
java/common/com/mumfrey/liteloader/ServerPluginChannelListener.java
1 package com.mumfrey.liteloader; 1 package com.mumfrey.liteloader;
2 2
3 import net.minecraft.entity.player.EntityPlayerMP; 3 import net.minecraft.entity.player.EntityPlayerMP;
  4 +import net.minecraft.network.PacketBuffer;
4 5
5 import com.mumfrey.liteloader.core.CommonPluginChannelListener; 6 import com.mumfrey.liteloader.core.CommonPluginChannelListener;
6 7
@@ -13,10 +14,10 @@ public interface ServerPluginChannelListener extends CommonPluginChannelListener @@ -13,10 +14,10 @@ public interface ServerPluginChannelListener extends CommonPluginChannelListener
13 { 14 {
14 /** 15 /**
15 * Called when a custom payload packet arrives on a channel this mod has registered 16 * Called when a custom payload packet arrives on a channel this mod has registered
16 - * 17 + *
  18 + * @param sender Player object which is the source of this message
17 * @param channel Channel on which the custom payload was received 19 * @param channel Channel on which the custom payload was received
18 - * @param length Length of the custom payload data  
19 * @param data Custom payload data 20 * @param data Custom payload data
20 */ 21 */
21 - public abstract void onCustomPayload(EntityPlayerMP sender, String channel, int length, byte[] data); 22 + public abstract void onCustomPayload(EntityPlayerMP sender, String channel, PacketBuffer data);
22 } 23 }
java/common/com/mumfrey/liteloader/api/BrandingProvider.java
@@ -2,9 +2,10 @@ package com.mumfrey.liteloader.api; @@ -2,9 +2,10 @@ package com.mumfrey.liteloader.api;
2 2
3 import java.net.URI; 3 import java.net.URI;
4 4
5 -import net.minecraft.util.IIcon;  
6 import net.minecraft.util.ResourceLocation; 5 import net.minecraft.util.ResourceLocation;
7 6
  7 +import com.mumfrey.liteloader.client.util.render.Icon;
  8 +
8 /** 9 /**
9 * LiteLoader Extensible API - Branding Provider 10 * LiteLoader Extensible API - Branding Provider
10 * 11 *
@@ -50,7 +51,7 @@ public interface BrandingProvider extends CustomisationProvider @@ -50,7 +51,7 @@ public interface BrandingProvider extends CustomisationProvider
50 * Gets the coordinates of the logo as an IIcon instance, only called if getLogoResource() returns 51 * Gets the coordinates of the logo as an IIcon instance, only called if getLogoResource() returns
51 * a non-null value and the logo will only be used if BOTH methods return a valid object. 52 * a non-null value and the logo will only be used if BOTH methods return a valid object.
52 */ 53 */
53 - public abstract IIcon getLogoCoords(); 54 + public abstract Icon getLogoCoords();
54 55
55 /** 56 /**
56 * Get the resource to use for the icon logo (the chicken in the default setup), the API with the 57 * Get the resource to use for the icon logo (the chicken in the default setup), the API with the
@@ -63,7 +64,7 @@ public interface BrandingProvider extends CustomisationProvider @@ -63,7 +64,7 @@ public interface BrandingProvider extends CustomisationProvider
63 * Gets the coordinates of the icon logo as an IIcon instance, only called if getIconResource() 64 * Gets the coordinates of the icon logo as an IIcon instance, only called if getIconResource()
64 * returns a non-null value and the icon will only be used if BOTH methods return a valid object. 65 * returns a non-null value and the icon will only be used if BOTH methods return a valid object.
65 */ 66 */
66 - public abstract IIcon getIconCoords(); 67 + public abstract Icon getIconCoords();
67 68
68 /** 69 /**
69 * Get the display name for this API, used on the "about" screen, must not return null 70 * Get the display name for this API, used on the "about" screen, must not return null
@@ -97,5 +98,5 @@ public interface BrandingProvider extends CustomisationProvider @@ -97,5 +98,5 @@ public interface BrandingProvider extends CustomisationProvider
97 * If you wish to display a clickable twitter icon next to the API information, return the icon 98 * If you wish to display a clickable twitter icon next to the API information, return the icon
98 * coordinates here. 99 * coordinates here.
99 */ 100 */
100 - public abstract IIcon getTwitterAvatarCoords(); 101 + public abstract Icon getTwitterAvatarCoords();
101 } 102 }
java/common/com/mumfrey/liteloader/api/EnumerationObserver.java 0 โ†’ 100644
  1 +package com.mumfrey.liteloader.api;
  2 +
  3 +import java.io.File;
  4 +
  5 +import com.mumfrey.liteloader.core.ModInfo;
  6 +import com.mumfrey.liteloader.interfaces.LoadableMod;
  7 +import com.mumfrey.liteloader.interfaces.LoaderEnumerator;
  8 +import com.mumfrey.liteloader.interfaces.LoaderEnumerator.DisabledReason;
  9 +import com.mumfrey.liteloader.interfaces.TweakContainer;
  10 +
  11 +/**
  12 + * LiteLoader Extensible API - Enumeration observer
  13 + *
  14 + * EnumerationObserver receive callbacks when mod containers are enumerated. Instances of this class MUST be returned from
  15 + * getPreInitObservers in order to work
  16 + *
  17 + * @author Adam Mummery-Smith
  18 + */
  19 +public interface EnumerationObserver extends Observer
  20 +{
  21 + /**
  22 + * Called upon registration for every discovered container which is enabled
  23 + *
  24 + * @param enumerator
  25 + * @param container
  26 + */
  27 + public abstract void onRegisterEnabledContainer(LoaderEnumerator enumerator, LoadableMod<?> container);
  28 +
  29 + /**
  30 + * Called upon registration for every discovered container which is currently disabled, either because
  31 + *
  32 + * @param enumerator
  33 + * @param container
  34 + * @param reason
  35 + */
  36 + public abstract void onRegisterDisabledContainer(LoaderEnumerator enumerator, LoadableMod<?> container, DisabledReason reason);
  37 +
  38 + /**
  39 + * Called AFTER registration of an ENABLED container (eg. onRegisterEnabledContainer will be called first) if that container also
  40 + * contains tweaks.
  41 + *
  42 + * @param enumerator
  43 + * @param container
  44 + */
  45 + public abstract void onRegisterTweakContainer(LoaderEnumerator enumerator, TweakContainer<File> container);
  46 +
  47 + /**
  48 + * Called when a mod container is added to the pending mods list. This does not mean that the specific mod will actually be instanced since
  49 + * the mod can still be disabled via the exclusion list (this is to allow entire containers to be disabled or just individual mods) and so
  50 + * if you wish to observe actual mod instantiation you should still provide a {@link ModLoadObserver}. However this event expresses a
  51 + * declaration by the enumerator of an intention to load the specified mod.
  52 + *
  53 + * @param enumerator
  54 + * @param mod
  55 + */
  56 + public abstract void onModAdded(LoaderEnumerator enumerator, ModInfo<LoadableMod<?>> mod);
  57 +}
java/common/com/mumfrey/liteloader/api/LiteAPI.java
@@ -58,14 +58,6 @@ public interface LiteAPI @@ -58,14 +58,6 @@ public interface LiteAPI
58 public abstract String[] getRequiredDownstreamTransformers(); 58 public abstract String[] getRequiredDownstreamTransformers();
59 59
60 /** 60 /**
61 - * Should return an array of required packet transformer names, these transformers will be injected UPSTREAM. Can return null.  
62 - *  
63 - * Deprecated - will be removed in 1.8  
64 - */  
65 - @Deprecated  
66 - public abstract String[] getPacketTransformers();  
67 -  
68 - /**  
69 * Return a mod class prefix supported by this API, can return null if an API just wants to use "LiteMod" as a standard class name prefix 61 * Return a mod class prefix supported by this API, can return null if an API just wants to use "LiteMod" as a standard class name prefix
70 */ 62 */
71 public abstract String getModClassPrefix(); 63 public abstract String getModClassPrefix();
@@ -86,7 +78,14 @@ public interface LiteAPI @@ -86,7 +78,14 @@ public interface LiteAPI
86 public abstract List<InterfaceProvider> getInterfaceProviders(); 78 public abstract List<InterfaceProvider> getInterfaceProviders();
87 79
88 /** 80 /**
89 - * Should return a list of Observers for this API, can return null if the API doesn't have any Observers, (almost) guaranteed to only be called once 81 + * Should return a list of Observers which are safe to instantiate during pre-init, for example EnumerationObservers. Can return null if the API doesn't have any
  82 + * Observers.
  83 + */
  84 + public abstract List<Observer> getPreInitObservers();
  85 +
  86 + /**
  87 + * Should return a list of Observers for this API, can return null if the API doesn't have any Observers, (almost) guaranteed to only be called once. This list may
  88 + * include Observers returned by getPreInitObservers if the observers are still required.
90 */ 89 */
91 public abstract List<Observer> getObservers(); 90 public abstract List<Observer> getObservers();
92 91
java/common/com/mumfrey/liteloader/api/manager/APIAdapter.java
@@ -25,12 +25,6 @@ public interface APIAdapter @@ -25,12 +25,6 @@ public interface APIAdapter
25 public abstract List<String> getRequiredDownstreamTransformers(); 25 public abstract List<String> getRequiredDownstreamTransformers();
26 26
27 /** 27 /**
28 - * Aggregate and return required packet transformers from all registered APIs  
29 - */  
30 - @Deprecated  
31 - public abstract List<String> getPacketTransformers();  
32 -  
33 - /**  
34 * Register interfaces from all registered APIs with the specified registry 28 * Register interfaces from all registered APIs with the specified registry
35 */ 29 */
36 public abstract void registerInterfaces(InterfaceRegistry interfaceManager); 30 public abstract void registerInterfaces(InterfaceRegistry interfaceManager);
@@ -65,4 +59,16 @@ public interface APIAdapter @@ -65,4 +59,16 @@ public interface APIAdapter
65 * @param observerType type of observer to search for 59 * @param observerType type of observer to search for
66 */ 60 */
67 public abstract <T extends Observer> List<T> getAllObservers(Class<T> observerType); 61 public abstract <T extends Observer> List<T> getAllObservers(Class<T> observerType);
  62 +
  63 + /**
  64 + * @param api
  65 + * @return
  66 + */
  67 + public abstract List<? extends Observer> getPreInitObservers(LiteAPI api);
  68 +
  69 + /**
  70 + * @param observerType
  71 + * @return
  72 + */
  73 + public abstract <T extends Observer> List<T> getPreInitObservers(Class<T> observerType);
68 } 74 }
java/common/com/mumfrey/liteloader/api/manager/APIProviderBasic.java
@@ -36,6 +36,11 @@ class APIProviderBasic implements APIProvider, APIAdapter @@ -36,6 +36,11 @@ class APIProviderBasic implements APIProvider, APIAdapter
36 private final Map<LiteAPI, List<? extends Observer>> observers = new HashMap<LiteAPI, List<? extends Observer>>(); 36 private final Map<LiteAPI, List<? extends Observer>> observers = new HashMap<LiteAPI, List<? extends Observer>>();
37 37
38 /** 38 /**
  39 + * Cached preinit observers
  40 + */
  41 + private final Map<LiteAPI, List<? extends Observer>> preInitiObservers = new HashMap<LiteAPI, List<? extends Observer>>();
  42 +
  43 + /**
39 * Cached CoreProvider set 44 * Cached CoreProvider set
40 */ 45 */
41 private List<CoreProvider> coreProviders; 46 private List<CoreProvider> coreProviders;
@@ -91,26 +96,6 @@ class APIProviderBasic implements APIProvider, APIAdapter @@ -91,26 +96,6 @@ class APIProviderBasic implements APIProvider, APIAdapter
91 } 96 }
92 97
93 /* (non-Javadoc) 98 /* (non-Javadoc)
94 - * @see com.mumfrey.liteloader.api.manager.APIProvider#getPacketTransformers()  
95 - */  
96 - @Override  
97 - public List<String> getPacketTransformers()  
98 - {  
99 - List<String> packetTransformers = new ArrayList<String>();  
100 -  
101 - for (LiteAPI api : this.apis)  
102 - {  
103 - String[] apiTransformers = api.getPacketTransformers();  
104 - if (apiTransformers != null)  
105 - {  
106 - packetTransformers.addAll(Arrays.asList(apiTransformers));  
107 - }  
108 - }  
109 -  
110 - return packetTransformers;  
111 - }  
112 -  
113 - /* (non-Javadoc)  
114 * @see com.mumfrey.liteloader.api.manager.APIProvider#getObservers(com.mumfrey.liteloader.api.LiteAPI) 99 * @see com.mumfrey.liteloader.api.manager.APIProvider#getObservers(com.mumfrey.liteloader.api.LiteAPI)
115 */ 100 */
116 @Override 101 @Override
@@ -125,6 +110,18 @@ class APIProviderBasic implements APIProvider, APIAdapter @@ -125,6 +110,18 @@ class APIProviderBasic implements APIProvider, APIAdapter
125 return this.observers.get(api); 110 return this.observers.get(api);
126 } 111 }
127 112
  113 + @Override
  114 + public List<? extends Observer> getPreInitObservers(LiteAPI api)
  115 + {
  116 + if (!this.preInitiObservers.containsKey(api))
  117 + {
  118 + List<Observer> apiObservers = api.getPreInitObservers();
  119 + this.preInitiObservers.put(api, Collections.unmodifiableList(apiObservers != null ? apiObservers : new ArrayList<Observer>()));
  120 + }
  121 +
  122 + return this.preInitiObservers.get(api);
  123 + }
  124 +
128 @SuppressWarnings("unchecked") 125 @SuppressWarnings("unchecked")
129 @Override 126 @Override
130 public <T extends Observer> List<T> getObservers(LiteAPI api, Class<T> observerType) 127 public <T extends Observer> List<T> getObservers(LiteAPI api, Class<T> observerType)
@@ -160,6 +157,25 @@ class APIProviderBasic implements APIProvider, APIAdapter @@ -160,6 +157,25 @@ class APIProviderBasic implements APIProvider, APIAdapter
160 157
161 return matchingObservers; 158 return matchingObservers;
162 } 159 }
  160 +
  161 + @SuppressWarnings("unchecked")
  162 + @Override
  163 + public <T extends Observer> List<T> getPreInitObservers(Class<T> observerType)
  164 + {
  165 + List<T> matchingObservers = new ArrayList<T>();
  166 + for (LiteAPI api : this.apis)
  167 + {
  168 + for (Observer observer : this.getPreInitObservers(api))
  169 + {
  170 + if (observerType.isAssignableFrom(observer.getClass()) && !matchingObservers.contains(observer))
  171 + {
  172 + matchingObservers.add((T)observer);
  173 + }
  174 + }
  175 + }
  176 +
  177 + return matchingObservers;
  178 + }
163 179
164 /* (non-Javadoc) 180 /* (non-Javadoc)
165 * @see com.mumfrey.liteloader.api.manager.APIProvider#registerInterfaceProviders(com.mumfrey.liteloader.core.InterfaceManager) 181 * @see com.mumfrey.liteloader.api.manager.APIProvider#registerInterfaceProviders(com.mumfrey.liteloader.core.InterfaceManager)
java/common/com/mumfrey/liteloader/core/ClientPluginChannels.java
1 package com.mumfrey.liteloader.core; 1 package com.mumfrey.liteloader.core;
2 2
3 import net.minecraft.network.INetHandler; 3 import net.minecraft.network.INetHandler;
  4 +import net.minecraft.network.PacketBuffer;
4 import net.minecraft.network.play.server.S3FPacketCustomPayload; 5 import net.minecraft.network.play.server.S3FPacketCustomPayload;
5 6
6 import com.mumfrey.liteloader.PluginChannelListener; 7 import com.mumfrey.liteloader.PluginChannelListener;
@@ -78,7 +79,7 @@ public abstract class ClientPluginChannels extends PluginChannels&lt;PluginChannelL @@ -78,7 +79,7 @@ public abstract class ClientPluginChannels extends PluginChannels&lt;PluginChannelL
78 * @param channel 79 * @param channel
79 * @param data 80 * @param data
80 */ 81 */
81 - protected void onPluginChannelMessage(String channel, byte[] data) 82 + protected void onPluginChannelMessage(String channel, PacketBuffer data)
82 { 83 {
83 if (PluginChannels.CHANNEL_REGISTER.equals(channel)) 84 if (PluginChannels.CHANNEL_REGISTER.equals(channel))
84 { 85 {
@@ -91,12 +92,12 @@ public abstract class ClientPluginChannels extends PluginChannels&lt;PluginChannelL @@ -91,12 +92,12 @@ public abstract class ClientPluginChannels extends PluginChannels&lt;PluginChannelL
91 PermissionsManagerClient permissionsManager = LiteLoader.getClientPermissionsManager(); 92 PermissionsManagerClient permissionsManager = LiteLoader.getClientPermissionsManager();
92 if (permissionsManager != null) 93 if (permissionsManager != null)
93 { 94 {
94 - permissionsManager.onCustomPayload(channel, data.length, data); 95 + permissionsManager.onCustomPayload(channel, data);
95 } 96 }
96 } 97 }
97 catch (Exception ex) {} 98 catch (Exception ex) {}
98 99
99 - this.onModPacketReceived(channel, data, data.length); 100 + this.onModPacketReceived(channel, data);
100 } 101 }
101 } 102 }
102 103
@@ -105,13 +106,13 @@ public abstract class ClientPluginChannels extends PluginChannels&lt;PluginChannelL @@ -105,13 +106,13 @@ public abstract class ClientPluginChannels extends PluginChannels&lt;PluginChannelL
105 * @param data 106 * @param data
106 * @param length 107 * @param length
107 */ 108 */
108 - protected void onModPacketReceived(String channel, byte[] data, int length) 109 + protected void onModPacketReceived(String channel, PacketBuffer data)
109 { 110 {
110 for (PluginChannelListener pluginChannelListener : this.pluginChannels.get(channel)) 111 for (PluginChannelListener pluginChannelListener : this.pluginChannels.get(channel))
111 { 112 {
112 try 113 try
113 { 114 {
114 - pluginChannelListener.onCustomPayload(channel, length, data); 115 + pluginChannelListener.onCustomPayload(channel, data);
115 throw new RuntimeException(); 116 throw new RuntimeException();
116 } 117 }
117 catch (Exception ex) 118 catch (Exception ex)
@@ -146,7 +147,7 @@ public abstract class ClientPluginChannels extends PluginChannels&lt;PluginChannelL @@ -146,7 +147,7 @@ public abstract class ClientPluginChannels extends PluginChannels&lt;PluginChannelL
146 this.addPluginChannelsFor(pluginChannelListener); 147 this.addPluginChannelsFor(pluginChannelListener);
147 } 148 }
148 149
149 - byte[] registrationData = this.getRegistrationData(); 150 + PacketBuffer registrationData = this.getRegistrationData();
150 if (registrationData != null) 151 if (registrationData != null)
151 { 152 {
152 this.sendRegistrationData(netHandler, registrationData); 153 this.sendRegistrationData(netHandler, registrationData);
@@ -162,7 +163,7 @@ public abstract class ClientPluginChannels extends PluginChannels&lt;PluginChannelL @@ -162,7 +163,7 @@ public abstract class ClientPluginChannels extends PluginChannels&lt;PluginChannelL
162 * @param netHandler 163 * @param netHandler
163 * @param registrationData 164 * @param registrationData
164 */ 165 */
165 - protected abstract void sendRegistrationData(INetHandler netHandler, byte[] registrationData); 166 + protected abstract void sendRegistrationData(INetHandler netHandler, PacketBuffer registrationData);
166 167
167 /** 168 /**
168 * Send a message to the server on a plugin channel 169 * Send a message to the server on a plugin channel
@@ -170,7 +171,7 @@ public abstract class ClientPluginChannels extends PluginChannels&lt;PluginChannelL @@ -170,7 +171,7 @@ public abstract class ClientPluginChannels extends PluginChannels&lt;PluginChannelL
170 * @param channel Channel to send, must not be a reserved channel name 171 * @param channel Channel to send, must not be a reserved channel name
171 * @param data 172 * @param data
172 */ 173 */
173 - public static boolean sendMessage(String channel, byte[] data, ChannelPolicy policy) 174 + public static boolean sendMessage(String channel, PacketBuffer data, ChannelPolicy policy)
174 { 175 {
175 if (ClientPluginChannels.instance != null) 176 if (ClientPluginChannels.instance != null)
176 { 177 {
@@ -186,5 +187,5 @@ public abstract class ClientPluginChannels extends PluginChannels&lt;PluginChannelL @@ -186,5 +187,5 @@ public abstract class ClientPluginChannels extends PluginChannels&lt;PluginChannelL
186 * @param channel Channel to send, must not be a reserved channel name 187 * @param channel Channel to send, must not be a reserved channel name
187 * @param data 188 * @param data
188 */ 189 */
189 - protected abstract boolean send(String channel, byte[] data, ChannelPolicy policy); 190 + protected abstract boolean send(String channel, PacketBuffer data, ChannelPolicy policy);
190 } 191 }
java/common/com/mumfrey/liteloader/core/LiteLoader.java
@@ -12,6 +12,7 @@ import net.minecraft.client.resources.IResourcePack; @@ -12,6 +12,7 @@ import net.minecraft.client.resources.IResourcePack;
12 import net.minecraft.crash.CrashReport; 12 import net.minecraft.crash.CrashReport;
13 import net.minecraft.crash.CrashReportCategory; 13 import net.minecraft.crash.CrashReportCategory;
14 import net.minecraft.launchwrapper.LaunchClassLoader; 14 import net.minecraft.launchwrapper.LaunchClassLoader;
  15 +import net.minecraft.network.EnumConnectionState;
15 import net.minecraft.network.INetHandler; 16 import net.minecraft.network.INetHandler;
16 import net.minecraft.network.play.server.S01PacketJoinGame; 17 import net.minecraft.network.play.server.S01PacketJoinGame;
17 import net.minecraft.profiler.Profiler; 18 import net.minecraft.profiler.Profiler;
@@ -51,6 +52,7 @@ import com.mumfrey.liteloader.modconfig.ConfigManager; @@ -51,6 +52,7 @@ import com.mumfrey.liteloader.modconfig.ConfigManager;
51 import com.mumfrey.liteloader.modconfig.Exposable; 52 import com.mumfrey.liteloader.modconfig.Exposable;
52 import com.mumfrey.liteloader.permissions.PermissionsManagerClient; 53 import com.mumfrey.liteloader.permissions.PermissionsManagerClient;
53 import com.mumfrey.liteloader.permissions.PermissionsManagerServer; 54 import com.mumfrey.liteloader.permissions.PermissionsManagerServer;
  55 +import com.mumfrey.liteloader.transformers.event.EventTransformer;
54 import com.mumfrey.liteloader.util.Input; 56 import com.mumfrey.liteloader.util.Input;
55 import com.mumfrey.liteloader.util.log.LiteLoaderLogger; 57 import com.mumfrey.liteloader.util.log.LiteLoaderLogger;
56 58
@@ -568,6 +570,19 @@ public final class LiteLoader @@ -568,6 +570,19 @@ public final class LiteLoader
568 return "true".equals(System.getProperty("mcpenv")); 570 return "true".equals(System.getProperty("mcpenv"));
569 } 571 }
570 572
  573 + public static void dumpDebugInfo()
  574 + {
  575 + if (LiteLoaderLogger.DEBUG)
  576 + {
  577 + EventTransformer.dumpInjectionState();
  578 + LiteLoaderLogger.info("Debug info dumped to console");
  579 + }
  580 + else
  581 + {
  582 + LiteLoaderLogger.info("Debug dump not available, developer flag not enabled");
  583 + }
  584 + }
  585 +
571 /** 586 /**
572 * Used for crash reporting, returns a text list of all loaded mods 587 * Used for crash reporting, returns a text list of all loaded mods
573 * 588 *
@@ -914,6 +929,9 @@ public final class LiteLoader @@ -914,6 +929,9 @@ public final class LiteLoader
914 } 929 }
915 930
916 MessageBus.getInstance().onStartupComplete(); 931 MessageBus.getInstance().onStartupComplete();
  932 +
  933 + // Force packet injections
  934 + EnumConnectionState.values();
917 } 935 }
918 936
919 /** 937 /**
java/common/com/mumfrey/liteloader/core/LiteLoaderBootstrap.java
@@ -716,15 +716,11 @@ class LiteLoaderBootstrap implements LoaderBootstrap, LoaderEnvironment, LoaderP @@ -716,15 +716,11 @@ class LiteLoaderBootstrap implements LoaderBootstrap, LoaderEnvironment, LoaderP
716 @Override 716 @Override
717 public List<String> getRequiredDownstreamTransformers() 717 public List<String> getRequiredDownstreamTransformers()
718 { 718 {
719 - return this.apiAdapter.getRequiredDownstreamTransformers(); 719 + List<String> requiredDownstreamTransformers = this.apiAdapter.getRequiredDownstreamTransformers();
  720 + requiredDownstreamTransformers.add(0, "com.mumfrey.liteloader.transformers.event.EventTransformer");
  721 + return requiredDownstreamTransformers;
720 } 722 }
721 723
722 - @Override  
723 - public List<String> getPacketTransformers()  
724 - {  
725 - return this.apiAdapter.getPacketTransformers();  
726 - }  
727 -  
728 private static int tryParseInt(String string, int defaultValue) 724 private static int tryParseInt(String string, int defaultValue)
729 { 725 {
730 try 726 try
java/common/com/mumfrey/liteloader/core/LiteLoaderEnumerator.java
@@ -19,13 +19,16 @@ import net.minecraft.launchwrapper.LaunchClassLoader; @@ -19,13 +19,16 @@ import net.minecraft.launchwrapper.LaunchClassLoader;
19 19
20 import com.google.common.base.Throwables; 20 import com.google.common.base.Throwables;
21 import com.mumfrey.liteloader.LiteMod; 21 import com.mumfrey.liteloader.LiteMod;
  22 +import com.mumfrey.liteloader.api.EnumerationObserver;
22 import com.mumfrey.liteloader.api.EnumeratorModule; 23 import com.mumfrey.liteloader.api.EnumeratorModule;
23 import com.mumfrey.liteloader.api.LiteAPI; 24 import com.mumfrey.liteloader.api.LiteAPI;
24 import com.mumfrey.liteloader.api.manager.APIProvider; 25 import com.mumfrey.liteloader.api.manager.APIProvider;
  26 +import com.mumfrey.liteloader.core.event.HandlerList;
25 import com.mumfrey.liteloader.core.exceptions.OutdatedLoaderException; 27 import com.mumfrey.liteloader.core.exceptions.OutdatedLoaderException;
26 -import com.mumfrey.liteloader.interfaces.LoaderEnumerator; 28 +import com.mumfrey.liteloader.interfaces.FastIterableDeque;
27 import com.mumfrey.liteloader.interfaces.Loadable; 29 import com.mumfrey.liteloader.interfaces.Loadable;
28 import com.mumfrey.liteloader.interfaces.LoadableMod; 30 import com.mumfrey.liteloader.interfaces.LoadableMod;
  31 +import com.mumfrey.liteloader.interfaces.LoaderEnumerator;
29 import com.mumfrey.liteloader.interfaces.TweakContainer; 32 import com.mumfrey.liteloader.interfaces.TweakContainer;
30 import com.mumfrey.liteloader.launch.LiteLoaderTweaker; 33 import com.mumfrey.liteloader.launch.LiteLoaderTweaker;
31 import com.mumfrey.liteloader.launch.LoaderEnvironment; 34 import com.mumfrey.liteloader.launch.LoaderEnvironment;
@@ -114,6 +117,8 @@ public class LiteLoaderEnumerator implements LoaderEnumerator @@ -114,6 +117,8 @@ public class LiteLoaderEnumerator implements LoaderEnumerator
114 117
115 private final String[] supportedPrefixes; 118 private final String[] supportedPrefixes;
116 119
  120 + private final FastIterableDeque<EnumerationObserver> observers = new HandlerList<EnumerationObserver>(EnumerationObserver.class);
  121 +
117 protected EnumeratorState state = EnumeratorState.INIT; 122 protected EnumeratorState state = EnumeratorState.INIT;
118 123
119 /** 124 /**
@@ -129,6 +134,9 @@ public class LiteLoaderEnumerator implements LoaderEnumerator @@ -129,6 +134,9 @@ public class LiteLoaderEnumerator implements LoaderEnumerator
129 this.tweaker = (LiteLoaderTweaker)environment.getTweaker(); 134 this.tweaker = (LiteLoaderTweaker)environment.getTweaker();
130 this.classLoader = classLoader; 135 this.classLoader = classLoader;
131 this.supportedPrefixes = this.getSupportedPrefixes(environment); 136 this.supportedPrefixes = this.getSupportedPrefixes(environment);
  137 +
  138 + // Initialise observers
  139 + this.observers.addAll(environment.getAPIAdapter().getPreInitObservers(EnumerationObserver.class));
132 140
133 // Initialise the shared mod list if we haven't already 141 // Initialise the shared mod list if we haven't already
134 this.getSharedModList(); 142 this.getSharedModList();
@@ -459,21 +467,21 @@ public class LiteLoaderEnumerator implements LoaderEnumerator @@ -459,21 +467,21 @@ public class LiteLoaderEnumerator implements LoaderEnumerator
459 if (!container.isEnabled(this.environment)) 467 if (!container.isEnabled(this.environment))
460 { 468 {
461 LiteLoaderLogger.info("Container %s is disabled", container.getLocation()); 469 LiteLoaderLogger.info("Container %s is disabled", container.getLocation());
462 - this.registerDisabledContainer(container); 470 + this.registerDisabledContainer(container, DisabledReason.USER_DISABLED);
463 return false; 471 return false;
464 } 472 }
465 473
466 if (!this.checkDependencies(container)) 474 if (!this.checkDependencies(container))
467 { 475 {
468 LiteLoaderLogger.info("Container %s is missing one or more dependencies", container.getLocation()); 476 LiteLoaderLogger.info("Container %s is missing one or more dependencies", container.getLocation());
469 - this.registerDisabledContainer(container); 477 + this.registerDisabledContainer(container, DisabledReason.MISSING_DEPENDENCY);
470 return false; 478 return false;
471 } 479 }
472 480
473 if (!this.checkAPIRequirements(container)) 481 if (!this.checkAPIRequirements(container))
474 { 482 {
475 LiteLoaderLogger.info("Container %s is missing one or more required APIs", container.getLocation()); 483 LiteLoaderLogger.info("Container %s is missing one or more required APIs", container.getLocation());
476 - this.registerDisabledContainer(container); 484 + this.registerDisabledContainer(container, DisabledReason.MISSING_API);
477 return false; 485 return false;
478 } 486 }
479 487
@@ -492,17 +500,21 @@ public class LiteLoaderEnumerator implements LoaderEnumerator @@ -492,17 +500,21 @@ public class LiteLoaderEnumerator implements LoaderEnumerator
492 500
493 this.disabledContainers.remove(container.getIdentifier()); 501 this.disabledContainers.remove(container.getIdentifier());
494 this.enabledContainers.put(container.getIdentifier(), container); 502 this.enabledContainers.put(container.getIdentifier(), container);
  503 +
  504 + this.observers.all().onRegisterEnabledContainer(this, container);
495 } 505 }
496 506
497 /** 507 /**
498 * @param container 508 * @param container
499 */ 509 */
500 - protected void registerDisabledContainer(LoadableMod<?> container) 510 + protected void registerDisabledContainer(LoadableMod<?> container, DisabledReason reason)
501 { 511 {
502 this.checkState(EnumeratorState.DISCOVER, "registerDisabledContainer"); 512 this.checkState(EnumeratorState.DISCOVER, "registerDisabledContainer");
503 513
504 this.enabledContainers.remove(container.getIdentifier()); 514 this.enabledContainers.remove(container.getIdentifier());
505 this.disabledContainers.put(container.getIdentifier(), new NonMod(container, false)); 515 this.disabledContainers.put(container.getIdentifier(), new NonMod(container, false));
  516 +
  517 + this.observers.all().onRegisterDisabledContainer(this, container, reason);
506 } 518 }
507 519
508 /* (non-Javadoc) 520 /* (non-Javadoc)
@@ -520,6 +532,7 @@ public class LiteLoaderEnumerator implements LoaderEnumerator @@ -520,6 +532,7 @@ public class LiteLoaderEnumerator implements LoaderEnumerator
520 } 532 }
521 533
522 this.tweakContainers.add(container); 534 this.tweakContainers.add(container);
  535 + this.observers.all().onRegisterTweakContainer(this, container);
523 return true; 536 return true;
524 } 537 }
525 538
@@ -655,6 +668,8 @@ public class LiteLoaderEnumerator implements LoaderEnumerator @@ -655,6 +668,8 @@ public class LiteLoaderEnumerator implements LoaderEnumerator
655 } 668 }
656 669
657 this.modsToLoad.add(mod); 670 this.modsToLoad.add(mod);
  671 +
  672 + this.observers.all().onModAdded(this, mod);
658 } 673 }
659 674
660 /** 675 /**
java/common/com/mumfrey/liteloader/core/LiteLoaderVersion.java
@@ -7,7 +7,7 @@ import java.util.Set; @@ -7,7 +7,7 @@ import java.util.Set;
7 * LiteLoader version table 7 * LiteLoader version table
8 * 8 *
9 * @author Adam Mummery-Smith 9 * @author Adam Mummery-Smith
10 - * @version 1.7.10_04 10 + * @version 1.8.0_00
11 */ 11 */
12 public enum LiteLoaderVersion 12 public enum LiteLoaderVersion
13 { 13 {
@@ -37,12 +37,13 @@ public enum LiteLoaderVersion @@ -37,12 +37,13 @@ public enum LiteLoaderVersion
37 MC_1_7_10_R1(28, 1404673785, "1.7.10", "1.7.10_01", "1.7.10"), 37 MC_1_7_10_R1(28, 1404673785, "1.7.10", "1.7.10_01", "1.7.10"),
38 MC_1_7_10_R2(29, 1405369406, "1.7.10", "1.7.10_02", "1.7.10"), 38 MC_1_7_10_R2(29, 1405369406, "1.7.10", "1.7.10_02", "1.7.10"),
39 MC_1_7_10_R3(30, 1407687918, "1.7.10", "1.7.10_03", "1.7.10", "1.7.10_03"), 39 MC_1_7_10_R3(30, 1407687918, "1.7.10", "1.7.10_03", "1.7.10", "1.7.10_03"),
40 - MC_1_7_10_R4(31, 0, "1.7.10", "1.7.10_04", "1.7.10", "1.7.10_03", "1.7.10_04"); 40 + MC_1_7_10_R4(31, 0, "1.7.10", "1.7.10_04", "1.7.10", "1.7.10_03", "1.7.10_04"),
  41 + MC_1_8_0_R0(32, 0, "1.8.0", "1.8.0", "1.8", "1.8.0");
41 42
42 /** 43 /**
43 * Current loader version 44 * Current loader version
44 */ 45 */
45 - public static final LiteLoaderVersion CURRENT = LiteLoaderVersion.MC_1_7_10_R4; 46 + public static final LiteLoaderVersion CURRENT = LiteLoaderVersion.MC_1_8_0_R0;
46 47
47 private static final LiteLoaderUpdateSite updateSite = new LiteLoaderUpdateSite(LiteLoaderVersion.CURRENT.getMinecraftVersion(), LiteLoaderVersion.CURRENT.getReleaseTimestamp()); 48 private static final LiteLoaderUpdateSite updateSite = new LiteLoaderUpdateSite(LiteLoaderVersion.CURRENT.getMinecraftVersion(), LiteLoaderVersion.CURRENT.getReleaseTimestamp());
48 49
java/common/com/mumfrey/liteloader/core/PacketEvents.java
@@ -220,7 +220,7 @@ public abstract class PacketEvents implements InterfaceProvider @@ -220,7 +220,7 @@ public abstract class PacketEvents implements InterfaceProvider
220 { 220 {
221 EntityPlayerMP player = netHandler instanceof NetHandlerPlayServer ? ((NetHandlerPlayServer)netHandler).playerEntity : null; 221 EntityPlayerMP player = netHandler instanceof NetHandlerPlayServer ? ((NetHandlerPlayServer)netHandler).playerEntity : null;
222 222
223 - if (!this.serverChatFilters.all().onChat(player, packet, packet.func_149439_c())) 223 + if (!this.serverChatFilters.all().onChat(player, packet, packet.getMessage()))
224 { 224 {
225 e.cancel(); 225 e.cancel();
226 } 226 }
java/common/com/mumfrey/liteloader/core/PluginChannels.java
1 package com.mumfrey.liteloader.core; 1 package com.mumfrey.liteloader.core;
2 2
3 -import java.io.UnsupportedEncodingException;  
4 -import java.nio.charset.Charset; 3 +import io.netty.buffer.Unpooled;
  4 +
5 import java.util.Collections; 5 import java.util.Collections;
6 import java.util.HashMap; 6 import java.util.HashMap;
7 import java.util.HashSet; 7 import java.util.HashSet;
@@ -10,11 +10,11 @@ import java.util.List; @@ -10,11 +10,11 @@ import java.util.List;
10 import java.util.Map; 10 import java.util.Map;
11 import java.util.Set; 11 import java.util.Set;
12 12
  13 +import net.minecraft.network.INetHandler;
  14 +import net.minecraft.network.PacketBuffer;
  15 +
13 import com.mumfrey.liteloader.api.InterfaceProvider; 16 import com.mumfrey.liteloader.api.InterfaceProvider;
14 import com.mumfrey.liteloader.interfaces.FastIterableDeque; 17 import com.mumfrey.liteloader.interfaces.FastIterableDeque;
15 -import com.mumfrey.liteloader.util.log.LiteLoaderLogger;  
16 -  
17 -import net.minecraft.network.INetHandler;  
18 18
19 /** 19 /**
20 * Manages plugin channel connections and subscriptions for LiteLoader 20 * Manages plugin channel connections and subscriptions for LiteLoader
@@ -115,19 +115,12 @@ public abstract class PluginChannels&lt;L extends CommonPluginChannelListener&gt; impl @@ -115,19 +115,12 @@ public abstract class PluginChannels&lt;L extends CommonPluginChannelListener&gt; impl
115 /** 115 /**
116 * @param data 116 * @param data
117 */ 117 */
118 - protected void onRegisterPacketReceived(byte[] data) 118 + protected void onRegisterPacketReceived(PacketBuffer data)
119 { 119 {
120 - try  
121 - {  
122 - String channels = new String(data, "UTF8");  
123 - for (String channel : channels.split("\u0000"))  
124 - {  
125 - this.remotePluginChannels.add(channel);  
126 - }  
127 - }  
128 - catch (UnsupportedEncodingException ex) 120 + String channels = data.readStringFromBuffer(65535);
  121 + for (String channel : channels.split("\u0000"))
129 { 122 {
130 - LiteLoaderLogger.warning(ex, "Error decoding REGISTER packet from remote host %s", ex.getClass().getSimpleName()); 123 + this.remotePluginChannels.add(channel);
131 } 124 }
132 } 125 }
133 126
@@ -135,7 +128,7 @@ public abstract class PluginChannels&lt;L extends CommonPluginChannelListener&gt; impl @@ -135,7 +128,7 @@ public abstract class PluginChannels&lt;L extends CommonPluginChannelListener&gt; impl
135 * @return 128 * @return
136 * 129 *
137 */ 130 */
138 - protected byte[] getRegistrationData() 131 + protected PacketBuffer getRegistrationData()
139 { 132 {
140 // If any mods have registered channels, send the REGISTER packet 133 // If any mods have registered channels, send the REGISTER packet
141 if (this.pluginChannels.keySet().size() > 0) 134 if (this.pluginChannels.keySet().size() > 0)
@@ -150,7 +143,7 @@ public abstract class PluginChannels&lt;L extends CommonPluginChannelListener&gt; impl @@ -150,7 +143,7 @@ public abstract class PluginChannels&lt;L extends CommonPluginChannelListener&gt; impl
150 separator = true; 143 separator = true;
151 } 144 }
152 145
153 - return channelList.toString().getBytes(Charset.forName("UTF8")); 146 + return new PacketBuffer(Unpooled.buffer()).writeString(channelList.toString());
154 } 147 }
155 148
156 return null; 149 return null;
@@ -184,20 +177,6 @@ public abstract class PluginChannels&lt;L extends CommonPluginChannelListener&gt; impl @@ -184,20 +177,6 @@ public abstract class PluginChannels&lt;L extends CommonPluginChannelListener&gt; impl
184 } 177 }
185 178
186 /** 179 /**
187 - * Send a message on a plugin channel  
188 - *  
189 - * @param channel Channel to send, must not be a reserved channel name  
190 - * @param data  
191 - *  
192 - * @deprecated Use ClientPluginChannels.sendMessage instead  
193 - */  
194 - @Deprecated  
195 - public static boolean sendMessage(String channel, byte[] data, ChannelPolicy policy)  
196 - {  
197 - return ClientPluginChannels.sendMessage(channel, data, policy);  
198 - }  
199 -  
200 - /**  
201 * Policy for dispatching plugin channel packets 180 * Policy for dispatching plugin channel packets
202 * 181 *
203 * @author Adam Mummery-Smith 182 * @author Adam Mummery-Smith
java/common/com/mumfrey/liteloader/core/ServerPluginChannels.java
@@ -3,6 +3,7 @@ package com.mumfrey.liteloader.core; @@ -3,6 +3,7 @@ package com.mumfrey.liteloader.core;
3 import net.minecraft.entity.player.EntityPlayerMP; 3 import net.minecraft.entity.player.EntityPlayerMP;
4 import net.minecraft.network.INetHandler; 4 import net.minecraft.network.INetHandler;
5 import net.minecraft.network.NetHandlerPlayServer; 5 import net.minecraft.network.NetHandlerPlayServer;
  6 +import net.minecraft.network.PacketBuffer;
6 import net.minecraft.network.play.client.C17PacketCustomPayload; 7 import net.minecraft.network.play.client.C17PacketCustomPayload;
7 import net.minecraft.network.play.server.S3FPacketCustomPayload; 8 import net.minecraft.network.play.server.S3FPacketCustomPayload;
8 9
@@ -103,10 +104,10 @@ public class ServerPluginChannels extends PluginChannels&lt;ServerPluginChannelList @@ -103,10 +104,10 @@ public class ServerPluginChannels extends PluginChannels&lt;ServerPluginChannelList
103 */ 104 */
104 public void onPluginChannelMessage(INetHandler netHandler, C17PacketCustomPayload customPayload) 105 public void onPluginChannelMessage(INetHandler netHandler, C17PacketCustomPayload customPayload)
105 { 106 {
106 - if (customPayload != null && customPayload.func_149559_c() != null) 107 + if (customPayload != null && customPayload.getChannelName() != null)
107 { 108 {
108 - String channel = customPayload.func_149559_c();  
109 - byte[] data = customPayload.func_149558_e(); 109 + String channel = customPayload.getChannelName();
  110 + PacketBuffer data = customPayload.getBufferData();
110 111
111 EntityPlayerMP sender = ((NetHandlerPlayServer)netHandler).playerEntity; 112 EntityPlayerMP sender = ((NetHandlerPlayServer)netHandler).playerEntity;
112 this.onPluginChannelMessage(sender, channel, data); 113 this.onPluginChannelMessage(sender, channel, data);
@@ -117,7 +118,7 @@ public class ServerPluginChannels extends PluginChannels&lt;ServerPluginChannelList @@ -117,7 +118,7 @@ public class ServerPluginChannels extends PluginChannels&lt;ServerPluginChannelList
117 * @param channel 118 * @param channel
118 * @param data 119 * @param data
119 */ 120 */
120 - private final void onPluginChannelMessage(EntityPlayerMP sender, String channel, byte[] data) 121 + private final void onPluginChannelMessage(EntityPlayerMP sender, String channel, PacketBuffer data)
121 { 122 {
122 if (PluginChannels.CHANNEL_REGISTER.equals(channel)) 123 if (PluginChannels.CHANNEL_REGISTER.equals(channel))
123 { 124 {
@@ -130,12 +131,12 @@ public class ServerPluginChannels extends PluginChannels&lt;ServerPluginChannelList @@ -130,12 +131,12 @@ public class ServerPluginChannels extends PluginChannels&lt;ServerPluginChannelList
130 PermissionsManagerServer permissionsManager = LiteLoader.getServerPermissionsManager(); 131 PermissionsManagerServer permissionsManager = LiteLoader.getServerPermissionsManager();
131 if (permissionsManager != null) 132 if (permissionsManager != null)
132 { 133 {
133 - permissionsManager.onCustomPayload(sender, channel, data.length, data); 134 + permissionsManager.onCustomPayload(sender, channel, data);
134 } 135 }
135 } 136 }
136 catch (Exception ex) {} 137 catch (Exception ex) {}
137 138
138 - this.onModPacketReceived(sender, channel, data, data.length); 139 + this.onModPacketReceived(sender, channel, data);
139 } 140 }
140 } 141 }
141 142
@@ -144,13 +145,13 @@ public class ServerPluginChannels extends PluginChannels&lt;ServerPluginChannelList @@ -144,13 +145,13 @@ public class ServerPluginChannels extends PluginChannels&lt;ServerPluginChannelList
144 * @param data 145 * @param data
145 * @param length 146 * @param length
146 */ 147 */
147 - protected void onModPacketReceived(EntityPlayerMP sender, String channel, byte[] data, int length) 148 + protected void onModPacketReceived(EntityPlayerMP sender, String channel, PacketBuffer data)
148 { 149 {
149 for (ServerPluginChannelListener pluginChannelListener : this.pluginChannels.get(channel)) 150 for (ServerPluginChannelListener pluginChannelListener : this.pluginChannels.get(channel))
150 { 151 {
151 try 152 try
152 { 153 {
153 - pluginChannelListener.onCustomPayload(sender, channel, length, data); 154 + pluginChannelListener.onCustomPayload(sender, channel, data);
154 throw new RuntimeException(); 155 throw new RuntimeException();
155 } 156 }
156 catch (Exception ex) 157 catch (Exception ex)
@@ -176,7 +177,7 @@ public class ServerPluginChannels extends PluginChannels&lt;ServerPluginChannelList @@ -176,7 +177,7 @@ public class ServerPluginChannels extends PluginChannels&lt;ServerPluginChannelList
176 { 177 {
177 try 178 try
178 { 179 {
179 - byte[] registrationData = this.getRegistrationData(); 180 + PacketBuffer registrationData = this.getRegistrationData();
180 if (registrationData != null) 181 if (registrationData != null)
181 { 182 {
182 this.sendRegistrationData(player, registrationData); 183 this.sendRegistrationData(player, registrationData);
@@ -184,7 +185,7 @@ public class ServerPluginChannels extends PluginChannels&lt;ServerPluginChannelList @@ -184,7 +185,7 @@ public class ServerPluginChannels extends PluginChannels&lt;ServerPluginChannelList
184 } 185 }
185 catch (Exception ex) 186 catch (Exception ex)
186 { 187 {
187 - LiteLoaderLogger.warning(ex, "Error dispatching REGISTER packet to client %s", player.getCommandSenderName()); 188 + LiteLoaderLogger.warning(ex, "Error dispatching REGISTER packet to client %s", player.getName());
188 } 189 }
189 } 190 }
190 191
@@ -192,7 +193,7 @@ public class ServerPluginChannels extends PluginChannels&lt;ServerPluginChannelList @@ -192,7 +193,7 @@ public class ServerPluginChannels extends PluginChannels&lt;ServerPluginChannelList
192 * @param netHandler 193 * @param netHandler
193 * @param registrationData 194 * @param registrationData
194 */ 195 */
195 - private void sendRegistrationData(EntityPlayerMP recipient, byte[] registrationData) 196 + private void sendRegistrationData(EntityPlayerMP recipient, PacketBuffer registrationData)
196 { 197 {
197 ServerPluginChannels.dispatch(recipient, new S3FPacketCustomPayload(CHANNEL_REGISTER, registrationData)); 198 ServerPluginChannels.dispatch(recipient, new S3FPacketCustomPayload(CHANNEL_REGISTER, registrationData));
198 } 199 }
@@ -204,7 +205,7 @@ public class ServerPluginChannels extends PluginChannels&lt;ServerPluginChannelList @@ -204,7 +205,7 @@ public class ServerPluginChannels extends PluginChannels&lt;ServerPluginChannelList
204 * @param channel Channel to send, must not be a reserved channel name 205 * @param channel Channel to send, must not be a reserved channel name
205 * @param data 206 * @param data
206 */ 207 */
207 - public static boolean sendMessage(EntityPlayerMP recipient, String channel, byte[] data, ChannelPolicy policy) 208 + public static boolean sendMessage(EntityPlayerMP recipient, String channel, PacketBuffer data, ChannelPolicy policy)
208 { 209 {
209 if (ServerPluginChannels.instance != null) 210 if (ServerPluginChannels.instance != null)
210 { 211 {
@@ -221,7 +222,7 @@ public class ServerPluginChannels extends PluginChannels&lt;ServerPluginChannelList @@ -221,7 +222,7 @@ public class ServerPluginChannels extends PluginChannels&lt;ServerPluginChannelList
221 * @param channel Channel to send, must not be a reserved channel name 222 * @param channel Channel to send, must not be a reserved channel name
222 * @param data 223 * @param data
223 */ 224 */
224 - private boolean send(EntityPlayerMP recipient, String channel, byte[] data, ChannelPolicy policy) 225 + private boolean send(EntityPlayerMP recipient, String channel, PacketBuffer data, ChannelPolicy policy)
225 { 226 {
226 if (recipient == null) return false; 227 if (recipient == null) return false;
227 228
java/common/com/mumfrey/liteloader/core/api/EnumeratorModuleFolder.java
@@ -224,7 +224,7 @@ public class EnumeratorModuleFolder implements FilenameFilter, EnumeratorModule @@ -224,7 +224,7 @@ public class EnumeratorModuleFolder implements FilenameFilter, EnumeratorModule
224 * @param candidateFile 224 * @param candidateFile
225 * @param strVersion 225 * @param strVersion
226 */ 226 */
227 - private void addModFile(File candidateFile, String strVersion) 227 + protected void addModFile(File candidateFile, String strVersion)
228 { 228 {
229 LoadableModFile modFile = new LoadableModFile(candidateFile, strVersion); 229 LoadableModFile modFile = new LoadableModFile(candidateFile, strVersion);
230 230
@@ -253,7 +253,7 @@ public class EnumeratorModuleFolder implements FilenameFilter, EnumeratorModule @@ -253,7 +253,7 @@ public class EnumeratorModuleFolder implements FilenameFilter, EnumeratorModule
253 * @param enumerator 253 * @param enumerator
254 */ 254 */
255 @SuppressWarnings("unchecked") 255 @SuppressWarnings("unchecked")
256 - private void sortAndAllocateFiles(ModularEnumerator enumerator) 256 + protected void sortAndAllocateFiles(ModularEnumerator enumerator)
257 { 257 {
258 // Copy the first entry in every version set into the modfiles list 258 // Copy the first entry in every version set into the modfiles list
259 for (Entry<String, TreeSet<LoadableMod<File>>> modFileEntry : this.versionOrderingSets.entrySet()) 259 for (Entry<String, TreeSet<LoadableMod<File>>> modFileEntry : this.versionOrderingSets.entrySet())
java/common/com/mumfrey/liteloader/core/api/LoadableModClassPath.java
1 package com.mumfrey.liteloader.core.api; 1 package com.mumfrey.liteloader.core.api;
2 2
3 import java.io.File; 3 import java.io.File;
4 -import java.io.IOException;  
5 import java.net.MalformedURLException; 4 import java.net.MalformedURLException;
6 -import java.util.zip.ZipEntry;  
7 -import java.util.zip.ZipFile;  
8 5
9 import net.minecraft.launchwrapper.LaunchClassLoader; 6 import net.minecraft.launchwrapper.LaunchClassLoader;
10 7
11 import com.google.common.base.Charsets; 8 import com.google.common.base.Charsets;
12 -import com.google.common.io.Files;  
13 import com.mumfrey.liteloader.core.LiteLoaderVersion; 9 import com.mumfrey.liteloader.core.LiteLoaderVersion;
14 import com.mumfrey.liteloader.interfaces.LoadableMod; 10 import com.mumfrey.liteloader.interfaces.LoadableMod;
15 import com.mumfrey.liteloader.resources.ModResourcePack; 11 import com.mumfrey.liteloader.resources.ModResourcePack;
@@ -111,39 +107,6 @@ public class LoadableModClassPath extends LoadableModFile @@ -111,39 +107,6 @@ public class LoadableModClassPath extends LoadableModFile
111 107
112 private static String getVersionMetaDataString(File file) 108 private static String getVersionMetaDataString(File file)
113 { 109 {
114 - try  
115 - {  
116 - if (file.isDirectory())  
117 - {  
118 - File versionMetaFile = new File(file, LoadableMod.METADATA_FILENAME);  
119 - if (versionMetaFile.exists())  
120 - {  
121 - return Files.toString(versionMetaFile, Charsets.UTF_8);  
122 - }  
123 - }  
124 - else  
125 - {  
126 - String strVersion = null;  
127 - ZipFile modZip = new ZipFile(file);  
128 - ZipEntry versionEntry = modZip.getEntry(LoadableMod.METADATA_FILENAME);  
129 - if (versionEntry != null)  
130 - {  
131 - try  
132 - {  
133 - strVersion = LoadableModFile.zipEntryToString(modZip, versionEntry);  
134 - }  
135 - catch (IOException ex) {}  
136 - }  
137 -  
138 - modZip.close();  
139 - return strVersion;  
140 - }  
141 - }  
142 - catch (IOException ex)  
143 - {  
144 - ex.printStackTrace();  
145 - }  
146 -  
147 - return null; 110 + return LoadableModFile.getFileContents(file, LoadableMod.METADATA_FILENAME, Charsets.UTF_8);
148 } 111 }
149 } 112 }
java/common/com/mumfrey/liteloader/core/api/LoadableModFile.java
@@ -22,6 +22,7 @@ import net.minecraft.client.resources.I18n; @@ -22,6 +22,7 @@ import net.minecraft.client.resources.I18n;
22 22
23 import com.google.common.base.Charsets; 23 import com.google.common.base.Charsets;
24 import com.google.common.io.ByteStreams; 24 import com.google.common.io.ByteStreams;
  25 +import com.google.common.io.Files;
25 import com.google.gson.Gson; 26 import com.google.gson.Gson;
26 import com.google.gson.JsonSyntaxException; 27 import com.google.gson.JsonSyntaxException;
27 import com.mumfrey.liteloader.api.manager.APIProvider; 28 import com.mumfrey.liteloader.api.manager.APIProvider;
@@ -485,6 +486,16 @@ public class LoadableModFile extends LoadableFile implements LoadableMod&lt;File&gt; @@ -485,6 +486,16 @@ public class LoadableModFile extends LoadableFile implements LoadableMod&lt;File&gt;
485 // Give up and use timestamp 486 // Give up and use timestamp
486 return (int)(otherMod.timeStamp - this.timeStamp); 487 return (int)(otherMod.timeStamp - this.timeStamp);
487 } 488 }
  489 +
  490 + /**
  491 + * @param name
  492 + * @param charset
  493 + * @return
  494 + */
  495 + public String getFileContents(String name, Charset charset)
  496 + {
  497 + return LoadableModFile.getFileContents(this, name, charset);
  498 + }
488 499
489 /** 500 /**
490 * @return 501 * @return
@@ -600,4 +611,48 @@ public class LoadableModFile extends LoadableFile implements LoadableMod&lt;File&gt; @@ -600,4 +611,48 @@ public class LoadableModFile extends LoadableFile implements LoadableMod&lt;File&gt;
600 611
601 return new String(bytes, bomOffset, bytes.length - bomOffset, charset); 612 return new String(bytes, bomOffset, bytes.length - bomOffset, charset);
602 } 613 }
  614 +
  615 + /**
  616 + * @param parent
  617 + * @param name
  618 + * @param charset
  619 + * @return
  620 + */
  621 + public static String getFileContents(File parent, String name, Charset charset)
  622 + {
  623 + try
  624 + {
  625 + if (parent.isDirectory())
  626 + {
  627 + File file = new File(parent, name);
  628 + if (file.isFile())
  629 + {
  630 + return Files.toString(file, charset);
  631 + }
  632 + }
  633 + else
  634 + {
  635 + String content = null;
  636 + ZipFile zipFile = new ZipFile(parent);
  637 + ZipEntry zipEntry = zipFile.getEntry(name);
  638 + if (zipEntry != null)
  639 + {
  640 + try
  641 + {
  642 + content = LoadableModFile.zipEntryToString(zipFile, zipEntry);
  643 + }
  644 + catch (IOException ex) {}
  645 + }
  646 +
  647 + zipFile.close();
  648 + return content;
  649 + }
  650 + }
  651 + catch (IOException ex)
  652 + {
  653 + ex.printStackTrace();
  654 + }
  655 +
  656 + return null;
  657 + }
603 } 658 }
java/common/com/mumfrey/liteloader/core/event/EventProxy.java
@@ -9,6 +9,7 @@ import net.minecraft.crash.CrashReportCategory; @@ -9,6 +9,7 @@ import net.minecraft.crash.CrashReportCategory;
9 9
10 import org.objectweb.asm.Type; 10 import org.objectweb.asm.Type;
11 11
  12 +import com.mumfrey.liteloader.transformers.ByteCodeUtilities;
12 import com.mumfrey.liteloader.transformers.event.EventInfo; 13 import com.mumfrey.liteloader.transformers.event.EventInfo;
13 14
14 /** 15 /**
@@ -147,19 +148,11 @@ public final class EventProxy @@ -147,19 +148,11 @@ public final class EventProxy
147 148
148 return tpl.toString(); 149 return tpl.toString();
149 } 150 }
150 - 151 +
151 private static boolean appendTypeName(StringBuilder tpl, Type type, String sourceClass) 152 private static boolean appendTypeName(StringBuilder tpl, Type type, String sourceClass)
152 { 153 {
153 switch (type.getSort()) 154 switch (type.getSort())
154 { 155 {
155 - case Type.BOOLEAN: tpl.append("boolean"); return false;  
156 - case Type.CHAR: tpl.append("char"); return false;  
157 - case Type.BYTE: tpl.append("byte"); return false;  
158 - case Type.SHORT: tpl.append("short"); return false;  
159 - case Type.INT: tpl.append("int"); return false;  
160 - case Type.FLOAT: tpl.append("float"); return false;  
161 - case Type.LONG: tpl.append("long"); return false;  
162 - case Type.DOUBLE: tpl.append("double"); return false;  
163 case Type.ARRAY: 156 case Type.ARRAY:
164 EventProxy.appendTypeName(tpl, type.getElementType(), sourceClass); 157 EventProxy.appendTypeName(tpl, type.getElementType(), sourceClass);
165 return true; 158 return true;
@@ -170,11 +163,10 @@ public final class EventProxy @@ -170,11 +163,10 @@ public final class EventProxy
170 if (typeName.endsWith("ReturnEventInfo")) tpl.append('<').append(sourceClass).append(", ?>"); 163 if (typeName.endsWith("ReturnEventInfo")) tpl.append('<').append(sourceClass).append(", ?>");
171 else if (typeName.endsWith("EventInfo")) tpl.append('<').append(sourceClass).append('>'); 164 else if (typeName.endsWith("EventInfo")) tpl.append('<').append(sourceClass).append('>');
172 return false; 165 return false;
  166 + default:
  167 + tpl.append(ByteCodeUtilities.getTypeName(type));
  168 + return false;
173 } 169 }
174 -  
175 - tpl.append("Object");  
176 -  
177 - return false;  
178 } 170 }
179 171
180 private static void addDetailLineBreak() 172 private static void addDetailLineBreak()
java/common/com/mumfrey/liteloader/core/runtime/Methods.java
@@ -13,11 +13,13 @@ public abstract class Methods @@ -13,11 +13,13 @@ public abstract class Methods
13 public static final MethodInfo runTick = new MethodInfo(Obf.Minecraft, Obf.runTick, Void.TYPE); 13 public static final MethodInfo runTick = new MethodInfo(Obf.Minecraft, Obf.runTick, Void.TYPE);
14 public static final MethodInfo updateFramebufferSize = new MethodInfo(Obf.Minecraft, Obf.updateFramebufferSize, Void.TYPE); 14 public static final MethodInfo updateFramebufferSize = new MethodInfo(Obf.Minecraft, Obf.updateFramebufferSize, Void.TYPE);
15 public static final MethodInfo framebufferRender = new MethodInfo(Obf.FrameBuffer, Obf.framebufferRender, Void.TYPE, Integer.TYPE, Integer.TYPE); 15 public static final MethodInfo framebufferRender = new MethodInfo(Obf.FrameBuffer, Obf.framebufferRender, Void.TYPE, Integer.TYPE, Integer.TYPE);
  16 + public static final MethodInfo framebufferRenderExt = new MethodInfo(Obf.FrameBuffer, Obf.framebufferRenderExt, Void.TYPE, Integer.TYPE, Integer.TYPE, Boolean.TYPE);
16 public static final MethodInfo bindFramebufferTexture = new MethodInfo(Obf.FrameBuffer, Obf.bindFramebufferTexture, Void.TYPE); 17 public static final MethodInfo bindFramebufferTexture = new MethodInfo(Obf.FrameBuffer, Obf.bindFramebufferTexture, Void.TYPE);
17 - public static final MethodInfo sendChatMessage = new MethodInfo(Obf.EntityClientPlayerMP, Obf.sendChatMessage, Void.TYPE, String.class); 18 + public static final MethodInfo sendChatMessage = new MethodInfo(Obf.EntityPlayerSP, Obf.sendChatMessage, Void.TYPE, String.class);
18 public static final MethodInfo renderWorld = new MethodInfo(Obf.EntityRenderer, Obf.renderWorld, Void.TYPE, Float.TYPE, Long.TYPE); 19 public static final MethodInfo renderWorld = new MethodInfo(Obf.EntityRenderer, Obf.renderWorld, Void.TYPE, Float.TYPE, Long.TYPE);
  20 + public static final MethodInfo renderWorldPass = new MethodInfo(Obf.EntityRenderer, Obf.renderWorldPass, Void.TYPE, Integer.TYPE, Float.TYPE, Long.TYPE);
19 public static final MethodInfo updateCameraAndRender = new MethodInfo(Obf.EntityRenderer, Obf.updateCameraAndRender, Void.TYPE, Float.TYPE); 21 public static final MethodInfo updateCameraAndRender = new MethodInfo(Obf.EntityRenderer, Obf.updateCameraAndRender, Void.TYPE, Float.TYPE);
20 - public static final MethodInfo renderGameOverlay = new MethodInfo(Obf.GuiIngame, Obf.renderGameOverlay, Void.TYPE, Float.TYPE, Boolean.TYPE, Integer.TYPE, Integer.TYPE); 22 + public static final MethodInfo renderGameOverlay = new MethodInfo(Obf.GuiIngame, Obf.renderGameOverlay, Void.TYPE, Float.TYPE);
21 public static final MethodInfo drawChat = new MethodInfo(Obf.GuiNewChat, Obf.drawChat, Void.TYPE, Integer.TYPE); 23 public static final MethodInfo drawChat = new MethodInfo(Obf.GuiNewChat, Obf.drawChat, Void.TYPE, Integer.TYPE);
22 public static final MethodInfo integratedServerCtor = new MethodInfo(Obf.IntegratedServer, Obf.constructor, Void.TYPE, Obf.Minecraft, String.class, String.class, Obf.WorldSettings); 24 public static final MethodInfo integratedServerCtor = new MethodInfo(Obf.IntegratedServer, Obf.constructor, Void.TYPE, Obf.Minecraft, String.class, String.class, Obf.WorldSettings);
23 public static final MethodInfo initPlayerConnection = new MethodInfo(Obf.ServerConfigurationManager, Obf.initializeConnectionToPlayer, Void.TYPE, Obf.NetworkManager, Obf.EntityPlayerMP); 25 public static final MethodInfo initPlayerConnection = new MethodInfo(Obf.ServerConfigurationManager, Obf.initializeConnectionToPlayer, Void.TYPE, Obf.NetworkManager, Obf.EntityPlayerMP);
@@ -25,12 +27,12 @@ public abstract class Methods @@ -25,12 +27,12 @@ public abstract class Methods
25 public static final MethodInfo playerLoggedOut = new MethodInfo(Obf.ServerConfigurationManager, Obf.playerLoggedOut, Void.TYPE, Obf.EntityPlayerMP); 27 public static final MethodInfo playerLoggedOut = new MethodInfo(Obf.ServerConfigurationManager, Obf.playerLoggedOut, Void.TYPE, Obf.EntityPlayerMP);
26 public static final MethodInfo spawnPlayer = new MethodInfo(Obf.ServerConfigurationManager, Obf.spawnPlayer, Obf.EntityPlayerMP, Obf.GameProfile); 28 public static final MethodInfo spawnPlayer = new MethodInfo(Obf.ServerConfigurationManager, Obf.spawnPlayer, Obf.EntityPlayerMP, Obf.GameProfile);
27 public static final MethodInfo respawnPlayer = new MethodInfo(Obf.ServerConfigurationManager, Obf.respawnPlayer, Obf.EntityPlayerMP, Obf.EntityPlayerMP, Integer.TYPE, Boolean.TYPE); 29 public static final MethodInfo respawnPlayer = new MethodInfo(Obf.ServerConfigurationManager, Obf.respawnPlayer, Obf.EntityPlayerMP, Obf.EntityPlayerMP, Integer.TYPE, Boolean.TYPE);
  30 + public static final MethodInfo glClear = new MethodInfo(Obf.GlStateManager, Obf.clear, Void.TYPE, Integer.TYPE);
  31 + public static final MethodInfo getProfile = new MethodInfo(Obf.Session, Obf.getProfile, Obf.GameProfile);
28 32
29 public static final MethodInfo startSection = new MethodInfo(Obf.Profiler, Obf.startSection, Void.TYPE, String.class); 33 public static final MethodInfo startSection = new MethodInfo(Obf.Profiler, Obf.startSection, Void.TYPE, String.class);
30 public static final MethodInfo endSection = new MethodInfo(Obf.Profiler, Obf.endSection, Void.TYPE); 34 public static final MethodInfo endSection = new MethodInfo(Obf.Profiler, Obf.endSection, Void.TYPE);
31 public static final MethodInfo endStartSection = new MethodInfo(Obf.Profiler, Obf.endStartSection, Void.TYPE, String.class); 35 public static final MethodInfo endStartSection = new MethodInfo(Obf.Profiler, Obf.endStartSection, Void.TYPE, String.class);
32 -  
33 - public static final MethodInfo glClear = new MethodInfo(Obf.GL11, "glClear", "(I)V");  
34 36
35 private Methods() {} 37 private Methods() {}
36 } 38 }
java/common/com/mumfrey/liteloader/core/runtime/Obf.java
@@ -2,13 +2,16 @@ package com.mumfrey.liteloader.core.runtime; @@ -2,13 +2,16 @@ package com.mumfrey.liteloader.core.runtime;
2 2
3 import java.io.IOException; 3 import java.io.IOException;
4 import java.io.InputStream; 4 import java.io.InputStream;
  5 +import java.lang.reflect.Field;
  6 +import java.util.HashMap;
  7 +import java.util.Map;
5 import java.util.Properties; 8 import java.util.Properties;
6 9
7 /** 10 /**
8 * Centralised obfuscation table for LiteLoader 11 * Centralised obfuscation table for LiteLoader
9 * 12 *
10 * @author Adam Mummery-Smith 13 * @author Adam Mummery-Smith
11 - * TODO Obfuscation 1.7.10 14 + * TODO Obfuscation 1.8
12 */ 15 */
13 public class Obf 16 public class Obf
14 { 17 {
@@ -29,77 +32,91 @@ public class Obf @@ -29,77 +32,91 @@ public class Obf
29 32
30 // Classes 33 // Classes
31 // ----------------------------------------------------------------------------------------- 34 // -----------------------------------------------------------------------------------------
32 - public static final Obf Minecraft = new Obf("net.minecraft.client.Minecraft", "bao" );  
33 - public static final Obf EntityRenderer = new Obf("net.minecraft.client.renderer.EntityRenderer", "blt" );  
34 - public static final Obf GuiIngame = new Obf("net.minecraft.client.gui.GuiIngame", "bbv" );  
35 - public static final Obf Profiler = new Obf("net.minecraft.profiler.Profiler", "qi" ); 35 + public static final Obf Minecraft = new Obf("net.minecraft.client.Minecraft", "bsu" );
  36 + public static final Obf EntityRenderer = new Obf("net.minecraft.client.renderer.EntityRenderer", "cji" );
  37 + public static final Obf GuiIngame = new Obf("net.minecraft.client.gui.GuiIngame", "btz" );
  38 + public static final Obf Profiler = new Obf("net.minecraft.profiler.Profiler", "uw" );
36 public static final Obf CrashReport$6 = new Obf("net.minecraft.crash.CrashReport$6", "h" ); 39 public static final Obf CrashReport$6 = new Obf("net.minecraft.crash.CrashReport$6", "h" );
37 - public static final Obf INetHandler = new Obf("net.minecraft.network.INetHandler", "fb" );  
38 - public static final Obf IntegratedServer = new Obf("net.minecraft.server.integrated.IntegratedServer", "bsx" );  
39 - public static final Obf WorldSettings = new Obf("net.minecraft.world.WorldSettings", "ahj" );  
40 - public static final Obf ServerConfigurationManager = new Obf("net.minecraft.server.management.ServerConfigurationManager", "oi" );  
41 - public static final Obf EntityPlayerMP = new Obf("net.minecraft.entity.player.EntityPlayerMP", "mw" );  
42 - public static final Obf NetworkManager = new Obf("net.minecraft.network.NetworkManager", "ej" );  
43 - public static final Obf DedicatedServer = new Obf("net.minecraft.server.dedicated.DedicatedServer", "lt" );  
44 - public static final Obf EntityClientPlayerMP = new Obf("net.minecraft.client.entity.EntityClientPlayerMP", "bjk" );  
45 - public static final Obf Blocks = new Obf("net.minecraft.init.Blocks", "ajn" );  
46 - public static final Obf Items = new Obf("net.minecraft.init.Items", "ade" );  
47 - public static final Obf FrameBuffer = new Obf("net.minecraft.client.shader.Framebuffer", "bmg" );  
48 - public static final Obf GuiNewChat = new Obf("net.minecraft.client.gui.GuiNewChat", "bcc" );  
49 -  
50 - // Packets  
51 - // -----------------------------------------------------------------------------------------  
52 - @Deprecated public static final Obf S01PacketJoinGame = Packets.S01PacketJoinGame;  
53 - @Deprecated public static final Obf S02PacketLoginSuccess = Packets.S02PacketLoginSuccess;  
54 - @Deprecated public static final Obf S02PacketChat = Packets.S02PacketChat;  
55 - @Deprecated public static final Obf S3FPacketCustomPayload = Packets.S3FPacketCustomPayload;  
56 - @Deprecated public static final Obf C01PacketChatMessage = Packets.C01PacketChatMessage;  
57 - @Deprecated public static final Obf C17PacketCustomPayload = Packets.C17PacketCustomPayload; 40 + public static final Obf INetHandler = new Obf("net.minecraft.network.INetHandler", "hg" );
  41 + public static final Obf IntegratedServer = new Obf("net.minecraft.server.integrated.IntegratedServer", "cyk" );
  42 + public static final Obf WorldSettings = new Obf("net.minecraft.world.WorldSettings", "arb" );
  43 + public static final Obf ServerConfigurationManager = new Obf("net.minecraft.server.management.ServerConfigurationManager", "sn" );
  44 + public static final Obf EntityPlayerMP = new Obf("net.minecraft.entity.player.EntityPlayerMP", "qw" );
  45 + public static final Obf NetworkManager = new Obf("net.minecraft.network.NetworkManager", "gr" );
  46 + public static final Obf DedicatedServer = new Obf("net.minecraft.server.dedicated.DedicatedServer", "po" );
  47 + public static final Obf EntityPlayerSP = new Obf("net.minecraft.client.entity.EntityPlayerSP", "cio" );
  48 + public static final Obf Blocks = new Obf("net.minecraft.init.Blocks", "aty" );
  49 + public static final Obf Items = new Obf("net.minecraft.init.Items", "amk" );
  50 + public static final Obf FrameBuffer = new Obf("net.minecraft.client.shader.Framebuffer", "ckw" );
  51 + public static final Obf GuiNewChat = new Obf("net.minecraft.client.gui.GuiNewChat", "buh" );
  52 + public static final Obf GlStateManager = new Obf("net.minecraft.client.renderer.GlStateManager", "cjm" );
  53 + public static final Obf Session = new Obf("net.minecraft.util.Session", "btw" );
58 54
59 // Fields 55 // Fields
60 // ----------------------------------------------------------------------------------------- 56 // -----------------------------------------------------------------------------------------
61 - public static final Obf minecraftProfiler = new Obf("field_71424_I", "z" ); // Minecraft/mcProfiler  
62 - public static final Obf entityRenderMap = new Obf("field_78729_o", "q" ); // RenderManager/entityRenderMap  
63 - public static final Obf reloadListeners = new Obf("field_110546_b", "d" ); // SimpleReloadableResourceManager/reloadListeners  
64 - public static final Obf netManager = new Obf("field_147393_d", "d" ); // NetHandlerLoginClient/field_147393_d  
65 - public static final Obf registryObjects = new Obf("field_82596_a", "c" ); // RegistrySimple/registryObjects  
66 - public static final Obf underlyingIntegerMap = new Obf("field_148759_a", "a" ); // RegistryNamespaced/underlyingIntegerMap  
67 - public static final Obf identityMap = new Obf("field_148749_a", "a" ); // ObjectIntIdentityMap/field_148749_a  
68 - public static final Obf objectList = new Obf("field_148748_b", "b" ); // ObjectIntIdentityMap/field_148748_b  
69 - public static final Obf mapSpecialRenderers = new Obf("field_147559_m", "m" ); // TileEntityRendererDispatcher/mapSpecialRenderers  
70 - public static final Obf tileEntityNameToClassMap = new Obf("field_145855_i", "i" ); // TileEntity/nameToClassMap  
71 - public static final Obf tileEntityClassToNameMap = new Obf("field_145853_j", "i" ); // TileEntity/classToNameMap 57 + public static final Obf minecraftProfiler = new Obf("field_71424_I", "y" );
  58 + public static final Obf entityRenderMap = new Obf("field_78729_o", "k" );
  59 + public static final Obf reloadListeners = new Obf("field_110546_b", "d" );
  60 + public static final Obf networkManager = new Obf("field_147393_d", "d" );
  61 + public static final Obf registryObjects = new Obf("field_82596_a", "c" );
  62 + public static final Obf underlyingIntegerMap = new Obf("field_148759_a", "a" );
  63 + public static final Obf identityMap = new Obf("field_148749_a", "a" );
  64 + public static final Obf objectList = new Obf("field_148748_b", "b" );
  65 + public static final Obf mapSpecialRenderers = new Obf("field_147559_m", "m" );
  66 + public static final Obf tileEntityNameToClassMap = new Obf("field_145855_i", "f" );
  67 + public static final Obf tileEntityClassToNameMap = new Obf("field_145853_j", "g" );
72 68
73 // Methods 69 // Methods
74 // ----------------------------------------------------------------------------------------- 70 // -----------------------------------------------------------------------------------------
75 public static final Obf processPacket = new Obf("func_148833_a", "a" ); 71 public static final Obf processPacket = new Obf("func_148833_a", "a" );
76 - public static final Obf runGameLoop = new Obf("func_71411_J", "ak" );  
77 - public static final Obf runTick = new Obf("func_71407_l", "p" );  
78 - public static final Obf updateCameraAndRender = new Obf("func_78480_b", "b" );  
79 - public static final Obf renderWorld = new Obf("func_78471_a", "a" );  
80 - public static final Obf renderGameOverlay = new Obf("func_73830_a", "a" );  
81 - public static final Obf startSection = new Obf("func_76320_a", "a" );  
82 - public static final Obf endSection = new Obf("func_76319_b", "b" );  
83 - public static final Obf endStartSection = new Obf("func_76318_c", "c" );  
84 - public static final Obf spawnPlayer = new Obf("func_148545_a", "a" ); 72 + public static final Obf runGameLoop = new Obf("func_71411_J", "as" );
  73 + public static final Obf runTick = new Obf("func_71407_l", "r" );
  74 + public static final Obf updateCameraAndRender = new Obf("func_78480_b", "b" );
  75 + public static final Obf renderWorld = new Obf("func_78471_a", "a" );
  76 + public static final Obf renderGameOverlay = new Obf("func_175180_a", "a" );
  77 + public static final Obf startSection = new Obf("func_76320_a", "a" );
  78 + public static final Obf endSection = new Obf("func_76319_b", "b" );
  79 + public static final Obf endStartSection = new Obf("func_76318_c", "c" );
  80 + public static final Obf spawnPlayer = new Obf("func_148545_a", "f" );
85 public static final Obf respawnPlayer = new Obf("func_72368_a", "a" ); 81 public static final Obf respawnPlayer = new Obf("func_72368_a", "a" );
86 public static final Obf initializeConnectionToPlayer = new Obf("func_72355_a", "a" ); 82 public static final Obf initializeConnectionToPlayer = new Obf("func_72355_a", "a" );
87 public static final Obf playerLoggedIn = new Obf("func_72377_c", "c" ); 83 public static final Obf playerLoggedIn = new Obf("func_72377_c", "c" );
88 public static final Obf playerLoggedOut = new Obf("func_72367_e", "e" ); 84 public static final Obf playerLoggedOut = new Obf("func_72367_e", "e" );
89 - public static final Obf startGame = new Obf("func_71384_a", "ag" );  
90 - public static final Obf startServer = new Obf("func_71197_b", "e" );  
91 - public static final Obf startServerThread = new Obf("func_71256_s", "w" );  
92 - public static final Obf sendChatMessage = new Obf("func_71165_d", "a" );  
93 - public static final Obf updateFramebufferSize = new Obf("func_147119_ah", "an" ); 85 + public static final Obf startGame = new Obf("func_71384_a", "aj" );
  86 + public static final Obf startServer = new Obf("func_71197_b", "i" );
  87 + public static final Obf startServerThread = new Obf("func_71256_s", "B" );
  88 + public static final Obf sendChatMessage = new Obf("func_71165_d", "e" );
  89 + public static final Obf updateFramebufferSize = new Obf("func_147119_ah", "av" );
94 public static final Obf framebufferRender = new Obf("func_147615_c", "c" ); 90 public static final Obf framebufferRender = new Obf("func_147615_c", "c" );
  91 + public static final Obf framebufferRenderExt = new Obf("func_178038_a", "a" );
95 public static final Obf bindFramebufferTexture = new Obf("func_147612_c", "c" ); 92 public static final Obf bindFramebufferTexture = new Obf("func_147612_c", "c" );
96 public static final Obf drawChat = new Obf("func_146230_a", "a" ); 93 public static final Obf drawChat = new Obf("func_146230_a", "a" );
  94 + public static final Obf clear = new Obf("func_179086_m", "m" );
  95 + public static final Obf renderWorldPass = new Obf("func_175068_a", "a" );
  96 + public static final Obf getProfile = new Obf("func_148256_e", "a" );
97 97
98 public static final int MCP = 0; 98 public static final int MCP = 0;
99 public static final int SRG = 1; 99 public static final int SRG = 1;
100 public static final int OBF = 2; 100 public static final int OBF = 2;
101 101
102 private static Properties mcpNames; 102 private static Properties mcpNames;
  103 +
  104 + private static final Map<String, Obf> obfs = new HashMap<String, Obf>();
  105 +
  106 + static
  107 + {
  108 + try
  109 + {
  110 + for (Field fd : Obf.class.getFields())
  111 + {
  112 + if (fd.getType().equals(Obf.class))
  113 + {
  114 + Obf.obfs.put(fd.getName(), (Obf)fd.get(null));
  115 + }
  116 + }
  117 + }
  118 + catch (IllegalAccessException ex) {}
  119 + }
103 120
104 /** 121 /**
105 * Array of names, indexed by MCP, SRG, OBF constants 122 * Array of names, indexed by MCP, SRG, OBF constants
@@ -205,4 +222,13 @@ public class Obf @@ -205,4 +222,13 @@ public class Obf
205 222
206 return Obf.mcpNames.getProperty(seargeName, seargeName); 223 return Obf.mcpNames.getProperty(seargeName, seargeName);
207 } 224 }
  225 +
  226 + /**
  227 + * @param name
  228 + * @return
  229 + */
  230 + public static Obf getByName(String name)
  231 + {
  232 + return Obf.obfs.get(name);
  233 + }
208 } 234 }
java/common/com/mumfrey/liteloader/core/runtime/Packets.java
1 package com.mumfrey.liteloader.core.runtime; 1 package com.mumfrey.liteloader.core.runtime;
2 2
  3 +import java.util.HashMap;
  4 +import java.util.Map;
  5 +
3 /** 6 /**
4 * Packet obfuscation table 7 * Packet obfuscation table
5 * 8 *
6 * @author Adam Mummery-Smith 9 * @author Adam Mummery-Smith
7 - * TODO Obfuscation 1.7.10 10 + * TODO Obfuscation 1.8
8 */ 11 */
9 -@SuppressWarnings("hiding")  
10 public class Packets extends Obf 12 public class Packets extends Obf
11 { 13 {
12 - public static final Packets S08PacketPlayerPosLook = new Packets("net.minecraft.network.play.server.S08PacketPlayerPosLook", "fu");  
13 - public static final Packets S0EPacketSpawnObject = new Packets("net.minecraft.network.play.server.S0EPacketSpawnObject", "fw");  
14 - public static final Packets S11PacketSpawnExperienceOrb = new Packets("net.minecraft.network.play.server.S11PacketSpawnExperienceOrb", "fx");  
15 - public static final Packets S2CPacketSpawnGlobalEntity = new Packets("net.minecraft.network.play.server.S2CPacketSpawnGlobalEntity", "fy");  
16 - public static final Packets S0FPacketSpawnMob = new Packets("net.minecraft.network.play.server.S0FPacketSpawnMob", "fz");  
17 - public static final Packets S10PacketSpawnPainting = new Packets("net.minecraft.network.play.server.S10PacketSpawnPainting", "ga");  
18 - public static final Packets S0CPacketSpawnPlayer = new Packets("net.minecraft.network.play.server.S0CPacketSpawnPlayer", "gb");  
19 - public static final Packets S0BPacketAnimation = new Packets("net.minecraft.network.play.server.S0BPacketAnimation", "gc");  
20 - public static final Packets S37PacketStatistics = new Packets("net.minecraft.network.play.server.S37PacketStatistics", "gd");  
21 - public static final Packets S25PacketBlockBreakAnim = new Packets("net.minecraft.network.play.server.S25PacketBlockBreakAnim", "ge");  
22 - public static final Packets S35PacketUpdateTileEntity = new Packets("net.minecraft.network.play.server.S35PacketUpdateTileEntity", "gf");  
23 - public static final Packets S24PacketBlockAction = new Packets("net.minecraft.network.play.server.S24PacketBlockAction", "gg");  
24 - public static final Packets S23PacketBlockChange = new Packets("net.minecraft.network.play.server.S23PacketBlockChange", "gh");  
25 - public static final Packets S3APacketTabComplete = new Packets("net.minecraft.network.play.server.S3APacketTabComplete", "gi");  
26 - public static final Packets S02PacketChat = new Packets("net.minecraft.network.play.server.S02PacketChat", "gj");  
27 - public static final Packets S22PacketMultiBlockChange = new Packets("net.minecraft.network.play.server.S22PacketMultiBlockChange", "gk");  
28 - public static final Packets S32PacketConfirmTransaction = new Packets("net.minecraft.network.play.server.S32PacketConfirmTransaction", "gl");  
29 - public static final Packets S2EPacketCloseWindow = new Packets("net.minecraft.network.play.server.S2EPacketCloseWindow", "gm");  
30 - public static final Packets S2DPacketOpenWindow = new Packets("net.minecraft.network.play.server.S2DPacketOpenWindow", "gn");  
31 - public static final Packets S30PacketWindowItems = new Packets("net.minecraft.network.play.server.S30PacketWindowItems", "go");  
32 - public static final Packets S31PacketWindowProperty = new Packets("net.minecraft.network.play.server.S31PacketWindowProperty", "gp");  
33 - public static final Packets S2FPacketSetSlot = new Packets("net.minecraft.network.play.server.S2FPacketSetSlot", "gq");  
34 - public static final Packets S3FPacketCustomPayload = new Packets("net.minecraft.network.play.server.S3FPacketCustomPayload", "gr");  
35 - public static final Packets S40PacketDisconnect = new Packets("net.minecraft.network.play.server.S40PacketDisconnect", "gs");  
36 - public static final Packets S19PacketEntityStatus = new Packets("net.minecraft.network.play.server.S19PacketEntityStatus", "gt");  
37 - public static final Packets S27PacketExplosion = new Packets("net.minecraft.network.play.server.S27PacketExplosion", "gu");  
38 - public static final Packets S2BPacketChangeGameState = new Packets("net.minecraft.network.play.server.S2BPacketChangeGameState", "gv");  
39 - public static final Packets S00PacketKeepAlive = new Packets("net.minecraft.network.play.server.S00PacketKeepAlive", "gw");  
40 - public static final Packets S21PacketChunkData = new Packets("net.minecraft.network.play.server.S21PacketChunkData", "gx");  
41 - public static final Packets S21PacketChunkData$Extracted = new Packets("net.minecraft.network.play.server.S21PacketChunkData$Extracted", "gy");  
42 - public static final Packets S26PacketMapChunkBulk = new Packets("net.minecraft.network.play.server.S26PacketMapChunkBulk", "gz");  
43 - public static final Packets S28PacketEffect = new Packets("net.minecraft.network.play.server.S28PacketEffect", "ha");  
44 - public static final Packets S2APacketParticles = new Packets("net.minecraft.network.play.server.S2APacketParticles", "hb");  
45 - public static final Packets S29PacketSoundEffect = new Packets("net.minecraft.network.play.server.S29PacketSoundEffect", "hc");  
46 - public static final Packets S01PacketJoinGame = new Packets("net.minecraft.network.play.server.S01PacketJoinGame", "hd");  
47 - public static final Packets S34PacketMaps = new Packets("net.minecraft.network.play.server.S34PacketMaps", "he");  
48 - public static final Packets S14PacketEntity = new Packets("net.minecraft.network.play.server.S14PacketEntity", "hf");  
49 - public static final Packets S15PacketEntityRelMove = new Packets("net.minecraft.network.play.server.S14PacketEntity$S15PacketEntityRelMove", "hg");  
50 - public static final Packets S17PacketEntityLookMove = new Packets("net.minecraft.network.play.server.S14PacketEntity$S17PacketEntityLookMove", "hh");  
51 - public static final Packets S16PacketEntityLook = new Packets("net.minecraft.network.play.server.S14PacketEntity$S16PacketEntityLook", "hi");  
52 - public static final Packets S36PacketSignEditorOpen = new Packets("net.minecraft.network.play.server.S36PacketSignEditorOpen", "hj");  
53 - public static final Packets S39PacketPlayerAbilities = new Packets("net.minecraft.network.play.server.S39PacketPlayerAbilities", "hk");  
54 - public static final Packets S38PacketPlayerListItem = new Packets("net.minecraft.network.play.server.S38PacketPlayerListItem", "ho");  
55 - public static final Packets S0APacketUseBed = new Packets("net.minecraft.network.play.server.S0APacketUseBed", "hp");  
56 - public static final Packets S13PacketDestroyEntities = new Packets("net.minecraft.network.play.server.S13PacketDestroyEntities", "hq");  
57 - public static final Packets S1EPacketRemoveEntityEffect = new Packets("net.minecraft.network.play.server.S1EPacketRemoveEntityEffect", "hr");  
58 - public static final Packets S07PacketRespawn = new Packets("net.minecraft.network.play.server.S07PacketRespawn", "hs");  
59 - public static final Packets S19PacketEntityHeadLook = new Packets("net.minecraft.network.play.server.S19PacketEntityHeadLook", "ht");  
60 - public static final Packets S09PacketHeldItemChange = new Packets("net.minecraft.network.play.server.S09PacketHeldItemChange", "hu");  
61 - public static final Packets S3DPacketDisplayScoreboard = new Packets("net.minecraft.network.play.server.S3DPacketDisplayScoreboard", "hv");  
62 - public static final Packets S1CPacketEntityMetadata = new Packets("net.minecraft.network.play.server.S1CPacketEntityMetadata", "hw");  
63 - public static final Packets S1BPacketEntityAttach = new Packets("net.minecraft.network.play.server.S1BPacketEntityAttach", "hx");  
64 - public static final Packets S12PacketEntityVelocity = new Packets("net.minecraft.network.play.server.S12PacketEntityVelocity", "hy");  
65 - public static final Packets S04PacketEntityEquipment = new Packets("net.minecraft.network.play.server.S04PacketEntityEquipment", "hz");  
66 - public static final Packets S1FPacketSetExperience = new Packets("net.minecraft.network.play.server.S1FPacketSetExperience", "ia");  
67 - public static final Packets S06PacketUpdateHealth = new Packets("net.minecraft.network.play.server.S06PacketUpdateHealth", "ib");  
68 - public static final Packets S3BPacketScoreboardObjective = new Packets("net.minecraft.network.play.server.S3BPacketScoreboardObjective", "ic");  
69 - public static final Packets S3EPacketTeams = new Packets("net.minecraft.network.play.server.S3EPacketTeams", "id");  
70 - public static final Packets S3CPacketUpdateScore = new Packets("net.minecraft.network.play.server.S3CPacketUpdateScore", "ie");  
71 - public static final Packets S05PacketSpawnPosition = new Packets("net.minecraft.network.play.server.S05PacketSpawnPosition", "ig");  
72 - public static final Packets S03PacketTimeUpdate = new Packets("net.minecraft.network.play.server.S03PacketTimeUpdate", "ih");  
73 - public static final Packets S33PacketUpdateSign = new Packets("net.minecraft.network.play.server.S33PacketUpdateSign", "ii");  
74 - public static final Packets S0DPacketCollectItem = new Packets("net.minecraft.network.play.server.S0DPacketCollectItem", "ij");  
75 - public static final Packets S18PacketEntityTeleport = new Packets("net.minecraft.network.play.server.S18PacketEntityTeleport", "ik");  
76 - public static final Packets S20PacketEntityProperties = new Packets("net.minecraft.network.play.server.S20PacketEntityProperties", "il");  
77 - public static final Packets S20PacketEntityProperties$Snapshot = new Packets("net.minecraft.network.play.server.S20PacketEntityProperties$Snapshot", "im");  
78 - public static final Packets S1DPacketEntityEffect = new Packets("net.minecraft.network.play.server.S1DPacketEntityEffect", "in");  
79 - public static final Packets C0APacketAnimation = new Packets("net.minecraft.network.play.client.C0APacketAnimation", "ip");  
80 - public static final Packets C14PacketTabComplete = new Packets("net.minecraft.network.play.client.C14PacketTabComplete", "iq");  
81 - public static final Packets C01PacketChatMessage = new Packets("net.minecraft.network.play.client.C01PacketChatMessage", "ir");  
82 - public static final Packets C16PacketClientStatus = new Packets("net.minecraft.network.play.client.C16PacketClientStatus", "is");  
83 - public static final Packets C16PacketClientStatus$EnumState = new Packets("net.minecraft.network.play.client.C16PacketClientStatus$EnumState", "it");  
84 - public static final Packets C15PacketClientSettings = new Packets("net.minecraft.network.play.client.C15PacketClientSettings", "iu");  
85 - public static final Packets C0FPacketConfirmTransaction = new Packets("net.minecraft.network.play.client.C0FPacketConfirmTransaction", "iv");  
86 - public static final Packets C11PacketEnchantItem = new Packets("net.minecraft.network.play.client.C11PacketEnchantItem", "iw");  
87 - public static final Packets C0EPacketClickWindow = new Packets("net.minecraft.network.play.client.C0EPacketClickWindow", "ix");  
88 - public static final Packets C0DPacketCloseWindow = new Packets("net.minecraft.network.play.client.C0DPacketCloseWindow", "iy");  
89 - public static final Packets C17PacketCustomPayload = new Packets("net.minecraft.network.play.client.C17PacketCustomPayload", "iz");  
90 - public static final Packets C02PacketUseEntity = new Packets("net.minecraft.network.play.client.C02PacketUseEntity", "ja");  
91 - public static final Packets C02PacketUseEntity$Action = new Packets("net.minecraft.network.play.client.C02PacketUseEntity$Action", "jb");  
92 - public static final Packets C00PacketKeepAlive = new Packets("net.minecraft.network.play.client.C00PacketKeepAlive", "jc");  
93 - public static final Packets C03PacketPlayer = new Packets("net.minecraft.network.play.client.C03PacketPlayer", "jd");  
94 - public static final Packets C04PacketPlayerPosition = new Packets("net.minecraft.network.play.client.C03PacketPlayer$C04PacketPlayerPosition", "je");  
95 - public static final Packets C06PacketPlayerPosLook = new Packets("net.minecraft.network.play.client.C03PacketPlayer$C06PacketPlayerPosLook", "jf");  
96 - public static final Packets C05PacketPlayerLook = new Packets("net.minecraft.network.play.client.C03PacketPlayer$C05PacketPlayerLook", "jg");  
97 - public static final Packets C13PacketPlayerAbilities = new Packets("net.minecraft.network.play.client.C13PacketPlayerAbilities", "jh");  
98 - public static final Packets C07PacketPlayerDigging = new Packets("net.minecraft.network.play.client.C07PacketPlayerDigging", "ji");  
99 - public static final Packets C0BPacketEntityAction = new Packets("net.minecraft.network.play.client.C0BPacketEntityAction", "jj");  
100 - public static final Packets C0CPacketInput = new Packets("net.minecraft.network.play.client.C0CPacketInput", "jk");  
101 - public static final Packets C09PacketHeldItemChange = new Packets("net.minecraft.network.play.client.C09PacketHeldItemChange", "jl");  
102 - public static final Packets C10PacketCreativeInventoryAction = new Packets("net.minecraft.network.play.client.C10PacketCreativeInventoryAction", "jm");  
103 - public static final Packets C12PacketUpdateSign = new Packets("net.minecraft.network.play.client.C12PacketUpdateSign", "jn");  
104 - public static final Packets C08PacketPlayerBlockPlacement = new Packets("net.minecraft.network.play.client.C08PacketPlayerBlockPlacement", "jo");  
105 - public static final Packets C00Handshake = new Packets("net.minecraft.network.handshake.client.C00Handshake", "jp");  
106 - public static final Packets S02PacketLoginSuccess = new Packets("net.minecraft.network.login.server.S02PacketLoginSuccess", "js");  
107 - public static final Packets S01PacketEncryptionRequest = new Packets("net.minecraft.network.login.server.S01PacketEncryptionRequest", "jt");  
108 - public static final Packets S00PacketDisconnect = new Packets("net.minecraft.network.login.server.S00PacketDisconnect", "ju");  
109 - public static final Packets C00PacketLoginStart = new Packets("net.minecraft.network.login.client.C00PacketLoginStart", "jw");  
110 - public static final Packets C01PacketEncryptionResponse = new Packets("net.minecraft.network.login.client.C01PacketEncryptionResponse", "jx");  
111 - public static final Packets S01PacketPong = new Packets("net.minecraft.network.status.server.S01PacketPong", "jz");  
112 - public static final Packets S00PacketServerInfo = new Packets("net.minecraft.network.status.server.S00PacketServerInfo", "ka"); 14 + private static Map<String, Packets> packetMap = new HashMap<String, Packets>();
  15 +
  16 + public static Packets S08PacketPlayerPosLook = new Packets("net.minecraft.network.play.server.S08PacketPlayerPosLook", "ii");
  17 + public static Packets S0EPacketSpawnObject = new Packets("net.minecraft.network.play.server.S0EPacketSpawnObject", "il");
  18 + public static Packets S11PacketSpawnExperienceOrb = new Packets("net.minecraft.network.play.server.S11PacketSpawnExperienceOrb", "im");
  19 + public static Packets S2CPacketSpawnGlobalEntity = new Packets("net.minecraft.network.play.server.S2CPacketSpawnGlobalEntity", "in");
  20 + public static Packets S0FPacketSpawnMob = new Packets("net.minecraft.network.play.server.S0FPacketSpawnMob", "io");
  21 + public static Packets S10PacketSpawnPainting = new Packets("net.minecraft.network.play.server.S10PacketSpawnPainting", "ip");
  22 + public static Packets S0CPacketSpawnPlayer = new Packets("net.minecraft.network.play.server.S0CPacketSpawnPlayer", "iq");
  23 + public static Packets S0BPacketAnimation = new Packets("net.minecraft.network.play.server.S0BPacketAnimation", "ir");
  24 + public static Packets S37PacketStatistics = new Packets("net.minecraft.network.play.server.S37PacketStatistics", "is");
  25 + public static Packets S25PacketBlockBreakAnim = new Packets("net.minecraft.network.play.server.S25PacketBlockBreakAnim", "it");
  26 + public static Packets S35PacketUpdateTileEntity = new Packets("net.minecraft.network.play.server.S35PacketUpdateTileEntity", "iu");
  27 + public static Packets S24PacketBlockAction = new Packets("net.minecraft.network.play.server.S24PacketBlockAction", "iv");
  28 + public static Packets S23PacketBlockChange = new Packets("net.minecraft.network.play.server.S23PacketBlockChange", "iw");
  29 + public static Packets S41PacketServerDifficulty = new Packets("net.minecraft.network.play.server.S41PacketServerDifficulty", "ix");
  30 + public static Packets S3APacketTabComplete = new Packets("net.minecraft.network.play.server.S3APacketTabComplete", "iy");
  31 + public static Packets S02PacketChat = new Packets("net.minecraft.network.play.server.S02PacketChat", "iz");
  32 + public static Packets S22PacketMultiBlockChange = new Packets("net.minecraft.network.play.server.S22PacketMultiBlockChange", "ja");
  33 + public static Packets S32PacketConfirmTransaction = new Packets("net.minecraft.network.play.server.S32PacketConfirmTransaction", "jc");
  34 + public static Packets S2EPacketCloseWindow = new Packets("net.minecraft.network.play.server.S2EPacketCloseWindow", "jd");
  35 + public static Packets S2DPacketOpenWindow = new Packets("net.minecraft.network.play.server.S2DPacketOpenWindow", "je");
  36 + public static Packets S30PacketWindowItems = new Packets("net.minecraft.network.play.server.S30PacketWindowItems", "jf");
  37 + public static Packets S31PacketWindowProperty = new Packets("net.minecraft.network.play.server.S31PacketWindowProperty", "jg");
  38 + public static Packets S2FPacketSetSlot = new Packets("net.minecraft.network.play.server.S2FPacketSetSlot", "jh");
  39 + public static Packets S3FPacketCustomPayload = new Packets("net.minecraft.network.play.server.S3FPacketCustomPayload", "ji");
  40 + public static Packets S40PacketDisconnect = new Packets("net.minecraft.network.play.server.S40PacketDisconnect", "jj");
  41 + public static Packets S19PacketEntityStatus = new Packets("net.minecraft.network.play.server.S19PacketEntityStatus", "jk");
  42 + public static Packets S49PacketUpdateEntityNBT = new Packets("net.minecraft.network.play.server.S49PacketUpdateEntityNBT", "jl");
  43 + public static Packets S27PacketExplosion = new Packets("net.minecraft.network.play.server.S27PacketExplosion", "jm");
  44 + public static Packets S46PacketSetCompressionLevel = new Packets("net.minecraft.network.play.server.S46PacketSetCompressionLevel", "jn");
  45 + public static Packets S2BPacketChangeGameState = new Packets("net.minecraft.network.play.server.S2BPacketChangeGameState", "jo");
  46 + public static Packets S00PacketKeepAlive = new Packets("net.minecraft.network.play.server.S00PacketKeepAlive", "jp");
  47 + public static Packets S21PacketChunkData = new Packets("net.minecraft.network.play.server.S21PacketChunkData", "jq");
  48 + public static Packets S26PacketMapChunkBulk = new Packets("net.minecraft.network.play.server.S26PacketMapChunkBulk", "js");
  49 + public static Packets S28PacketEffect = new Packets("net.minecraft.network.play.server.S28PacketEffect", "jt");
  50 + public static Packets S2APacketParticles = new Packets("net.minecraft.network.play.server.S2APacketParticles", "ju");
  51 + public static Packets S29PacketSoundEffect = new Packets("net.minecraft.network.play.server.S29PacketSoundEffect", "jv");
  52 + public static Packets S01PacketJoinGame = new Packets("net.minecraft.network.play.server.S01PacketJoinGame", "jw");
  53 + public static Packets S34PacketMaps = new Packets("net.minecraft.network.play.server.S34PacketMaps", "jx");
  54 + public static Packets S14PacketEntity = new Packets("net.minecraft.network.play.server.S14PacketEntity", "jy");
  55 + public static Packets S15PacketEntityRelMove = new Packets("net.minecraft.network.play.server.S14PacketEntity$S15PacketEntityRelMove", "jz");
  56 + public static Packets S17PacketEntityLookMove = new Packets("net.minecraft.network.play.server.S14PacketEntity$S17PacketEntityLookMove", "ka");
  57 + public static Packets S16PacketEntityLook = new Packets("net.minecraft.network.play.server.S14PacketEntity$S16PacketEntityLook", "kb");
  58 + public static Packets S36PacketSignEditorOpen = new Packets("net.minecraft.network.play.server.S36PacketSignEditorOpen", "kc");
  59 + public static Packets S39PacketPlayerAbilities = new Packets("net.minecraft.network.play.server.S39PacketPlayerAbilities", "kd");
  60 + public static Packets S42PacketCombatEvent = new Packets("net.minecraft.network.play.server.S42PacketCombatEvent", "ke");
  61 + public static Packets S38PacketPlayerListItem = new Packets("net.minecraft.network.play.server.S38PacketPlayerListItem", "kh");
  62 + public static Packets S0APacketUseBed = new Packets("net.minecraft.network.play.server.S0APacketUseBed", "kl");
  63 + public static Packets S13PacketDestroyEntities = new Packets("net.minecraft.network.play.server.S13PacketDestroyEntities", "km");
  64 + public static Packets S1EPacketRemoveEntityEffect = new Packets("net.minecraft.network.play.server.S1EPacketRemoveEntityEffect", "kn");
  65 + public static Packets S48PacketResourcePackSend = new Packets("net.minecraft.network.play.server.S48PacketResourcePackSend", "ko");
  66 + public static Packets S07PacketRespawn = new Packets("net.minecraft.network.play.server.S07PacketRespawn", "kp");
  67 + public static Packets S19PacketEntityHeadLook = new Packets("net.minecraft.network.play.server.S19PacketEntityHeadLook", "kq");
  68 + public static Packets S44PacketWorldBorder = new Packets("net.minecraft.network.play.server.S44PacketWorldBorder", "kr");
  69 + public static Packets S43PacketCamera = new Packets("net.minecraft.network.play.server.S43PacketCamera", "ku");
  70 + public static Packets S09PacketHeldItemChange = new Packets("net.minecraft.network.play.server.S09PacketHeldItemChange", "kv");
  71 + public static Packets S3DPacketDisplayScoreboard = new Packets("net.minecraft.network.play.server.S3DPacketDisplayScoreboard", "kw");
  72 + public static Packets S1CPacketEntityMetadata = new Packets("net.minecraft.network.play.server.S1CPacketEntityMetadata", "kx");
  73 + public static Packets S1BPacketEntityAttach = new Packets("net.minecraft.network.play.server.S1BPacketEntityAttach", "ky");
  74 + public static Packets S12PacketEntityVelocity = new Packets("net.minecraft.network.play.server.S12PacketEntityVelocity", "kz");
  75 + public static Packets S04PacketEntityEquipment = new Packets("net.minecraft.network.play.server.S04PacketEntityEquipment", "la");
  76 + public static Packets S1FPacketSetExperience = new Packets("net.minecraft.network.play.server.S1FPacketSetExperience", "lb");
  77 + public static Packets S06PacketUpdateHealth = new Packets("net.minecraft.network.play.server.S06PacketUpdateHealth", "lc");
  78 + public static Packets S3BPacketScoreboardObjective = new Packets("net.minecraft.network.play.server.S3BPacketScoreboardObjective", "ld");
  79 + public static Packets S3EPacketTeams = new Packets("net.minecraft.network.play.server.S3EPacketTeams", "le");
  80 + public static Packets S3CPacketUpdateScore = new Packets("net.minecraft.network.play.server.S3CPacketUpdateScore", "lf");
  81 + public static Packets S05PacketSpawnPosition = new Packets("net.minecraft.network.play.server.S05PacketSpawnPosition", "lh");
  82 + public static Packets S03PacketTimeUpdate = new Packets("net.minecraft.network.play.server.S03PacketTimeUpdate", "li");
  83 + public static Packets S45PacketTitle = new Packets("net.minecraft.network.play.server.S45PacketTitle", "lj");
  84 + public static Packets S33PacketUpdateSign = new Packets("net.minecraft.network.play.server.S33PacketUpdateSign", "ll");
  85 + public static Packets S47PacketPlayerListHeaderFooter = new Packets("net.minecraft.network.play.server.S47PacketPlayerListHeaderFooter", "lm");
  86 + public static Packets S0DPacketCollectItem = new Packets("net.minecraft.network.play.server.S0DPacketCollectItem", "ln");
  87 + public static Packets S18PacketEntityTeleport = new Packets("net.minecraft.network.play.server.S18PacketEntityTeleport", "lo");
  88 + public static Packets S20PacketEntityProperties = new Packets("net.minecraft.network.play.server.S20PacketEntityProperties", "lp");
  89 + public static Packets S1DPacketEntityEffect = new Packets("net.minecraft.network.play.server.S1DPacketEntityEffect", "lr");
  90 + public static Packets C14PacketTabComplete = new Packets("net.minecraft.network.play.client.C14PacketTabComplete", "lt");
  91 + public static Packets C01PacketChatMessage = new Packets("net.minecraft.network.play.client.C01PacketChatMessage", "lu");
  92 + public static Packets C16PacketClientStatus = new Packets("net.minecraft.network.play.client.C16PacketClientStatus", "lv");
  93 + public static Packets C15PacketClientSettings = new Packets("net.minecraft.network.play.client.C15PacketClientSettings", "lx");
  94 + public static Packets C0FPacketConfirmTransaction = new Packets("net.minecraft.network.play.client.C0FPacketConfirmTransaction", "ly");
  95 + public static Packets C11PacketEnchantItem = new Packets("net.minecraft.network.play.client.C11PacketEnchantItem", "lz");
  96 + public static Packets C0EPacketClickWindow = new Packets("net.minecraft.network.play.client.C0EPacketClickWindow", "ma");
  97 + public static Packets C0DPacketCloseWindow = new Packets("net.minecraft.network.play.client.C0DPacketCloseWindow", "mb");
  98 + public static Packets C17PacketCustomPayload = new Packets("net.minecraft.network.play.client.C17PacketCustomPayload", "mc");
  99 + public static Packets C02PacketUseEntity = new Packets("net.minecraft.network.play.client.C02PacketUseEntity", "md");
  100 + public static Packets C00PacketKeepAlive = new Packets("net.minecraft.network.play.client.C00PacketKeepAlive", "mf");
  101 + public static Packets C03PacketPlayer = new Packets("net.minecraft.network.play.client.C03PacketPlayer", "mg");
  102 + public static Packets C04PacketPlayerPosition = new Packets("net.minecraft.network.play.client.C03PacketPlayer$C04PacketPlayerPosition", "mh");
  103 + public static Packets C06PacketPlayerPosLook = new Packets("net.minecraft.network.play.client.C03PacketPlayer$C06PacketPlayerPosLook", "mi");
  104 + public static Packets C05PacketPlayerLook = new Packets("net.minecraft.network.play.client.C03PacketPlayer$C05PacketPlayerLook", "mj");
  105 + public static Packets C13PacketPlayerAbilities = new Packets("net.minecraft.network.play.client.C13PacketPlayerAbilities", "mk");
  106 + public static Packets C07PacketPlayerDigging = new Packets("net.minecraft.network.play.client.C07PacketPlayerDigging", "ml");
  107 + public static Packets C0BPacketEntityAction = new Packets("net.minecraft.network.play.client.C0BPacketEntityAction", "mn");
  108 + public static Packets C0CPacketInput = new Packets("net.minecraft.network.play.client.C0CPacketInput", "mp");
  109 + public static Packets C19PacketResourcePackStatus = new Packets("net.minecraft.network.play.client.C19PacketResourcePackStatus", "mq");
  110 + public static Packets C09PacketHeldItemChange = new Packets("net.minecraft.network.play.client.C09PacketHeldItemChange", "ms");
  111 + public static Packets C10PacketCreativeInventoryAction = new Packets("net.minecraft.network.play.client.C10PacketCreativeInventoryAction", "mt");
  112 + public static Packets C12PacketUpdateSign = new Packets("net.minecraft.network.play.client.C12PacketUpdateSign", "mu");
  113 + public static Packets C0APacketAnimation = new Packets("net.minecraft.network.play.client.C0APacketAnimation", "mv");
  114 + public static Packets C18PacketSpectate = new Packets("net.minecraft.network.play.client.C18PacketSpectate", "mw");
  115 + public static Packets C08PacketPlayerBlockPlacement = new Packets("net.minecraft.network.play.client.C08PacketPlayerBlockPlacement", "mx");
  116 + public static Packets C00Handshake = new Packets("net.minecraft.network.handshake.client.C00Handshake", "mz");
  117 + public static Packets S02PacketLoginSuccess = new Packets("net.minecraft.network.login.server.S02PacketLoginSuccess", "nd");
  118 + public static Packets S01PacketEncryptionRequest = new Packets("net.minecraft.network.login.server.S01PacketEncryptionRequest", "ne");
  119 + public static Packets S03PacketEnableCompression = new Packets("net.minecraft.network.login.server.S03PacketEnableCompression", "nf");
  120 + public static Packets S00PacketDisconnect = new Packets("net.minecraft.network.login.server.S00PacketDisconnect", "ng");
  121 + public static Packets C00PacketLoginStart = new Packets("net.minecraft.network.login.client.C00PacketLoginStart", "ni");
  122 + public static Packets C01PacketEncryptionResponse = new Packets("net.minecraft.network.login.client.C01PacketEncryptionResponse", "nj");
  123 + public static Packets S01PacketPong = new Packets("net.minecraft.network.status.server.S01PacketPong", "nn");
  124 + public static Packets S00PacketServerInfo = new Packets("net.minecraft.network.status.server.S00PacketServerInfo", "no");
  125 + public static Packets C01PacketPing = new Packets("net.minecraft.network.status.client.C01PacketPing", "nw");
  126 + public static Packets C00PacketServerQuery = new Packets("net.minecraft.network.status.client.C00PacketServerQuery", "nx");
113 127
114 public static final Packets[] packets = new Packets[] { 128 public static final Packets[] packets = new Packets[] {
115 S08PacketPlayerPosLook, 129 S08PacketPlayerPosLook,
@@ -125,6 +139,7 @@ public class Packets extends Obf @@ -125,6 +139,7 @@ public class Packets extends Obf
125 S35PacketUpdateTileEntity, 139 S35PacketUpdateTileEntity,
126 S24PacketBlockAction, 140 S24PacketBlockAction,
127 S23PacketBlockChange, 141 S23PacketBlockChange,
  142 + S41PacketServerDifficulty,
128 S3APacketTabComplete, 143 S3APacketTabComplete,
129 S02PacketChat, 144 S02PacketChat,
130 S22PacketMultiBlockChange, 145 S22PacketMultiBlockChange,
@@ -137,11 +152,12 @@ public class Packets extends Obf @@ -137,11 +152,12 @@ public class Packets extends Obf
137 S3FPacketCustomPayload, 152 S3FPacketCustomPayload,
138 S40PacketDisconnect, 153 S40PacketDisconnect,
139 S19PacketEntityStatus, 154 S19PacketEntityStatus,
  155 + S49PacketUpdateEntityNBT,
140 S27PacketExplosion, 156 S27PacketExplosion,
  157 + S46PacketSetCompressionLevel,
141 S2BPacketChangeGameState, 158 S2BPacketChangeGameState,
142 S00PacketKeepAlive, 159 S00PacketKeepAlive,
143 S21PacketChunkData, 160 S21PacketChunkData,
144 - S21PacketChunkData$Extracted,  
145 S26PacketMapChunkBulk, 161 S26PacketMapChunkBulk,
146 S28PacketEffect, 162 S28PacketEffect,
147 S2APacketParticles, 163 S2APacketParticles,
@@ -154,12 +170,16 @@ public class Packets extends Obf @@ -154,12 +170,16 @@ public class Packets extends Obf
154 S16PacketEntityLook, 170 S16PacketEntityLook,
155 S36PacketSignEditorOpen, 171 S36PacketSignEditorOpen,
156 S39PacketPlayerAbilities, 172 S39PacketPlayerAbilities,
  173 + S42PacketCombatEvent,
157 S38PacketPlayerListItem, 174 S38PacketPlayerListItem,
158 S0APacketUseBed, 175 S0APacketUseBed,
159 S13PacketDestroyEntities, 176 S13PacketDestroyEntities,
160 S1EPacketRemoveEntityEffect, 177 S1EPacketRemoveEntityEffect,
  178 + S48PacketResourcePackSend,
161 S07PacketRespawn, 179 S07PacketRespawn,
162 S19PacketEntityHeadLook, 180 S19PacketEntityHeadLook,
  181 + S44PacketWorldBorder,
  182 + S43PacketCamera,
163 S09PacketHeldItemChange, 183 S09PacketHeldItemChange,
164 S3DPacketDisplayScoreboard, 184 S3DPacketDisplayScoreboard,
165 S1CPacketEntityMetadata, 185 S1CPacketEntityMetadata,
@@ -173,17 +193,16 @@ public class Packets extends Obf @@ -173,17 +193,16 @@ public class Packets extends Obf
173 S3CPacketUpdateScore, 193 S3CPacketUpdateScore,
174 S05PacketSpawnPosition, 194 S05PacketSpawnPosition,
175 S03PacketTimeUpdate, 195 S03PacketTimeUpdate,
  196 + S45PacketTitle,
176 S33PacketUpdateSign, 197 S33PacketUpdateSign,
  198 + S47PacketPlayerListHeaderFooter,
177 S0DPacketCollectItem, 199 S0DPacketCollectItem,
178 S18PacketEntityTeleport, 200 S18PacketEntityTeleport,
179 S20PacketEntityProperties, 201 S20PacketEntityProperties,
180 - S20PacketEntityProperties$Snapshot,  
181 S1DPacketEntityEffect, 202 S1DPacketEntityEffect,
182 - C0APacketAnimation,  
183 C14PacketTabComplete, 203 C14PacketTabComplete,
184 C01PacketChatMessage, 204 C01PacketChatMessage,
185 C16PacketClientStatus, 205 C16PacketClientStatus,
186 - C16PacketClientStatus$EnumState,  
187 C15PacketClientSettings, 206 C15PacketClientSettings,
188 C0FPacketConfirmTransaction, 207 C0FPacketConfirmTransaction,
189 C11PacketEnchantItem, 208 C11PacketEnchantItem,
@@ -191,7 +210,6 @@ public class Packets extends Obf @@ -191,7 +210,6 @@ public class Packets extends Obf
191 C0DPacketCloseWindow, 210 C0DPacketCloseWindow,
192 C17PacketCustomPayload, 211 C17PacketCustomPayload,
193 C02PacketUseEntity, 212 C02PacketUseEntity,
194 - C02PacketUseEntity$Action,  
195 C00PacketKeepAlive, 213 C00PacketKeepAlive,
196 C03PacketPlayer, 214 C03PacketPlayer,
197 C04PacketPlayerPosition, 215 C04PacketPlayerPosition,
@@ -201,18 +219,24 @@ public class Packets extends Obf @@ -201,18 +219,24 @@ public class Packets extends Obf
201 C07PacketPlayerDigging, 219 C07PacketPlayerDigging,
202 C0BPacketEntityAction, 220 C0BPacketEntityAction,
203 C0CPacketInput, 221 C0CPacketInput,
  222 + C19PacketResourcePackStatus,
204 C09PacketHeldItemChange, 223 C09PacketHeldItemChange,
205 C10PacketCreativeInventoryAction, 224 C10PacketCreativeInventoryAction,
206 C12PacketUpdateSign, 225 C12PacketUpdateSign,
  226 + C0APacketAnimation,
  227 + C18PacketSpectate,
207 C08PacketPlayerBlockPlacement, 228 C08PacketPlayerBlockPlacement,
208 C00Handshake, 229 C00Handshake,
209 S02PacketLoginSuccess, 230 S02PacketLoginSuccess,
210 S01PacketEncryptionRequest, 231 S01PacketEncryptionRequest,
  232 + S03PacketEnableCompression,
211 S00PacketDisconnect, 233 S00PacketDisconnect,
212 C00PacketLoginStart, 234 C00PacketLoginStart,
213 C01PacketEncryptionResponse, 235 C01PacketEncryptionResponse,
214 S01PacketPong, 236 S01PacketPong,
215 - S00PacketServerInfo 237 + S00PacketServerInfo,
  238 + C01PacketPing,
  239 + C00PacketServerQuery,
216 }; 240 };
217 241
218 private static int nextPacketIndex; 242 private static int nextPacketIndex;
@@ -227,6 +251,7 @@ public class Packets extends Obf @@ -227,6 +251,7 @@ public class Packets extends Obf
227 251
228 this.shortName = seargeName.substring(Math.max(seargeName.lastIndexOf('.'), seargeName.lastIndexOf('$')) + 1); 252 this.shortName = seargeName.substring(Math.max(seargeName.lastIndexOf('.'), seargeName.lastIndexOf('$')) + 1);
229 this.index = Packets.nextPacketIndex++; 253 this.index = Packets.nextPacketIndex++;
  254 + Packets.packetMap.put(this.shortName, this);
230 } 255 }
231 256
232 public int getIndex() 257 public int getIndex()
@@ -253,4 +278,13 @@ public class Packets extends Obf @@ -253,4 +278,13 @@ public class Packets extends Obf
253 { 278 {
254 return Packets.nextPacketIndex; 279 return Packets.nextPacketIndex;
255 } 280 }
  281 +
  282 + /**
  283 + * @param name
  284 + * @return
  285 + */
  286 + public static Packets getByName(String name)
  287 + {
  288 + return Packets.packetMap.get(name);
  289 + }
256 } 290 }
java/common/com/mumfrey/liteloader/crashreport/CallableLiteLoaderBrand.java
@@ -21,7 +21,15 @@ public class CallableLiteLoaderBrand implements Callable&lt;String&gt; @@ -21,7 +21,15 @@ public class CallableLiteLoaderBrand implements Callable&lt;String&gt;
21 @Override 21 @Override
22 public String call() throws Exception 22 public String call() throws Exception
23 { 23 {
24 - String brand = LiteLoader.getBranding(); 24 + String brand = null;
  25 + try
  26 + {
  27 + brand = LiteLoader.getBranding();
  28 + }
  29 + catch (Exception ex)
  30 + {
  31 + brand = "LiteLoader startup failed";
  32 + }
25 return brand == null ? "Unknown / None" : brand; 33 return brand == null ? "Unknown / None" : brand;
26 } 34 }
27 } 35 }
java/common/com/mumfrey/liteloader/crashreport/CallableLiteLoaderMods.java
@@ -21,6 +21,13 @@ public class CallableLiteLoaderMods implements Callable&lt;String&gt; @@ -21,6 +21,13 @@ public class CallableLiteLoaderMods implements Callable&lt;String&gt;
21 @Override 21 @Override
22 public String call() throws Exception 22 public String call() throws Exception
23 { 23 {
24 - return LiteLoader.getInstance().getLoadedModsList(); 24 + try
  25 + {
  26 + return LiteLoader.getInstance().getLoadedModsList();
  27 + }
  28 + catch (Exception ex)
  29 + {
  30 + return "LiteLoader startup failed";
  31 + }
25 } 32 }
26 } 33 }
java/common/com/mumfrey/liteloader/interfaces/LoaderEnumerator.java
@@ -14,6 +14,14 @@ import com.mumfrey.liteloader.core.ModInfo; @@ -14,6 +14,14 @@ import com.mumfrey.liteloader.core.ModInfo;
14 */ 14 */
15 public interface LoaderEnumerator extends ModularEnumerator 15 public interface LoaderEnumerator extends ModularEnumerator
16 { 16 {
  17 + public enum DisabledReason
  18 + {
  19 + UNKNOWN,
  20 + USER_DISABLED,
  21 + MISSING_DEPENDENCY,
  22 + MISSING_API
  23 + }
  24 +
17 /** 25 /**
18 * Perform pre-init tasks (container discovery) 26 * Perform pre-init tasks (container discovery)
19 */ 27 */
java/common/com/mumfrey/liteloader/launch/ClassTransformerManager.java
@@ -12,7 +12,6 @@ import net.minecraft.launchwrapper.IClassTransformer; @@ -12,7 +12,6 @@ import net.minecraft.launchwrapper.IClassTransformer;
12 import net.minecraft.launchwrapper.LaunchClassLoader; 12 import net.minecraft.launchwrapper.LaunchClassLoader;
13 import net.minecraft.launchwrapper.LogWrapper; 13 import net.minecraft.launchwrapper.LogWrapper;
14 14
15 -import com.mumfrey.liteloader.transformers.PacketTransformer;  
16 import com.mumfrey.liteloader.util.SortableValue; 15 import com.mumfrey.liteloader.util.SortableValue;
17 import com.mumfrey.liteloader.util.log.LiteLoaderLogger; 16 import com.mumfrey.liteloader.util.log.LiteLoaderLogger;
18 17
@@ -155,8 +154,6 @@ public class ClassTransformerManager @@ -155,8 +154,6 @@ public class ClassTransformerManager
155 */ 154 */
156 void injectUpstreamTransformers(LaunchClassLoader classLoader) 155 void injectUpstreamTransformers(LaunchClassLoader classLoader)
157 { 156 {
158 - this.sieveAndSortPacketTransformers(classLoader, this.pendingTransformers);  
159 -  
160 for (String requiredTransformerClassName : this.requiredTransformers) 157 for (String requiredTransformerClassName : this.requiredTransformers)
161 { 158 {
162 LiteLoaderLogger.info("Injecting required class transformer '%s'", requiredTransformerClassName); 159 LiteLoaderLogger.info("Injecting required class transformer '%s'", requiredTransformerClassName);
@@ -197,84 +194,28 @@ public class ClassTransformerManager @@ -197,84 +194,28 @@ public class ClassTransformerManager
197 this.gameStarted = true; 194 this.gameStarted = true;
198 } 195 }
199 196
200 - /**  
201 - * Sieves packet transformers from the injected transformers list and pokes the rest into the downstreamTransformers set  
202 - *  
203 - * @param classLoader  
204 - * @param transformers  
205 - */  
206 - @SuppressWarnings({ "unchecked", "deprecation" })  
207 - private void sieveAndSortPacketTransformers(LaunchClassLoader classLoader, Set<String> transformers) 197 + private synchronized void injectTransformer(LaunchClassLoader classLoader, String transformerClassName)
208 { 198 {
209 - LiteLoaderLogger.info("Sorting registered packet transformers by priority");  
210 - int registeredTransformers = 0;  
211 -  
212 - NonDelegatingClassLoader tempLoader = new NonDelegatingClassLoader(classLoader.getURLs(), this.getClass().getClassLoader());  
213 - tempLoader.addDelegatedClassName("com.mumfrey.liteloader.core.transformers.PacketTransformer");  
214 - tempLoader.addDelegatedClassName("com.mumfrey.liteloader.core.runtime.Obf");  
215 - tempLoader.addDelegatedClassName("net.minecraft.launchwrapper.IClassTransformer");  
216 - tempLoader.addDelegatedPackage("org.objectweb.asm.");  
217 -  
218 - Iterator<String> iter = transformers.iterator();  
219 - while (iter.hasNext()) 199 + try
220 { 200 {
221 - String transformerClassName = iter.next();  
222 - try 201 + // Assign pendingTransformer so that logged errors during transformer init can be put in the map
  202 + this.pendingTransformer = transformerClassName;
  203 +
  204 + // Register the transformer
  205 + classLoader.registerTransformer(transformerClassName);
  206 +
  207 + // Unassign pending transformer now init is completed
  208 + this.pendingTransformer = null;
  209 +
  210 + // Check whether the transformer was successfully injected, look for it in the transformer list
  211 + if (this.findTransformer(classLoader, transformerClassName) != null)
223 { 212 {
224 - Class<IClassTransformer> transformerClass = (Class<IClassTransformer>)tempLoader.addAndLoadClass(transformerClassName);  
225 -  
226 - if (PacketTransformer.class.isAssignableFrom(transformerClass))  
227 - {  
228 - if (tempLoader.isValid())  
229 - {  
230 - PacketTransformer transformer = (PacketTransformer)transformerClass.newInstance();  
231 - String packetClass = transformer.getPacketClass();  
232 - if (!this.packetTransformers.containsKey(packetClass))  
233 - this.packetTransformers.put(packetClass, new TreeSet<SortableValue<String>>());  
234 - this.packetTransformers.get(packetClass).add(transformer.getInfo(transformerClassName));  
235 - registeredTransformers++;  
236 - iter.remove();  
237 - }  
238 - else  
239 - {  
240 - LiteLoaderLogger.warning("Packet transformer class '%s' references class '%s' which is not allowed. Packet transformers must not contain references to other classes", transformerClassName, tempLoader.getInvalidClassName());  
241 - iter.remove();  
242 - }  
243 - }  
244 - }  
245 - catch (NoClassDefFoundError err)  
246 - {  
247 - LiteLoaderLogger.warning(err, "Packet transformer class '%s' references a missing class. This probably means it is out of date or missing a dependency.", transformerClassName);  
248 - err.printStackTrace();  
249 - iter.remove();  
250 - }  
251 - catch (Exception ex)  
252 - {  
253 - ex.printStackTrace(); 213 + this.injectedTransformers.add(transformerClassName);
254 } 214 }
255 } 215 }
256 -  
257 - this.downstreamTransformers.addAll(transformers);  
258 - transformers.clear();  
259 -  
260 - LiteLoaderLogger.info("Added %d packet transformer classes to the transformer list", registeredTransformers);  
261 - }  
262 -  
263 - private synchronized void injectTransformer(LaunchClassLoader classLoader, String transformerClassName)  
264 - {  
265 - // Assign pendingTransformer so that logged errors during transformer init can be put in the map  
266 - this.pendingTransformer = transformerClassName;  
267 -  
268 - // Register the transformer  
269 - classLoader.registerTransformer(transformerClassName);  
270 -  
271 - // Unassign pending transformer now init is completed  
272 - this.pendingTransformer = null;  
273 -  
274 - // Check whether the transformer was successfully injected, look for it in the transformer list  
275 - if (this.findTransformer(classLoader, transformerClassName) != null) 216 + catch (Throwable th)
276 { 217 {
277 - this.injectedTransformers.add(transformerClassName); 218 + LiteLoaderLogger.severe(th, "Error injecting class transformer class %s", transformerClassName);
278 } 219 }
279 } 220 }
280 221
java/common/com/mumfrey/liteloader/launch/LiteLoaderTweaker.java
@@ -27,8 +27,8 @@ public class LiteLoaderTweaker implements ITweaker @@ -27,8 +27,8 @@ public class LiteLoaderTweaker implements ITweaker
27 public static final int ENV_TYPE_CLIENT = 0; 27 public static final int ENV_TYPE_CLIENT = 0;
28 public static final int ENV_TYPE_DEDICATEDSERVER = 1; 28 public static final int ENV_TYPE_DEDICATEDSERVER = 1;
29 29
30 - // TODO Version - 1.7.10  
31 - public static final String VERSION = "1.7.10"; 30 + // TODO Version - 1.8
  31 + public static final String VERSION = "1.8";
32 32
33 protected static final String bootstrapClassName = "com.mumfrey.liteloader.core.LiteLoaderBootstrap"; 33 protected static final String bootstrapClassName = "com.mumfrey.liteloader.core.LiteLoaderBootstrap";
34 34
@@ -226,8 +226,8 @@ public class LiteLoaderTweaker implements ITweaker @@ -226,8 +226,8 @@ public class LiteLoaderTweaker implements ITweaker
226 @Override 226 @Override
227 public void injectIntoClassLoader(LaunchClassLoader classLoader) 227 public void injectIntoClassLoader(LaunchClassLoader classLoader)
228 { 228 {
229 - classLoader.addClassLoaderExclusion("com.mumfrey.liteloader.core.runtime.Obf");  
230 - classLoader.addClassLoaderExclusion("com.mumfrey.liteloader.core.runtime.Packets"); 229 +// classLoader.addClassLoaderExclusion("com.mumfrey.liteloader.core.runtime.Obf");
  230 +// classLoader.addClassLoaderExclusion("com.mumfrey.liteloader.core.runtime.Packets");
231 231
232 this.transformerManager.injectUpstreamTransformers(classLoader); 232 this.transformerManager.injectUpstreamTransformers(classLoader);
233 233
@@ -292,7 +292,6 @@ public class LiteLoaderTweaker implements ITweaker @@ -292,7 +292,6 @@ public class LiteLoaderTweaker implements ITweaker
292 this.bootstrap = this.spawnBootstrap(LiteLoaderTweaker.bootstrapClassName, Launch.classLoader); 292 this.bootstrap = this.spawnBootstrap(LiteLoaderTweaker.bootstrapClassName, Launch.classLoader);
293 293
294 this.transformerManager = new ClassTransformerManager(this.bootstrap.getRequiredTransformers()); 294 this.transformerManager = new ClassTransformerManager(this.bootstrap.getRequiredTransformers());
295 - this.transformerManager.injectTransformers(this.bootstrap.getPacketTransformers());  
296 295
297 StartupState.PREPARE.completed(); 296 StartupState.PREPARE.completed();
298 } 297 }
java/common/com/mumfrey/liteloader/launch/LoaderBootstrap.java
@@ -41,8 +41,6 @@ public interface LoaderBootstrap @@ -41,8 +41,6 @@ public interface LoaderBootstrap
41 41
42 public abstract List<String> getRequiredDownstreamTransformers(); 42 public abstract List<String> getRequiredDownstreamTransformers();
43 43
44 - public abstract List<String> getPacketTransformers();  
45 -  
46 public abstract LoaderEnvironment getEnvironment(); 44 public abstract LoaderEnvironment getEnvironment();
47 45
48 public abstract LoaderProperties getProperties(); 46 public abstract LoaderProperties getProperties();
java/common/com/mumfrey/liteloader/permissions/PermissionsManagerClient.java
1 package com.mumfrey.liteloader.permissions; 1 package com.mumfrey.liteloader.permissions;
2 2
  3 +import io.netty.buffer.Unpooled;
  4 +
3 import java.io.File; 5 import java.io.File;
4 import java.util.Arrays; 6 import java.util.Arrays;
5 import java.util.HashMap; 7 import java.util.HashMap;
@@ -11,6 +13,7 @@ import java.util.TreeSet; @@ -11,6 +13,7 @@ import java.util.TreeSet;
11 13
12 import net.eq2online.permissions.ReplicatedPermissionsContainer; 14 import net.eq2online.permissions.ReplicatedPermissionsContainer;
13 import net.minecraft.network.INetHandler; 15 import net.minecraft.network.INetHandler;
  16 +import net.minecraft.network.PacketBuffer;
14 import net.minecraft.network.play.server.S01PacketJoinGame; 17 import net.minecraft.network.play.server.S01PacketJoinGame;
15 18
16 import com.mumfrey.liteloader.LiteMod; 19 import com.mumfrey.liteloader.LiteMod;
@@ -243,7 +246,9 @@ public class PermissionsManagerClient implements PermissionsManager, PluginChann @@ -243,7 +246,9 @@ public class PermissionsManagerClient implements PermissionsManager, PluginChann
243 if (!query.modName.equals("all") || query.permissions.size() > 0) 246 if (!query.modName.equals("all") || query.permissions.size() > 0)
244 { 247 {
245 byte[] data = query.getBytes(); 248 byte[] data = query.getBytes();
246 - ClientPluginChannels.sendMessage(ReplicatedPermissionsContainer.CHANNEL, data, ChannelPolicy.DISPATCH_ALWAYS); 249 + PacketBuffer buffer = new PacketBuffer(Unpooled.buffer());
  250 + buffer.writeByteArray(data);
  251 + ClientPluginChannels.sendMessage(ReplicatedPermissionsContainer.CHANNEL, buffer, ChannelPolicy.DISPATCH_ALWAYS);
247 } 252 }
248 } 253 }
249 } 254 }
@@ -306,7 +311,7 @@ public class PermissionsManagerClient implements PermissionsManager, PluginChann @@ -306,7 +311,7 @@ public class PermissionsManagerClient implements PermissionsManager, PluginChann
306 * @see net.eq2online.permissions.PermissionsManager#onCustomPayload(java.lang.String, int, byte[]) 311 * @see net.eq2online.permissions.PermissionsManager#onCustomPayload(java.lang.String, int, byte[])
307 */ 312 */
308 @Override 313 @Override
309 - public void onCustomPayload(String channel, int length, byte[] data) 314 + public void onCustomPayload(String channel, PacketBuffer data)
310 { 315 {
311 if (channel.equals(ReplicatedPermissionsContainer.CHANNEL) && !this.engine.isSinglePlayer()) 316 if (channel.equals(ReplicatedPermissionsContainer.CHANNEL) && !this.engine.isSinglePlayer())
312 { 317 {
java/common/com/mumfrey/liteloader/permissions/PermissionsManagerServer.java
@@ -3,6 +3,7 @@ package com.mumfrey.liteloader.permissions; @@ -3,6 +3,7 @@ package com.mumfrey.liteloader.permissions;
3 import java.util.List; 3 import java.util.List;
4 4
5 import net.minecraft.entity.player.EntityPlayerMP; 5 import net.minecraft.entity.player.EntityPlayerMP;
  6 +import net.minecraft.network.PacketBuffer;
6 7
7 import com.mumfrey.liteloader.Permissible; 8 import com.mumfrey.liteloader.Permissible;
8 import com.mumfrey.liteloader.ServerPluginChannelListener; 9 import com.mumfrey.liteloader.ServerPluginChannelListener;
@@ -26,7 +27,7 @@ public class PermissionsManagerServer implements PermissionsManager, ServerPlugi @@ -26,7 +27,7 @@ public class PermissionsManagerServer implements PermissionsManager, ServerPlugi
26 } 27 }
27 28
28 @Override 29 @Override
29 - public void onCustomPayload(EntityPlayerMP sender, String channel, int length, byte[] data) 30 + public void onCustomPayload(EntityPlayerMP sender, String channel, PacketBuffer data)
30 { 31 {
31 } 32 }
32 33
java/common/com/mumfrey/liteloader/permissions/ServerPermissions.java
@@ -4,6 +4,7 @@ import java.util.regex.Matcher; @@ -4,6 +4,7 @@ import java.util.regex.Matcher;
4 import java.util.regex.Pattern; 4 import java.util.regex.Pattern;
5 5
6 import net.eq2online.permissions.ReplicatedPermissionsContainer; 6 import net.eq2online.permissions.ReplicatedPermissionsContainer;
  7 +import net.minecraft.network.PacketBuffer;
7 8
8 9
9 /** 10 /**
@@ -48,12 +49,12 @@ public class ServerPermissions implements ReplicatedPermissions @@ -48,12 +49,12 @@ public class ServerPermissions implements ReplicatedPermissions
48 /** 49 /**
49 * @param data 50 * @param data
50 */ 51 */
51 - public ServerPermissions(byte[] data) 52 + public ServerPermissions(PacketBuffer data)
52 { 53 {
53 this.createdTime = System.currentTimeMillis(); 54 this.createdTime = System.currentTimeMillis();
54 this.validUntil = this.createdTime + this.cacheTime; 55 this.validUntil = this.createdTime + this.cacheTime;
55 56
56 - ReplicatedPermissionsContainer response = ReplicatedPermissionsContainer.fromBytes(data); 57 + ReplicatedPermissionsContainer response = ReplicatedPermissionsContainer.fromPacketBuffer(data);
57 58
58 if (response != null) 59 if (response != null)
59 { 60 {
java/common/com/mumfrey/liteloader/transformers/ByteCodeUtilities.java 0 โ†’ 100644
  1 +package com.mumfrey.liteloader.transformers;
  2 +
  3 +import java.lang.annotation.Annotation;
  4 +import java.util.Iterator;
  5 +import java.util.List;
  6 +
  7 +import org.objectweb.asm.Opcodes;
  8 +import org.objectweb.asm.Type;
  9 +import org.objectweb.asm.tree.AbstractInsnNode;
  10 +import org.objectweb.asm.tree.AnnotationNode;
  11 +import org.objectweb.asm.tree.ClassNode;
  12 +import org.objectweb.asm.tree.FieldNode;
  13 +import org.objectweb.asm.tree.FrameNode;
  14 +import org.objectweb.asm.tree.InsnList;
  15 +import org.objectweb.asm.tree.LocalVariableNode;
  16 +import org.objectweb.asm.tree.MethodNode;
  17 +import org.objectweb.asm.tree.VarInsnNode;
  18 +
  19 +public abstract class ByteCodeUtilities
  20 +{
  21 + private ByteCodeUtilities() {}
  22 +
  23 + public static void loadArgs(Type[] args, InsnList insns, int pos)
  24 + {
  25 + ByteCodeUtilities.loadArgs(args, insns, pos, -1);
  26 + }
  27 +
  28 + public static void loadArgs(Type[] args, InsnList insns, int start, int end)
  29 + {
  30 + for (Type type : args)
  31 + {
  32 + insns.add(new VarInsnNode(type.getOpcode(Opcodes.ILOAD), start));
  33 + start += type.getSize();
  34 + if (end >= start && start >= end) return;
  35 + }
  36 + }
  37 +
  38 + public static void pushLocals(Type[] locals, InsnList insns, int pos)
  39 + {
  40 + for (; pos < locals.length; pos++)
  41 + {
  42 + if (locals[pos] != null)
  43 + {
  44 + insns.add(new VarInsnNode(locals[pos].getOpcode(Opcodes.ILOAD), pos));
  45 + }
  46 + }
  47 + }
  48 +
  49 + /**
  50 + * @param method
  51 + * @param node
  52 + * @return
  53 + */
  54 + public static LocalVariableNode[] getLocalsAt(ClassNode classNode, MethodNode method, AbstractInsnNode node)
  55 + {
  56 + LocalVariableNode[] frame = new LocalVariableNode[method.maxLocals];
  57 +
  58 + if ((method.access & Opcodes.ACC_STATIC) == 0)
  59 + {
  60 + frame[0] = new LocalVariableNode("this", classNode.name, null, null, null, 0);
  61 + }
  62 +
  63 + for (Iterator<AbstractInsnNode> iter = method.instructions.iterator(); iter.hasNext();)
  64 + {
  65 + AbstractInsnNode insn = iter.next();
  66 + if (insn instanceof FrameNode)
  67 + {
  68 + FrameNode frameNode = (FrameNode)insn;
  69 + int localPos = 0;
  70 + for (int framePos = 0; framePos < frame.length; framePos++)
  71 + {
  72 + final Object localType = (localPos < frameNode.local.size()) ? frameNode.local.get(localPos) : null;
  73 + if (localType instanceof String)
  74 + {
  75 + frame[framePos] = ByteCodeUtilities.getLocalVariableAt(classNode, method, node, framePos);
  76 + }
  77 + else if (localType instanceof Integer)
  78 + {
  79 + boolean isMarkerType = localType == Opcodes.UNINITIALIZED_THIS || localType == Opcodes.TOP || localType == Opcodes.NULL;
  80 + boolean is32bitValue = localType == Opcodes.INTEGER || localType == Opcodes.FLOAT;
  81 + boolean is64bitValue = localType == Opcodes.DOUBLE || localType == Opcodes.LONG;
  82 + if (isMarkerType)
  83 + {
  84 + frame[framePos] = null;
  85 + }
  86 + else if (is32bitValue || is64bitValue)
  87 + {
  88 + frame[framePos] = ByteCodeUtilities.getLocalVariableAt(classNode, method, node, framePos);
  89 +
  90 + if (is64bitValue)
  91 + {
  92 + framePos++;
  93 + }
  94 + }
  95 + }
  96 + else if (localType == null)
  97 + {
  98 + frame[framePos] = null;
  99 + }
  100 + else
  101 + {
  102 + throw new RuntimeException("Invalid value " + localType + " in locals array at position " + localPos + " in " + classNode.name + "." + method.name + method.desc);
  103 + }
  104 +
  105 + localPos++;
  106 + }
  107 + }
  108 + else if (insn instanceof VarInsnNode)
  109 + {
  110 + VarInsnNode varNode = (VarInsnNode)insn;
  111 + frame[varNode.var] = ByteCodeUtilities.getLocalVariableAt(classNode, method, node, varNode.var);
  112 + }
  113 + else if (insn == node)
  114 + {
  115 + break;
  116 + }
  117 + }
  118 +
  119 + return frame;
  120 + }
  121 +
  122 + /**
  123 + * @param classNode
  124 + * @param method
  125 + * @param node
  126 + * @param var
  127 + * @return
  128 + */
  129 + public static LocalVariableNode getLocalVariableAt(ClassNode classNode, MethodNode method, AbstractInsnNode node, int var)
  130 + {
  131 + LocalVariableNode localVariableNode = null;
  132 +
  133 + int pos = method.instructions.indexOf(node);
  134 +
  135 + for (LocalVariableNode local : method.localVariables)
  136 + {
  137 + if (local.index != var) continue;
  138 + int start = method.instructions.indexOf(local.start);
  139 + int end = method.instructions.indexOf(local.end);
  140 + if (localVariableNode == null || start < pos && end > pos)
  141 + {
  142 + localVariableNode = local;
  143 + }
  144 + }
  145 +
  146 + return localVariableNode;
  147 + }
  148 +
  149 + /**
  150 + * @param type
  151 + * @return
  152 + */
  153 + public static String getTypeName(Type type)
  154 + {
  155 + switch (type.getSort())
  156 + {
  157 + case Type.BOOLEAN: return "boolean";
  158 + case Type.CHAR: return "char";
  159 + case Type.BYTE: return "byte";
  160 + case Type.SHORT: return "short";
  161 + case Type.INT: return "int";
  162 + case Type.FLOAT: return "float";
  163 + case Type.LONG: return "long";
  164 + case Type.DOUBLE: return "double";
  165 + case Type.ARRAY: return ByteCodeUtilities.getTypeName(type.getElementType()) + "[]";
  166 + case Type.OBJECT:
  167 + String typeName = type.getClassName();
  168 + typeName = typeName.substring(typeName.lastIndexOf('.') + 1);
  169 + return typeName;
  170 + }
  171 +
  172 + return "Object";
  173 + }
  174 +
  175 + /**
  176 + * Finds a method in the target class, uses names specified in the {@link Obfuscated} annotation if present
  177 + *
  178 + * @param targetClass
  179 + * @param searchFor
  180 + * @return
  181 + */
  182 + public static MethodNode findTargetMethod(ClassNode targetClass, MethodNode searchFor)
  183 + {
  184 + for (MethodNode target : targetClass.methods)
  185 + {
  186 + if (target.name.equals(searchFor.name) && target.desc.equals(searchFor.desc))
  187 + return target;
  188 + }
  189 +
  190 + AnnotationNode obfuscatedAnnotation = ByteCodeUtilities.getAnnotation(searchFor, Obfuscated.class);
  191 + if (obfuscatedAnnotation != null)
  192 + {
  193 + for (String obfuscatedName : ByteCodeUtilities.<List<String>>getAnnotationValue(obfuscatedAnnotation))
  194 + {
  195 + for (MethodNode target : targetClass.methods)
  196 + {
  197 + if (target.name.equals(obfuscatedName) && target.desc.equals(searchFor.desc))
  198 + return target;
  199 + }
  200 + }
  201 + }
  202 +
  203 + return null;
  204 + }
  205 +
  206 + /**
  207 + * Finds a field in the target class, uses names specified in the {@link Obfuscated} annotation if present
  208 + *
  209 + * @param targetClass
  210 + * @param searchFor
  211 + * @return
  212 + */
  213 + public static FieldNode findTargetField(ClassNode targetClass, FieldNode searchFor)
  214 + {
  215 + for (FieldNode target : targetClass.fields)
  216 + {
  217 + if (target.name.equals(searchFor.name))
  218 + return target;
  219 + }
  220 +
  221 + AnnotationNode obfuscatedAnnotation = ByteCodeUtilities.getAnnotation(searchFor, Obfuscated.class);
  222 + if (obfuscatedAnnotation != null)
  223 + {
  224 + for (String obfuscatedName : ByteCodeUtilities.<List<String>>getAnnotationValue(obfuscatedAnnotation))
  225 + {
  226 + for (FieldNode target : targetClass.fields)
  227 + {
  228 + if (target.name.equals(obfuscatedName))
  229 + return target;
  230 + }
  231 + }
  232 + }
  233 +
  234 + return null;
  235 + }
  236 +
  237 + /**
  238 + * Get an annotation of the specified class from the supplied field node
  239 + *
  240 + * @param field
  241 + * @param annotationType
  242 + * @return
  243 + */
  244 + public static AnnotationNode getAnnotation(FieldNode field, Class<? extends Annotation> annotationClass)
  245 + {
  246 + return ByteCodeUtilities.getAnnotation(field.visibleAnnotations, Type.getDescriptor(annotationClass));
  247 + }
  248 +
  249 + /**
  250 + * Get an annotation of the specified class from the supplied method node
  251 + *
  252 + * @param method
  253 + * @param annotationType
  254 + * @return
  255 + */
  256 + public static AnnotationNode getAnnotation(MethodNode method, Class<? extends Annotation> annotationClass)
  257 + {
  258 + return ByteCodeUtilities.getAnnotation(method.visibleAnnotations, Type.getDescriptor(annotationClass));
  259 + }
  260 +
  261 + /**
  262 + * @param annotations
  263 + * @param annotationType
  264 + * @return
  265 + */
  266 + public static AnnotationNode getAnnotation(List<AnnotationNode> annotations, String annotationType)
  267 + {
  268 + if (annotations != null)
  269 + {
  270 + for (AnnotationNode annotation : annotations)
  271 + {
  272 + if (annotationType.equals(annotation.desc))
  273 + return annotation;
  274 + }
  275 + }
  276 +
  277 + return null;
  278 + }
  279 +
  280 + /**
  281 + * Get the value of an annotation node
  282 + *
  283 + * @param annotation
  284 + * @return
  285 + */
  286 + public static <T> T getAnnotationValue(AnnotationNode annotation)
  287 + {
  288 + return ByteCodeUtilities.getAnnotationValue(annotation, "value");
  289 + }
  290 +
  291 + /**
  292 + * @param annotation
  293 + * @param key
  294 + * @return
  295 + */
  296 + @SuppressWarnings("unchecked")
  297 + public static <T> T getAnnotationValue(AnnotationNode annotation, String key)
  298 + {
  299 + boolean getNextValue = false;
  300 + for (Object value : annotation.values)
  301 + {
  302 + if (getNextValue) return (T)value;
  303 + if (value.equals(key)) getNextValue = true;
  304 + }
  305 + return null;
  306 + }
  307 +}
java/common/com/mumfrey/liteloader/transformers/CallbackInjectionTransformer.java
@@ -25,7 +25,9 @@ import com.mumfrey.liteloader.util.log.LiteLoaderLogger; @@ -25,7 +25,9 @@ import com.mumfrey.liteloader.util.log.LiteLoaderLogger;
25 * Transformer which injects callbacks by searching for profiler invokations and RETURN opcodes 25 * Transformer which injects callbacks by searching for profiler invokations and RETURN opcodes
26 * 26 *
27 * @author Adam Mummery-Smith 27 * @author Adam Mummery-Smith
  28 + * @deprecated Use Event Injection instead
28 */ 29 */
  30 +@Deprecated
29 public abstract class CallbackInjectionTransformer extends ClassTransformer 31 public abstract class CallbackInjectionTransformer extends ClassTransformer
30 { 32 {
31 /** 33 /**
java/common/com/mumfrey/liteloader/transformers/ClassOverlayTransformer.java
1 package com.mumfrey.liteloader.transformers; 1 package com.mumfrey.liteloader.transformers;
2 2
3 import java.io.IOException; 3 import java.io.IOException;
4 -import java.lang.annotation.Annotation;  
5 import java.util.HashMap; 4 import java.util.HashMap;
6 import java.util.HashSet; 5 import java.util.HashSet;
7 import java.util.Iterator; 6 import java.util.Iterator;
@@ -288,7 +287,7 @@ public abstract class ClassOverlayTransformer extends ClassTransformer @@ -288,7 +287,7 @@ public abstract class ClassOverlayTransformer extends ClassTransformer
288 throw new InvalidOverlayException(String.format("Overlay classes cannot contain non-private static methods or fields, found %s", field.name)); 287 throw new InvalidOverlayException(String.format("Overlay classes cannot contain non-private static methods or fields, found %s", field.name));
289 } 288 }
290 289
291 - FieldNode target = this.findTargetField(targetClass, field); 290 + FieldNode target = ByteCodeUtilities.findTargetField(targetClass, field);
292 if (target == null) 291 if (target == null)
293 { 292 {
294 targetClass.fields.add(field); 293 targetClass.fields.add(field);
@@ -319,7 +318,7 @@ public abstract class ClassOverlayTransformer extends ClassTransformer @@ -319,7 +318,7 @@ public abstract class ClassOverlayTransformer extends ClassTransformer
319 { 318 {
320 for (MethodNode overlayMethod : overlayClass.methods) 319 for (MethodNode overlayMethod : overlayClass.methods)
321 { 320 {
322 - if (this.getAnnotation(overlayMethod, Stub.class) != null || (this.getAnnotation(overlayMethod, AppendInsns.class) == null && !overlayMethod.name.startsWith("<"))) 321 + if (ByteCodeUtilities.getAnnotation(overlayMethod, Stub.class) != null || (ByteCodeUtilities.getAnnotation(overlayMethod, AppendInsns.class) == null && !overlayMethod.name.startsWith("<")))
323 { 322 {
324 this.checkRenameMethod(targetClass, overlayMethod); 323 this.checkRenameMethod(targetClass, overlayMethod);
325 } 324 }
@@ -338,12 +337,12 @@ public abstract class ClassOverlayTransformer extends ClassTransformer @@ -338,12 +337,12 @@ public abstract class ClassOverlayTransformer extends ClassTransformer
338 { 337 {
339 this.transformMethod(overlayMethod, overlayClass.name, targetClass.name); 338 this.transformMethod(overlayMethod, overlayClass.name, targetClass.name);
340 339
341 - AnnotationNode appendAnnotation = this.getAnnotation(overlayMethod, AppendInsns.class);  
342 - AnnotationNode stubAnnotation = this.getAnnotation(overlayMethod, Stub.class); 340 + AnnotationNode appendAnnotation = ByteCodeUtilities.getAnnotation(overlayMethod, AppendInsns.class);
  341 + AnnotationNode stubAnnotation = ByteCodeUtilities.getAnnotation(overlayMethod, Stub.class);
343 342
344 if (stubAnnotation != null) 343 if (stubAnnotation != null)
345 { 344 {
346 - MethodNode target = this.findTargetMethod(targetClass, overlayMethod); 345 + MethodNode target = ByteCodeUtilities.findTargetMethod(targetClass, overlayMethod);
347 if (target == null) 346 if (target == null)
348 { 347 {
349 throw new InvalidOverlayException(String.format("Stub method %s was not located in the target class", overlayMethod.name)); 348 throw new InvalidOverlayException(String.format("Stub method %s was not located in the target class", overlayMethod.name));
@@ -351,7 +350,7 @@ public abstract class ClassOverlayTransformer extends ClassTransformer @@ -351,7 +350,7 @@ public abstract class ClassOverlayTransformer extends ClassTransformer
351 } 350 }
352 else if (appendAnnotation != null) 351 else if (appendAnnotation != null)
353 { 352 {
354 - String targetMethodName = this.<String>getAnnotationValue(appendAnnotation); 353 + String targetMethodName = ByteCodeUtilities.<String>getAnnotationValue(appendAnnotation);
355 this.appendInsns(targetClass, targetMethodName, overlayMethod); 354 this.appendInsns(targetClass, targetMethodName, overlayMethod);
356 } 355 }
357 else if (!overlayMethod.name.startsWith("<")) 356 else if (!overlayMethod.name.startsWith("<"))
@@ -361,7 +360,7 @@ public abstract class ClassOverlayTransformer extends ClassTransformer @@ -361,7 +360,7 @@ public abstract class ClassOverlayTransformer extends ClassTransformer
361 continue; 360 continue;
362 } 361 }
363 362
364 - MethodNode target = this.findTargetMethod(targetClass, overlayMethod); 363 + MethodNode target = ByteCodeUtilities.findTargetMethod(targetClass, overlayMethod);
365 if (target != null) targetClass.methods.remove(target); 364 if (target != null) targetClass.methods.remove(target);
366 targetClass.methods.add(overlayMethod); 365 targetClass.methods.add(overlayMethod);
367 } 366 }
@@ -434,10 +433,10 @@ public abstract class ClassOverlayTransformer extends ClassTransformer @@ -434,10 +433,10 @@ public abstract class ClassOverlayTransformer extends ClassTransformer
434 if (targetMethodName == null || targetMethodName.length() == 0) targetMethodName = sourceMethod.name; 433 if (targetMethodName == null || targetMethodName.length() == 0) targetMethodName = sourceMethod.name;
435 434
436 Set<String> obfuscatedNames = new HashSet<String>(); 435 Set<String> obfuscatedNames = new HashSet<String>();
437 - AnnotationNode obfuscatedAnnotation = this.getAnnotation(sourceMethod, Obfuscated.class); 436 + AnnotationNode obfuscatedAnnotation = ByteCodeUtilities.getAnnotation(sourceMethod, Obfuscated.class);
438 if (obfuscatedAnnotation != null) 437 if (obfuscatedAnnotation != null)
439 { 438 {
440 - obfuscatedNames.addAll(this.<List<String>>getAnnotationValue(obfuscatedAnnotation)); 439 + obfuscatedNames.addAll(ByteCodeUtilities.<List<String>>getAnnotationValue(obfuscatedAnnotation));
441 } 440 }
442 441
443 for (MethodNode method : targetClass.methods) 442 for (MethodNode method : targetClass.methods)
@@ -475,7 +474,7 @@ public abstract class ClassOverlayTransformer extends ClassTransformer @@ -475,7 +474,7 @@ public abstract class ClassOverlayTransformer extends ClassTransformer
475 */ 474 */
476 private void checkRenameMethod(ClassNode targetClass, MethodNode searchFor) 475 private void checkRenameMethod(ClassNode targetClass, MethodNode searchFor)
477 { 476 {
478 - MethodNode target = this.findTargetMethod(targetClass, searchFor); 477 + MethodNode target = ByteCodeUtilities.findTargetMethod(targetClass, searchFor);
479 if (target != null && !target.name.equals(searchFor.name)) 478 if (target != null && !target.name.equals(searchFor.name))
480 { 479 {
481 String methodDescriptor = searchFor.name + searchFor.desc; 480 String methodDescriptor = searchFor.name + searchFor.desc;
@@ -485,139 +484,6 @@ public abstract class ClassOverlayTransformer extends ClassTransformer @@ -485,139 +484,6 @@ public abstract class ClassOverlayTransformer extends ClassTransformer
485 } 484 }
486 485
487 /** 486 /**
488 - * Finds a method in the target class, uses names specified in the {@link Obfuscated} annotation if present  
489 - *  
490 - * @param targetClass  
491 - * @param searchFor  
492 - * @return  
493 - */  
494 - private MethodNode findTargetMethod(ClassNode targetClass, MethodNode searchFor)  
495 - {  
496 - for (MethodNode target : targetClass.methods)  
497 - {  
498 - if (target.name.equals(searchFor.name) && target.desc.equals(searchFor.desc))  
499 - return target;  
500 - }  
501 -  
502 - AnnotationNode obfuscatedAnnotation = this.getAnnotation(searchFor, Obfuscated.class);  
503 - if (obfuscatedAnnotation != null)  
504 - {  
505 - for (String obfuscatedName : this.<List<String>>getAnnotationValue(obfuscatedAnnotation))  
506 - {  
507 - for (MethodNode target : targetClass.methods)  
508 - {  
509 - if (target.name.equals(obfuscatedName) && target.desc.equals(searchFor.desc))  
510 - return target;  
511 - }  
512 - }  
513 - }  
514 -  
515 - return null;  
516 - }  
517 -  
518 - /**  
519 - * Finds a field in the target class, uses names specified in the {@link Obfuscated} annotation if present  
520 - *  
521 - * @param targetClass  
522 - * @param searchFor  
523 - * @return  
524 - */  
525 - private FieldNode findTargetField(ClassNode targetClass, FieldNode searchFor)  
526 - {  
527 - for (FieldNode target : targetClass.fields)  
528 - {  
529 - if (target.name.equals(searchFor.name))  
530 - return target;  
531 - }  
532 -  
533 - AnnotationNode obfuscatedAnnotation = this.getAnnotation(searchFor, Obfuscated.class);  
534 - if (obfuscatedAnnotation != null)  
535 - {  
536 - for (String obfuscatedName : this.<List<String>>getAnnotationValue(obfuscatedAnnotation))  
537 - {  
538 - for (FieldNode target : targetClass.fields)  
539 - {  
540 - if (target.name.equals(obfuscatedName))  
541 - return target;  
542 - }  
543 - }  
544 - }  
545 -  
546 - return null;  
547 - }  
548 -  
549 - /**  
550 - * Get an annotation of the specified class from the supplied field node  
551 - *  
552 - * @param field  
553 - * @param annotationType  
554 - * @return  
555 - */  
556 - private AnnotationNode getAnnotation(FieldNode field, Class<? extends Annotation> annotationClass)  
557 - {  
558 - return this.getAnnotation(field.visibleAnnotations, Type.getDescriptor(annotationClass));  
559 - }  
560 -  
561 - /**  
562 - * Get an annotation of the specified class from the supplied method node  
563 - *  
564 - * @param method  
565 - * @param annotationType  
566 - * @return  
567 - */  
568 - private AnnotationNode getAnnotation(MethodNode method, Class<? extends Annotation> annotationClass)  
569 - {  
570 - return this.getAnnotation(method.visibleAnnotations, Type.getDescriptor(annotationClass));  
571 - }  
572 -  
573 - /**  
574 - * @param annotations  
575 - * @param annotationType  
576 - * @return  
577 - */  
578 - private AnnotationNode getAnnotation(List<AnnotationNode> annotations, String annotationType)  
579 - {  
580 - if (annotations != null)  
581 - {  
582 - for (AnnotationNode annotation : annotations)  
583 - {  
584 - if (annotationType.equals(annotation.desc))  
585 - return annotation;  
586 - }  
587 - }  
588 -  
589 - return null;  
590 - }  
591 -  
592 - /**  
593 - * Get the value of an annotation node  
594 - *  
595 - * @param annotation  
596 - * @return  
597 - */  
598 - private <T> T getAnnotationValue(AnnotationNode annotation)  
599 - {  
600 - return this.getAnnotationValue(annotation, "value");  
601 - }  
602 -  
603 - /**  
604 - * @param annotation  
605 - * @param key  
606 - * @return  
607 - */  
608 - @SuppressWarnings("unchecked")  
609 - private <T> T getAnnotationValue(AnnotationNode annotation, String key)  
610 - {  
611 - boolean getNextValue = false;  
612 - for (Object value : annotation.values)  
613 - {  
614 - if (getNextValue) return (T)value;  
615 - if (value.equals(key)) getNextValue = true;  
616 - }  
617 - return null;  
618 - }  
619 -  
620 - /**  
621 * @param transformedName 487 * @param transformedName
622 * @return 488 * @return
623 * @throws InvalidOverlayException 489 * @throws InvalidOverlayException
java/common/com/mumfrey/liteloader/transformers/ClassTransformer.java
1 package com.mumfrey.liteloader.transformers; 1 package com.mumfrey.liteloader.transformers;
2 2
  3 +import net.minecraft.launchwrapper.IClassTransformer;
  4 +
3 import org.objectweb.asm.ClassReader; 5 import org.objectweb.asm.ClassReader;
4 import org.objectweb.asm.ClassWriter; 6 import org.objectweb.asm.ClassWriter;
5 import org.objectweb.asm.tree.ClassNode; 7 import org.objectweb.asm.tree.ClassNode;
6 8
7 -import net.minecraft.launchwrapper.IClassTransformer;  
8 -  
9 /** 9 /**
10 * Base class for transformers which work via ClassNode 10 * Base class for transformers which work via ClassNode
11 * 11 *
@@ -13,6 +13,8 @@ import net.minecraft.launchwrapper.IClassTransformer; @@ -13,6 +13,8 @@ import net.minecraft.launchwrapper.IClassTransformer;
13 */ 13 */
14 public abstract class ClassTransformer implements IClassTransformer 14 public abstract class ClassTransformer implements IClassTransformer
15 { 15 {
  16 + public static final String HORIZONTAL_RULE = "----------------------------------------------------------------------------------------------------";
  17 +
16 private ClassReader classReader; 18 private ClassReader classReader;
17 private ClassNode classNode; 19 private ClassNode classNode;
18 20
@@ -52,4 +54,11 @@ public abstract class ClassTransformer implements IClassTransformer @@ -52,4 +54,11 @@ public abstract class ClassTransformer implements IClassTransformer
52 classNode.accept(writer); 54 classNode.accept(writer);
53 return writer.toByteArray(); 55 return writer.toByteArray();
54 } 56 }
  57 +
  58 + protected static String getSimpleClassName(ClassNode classNode)
  59 + {
  60 + String className = classNode.name.replace('/', '.');
  61 + int dotPos = className.lastIndexOf('.');
  62 + return dotPos == -1 ? className : className.substring(dotPos + 1);
  63 + }
55 } 64 }
56 \ No newline at end of file 65 \ No newline at end of file