generated from tilera/1710mod
231 lines
11 KiB
Java
231 lines
11 KiB
Java
package icbm.gangshao;
|
|
|
|
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.eventhandler.SubscribeEvent;
|
|
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.ICBMFlags;
|
|
import icbm.core.ICBMTab;
|
|
import icbm.core.MainBase;
|
|
import icbm.gangshao.damage.EntityTileDamagable;
|
|
import icbm.gangshao.packet.PacketHandlerTurret;
|
|
import icbm.gangshao.packet.PacketTurret;
|
|
import icbm.gangshao.platform.BlockTurretPlatform;
|
|
import icbm.gangshao.terminal.command.CommandAccess;
|
|
import icbm.gangshao.terminal.command.CommandDestroy;
|
|
import icbm.gangshao.terminal.command.CommandGet;
|
|
import icbm.gangshao.terminal.command.CommandHelp;
|
|
import icbm.gangshao.terminal.command.CommandRegistry;
|
|
import icbm.gangshao.terminal.command.CommandTarget;
|
|
import icbm.gangshao.terminal.command.CommandUser;
|
|
import icbm.gangshao.turret.BlockTurret;
|
|
import icbm.gangshao.turret.ItemAmmo;
|
|
import icbm.gangshao.turret.ItemBlockTurret;
|
|
import icbm.gangshao.turret.mount.ESeat;
|
|
import icbm.gangshao.turret.upgrades.ItPaoTaiUpgrades;
|
|
import net.minecraft.block.Block;
|
|
import net.minecraft.command.ICommand;
|
|
import net.minecraft.command.ICommandManager;
|
|
import net.minecraft.command.ServerCommandManager;
|
|
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.world.World;
|
|
import net.minecraftforge.common.MinecraftForge;
|
|
import net.minecraftforge.event.world.WorldEvent;
|
|
import net.minecraftforge.oredict.ShapedOreRecipe;
|
|
import universalelectricity.core.vector.Vector3;
|
|
import universalelectricity.prefab.flag.CommandFlag;
|
|
import universalelectricity.prefab.flag.FlagRegistry;
|
|
import universalelectricity.prefab.flag.ModFlag;
|
|
import universalelectricity.prefab.flag.NBTFileLoader;
|
|
|
|
@Mod(modid = "ICBM|Sentry", name = "ICBM|Sentry", version = "1.2.1", useMetadata = true)
|
|
public class ICBMSentry extends MainBase {
|
|
public static final String NAME = "ICBM|Sentry";
|
|
public static final String CHANNEL = "ICBM";
|
|
@SidedProxy(clientSide = "icbm.gangshao.ClientProxy", serverSide = "icbm.gangshao.CommonProxy")
|
|
public static CommonProxy proxy;
|
|
@Mod.Instance("ICBM|Sentry")
|
|
public static ICBMSentry instance;
|
|
@Mod.Metadata("ICBM|Sentry")
|
|
public static ModMetadata metadata;
|
|
public static final int BLOCK_ID_PREFIX = 3517;
|
|
public static final int ITEM_ID_PREFIX = 20948;
|
|
public static final int ENTITY_ID_PREFIX = 50;
|
|
public static Block blockTurret;
|
|
public static Block blockPlatform;
|
|
public static Item itemAmmo;
|
|
public static Item itemUpgrade;
|
|
public static ItemStack conventionalBullet;
|
|
public static ItemStack railgunBullet;
|
|
public static ItemStack antimatterBullet;
|
|
public static ItemStack bulletShell;
|
|
public static final String FLAG_RAILGUN;
|
|
public static SimpleNetworkWrapper channel;
|
|
|
|
@Mod.EventHandler
|
|
@Override
|
|
public void preInit(final FMLPreInitializationEvent event) {
|
|
super.preInit(event);
|
|
NetworkRegistry.INSTANCE.registerGuiHandler((Object) this,
|
|
(IGuiHandler) ICBMSentry.proxy);
|
|
MinecraftForge.EVENT_BUS.register((Object) this);
|
|
MainBase.CONFIGURATION.load();
|
|
ICBMSentry.blockTurret = (Block) new BlockTurret();
|
|
ICBMSentry.blockPlatform = (Block) new BlockTurretPlatform();
|
|
ICBMSentry.itemAmmo = new ItemAmmo();
|
|
ICBMSentry.itemUpgrade = new ItPaoTaiUpgrades();
|
|
MainBase.CONFIGURATION.save();
|
|
ICBMSentry.bulletShell = new ItemStack(ICBMSentry.itemAmmo, 1, 0);
|
|
ICBMSentry.conventionalBullet = new ItemStack(ICBMSentry.itemAmmo, 1, 1);
|
|
ICBMSentry.railgunBullet = new ItemStack(ICBMSentry.itemAmmo, 1, 2);
|
|
ICBMSentry.antimatterBullet = new ItemStack(ICBMSentry.itemAmmo, 1, 3);
|
|
GameRegistry.registerBlock(ICBMSentry.blockTurret, ItemBlockTurret.class,
|
|
"ICBMTurret");
|
|
GameRegistry.registerBlock(ICBMSentry.blockPlatform, "ICBMPlatform");
|
|
EntityRegistry.registerGlobalEntityID(
|
|
ESeat.class, "ICBMFake", EntityRegistry.findGlobalUniqueEntityId());
|
|
EntityRegistry.registerModEntity(ESeat.class, "ICBMFake", 57, (Object) this,
|
|
50, 5, true);
|
|
EntityRegistry.registerGlobalEntityID(
|
|
EntityTileDamagable.class, "ICBMFakeTile",
|
|
EntityRegistry.findGlobalUniqueEntityId());
|
|
EntityRegistry.registerModEntity(EntityTileDamagable.class, "ICBMFakeTile",
|
|
58, (Object) this, 50, 5, true);
|
|
|
|
GameRegistry.registerItem(itemAmmo, "icbm:itemAmmo");
|
|
GameRegistry.registerItem(itemUpgrade, "icbm:itemUpgrade");
|
|
|
|
ICBMTab.itemStack = new ItemStack(ICBMSentry.blockTurret);
|
|
|
|
ICBMSentry.proxy.preInit();
|
|
|
|
channel = NetworkRegistry.INSTANCE.newSimpleChannel("icbm_sentry");
|
|
int pktId = 0;
|
|
|
|
channel.registerMessage(PacketHandlerTurret.class, PacketTurret.class,
|
|
pktId++, Side.CLIENT);
|
|
}
|
|
|
|
@Mod.EventHandler
|
|
public void init(final FMLInitializationEvent event) {
|
|
MainBase.setModMetadata("ICBM|Sentry", ICBMSentry.metadata);
|
|
}
|
|
|
|
@Mod.EventHandler
|
|
@Override
|
|
public void postInit(final FMLPostInitializationEvent event) {
|
|
super.postInit(event);
|
|
GameRegistry.addRecipe((IRecipe) new ShapedOreRecipe(
|
|
new ItemStack(ICBMSentry.itemAmmo, 16, 0),
|
|
new Object[] { "T", "T", 'T', "ingotTin" }));
|
|
GameRegistry.addRecipe((IRecipe) new ShapedOreRecipe(
|
|
new ItemStack(ICBMSentry.itemAmmo, 16, 1),
|
|
new Object[] { "SBS", "SGS", "SSS", 'B', Items.iron_ingot, 'G',
|
|
Items.gunpowder, 'S', ICBMSentry.bulletShell.copy() }));
|
|
GameRegistry.addRecipe((IRecipe) new ShapedOreRecipe(
|
|
new ItemStack(ICBMSentry.itemAmmo, 2, 2),
|
|
new Object[] { "D", "B", "B", 'D', Items.diamond, 'B',
|
|
ICBMSentry.conventionalBullet }));
|
|
GameRegistry.addRecipe((IRecipe) new ShapedOreRecipe(
|
|
ICBMSentry.antimatterBullet,
|
|
new Object[] { "A", "B", 'A', "antimatterGram", 'B',
|
|
ICBMSentry.railgunBullet }));
|
|
GameRegistry.addRecipe((IRecipe) new ShapedOreRecipe(
|
|
ICBMSentry.blockPlatform,
|
|
new Object[] { "SPS", "CBC", "SAS", 'P', Blocks.piston, 'A',
|
|
UniversalRecipes.BATTERY, 'S', "plateSteel", 'C',
|
|
Blocks.chest, 'B', "calclavia:CIRCUIT_T1" }));
|
|
GameRegistry.addRecipe((IRecipe) new ShapedOreRecipe(
|
|
new ItemStack(ICBMSentry.blockTurret, 1, 0),
|
|
new Object[] { "SSS", "CS ", 'C', "calclavia:CIRCUIT_T1", 'S',
|
|
"ingotSteel" }));
|
|
GameRegistry.addRecipe((IRecipe) new ShapedOreRecipe(
|
|
new ItemStack(ICBMSentry.blockTurret, 1, 1),
|
|
new Object[] { "DDD", "CS ", "GS ", 'D', Items.diamond, 'S',
|
|
"plateSteel", 'C', "calclavia:CIRCUIT_T3", 'G',
|
|
new ItemStack(ICBMSentry.blockTurret, 1, 0) }));
|
|
GameRegistry.addRecipe((IRecipe) new ShapedOreRecipe(
|
|
new ItemStack(ICBMSentry.blockTurret, 1, 2),
|
|
new Object[] { "DDS", "CS ", "GS ", 'D', "plateBronze", 'S',
|
|
"plateSteel", 'C', "calclavia:CIRCUIT_T2", 'G',
|
|
new ItemStack(ICBMSentry.blockTurret, 1, 0) }));
|
|
GameRegistry.addRecipe((IRecipe) new ShapedOreRecipe(
|
|
new ItemStack(ICBMSentry.blockTurret, 1, 3),
|
|
new Object[] { "DDG", "CS ", "GS ", 'D', "plateBronze", 'S',
|
|
"plateSteel", 'C', "calclavia:CIRCUIT_T1", 'D',
|
|
Blocks.glass, 'G', Blocks.glass }));
|
|
GameRegistry.addRecipe((IRecipe) new ShapedOreRecipe(
|
|
new ItemStack(ICBMSentry.itemUpgrade, 3,
|
|
ItPaoTaiUpgrades.TurretUpgradeType.RANGE.ordinal()),
|
|
new Object[] { "B", "I", 'B', Items.bow, 'I', Items.iron_ingot }));
|
|
GameRegistry.addRecipe((IRecipe) new ShapedOreRecipe(
|
|
new ItemStack(ICBMSentry.itemUpgrade, 1,
|
|
ItPaoTaiUpgrades.TurretUpgradeType.COLLECTOR.ordinal()),
|
|
new Object[] { "BBB", " I ", "BBB", 'B', Items.bucket, 'I',
|
|
Items.bowl }));
|
|
CommandRegistry.register(new CommandAccess());
|
|
CommandRegistry.register(new CommandDestroy());
|
|
CommandRegistry.register(new CommandUser());
|
|
CommandRegistry.register(new CommandHelp());
|
|
CommandRegistry.register(new CommandGet());
|
|
CommandRegistry.register(new CommandTarget());
|
|
ICBMSentry.proxy.init();
|
|
}
|
|
|
|
public static boolean isProtected(final World world, final Vector3 diDian,
|
|
final String banFlag) {
|
|
return FlagRegistry.getModFlag("ModFlags") != null &&
|
|
(FlagRegistry.getModFlag("ModFlags")
|
|
.containsValue(world, ICBMFlags.FLAG_BAN_GLOBAL, "true", diDian) ||
|
|
FlagRegistry.getModFlag("ModFlags")
|
|
.containsValue(world, banFlag, "true", diDian));
|
|
}
|
|
|
|
@Mod.EventHandler
|
|
@Override
|
|
public void serverStarting(final FMLServerStartingEvent event) {
|
|
FlagRegistry.registerModFlag(
|
|
"ModFlags", new ModFlag(NBTFileLoader.loadData("ModFlags")));
|
|
final ICommandManager commandManager = FMLCommonHandler.instance()
|
|
.getMinecraftServerInstance()
|
|
.getCommandManager();
|
|
final ServerCommandManager serverCommandManager = (ServerCommandManager) commandManager;
|
|
serverCommandManager.registerCommand(
|
|
(ICommand) new CommandFlag(FlagRegistry.getModFlag("ModFlags")));
|
|
}
|
|
|
|
@SubscribeEvent
|
|
@Override
|
|
public void worldSave(final WorldEvent.Save evt) {
|
|
if (!((WorldEvent) evt).world.isRemote) {
|
|
NBTFileLoader.saveData("ModFlags",
|
|
FlagRegistry.getModFlag("ModFlags").getNBT());
|
|
}
|
|
}
|
|
|
|
@Override
|
|
protected String getChannel() {
|
|
return "ICBM";
|
|
}
|
|
|
|
static {
|
|
FLAG_RAILGUN = FlagRegistry.registerFlag("ban_railgun");
|
|
}
|
|
}
|