package com.jaquadro.minecraft.gardencore; import com.jaquadro.minecraft.gardencore.api.GardenCoreAPI; import com.jaquadro.minecraft.gardencore.core.*; import com.jaquadro.minecraft.gardencore.core.handlers.ForgeEventHandler; import com.jaquadro.minecraft.gardencore.core.handlers.GuiHandler; import com.jaquadro.minecraft.gardencore.core.handlers.VanillaBonemealHandler; import com.jaquadro.minecraft.gardencore.config.ConfigManager; import cpw.mods.fml.common.*; import cpw.mods.fml.common.event.FMLInitializationEvent; import cpw.mods.fml.common.event.FMLPostInitializationEvent; import cpw.mods.fml.common.event.FMLPreInitializationEvent; import cpw.mods.fml.common.network.NetworkRegistry; import net.minecraftforge.common.MinecraftForge; import java.io.File; @Mod(modid = GardenCore.MOD_ID, name = GardenCore.MOD_NAME, version = GardenCore.MOD_VERSION) public class GardenCore { public static final String MOD_ID = "GardenCore"; public static final String MOD_NAME = "Garden Core"; public static final String MOD_VERSION = "@VERSION@"; static final String SOURCE_PATH = "com.jaquadro.minecraft.gardencore."; public static final ModIntegration integration = new ModIntegration(); public static final ModBlocks blocks = new ModBlocks(); public static final ModItems items = new ModItems(); public static final ModRecipes recipes = new ModRecipes(); public static ConfigManager config; @Mod.Instance(MOD_ID) public static GardenCore instance; @SidedProxy(clientSide = SOURCE_PATH + "core.ClientProxy", serverSide = SOURCE_PATH + "core.ServerProxy") public static CommonProxy proxy; @Mod.EventHandler public void preInit (FMLPreInitializationEvent event) { config = new ConfigManager(new File(event.getModConfigurationDirectory(), "GardenStuff/" + MOD_ID + ".cfg")); blocks.init(); items.init(); } @Mod.EventHandler public void init (FMLInitializationEvent event) { proxy.registerRenderers(); NetworkRegistry.INSTANCE.registerGuiHandler(this, new GuiHandler()); MinecraftForge.EVENT_BUS.register(new ForgeEventHandler()); integration.init(); GardenCoreAPI.instance().registerBonemealHandler(new VanillaBonemealHandler()); } @Mod.EventHandler public void postInit (FMLPostInitializationEvent event) { proxy.postInit(); integration.postInit(); recipes.init(); /*try { List<ModContainer> loadedMods = Loader.instance().getActiveModList(); for (ModContainer mod : loadedMods) { String baseAssetPath = "assets/" + mod.getModId() + "/textures/blocks/"; Pattern assetPattern = Pattern.compile("assets/.+/textures/blocks/.+\\.png"); JarFile modJar; try { modJar = new JarFile(mod.getSource()); } catch (IOException e) { continue; } Enumeration<JarEntry> modJarEntries = modJar.entries(); while (modJarEntries.hasMoreElements()) { JarEntry element = modJarEntries.nextElement(); if (element.isDirectory() || !assetPattern.matcher(element.getName()).matches()) continue; BufferedImage image = ImageIO.read(modJar.getInputStream(element)); if (image.getWidth() != image.getHeight()) continue; int xStart = 0; int xStop = image.getWidth(); int yStart = 0; int yStop = image.getHeight(); SearchYStart: for (; yStart < yStop; yStart++, yStart++) { for (int x = xStart; x < xStop; x++) { if (((image.getRGB(x, yStart) >> 24) & 0xFF) != 0) break SearchYStart; } } SearchYStop: for (; yStop > yStart; yStop--) { for (int x = xStart; x < xStop; x++) { if (((image.getRGB(x, yStop - 1) >> 24) & 0xFF) != 0) break SearchYStop; } } SearchXStart: for (; xStart < xStop; xStart++) { for (int y = yStart; y < yStop; y++) { if (((image.getRGB(xStart, y) >> 24) & 0xFF) != 0) break SearchXStart; } } SearchXStop: for (; xStop > xStart; xStop--) { for (int y = yStart; y < yStop; y++) { if (((image.getRGB(xStop - 1, y) >> 24) & 0xFF) != 0) break SearchXStop; } } FMLLog.info("%s area: %d,%d; %dx%d", element.getName(), xStart, yStart, xStop - xStart, yStop - yStart); } } } catch (IOException e) { FMLLog.severe("Error processing jars: %s", e.getMessage()); }*/ } }