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
145 private ChemiCraftAPI api = ChemiCraftAPI.instance;
\r
148 public void chemiPreLoadMethod(FMLPreInitializationEvent event) {
\r
149 Configuration cfg = new Configuration(event.getSuggestedConfigurationFile());
\r
152 Property decompositionTableIDProp = cfg.getBlock("DecompositionTable", 2400);
\r
153 Property chemicalCombinationTableIDProp = cfg.getBlock("ChemicalCombinationID", 2401);
\r
154 Property toolAndWeaponCraftingTableIDProp = cfg.getBlock("ToolAndWeaponCraftingTableID", 2402);
\r
155 Property ChemicalCraftingTableIDProp = cfg.getBlock("ChemicalCraftingTableID", 2403);
\r
157 Property atomsIDProp = cfg.getItem("AtomsID", 25000);
\r
158 Property compoundsIDProp = cfg.getItem("CompoundsID", 25001);
\r
159 Property gasCollectingBottleIDProp = cfg.getItem("gasCollectingBottleID", 25002);
\r
160 Property atomGrenadeIDProp = cfg.getItem("AtomGrenadeID", 25003);
\r
162 Property guiDecompositionTableIDProp = cfg.get("GUI", "GUIChemicalCraftingTableID", 1000);
\r
163 Property guiChemicalCombinationTableIDProp = cfg.get("GUI", "GUIChemicalCombinationTableID", 1001);
\r
164 Property guiToolAndWeaponCraftingTableIDProp = cfg.get("GUI", "GUIToolAndWeaponCraftingTableID", 1002);
\r
165 Property guiChemicalCraftingTableIDProp = cfg.get("GUI", "GUIChemicalCraftingTableID", 1003);
\r
168 this.decompositionTableID = decompositionTableIDProp.getInt();
\r
169 this.chemicalConbinationTableID = chemicalCombinationTableIDProp.getInt();
\r
170 this.toolAndWeaponCraftingTableID = toolAndWeaponCraftingTableIDProp.getInt();
\r
171 this.ChemicalCraftingTableID = ChemicalCraftingTableIDProp.getInt();
\r
172 this.atomsID = atomsIDProp.getInt();
\r
173 this.compoundsID = compoundsIDProp.getInt();
\r
174 this.gasCollectingBottleID = gasCollectingBottleIDProp.getInt();
\r
175 this.atomGrenadeID = atomGrenadeIDProp.getInt();
\r
176 this.guiDecompositionTableID = guiDecompositionTableIDProp.getInt();
\r
177 this.guiChemicalCombinationTableID = guiChemicalCombinationTableIDProp.getInt();
\r
178 this.guiToolAndWeaponCraftingTableID = guiToolAndWeaponCraftingTableIDProp.getInt();
\r
179 this.guiChemicalCraftingTableID = guiChemicalCraftingTableIDProp.getInt();
\r
184 proxy.registerRenderInformation();
\r
187 @Mod.ServerStarting
\r
188 public void serverStarting(FMLServerStartingEvent event){
\r
189 event.registerServerCommand(new CommandSetTile());
\r
190 event.registerServerCommand(new CommandDeleteItem());
\r
194 public void chemiPostLoadMethod(FMLPostInitializationEvent event) {
\r
195 this.settingProcessing(event);
\r
196 this.apiProcessing(event);
\r
199 private void settingProcessing(FMLPostInitializationEvent event){
\r
202 this.blockDecompositionTable = new BlockDecompositionTable(this.decompositionTableID, 0, Material.ground).setHardness(2.0F).setResistance(0.0F).setStepSound(Block.soundStoneFootstep).setBlockName("DecompositionTable");
\r
203 this.blockChemicalCombinationTable = new BlockChemicalCombinationTable(this.chemicalConbinationTableID, 0, Material.ground).setHardness(2.0F).setResistance(0.0F).setStepSound(Block.soundStoneFootstep).setBlockName("ChemicalCombinationTable");
\r
204 this.blockToolAndWeaponCraftingTable = new BlockToolAndWeaponCraftingTable(this.toolAndWeaponCraftingTableID, 0, Material.ground).setHardness(2.0F).setResistance(0.0F).setStepSound(Block.soundStoneFootstep).setBlockName("ToolAndWeaponCraftingTable");
\r
205 this.blockChemicalCraftingTable = new BlockChemicalCraftingTable(ChemicalCraftingTableID, 0, Material.ground).setHardness(2.0F).setResistance(0.0F).setStepSound(Block.soundStoneFootstep).setBlockName("ChemicalCraftingTable");
\r
209 this.itemAtoms = new ItemAtoms(this.atomsID).setItemName("atoms");
\r
210 this.itemCompounds = new ItemCompounds(this.compoundsID).setItemName("compounds");
\r
211 this.itemGasCollectingBottle = new ItemGasCollectingBottle(this.gasCollectingBottleID).setItemName("gasCollectingBottle").setIconIndex(0);
\r
212 this.itemAtomGrenade = new ItemAtomGrenade(this.atomGrenadeID).setItemName("grenade").setIconIndex(1);
\r
214 // BlockをMinecraftに登録します
\r
215 GameRegistry.registerBlock(this.blockDecompositionTable);
\r
216 GameRegistry.registerBlock(this.blockChemicalCombinationTable);
\r
217 GameRegistry.registerBlock(this.blockToolAndWeaponCraftingTable);
\r
218 GameRegistry.registerBlock(this.blockChemicalCraftingTable);
\r
221 this.nameAuxiliary.addName(this.blockDecompositionTable, "DecompositionTable");
\r
222 this.nameAuxiliary.addName(this.blockDecompositionTable, "ja_JP", "分解台");
\r
223 this.nameAuxiliary.addName(this.blockChemicalCombinationTable, "ChemicalCombinationTable");
\r
224 this.nameAuxiliary.addName(this.blockChemicalCombinationTable, "ja_JP", "化合台");
\r
225 this.nameAuxiliary.addName(blockToolAndWeaponCraftingTable, "ToolAndWeaponCraftingTable");
\r
226 this.nameAuxiliary.addName(blockToolAndWeaponCraftingTable, "ja_JP", "ツール&武器製作台");
\r
227 this.nameAuxiliary.addName(blockChemicalCraftingTable, "ChemicalCraftingTable");
\r
228 this.nameAuxiliary.addName(blockChemicalCraftingTable, "ja_JP", "素材製作台");
\r
232 this.nameAuxiliary.addName(this.itemAtoms, atomsName);
\r
233 this.nameAuxiliary.addName(this.itemAtoms, "ja_JP", atomsNameJP);
\r
234 this.nameAuxiliary.addName(this.itemGasCollectingBottle, "GasCollectingBottle");
\r
235 this.nameAuxiliary.addName(this.itemGasCollectingBottle, "ja_JP", "集気瓶");
\r
236 this.nameAuxiliary.addName(this.itemAtomGrenade, "AtomGrenade");
\r
237 this.nameAuxiliary.addName(this.itemAtomGrenade, "元素手榴弾");
\r
239 // TileEntityを追加します
\r
240 GameRegistry.registerTileEntity(TileEntityDecompositionTable.class, "DecompositionTable");
\r
241 GameRegistry.registerTileEntity(TileEntityChemicalCombinationTable.class, "TileEntityChemicalCombinationTable");
\r
242 GameRegistry.registerTileEntity(TileEntityToolAndWeaponCraftingTable.class, "TileEntityToolAndWeaponCraftingTable");
\r
243 GameRegistry.registerTileEntity(TileEntityChemicalCraftingTable.class, "TileEntityChemicalCraftingTable");
\r
246 NetworkRegistry.instance().registerGuiHandler(instance, proxy);
\r
248 //Textureをpreloadします
\r
249 proxy.registerTextures();
\r
252 GameRegistry.addRecipe(new ItemStack(this.blockDecompositionTable),
\r
254 "XYX", "ZAZ", "ZZZ",
\r
255 new Character('X'), new ItemStack(Item.ingotIron),
\r
256 new Character('Y'), new ItemStack(Block.workbench),
\r
257 new Character('Z'), new ItemStack(Block.stone),
\r
258 new Character('A'), new ItemStack(Block.tnt),
\r
260 GameRegistry.addRecipe(new ItemStack(this.blockChemicalCombinationTable),
\r
262 "XYX", "ZAZ", "ZZZ",
\r
263 new Character('X'), new ItemStack(Item.ingotIron),
\r
264 new Character('Y'), new ItemStack(Block.workbench),
\r
265 new Character('Z'), new ItemStack(Block.stone),
\r
266 new Character('A'), new ItemStack(Block.obsidian),
\r
268 GameRegistry.addRecipe(new ItemStack(this.blockToolAndWeaponCraftingTable),
\r
270 "XYX", "ZAZ", "ZZZ",
\r
271 new Character('X'), new ItemStack(Item.ingotIron),
\r
272 new Character('Y'), new ItemStack(Block.workbench),
\r
273 new Character('Z'), new ItemStack(Block.stone),
\r
274 new Character('A'), new ItemStack(Item.pickaxeSteel),
\r
276 GameRegistry.addRecipe(new ItemStack(this.blockChemicalCraftingTable),
\r
278 "XYX", "ZAZ", "ZZZ",
\r
279 new Character('X'), new ItemStack(Item.ingotIron),
\r
280 new Character('Y'), new ItemStack(Block.workbench),
\r
281 new Character('Z'), new ItemStack(Block.stone),
\r
282 new Character('A'), new ItemStack(this.itemAtoms, 1, 0),
\r
286 ChemiCraftAPI.instance.addDecompositionRecipe(new ItemStack(Block.dirt), new ItemStack[]{new ItemStack(Block.stone)});
\r
289 ChemiCraftAPI.instance.addLangCompound("ja_JP", "CarbonDioxide", "二酸化炭素");
\r
292 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
295 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
299 private void apiProcessing(FMLPostInitializationEvent event){
\r
301 this.nameAuxiliary.addName(itemCompounds, ChemiCraftAPI.instance.getCompoundsName().toArray());
\r
302 this.nameAuxiliary.addName(itemCompounds, "ja_JP", ChemiCraftAPI.instance.getCompoundsLangName().toArray());
\r
305 public final static int HYDROGEN = 0;
\r
306 public final static int HELIUM = 1;
\r
307 public final static int LITHIUM = 2;
\r
308 public final static int BERYLLIUM = 3;
\r
309 public final static int BORON = 4;
\r
310 public final static int CARBON = 5;
\r
311 public final static int NITROGEN = 6;
\r
312 public final static int OXYGEN = 7;
\r
313 public final static int URANIUM = 91;
\r