Commit 7e6adb61cdefcb0bcf6f8895744cda19938536c9
1 parent
5403adcb
LiteLoader for Minecraft 1.5
Showing
11 changed files
with
245 additions
and
155 deletions
java/com/mumfrey/liteloader/PluginChannelListener.java
| @@ -16,12 +16,12 @@ public interface PluginChannelListener extends LoginListener | @@ -16,12 +16,12 @@ public interface PluginChannelListener extends LoginListener | ||
| 16 | */ | 16 | */ |
| 17 | public abstract List<String> getChannels(); | 17 | public abstract List<String> getChannels(); |
| 18 | 18 | ||
| 19 | - /** | ||
| 20 | - * Called when a custom payload packet arrives on a channel this mod has registered | ||
| 21 | - * | ||
| 22 | - * @param channel Channel on which the custom payload was received | ||
| 23 | - * @param length Length of the custom payload data | ||
| 24 | - * @param data Custom payload data | ||
| 25 | - */ | ||
| 26 | - public abstract void onCustomPayload(String channel, int length, byte[] data); | 19 | + /** |
| 20 | + * Called when a custom payload packet arrives on a channel this mod has registered | ||
| 21 | + * | ||
| 22 | + * @param channel Channel on which the custom payload was received | ||
| 23 | + * @param length Length of the custom payload data | ||
| 24 | + * @param data Custom payload data | ||
| 25 | + */ | ||
| 26 | + public abstract void onCustomPayload(String channel, int length, byte[] data); | ||
| 27 | } | 27 | } |
java/com/mumfrey/liteloader/core/HookChat.java
| @@ -117,15 +117,15 @@ public class HookChat extends Packet3Chat | @@ -117,15 +117,15 @@ public class HookChat extends Packet3Chat | ||
| 117 | { | 117 | { |
| 118 | if (proxyPacket != null) | 118 | if (proxyPacket != null) |
| 119 | return proxyPacket.getPacketSize(); | 119 | return proxyPacket.getPacketSize(); |
| 120 | - else | ||
| 121 | - return super.getPacketSize(); | 120 | + |
| 121 | + return super.getPacketSize(); | ||
| 122 | } | 122 | } |
| 123 | 123 | ||
| 124 | /** | 124 | /** |
| 125 | * Register the specified handler as the packet handler for this packet | 125 | * Register the specified handler as the packet handler for this packet |
| 126 | * @param handler | 126 | * @param handler |
| 127 | */ | 127 | */ |
| 128 | - public static void RegisterPacketHandler(LiteLoader handler) | 128 | + public static void registerPacketHandler(LiteLoader handler) |
| 129 | { | 129 | { |
| 130 | packetHandler = handler; | 130 | packetHandler = handler; |
| 131 | } | 131 | } |
| @@ -133,9 +133,9 @@ public class HookChat extends Packet3Chat | @@ -133,9 +133,9 @@ public class HookChat extends Packet3Chat | ||
| 133 | /** | 133 | /** |
| 134 | * Register this packet as the new packet for packet ID 3 | 134 | * Register this packet as the new packet for packet ID 3 |
| 135 | */ | 135 | */ |
| 136 | - public static void Register() | 136 | + public static void register() |
| 137 | { | 137 | { |
| 138 | - Register(false); | 138 | + register(false); |
| 139 | } | 139 | } |
| 140 | 140 | ||
| 141 | /** | 141 | /** |
| @@ -144,8 +144,8 @@ public class HookChat extends Packet3Chat | @@ -144,8 +144,8 @@ public class HookChat extends Packet3Chat | ||
| 144 | * | 144 | * |
| 145 | * @param force Force registration even if registration was already performed previously. | 145 | * @param force Force registration even if registration was already performed previously. |
| 146 | */ | 146 | */ |
| 147 | - @SuppressWarnings("unchecked") | ||
| 148 | - public static void Register(boolean force) | 147 | + @SuppressWarnings({ "unchecked", "rawtypes" }) |
| 148 | + public static void register(boolean force) | ||
| 149 | { | 149 | { |
| 150 | if (!registered || force) | 150 | if (!registered || force) |
| 151 | { | 151 | { |
| @@ -162,7 +162,7 @@ public class HookChat extends Packet3Chat | @@ -162,7 +162,7 @@ public class HookChat extends Packet3Chat | ||
| 162 | packetIdToClassMap.removeObject(3); | 162 | packetIdToClassMap.removeObject(3); |
| 163 | packetIdToClassMap.addKey(3, HookChat.class); | 163 | packetIdToClassMap.addKey(3, HookChat.class); |
| 164 | 164 | ||
| 165 | - Map packetClassToIdMap = PrivateFields.StaticFields.packetClassToIdMap.Get(); | 165 | + Map packetClassToIdMap = PrivateFields.StaticFields.packetClassToIdMap.get(); |
| 166 | packetClassToIdMap.put(HookChat.class, Integer.valueOf(3)); | 166 | packetClassToIdMap.put(HookChat.class, Integer.valueOf(3)); |
| 167 | 167 | ||
| 168 | registered = true; | 168 | registered = true; |
java/com/mumfrey/liteloader/core/HookPluginChannels.java
| @@ -109,15 +109,15 @@ public class HookPluginChannels extends Packet250CustomPayload | @@ -109,15 +109,15 @@ public class HookPluginChannels extends Packet250CustomPayload | ||
| 109 | { | 109 | { |
| 110 | if (proxyPacket != null) | 110 | if (proxyPacket != null) |
| 111 | return proxyPacket.getPacketSize(); | 111 | return proxyPacket.getPacketSize(); |
| 112 | - else | ||
| 113 | - return super.getPacketSize(); | 112 | + |
| 113 | + return super.getPacketSize(); | ||
| 114 | } | 114 | } |
| 115 | 115 | ||
| 116 | /** | 116 | /** |
| 117 | * Register the specified handler as the packet handler for this packet | 117 | * Register the specified handler as the packet handler for this packet |
| 118 | * @param handler | 118 | * @param handler |
| 119 | */ | 119 | */ |
| 120 | - public static void RegisterPacketHandler(LiteLoader handler) | 120 | + public static void registerPacketHandler(LiteLoader handler) |
| 121 | { | 121 | { |
| 122 | packetHandler = handler; | 122 | packetHandler = handler; |
| 123 | } | 123 | } |
| @@ -125,9 +125,9 @@ public class HookPluginChannels extends Packet250CustomPayload | @@ -125,9 +125,9 @@ public class HookPluginChannels extends Packet250CustomPayload | ||
| 125 | /** | 125 | /** |
| 126 | * Register this packet as the new packet for packet ID 250 | 126 | * Register this packet as the new packet for packet ID 250 |
| 127 | */ | 127 | */ |
| 128 | - public static void Register() | 128 | + public static void register() |
| 129 | { | 129 | { |
| 130 | - Register(false); | 130 | + register(false); |
| 131 | } | 131 | } |
| 132 | 132 | ||
| 133 | /** | 133 | /** |
| @@ -136,8 +136,8 @@ public class HookPluginChannels extends Packet250CustomPayload | @@ -136,8 +136,8 @@ public class HookPluginChannels extends Packet250CustomPayload | ||
| 136 | * | 136 | * |
| 137 | * @param force Force registration even if registration was already performed previously. | 137 | * @param force Force registration even if registration was already performed previously. |
| 138 | */ | 138 | */ |
| 139 | - @SuppressWarnings("unchecked") | ||
| 140 | - public static void Register(boolean force) | 139 | + @SuppressWarnings({ "unchecked", "rawtypes" }) |
| 140 | + public static void register(boolean force) | ||
| 141 | { | 141 | { |
| 142 | if (!registered || force) | 142 | if (!registered || force) |
| 143 | { | 143 | { |
| @@ -154,7 +154,7 @@ public class HookPluginChannels extends Packet250CustomPayload | @@ -154,7 +154,7 @@ public class HookPluginChannels extends Packet250CustomPayload | ||
| 154 | packetIdToClassMap.removeObject(250); | 154 | packetIdToClassMap.removeObject(250); |
| 155 | packetIdToClassMap.addKey(250, HookPluginChannels.class); | 155 | packetIdToClassMap.addKey(250, HookPluginChannels.class); |
| 156 | 156 | ||
| 157 | - Map packetClassToIdMap = PrivateFields.StaticFields.packetClassToIdMap.Get(); | 157 | + Map packetClassToIdMap = PrivateFields.StaticFields.packetClassToIdMap.get(); |
| 158 | packetClassToIdMap.put(HookPluginChannels.class, Integer.valueOf(250)); | 158 | packetClassToIdMap.put(HookPluginChannels.class, Integer.valueOf(250)); |
| 159 | 159 | ||
| 160 | registered = true; | 160 | registered = true; |
java/com/mumfrey/liteloader/core/HookProfiler.java
| @@ -5,10 +5,7 @@ import java.lang.reflect.Method; | @@ -5,10 +5,7 @@ import java.lang.reflect.Method; | ||
| 5 | import java.util.LinkedList; | 5 | import java.util.LinkedList; |
| 6 | import java.util.logging.Logger; | 6 | import java.util.logging.Logger; |
| 7 | 7 | ||
| 8 | -import com.mumfrey.liteloader.util.ModUtilities; | ||
| 9 | - | ||
| 10 | import net.minecraft.client.Minecraft; | 8 | import net.minecraft.client.Minecraft; |
| 11 | -import net.minecraft.src.EntityPlayerSP; | ||
| 12 | import net.minecraft.src.GameSettings; | 9 | import net.minecraft.src.GameSettings; |
| 13 | import net.minecraft.src.Profiler; | 10 | import net.minecraft.src.Profiler; |
| 14 | 11 | ||
| @@ -68,7 +65,7 @@ public class HookProfiler extends Profiler | @@ -68,7 +65,7 @@ public class HookProfiler extends Profiler | ||
| 68 | this.logger = logger; | 65 | this.logger = logger; |
| 69 | 66 | ||
| 70 | // Detect optifine (duh!) | 67 | // Detect optifine (duh!) |
| 71 | - DetectOptifine(); | 68 | + detectOptifine(); |
| 72 | } | 69 | } |
| 73 | 70 | ||
| 74 | /** | 71 | /** |
| @@ -76,7 +73,7 @@ public class HookProfiler extends Profiler | @@ -76,7 +73,7 @@ public class HookProfiler extends Profiler | ||
| 76 | * | 73 | * |
| 77 | * @param logger | 74 | * @param logger |
| 78 | */ | 75 | */ |
| 79 | - private void DetectOptifine() | 76 | + private void detectOptifine() |
| 80 | { | 77 | { |
| 81 | try | 78 | try |
| 82 | { | 79 | { |
| @@ -91,7 +88,7 @@ public class HookProfiler extends Profiler | @@ -91,7 +88,7 @@ public class HookProfiler extends Profiler | ||
| 91 | { | 88 | { |
| 92 | if (ofProfiler != null) | 89 | if (ofProfiler != null) |
| 93 | { | 90 | { |
| 94 | - logger.info(String.format("Optifine version %s detected, enabling compatibility check", GetOptifineVersion())); | 91 | + logger.info(String.format("Optifine version %s detected, enabling compatibility check", getOptifineVersion())); |
| 95 | } | 92 | } |
| 96 | } | 93 | } |
| 97 | } | 94 | } |
| @@ -101,15 +98,14 @@ public class HookProfiler extends Profiler | @@ -101,15 +98,14 @@ public class HookProfiler extends Profiler | ||
| 101 | * | 98 | * |
| 102 | * @return | 99 | * @return |
| 103 | */ | 100 | */ |
| 104 | - private String GetOptifineVersion() | 101 | + private String getOptifineVersion() |
| 105 | { | 102 | { |
| 106 | try | 103 | try |
| 107 | { | 104 | { |
| 108 | - Class config = Class.forName("Config"); | 105 | + Class<?> config = Class.forName("Config"); |
| 109 | 106 | ||
| 110 | if (config != null) | 107 | if (config != null) |
| 111 | { | 108 | { |
| 112 | - @SuppressWarnings("unchecked") | ||
| 113 | Method getVersion = config.getDeclaredMethod("getVersion"); | 109 | Method getVersion = config.getDeclaredMethod("getVersion"); |
| 114 | 110 | ||
| 115 | if (getVersion != null) | 111 | if (getVersion != null) |
java/com/mumfrey/liteloader/core/LiteLoader.java
| @@ -11,7 +11,6 @@ import java.io.IOException; | @@ -11,7 +11,6 @@ import java.io.IOException; | ||
| 11 | import java.io.InputStream; | 11 | import java.io.InputStream; |
| 12 | import java.io.InputStreamReader; | 12 | import java.io.InputStreamReader; |
| 13 | import java.io.PrintStream; | 13 | import java.io.PrintStream; |
| 14 | -import java.lang.reflect.Constructor; | ||
| 15 | import java.lang.reflect.Method; | 14 | import java.lang.reflect.Method; |
| 16 | import java.net.URL; | 15 | import java.net.URL; |
| 17 | import java.net.URLClassLoader; | 16 | import java.net.URLClassLoader; |
| @@ -32,8 +31,9 @@ import java.util.zip.ZipEntry; | @@ -32,8 +31,9 @@ import java.util.zip.ZipEntry; | ||
| 32 | import java.util.zip.ZipFile; | 31 | import java.util.zip.ZipFile; |
| 33 | import java.util.zip.ZipInputStream; | 32 | import java.util.zip.ZipInputStream; |
| 34 | 33 | ||
| 34 | +import javax.activity.InvalidActivityException; | ||
| 35 | + | ||
| 35 | import net.minecraft.client.Minecraft; | 36 | import net.minecraft.client.Minecraft; |
| 36 | -import net.minecraft.src.ConsoleLogManager; | ||
| 37 | import net.minecraft.src.NetHandler; | 37 | import net.minecraft.src.NetHandler; |
| 38 | import net.minecraft.src.Packet1Login; | 38 | import net.minecraft.src.Packet1Login; |
| 39 | import net.minecraft.src.Packet3Chat; | 39 | import net.minecraft.src.Packet3Chat; |
| @@ -57,7 +57,7 @@ import com.mumfrey.liteloader.util.PrivateFields; | @@ -57,7 +57,7 @@ import com.mumfrey.liteloader.util.PrivateFields; | ||
| 57 | * LiteLoader is a simple loader which provides tick events to loaded mods | 57 | * LiteLoader is a simple loader which provides tick events to loaded mods |
| 58 | * | 58 | * |
| 59 | * @author Adam Mummery-Smith | 59 | * @author Adam Mummery-Smith |
| 60 | - * @version 1.4.7 | 60 | + * @version 1.5 |
| 61 | */ | 61 | */ |
| 62 | @SuppressWarnings("rawtypes") | 62 | @SuppressWarnings("rawtypes") |
| 63 | public final class LiteLoader implements FilenameFilter | 63 | public final class LiteLoader implements FilenameFilter |
| @@ -65,19 +65,19 @@ public final class LiteLoader implements FilenameFilter | @@ -65,19 +65,19 @@ public final class LiteLoader implements FilenameFilter | ||
| 65 | /** | 65 | /** |
| 66 | * Liteloader version | 66 | * Liteloader version |
| 67 | */ | 67 | */ |
| 68 | - private static final String LOADER_VERSION = "1.4.7"; | 68 | + private static final String LOADER_VERSION = "1.5"; |
| 69 | 69 | ||
| 70 | /** | 70 | /** |
| 71 | * Loader revision, can be used by mods to determine whether the loader is sufficiently up-to-date | 71 | * Loader revision, can be used by mods to determine whether the loader is sufficiently up-to-date |
| 72 | */ | 72 | */ |
| 73 | - private static final int LOADER_REVISION = 7; | 73 | + private static final int LOADER_REVISION = 8; |
| 74 | 74 | ||
| 75 | /** | 75 | /** |
| 76 | * Minecraft versions that we will load mods for, this will be compared | 76 | * Minecraft versions that we will load mods for, this will be compared |
| 77 | * against the version.txt value in mod files to prevent outdated mods being | 77 | * against the version.txt value in mod files to prevent outdated mods being |
| 78 | * loaded!!! | 78 | * loaded!!! |
| 79 | */ | 79 | */ |
| 80 | - private static final String[] SUPPORTED_VERSIONS = { "1.4.6", "1.4.7" }; | 80 | + private static final String[] SUPPORTED_VERSIONS = { "1.5", "1.5.r1" }; |
| 81 | 81 | ||
| 82 | /** | 82 | /** |
| 83 | * Maximum recursion depth for mod discovery | 83 | * Maximum recursion depth for mod discovery |
| @@ -241,6 +241,11 @@ public final class LiteLoader implements FilenameFilter | @@ -241,6 +241,11 @@ public final class LiteLoader implements FilenameFilter | ||
| 241 | return logger; | 241 | return logger; |
| 242 | } | 242 | } |
| 243 | 243 | ||
| 244 | + /** | ||
| 245 | + * Get the output stream which we are using for console output | ||
| 246 | + * | ||
| 247 | + * @return | ||
| 248 | + */ | ||
| 244 | public static final PrintStream getConsoleStream() | 249 | public static final PrintStream getConsoleStream() |
| 245 | { | 250 | { |
| 246 | return useStdOut ? System.out : System.err; | 251 | return useStdOut ? System.out : System.err; |
| @@ -331,7 +336,7 @@ public final class LiteLoader implements FilenameFilter | @@ -331,7 +336,7 @@ public final class LiteLoader implements FilenameFilter | ||
| 331 | */ | 336 | */ |
| 332 | private void prepareClassOverrides() | 337 | private void prepareClassOverrides() |
| 333 | { | 338 | { |
| 334 | - this.registerBaseClassOverride(ModUtilities.getObfuscatedFieldName("net.minecraft.src.CallableJVMFlags", "g"), "g"); | 339 | + this.registerBaseClassOverride(ModUtilities.getObfuscatedFieldName("net.minecraft.src.CallableJVMFlags", "h"), "h"); |
| 335 | } | 340 | } |
| 336 | 341 | ||
| 337 | /** | 342 | /** |
| @@ -355,25 +360,25 @@ public final class LiteLoader implements FilenameFilter | @@ -355,25 +360,25 @@ public final class LiteLoader implements FilenameFilter | ||
| 355 | 360 | ||
| 356 | for (int readBytes = resourceInputStream.read(); readBytes >= 0; readBytes = resourceInputStream.read()) | 361 | for (int readBytes = resourceInputStream.read(); readBytes >= 0; readBytes = resourceInputStream.read()) |
| 357 | { | 362 | { |
| 358 | - outputStream.write(readBytes); | 363 | + outputStream.write(readBytes); |
| 359 | } | 364 | } |
| 360 | - | 365 | + |
| 361 | byte[] data = outputStream.toByteArray(); | 366 | byte[] data = outputStream.toByteArray(); |
| 362 | 367 | ||
| 363 | outputStream.close(); | 368 | outputStream.close(); |
| 364 | - resourceInputStream.close(); | 369 | + resourceInputStream.close(); |
| 365 | 370 | ||
| 366 | - logger.info("Defining class override for " + binaryClassName); | ||
| 367 | - mDefineClass.invoke(Minecraft.class.getClassLoader(), binaryClassName, data, 0, data.length); | 371 | + logger.info("Defining class override for " + binaryClassName); |
| 372 | + mDefineClass.invoke(Minecraft.class.getClassLoader(), binaryClassName, data, 0, data.length); | ||
| 368 | } | 373 | } |
| 369 | else | 374 | else |
| 370 | { | 375 | { |
| 371 | - logger.info("Error defining class override for " + binaryClassName + ", file not found"); | 376 | + logger.info("Error defining class override for " + binaryClassName + ", file not found"); |
| 372 | } | 377 | } |
| 373 | } | 378 | } |
| 374 | catch (Throwable th) | 379 | catch (Throwable th) |
| 375 | { | 380 | { |
| 376 | - logger.log(Level.WARNING, "Error defining class override for " + binaryClassName, th); | 381 | + logger.log(Level.WARNING, "Error defining class override for " + binaryClassName, th); |
| 377 | } | 382 | } |
| 378 | } | 383 | } |
| 379 | 384 | ||
| @@ -417,34 +422,19 @@ public final class LiteLoader implements FilenameFilter | @@ -417,34 +422,19 @@ public final class LiteLoader implements FilenameFilter | ||
| 417 | * @throws SecurityException | 422 | * @throws SecurityException |
| 418 | * @throws IOException | 423 | * @throws IOException |
| 419 | */ | 424 | */ |
| 420 | - @SuppressWarnings("unchecked") | ||
| 421 | private void prepareLogger() throws SecurityException, IOException | 425 | private void prepareLogger() throws SecurityException, IOException |
| 422 | { | 426 | { |
| 423 | - Formatter minecraftLogFormatter = null; | ||
| 424 | - | ||
| 425 | - try | ||
| 426 | - { | ||
| 427 | - Class<? extends Formatter> formatterClass = (Class<? extends Formatter>)Minecraft.class.getClassLoader().loadClass(ModUtilities.getObfuscatedFieldName("net.minecraft.src.ConsoleLogFormatter", "em")); | ||
| 428 | - Constructor<? extends Formatter> defaultConstructor = formatterClass.getDeclaredConstructor(); | ||
| 429 | - defaultConstructor.setAccessible(true); | ||
| 430 | - minecraftLogFormatter = defaultConstructor.newInstance(); | ||
| 431 | - } | ||
| 432 | - catch (Exception ex) | ||
| 433 | - { | ||
| 434 | - ConsoleLogManager.init(); | ||
| 435 | - minecraftLogFormatter = ConsoleLogManager.loggerLogManager.getHandlers()[0].getFormatter(); | ||
| 436 | - } | 427 | + Formatter logFormatter = new LiteLoaderLogFormatter(); |
| 437 | 428 | ||
| 438 | logger.setUseParentHandlers(false); | 429 | logger.setUseParentHandlers(false); |
| 439 | - | ||
| 440 | this.useStdOut = System.getProperty("liteloader.log", "stderr").equalsIgnoreCase("stdout") || this.localProperties.getProperty("log", "stderr").equalsIgnoreCase("stdout"); | 430 | this.useStdOut = System.getProperty("liteloader.log", "stderr").equalsIgnoreCase("stdout") || this.localProperties.getProperty("log", "stderr").equalsIgnoreCase("stdout"); |
| 441 | 431 | ||
| 442 | StreamHandler consoleHandler = useStdOut ? new com.mumfrey.liteloader.util.log.ConsoleHandler() : new java.util.logging.ConsoleHandler(); | 432 | StreamHandler consoleHandler = useStdOut ? new com.mumfrey.liteloader.util.log.ConsoleHandler() : new java.util.logging.ConsoleHandler(); |
| 443 | - if (minecraftLogFormatter != null) consoleHandler.setFormatter(minecraftLogFormatter); | 433 | + consoleHandler.setFormatter(logFormatter); |
| 444 | logger.addHandler(consoleHandler); | 434 | logger.addHandler(consoleHandler); |
| 445 | 435 | ||
| 446 | FileHandler logFileHandler = new FileHandler(new File(Minecraft.getMinecraftDir(), "LiteLoader.txt").getAbsolutePath()); | 436 | FileHandler logFileHandler = new FileHandler(new File(Minecraft.getMinecraftDir(), "LiteLoader.txt").getAbsolutePath()); |
| 447 | - if (minecraftLogFormatter != null) logFileHandler.setFormatter(minecraftLogFormatter); | 437 | + logFileHandler.setFormatter(logFormatter); |
| 448 | logger.addHandler(logFileHandler); | 438 | logger.addHandler(logFileHandler); |
| 449 | } | 439 | } |
| 450 | 440 | ||
| @@ -470,6 +460,7 @@ public final class LiteLoader implements FilenameFilter | @@ -470,6 +460,7 @@ public final class LiteLoader implements FilenameFilter | ||
| 470 | 460 | ||
| 471 | try | 461 | try |
| 472 | { | 462 | { |
| 463 | + this.localProperties = new Properties(this.internalProperties); | ||
| 473 | InputStream localPropertiesStream = this.getLocalPropertiesStream(); | 464 | InputStream localPropertiesStream = this.getLocalPropertiesStream(); |
| 474 | 465 | ||
| 475 | if (localPropertiesStream != null) | 466 | if (localPropertiesStream != null) |
| @@ -480,7 +471,7 @@ public final class LiteLoader implements FilenameFilter | @@ -480,7 +471,7 @@ public final class LiteLoader implements FilenameFilter | ||
| 480 | } | 471 | } |
| 481 | catch (Throwable th) | 472 | catch (Throwable th) |
| 482 | { | 473 | { |
| 483 | - this.localProperties = new Properties(); | 474 | + this.localProperties = new Properties(this.internalProperties); |
| 484 | } | 475 | } |
| 485 | } | 476 | } |
| 486 | 477 | ||
| @@ -560,6 +551,34 @@ public final class LiteLoader implements FilenameFilter | @@ -560,6 +551,34 @@ public final class LiteLoader implements FilenameFilter | ||
| 560 | } | 551 | } |
| 561 | 552 | ||
| 562 | /** | 553 | /** |
| 554 | + * Get a reference to a loaded mod, if the mod exists | ||
| 555 | + * | ||
| 556 | + * @param modName Mod's name or class name | ||
| 557 | + * @return | ||
| 558 | + * @throws InvalidActivityException | ||
| 559 | + */ | ||
| 560 | + @SuppressWarnings("unchecked") | ||
| 561 | + public <T extends LiteMod> T getMod(String modName) throws InvalidActivityException, IllegalArgumentException | ||
| 562 | + { | ||
| 563 | + if (!this.loaderStartupComplete) | ||
| 564 | + { | ||
| 565 | + throw new InvalidActivityException("Attempted to get a reference to a mod before loader startup is complete"); | ||
| 566 | + } | ||
| 567 | + | ||
| 568 | + if (modName == null) | ||
| 569 | + { | ||
| 570 | + throw new IllegalArgumentException("Attempted to get a reference to a mod without specifying a mod name"); | ||
| 571 | + } | ||
| 572 | + | ||
| 573 | + for (LiteMod mod : this.mods) | ||
| 574 | + { | ||
| 575 | + if (modName.equalsIgnoreCase(mod.getName()) || modName.equalsIgnoreCase(mod.getClass().getSimpleName())) return (T)mod; | ||
| 576 | + } | ||
| 577 | + | ||
| 578 | + return null; | ||
| 579 | + } | ||
| 580 | + | ||
| 581 | + /** | ||
| 563 | * Enumerate the java class path and "mods" folder to find mod classes, then load the classes | 582 | * Enumerate the java class path and "mods" folder to find mod classes, then load the classes |
| 564 | */ | 583 | */ |
| 565 | private void prepareMods(boolean searchMods, boolean searchProtectionDomain, boolean searchClassPath) | 584 | private void prepareMods(boolean searchMods, boolean searchProtectionDomain, boolean searchClassPath) |
| @@ -637,6 +656,10 @@ public final class LiteLoader implements FilenameFilter | @@ -637,6 +656,10 @@ public final class LiteLoader implements FilenameFilter | ||
| 637 | { | 656 | { |
| 638 | modFiles.add(modFile); | 657 | modFiles.add(modFile); |
| 639 | } | 658 | } |
| 659 | + else | ||
| 660 | + { | ||
| 661 | + logger.info("Not adding invalid or outdated mod file: " + modFile.getAbsolutePath()); | ||
| 662 | + } | ||
| 640 | } | 663 | } |
| 641 | 664 | ||
| 642 | modZip.close(); | 665 | modZip.close(); |
| @@ -705,6 +728,11 @@ public final class LiteLoader implements FilenameFilter | @@ -705,6 +728,11 @@ public final class LiteLoader implements FilenameFilter | ||
| 705 | 728 | ||
| 706 | for (Class mod : modClasses) | 729 | for (Class mod : modClasses) |
| 707 | { | 730 | { |
| 731 | + if (modsToLoad.containsKey(mod.getSimpleName())) | ||
| 732 | + { | ||
| 733 | + logger.warning("Mod name collision for mod with class '" + mod.getSimpleName() + "', maybe you have more than one copy?"); | ||
| 734 | + } | ||
| 735 | + | ||
| 708 | modsToLoad.put(mod.getSimpleName(), mod); | 736 | modsToLoad.put(mod.getSimpleName(), mod); |
| 709 | } | 737 | } |
| 710 | 738 | ||
| @@ -729,6 +757,11 @@ public final class LiteLoader implements FilenameFilter | @@ -729,6 +757,11 @@ public final class LiteLoader implements FilenameFilter | ||
| 729 | 757 | ||
| 730 | for (Class mod : modClasses) | 758 | for (Class mod : modClasses) |
| 731 | { | 759 | { |
| 760 | + if (modsToLoad.containsKey(mod.getSimpleName())) | ||
| 761 | + { | ||
| 762 | + logger.warning("Mod name collision for mod with class '" + mod.getSimpleName() + "', maybe you have more than one copy?"); | ||
| 763 | + } | ||
| 764 | + | ||
| 732 | modsToLoad.put(mod.getSimpleName(), mod); | 765 | modsToLoad.put(mod.getSimpleName(), mod); |
| 733 | } | 766 | } |
| 734 | 767 | ||
| @@ -745,6 +778,11 @@ public final class LiteLoader implements FilenameFilter | @@ -745,6 +778,11 @@ public final class LiteLoader implements FilenameFilter | ||
| 745 | 778 | ||
| 746 | for (Class mod : modClasses) | 779 | for (Class mod : modClasses) |
| 747 | { | 780 | { |
| 781 | + if (modsToLoad.containsKey(mod.getSimpleName())) | ||
| 782 | + { | ||
| 783 | + logger.warning("Mod name collision for mod with class '" + mod.getSimpleName() + "', maybe you have more than one copy?"); | ||
| 784 | + } | ||
| 785 | + | ||
| 748 | modsToLoad.put(mod.getSimpleName(), mod); | 786 | modsToLoad.put(mod.getSimpleName(), mod); |
| 749 | } | 787 | } |
| 750 | 788 | ||
| @@ -831,9 +869,16 @@ public final class LiteLoader implements FilenameFilter | @@ -831,9 +869,16 @@ public final class LiteLoader implements FilenameFilter | ||
| 831 | this.addChatFilter((ChatFilter)mod); | 869 | this.addChatFilter((ChatFilter)mod); |
| 832 | } | 870 | } |
| 833 | 871 | ||
| 834 | - if (mod instanceof ChatListener && !(mod instanceof ChatFilter)) | 872 | + if (mod instanceof ChatListener) |
| 835 | { | 873 | { |
| 836 | - this.addChatListener((ChatListener)mod); | 874 | + if (mod instanceof ChatFilter) |
| 875 | + { | ||
| 876 | + this.logger.warning(String.format("Interface error initialising mod '%1s'. A mod implementing ChatFilter and ChatListener is not supported! Remove one of these interfaces", mod.getName())); | ||
| 877 | + } | ||
| 878 | + else | ||
| 879 | + { | ||
| 880 | + this.addChatListener((ChatListener)mod); | ||
| 881 | + } | ||
| 837 | } | 882 | } |
| 838 | 883 | ||
| 839 | if (mod instanceof PreLoginListener) | 884 | if (mod instanceof PreLoginListener) |
| @@ -875,8 +920,8 @@ public final class LiteLoader implements FilenameFilter | @@ -875,8 +920,8 @@ public final class LiteLoader implements FilenameFilter | ||
| 875 | if ((this.chatListeners.size() > 0 || this.chatFilters.size() > 0) && !this.chatHooked) | 920 | if ((this.chatListeners.size() > 0 || this.chatFilters.size() > 0) && !this.chatHooked) |
| 876 | { | 921 | { |
| 877 | this.chatHooked = true; | 922 | this.chatHooked = true; |
| 878 | - HookChat.Register(); | ||
| 879 | - HookChat.RegisterPacketHandler(this); | 923 | + HookChat.register(); |
| 924 | + HookChat.registerPacketHandler(this); | ||
| 880 | } | 925 | } |
| 881 | 926 | ||
| 882 | // Login hook | 927 | // Login hook |
| @@ -891,15 +936,15 @@ public final class LiteLoader implements FilenameFilter | @@ -891,15 +936,15 @@ public final class LiteLoader implements FilenameFilter | ||
| 891 | if (this.pluginChannelListeners.size() > 0 && !this.pluginChannelHooked) | 936 | if (this.pluginChannelListeners.size() > 0 && !this.pluginChannelHooked) |
| 892 | { | 937 | { |
| 893 | this.pluginChannelHooked = true; | 938 | this.pluginChannelHooked = true; |
| 894 | - HookPluginChannels.Register(); | ||
| 895 | - HookPluginChannels.RegisterPacketHandler(this); | 939 | + HookPluginChannels.register(); |
| 940 | + HookPluginChannels.registerPacketHandler(this); | ||
| 896 | } | 941 | } |
| 897 | 942 | ||
| 898 | // Tick hook | 943 | // Tick hook |
| 899 | if (!this.tickHooked) | 944 | if (!this.tickHooked) |
| 900 | { | 945 | { |
| 901 | this.tickHooked = true; | 946 | this.tickHooked = true; |
| 902 | - PrivateFields.minecraftProfiler.SetFinal(this.minecraft, new HookProfiler(this, logger)); | 947 | + PrivateFields.minecraftProfiler.setFinal(this.minecraft, new HookProfiler(this, logger)); |
| 903 | } | 948 | } |
| 904 | } | 949 | } |
| 905 | catch (Exception ex) | 950 | catch (Exception ex) |
| @@ -1272,7 +1317,7 @@ public final class LiteLoader implements FilenameFilter | @@ -1272,7 +1317,7 @@ public final class LiteLoader implements FilenameFilter | ||
| 1272 | // Try to get the minecraft timer object and determine the value of the partialTicks | 1317 | // Try to get the minecraft timer object and determine the value of the partialTicks |
| 1273 | if (tick || this.minecraftTimer == null) | 1318 | if (tick || this.minecraftTimer == null) |
| 1274 | { | 1319 | { |
| 1275 | - this.minecraftTimer = PrivateFields.minecraftTimer.Get(this.minecraft); | 1320 | + this.minecraftTimer = PrivateFields.minecraftTimer.get(this.minecraft); |
| 1276 | } | 1321 | } |
| 1277 | 1322 | ||
| 1278 | // Hooray, we got the timer reference | 1323 | // Hooray, we got the timer reference |
| @@ -1421,9 +1466,9 @@ public final class LiteLoader implements FilenameFilter | @@ -1421,9 +1466,9 @@ public final class LiteLoader implements FilenameFilter | ||
| 1421 | separator = true; | 1466 | separator = true; |
| 1422 | } | 1467 | } |
| 1423 | 1468 | ||
| 1424 | - byte[] registrationData = channelList.toString().getBytes(Charset.forName("UTF8")); | ||
| 1425 | - | ||
| 1426 | - sendPluginChannelMessage("REGISTER", registrationData); | 1469 | + byte[] registrationData = channelList.toString().getBytes(Charset.forName("UTF8")); |
| 1470 | + | ||
| 1471 | + sendPluginChannelMessage("REGISTER", registrationData); | ||
| 1427 | } | 1472 | } |
| 1428 | } | 1473 | } |
| 1429 | } | 1474 | } |
| 1430 | \ No newline at end of file | 1475 | \ No newline at end of file |
java/com/mumfrey/liteloader/core/LiteLoaderLogFormatter.java
0 โ 100644
| 1 | +package com.mumfrey.liteloader.core; | ||
| 2 | + | ||
| 3 | +import java.io.PrintWriter; | ||
| 4 | +import java.io.StringWriter; | ||
| 5 | +import java.text.SimpleDateFormat; | ||
| 6 | +import java.util.logging.Formatter; | ||
| 7 | +import java.util.logging.Level; | ||
| 8 | +import java.util.logging.LogRecord; | ||
| 9 | + | ||
| 10 | +final class LiteLoaderLogFormatter extends Formatter | ||
| 11 | +{ | ||
| 12 | + private SimpleDateFormat simpleDateFormatLogFormatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); | ||
| 13 | + | ||
| 14 | + @Override | ||
| 15 | + public String format(LogRecord logRecord) | ||
| 16 | + { | ||
| 17 | + StringBuilder sb = new StringBuilder(); | ||
| 18 | + sb.append(this.simpleDateFormatLogFormatter.format(Long.valueOf(logRecord.getMillis()))); | ||
| 19 | + Level var3 = logRecord.getLevel(); | ||
| 20 | + | ||
| 21 | + if (var3 == Level.SEVERE) | ||
| 22 | + sb.append(" [").append(var3.getLocalizedName()).append("] "); | ||
| 23 | + else | ||
| 24 | + sb.append(" [").append(var3.toString().toUpperCase()).append("] "); | ||
| 25 | + | ||
| 26 | + sb.append(logRecord.getMessage()); | ||
| 27 | + sb.append('\n'); | ||
| 28 | + Throwable th = logRecord.getThrown(); | ||
| 29 | + | ||
| 30 | + if (th != null) | ||
| 31 | + { | ||
| 32 | + StringWriter var5 = new StringWriter(); | ||
| 33 | + th.printStackTrace(new PrintWriter(var5)); | ||
| 34 | + sb.append(var5.toString()); | ||
| 35 | + } | ||
| 36 | + | ||
| 37 | + return sb.toString(); | ||
| 38 | + } | ||
| 39 | +} |
java/com/mumfrey/liteloader/util/ModUtilities.java
| 1 | package com.mumfrey.liteloader.util; | 1 | package com.mumfrey.liteloader.util; |
| 2 | 2 | ||
| 3 | import java.util.Arrays; | 3 | import java.util.Arrays; |
| 4 | +import java.util.HashSet; | ||
| 4 | import java.util.LinkedList; | 5 | import java.util.LinkedList; |
| 5 | import java.util.Map; | 6 | import java.util.Map; |
| 7 | +import java.util.Set; | ||
| 6 | 8 | ||
| 7 | import com.mumfrey.liteloader.core.LiteLoader; | 9 | import com.mumfrey.liteloader.core.LiteLoader; |
| 8 | 10 | ||
| @@ -11,48 +13,55 @@ import net.minecraft.src.*; | @@ -11,48 +13,55 @@ import net.minecraft.src.*; | ||
| 11 | 13 | ||
| 12 | public abstract class ModUtilities | 14 | public abstract class ModUtilities |
| 13 | { | 15 | { |
| 14 | - /** | ||
| 15 | - * Add a renderer map entry for the specified entity class | ||
| 16 | - * | ||
| 17 | - * @param entityClass | ||
| 18 | - * @param renderer | ||
| 19 | - */ | 16 | + private static Set<Integer> overriddenPackets = new HashSet<Integer>(); |
| 17 | + | ||
| 18 | + /** | ||
| 19 | + * Add a renderer map entry for the specified entity class | ||
| 20 | + * | ||
| 21 | + * @param entityClass | ||
| 22 | + * @param renderer | ||
| 23 | + */ | ||
| 20 | @SuppressWarnings("unchecked") | 24 | @SuppressWarnings("unchecked") |
| 21 | public static void addRenderer(Class<? extends Entity> entityClass, Render renderer) | 25 | public static void addRenderer(Class<? extends Entity> entityClass, Render renderer) |
| 22 | { | 26 | { |
| 23 | - Map<Class<? extends Entity>, Render> entityRenderMap = PrivateFields.entityRenderMap.Get(RenderManager.instance); | 27 | + Map<Class<? extends Entity>, Render> entityRenderMap = PrivateFields.entityRenderMap.get(RenderManager.instance); |
| 24 | entityRenderMap.put(entityClass, renderer); | 28 | entityRenderMap.put(entityClass, renderer); |
| 25 | renderer.setRenderManager(RenderManager.instance); | 29 | renderer.setRenderManager(RenderManager.instance); |
| 26 | } | 30 | } |
| 27 | - | ||
| 28 | - /** | ||
| 29 | - * Register a packet override | ||
| 30 | - * | ||
| 31 | - * @param packetId | ||
| 32 | - * @param newPacket | ||
| 33 | - */ | ||
| 34 | - @SuppressWarnings("unchecked") | ||
| 35 | - public static boolean registerPacketOverride(int packetId, Class<? extends Packet> newPacket) | ||
| 36 | - { | ||
| 37 | - try | ||
| 38 | - { | ||
| 39 | - IntHashMap packetIdToClassMap = Packet.packetIdToClassMap; | ||
| 40 | - PrivateFields.StaticFields.packetClassToIdMap.Get(); | ||
| 41 | - Map<Class<? extends Packet>, Integer> packetClassToIdMap = PrivateFields.StaticFields.packetClassToIdMap.Get(); | ||
| 42 | - | ||
| 43 | - packetIdToClassMap.removeObject(packetId); | ||
| 44 | - packetIdToClassMap.addKey(packetId, newPacket); | ||
| 45 | - packetClassToIdMap.put(newPacket, Integer.valueOf(packetId)); | ||
| 46 | - | ||
| 47 | - return true; | ||
| 48 | - } | ||
| 49 | - catch (Exception ex) | ||
| 50 | - { | ||
| 51 | - LiteLoader.logger.warning("Error registering packet override for packet id " + packetId + ": " + ex.getMessage()); | ||
| 52 | - return false; | ||
| 53 | - } | ||
| 54 | - } | ||
| 55 | - | 31 | + |
| 32 | + /** | ||
| 33 | + * Register a packet override | ||
| 34 | + * | ||
| 35 | + * @param packetId | ||
| 36 | + * @param newPacket | ||
| 37 | + */ | ||
| 38 | + @SuppressWarnings("unchecked") | ||
| 39 | + public static boolean registerPacketOverride(int packetId, Class<? extends Packet> newPacket) | ||
| 40 | + { | ||
| 41 | + if (overriddenPackets.contains(Integer.valueOf(packetId))) | ||
| 42 | + { | ||
| 43 | + LiteLoader.getLogger().warning(String.format("Packet with ID %s was already overridden by another mod, one or mods may not function correctly", packetId)); | ||
| 44 | + } | ||
| 45 | + | ||
| 46 | + try | ||
| 47 | + { | ||
| 48 | + IntHashMap packetIdToClassMap = Packet.packetIdToClassMap; | ||
| 49 | + PrivateFields.StaticFields.packetClassToIdMap.get(); | ||
| 50 | + Map<Class<? extends Packet>, Integer> packetClassToIdMap = PrivateFields.StaticFields.packetClassToIdMap.get(); | ||
| 51 | + | ||
| 52 | + packetIdToClassMap.removeObject(packetId); | ||
| 53 | + packetIdToClassMap.addKey(packetId, newPacket); | ||
| 54 | + packetClassToIdMap.put(newPacket, Integer.valueOf(packetId)); | ||
| 55 | + | ||
| 56 | + return true; | ||
| 57 | + } | ||
| 58 | + catch (Exception ex) | ||
| 59 | + { | ||
| 60 | + LiteLoader.logger.warning("Error registering packet override for packet id " + packetId + ": " + ex.getMessage()); | ||
| 61 | + return false; | ||
| 62 | + } | ||
| 63 | + } | ||
| 64 | + | ||
| 56 | /** | 65 | /** |
| 57 | * Send a plugin channel (custom payload) packet to the server | 66 | * Send a plugin channel (custom payload) packet to the server |
| 58 | * | 67 | * |
| @@ -99,17 +108,17 @@ public abstract class ModUtilities | @@ -99,17 +108,17 @@ public abstract class ModUtilities | ||
| 99 | 108 | ||
| 100 | if (mc == null || mc.gameSettings == null) return; | 109 | if (mc == null || mc.gameSettings == null) return; |
| 101 | 110 | ||
| 102 | - LinkedList<KeyBinding> keyBindings = new LinkedList<KeyBinding>(); | ||
| 103 | - keyBindings.addAll(Arrays.asList(mc.gameSettings.keyBindings)); | ||
| 104 | - | ||
| 105 | - if (!keyBindings.contains(newBinding)) | ||
| 106 | - { | ||
| 107 | - keyBindings.add(newBinding); | ||
| 108 | - mc.gameSettings.keyBindings = keyBindings.toArray(new KeyBinding[0]); | ||
| 109 | - mc.gameSettings.loadOptions(); | ||
| 110 | - } | 111 | + LinkedList<KeyBinding> keyBindings = new LinkedList<KeyBinding>(); |
| 112 | + keyBindings.addAll(Arrays.asList(mc.gameSettings.keyBindings)); | ||
| 113 | + | ||
| 114 | + if (!keyBindings.contains(newBinding)) | ||
| 115 | + { | ||
| 116 | + keyBindings.add(newBinding); | ||
| 117 | + mc.gameSettings.keyBindings = keyBindings.toArray(new KeyBinding[0]); | ||
| 118 | + mc.gameSettings.loadOptions(); | ||
| 119 | + } | ||
| 111 | } | 120 | } |
| 112 | - | 121 | + |
| 113 | /** | 122 | /** |
| 114 | * Unregisters a registered keybind with the game settings class, thus removing it from the "controls" screen | 123 | * Unregisters a registered keybind with the game settings class, thus removing it from the "controls" screen |
| 115 | * | 124 | * |
| @@ -120,14 +129,14 @@ public abstract class ModUtilities | @@ -120,14 +129,14 @@ public abstract class ModUtilities | ||
| 120 | Minecraft mc = Minecraft.getMinecraft(); | 129 | Minecraft mc = Minecraft.getMinecraft(); |
| 121 | 130 | ||
| 122 | if (mc == null || mc.gameSettings == null) return; | 131 | if (mc == null || mc.gameSettings == null) return; |
| 123 | - | 132 | + |
| 124 | LinkedList<KeyBinding> keyBindings = new LinkedList<KeyBinding>(); | 133 | LinkedList<KeyBinding> keyBindings = new LinkedList<KeyBinding>(); |
| 125 | - keyBindings.addAll(Arrays.asList(mc.gameSettings.keyBindings)); | ||
| 126 | - | ||
| 127 | - if (keyBindings.contains(removeBinding)) | ||
| 128 | - { | ||
| 129 | - keyBindings.remove(removeBinding); | ||
| 130 | - mc.gameSettings.keyBindings = keyBindings.toArray(new KeyBinding[0]); | ||
| 131 | - } | 134 | + keyBindings.addAll(Arrays.asList(mc.gameSettings.keyBindings)); |
| 135 | + | ||
| 136 | + if (keyBindings.contains(removeBinding)) | ||
| 137 | + { | ||
| 138 | + keyBindings.remove(removeBinding); | ||
| 139 | + mc.gameSettings.keyBindings = keyBindings.toArray(new KeyBinding[0]); | ||
| 140 | + } | ||
| 132 | } | 141 | } |
| 133 | } | 142 | } |
java/com/mumfrey/liteloader/util/PrivateFields.java
| @@ -15,12 +15,13 @@ import net.minecraft.src.*; | @@ -15,12 +15,13 @@ import net.minecraft.src.*; | ||
| 15 | * @param <P> Parent class type, the type of the class that owns the field | 15 | * @param <P> Parent class type, the type of the class that owns the field |
| 16 | * @param <T> Field type, the type of the field value | 16 | * @param <T> Field type, the type of the field value |
| 17 | */ | 17 | */ |
| 18 | +@SuppressWarnings("rawtypes") | ||
| 18 | public class PrivateFields<P, T> | 19 | public class PrivateFields<P, T> |
| 19 | { | 20 | { |
| 20 | /** | 21 | /** |
| 21 | * Class to which this field belongs | 22 | * Class to which this field belongs |
| 22 | */ | 23 | */ |
| 23 | - public final Class parentClass; | 24 | + public final Class<P> parentClass; |
| 24 | 25 | ||
| 25 | /** | 26 | /** |
| 26 | * MCP name for this field | 27 | * MCP name for this field |
| @@ -44,7 +45,7 @@ public class PrivateFields<P, T> | @@ -44,7 +45,7 @@ public class PrivateFields<P, T> | ||
| 44 | * @param mcpName | 45 | * @param mcpName |
| 45 | * @param name | 46 | * @param name |
| 46 | */ | 47 | */ |
| 47 | - private PrivateFields(Class owner, String mcpName, String name) | 48 | + private PrivateFields(Class<P> owner, String mcpName, String name) |
| 48 | { | 49 | { |
| 49 | this.parentClass = owner; | 50 | this.parentClass = owner; |
| 50 | this.mcpName = mcpName; | 51 | this.mcpName = mcpName; |
| @@ -60,7 +61,7 @@ public class PrivateFields<P, T> | @@ -60,7 +61,7 @@ public class PrivateFields<P, T> | ||
| 60 | * @return field value or null if errors occur | 61 | * @return field value or null if errors occur |
| 61 | */ | 62 | */ |
| 62 | @SuppressWarnings("unchecked") | 63 | @SuppressWarnings("unchecked") |
| 63 | - public T Get(P instance) | 64 | + public T get(P instance) |
| 64 | { | 65 | { |
| 65 | try | 66 | try |
| 66 | { | 67 | { |
| @@ -81,7 +82,7 @@ public class PrivateFields<P, T> | @@ -81,7 +82,7 @@ public class PrivateFields<P, T> | ||
| 81 | * @param value value to set | 82 | * @param value value to set |
| 82 | * @return value | 83 | * @return value |
| 83 | */ | 84 | */ |
| 84 | - public T Set(P instance, T value) | 85 | + public T set(P instance, T value) |
| 85 | { | 86 | { |
| 86 | try | 87 | try |
| 87 | { | 88 | { |
| @@ -101,7 +102,7 @@ public class PrivateFields<P, T> | @@ -101,7 +102,7 @@ public class PrivateFields<P, T> | ||
| 101 | * @param value value to set | 102 | * @param value value to set |
| 102 | * @return value | 103 | * @return value |
| 103 | */ | 104 | */ |
| 104 | - public T SetFinal(P instance, T value) | 105 | + public T setFinal(P instance, T value) |
| 105 | { | 106 | { |
| 106 | try | 107 | try |
| 107 | { | 108 | { |
| @@ -126,16 +127,16 @@ public class PrivateFields<P, T> | @@ -126,16 +127,16 @@ public class PrivateFields<P, T> | ||
| 126 | */ | 127 | */ |
| 127 | public static final class StaticFields<P, T> extends PrivateFields<P, T> | 128 | public static final class StaticFields<P, T> extends PrivateFields<P, T> |
| 128 | { | 129 | { |
| 129 | - public StaticFields(Class owner, String mcpName, String name) { super(owner, mcpName, name); } | ||
| 130 | - public T Get() { return Get(null); } | ||
| 131 | - public void Set(T value) { Set(null, value); } | 130 | + public StaticFields(Class<P> owner, String mcpName, String name) { super(owner, mcpName, name); } |
| 131 | + public T get() { return get(null); } | ||
| 132 | + public void set(T value) { set(null, value); } | ||
| 132 | 133 | ||
| 133 | public static final StaticFields<Packet, Map> packetClassToIdMap = new StaticFields<Packet, Map> (Packet.class, "packetClassToIdMap", "a"); // Packet/packetClassToIdMap | 134 | public static final StaticFields<Packet, Map> packetClassToIdMap = new StaticFields<Packet, Map> (Packet.class, "packetClassToIdMap", "a"); // Packet/packetClassToIdMap |
| 134 | public static final StaticFields<TileEntity, Map> tileEntityNameToClassMap = new StaticFields<TileEntity, Map> (TileEntity.class, "nameToClassMap", "a"); // TileEntity/nameToClassMap | 135 | public static final StaticFields<TileEntity, Map> tileEntityNameToClassMap = new StaticFields<TileEntity, Map> (TileEntity.class, "nameToClassMap", "a"); // TileEntity/nameToClassMap |
| 135 | } | 136 | } |
| 136 | 137 | ||
| 137 | - public static final PrivateFields<Minecraft, Timer> minecraftTimer = new PrivateFields<Minecraft, Timer> (Minecraft.class, "timer", "T"); // Minecraft/timer | ||
| 138 | - public static final PrivateFields<Minecraft, Profiler> minecraftProfiler = new PrivateFields<Minecraft, Profiler> (Minecraft.class, "mcProfiler", "I"); // Minecraft/mcProfiler | ||
| 139 | - public static final PrivateFields<RenderManager, Map> entityRenderMap = new PrivateFields<RenderManager, Map> (RenderManager.class, "entityRenderMap", "p"); // RenderManager/entityRenderMap | 138 | + public static final PrivateFields<Minecraft, Timer> minecraftTimer = new PrivateFields<Minecraft, Timer> (Minecraft.class, "timer", "V"); // Minecraft/timer |
| 139 | + public static final PrivateFields<Minecraft, Profiler> minecraftProfiler = new PrivateFields<Minecraft, Profiler> (Minecraft.class, "mcProfiler", "J"); // Minecraft/mcProfiler | ||
| 140 | + public static final PrivateFields<RenderManager, Map> entityRenderMap = new PrivateFields<RenderManager, Map> (RenderManager.class, "entityRenderMap", "q"); // RenderManager/entityRenderMap | ||
| 140 | } | 141 | } |
| 141 | 142 |
java/net/minecraft/src/CallableJVMFlags.java
| @@ -9,14 +9,14 @@ import java.util.concurrent.Callable; | @@ -9,14 +9,14 @@ import java.util.concurrent.Callable; | ||
| 9 | import com.mumfrey.liteloader.core.CallableLiteLoaderBrand; | 9 | import com.mumfrey.liteloader.core.CallableLiteLoaderBrand; |
| 10 | import com.mumfrey.liteloader.core.CallableLiteLoaderMods; | 10 | import com.mumfrey.liteloader.core.CallableLiteLoaderMods; |
| 11 | 11 | ||
| 12 | -class CallableJVMFlags implements Callable | 12 | +class CallableJVMFlags implements Callable<String> |
| 13 | { | 13 | { |
| 14 | - /** Gets additional Java Enviroment info for Crash Report. */ | ||
| 15 | - final CrashReport crashReportJVMFlags; | 14 | + /** Reference to the CrashReport object. */ |
| 15 | + final CrashReport theCrashReport; | ||
| 16 | 16 | ||
| 17 | CallableJVMFlags(CrashReport par1CrashReport) | 17 | CallableJVMFlags(CrashReport par1CrashReport) |
| 18 | { | 18 | { |
| 19 | - this.crashReportJVMFlags = par1CrashReport; | 19 | + this.theCrashReport = par1CrashReport; |
| 20 | par1CrashReport.func_85056_g().addCrashSectionCallable("Mod Pack", new CallableLiteLoaderBrand(par1CrashReport)); | 20 | par1CrashReport.func_85056_g().addCrashSectionCallable("Mod Pack", new CallableLiteLoaderBrand(par1CrashReport)); |
| 21 | par1CrashReport.func_85056_g().addCrashSectionCallable("LiteLoader Mods", new CallableLiteLoaderMods(par1CrashReport)); | 21 | par1CrashReport.func_85056_g().addCrashSectionCallable("LiteLoader Mods", new CallableLiteLoaderMods(par1CrashReport)); |
| 22 | } | 22 | } |
| @@ -27,14 +27,14 @@ class CallableJVMFlags implements Callable | @@ -27,14 +27,14 @@ class CallableJVMFlags implements Callable | ||
| 27 | public String getJVMFlagsAsString() | 27 | public String getJVMFlagsAsString() |
| 28 | { | 28 | { |
| 29 | RuntimeMXBean var1 = ManagementFactory.getRuntimeMXBean(); | 29 | RuntimeMXBean var1 = ManagementFactory.getRuntimeMXBean(); |
| 30 | - List var2 = var1.getInputArguments(); | 30 | + List<String> var2 = var1.getInputArguments(); |
| 31 | int var3 = 0; | 31 | int var3 = 0; |
| 32 | StringBuilder var4 = new StringBuilder(); | 32 | StringBuilder var4 = new StringBuilder(); |
| 33 | - Iterator var5 = var2.iterator(); | 33 | + Iterator<String> var5 = var2.iterator(); |
| 34 | 34 | ||
| 35 | while (var5.hasNext()) | 35 | while (var5.hasNext()) |
| 36 | { | 36 | { |
| 37 | - String var6 = (String)var5.next(); | 37 | + String var6 = var5.next(); |
| 38 | 38 | ||
| 39 | if (var6.startsWith("-X")) | 39 | if (var6.startsWith("-X")) |
| 40 | { | 40 | { |
| @@ -51,7 +51,7 @@ class CallableJVMFlags implements Callable | @@ -51,7 +51,7 @@ class CallableJVMFlags implements Callable | ||
| 51 | } | 51 | } |
| 52 | 52 | ||
| 53 | @Override | 53 | @Override |
| 54 | - public Object call() | 54 | + public String call() |
| 55 | { | 55 | { |
| 56 | return this.getJVMFlagsAsString(); | 56 | return this.getJVMFlagsAsString(); |
| 57 | } | 57 | } |
java/net/minecraft/src/RenderLightningBolt.java
| 1 | package net.minecraft.src; | 1 | package net.minecraft.src; |
| 2 | 2 | ||
| 3 | import java.util.Random; | 3 | import java.util.Random; |
| 4 | - | ||
| 5 | import org.lwjgl.opengl.GL11; | 4 | import org.lwjgl.opengl.GL11; |
| 6 | 5 | ||
| 7 | import com.mumfrey.liteloader.core.LiteLoader; | 6 | import com.mumfrey.liteloader.core.LiteLoader; |
| @@ -13,11 +12,12 @@ public class RenderLightningBolt extends Render | @@ -13,11 +12,12 @@ public class RenderLightningBolt extends Render | ||
| 13 | // LiteLoader init | 12 | // LiteLoader init |
| 14 | LiteLoader.getInstance(); | 13 | LiteLoader.getInstance(); |
| 15 | } | 14 | } |
| 16 | - | ||
| 17 | - /** | 15 | + |
| 16 | + /** | ||
| 18 | * Actually renders the lightning bolt. This method is called through the doRender method. | 17 | * Actually renders the lightning bolt. This method is called through the doRender method. |
| 19 | */ | 18 | */ |
| 20 | - public void doRenderLightningBolt(EntityLightningBolt par1EntityLightningBolt, double par2, double par4, double par6, float par8, float par9) | 19 | + @SuppressWarnings("cast") |
| 20 | + public void doRenderLightningBolt(EntityLightningBolt par1EntityLightningBolt, double par2, double par4, double par6, float par8, float par9) | ||
| 21 | { | 21 | { |
| 22 | Tessellator var10 = Tessellator.instance; | 22 | Tessellator var10 = Tessellator.instance; |
| 23 | GL11.glDisable(GL11.GL_TEXTURE_2D); | 23 | GL11.glDisable(GL11.GL_TEXTURE_2D); |