3 import net.minecraft.src.Block;
\r
4 import net.minecraft.src.CreativeTabs;
\r
5 import net.minecraft.src.Item;
\r
6 import net.minecraft.src.ItemStack;
\r
7 import net.minecraft.src.Material;
\r
8 import net.minecraftforge.common.Configuration;
\r
9 import net.minecraftforge.common.Property;
\r
10 import chemicraft.block.BlockChemicalCombinationTable;
\r
11 import chemicraft.block.BlockChemicalCraftingTable;
\r
12 import chemicraft.block.BlockDecompositionTable;
\r
13 import chemicraft.block.BlockToolAndWeaponCraftingTable;
\r
14 import chemicraft.debug.CommandDeleteItem;
\r
15 import chemicraft.debug.CommandSetTile;
\r
16 import chemicraft.debug.CompoundHandlerTest;
\r
17 import chemicraft.item.ItemAtomGrenade;
\r
18 import chemicraft.item.ItemAtoms;
\r
19 import chemicraft.item.ItemCompounds;
\r
20 import chemicraft.item.ItemGasCollectingBottle;
\r
21 import chemicraft.system.CommonProxy;
\r
22 import chemicraft.system.PacketHandler;
\r
23 import chemicraft.tileentity.TileEntityChemicalCombinationTable;
\r
24 import chemicraft.tileentity.TileEntityChemicalCraftingTable;
\r
25 import chemicraft.tileentity.TileEntityDecompositionTable;
\r
26 import chemicraft.tileentity.TileEntityToolAndWeaponCraftingTable;
\r
27 import chemicraft.util.Auxiliary;
\r
28 import chemicraft.util.Auxiliary.ArrayAuxiliary;
\r
29 import chemicraft.util.Auxiliary.NameAuxiliary;
\r
30 import chemicraft.util.CreativeTabAtoms;
\r
31 import chemicraft.util.NBTRecipeGrenade;
\r
32 import cpw.mods.fml.common.Mod;
\r
33 import cpw.mods.fml.common.SidedProxy;
\r
34 import cpw.mods.fml.common.event.FMLPostInitializationEvent;
\r
35 import cpw.mods.fml.common.event.FMLPreInitializationEvent;
\r
36 import cpw.mods.fml.common.event.FMLServerStartingEvent;
\r
37 import cpw.mods.fml.common.network.NetworkMod;
\r
38 import cpw.mods.fml.common.network.NetworkRegistry;
\r
39 import cpw.mods.fml.common.registry.GameRegistry;
\r
47 @Mod(modid = "chemiCraft", name = "ChemiCraft", version = "beta")
\r
49 @NetworkMod(clientSideRequired = true, serverSideRequired = false, versionBounds = "1.3.2", channels = "chemicraft", packetHandler = PacketHandler.class)
\r
50 // クライアント、サーバー共に必要 1.3.2用
\r
51 public class ChemiCraft {
\r
53 public final String[] atomsName = { "Hydrogen", "Helium", "Lithium", "Beryllium", "Boron", "Carbon", "Nitrogen", "Oxygen", "Fluorine", "Neon", "Sodium", "Magnesium", "Aluminium", "Silicon",
\r
54 "Phosphorus", "Sulfur", "Chlorine", "Argon", "Potassium", "Calcium", "Scandium", "Titanium", "Vanadium", "Chromium", "Manganese", "Iron", "Cobalt", "Nickel", "Copper", "Zinc", "Gallium",
\r
55 "Germanium", "Arsenic", "Selenium", "Bromine", "Krypton", "Rubidium", "Strontium", "Yttorium", "Zirconium", "Niobium", "Molybdenum", "Technetium", "Ruthenium", "Rhodium", "Palladium",
\r
56 "Silver", "Cadmium", "Indium", "Tin", "Antimony", "Tellurium", "Iodine", "Xenon", "Caesium", "Barium", "Lanthanum", "Cerium", "Praseodymium", "Neodymium", "Promethium", "Samarium",
\r
57 "Europium", "Gadolinium", "Terbium", "Dysprosium", "Holmium", "Erbium", "Thulium", "Ytterbium", "Lutetium", "Hafnium", "Tantalum", "Tungsten", "Rhenium", "Osmium", "Iridium", "Platinum",
\r
58 "Gold", "Mercury", "Thallium", "Lead", "Bismuth", "Polonium", "Astatine", "Radon", "Francium", "Radium", "Actinium", "Thorium", "Protactinium", "Uranium", "Neptunium", "Plutonium",
\r
59 "Americium", "Curium", "Berkelium", "Californium", "Einsteinium", "Fermium", "Mendelevium", "Nobelium", "Lawrencium", "Rutherfordium", "Dubnium", "Seaborgium", "Bohrium", "Hassium",
\r
60 "Meitnerium", "Darmstadtium", "Roentgenium", "Copernicium", "Ununtrium", "Ununquadium", "Ununpentium", "Ununhexium", "Ununseptium", "Ununoctium" };
\r
62 public final String[] atomsNameJP = { "水素", "ヘリウム", "リチウム", "ベリウム", "ホウ素", "炭素", "窒素", "酸素", "フッ素", "ネオン", "ナトリウム", "マグネシウム", "アルミニウム", "ケイ素", "リン", "硫黄", "塩素", "アルゴン", "カリウム", "カルシウム", "スカンジウム",
\r
63 "チタン", "バナジウム", "クロム", "マンガン", "鉄", "コバルト", "ニッケル", "銅", "亜鉛", "ガリウム", "ゲルマニウム", "ヒ素", "セレン", "臭素", "クリプトン", "ルビジウム", "ストロンチウム", "イットリウム", "ジルコニウム", "ニオブ", "モリブデン", "テクネチウム", "ルテニウム",
\r
64 "ロジウム", "パラジウム", "銀", "カドミウム", "インジウム", "スズ", "アンチモン", "テルル", "ヨウ素", "キセノン", "セシウム", "バリウム", "ランタン", "セリウム", "プラセオジム", "ネオジム", "プロメチウム", "サマリウム", "ユウロビウム", "ガドリニウム", "テルビウム", "ジスプロニウム",
\r
65 "ホルミウム", "エルビウム", "ツリウム", "イッテルビウム", "ルテチウム", "ハフニウム", "タンタル", "タングステン", "レニウム", "オスミウム", "イリジウム", "白金", "金", "水銀", "タリウム", "鉛", "ビスマス", "ポロニウム", "アスタチン", "ラドン", "フランシウム", "ラジウム",
\r
66 "アクチニウム", "トリウム", "プロトアクチウム", "ウラン", "ネプツニウム", "プルトニウム", "アメリシウム", "キュリウム", "バークリウム", "カルホルニウム", "アインスタイニウム", "フェルミウム", "メンデレビウム", "ノーベリウム", "ローレンシウム", "ラサホージウム", "ドブニウム", "シーボーギウム",
\r
67 "ボーリウム", "ハッシウム", "マイトネリウム", "ダームスタチウム", "レントゲニウム", "コペルニシウム", "ウンウントリウム", "ウンウンクアジウム", "ウンウンペンチウム", "ウンウンヘキシウム", "ウンウンセプチウム", "ウンウンオクチウム" };
\r
72 @Mod.Instance("chemiCraft")
\r
73 public static ChemiCraft instance;
\r
78 @SidedProxy(clientSide = "chemicraft.client.ClientProxy", serverSide = "chemicraft.CommonProxy")
\r
79 public static CommonProxy proxy;
\r
82 * ChemiCraftのCreativeTab
\r
84 public CreativeTabs creativeTab = new CreativeTabAtoms("ChemiCraft");
\r
90 public int compoundsID;
\r
91 public int gasCollectingBottleID;
\r
92 public int atomGrenadeID;
\r
97 public int decompositionTableID;
\r
98 public int chemicalConbinationTableID;
\r
99 public int toolAndWeaponCraftingTableID;
\r
100 public int ChemicalCraftingTableID;
\r
105 public int guiDecompositionTableID;
\r
106 public int guiChemicalCombinationTableID;
\r
107 public int guiToolAndWeaponCraftingTableID;
\r
108 public int guiChemicalCraftingTableID;
\r
113 public static Block blockDecompositionTable;
\r
114 public static Block blockChemicalCombinationTable;
\r
115 public static Block blockToolAndWeaponCraftingTable;
\r
116 public static Block blockChemicalCraftingTable;
\r
121 public static Item itemAtoms;
\r
122 public static Item itemCompounds;
\r
123 public static Item itemGasCollectingBottle;
\r
124 public static Item itemAtomGrenade;
\r
127 * このmodで使用するTextureのパス
\r
129 public String itemAtomsTexture = "/chemicraft/items/Atoms.png";
\r
130 public String itemCompoundsTexture = "/chemicraft/items/Compounds.png";
\r
131 public String itemTexture = "/chemicraft/items/items.png";
\r
132 public String blockChemicalCraftingTableTexture = "/chemicraft/blocks/CCTable.png";
\r
133 public String guiDecompositionTexture = "/chemicraft/guis/Decomposition.png";
\r
134 public String guiChemicalCombinationTexture = "/chemicraft/guis/ChemicalCombination.png";
\r
135 public String guiToolAndWeaponCraftingTexture = "/chemicraft/guis/ToolAndWeaponCrafting.png";
\r
136 public String guiChemicalCraftingTexture = "/chemicraft/guis/MaterialCrafting.png";
\r
139 * このmodに必要な補助クラスのインスタンス
\r
141 public Auxiliary auxiliary = new Auxiliary();
\r
142 public NameAuxiliary nameAuxiliary = auxiliary.new NameAuxiliary();
\r
143 public ArrayAuxiliary arrayAuxiliary = auxiliary.new ArrayAuxiliary();
\r
146 public void chemiPreLoadMethod(FMLPreInitializationEvent event) {
\r
147 Configuration cfg = new Configuration(event.getSuggestedConfigurationFile());
\r
150 Property decompositionTableIDProp = cfg.getBlock("DecompositionTable", 2400);
\r
151 Property chemicalCombinationTableIDProp = cfg.getBlock("ChemicalCombinationID", 2401);
\r
152 Property toolAndWeaponCraftingTableIDProp = cfg.getBlock("ToolAndWeaponCraftingTableID", 2402);
\r
153 Property ChemicalCraftingTableIDProp = cfg.getBlock("ChemicalCraftingTableID", 2403);
\r
155 Property atomsIDProp = cfg.getItem("AtomsID", 25000);
\r
156 Property compoundsIDProp = cfg.getItem("CompoundsID", 25001);
\r
157 Property gasCollectingBottleIDProp = cfg.getItem("gasCollectingBottleID", 25002);
\r
158 Property atomGrenadeIDProp = cfg.getItem("AtomGrenadeID", 25003);
\r
160 Property guiDecompositionTableIDProp = cfg.get("GUI", "GUIChemicalCraftingTableID", 1000);
\r
161 Property guiChemicalCombinationTableIDProp = cfg.get("GUI", "GUIChemicalCombinationTableID", 1001);
\r
162 Property guiToolAndWeaponCraftingTableIDProp = cfg.get("GUI", "GUIToolAndWeaponCraftingTableID", 1002);
\r
163 Property guiChemicalCraftingTableIDProp = cfg.get("GUI", "GUIChemicalCraftingTableID", 1003);
\r
166 this.decompositionTableID = decompositionTableIDProp.getInt();
\r
167 this.chemicalConbinationTableID = chemicalCombinationTableIDProp.getInt();
\r
168 this.toolAndWeaponCraftingTableID = toolAndWeaponCraftingTableIDProp.getInt();
\r
169 this.ChemicalCraftingTableID = ChemicalCraftingTableIDProp.getInt();
\r
170 this.atomsID = atomsIDProp.getInt();
\r
171 this.compoundsID = compoundsIDProp.getInt();
\r
172 this.gasCollectingBottleID = gasCollectingBottleIDProp.getInt();
\r
173 this.atomGrenadeID = atomGrenadeIDProp.getInt();
\r
174 this.guiDecompositionTableID = guiDecompositionTableIDProp.getInt();
\r
175 this.guiChemicalCombinationTableID = guiChemicalCombinationTableIDProp.getInt();
\r
176 this.guiToolAndWeaponCraftingTableID = guiToolAndWeaponCraftingTableIDProp.getInt();
\r
177 this.guiChemicalCraftingTableID = guiChemicalCraftingTableIDProp.getInt();
\r
182 proxy.registerRenderInformation();
\r
185 @Mod.ServerStarting
\r
186 public void serverStarting(FMLServerStartingEvent event){
\r
187 event.registerServerCommand(new CommandSetTile());
\r
188 event.registerServerCommand(new CommandDeleteItem());
\r
192 public void chemiPostLoadMethod(FMLPostInitializationEvent event) {
\r
193 this.settingProcessing(event);
\r
194 this.apiProcessing(event);
\r
197 private void settingProcessing(FMLPostInitializationEvent event){
\r
199 ChemiCraftAPI.instance.addCompound("Test");
\r
200 ChemiCraftAPI.instance.addCompound("Test2");
\r
201 ChemiCraftAPI.instance.settingCompoundHandler("Test", new CompoundHandlerTest());
\r
204 this.blockDecompositionTable = new BlockDecompositionTable(this.decompositionTableID, 0, Material.ground).setHardness(2.0F).setResistance(0.0F).setStepSound(Block.soundStoneFootstep).setBlockName("DecompositionTable");
\r
205 this.blockChemicalCombinationTable = new BlockChemicalCombinationTable(this.chemicalConbinationTableID, 0, Material.ground).setHardness(2.0F).setResistance(0.0F).setStepSound(Block.soundStoneFootstep).setBlockName("ChemicalCombinationTable");
\r
206 this.blockToolAndWeaponCraftingTable = new BlockToolAndWeaponCraftingTable(this.toolAndWeaponCraftingTableID, 0, Material.ground).setHardness(2.0F).setResistance(0.0F).setStepSound(Block.soundStoneFootstep).setBlockName("ToolAndWeaponCraftingTable");
\r
207 this.blockChemicalCraftingTable = new BlockChemicalCraftingTable(ChemicalCraftingTableID, 0, Material.ground).setHardness(2.0F).setResistance(0.0F).setStepSound(Block.soundStoneFootstep).setBlockName("ChemicalCraftingTable");
\r
211 this.itemAtoms = new ItemAtoms(this.atomsID).setItemName("atoms");
\r
212 this.itemCompounds = new ItemCompounds(this.compoundsID).setItemName("compounds");
\r
213 this.itemGasCollectingBottle = new ItemGasCollectingBottle(this.gasCollectingBottleID).setItemName("gasCollectingBottle").setIconIndex(0);
\r
214 this.itemAtomGrenade = new ItemAtomGrenade(this.atomGrenadeID).setItemName("grenade").setIconIndex(1);
\r
216 // BlockをMinecraftに登録します
\r
217 GameRegistry.registerBlock(this.blockDecompositionTable);
\r
218 GameRegistry.registerBlock(this.blockChemicalCombinationTable);
\r
219 GameRegistry.registerBlock(this.blockToolAndWeaponCraftingTable);
\r
220 GameRegistry.registerBlock(this.blockChemicalCraftingTable);
\r
223 this.nameAuxiliary.addName(this.blockDecompositionTable, "DecompositionTable");
\r
224 this.nameAuxiliary.addName(this.blockDecompositionTable, "ja_JP", "分解台");
\r
225 this.nameAuxiliary.addName(this.blockChemicalCombinationTable, "ChemicalCombinationTable");
\r
226 this.nameAuxiliary.addName(this.blockChemicalCombinationTable, "ja_JP", "化合台");
\r
227 this.nameAuxiliary.addName(blockToolAndWeaponCraftingTable, "ToolAndWeaponCraftingTable");
\r
228 this.nameAuxiliary.addName(blockToolAndWeaponCraftingTable, "ja_JP", "ツール&武器製作台");
\r
229 this.nameAuxiliary.addName(blockChemicalCraftingTable, "ChemicalCraftingTable");
\r
230 this.nameAuxiliary.addName(blockChemicalCraftingTable, "ja_JP", "素材製作台");
\r
234 this.nameAuxiliary.addName(this.itemAtoms, atomsName);
\r
235 this.nameAuxiliary.addName(this.itemAtoms, "ja_JP", atomsNameJP);
\r
236 this.nameAuxiliary.addName(this.itemGasCollectingBottle, "GasCollectingBottle");
\r
237 this.nameAuxiliary.addName(this.itemGasCollectingBottle, "ja_JP", "集気瓶");
\r
238 this.nameAuxiliary.addName(this.itemAtomGrenade, "AtomGrenade");
\r
239 this.nameAuxiliary.addName(this.itemAtomGrenade, "元素手榴弾");
\r
241 // TileEntityを追加します
\r
242 GameRegistry.registerTileEntity(TileEntityDecompositionTable.class, "DecompositionTable");
\r
243 GameRegistry.registerTileEntity(TileEntityChemicalCombinationTable.class, "TileEntityChemicalCombinationTable");
\r
244 GameRegistry.registerTileEntity(TileEntityToolAndWeaponCraftingTable.class, "TileEntityToolAndWeaponCraftingTable");
\r
245 GameRegistry.registerTileEntity(TileEntityChemicalCraftingTable.class, "TileEntityChemicalCraftingTable");
\r
248 NetworkRegistry.instance().registerGuiHandler(instance, proxy);
\r
250 //Textureをpreloadします
\r
251 proxy.registerTextures();
\r
254 GameRegistry.addRecipe(new ItemStack(this.blockDecompositionTable),
\r
256 "XYX", "ZAZ", "ZZZ",
\r
257 new Character('X'), new ItemStack(Item.ingotIron),
\r
258 new Character('Y'), new ItemStack(Block.workbench),
\r
259 new Character('Z'), new ItemStack(Block.stone),
\r
260 new Character('A'), new ItemStack(Block.tnt),
\r
262 GameRegistry.addRecipe(new ItemStack(this.blockChemicalCombinationTable),
\r
264 "XYX", "ZAZ", "ZZZ",
\r
265 new Character('X'), new ItemStack(Item.ingotIron),
\r
266 new Character('Y'), new ItemStack(Block.workbench),
\r
267 new Character('Z'), new ItemStack(Block.stone),
\r
268 new Character('A'), new ItemStack(Block.obsidian),
\r
270 GameRegistry.addRecipe(new ItemStack(this.blockToolAndWeaponCraftingTable),
\r
272 "XYX", "ZAZ", "ZZZ",
\r
273 new Character('X'), new ItemStack(Item.ingotIron),
\r
274 new Character('Y'), new ItemStack(Block.workbench),
\r
275 new Character('Z'), new ItemStack(Block.stone),
\r
276 new Character('A'), new ItemStack(Item.pickaxeSteel),
\r
278 GameRegistry.addRecipe(new ItemStack(this.blockChemicalCraftingTable),
\r
280 "XYX", "ZAZ", "ZZZ",
\r
281 new Character('X'), new ItemStack(Item.ingotIron),
\r
282 new Character('Y'), new ItemStack(Block.workbench),
\r
283 new Character('Z'), new ItemStack(Block.stone),
\r
284 new Character('A'), new ItemStack(this.itemAtoms, 1, 0),
\r
288 ChemiCraftAPI.instance.addDecompositionRecipe(new ItemStack(Block.dirt), new ItemStack[]{new ItemStack(Block.stone)});
\r
291 ChemiCraftAPI.instance.addLangCompound("ja_JP", "CarbonDioxide", "二酸化炭素");
\r
294 ChemiCraftAPI.instance.addChemicalCombinationRecipe(new ItemStack[]{new ItemStack(this.itemAtoms, 5), new ItemStack(this.itemAtoms, 7)}, new ItemStack(this.itemCompounds, 0));
\r
297 ChemiCraftAPI.instance.addMaterialRecipe(new ItemStack[]{new ItemStack(Item.gunpowder), new ItemStack(Block.stone)}, new ItemStack(this.itemAtomGrenade, 16, 0), new NBTRecipeGrenade());
\r
301 private void apiProcessing(FMLPostInitializationEvent event){
\r
303 this.nameAuxiliary.addName(itemCompounds, ChemiCraftAPI.instance.getCompoundsName().toArray());
\r
304 this.nameAuxiliary.addName(itemCompounds, "ja_JP", ChemiCraftAPI.instance.getCompoundsLangName().toArray());
\r
307 public final static int HYDROGEN = 0;
\r
308 public final static int HELIUM = 1;
\r
309 public final static int LITHIUM = 2;
\r
310 public final static int BERYLLIUM = 3;
\r
311 public final static int BORON = 4;
\r
312 public final static int CARBON = 5;
\r
313 public final static int NITROGEN = 6;
\r
314 public final static int OXYGEN = 7;
\r
315 public final static int URANIUM = 91;
\r