package openblocks; import com.google.common.base.Objects; import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.common.Mod; import cpw.mods.fml.common.Mod.EventHandler; import cpw.mods.fml.common.Mod.Instance; import cpw.mods.fml.common.SidedProxy; import cpw.mods.fml.common.event.FMLConstructionEvent; import cpw.mods.fml.common.event.FMLInitializationEvent; import cpw.mods.fml.common.event.FMLInterModComms; import cpw.mods.fml.common.event.FMLMissingMappingsEvent; import cpw.mods.fml.common.event.FMLPostInitializationEvent; import cpw.mods.fml.common.event.FMLPreInitializationEvent; import cpw.mods.fml.common.event.FMLServerStartingEvent; import cpw.mods.fml.common.network.NetworkRegistry; import cpw.mods.fml.common.registry.EntityRegistry; import cpw.mods.fml.common.registry.VillagerRegistry; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import java.util.List; import net.minecraft.block.Block; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.enchantment.Enchantment; import net.minecraft.entity.EntityList; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.stats.Achievement; import net.minecraft.stats.StatBase; import net.minecraft.stats.StatBasic; import net.minecraft.util.ChatComponentTranslation; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.config.Configuration; import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidRegistry; import net.minecraftforge.oredict.OreDictionary; import openblocks.common.CommandInventory; import openblocks.common.DonationUrlManager; import openblocks.common.ElevatorActionHandler; import openblocks.common.ElevatorBlockRules; import openblocks.common.EntityEventHandler; import openblocks.common.GameRuleManager; import openblocks.common.GuiOpenHandler; import openblocks.common.LuggageDropHandler; import openblocks.common.MagnetWhitelists; import openblocks.common.MapDataManager; import openblocks.common.PlayerDeathHandler; import openblocks.common.PlayerInventoryStore; import openblocks.common.RadioVillagerTradeManager; import openblocks.common.ServerTickHandler; import openblocks.common.block.BlockAutoAnvil; import openblocks.common.block.BlockAutoEnchantmentTable; import openblocks.common.block.BlockBearTrap; import openblocks.common.block.BlockBigButton; import openblocks.common.block.BlockBlockBreaker; import openblocks.common.block.BlockBlockPlacer; import openblocks.common.block.BlockBuilderGuide; import openblocks.common.block.BlockCannon; import openblocks.common.block.BlockCanvas; import openblocks.common.block.BlockCanvasGlass; import openblocks.common.block.BlockDonationStation; import openblocks.common.block.BlockDrawingTable; import openblocks.common.block.BlockElevator; import openblocks.common.block.BlockElevatorRotating; import openblocks.common.block.BlockFan; import openblocks.common.block.BlockFlag; import openblocks.common.block.BlockGoldenEgg; import openblocks.common.block.BlockGrave; import openblocks.common.block.BlockGuide; import openblocks.common.block.BlockHeal; import openblocks.common.block.BlockImaginary; import openblocks.common.block.BlockItemDropper; import openblocks.common.block.BlockLadder; import openblocks.common.block.BlockPaintCan; import openblocks.common.block.BlockPaintMixer; import openblocks.common.block.BlockPath; import openblocks.common.block.BlockProjector; import openblocks.common.block.BlockRopeLadder; import openblocks.common.block.BlockScaffolding; import openblocks.common.block.BlockSky; import openblocks.common.block.BlockSponge; import openblocks.common.block.BlockSprinkler; import openblocks.common.block.BlockTank; import openblocks.common.block.BlockTarget; import openblocks.common.block.BlockTrophy; import openblocks.common.block.BlockVacuumHopper; import openblocks.common.block.BlockVillageHighlighter; import openblocks.common.block.BlockXPBottler; import openblocks.common.block.BlockXPDrain; import openblocks.common.block.BlockXPShower; import openblocks.common.entity.EntityCartographer; import openblocks.common.entity.EntityGoldenEye; import openblocks.common.entity.EntityHangGlider; import openblocks.common.entity.EntityItemProjectile; import openblocks.common.entity.EntityLuggage; import openblocks.common.entity.EntityMagnet; import openblocks.common.entity.EntityMiniMe; import openblocks.common.entity.EntityMountedBlock; import openblocks.common.entity.EntityXPOrbNoFly; import openblocks.common.item.ItemCartographer; import openblocks.common.item.ItemCraneBackpack; import openblocks.common.item.ItemCraneControl; import openblocks.common.item.ItemCursor; import openblocks.common.item.ItemDevNull; import openblocks.common.item.ItemElevator; import openblocks.common.item.ItemEmptyMap; import openblocks.common.item.ItemEpicEraser; import openblocks.common.item.ItemFilledBucket; import openblocks.common.item.ItemFlagBlock; import openblocks.common.item.ItemGoldenEye; import openblocks.common.item.ItemGuide; import openblocks.common.item.ItemHangGlider; import openblocks.common.item.ItemHeightMap; import openblocks.common.item.ItemImaginary; import openblocks.common.item.ItemImaginationGlasses; import openblocks.common.item.ItemImaginationGlasses.ItemCrayonGlasses; import openblocks.common.item.ItemInfoBook; import openblocks.common.item.ItemLuggage; import openblocks.common.item.ItemOBGeneric; import openblocks.common.item.ItemOBGenericUnstackable; import openblocks.common.item.ItemPaintBrush; import openblocks.common.item.ItemPaintCan; import openblocks.common.item.ItemPedometer; import openblocks.common.item.ItemSkyBlock; import openblocks.common.item.ItemSleepingBag; import openblocks.common.item.ItemSlimalyzer; import openblocks.common.item.ItemSonicGlasses; import openblocks.common.item.ItemSpongeOnAStick; import openblocks.common.item.ItemSqueegee; import openblocks.common.item.ItemStencil; import openblocks.common.item.ItemTankBlock; import openblocks.common.item.ItemTastyClay; import openblocks.common.item.ItemTrophyBlock; import openblocks.common.item.ItemWrench; import openblocks.common.tileentity.TileEntityAutoAnvil; import openblocks.common.tileentity.TileEntityAutoEnchantmentTable; import openblocks.common.tileentity.TileEntityBearTrap; import openblocks.common.tileentity.TileEntityBigButton; import openblocks.common.tileentity.TileEntityBlockBreaker; import openblocks.common.tileentity.TileEntityBlockPlacer; import openblocks.common.tileentity.TileEntityBuilderGuide; import openblocks.common.tileentity.TileEntityCannon; import openblocks.common.tileentity.TileEntityCanvas; import openblocks.common.tileentity.TileEntityDonationStation; import openblocks.common.tileentity.TileEntityDrawingTable; import openblocks.common.tileentity.TileEntityElevatorRotating; import openblocks.common.tileentity.TileEntityFan; import openblocks.common.tileentity.TileEntityFlag; import openblocks.common.tileentity.TileEntityGoldenEgg; import openblocks.common.tileentity.TileEntityGrave; import openblocks.common.tileentity.TileEntityGuide; import openblocks.common.tileentity.TileEntityHealBlock; import openblocks.common.tileentity.TileEntityImaginary; import openblocks.common.tileentity.TileEntityItemDropper; import openblocks.common.tileentity.TileEntityPaintCan; import openblocks.common.tileentity.TileEntityPaintMixer; import openblocks.common.tileentity.TileEntityProjector; import openblocks.common.tileentity.TileEntitySky; import openblocks.common.tileentity.TileEntitySprinkler; import openblocks.common.tileentity.TileEntityTank; import openblocks.common.tileentity.TileEntityTarget; import openblocks.common.tileentity.TileEntityTrophy; import openblocks.common.tileentity.TileEntityVacuumHopper; import openblocks.common.tileentity.TileEntityVillageHighlighter; import openblocks.common.tileentity.TileEntityXPBottler; import openblocks.common.tileentity.TileEntityXPDrain; import openblocks.common.tileentity.TileEntityXPShower; import openblocks.enchantments.flimflams.BaneFlimFlam; import openblocks.enchantments.flimflams.DummyCreepersFlimFlam; import openblocks.enchantments.flimflams.EffectFlimFlam; import openblocks.enchantments.flimflams.EncaseFlimFlam; import openblocks.enchantments.flimflams.FlimFlamRegistry; import openblocks.enchantments.flimflams.InventoryShuffleFlimFlam; import openblocks.enchantments.flimflams.InvisibleMobsFlimFlam; import openblocks.enchantments.flimflams.ItemDropFlimFlam; import openblocks.enchantments.flimflams.LoreFlimFlam; import openblocks.enchantments.flimflams.MountFlimFlam; import openblocks.enchantments.flimflams.RenameFlimFlam; import openblocks.enchantments.flimflams.SheepDyeFlimFlam; import openblocks.enchantments.flimflams.SkyblockFlimFlam; import openblocks.enchantments.flimflams.SnowballsFlimFlam; import openblocks.enchantments.flimflams.SoundFlimFlam; import openblocks.enchantments.flimflams.SquidFilmFlam; import openblocks.enchantments.flimflams.TeleportFlimFlam; import openblocks.enchantments.flimflams.UselessToolFlimFlam; import openblocks.events.ElevatorActionEvent; import openblocks.events.PlayerActionEvent; import openblocks.integration.ModuleAdapters; import openblocks.integration.ModuleTurtles; import openblocks.rpc.IColorChanger; import openblocks.rpc.IGuideAnimationTrigger; import openblocks.rpc.ILevelChanger; import openblocks.rpc.IRotatable; import openblocks.rpc.IStencilCrafter; import openblocks.rpc.ITriggerable; import openblocks.rubbish.BrickManager; import openblocks.rubbish.CommandFlimFlam; import openblocks.rubbish.CommandLuck; import openmods.Mods; import openmods.OpenMods; import openmods.config.BlockInstances; import openmods.config.ItemInstances; import openmods.config.game.FactoryRegistry; import openmods.config.game.ModStartupHelper; import openmods.config.game.RegisterBlock; import openmods.config.game.RegisterItem; import openmods.config.properties.ConfigProcessing; import openmods.integration.Integration; import openmods.liquids.BucketFillHandler; import openmods.network.event.NetworkEventManager; import openmods.network.rpc.RpcCallDispatcher; import openmods.utils.EnchantmentUtils; @Mod(modid = OpenBlocks.MODID, name = OpenBlocks.NAME, version = OpenBlocks.VERSION, dependencies = OpenBlocks.DEPENDENCIES, guiFactory = "openblocks.client.ModGuiFactory") public class OpenBlocks { public static final String MODID = "OpenBlocks"; public static final String NAME = "OpenBlocks"; public static final String VERSION = "$VERSION$"; public static final String PROXY_SERVER = "openblocks.common.ServerProxy"; public static final String PROXY_CLIENT = "openblocks.client.ClientProxy"; public static final String DEPENDENCIES = "required-after:OpenMods@[$LIB-VERSION$,$NEXT-LIB-VERSION$)"; private static final int ENTITY_HANGGLIDER_ID = 701; private static final int ENTITY_LUGGAGE_ID = 702; private static final int ENTITY_MAGNET_ID = 703; private static final int ENTITY_BLOCK_ID = 704; private static final int ENTITY_CARTOGRAPHER_ID = 705; private static final int ENTITY_CANON_ITEM_ID = 706; private static final int ENTITY_GOLDEN_EYE_ID = 707; private static final int ENTITY_MAGNET_PLAYER_ID = 708; private static final int ENTITY_XP_ID = 709; private static final int ENTITY_MINIME_ID = 710; @Instance(MODID) public static OpenBlocks instance; @SidedProxy(clientSide = OpenBlocks.PROXY_CLIENT, serverSide = OpenBlocks.PROXY_SERVER) public static IOpenBlocksProxy proxy; private final ApiSetup apiSetup = new ApiSetup(); public static class Blocks implements BlockInstances { @RegisterBlock(name = "ladder") public static BlockLadder ladder; @RegisterBlock(name = "guide", tileEntity = TileEntityGuide.class, itemBlock = ItemGuide.class) public static BlockGuide guide; @RegisterBlock(name = "builder_guide", tileEntity = TileEntityBuilderGuide.class, itemBlock = ItemGuide.class, textureName = "guide") public static BlockBuilderGuide builderGuide; @RegisterBlock(name = "elevator", itemBlock = ItemElevator.class) public static BlockElevator elevator; @RegisterBlock(name = "elevator_rotating", tileEntity = TileEntityElevatorRotating.class, itemBlock = ItemElevator.class, textureName = "elevator") public static BlockElevatorRotating elevatorRotating; @RegisterBlock(name = "heal", tileEntity = TileEntityHealBlock.class) public static BlockHeal heal; @RegisterBlock(name = "target", tileEntity = TileEntityTarget.class) public static BlockTarget target; @RegisterBlock(name = "grave", tileEntity = TileEntityGrave.class) public static BlockGrave grave; @RegisterBlock(name = "flag", tileEntity = TileEntityFlag.class, itemBlock = ItemFlagBlock.class, textureName = RegisterBlock.NONE) public static BlockFlag flag; @RegisterBlock(name = "tank", tileEntity = TileEntityTank.class, itemBlock = ItemTankBlock.class) public static BlockTank tank; @RegisterBlock(name = "trophy", tileEntity = TileEntityTrophy.class, itemBlock = ItemTrophyBlock.class) public static BlockTrophy trophy; @RegisterBlock(name = "beartrap", tileEntity = TileEntityBearTrap.class) public static BlockBearTrap bearTrap; @RegisterBlock(name = "sprinkler", tileEntity = TileEntitySprinkler.class) public static BlockSprinkler sprinkler; @RegisterBlock(name = "cannon", tileEntity = TileEntityCannon.class) public static BlockCannon cannon; @RegisterBlock(name = "vacuumhopper", tileEntity = TileEntityVacuumHopper.class) public static BlockVacuumHopper vacuumHopper; @RegisterBlock(name = "sponge") public static BlockSponge sponge; @RegisterBlock(name = "bigbutton", tileEntity = TileEntityBigButton.class) public static BlockBigButton bigButton; @RegisterBlock(name = "imaginary", tileEntity = TileEntityImaginary.class, itemBlock = ItemImaginary.class, textureName = "pencilBlock") public static BlockImaginary imaginary; @RegisterBlock(name = "fan", tileEntity = TileEntityFan.class) public static BlockFan fan; @RegisterBlock(name = "xpbottler", tileEntity = TileEntityXPBottler.class, textureName = "xpbottler_front") public static BlockXPBottler xpBottler; @RegisterBlock(name = "village_highlighter", tileEntity = TileEntityVillageHighlighter.class) public static BlockVillageHighlighter villageHighlighter; @RegisterBlock(name = "path") public static BlockPath path; @RegisterBlock(name = "autoanvil", tileEntity = TileEntityAutoAnvil.class) public static BlockAutoAnvil autoAnvil; @RegisterBlock(name = "autoenchantmenttable", tileEntity = TileEntityAutoEnchantmentTable.class) public static BlockAutoEnchantmentTable autoEnchantmentTable; @RegisterBlock(name = "xpdrain", tileEntity = TileEntityXPDrain.class) public static BlockXPDrain xpDrain; @RegisterBlock(name = "blockbreaker", tileEntity = TileEntityBlockBreaker.class, textureName = "blockBreaker_side") public static BlockBlockBreaker blockBreaker; @RegisterBlock(name = "blockPlacer", tileEntity = TileEntityBlockPlacer.class) public static BlockBlockPlacer blockPlacer; @RegisterBlock(name = "itemDropper", tileEntity = TileEntityItemDropper.class) public static BlockItemDropper itemDropper; @RegisterBlock(name = "ropeladder") public static BlockRopeLadder ropeLadder; @RegisterBlock(name = "donationStation", tileEntity = TileEntityDonationStation.class, textureName = "donationstation") public static BlockDonationStation donationStation; @RegisterBlock(name = "paintmixer", tileEntity = TileEntityPaintMixer.class) public static BlockPaintMixer paintMixer; @RegisterBlock(name = "canvas", tileEntity = TileEntityCanvas.class) public static BlockCanvas canvas; @RegisterBlock(name = "paintcan", tileEntity = TileEntityPaintCan.class, itemBlock = ItemPaintCan.class, textureName = "paintcan_side") public static BlockPaintCan paintCan; @RegisterBlock(name = "canvasglass", tileEntity = TileEntityCanvas.class) public static BlockCanvasGlass canvasGlass; @RegisterBlock(name = "projector", tileEntity = TileEntityProjector.class, textureName = RegisterBlock.NONE) public static BlockProjector projector; @RegisterBlock(name = "drawingtable", tileEntity = TileEntityDrawingTable.class) public static BlockDrawingTable drawingTable; @RegisterBlock(name = "sky", tileEntity = TileEntitySky.class, itemBlock = ItemSkyBlock.class, textureName = "sky_inactive", unlocalizedName = "sky.normal") public static BlockSky sky; @RegisterBlock(name = "xpshower", tileEntity = TileEntityXPShower.class) public static BlockXPShower xpShower; @RegisterBlock(name = "goldenegg", tileEntity = TileEntityGoldenEgg.class, textureName = "egg") public static BlockGoldenEgg goldenEgg; @RegisterBlock(name = "scaffolding") public static BlockScaffolding scaffolding; } public static class Items implements ItemInstances { @RegisterItem(name = "hangglider") public static ItemHangGlider hangGlider; @RegisterItem(name = "generic", isConfigurable = false, textureName = RegisterItem.NONE) public static ItemOBGeneric generic; @RegisterItem(name = "luggage") public static ItemLuggage luggage; @RegisterItem(name = "sonicglasses") public static ItemSonicGlasses sonicGlasses; @RegisterItem(name = "pencilGlasses", unlocalizedName = "glasses.pencil", textureName = RegisterItem.NONE) public static ItemImaginationGlasses pencilGlasses; @RegisterItem(name = "crayonGlasses", unlocalizedName = "glasses.crayon", textureName = RegisterItem.NONE) public static ItemCrayonGlasses crayonGlasses; @RegisterItem(name = "technicolorGlasses", unlocalizedName = "glasses.technicolor", textureName = RegisterItem.NONE) public static ItemImaginationGlasses technicolorGlasses; @RegisterItem(name = "seriousGlasses", unlocalizedName = "glasses.admin", textureName = RegisterItem.NONE) public static ItemImaginationGlasses seriousGlasses; @RegisterItem(name = "craneControl", unlocalizedName = "crane_control", textureName = "manipulator_idle") public static ItemCraneControl craneControl; @RegisterItem(name = "craneBackpack", unlocalizedName = "crane_backpack", textureName = "crane_backpack") public static ItemCraneBackpack craneBackpack; @RegisterItem(name = "slimalyzer", textureName = "slimeoff") public static ItemSlimalyzer slimalyzer; @RegisterItem(name = "filledbucket", textureName = RegisterItem.NONE) public static ItemFilledBucket filledBucket; @RegisterItem(name = "sleepingBag", unlocalizedName = "sleepingbag", textureName = "sleepingbag") public static ItemSleepingBag sleepingBag; @RegisterItem(name = "paintBrush", unlocalizedName = "paintbrush", textureName = "paintbrush") public static ItemPaintBrush paintBrush; @RegisterItem(name = "stencil", textureName = "stencilcover_full") public static ItemStencil stencil; @RegisterItem(name = "squeegee") public static ItemSqueegee squeegee; @RegisterItem(name = "heightMap", unlocalizedName = "height_map", textureName = "height_map") public static ItemHeightMap heightMap; @RegisterItem(name = "emptyMap", unlocalizedName = "empty_map", textureName = "empty_map") public static ItemEmptyMap emptyMap; @RegisterItem(name = "cartographer", textureName = RegisterItem.NONE) public static ItemCartographer cartographer; @RegisterItem(name = "tastyClay", unlocalizedName = "tasty_clay", textureName = "yum_yum") public static ItemTastyClay tastyClay; @RegisterItem(name = "goldenEye", unlocalizedName = "golden_eye", textureName = "golden_eye") public static ItemGoldenEye goldenEye; @RegisterItem(name = "genericUnstackable", textureName = RegisterItem.NONE, isConfigurable = false) public static ItemOBGenericUnstackable genericUnstackable; @RegisterItem(name = "cursor") public static ItemCursor cursor; @RegisterItem(name = "infoBook", unlocalizedName = "info_book", textureName = "info_book") public static ItemInfoBook infoBook; @RegisterItem(name = "devnull") public static ItemDevNull devNull; @RegisterItem(name = "spongeonastick") public static ItemSpongeOnAStick spongeonastick; @RegisterItem(name = "pedometer", textureName = "pedometer_still") public static ItemPedometer pedometer; @RegisterItem(name = "epicEraser", unlocalizedName = "epic_eraser", textureName = "epic_eraser") public static ItemEpicEraser epicEraser; @RegisterItem(name = "wrench") public static ItemWrench wrench; } public static class Fluids { /** * Instance of fluid that is added to fluid registry. * It may not be used as default fluid, so don't compare directly with other fluids. * FluidStacks created with this fluid should always be valid. */ public static final Fluid xpJuice = new Fluid("xpjuice").setLuminosity(10).setDensity(800).setViscosity(1500).setUnlocalizedName("OpenBlocks.xpjuice"); } public static class Enchantments { public static Enchantment explosive; public static Enchantment lastStand; public static Enchantment flimFlam; } public static CreativeTabs tabOpenBlocks = new CreativeTabs("tabOpenBlocks") { @Override public Item getTabIconItem() { Block block = Objects.firstNonNull(OpenBlocks.Blocks.flag, net.minecraft.init.Blocks.sponge); return Item.getItemFromBlock(block); } @Override @SuppressWarnings({ "unchecked", "rawtypes" }) @SideOnly(Side.CLIENT) public void displayAllReleventItems(List result) { super.displayAllReleventItems(result); if (Enchantments.explosive != null) EnchantmentUtils.addAllBooks(Enchantments.explosive, result); if (Enchantments.lastStand != null) EnchantmentUtils.addAllBooks(Enchantments.lastStand, result); if (Enchantments.flimFlam != null) EnchantmentUtils.addAllBooks(Enchantments.flimFlam, result); } }; public static int renderIdFull; public static int renderIdFlat; public static final Achievement brickAchievement = new Achievement("openblocks.oops", "openblocks.droppedBrick", 13, 13, net.minecraft.init.Items.brick, null).registerStat(); public static final Achievement stackAchievement = new Achievement("openblocks.tma2", "openblocks.stackOverflow", -13, 13, net.minecraft.init.Items.nether_star, null).registerStat(); public static final StatBase brickStat = new StatBasic("openblocks.dropped", new ChatComponentTranslation("stat.openblocks.bricksDropped"), StatBase.simpleStatType).registerStat(); private final ModStartupHelper startupHelper = new ModStartupHelper("openblocks") { @Override protected void populateConfig(Configuration config) { ConfigProcessing.processAnnotations("OpenBlocks", config, Config.class); } @Override protected void setupItemFactory(FactoryRegistry<Item> itemFactory) { itemFactory.registerFactory("pencilGlasses", new FactoryRegistry.Factory<Item>() { @Override public Item construct() { return new ItemImaginationGlasses(ItemImaginationGlasses.Type.PENCIL); } }); itemFactory.registerFactory("technicolorGlasses", new FactoryRegistry.Factory<Item>() { @Override public Item construct() { return new ItemImaginationGlasses(ItemImaginationGlasses.Type.TECHNICOLOR); } }); itemFactory.registerFactory("seriousGlasses", new FactoryRegistry.Factory<Item>() { @Override public Item construct() { return new ItemImaginationGlasses(ItemImaginationGlasses.Type.BASTARD); } }); } }; @EventHandler public void construct(FMLConstructionEvent evt) { apiSetup.injectProvider(); } @EventHandler public void preInit(FMLPreInitializationEvent evt) { // needed first, to properly initialize delegates FluidRegistry.registerFluid(Fluids.xpJuice); startupHelper.registerBlocksHolder(OpenBlocks.Blocks.class); startupHelper.registerItemsHolder(OpenBlocks.Items.class); startupHelper.preInit(evt.getSuggestedConfigurationFile()); NetworkEventManager.INSTANCE .startRegistration() .register(MapDataManager.MapDataRequestEvent.class) .register(MapDataManager.MapDataResponseEvent.class) .register(MapDataManager.MapUpdatesEvent.class) .register(ElevatorActionEvent.class) .register(PlayerActionEvent.class) .register(EntityMiniMe.OwnerChangeEvent.class); RpcCallDispatcher.INSTANCE.startRegistration() .registerInterface(IRotatable.class) .registerInterface(IStencilCrafter.class) .registerInterface(IColorChanger.class) .registerInterface(ILevelChanger.class) .registerInterface(ITriggerable.class) .registerInterface(IGuideAnimationTrigger.class); Config.register(); apiSetup.setupApis(); apiSetup.installHolderAccess(evt.getAsmData()); NetworkRegistry.INSTANCE.registerGuiHandler(instance, OpenMods.proxy.wrapHandler(new OpenBlocksGuiHandler())); MinecraftForge.EVENT_BUS.register(new PlayerDeathHandler()); if (OpenBlocks.Items.cursor != null) { MinecraftForge.EVENT_BUS.register(new GuiOpenHandler()); } EntityRegistry.registerModEntity(EntityLuggage.class, "Luggage", ENTITY_LUGGAGE_ID, OpenBlocks.instance, 64, 1, true); EntityRegistry.registerModEntity(EntityXPOrbNoFly.class, "XPOrbNoFly", ENTITY_XP_ID, OpenBlocks.instance, 64, 1, true); EntityRegistry.registerModEntity(EntityHangGlider.class, "Hang Glider", ENTITY_HANGGLIDER_ID, OpenBlocks.instance, 64, 1, true); EntityRegistry.registerModEntity(EntityMagnet.class, "Magnet", ENTITY_MAGNET_ID, OpenBlocks.instance, 64, 1, true); EntityRegistry.registerModEntity(EntityMountedBlock.class, "MountedBlock", ENTITY_BLOCK_ID, OpenBlocks.instance, 64, 1, true); EntityRegistry.registerModEntity(EntityMagnet.PlayerBound.class, "Player-Magnet", ENTITY_MAGNET_PLAYER_ID, OpenBlocks.instance, 64, 1, true); EntityRegistry.registerModEntity(EntityCartographer.class, "Cartographer", ENTITY_CARTOGRAPHER_ID, OpenBlocks.instance, 64, 8, true); EntityRegistry.registerModEntity(EntityItemProjectile.class, "EntityItemProjectile", ENTITY_CANON_ITEM_ID, OpenBlocks.instance, 64, 1, true); EntityRegistry.registerModEntity(EntityGoldenEye.class, "GoldenEye", ENTITY_GOLDEN_EYE_ID, OpenBlocks.instance, 64, 8, true); EntityRegistry.registerModEntity(EntityMiniMe.class, "MiniMe", ENTITY_MINIME_ID, OpenBlocks.instance, 64, 1, true); MagnetWhitelists.instance.initTesters(); MinecraftForge.EVENT_BUS.register(MapDataManager.instance); Integration.addModule(new ModuleAdapters()); Integration.addModule(new ModuleTurtles()); if (!Config.soSerious) { MinecraftForge.EVENT_BUS.register(new BrickManager()); } if (OpenBlocks.Blocks.elevator != null || OpenBlocks.Blocks.elevatorRotating != null) { MinecraftForge.EVENT_BUS.register(ElevatorBlockRules.instance); } if (Config.radioVillagerId > 0) { VillagerRegistry.instance().registerVillagerId(Config.radioVillagerId); VillagerRegistry.instance().registerVillageTradeHandler(Config.radioVillagerId, new RadioVillagerTradeManager()); } { String luggageName = (String)EntityList.classToStringMapping.get(EntityLuggage.class); FMLInterModComms.sendMessage(Mods.MFR, "registerAutoSpawnerBlacklist", luggageName); } if (Items.luggage != null) { MinecraftForge.EVENT_BUS.register(new LuggageDropHandler()); } if (Blocks.elevator != null) { MinecraftForge.EVENT_BUS.register(new ElevatorActionHandler()); } if (Blocks.tank != null) { BucketFillHandler.instance.addToWhitelist(TileEntityTank.class); } MinecraftForge.EVENT_BUS.register(PlayerInventoryStore.instance); MinecraftForge.EVENT_BUS.register(new EntityEventHandler()); MinecraftForge.EVENT_BUS.register(new GameRuleManager()); proxy.preInit(); } @EventHandler public void init(FMLInitializationEvent evt) { FMLCommonHandler.instance().bus().register(new ServerTickHandler()); proxy.init(); proxy.registerRenderInformation(); registerOreDictionary(); } @EventHandler public void postInit(FMLPostInitializationEvent evt) { proxy.postInit(); if (Enchantments.flimFlam != null) { FlimFlamRegistry.instance.registerFlimFlam("inventory-shuffle", -50, 100, new InventoryShuffleFlimFlam()).markSafe(); FlimFlamRegistry.instance.registerFlimFlam("useless-tool", -125, 50, new UselessToolFlimFlam()).markSafe(); FlimFlamRegistry.instance.registerFlimFlam("bane", -125, 100, new BaneFlimFlam()).markSafe(); FlimFlamRegistry.instance.registerFlimFlam("epic-lore", -10, 100, new LoreFlimFlam()).markSafe(); FlimFlamRegistry.instance.registerFlimFlam("living-rename", -10, 100, new RenameFlimFlam()).markSafe(); FlimFlamRegistry.instance.registerFlimFlam("squid", -75, 50, new SquidFilmFlam()).markSafe(); FlimFlamRegistry.instance.registerFlimFlam("sheep-dye", -5, 50, new SheepDyeFlimFlam()).markSafe(); FlimFlamRegistry.instance.registerFlimFlam("invisible-mobs", -25, 10, new InvisibleMobsFlimFlam()).markSafe(); FlimFlamRegistry.instance.registerFlimFlam("sound", -5, 150, new SoundFlimFlam()).markSilent().markSafe(); FlimFlamRegistry.instance.registerFlimFlam("snowballs", -50, 50, new SnowballsFlimFlam()); FlimFlamRegistry.instance.registerFlimFlam("teleport", -100, 30, new TeleportFlimFlam()); FlimFlamRegistry.instance.registerFlimFlam("mount", -150, 25, new MountFlimFlam()); FlimFlamRegistry.instance.registerFlimFlam("encase", -50, 50, new EncaseFlimFlam()).setRange(Integer.MIN_VALUE, -300); FlimFlamRegistry.instance.registerFlimFlam("creepers", -60, 50, new DummyCreepersFlimFlam()); FlimFlamRegistry.instance.registerFlimFlam("disarm", -50, 50, new ItemDropFlimFlam()); FlimFlamRegistry.instance.registerFlimFlam("effect", -75, 75, new EffectFlimFlam()); FlimFlamRegistry.instance.registerFlimFlam("skyblock", -100, 150, new SkyblockFlimFlam()).setRange(Integer.MIN_VALUE, -400); FlimFlamRegistry.BLACKLIST.init(); } } @EventHandler public void processMessage(FMLInterModComms.IMCEvent event) { for (FMLInterModComms.IMCMessage m : event.getMessages()) { if (m.isStringMessage() && "donateUrl".equalsIgnoreCase(m.key)) { DonationUrlManager.instance().addUrl(m.getSender(), m.getStringValue()); } } } @EventHandler public void handleRenames(FMLMissingMappingsEvent event) { startupHelper.handleRenames(event); } @EventHandler public void severStart(FMLServerStartingEvent evt) { evt.registerServerCommand(new CommandFlimFlam()); evt.registerServerCommand(new CommandLuck()); evt.registerServerCommand(new CommandInventory()); } public static String getModId() { return OpenBlocks.class.getAnnotation(Mod.class).modid(); } private static void registerOreDictionary() { OreDictionary.registerOre("craftingTableWood", new ItemStack(net.minecraft.init.Blocks.crafting_table)); OreDictionary.registerOre("chestWood", new ItemStack(net.minecraft.init.Blocks.chest)); } }