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