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.CommandGenDebugRoom;
\r
16 import chemicraft.debug.CommandSetTile;
\r
17 import chemicraft.entity.EntityAtomsGrenade;
\r
18 import chemicraft.item.ItemAtomGrenade;
\r
19 import chemicraft.item.ItemAtoms;
\r
20 import chemicraft.item.ItemCompounds;
\r
21 import chemicraft.item.ItemGasCollectingBottle;
\r
22 import chemicraft.system.CommonProxy;
\r
23 import chemicraft.system.PacketHandler;
\r
24 import chemicraft.tileentity.TileEntityChemicalCombinationTable;
\r
25 import chemicraft.tileentity.TileEntityChemicalCraftingTable;
\r
26 import chemicraft.tileentity.TileEntityDecompositionTable;
\r
27 import chemicraft.tileentity.TileEntityToolAndWeaponCraftingTable;
\r
28 import chemicraft.util.Auxiliary;
\r
29 import chemicraft.util.Auxiliary.ArrayAuxiliary;
\r
30 import chemicraft.util.Auxiliary.NameAuxiliary;
\r
31 import chemicraft.util.CreativeTabAtoms;
\r
32 import chemicraft.util.NBTRecipeGrenade;
\r
33 import cpw.mods.fml.common.Mod;
\r
34 import cpw.mods.fml.common.SidedProxy;
\r
35 import cpw.mods.fml.common.event.FMLPostInitializationEvent;
\r
36 import cpw.mods.fml.common.event.FMLPreInitializationEvent;
\r
37 import cpw.mods.fml.common.event.FMLServerStartingEvent;
\r
38 import cpw.mods.fml.common.network.NetworkMod;
\r
39 import cpw.mods.fml.common.network.NetworkRegistry;
\r
40 import cpw.mods.fml.common.registry.EntityRegistry;
\r
41 import cpw.mods.fml.common.registry.GameRegistry;
\r
48 @Mod(modid = "chemiCraft", name = "ChemiCraft", version = "beta")
\r
50 @NetworkMod(clientSideRequired = true, serverSideRequired = false, versionBounds = "1.3.2", channels = "chemicraft", packetHandler = PacketHandler.class)
\r
51 // クライアント、サーバー共に必要 1.3.2用
\r
52 public class ChemiCraft {
\r
54 public static final String[] ATOMSNAME = {
\r
55 "Hydrogen", "Helium", "Lithium", "Beryllium", "Boron", "Carbon", "Nitrogen", "Oxygen", "Fluorine", "Neon", "Sodium", "Magnesium", "Aluminium", "Silicon",
\r
56 "Phosphorus", "Sulfur", "Chlorine", "Argon", "Potassium", "Calcium", "Scandium", "Titanium", "Vanadium", "Chromium", "Manganese", "Iron", "Cobalt", "Nickel", "Copper", "Zinc", "Gallium",
\r
57 "Germanium", "Arsenic", "Selenium", "Bromine", "Krypton", "Rubidium", "Strontium", "Yttorium", "Zirconium", "Niobium", "Molybdenum", "Technetium", "Ruthenium", "Rhodium", "Palladium",
\r
58 "Silver", "Cadmium", "Indium", "Tin", "Antimony", "Tellurium", "Iodine", "Xenon", "Caesium", "Barium", "Lanthanum", "Cerium", "Praseodymium", "Neodymium", "Promethium", "Samarium",
\r
59 "Europium", "Gadolinium", "Terbium", "Dysprosium", "Holmium", "Erbium", "Thulium", "Ytterbium", "Lutetium", "Hafnium", "Tantalum", "Tungsten", "Rhenium", "Osmium", "Iridium", "Platinum",
\r
60 "Gold", "Mercury", "Thallium", "Lead", "Bismuth", "Polonium", "Astatine", "Radon", "Francium", "Radium", "Actinium", "Thorium", "Protactinium", "Uranium", "Neptunium", "Plutonium",
\r
61 "Americium", "Curium", "Berkelium", "Californium", "Einsteinium", "Fermium", "Mendelevium", "Nobelium", "Lawrencium", "Rutherfordium", "Dubnium", "Seaborgium", "Bohrium", "Hassium",
\r
62 "Meitnerium", "Darmstadtium", "Roentgenium", "Copernicium", "Ununtrium", "Ununquadium", "Ununpentium", "Ununhexium", "Ununseptium", "Ununoctium" };
\r
64 public static final String[] ATOMSNAMEJP = {
\r
65 "水素", "ヘリウム", "リチウム", "ベリウム", "ホウ素", "炭素", "窒素", "酸素", "フッ素", "ネオン", "ナトリウム", "マグネシウム", "アルミニウム", "ケイ素", "リン", "硫黄", "塩素", "アルゴン", "カリウム", "カルシウム", "スカンジウム",
\r
66 "チタン", "バナジウム", "クロム", "マンガン", "鉄", "コバルト", "ニッケル", "銅", "亜鉛", "ガリウム", "ゲルマニウム", "ヒ素", "セレン", "臭素", "クリプトン", "ルビジウム", "ストロンチウム", "イットリウム", "ジルコニウム", "ニオブ", "モリブデン", "テクネチウム", "ルテニウム",
\r
67 "ロジウム", "パラジウム", "銀", "カドミウム", "インジウム", "スズ", "アンチモン", "テルル", "ヨウ素", "キセノン", "セシウム", "バリウム", "ランタン", "セリウム", "プラセオジム", "ネオジム", "プロメチウム", "サマリウム", "ユウロビウム", "ガドリニウム", "テルビウム", "ジスプロニウム",
\r
68 "ホルミウム", "エルビウム", "ツリウム", "イッテルビウム", "ルテチウム", "ハフニウム", "タンタル", "タングステン", "レニウム", "オスミウム", "イリジウム", "白金", "金", "水銀", "タリウム", "鉛", "ビスマス", "ポロニウム", "アスタチン", "ラドン", "フランシウム", "ラジウム",
\r
69 "アクチニウム", "トリウム", "プロトアクチウム", "ウラン", "ネプツニウム", "プルトニウム", "アメリシウム", "キュリウム", "バークリウム", "カルホルニウム", "アインスタイニウム", "フェルミウム", "メンデレビウム", "ノーベリウム", "ローレンシウム", "ラサホージウム", "ドブニウム", "シーボーギウム",
\r
70 "ボーリウム", "ハッシウム", "マイトネリウム", "ダームスタチウム", "レントゲニウム", "コペルニシウム", "ウンウントリウム", "ウンウンクアジウム", "ウンウンペンチウム", "ウンウンヘキシウム", "ウンウンセプチウム", "ウンウンオクチウム" };
\r
75 @Mod.Instance("chemiCraft")
\r
76 public static ChemiCraft instance;
\r
81 @SidedProxy(clientSide = "chemicraft.client.ClientProxy", serverSide = "chemicraft.system.CommonProxy")
\r
82 public static CommonProxy proxy;
\r
85 * ChemiCraftのCreativeTab.
\r
87 public static final CreativeTabs creativeTab = new CreativeTabAtoms("ChemiCraft");
\r
93 public int compoundsID;
\r
94 public int gasCollectingBottleID;
\r
95 public int atomGrenadeID;
\r
100 public int decompositionTableID;
\r
101 public int chemicalConbinationTableID;
\r
102 public int toolAndWeaponCraftingTableID;
\r
103 public int chemicalCraftingTableID;
\r
108 public int guiDecompositionTableID;
\r
109 public int guiChemicalCombinationTableID;
\r
110 public int guiToolAndWeaponCraftingTableID;
\r
111 public int guiChemicalCraftingTableID;
\r
116 public Block blockDecompositionTable;
\r
117 public Block blockChemicalCombinationTable;
\r
118 public Block blockToolAndWeaponCraftingTable;
\r
119 public Block blockChemicalCraftingTable;
\r
124 public Item itemAtoms;
\r
125 public Item itemCompounds;
\r
126 public Item itemGasCollectingBottle;
\r
127 public Item itemAtomGrenade;
\r
130 * このmodで使用するTextureのパス.
\r
132 public String itemAtomsTexture = "/chemicraft/items/Atoms.png";
\r
133 public String itemCompoundsTexture = "/chemicraft/items/Compounds.png";
\r
134 public String itemTexture = "/chemicraft/items/items.png";
\r
135 public String blockChemicalCraftingTableTexture = "/chemicraft/blocks/CCTable.png";
\r
136 public String guiDecompositionTexture = "/chemicraft/guis/Decomposition.png";
\r
137 public String guiChemicalCombinationTexture = "/chemicraft/guis/ChemicalCombination.png";
\r
138 public String guiToolAndWeaponCraftingTexture = "/chemicraft/guis/ToolAndWeaponCrafting.png";
\r
139 public String guiChemicalCraftingTexture = "/chemicraft/guis/MaterialCrafting.png";
\r
142 * このmodに必要な補助クラスのインスタンス.
\r
144 public Auxiliary auxiliary = new Auxiliary();
\r
145 public NameAuxiliary nameAuxiliary = new NameAuxiliary();
\r
146 public ArrayAuxiliary arrayAuxiliary = new ArrayAuxiliary();
\r
148 private ChemiCraftAPI api = ChemiCraftAPI.getInstance();
\r
149 private ChemiCraftData chemicalData = new ChemiCraftData();
\r
152 public void chemiPreLoadMethod(final FMLPreInitializationEvent event) {
\r
153 Configuration cfg = new Configuration(event.getSuggestedConfigurationFile());
\r
156 Property decompositionTableIDProp = cfg.getBlock("DecompositionTable", 2400);
\r
157 Property chemicalCombinationTableIDProp = cfg.getBlock("ChemicalCombinationID", 2401);
\r
158 Property toolAndWeaponCraftingTableIDProp = cfg.getBlock("ToolAndWeaponCraftingTableID", 2402);
\r
159 Property chemicalCraftingTableIDProp = cfg.getBlock("ChemicalCraftingTableID", 2403);
\r
161 Property atomsIDProp = cfg.getItem("AtomsID", 25000);
\r
162 Property compoundsIDProp = cfg.getItem("CompoundsID", 25001);
\r
163 Property gasCollectingBottleIDProp = cfg.getItem("gasCollectingBottleID", 25002);
\r
164 Property atomGrenadeIDProp = cfg.getItem("AtomGrenadeID", 25003);
\r
166 Property guiDecompositionTableIDProp = cfg.get("GUI", "GUIChemicalCraftingTableID", 1000);
\r
167 Property guiChemicalCombinationTableIDProp = cfg.get("GUI", "GUIChemicalCombinationTableID", 1001);
\r
168 Property guiToolAndWeaponCraftingTableIDProp = cfg.get("GUI", "GUIToolAndWeaponCraftingTableID", 1002);
\r
169 Property guiChemicalCraftingTableIDProp = cfg.get("GUI", "GUIChemicalCraftingTableID", 1003);
\r
172 this.decompositionTableID = decompositionTableIDProp.getInt();
\r
173 this.chemicalConbinationTableID = chemicalCombinationTableIDProp.getInt();
\r
174 this.toolAndWeaponCraftingTableID = toolAndWeaponCraftingTableIDProp.getInt();
\r
175 this.chemicalCraftingTableID = chemicalCraftingTableIDProp.getInt();
\r
176 this.atomsID = atomsIDProp.getInt();
\r
177 this.compoundsID = compoundsIDProp.getInt();
\r
178 this.gasCollectingBottleID = gasCollectingBottleIDProp.getInt();
\r
179 this.atomGrenadeID = atomGrenadeIDProp.getInt();
\r
180 this.guiDecompositionTableID = guiDecompositionTableIDProp.getInt();
\r
181 this.guiChemicalCombinationTableID = guiChemicalCombinationTableIDProp.getInt();
\r
182 this.guiToolAndWeaponCraftingTableID = guiToolAndWeaponCraftingTableIDProp.getInt();
\r
183 this.guiChemicalCraftingTableID = guiChemicalCraftingTableIDProp.getInt();
\r
188 @Mod.ServerStarting
\r
189 public void serverStarting(final FMLServerStartingEvent event) {
\r
190 event.registerServerCommand(new CommandSetTile());
\r
191 event.registerServerCommand(new CommandDeleteItem());
\r
192 event.registerServerCommand(new CommandGenDebugRoom());
\r
196 public void chemiPostLoadMethod(final FMLPostInitializationEvent event) {
\r
197 this.settingProcessing(event);
\r
198 this.apiProcessing(event);
\r
202 private void settingProcessing(final FMLPostInitializationEvent event) {
\r
205 this.blockDecompositionTable = new BlockDecompositionTable(this.decompositionTableID, 0, Material.ground).
\r
207 setResistance(0.0F).
\r
208 setStepSound(Block.soundStoneFootstep).
\r
209 setBlockName("DecompositionTable");
\r
210 this.blockChemicalCombinationTable = new BlockChemicalCombinationTable(this.chemicalConbinationTableID, 0, Material.ground).
\r
212 setResistance(0.0F).
\r
213 setStepSound(Block.soundStoneFootstep).
\r
214 setBlockName("ChemicalCombinationTable");
\r
215 this.blockToolAndWeaponCraftingTable = new BlockToolAndWeaponCraftingTable(this.toolAndWeaponCraftingTableID, 0, Material.ground).
\r
217 setResistance(0.0F).
\r
218 setStepSound(Block.soundStoneFootstep).
\r
219 setBlockName("ToolAndWeaponCraftingTable");
\r
220 this.blockChemicalCraftingTable = new BlockChemicalCraftingTable(chemicalCraftingTableID, 0, Material.ground).
\r
222 setResistance(0.0F).
\r
223 setStepSound(Block.soundStoneFootstep).
\r
224 setBlockName("ChemicalCraftingTable");
\r
228 this.itemAtoms = new ItemAtoms(this.atomsID).setItemName("atoms");
\r
229 this.itemCompounds = new ItemCompounds(this.compoundsID).setItemName("compounds");
\r
230 this.itemGasCollectingBottle = new ItemGasCollectingBottle(this.gasCollectingBottleID).setItemName("gasCollectingBottle").setIconIndex(0);
\r
231 this.itemAtomGrenade = new ItemAtomGrenade(this.atomGrenadeID).setItemName("grenade").setIconIndex(1);
\r
233 // BlockをMinecraftに登録します
\r
234 GameRegistry.registerBlock(this.blockDecompositionTable);
\r
235 GameRegistry.registerBlock(this.blockChemicalCombinationTable);
\r
236 GameRegistry.registerBlock(this.blockToolAndWeaponCraftingTable);
\r
237 GameRegistry.registerBlock(this.blockChemicalCraftingTable);
\r
240 this.nameAuxiliary.addName(this.blockDecompositionTable, "DecompositionTable");
\r
241 this.nameAuxiliary.addName(this.blockDecompositionTable, "ja_JP", "分解台");
\r
242 this.nameAuxiliary.addName(this.blockChemicalCombinationTable, "ChemicalCombinationTable");
\r
243 this.nameAuxiliary.addName(this.blockChemicalCombinationTable, "ja_JP", "化合台");
\r
244 this.nameAuxiliary.addName(blockToolAndWeaponCraftingTable, "ToolAndWeaponCraftingTable");
\r
245 this.nameAuxiliary.addName(blockToolAndWeaponCraftingTable, "ja_JP", "ツール&武器製作台");
\r
246 this.nameAuxiliary.addName(blockChemicalCraftingTable, "ChemicalCraftingTable");
\r
247 this.nameAuxiliary.addName(blockChemicalCraftingTable, "ja_JP", "素材製作台");
\r
251 this.nameAuxiliary.addName(this.itemAtoms, ATOMSNAME);
\r
252 this.nameAuxiliary.addName(this.itemAtoms, "ja_JP", ATOMSNAMEJP);
\r
253 this.nameAuxiliary.addName(this.itemGasCollectingBottle, "GasCollectingBottle");
\r
254 this.nameAuxiliary.addName(this.itemGasCollectingBottle, "ja_JP", "集気瓶");
\r
255 this.nameAuxiliary.addName(this.itemAtomGrenade, "AtomGrenade");
\r
256 this.nameAuxiliary.addName(this.itemAtomGrenade, "元素手榴弾");
\r
258 // TileEntityを追加します
\r
259 GameRegistry.registerTileEntity(TileEntityDecompositionTable.class, "DecompositionTable");
\r
260 GameRegistry.registerTileEntity(TileEntityChemicalCombinationTable.class, "TileEntityChemicalCombinationTable");
\r
261 GameRegistry.registerTileEntity(TileEntityToolAndWeaponCraftingTable.class, "TileEntityToolAndWeaponCraftingTable");
\r
262 GameRegistry.registerTileEntity(TileEntityChemicalCraftingTable.class, "TileEntityChemicalCraftingTable");
\r
265 NetworkRegistry.instance().registerGuiHandler(instance, proxy);
\r
268 proxy.registerRenderInformation();
\r
271 GameRegistry.addRecipe(new ItemStack(this.blockDecompositionTable),
\r
273 "XYX", "ZAZ", "ZZZ",
\r
274 Character.valueOf('X'), new ItemStack(Item.ingotIron),
\r
275 Character.valueOf('Y'), new ItemStack(Block.workbench),
\r
276 Character.valueOf('Z'), new ItemStack(Block.stone),
\r
277 Character.valueOf('A'), new ItemStack(Block.tnt),
\r
279 GameRegistry.addRecipe(new ItemStack(this.blockChemicalCombinationTable),
\r
281 "XYX", "ZAZ", "ZZZ",
\r
282 Character.valueOf('X'), new ItemStack(Item.ingotIron),
\r
283 Character.valueOf('Y'), new ItemStack(Block.workbench),
\r
284 Character.valueOf('Z'), new ItemStack(Block.stone),
\r
285 Character.valueOf('A'), new ItemStack(Block.obsidian),
\r
287 GameRegistry.addRecipe(new ItemStack(this.blockToolAndWeaponCraftingTable),
\r
289 "XYX", "ZAZ", "ZZZ",
\r
290 Character.valueOf('X'), new ItemStack(Item.ingotIron),
\r
291 Character.valueOf('Y'), new ItemStack(Block.workbench),
\r
292 Character.valueOf('Z'), new ItemStack(Block.stone),
\r
293 Character.valueOf('A'), new ItemStack(Item.pickaxeSteel),
\r
295 GameRegistry.addRecipe(new ItemStack(this.blockChemicalCraftingTable),
\r
297 "XYX", "ZAZ", "ZZZ",
\r
298 Character.valueOf('X'), new ItemStack(Item.ingotIron),
\r
299 Character.valueOf('Y'), new ItemStack(Block.workbench),
\r
300 Character.valueOf('Z'), new ItemStack(Block.stone),
\r
301 Character.valueOf('A'), new ItemStack(this.itemAtoms, 1, 0),
\r
305 ChemiCraftAPI.getInstance().addLangCompound("ja_JP", "CarbonDioxide", "二酸化炭素");
\r
308 ChemiCraftAPI.getInstance().addMaterialRecipe(
\r
311 new ItemStack(Block.stone),
\r
313 new ItemStack(Block.stone),
\r
314 new ItemStack(Item.gunpowder),
\r
315 new ItemStack(Block.stone),
\r
317 new ItemStack(Block.stone),
\r
320 new ItemStack(this.itemAtomGrenade, 16, 0),
\r
321 new NBTRecipeGrenade()
\r
326 private void apiProcessing(final FMLPostInitializationEvent event) {
\r
328 this.nameAuxiliary.addName(itemCompounds, ChemiCraftAPI.getInstance().getCompoundsName().toArray());
\r
329 this.nameAuxiliary.addName(itemCompounds, "ja_JP", ChemiCraftAPI.getInstance().getCompoundsLangName().toArray());
\r
332 private void debug(final FMLPostInitializationEvent event) {
\r
334 api.addChemicalCombinationRecipe(
\r
335 new String[]{ChemiCraftData.HYDROGEN_SIGN, ChemiCraftData.OXYGEN_SIGN},
\r
336 new Integer[]{2, 1},
\r
337 new ItemStack(Block.dirt)
\r