mffs/src/main/java/mffs/ModularForceFieldSystem.java

356 lines
18 KiB
Java

package mffs;
import calclavia.lib.UniversalRecipes;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.EventHandler;
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.GameRegistry;
import cpw.mods.fml.relauncher.Side;
import java.util.Arrays;
import java.util.logging.Logger;
import mffs.base.BlockBase;
import mffs.base.BlockMachine;
import mffs.base.ItemBase;
import mffs.base.PacketFxs;
import mffs.base.PacketFxsHandler;
import mffs.base.PacketTile;
import mffs.base.PacketTileHandler;
import mffs.block.BlockBiometricIdentifier;
import mffs.block.BlockCoercionDeriver;
import mffs.block.BlockForceField;
import mffs.block.BlockForceFieldProjector;
import mffs.block.BlockForceManipulator;
import mffs.block.BlockFortronCapacitor;
import mffs.block.BlockInterdictionMatrix;
import mffs.card.ItemCard;
import mffs.fortron.FortronHelper;
import mffs.fortron.FrequencyGrid;
import mffs.item.ItemRemoteController;
import mffs.item.card.ItemCardFrequency;
import mffs.item.card.ItemCardID;
import mffs.item.card.ItemCardInfinite;
import mffs.item.card.ItemCardLink;
import mffs.item.mode.ItemMode;
import mffs.item.mode.ItemModeCube;
import mffs.item.mode.ItemModeSphere;
import mffs.item.mode.ItemModeTube;
import mffs.item.module.ItemModule;
import mffs.item.module.interdiction.ItemModuleAntiFriendly;
import mffs.item.module.interdiction.ItemModuleAntiHostile;
import mffs.item.module.interdiction.ItemModuleAntiPersonnel;
import mffs.item.module.interdiction.ItemModuleConfiscate;
import mffs.item.module.interdiction.ItemModuleInterdictionMatrix;
import mffs.item.module.interdiction.ItemModuleWarn;
import mffs.item.module.projector.ItemModeCustom;
import mffs.item.module.projector.ItemModeCylinder;
import mffs.item.module.projector.ItemModePyramid;
import mffs.item.module.projector.ItemModuleDisintegration;
import mffs.item.module.projector.ItemModuleFusion;
import mffs.item.module.projector.ItemModuleManipulator;
import mffs.item.module.projector.ItemModuleShock;
import mffs.item.module.projector.ItemModuleSponge;
import mffs.item.module.projector.ItemModuleStablize;
import mffs.tileentity.TileEntityBiometricIdentifier;
import mffs.tileentity.TileEntityCoercionDeriver;
import mffs.tileentity.TileEntityForceField;
import mffs.tileentity.TileEntityForceFieldProjector;
import mffs.tileentity.TileEntityForceManipulator;
import mffs.tileentity.TileEntityFortronCapacitor;
import mffs.tileentity.TileEntityInterdictionMatrix;
import net.minecraft.block.Block;
import net.minecraft.item.Item;
import net.minecraft.util.DamageSource;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.fluids.Fluid;
import net.minecraftforge.fluids.FluidRegistry;
import universalelectricity.prefab.CustomDamageSource;
import universalelectricity.prefab.TranslationHelper;
@Mod(modid = "MFFS", name = "Modular Force Field System", version = "3.1.0",
useMetadata = true, dependencies = "required-after:basiccomponents;after:IC2")
public class ModularForceFieldSystem {
public static final String CHANNEL = "MFFS";
public static final String ID = "MFFS";
public static final String NAME = "Modular Force Field System";
public static final String PREFIX = "mffs:";
public static final String MAJOR_VERSION = "3";
public static final String MINOR_VERSION = "1";
public static final String REVISION_VERSION = "0";
public static final String VERSION = "3.1.0";
public static final String BUILD_VERSION = "175";
@Mod.Instance("MFFS") public static ModularForceFieldSystem instance;
@Mod.Metadata("MFFS") public static ModMetadata metadata;
@SidedProxy(clientSide = "mffs.ClientProxy", serverSide = "mffs.CommonProxy")
public static CommonProxy proxy;
public static final Logger LOGGER;
public static final String RESOURCE_DIRECTORY = "/mods/mffs/";
public static final String LANGUAGE_DIRECTORY = "/mods/mffs/languages/";
public static final String TEXTURE_DIRECTORY = "/mods/mffs/textures/";
public static final String BLOCK_DIRECTORY = "/mods/mffs/textures/blocks/";
public static final String ITEM_DIRECTORY = "/mods/mffs/textures/items/";
public static final String MODEL_DIRECTORY = "/mods/mffs/textures/models/";
public static final String GUI_DIRECTORY = "/mods/mffs/textures/gui/";
public static final String GUI_BASE_DIRECTORY =
"/mods/mffs/textures/gui/gui_base.png";
public static final String GUI_COMPONENTS =
"/mods/mffs/textures/gui/gui_components.png";
public static final String GUI_BUTTON =
"/mods/mffs/textures/gui/gui_button.png";
public static BlockMachine blockCoercionDeriver;
public static BlockMachine blockFortronCapacitor;
public static BlockMachine blockForceFieldProjector;
public static BlockMachine blockBiometricIdentifier;
public static BlockMachine blockInterdictionMatrix;
public static BlockMachine blockForceManipulator;
public static BlockBase blockForceField;
public static Item itemRemoteController;
public static Item itemFocusMatrix;
public static ItemCard itemCardBlank;
public static ItemCard itemCardInfinite;
public static ItemCard itemCardFrequency;
public static ItemCard itemCardID;
public static ItemCard itemCardLink;
public static ItemMode itemModeCube;
public static ItemMode itemModeSphere;
public static ItemMode itemModeTube;
public static ItemMode itemModeCylinder;
public static ItemMode itemModePyramid;
public static ItemMode itemModeCustom;
public static ItemModule itemModuleSpeed;
public static ItemModule itemModuleCapacity;
public static ItemModule itemModuleTranslate;
public static ItemModule itemModuleScale;
public static ItemModule itemModuleRotate;
public static ItemModule itemModuleCollection;
public static ItemModule itemModuleInvert;
public static ItemModule itemModuleSilence;
public static ItemModule itemModuleFusion;
public static ItemModule itemModuleManipulator;
public static ItemModule itemModuleCamouflage;
public static ItemModule itemModuleDisintegration;
public static ItemModule itemModuleShock;
public static ItemModule itemModuleGlow;
public static ItemModule itemModuleSponge;
public static ItemModule itemModuleStablize;
public static ItemModule itemModuleAntiHostile;
public static ItemModule itemModuleAntiFriendly;
public static ItemModule itemModuleAntiPersonnel;
public static ItemModule itemModuleConfiscate;
public static ItemModule itemModuleWarn;
public static ItemModule itemModuleBlockAccess;
public static ItemModule itemModuleBlockAlter;
public static ItemModule itemModuleAntiSpawn;
public static DamageSource damagefieldShock;
public static SimpleNetworkWrapper channel;
@EventHandler
public void preInit(final FMLPreInitializationEvent event) {
NetworkRegistry.INSTANCE.registerGuiHandler(
(Object)this, (IGuiHandler)ModularForceFieldSystem.proxy);
MinecraftForge.EVENT_BUS.register((Object) new SubscribeEventHandler());
Settings.load();
Settings.CONFIGURATION.load();
ModularForceFieldSystem.blockForceField = new BlockForceField();
ModularForceFieldSystem.blockCoercionDeriver = new BlockCoercionDeriver();
ModularForceFieldSystem.blockFortronCapacitor = new BlockFortronCapacitor();
ModularForceFieldSystem.blockForceFieldProjector =
new BlockForceFieldProjector();
ModularForceFieldSystem.blockBiometricIdentifier =
new BlockBiometricIdentifier();
ModularForceFieldSystem.blockInterdictionMatrix =
new BlockInterdictionMatrix();
ModularForceFieldSystem.blockForceManipulator = new BlockForceManipulator();
ModularForceFieldSystem.itemRemoteController = new ItemRemoteController();
ModularForceFieldSystem.itemFocusMatrix = new ItemBase("focusMatrix");
ModularForceFieldSystem.itemModeCube =
new ItemModeCube(Settings.getNextItemID());
ModularForceFieldSystem.itemModeSphere =
new ItemModeSphere(Settings.getNextItemID());
ModularForceFieldSystem.itemModeTube = new ItemModeTube();
ModularForceFieldSystem.itemModePyramid = new ItemModePyramid();
ModularForceFieldSystem.itemModeCylinder = new ItemModeCylinder();
ModularForceFieldSystem.itemModeCustom = new ItemModeCustom();
ModularForceFieldSystem.itemModuleTranslate =
new ItemModule("moduleTranslate").setCost(1.6f);
ModularForceFieldSystem.itemModuleScale =
new ItemModule("moduleScale").setCost(1.2f);
ModularForceFieldSystem.itemModuleRotate =
new ItemModule("moduleRotate").setCost(0.1f);
ModularForceFieldSystem.itemModuleSpeed =
new ItemModule("moduleSpeed").setCost(1.0f);
ModularForceFieldSystem.itemModuleCapacity =
new ItemModule("moduleCapacity").setCost(0.5f);
ModularForceFieldSystem.itemModuleFusion = new ItemModuleFusion();
ModularForceFieldSystem.itemModuleManipulator = new ItemModuleManipulator();
ModularForceFieldSystem.itemModuleCamouflage =
new ItemModule("moduleCamouflage").setCost(1.5f).setMaxStackSize(1);
ModularForceFieldSystem.itemModuleDisintegration =
new ItemModuleDisintegration();
ModularForceFieldSystem.itemModuleShock = new ItemModuleShock();
ModularForceFieldSystem.itemModuleGlow = new ItemModule("moduleGlow");
ModularForceFieldSystem.itemModuleSponge = new ItemModuleSponge();
ModularForceFieldSystem.itemModuleStablize = new ItemModuleStablize();
ModularForceFieldSystem.itemModuleAntiFriendly =
new ItemModuleAntiFriendly();
ModularForceFieldSystem.itemModuleAntiHostile = new ItemModuleAntiHostile();
ModularForceFieldSystem.itemModuleAntiPersonnel =
new ItemModuleAntiPersonnel();
ModularForceFieldSystem.itemModuleConfiscate = new ItemModuleConfiscate();
ModularForceFieldSystem.itemModuleWarn = new ItemModuleWarn();
ModularForceFieldSystem.itemModuleBlockAccess =
new ItemModuleInterdictionMatrix("moduleBlockAccess").setCost(10.0f);
ModularForceFieldSystem.itemModuleBlockAlter =
new ItemModuleInterdictionMatrix("moduleBlockAlter").setCost(15.0f);
ModularForceFieldSystem.itemModuleAntiSpawn =
new ItemModuleInterdictionMatrix("moduleAntiSpawn").setCost(10.0f);
ModularForceFieldSystem.itemCardBlank = new ItemCard("cardBlank");
ModularForceFieldSystem.itemCardFrequency = new ItemCardFrequency();
ModularForceFieldSystem.itemCardLink = new ItemCardLink();
ModularForceFieldSystem.itemCardID = new ItemCardID();
ModularForceFieldSystem.itemCardInfinite = new ItemCardInfinite();
FortronHelper.FLUID_FORTRON = new Fluid("fortron");
ModularForceFieldSystem.itemModuleCollection =
new ItemModule("moduleCollection").setMaxStackSize(1).setCost(15.0f);
ModularForceFieldSystem.itemModuleInvert =
new ItemModule("moduleInvert").setMaxStackSize(1).setCost(15.0f);
ModularForceFieldSystem.itemModuleSilence =
new ItemModule("moduleSilence").setMaxStackSize(1).setCost(1.0f);
Settings.CONFIGURATION.save();
GameRegistry.registerBlock((Block)ModularForceFieldSystem.blockForceField,
"blockForceField");
GameRegistry.registerBlock(
(Block)ModularForceFieldSystem.blockCoercionDeriver,
"blockCoercionDeriver");
GameRegistry.registerBlock(
(Block)ModularForceFieldSystem.blockFortronCapacitor,
"blockFortronCapacitor");
GameRegistry.registerBlock(
(Block)ModularForceFieldSystem.blockForceFieldProjector,
"blockForceFieldProjector");
GameRegistry.registerBlock(
(Block)ModularForceFieldSystem.blockBiometricIdentifier,
"blockBiometricIdentifier");
GameRegistry.registerBlock(
(Block)ModularForceFieldSystem.blockInterdictionMatrix,
"blockInterdictionMatrix");
GameRegistry.registerBlock(
(Block)ModularForceFieldSystem.blockForceManipulator,
"blockForceManipulator"
);
GameRegistry.registerTileEntity(TileEntityForceField.class,
"tileForceField");
GameRegistry.registerTileEntity(TileEntityCoercionDeriver.class,
"tileCoercionDeriver");
GameRegistry.registerTileEntity(TileEntityFortronCapacitor.class,
"tileFortronCapacitor");
GameRegistry.registerTileEntity(TileEntityForceFieldProjector.class,
"tileForceFieldProjector");
GameRegistry.registerTileEntity(TileEntityBiometricIdentifier.class,
"tileBiometricIdentifier");
GameRegistry.registerTileEntity(TileEntityInterdictionMatrix.class,
"tileInterdictionMatrix");
GameRegistry.registerTileEntity(TileEntityForceManipulator.class,
"tileForceManipulator");
ModularForceFieldSystem.proxy.preInit();
FluidRegistry.registerFluid(FortronHelper.FLUID_FORTRON);
GameRegistry.registerItem(itemRemoteController, "itemRemoteController");
GameRegistry.registerItem(itemFocusMatrix, "itemFocusMatix");
GameRegistry.registerItem(itemCardBlank, "itemCardBlank");
GameRegistry.registerItem(itemCardInfinite, "itemCardInfinite");
GameRegistry.registerItem(itemCardFrequency, "itemCardFrequency");
GameRegistry.registerItem(itemCardID, "itemCardID");
GameRegistry.registerItem(itemCardLink, "itemCardLink");
GameRegistry.registerItem(itemModeCube, "itemModeCube");
GameRegistry.registerItem(itemModeSphere, "itemModeSphere");
GameRegistry.registerItem(itemModeTube, "itemModeTube");
GameRegistry.registerItem(itemModeCylinder, "itemModeCylinder");
GameRegistry.registerItem(itemModePyramid, "itemModePyramid");
GameRegistry.registerItem(itemModeCustom, "itemModeCustom");
GameRegistry.registerItem(itemModuleSpeed, "itemModuleSpeed");
GameRegistry.registerItem(itemModuleCapacity, "itemModuleCapacity");
GameRegistry.registerItem(itemModuleTranslate, "itemModuleTranslate");
GameRegistry.registerItem(itemModuleScale, "itemModuleScale");
GameRegistry.registerItem(itemModuleRotate, "itemModuleRotate");
GameRegistry.registerItem(itemModuleCollection, "itemModuleCollection");
GameRegistry.registerItem(itemModuleInvert, "itemModuleInvert");
GameRegistry.registerItem(itemModuleSilence, "itemModuleSilence");
GameRegistry.registerItem(itemModuleFusion, "itemModuleFusion");
GameRegistry.registerItem(itemModuleManipulator, "itemModuleManipulator");
GameRegistry.registerItem(itemModuleCamouflage, "itemModuleCamouflage");
GameRegistry.registerItem(itemModuleDisintegration,
"itemModuleDisintegration");
GameRegistry.registerItem(itemModuleShock, "itemModuleShock");
GameRegistry.registerItem(itemModuleGlow, "itemModuleGlow");
GameRegistry.registerItem(itemModuleSponge, "itemModuleSponge");
GameRegistry.registerItem(itemModuleStablize, "itemModuleStablize");
GameRegistry.registerItem(itemModuleAntiHostile, "itemModuleAntiHostile");
GameRegistry.registerItem(itemModuleAntiFriendly, "itemModuleAntiFriendly");
GameRegistry.registerItem(itemModuleAntiPersonnel,
"itemModuleAntiPersonnel");
GameRegistry.registerItem(itemModuleConfiscate, "itemModuleConfiscate");
GameRegistry.registerItem(itemModuleWarn, "itemModuleWarn");
GameRegistry.registerItem(itemModuleBlockAccess, "itemModuleBlockAccess");
GameRegistry.registerItem(itemModuleBlockAlter, "itemModuleBlockAlter");
GameRegistry.registerItem(itemModuleAntiSpawn, "itemModuleAntiSpawn");
channel =
NetworkRegistry.INSTANCE.newSimpleChannel("ModularForceFieldSystem");
int pkgDiscriminator = 0;
channel.registerMessage(PacketTileHandler.class, PacketTile.class,
pkgDiscriminator++, Side.SERVER);
channel.registerMessage(PacketFxsHandler.class, PacketFxs.class,
pkgDiscriminator++, Side.CLIENT);
}
@EventHandler
public void load(final FMLInitializationEvent evt) {
ModularForceFieldSystem.LOGGER.fine(
"Language(s) Loaded: " +
TranslationHelper.loadLanguages(
"/assets/mffs/lang/", new String[] {"en_US", "zh_CN", "de_DE"}));
ModularForceFieldSystem.metadata.modId = "MFFS";
ModularForceFieldSystem.metadata.name = "Modular Force Field System";
ModularForceFieldSystem.metadata.description =
"Modular Force Field System is a mod that adds force fields, high tech machinery and defensive measures to Minecraft.";
ModularForceFieldSystem.metadata.url =
"http://www.universalelectricity.com/mffs/";
ModularForceFieldSystem.metadata.logoFile = "/mffs_logo.png";
ModularForceFieldSystem.metadata.version = "3.1.0.175";
ModularForceFieldSystem.metadata.authorList = Arrays.asList("Calclavia");
ModularForceFieldSystem.metadata.credits = "Please visit the website.";
ModularForceFieldSystem.metadata.autogenerated = false;
}
@EventHandler
public void postInit(final FMLPostInitializationEvent evt) {
UniversalRecipes.init();
Recipes.registerRecipes();
ModularForceFieldSystem.proxy.init();
}
@EventHandler
public void serverStarting(final FMLServerStartingEvent evt) {
FrequencyGrid.reinitiate();
}
static {
LOGGER = Logger.getLogger("Modular Force Field System");
ModularForceFieldSystem.damagefieldShock =
new CustomDamageSource("fieldShock").setDamageBypassesArmor();
}
}