package icbm.zhapin; import java.util.List; import calclavia.lib.UniversalRecipes; import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.common.Mod; import cpw.mods.fml.common.ModMetadata; import cpw.mods.fml.common.SidedProxy; 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.event.FMLServerStartingEvent; import cpw.mods.fml.common.network.IGuiHandler; import cpw.mods.fml.common.network.NetworkRegistry; import cpw.mods.fml.common.network.simpleimpl.SimpleNetworkWrapper; import cpw.mods.fml.common.registry.EntityRegistry; import cpw.mods.fml.common.registry.GameRegistry; import cpw.mods.fml.relauncher.Side; import icbm.api.ICBM; import icbm.api.ICBMFlags; import icbm.core.ICBMTab; import icbm.core.MainBase; import icbm.zhapin.cart.ECart; import icbm.zhapin.cart.ItCart; import icbm.zhapin.daodan.EMissile; import icbm.zhapin.daodan.ItMissile; import icbm.zhapin.daodan.ItModuleMissile; import icbm.zhapin.daodan.MissileBase; import icbm.zhapin.dianqi.ItDefuser; import icbm.zhapin.dianqi.ItLaserDesignator; import icbm.zhapin.dianqi.ItRadarGun; import icbm.zhapin.dianqi.ItRemoteDetonator; import icbm.zhapin.dianqi.ItRocketLauncher; import icbm.zhapin.jiqi.BMachine; import icbm.zhapin.jiqi.CruiseLauncherGuiPacket; import icbm.zhapin.jiqi.CruiseLauncherGuiPacketHandler; import icbm.zhapin.jiqi.EmpTowerGuiPacket; import icbm.zhapin.jiqi.EmpTowerGuiPacketHandler; import icbm.zhapin.jiqi.IBMachine; import icbm.zhapin.jiqi.LauncherControlPanelGuiPacket; import icbm.zhapin.jiqi.LauncherControlPanelGuiPacketHandler; import icbm.zhapin.jiqi.RadarTowerGuiPacket; import icbm.zhapin.jiqi.RadarTowerGuiPacketHandler; import icbm.zhapin.po.PChuanRanDu; import icbm.zhapin.po.PDaDu; import icbm.zhapin.po.PDongShang; import icbm.zhapin.zhapin.BExplosives; import icbm.zhapin.zhapin.EExplosion; import icbm.zhapin.zhapin.EExplosive; import icbm.zhapin.zhapin.EGrenade; import icbm.zhapin.zhapin.IBExplosive; import icbm.zhapin.zhapin.ItGrenade; import icbm.zhapin.zhapin.ZhaPin; import net.minecraft.block.Block; import net.minecraft.block.BlockDispenser; import net.minecraft.block.BlockRailBase; import net.minecraft.command.ICommand; import net.minecraft.command.ICommandManager; import net.minecraft.command.ServerCommandManager; import net.minecraft.dispenser.BehaviorDefaultDispenseItem; import net.minecraft.dispenser.IBehaviorDispenseItem; import net.minecraft.dispenser.IBlockSource; import net.minecraft.entity.Entity; import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.IRecipe; import net.minecraft.util.EnumFacing; import net.minecraft.world.World; import net.minecraftforge.common.ForgeChunkManager; import net.minecraftforge.common.ForgeChunkManager.Ticket; import net.minecraftforge.oredict.ShapedOreRecipe; import net.minecraftforge.oredict.ShapelessOreRecipe; import universalelectricity.core.item.ElectricItemHelper; import universalelectricity.core.item.ItemElectric; import universalelectricity.core.vector.Vector3; import universalelectricity.prefab.RecipeHelper; import universalelectricity.prefab.flag.FlagRegistry; @Mod( modid = "ICBM|Explosion", name = "ICBM|Explosion", version = "1.2.1", dependencies = "after:ICBM|Sentry;required-after:AtomicScience", useMetadata = true ) public class ICBMExplosion extends MainBase { public static final String NAME = "ICBM|Explosion"; public static final String CHANNEL = "ICBM|E"; @Mod.Instance("ICBM|Explosion") public static ICBMExplosion instance; @Mod.Metadata("ICBM|Explosion") public static ModMetadata metadata; @SidedProxy( clientSide = "icbm.zhapin.ClientProxy", serverSide = "icbm.zhapin.CommonProxy" ) public static CommonProxy proxy; public static Item Du; public static final int ENTITY_ID_PREFIX = 50; public static Block bExplosives; public static Block bMachine; public static Item itDaoDan; public static Item itTeBieDaoDan; public static ItemElectric itJieJa; public static ItemElectric itLeiDaQiang; public static ItemElectric itYaoKong; public static ItemElectric itLeiSheZhiBiao; public static ItemElectric itFaSheQi; public static Item itShouLiuDan; public static Item itChe; public static final Du DU_DU; public static final Du DU_CHUAN_RAN; public static boolean USE_FUEL; public static SimpleNetworkWrapper channel; @Mod.EventHandler @Override public void preInit(final FMLPreInitializationEvent event) { super.preInit(event); NetworkRegistry.INSTANCE.registerGuiHandler( (Object) this, (IGuiHandler) ICBMExplosion.proxy ); MainBase.CONFIGURATION.load(); ICBMExplosion.USE_FUEL = MainBase.CONFIGURATION.get("general", "Use Fuel", ICBMExplosion.USE_FUEL) .getBoolean(ICBMExplosion.USE_FUEL); ICBMExplosion.bExplosives = (Block) new BExplosives(); ICBMExplosion.bMachine = (Block) new BMachine(); ICBMExplosion.itDaoDan = new ItMissile("missile"); ICBMExplosion.itTeBieDaoDan = new ItModuleMissile(); ICBMExplosion.itJieJa = new ItDefuser(); ICBMExplosion.itLeiDaQiang = new ItRadarGun(); ICBMExplosion.itYaoKong = new ItRemoteDetonator(); ICBMExplosion.itLeiSheZhiBiao = new ItLaserDesignator(); ICBMExplosion.itFaSheQi = new ItRocketLauncher(); ICBMExplosion.itShouLiuDan = new ItGrenade(); ICBMExplosion.itChe = new ItCart(); PDaDu.INSTANCE = new PDaDu(22, true, 5149489, "toxin"); PChuanRanDu.INSTANCE = new PChuanRanDu(23, false, 5149489, "virus"); PDongShang.INSTANCE = new PDongShang(24, false, 5149489, "frostBite"); MainBase.CONFIGURATION.save(); BlockDispenser.dispenseBehaviorRegistry.putObject( (Object) ICBMExplosion.itShouLiuDan, (Object) new IBehaviorDispenseItem() { public ItemStack dispense( final IBlockSource blockSource, final ItemStack itemStack ) { final World world = blockSource.getWorld(); if (!world.isRemote) { final int x = blockSource.getXInt(); final int y = blockSource.getYInt(); final int z = blockSource.getZInt(); final EnumFacing enumFacing = EnumFacing.getFront(blockSource.getBlockMetadata()); final EGrenade entity = new EGrenade( world, new Vector3(x, y, z), itemStack.getItemDamage() ); entity.setThrowableHeading( enumFacing.getFrontOffsetX(), 0.10000000149011612, enumFacing.getFrontOffsetZ(), 0.5f, 1.0f ); world.spawnEntityInWorld((Entity) entity); } --itemStack.stackSize; return itemStack; } } ); BlockDispenser.dispenseBehaviorRegistry.putObject( (Object) ICBMExplosion.itChe, (Object) new IBehaviorDispenseItem() { private final BehaviorDefaultDispenseItem defaultItemDispenseBehavior = new BehaviorDefaultDispenseItem(); public ItemStack dispense( final IBlockSource blockSource, final ItemStack itemStack ) { final World world = blockSource.getWorld(); if (!world.isRemote) { final int x = blockSource.getXInt(); final int y = blockSource.getYInt(); final int z = blockSource.getZInt(); final EnumFacing var3 = EnumFacing.getFront(blockSource.getBlockMetadata()); final World var4 = blockSource.getWorld(); final double var5 = blockSource.getX() + var3.getFrontOffsetX() * 1.125f; final double var6 = blockSource.getY(); final double var7 = blockSource.getZ() + var3.getFrontOffsetZ() * 1.125f; final int var8 = blockSource.getXInt() + var3.getFrontOffsetX(); final int var9 = blockSource.getYInt(); final int var10 = blockSource.getZInt() + var3.getFrontOffsetZ(); final Block var11 = var4.getBlock(var8, var9, var10); double var12; if (BlockRailBase.func_150051_a(var11)) { var12 = 0.0; } else { if (var11 != Blocks.air || !BlockRailBase.func_150051_a( var4.getBlock(var8, var9 - 1, var10) )) { return this.defaultItemDispenseBehavior.dispense( blockSource, itemStack ); } var12 = -1.0; } final ECart var13 = new ECart( world, var5, var6 + var12, var7, itemStack.getItemDamage() ); world.spawnEntityInWorld((Entity) var13); world.playAuxSFX(1000, x, y, z, 0); } --itemStack.stackSize; return itemStack; } } ); GameRegistry.registerBlock( ICBMExplosion.bExplosives, IBExplosive.class, "bExplosives" ); GameRegistry.registerBlock(ICBMExplosion.bMachine, IBMachine.class, "bMachine"); ForgeChunkManager.setForcedChunkLoadingCallback( (Object) this, (ForgeChunkManager.LoadingCallback) new ForgeChunkManager.LoadingCallback() { public void ticketsLoaded(final List tickets, final World world) { for (final ForgeChunkManager.Ticket ticket : tickets) { if (ticket.getEntity() != null) { ((EMissile) ticket.getEntity()).daoDanInit(ticket); } } } } ); GameRegistry.registerItem(itDaoDan, "icbm:itDaoDan"); GameRegistry.registerItem(itTeBieDaoDan, "icbm:itTeBieDaoDan"); GameRegistry.registerItem(itJieJa, "icbm:itJieJa"); GameRegistry.registerItem(itLeiDaQiang, "icbm:itLeiDaQiang"); GameRegistry.registerItem(itYaoKong, "icbm:itYaoKong"); GameRegistry.registerItem(itLeiSheZhiBiao, "icbm:itLeiSheZhiBiao"); GameRegistry.registerItem(itFaSheQi, "icbm:itFaSheQi"); GameRegistry.registerItem(itShouLiuDan, "icbm:itShouLiuDan"); GameRegistry.registerItem(itChe, "icbm:itChe"); ICBMTab.itemStack = new ItemStack(ICBMExplosion.bExplosives); ICBM.explosionManager = ZhaPin.class; ICBMExplosion.proxy.preInit(); channel = NetworkRegistry.INSTANCE.newSimpleChannel("icbm_explosion"); int pktId = 0; channel.registerMessage( ItemUsePacketHandler.class, ItemUsePacket.class, pktId++, Side.SERVER ); channel.registerMessage( EmpTowerGuiPacketHandler.class, EmpTowerGuiPacket.class, pktId++, Side.SERVER ); channel.registerMessage( LauncherControlPanelGuiPacketHandler.class, LauncherControlPanelGuiPacket.class, pktId++, Side.SERVER ); channel.registerMessage( CruiseLauncherGuiPacketHandler.class, CruiseLauncherGuiPacket.class, pktId++, Side.SERVER ); channel.registerMessage( RadarTowerGuiPacketHandler.class, RadarTowerGuiPacket.class, pktId++, Side.SERVER ); } @Mod.EventHandler public void load(final FMLInitializationEvent evt) { MainBase.setModMetadata("ICBM|Explosion", ICBMExplosion.metadata); } @Mod.EventHandler @Override public void postInit(final FMLPostInitializationEvent event) { super.postInit(event); for (int i = 0; i < ZhaPin.list.length; ++i) { if (ZhaPin.list[i] != null) { ZhaPin.list[i].init(); } } GameRegistry.addRecipe((IRecipe) new ShapedOreRecipe( (Item) ICBMExplosion.itFaSheQi, new Object[] { "SCR", "SB ", 'R', ICBMExplosion.itLeiDaQiang, 'C', new ItemStack( ICBMExplosion.bMachine, 1, BMachine.JiQi.XiaoFaSheQi.ordinal() + 6 ), 'B', Blocks.stone_button, 'S', "ingotSteel" } )); GameRegistry.addRecipe((IRecipe) new ShapedOreRecipe( new ItemStack((Item) ICBMExplosion.itLeiDaQiang), new Object[] { "@#!", " $!", " !", '@', Blocks.glass, '!', "ingotSteel", '#', "calclavia:CIRCUIT_T1", '$', Blocks.stone_button } )); GameRegistry.addRecipe((IRecipe) new ShapedOreRecipe( new ItemStack((Item) ICBMExplosion.itYaoKong), new Object[] { "?@@", "@#$", "@@@", '@', "ingotSteel", '?', Items.redstone, '#', "calclavia:CIRCUIT_T2", '$', Blocks.stone_button } )); GameRegistry.addRecipe((IRecipe) new ShapedOreRecipe( new ItemStack((Item) ICBMExplosion.itLeiSheZhiBiao), new Object[] { "! ", " ? ", " @", '@', ElectricItemHelper.getUncharged(ICBMExplosion.itYaoKong), '?', "calclavia:CIRCUIT_T3", '!', ElectricItemHelper.getUncharged(ICBMExplosion.itLeiDaQiang) } )); GameRegistry.addRecipe((IRecipe) new ShapedOreRecipe( new ItemStack((Item) ICBMExplosion.itJieJa), new Object[] { "I ", " W ", " C", 'C', "calclavia:CIRCUIT_T2", 'W', "calclavia:WRENCH", 'I', "calclavia:WIRE" } )); GameRegistry.addRecipe((IRecipe) new ShapedOreRecipe( new ItemStack(ICBMExplosion.bMachine, 1, 0), new Object[] { "! !", "!C!", "!!!", '!', "ingotBronze", 'C', "calclavia:CIRCUIT_T1" } )); GameRegistry.addRecipe((IRecipe) new ShapedOreRecipe( new ItemStack(ICBMExplosion.bMachine, 1, 1), new Object[] { "! !", "!C!", "!@!", '@', new ItemStack(ICBMExplosion.bMachine, 1, 0), '!', "ingotSteel", 'C', "calclavia:CIRCUIT_T2" } )); GameRegistry.addRecipe((IRecipe) new ShapedOreRecipe( new ItemStack(ICBMExplosion.bMachine, 1, 2), new Object[] { "! !", "!C!", "!@!", '@', new ItemStack(ICBMExplosion.bMachine, 1, 1), '!', "plateSteel", 'C', "calclavia:CIRCUIT_T3" } )); GameRegistry.addRecipe((IRecipe) new ShapedOreRecipe( new ItemStack(ICBMExplosion.bMachine, 1, 3), new Object[] { "!!!", "!#!", "!?!", '#', "calclavia:CIRCUIT_T1", '!', Blocks.glass, '?', "calclavia:WIRE" } )); GameRegistry.addRecipe((IRecipe) new ShapedOreRecipe( new ItemStack(ICBMExplosion.bMachine, 1, 4), new Object[] { "!$!", "!#!", "!?!", '#', "calclavia:CIRCUIT_T2", '!', "ingotSteel", '?', "calclavia:WIRE", '$', new ItemStack(ICBMExplosion.bMachine, 1, 3) } )); GameRegistry.addRecipe((IRecipe) new ShapedOreRecipe( new ItemStack(ICBMExplosion.bMachine, 1, 5), new Object[] { "!$!", "!#!", "!?!", '#', "calclavia:CIRCUIT_T3", '!', Items.gold_ingot, '?', "calclavia:WIRE", '$', new ItemStack(ICBMExplosion.bMachine, 1, 4) } )); GameRegistry.addRecipe((IRecipe) new ShapedOreRecipe( new ItemStack(ICBMExplosion.bMachine, 1, 6), new Object[] { "! !", "!!!", "! !", '!', "ingotBronze" } )); GameRegistry.addRecipe((IRecipe) new ShapedOreRecipe( new ItemStack(ICBMExplosion.bMachine, 1, 7), new Object[] { "! !", "!@!", "! !", '!', "ingotSteel", '@', new ItemStack(ICBMExplosion.bMachine, 1, 6) } )); GameRegistry.addRecipe((IRecipe) new ShapedOreRecipe( new ItemStack(ICBMExplosion.bMachine, 1, 8), new Object[] { "! !", "!@!", "! !", '!', "plateSteel", '@', new ItemStack(ICBMExplosion.bMachine, 1, 7) } )); GameRegistry.addRecipe((IRecipe) new ShapedOreRecipe( new ItemStack(ICBMExplosion.bMachine, 1, 9), new Object[] { "?@?", " ! ", "!#!", '@', ElectricItemHelper.getUncharged(ICBMExplosion.itLeiDaQiang), '!', "plateSteel", '#', "calclavia:CIRCUIT_T1", '?', Items.gold_ingot } )); RecipeHelper.addRecipe( (IRecipe) new ShapedOreRecipe( new ItemStack(ICBMExplosion.bMachine, 1, 10), new Object[] { "?W?", "@!@", "?#?", '?', "plateSteel", '!', "calclavia:CIRCUIT_T3", '@', UniversalRecipes.BATTERY_BOX, '#', "calclavia:MOTOR", 'W', "calclavia:WIRE" } ), "EMP Tower", MainBase.CONFIGURATION, true ); GameRegistry.addRecipe((IRecipe) new ShapedOreRecipe( new ItemStack(ICBMExplosion.bMachine, 1, 11), new Object[] { "?! ", "@@@", '@', "plateSteel", '!', new ItemStack(ICBMExplosion.bMachine, 1, 2), '?', new ItemStack(ICBMExplosion.bMachine, 1, 8) } )); GameRegistry.addRecipe((IRecipe) new ShapedOreRecipe( new ItemStack(ICBMExplosion.itTeBieDaoDan), new Object[] { " @ ", "@#@", "@?@", '@', "ingotSteel", '?', Items.coal, '#', "calclavia:CIRCUIT_T1" } )); GameRegistry.addRecipe((IRecipe) new ShapedOreRecipe( new ItemStack(ICBMExplosion.itTeBieDaoDan, 1, 1), new Object[] { " B ", " C ", "BMB", 'M', new ItemStack(ICBMExplosion.itTeBieDaoDan, 1, 0), 'C', "calclavia:CIRCUIT_T1", 'B', "ingotBronze" } )); GameRegistry.addRecipe((IRecipe) new ShapedOreRecipe( new ItemStack(ICBMExplosion.itTeBieDaoDan, 1, 2), new Object[] { "!", "?", "@", '@', new ItemStack(ICBMExplosion.itTeBieDaoDan, 1, 0), '?', new ItemStack(ICBMExplosion.bExplosives, 1, 0), '!', "calclavia:CIRCUIT_T1" } )); GameRegistry.addRecipe((IRecipe) new ShapedOreRecipe( new ItemStack(ICBMExplosion.itTeBieDaoDan, 1, 3), new Object[] { " ! ", " ? ", "!@!", '@', new ItemStack(ICBMExplosion.itTeBieDaoDan, 1, 0), '?', MissileBase.list[ZhaPin.fragmentation.getID()].getItemStack(), '!', new ItemStack(ICBMExplosion.itDaoDan, 1, 0) } )); GameRegistry.addRecipe((IRecipe) new ShapedOreRecipe( new ItemStack(ICBMExplosion.itTeBieDaoDan, 1, 4), new Object[] { " N ", "NCN", 'C', new ItemStack(ICBMExplosion.itTeBieDaoDan, 1, 3), 'N', ZhaPin.nuclear.getItemStack() } )); for (int i = 0; i < ZhaPin.E_SI_ID; ++i) { RecipeHelper.addRecipe( (IRecipe) new ShapelessOreRecipe( new ItemStack(ICBMExplosion.itDaoDan, 1, i), new Object[] { new ItemStack(ICBMExplosion.itTeBieDaoDan, 1, 0), new ItemStack(ICBMExplosion.bExplosives, 1, i) } ), ZhaPin.list[i].getUnlocalizedName() + " Missile", MainBase.CONFIGURATION, true ); if (i < ZhaPin.E_YI_ID) { RecipeHelper.addRecipe( (IRecipe) new ShapedOreRecipe( new ItemStack(ICBMExplosion.itShouLiuDan, 1, i), new Object[] { "?", "@", '@', new ItemStack(ICBMExplosion.bExplosives, 1, i), '?', Items.string } ), ZhaPin.list[i].getUnlocalizedName() + " Grenade", MainBase.CONFIGURATION, true ); } if (i < ZhaPin.E_ER_ID) { RecipeHelper.addRecipe( (IRecipe) new ShapedOreRecipe( new ItemStack(ICBMExplosion.itChe, 1, i), new Object[] { "?", "@", '?', new ItemStack(ICBMExplosion.bExplosives, 1, i), '@', Items.minecart } ), ZhaPin.list[i].getUnlocalizedName() + " Minecart", MainBase.CONFIGURATION, true ); } } EntityRegistry.registerGlobalEntityID( EExplosive.class, "ICBMExplosive", EntityRegistry.findGlobalUniqueEntityId() ); EntityRegistry.registerGlobalEntityID( EMissile.class, "ICBMMissile", EntityRegistry.findGlobalUniqueEntityId() ); EntityRegistry.registerGlobalEntityID( EExplosion.class, "ICBMProceduralExplosion", EntityRegistry.findGlobalUniqueEntityId() ); EntityRegistry.registerGlobalEntityID( EGravityBlock.class, "ICBMGravityBlock", EntityRegistry.findGlobalUniqueEntityId() ); EntityRegistry.registerGlobalEntityID( ELightBeam.class, "ICBMLightBeam", EntityRegistry.findGlobalUniqueEntityId() ); EntityRegistry.registerGlobalEntityID( ESuiPian.class, "ICBMFragment", EntityRegistry.findGlobalUniqueEntityId() ); EntityRegistry.registerGlobalEntityID( EGrenade.class, "ICBMGrenade", EntityRegistry.findGlobalUniqueEntityId() ); EntityRegistry.registerGlobalEntityID( ECart.class, "ICBMChe", EntityRegistry.findGlobalUniqueEntityId() ); EntityRegistry.registerModEntity( EExplosive.class, "ICBMExplosive", 50, (Object) this, 50, 5, true ); EntityRegistry.registerModEntity( EMissile.class, "ICBMMissile", 51, (Object) this, 500, 1, true ); EntityRegistry.registerModEntity( EExplosion.class, "ICBMProceduralExplosion", 52, (Object) this, 100, 5, true ); EntityRegistry.registerModEntity( EGravityBlock.class, "ICBMGravityBlock", 53, (Object) this, 50, 15, true ); EntityRegistry.registerModEntity( ELightBeam.class, "ICBMLightBeam", 54, (Object) this, 80, 5, true ); EntityRegistry.registerModEntity( ESuiPian.class, "ICBMFragment", 55, (Object) this, 40, 8, true ); EntityRegistry.registerModEntity( EGrenade.class, "ICBMGrenade", 56, (Object) this, 50, 5, true ); EntityRegistry.registerModEntity( ECart.class, "ICBMChe", 58, (Object) this, 50, 4, true ); ICBMExplosion.proxy.init(); } public static boolean shiBaoHu( final World world, final Vector3 diDian, final ZhaPin.ZhaPinType type, final ZhaPin zhaPin ) { if (FlagRegistry.getModFlag("ModFlags") == null) { return false; } if (FlagRegistry.getModFlag("ModFlags") .containsValue(world, ICBMFlags.FLAG_BAN_GLOBAL, "true", diDian)) { return true; } boolean baoHu = false; switch (type) { case QUAN_BU: { baoHu = (FlagRegistry.getModFlag("ModFlags") .containsValue( world, ICBMFlags.FLAG_BAN_MINECART, "true", diDian ) || FlagRegistry.getModFlag("ModFlags") .containsValue( world, ICBMFlags.FLAG_BAN_MISSILE, "true", diDian ) || FlagRegistry.getModFlag("ModFlags") .containsValue( world, ICBMFlags.FLAG_BAN_GRENADE, "true", diDian ) || FlagRegistry.getModFlag("ModFlags") .containsValue( world, ICBMFlags.FLAG_BAN_EXPLOSIVE, "true", diDian )); break; } case CHE: { baoHu = FlagRegistry.getModFlag("ModFlags") .containsValue( world, ICBMFlags.FLAG_BAN_MINECART, "true", diDian ); break; } case DAO_DAN: { baoHu = FlagRegistry.getModFlag("ModFlags") .containsValue( world, ICBMFlags.FLAG_BAN_MISSILE, "true", diDian ); break; } case SHOU_LIU_DAN: { baoHu = FlagRegistry.getModFlag("ModFlags") .containsValue( world, ICBMFlags.FLAG_BAN_GRENADE, "true", diDian ); break; } case ZHA_DAN: { baoHu = FlagRegistry.getModFlag("ModFlags") .containsValue( world, ICBMFlags.FLAG_BAN_EXPLOSIVE, "true", diDian ); break; } } return FlagRegistry.getModFlag("ModFlags") .containsValue(world, zhaPin.qiZi, "true", diDian) || baoHu; } public static boolean shiBaoHu( final World world, final Vector3 diDian, final ZhaPin.ZhaPinType type, final int zhaPinID ) { return zhaPinID < ZhaPin.list.length && zhaPinID >= 0 && shiBaoHu(world, diDian, type, ZhaPin.list[zhaPinID]); } @Mod.EventHandler @Override public void serverStarting(final FMLServerStartingEvent event) { super.serverStarting(event); final ICommandManager commandManager = FMLCommonHandler.instance().getMinecraftServerInstance().getCommandManager( ); final ServerCommandManager serverCommandManager = (ServerCommandManager) commandManager; serverCommandManager.registerCommand((ICommand) new ICBMCommand()); } @Override protected String getChannel() { return "ICBM|E"; } static { DU_DU = new Du("Chemical", 1, false); DU_CHUAN_RAN = new Du("Contagious", 1, true); ICBMExplosion.USE_FUEL = true; } }