/** Initialise mod hooks */ private void initHooks() { try { // Chat hook if ((chatListeners.size() > 0 || chatFilters.size() > 0) && !chatHooked) { chatHooked = true; HookChat.Register(); HookChat.RegisterPacketHandler(this); } // Login hook if ((preLoginListeners.size() > 0 || loginListeners.size() > 0) && !loginHooked) { loginHooked = true; ModUtilities.registerPacketOverride(1, HookLogin.class); HookLogin.loader = this; } // Plugin channels hook if (pluginChannelListeners.size() > 0 && !pluginChannelHooked) { pluginChannelHooked = true; HookPluginChannels.Register(); HookPluginChannels.RegisterPacketHandler(this); } // Tick hook if (!tickHooked) { tickHooked = true; PrivateFields.minecraftProfiler.SetFinal(minecraft, new HookProfiler(this, logger)); } } catch (Exception ex) { logger.log(Level.WARNING, "Error creating hooks", ex); ex.printStackTrace(); } }
/** Set up reflection methods required by the loader */ @SuppressWarnings("unchecked") private boolean prepareLoader() { try { // addURL method is used by the class loader to mAddUrl = URLClassLoader.class.getDeclaredMethod("addURL", URL.class); mAddUrl.setAccessible(true); Formatter minecraftLogFormatter = null; try { Class<? extends Formatter> formatterClass = (Class<? extends Formatter>) Minecraft.class .getClassLoader() .loadClass( ModUtilities.getObfuscatedFieldName( "net.minecraft.src.ConsoleLogFormatter", "em")); Constructor<? extends Formatter> defaultConstructor = formatterClass.getDeclaredConstructor(); defaultConstructor.setAccessible(true); minecraftLogFormatter = defaultConstructor.newInstance(); } catch (Exception ex) { ConsoleLogManager.init(); minecraftLogFormatter = ConsoleLogManager.loggerLogManager.getHandlers()[0].getFormatter(); } logger.setUseParentHandlers(false); StreamHandler consoleHandler = new ConsoleHandler(); if (minecraftLogFormatter != null) consoleHandler.setFormatter(minecraftLogFormatter); logger.addHandler(consoleHandler); FileHandler logFileHandler = new FileHandler( new File(Minecraft.getMinecraftDir(), "LiteLoader.txt").getAbsolutePath()); if (minecraftLogFormatter != null) logFileHandler.setFormatter(minecraftLogFormatter); logger.addHandler(logFileHandler); } catch (Throwable th) { logger.log(Level.SEVERE, "Error initialising LiteLoader", th); return false; } return true; }
/** * Delegate to ModUtilities.sendPluginChannelMessage * * @param channel Channel to send data to * @param data Data to send */ public void sendPluginChannelMessage(String channel, byte[] data) { ModUtilities.sendPluginChannelMessage(channel, data); }
/** Do dirty non-base-clean overrides */ private void prepareClassOverrides() { registerBaseClassOverride( ModUtilities.getObfuscatedFieldName("net.minecraft.src.CallableJVMFlags", "g"), "g"); }