buildcraft/common/buildcraft/BuildCraftSilicon.java

334 lines
13 KiB
Java
Raw Normal View History

2012-05-09 22:43:05 +02:00
/**
* Copyright (c) 2011-2017, SpaceToad and the BuildCraft Team
2014-02-01 17:19:07 +01:00
* http://www.mod-buildcraft.com
2015-09-20 11:20:30 +02:00
* <p/>
2014-02-01 17:19:07 +01:00
* BuildCraft is distributed under the terms of the Minecraft Mod Public
* License 1.0, or MMPL. Please check the contents of the license located in
* http://www.mod-buildcraft.com/MMPL-1.0.txt
2012-05-09 22:43:05 +02:00
*/
2012-07-25 12:45:15 +02:00
package buildcraft;
import net.minecraft.block.Block;
import net.minecraft.block.BlockDispenser;
import net.minecraft.init.Blocks;
import net.minecraft.init.Items;
2014-05-26 09:34:28 +02:00
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
2015-03-03 21:47:33 +01:00
import net.minecraft.stats.Achievement;
2015-09-20 11:20:30 +02:00
import cpw.mods.fml.common.Loader;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Optional;
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.FMLPreInitializationEvent;
import cpw.mods.fml.common.network.NetworkRegistry;
2015-04-23 11:47:04 +02:00
import cpw.mods.fml.common.registry.EntityRegistry;
2014-10-20 12:38:26 +02:00
import cpw.mods.fml.common.registry.GameRegistry;
2014-05-26 09:34:28 +02:00
import net.minecraftforge.oredict.OreDictionary;
2015-05-07 19:49:53 +02:00
import buildcraft.api.blueprints.BuilderAPI;
import buildcraft.api.recipes.BuildcraftRecipeRegistry;
import buildcraft.core.BCRegistry;
2015-03-04 15:49:21 +01:00
import buildcraft.core.CompatHooks;
2012-07-25 12:45:15 +02:00
import buildcraft.core.DefaultProps;
2013-09-12 15:27:11 +02:00
import buildcraft.core.InterModComms;
2012-09-08 21:46:17 +02:00
import buildcraft.core.Version;
2015-04-01 08:13:06 +02:00
import buildcraft.core.builders.schematics.SchematicRotateMeta;
2015-04-02 14:46:57 +02:00
import buildcraft.core.config.ConfigManager;
import buildcraft.core.lib.items.ItemBuildCraft;
import buildcraft.core.lib.network.ChannelHandler;
2015-04-23 11:47:04 +02:00
import buildcraft.core.network.EntityIds;
2015-02-04 04:03:17 +01:00
import buildcraft.silicon.BlockLaser;
import buildcraft.silicon.BlockLaserTable;
import buildcraft.silicon.BlockPackager;
2015-04-23 11:47:04 +02:00
import buildcraft.silicon.EntityPackage;
2015-02-04 04:03:17 +01:00
import buildcraft.silicon.ItemLaserTable;
import buildcraft.silicon.ItemPackage;
2015-02-04 04:03:17 +01:00
import buildcraft.silicon.ItemRedstoneChipset;
import buildcraft.silicon.ItemRedstoneChipset.Chipset;
import buildcraft.silicon.SiliconGuiHandler;
2015-02-04 04:03:17 +01:00
import buildcraft.silicon.SiliconProxy;
import buildcraft.silicon.TileAdvancedCraftingTable;
import buildcraft.silicon.TileAssemblyTable;
import buildcraft.silicon.TileChargingTable;
import buildcraft.silicon.TileIntegrationTable;
import buildcraft.silicon.TileLaser;
import buildcraft.silicon.TilePackager;
2015-02-24 14:39:23 +01:00
import buildcraft.silicon.TileProgrammingTable;
import buildcraft.silicon.TileStampingTable;
2015-02-04 04:03:17 +01:00
import buildcraft.silicon.network.PacketHandlerSilicon;
import buildcraft.transport.stripes.StripesHandlerDispenser;
@Mod(name = "BuildCraft Silicon", version = Version.VERSION, useMetadata = false, modid = "BuildCraft|Silicon", dependencies = DefaultProps.DEPENDENCY_CORE)
public class BuildCraftSilicon extends BuildCraftMod {
@Mod.Instance("BuildCraft|Silicon")
public static BuildCraftSilicon instance;
public static ItemRedstoneChipset redstoneChipset;
public static ItemPackage packageItem;
2012-05-09 22:43:05 +02:00
public static BlockLaser laserBlock;
public static BlockLaserTable assemblyTableBlock;
public static BlockPackager packagerBlock;
2014-05-26 09:34:28 +02:00
public static Item redstoneCrystal;
2015-03-03 21:47:33 +01:00
public static Achievement timeForSomeLogicAchievement;
public static Achievement tinglyLaserAchievement;
public static float chipsetCostMultiplier = 1.0F;
@Mod.EventHandler
2014-03-01 17:35:32 +01:00
public void preInit(FMLPreInitializationEvent evt) {
2015-04-02 14:46:57 +02:00
BuildCraftCore.mainConfigManager.register("power.chipsetCostMultiplier", 1.0D, "The cost multiplier for Chipsets", ConfigManager.RestartRequirement.GAME);
2015-03-04 15:49:21 +01:00
BuildCraftCore.mainConfiguration.save();
2015-04-02 14:46:57 +02:00
chipsetCostMultiplier = (float) BuildCraftCore.mainConfigManager.get("power.chipsetCostMultiplier").getDouble();
if (BuildCraftCore.mainConfiguration.hasChanged()) {
BuildCraftCore.mainConfiguration.save();
}
2012-05-09 22:43:05 +02:00
laserBlock = (BlockLaser) CompatHooks.INSTANCE.getBlock(BlockLaser.class);
2014-02-21 06:45:36 +01:00
laserBlock.setBlockName("laserBlock");
BCRegistry.INSTANCE.registerBlock(laserBlock, false);
2012-05-09 22:43:05 +02:00
assemblyTableBlock = (BlockLaserTable) CompatHooks.INSTANCE.getBlock(BlockLaserTable.class);
2014-10-19 10:24:27 +02:00
assemblyTableBlock.setBlockName("laserTableBlock");
BCRegistry.INSTANCE.registerBlock(assemblyTableBlock, ItemLaserTable.class, false);
packagerBlock = (BlockPackager) CompatHooks.INSTANCE.getBlock(BlockPackager.class);
packagerBlock.setBlockName("packagerBlock");
BCRegistry.INSTANCE.registerBlock(packagerBlock, false);
2014-02-08 14:47:31 +01:00
redstoneChipset = new ItemRedstoneChipset();
2013-03-07 00:22:17 +01:00
redstoneChipset.setUnlocalizedName("redstoneChipset");
BCRegistry.INSTANCE.registerItem(redstoneChipset, false);
redstoneChipset.registerItemStacks();
2014-05-26 09:34:28 +02:00
packageItem = new ItemPackage();
packageItem.setUnlocalizedName("package");
BCRegistry.INSTANCE.registerItem(packageItem, false);
2014-05-26 09:34:28 +02:00
redstoneCrystal = (new ItemBuildCraft()).setUnlocalizedName("redstoneCrystal");
if (BCRegistry.INSTANCE.registerItem(redstoneCrystal, false)) {
OreDictionary.registerOre("redstoneCrystal", new ItemStack(redstoneCrystal)); // Deprecated
OreDictionary.registerOre("crystalRedstone", new ItemStack(redstoneCrystal));
}
2015-06-05 09:03:47 +02:00
2015-04-23 11:47:04 +02:00
EntityRegistry.registerModEntity(EntityPackage.class, "bcPackageThrowable", EntityIds.PACKAGE_THROWABLE, instance, 48, 10, true);
}
@Mod.EventHandler
2013-07-24 10:23:23 +02:00
public void init(FMLInitializationEvent evt) {
2014-08-15 10:55:28 +02:00
channels = NetworkRegistry.INSTANCE
.newChannel
2015-09-20 11:20:30 +02:00
(DefaultProps.NET_CHANNEL_NAME + "-SILICON", new ChannelHandler(), new PacketHandlerSilicon());
2014-03-01 17:35:32 +01:00
NetworkRegistry.INSTANCE.registerGuiHandler(instance, new SiliconGuiHandler());
BCRegistry.INSTANCE.registerTileEntity(TileLaser.class, "net.minecraft.src.buildcraft.factory.TileLaser");
BCRegistry.INSTANCE.registerTileEntity(TileAssemblyTable.class,
2014-08-15 10:55:28 +02:00
"net.minecraft.src.buildcraft.factory.TileAssemblyTable");
BCRegistry.INSTANCE.registerTileEntity(TileAdvancedCraftingTable.class,
2014-08-15 10:55:28 +02:00
"net.minecraft.src.buildcraft.factory.TileAssemblyAdvancedWorkbench");
BCRegistry.INSTANCE.registerTileEntity(TileIntegrationTable.class,
2014-08-15 10:55:28 +02:00
"net.minecraft.src.buildcraft.factory.TileIntegrationTable");
BCRegistry.INSTANCE.registerTileEntity(TileChargingTable.class,
"net.minecraft.src.buildcraft.factory.TileChargingTable");
BCRegistry.INSTANCE.registerTileEntity(TileProgrammingTable.class,
2015-02-24 14:39:23 +01:00
"net.minecraft.src.buildcraft.factory.TileProgrammingTable");
BCRegistry.INSTANCE.registerTileEntity(TilePackager.class, "buildcraft.TilePackager");
BCRegistry.INSTANCE.registerTileEntity(TileStampingTable.class, "buildcraft.TileStampingTable");
2013-07-24 10:23:23 +02:00
2015-06-14 09:12:47 +02:00
BuilderAPI.schematicRegistry.registerSchematicBlock(laserBlock, SchematicRotateMeta.class, new int[]{2, 5, 3, 4}, true);
2013-07-24 10:23:23 +02:00
2015-03-03 21:47:33 +01:00
timeForSomeLogicAchievement = BuildCraftCore.achievementManager.registerAchievement(new Achievement("achievement.timeForSomeLogic", "timeForSomeLogicAchievement", 9, -2, assemblyTableBlock, BuildCraftCore.diamondGearAchievement));
tinglyLaserAchievement = BuildCraftCore.achievementManager.registerAchievement(new Achievement("achievement.tinglyLaser", "tinglyLaserAchievement", 11, -2, laserBlock, timeForSomeLogicAchievement));
2013-07-24 10:23:23 +02:00
if (BuildCraftCore.loadDefaultRecipes) {
loadRecipes();
}
BlockDispenser.dispenseBehaviorRegistry.putObject(packageItem, new ItemPackage.DispenseBehaviour());
if (Loader.isModLoaded("BuildCraft|Transport")) {
initTransport();
}
2013-07-24 10:23:23 +02:00
SiliconProxy.proxy.registerRenderers();
}
@Optional.Method(modid = "BuildCraft|Transport")
private void initTransport() {
StripesHandlerDispenser.items.add(packageItem);
}
public static void loadRecipes() {
// TABLES
BCRegistry.INSTANCE.addCraftingRecipe(new ItemStack(laserBlock),
"ORR",
"DDR",
"ORR",
2014-02-08 14:47:31 +01:00
'O', Blocks.obsidian,
2014-11-11 23:14:16 +01:00
'R', "dustRedstone",
'D', "gemDiamond");
BCRegistry.INSTANCE.addCraftingRecipe(new ItemStack(laserBlock),
"RRO",
"RDD",
"RRO",
'O', Blocks.obsidian,
'R', "dustRedstone",
'D', "gemDiamond");
BCRegistry.INSTANCE.addCraftingRecipe(new ItemStack(laserBlock),
"RRR",
"RDR",
"ODO",
'O', Blocks.obsidian,
'R', "dustRedstone",
'D', "gemDiamond");
BCRegistry.INSTANCE.addCraftingRecipe(new ItemStack(laserBlock),
"ODO",
"RDR",
"RRR",
'O', Blocks.obsidian,
'R', "dustRedstone",
'D', "gemDiamond");
BCRegistry.INSTANCE.addCraftingRecipe(new ItemStack(assemblyTableBlock, 1, 0),
"ODO",
"ORO",
"OGO",
2014-02-08 14:47:31 +01:00
'O', Blocks.obsidian,
2014-11-11 23:14:16 +01:00
'R', "dustRedstone",
'D', "gemDiamond",
'G', "gearDiamond");
BCRegistry.INSTANCE.addCraftingRecipe(new ItemStack(assemblyTableBlock, 1, 1),
"OWO",
"OCO",
"ORO",
2014-02-08 14:47:31 +01:00
'O', Blocks.obsidian,
'W', Blocks.crafting_table,
'C', Blocks.chest,
'R', new ItemStack(redstoneChipset, 1, 0));
BCRegistry.INSTANCE.addCraftingRecipe(new ItemStack(assemblyTableBlock, 1, 2),
"OIO",
"OCO",
"OGO",
2014-02-08 14:47:31 +01:00
'O', Blocks.obsidian,
'I', "ingotGold",
'C', new ItemStack(redstoneChipset, 1, 0),
2014-11-11 23:14:16 +01:00
'G', "gearDiamond");
BCRegistry.INSTANCE.addCraftingRecipe(new ItemStack(assemblyTableBlock, 1, 3),
"OIO",
"OCO",
"OGO",
'O', Blocks.obsidian,
'I', "dustRedstone",
'C', new ItemStack(redstoneChipset, 1, 0),
'G', "gearGold");
BCRegistry.INSTANCE.addCraftingRecipe(new ItemStack(assemblyTableBlock, 1, 4),
2015-02-24 14:39:23 +01:00
"OCO",
"ORO",
2015-02-24 14:39:23 +01:00
"OGO",
'O', Blocks.obsidian,
'R', new ItemStack(redstoneChipset, 1, 0),
'C', "gemEmerald",
2015-02-24 14:39:23 +01:00
'G', "gearDiamond");
BCRegistry.INSTANCE.addCraftingRecipe(new ItemStack(assemblyTableBlock, 1, 5),
"OWO",
"ORO",
"OGO",
'O', Blocks.obsidian,
'W', "craftingTableWood",
'G', "gearGold",
'R', new ItemStack(redstoneChipset, 1, 0));
BCRegistry.INSTANCE.addCraftingRecipe(new ItemStack(packagerBlock, 1, 0),
" I ",
"ICI",
" P ",
'I', "ingotIron",
'C', "craftingTableWood",
'P', Blocks.piston);
// CHIPSETS
BuildcraftRecipeRegistry.assemblyTable.addRecipe("buildcraft:redstoneChipset", Math.round(100000 * chipsetCostMultiplier), Chipset.RED.getStack(),
2014-11-11 23:14:16 +01:00
"dustRedstone");
BuildcraftRecipeRegistry.assemblyTable.addRecipe("buildcraft:ironChipset", Math.round(200000 * chipsetCostMultiplier), Chipset.IRON.getStack(),
2014-11-11 23:14:16 +01:00
"dustRedstone", "ingotIron");
BuildcraftRecipeRegistry.assemblyTable.addRecipe("buildcraft:goldChipset", Math.round(400000 * chipsetCostMultiplier), Chipset.GOLD.getStack(),
2014-11-11 23:14:16 +01:00
"dustRedstone", "ingotGold");
BuildcraftRecipeRegistry.assemblyTable.addRecipe("buildcraft:diamondChipset", Math.round(800000 * chipsetCostMultiplier),
2014-11-11 23:14:16 +01:00
Chipset.DIAMOND.getStack(), "dustRedstone", "gemDiamond");
2015-09-20 11:20:30 +02:00
BuildcraftRecipeRegistry.assemblyTable.addRecipe("buildcraft:emeraldChipset", Math.round(1200000 * chipsetCostMultiplier),
2015-06-14 09:12:47 +02:00
Chipset.EMERALD.getStack(), "dustRedstone", "gemEmerald");
BuildcraftRecipeRegistry.assemblyTable.addRecipe("buildcraft:pulsatingChipset", Math.round(400000 * chipsetCostMultiplier),
2014-11-11 23:14:16 +01:00
Chipset.PULSATING.getStack(2), "dustRedstone", Items.ender_pearl);
BuildcraftRecipeRegistry.assemblyTable.addRecipe("buildcraft:quartzChipset", Math.round(600000 * chipsetCostMultiplier), Chipset.QUARTZ.getStack(),
2014-11-11 23:14:16 +01:00
"dustRedstone", "gemQuartz");
BuildcraftRecipeRegistry.assemblyTable.addRecipe("buildcraft:compChipset", Math.round(600000 * chipsetCostMultiplier), Chipset.COMP.getStack(),
2014-11-11 23:14:16 +01:00
"dustRedstone", Items.comparator);
// ROBOTS AND BOARDS
2014-09-03 19:22:15 +02:00
BuildcraftRecipeRegistry.assemblyTable.addRecipe("buildcraft:redstoneCrystal", 10000000, new ItemStack(
redstoneCrystal), new ItemStack(
Blocks.redstone_block));
2012-05-09 22:43:05 +02:00
}
2013-12-02 06:57:31 +01:00
@Mod.EventHandler
2015-06-14 09:12:47 +02:00
public void processIMCRequests(FMLInterModComms.IMCEvent event) {
2013-12-02 06:57:31 +01:00
InterModComms.processIMC(event);
}
@Mod.EventHandler
public void whiteListAppliedEnergetics(FMLInitializationEvent event) {
FMLInterModComms.sendMessage("appliedenergistics2", "whitelist-spatial",
TileLaser.class.getCanonicalName());
FMLInterModComms.sendMessage("appliedenergistics2", "whitelist-spatial",
TileAssemblyTable.class.getCanonicalName());
FMLInterModComms.sendMessage("appliedenergistics2", "whitelist-spatial",
TileAdvancedCraftingTable.class.getCanonicalName());
FMLInterModComms.sendMessage("appliedenergistics2", "whitelist-spatial",
TileIntegrationTable.class.getCanonicalName());
}
@Mod.EventHandler
2014-10-19 10:24:27 +02:00
public void remap(FMLMissingMappingsEvent event) {
2015-09-20 11:20:30 +02:00
for (FMLMissingMappingsEvent.MissingMapping mapping : event.get()) {
2014-10-19 12:21:45 +02:00
if (mapping.name.equals("BuildCraft|Silicon:null")) {
2014-10-20 00:09:49 +02:00
if (mapping.type == GameRegistry.Type.ITEM) {
mapping.remap(Item.getItemFromBlock(assemblyTableBlock));
2014-10-20 00:09:49 +02:00
} else {
mapping.remap(assemblyTableBlock);
2014-10-20 00:09:49 +02:00
}
2014-10-19 12:21:45 +02:00
}
// Silicon -> Robotics migration code
if (mapping.type == GameRegistry.Type.ITEM) {
if (mapping.name.equals("BuildCraft|Silicon:robot")) {
mapping.remap((Item) Item.itemRegistry.getObject("BuildCraft|Robotics:robot"));
} else if (mapping.name.equals("BuildCraft|Silicon:redstone_board")) {
mapping.remap((Item) Item.itemRegistry.getObject("BuildCraft|Robotics:redstone_board"));
} else if (mapping.name.equals("BuildCraft|Silicon:requester")) {
mapping.remap((Item) Item.itemRegistry.getObject("BuildCraft|Robotics:requester"));
} else if (mapping.name.equals("BuildCraft|Silicon:zonePlan")) {
mapping.remap((Item) Item.itemRegistry.getObject("BuildCraft|Robotics:zonePlan"));
}
} else if (mapping.type == GameRegistry.Type.BLOCK) {
if (mapping.name.equals("BuildCraft|Silicon:requester")) {
mapping.remap(Block.getBlockFromName("BuildCraft|Robotics:requester"));
} else if (mapping.name.equals("BuildCraft|Silicon:zonePlan")) {
mapping.remap(Block.getBlockFromName("BuildCraft|Robotics:zonePlan"));
}
}
}
}
2012-05-09 22:43:05 +02:00
}