OSDN Git Service

パッケージ変更
[chemicraft/ChemiCraftNext.git] / src / asia / tcrs / ccnp / addon / crops / ChemicalCrops.java
1 package asia.tcrs.ccnp.addon.crops;\r
2 \r
3 import java.io.IOException;\r
4 \r
5 import asia.tcrs.ccnp.addon.crops.blocks.BlockChemicalCrops1;\r
6 import asia.tcrs.ccnp.addon.crops.util.MultiBlockDataStream;\r
7 import asia.tcrs.ccnp.addon.crops.util.WorldEventHandler;\r
8 \r
9 import net.minecraft.block.Block;\r
10 import net.minecraft.block.material.Material;\r
11 import net.minecraft.server.MinecraftServer;\r
12 import net.minecraftforge.common.Configuration;\r
13 import net.minecraftforge.common.MinecraftForge;\r
14 import cpw.mods.fml.common.Mod;\r
15 import cpw.mods.fml.common.Mod.Init;\r
16 import cpw.mods.fml.common.Mod.Instance;\r
17 import cpw.mods.fml.common.Mod.PreInit;\r
18 import cpw.mods.fml.common.SidedProxy;\r
19 import cpw.mods.fml.common.event.FMLInitializationEvent;\r
20 import cpw.mods.fml.common.event.FMLPreInitializationEvent;\r
21 import cpw.mods.fml.common.network.NetworkMod;\r
22 import cpw.mods.fml.common.registry.GameRegistry;\r
23 \r
24 @Mod(modid="ChemiCraftNextCrops", name="ChemiCraftNextCrops", version="v1.0.0")\r
25 @NetworkMod(clientSideRequired = true, serverSideRequired = false)\r
26 public class ChemicalCrops {\r
27 \r
28         @Instance("ChemiCraftNextCrops")\r
29         public static ChemicalCrops instance;\r
30 \r
31         @SidedProxy(clientSide = "asia.tcrs.ccnp.addon.crops.ClientProxy", serverSide = "asia.tcrs.ccnp.addon.crops.CommonProxy")\r
32         public static CommonProxy proxy;\r
33 \r
34         /**\r
35          * CropsのBlockID\r
36          */\r
37         public int crops1ID;\r
38 \r
39         /**\r
40          * ChemicalCropsの変数。<br>\r
41          * ここに入るインスタンスはBlockChemicalCropsと保証されます。\r
42          */\r
43         private Block blockCrops1;\r
44 \r
45         /**\r
46          * プラントデータ書き込み&読み込みのストリーム\r
47          */\r
48         private static MultiBlockDataStream dataStream;\r
49 \r
50         /**\r
51          * Texture Domain.\r
52          */\r
53         public static final String TEXTURE = "ChemicalCrops:";\r
54 \r
55         /**\r
56          * プラントデータ自動セーブ用のスレッド\r
57          */\r
58         private Thread thread;\r
59 \r
60         /**\r
61          * Minecraftのディレクトリパス\r
62          */\r
63         private static String MINECRAFT_DIR;\r
64 \r
65         public ChemicalCrops() {\r
66                 this.thread = new Thread() {\r
67                         @Override\r
68                         public void run() {\r
69                                 while (true) {\r
70                                         try {\r
71                                                 dataStream.createDataOutputStream();\r
72                                                 dataStream.write();\r
73                                         } catch (IOException e1) {\r
74                                                 e1.printStackTrace();\r
75                                         }\r
76                                         try {\r
77                                                 Thread.sleep(2000);\r
78                                         } catch (InterruptedException e) {\r
79                                                 e.printStackTrace();\r
80                                         }\r
81                                 }\r
82                         }\r
83                 };\r
84 \r
85         }\r
86 \r
87         @PreInit\r
88         public void preInit(FMLPreInitializationEvent event) {\r
89                 this.MINECRAFT_DIR = event.getModConfigurationDirectory().getAbsolutePath().substring(0, event.getModConfigurationDirectory().getAbsolutePath().length()-6) + "saves/";\r
90                 this.dataStream = new MultiBlockDataStream(MINECRAFT_DIR, "ChemicalCrops.dat");\r
91 \r
92                 Configuration cfg = new Configuration(event.getSuggestedConfigurationFile());\r
93                 cfg.load();\r
94                 this.crops1ID = cfg.getBlock("CropsID", 2700).getInt();\r
95                 cfg.save();\r
96         }\r
97 \r
98         @Init\r
99         public void init(FMLInitializationEvent event) {\r
100                 //イベント登録\r
101                 MinecraftForge.EVENT_BUS.register(new WorldEventHandler());\r
102 \r
103                 //Blockのインスタンス作成\r
104                 this.blockCrops1 = new BlockChemicalCrops1(this.crops1ID, Material.plants).setUnlocalizedName("BlockCrops");\r
105 \r
106                 //Minecraftに登録\r
107                 GameRegistry.registerBlock(this.blockCrops1, "BlockCrops");\r
108         }\r
109 \r
110         /**\r
111          * データストリームを返します\r
112          * @return データストリーム\r
113          */\r
114         public static MultiBlockDataStream getDataStream() {\r
115                 return dataStream;\r
116         }\r
117 \r
118         /**\r
119          * プラントデータ自動セーブを開始します。<br>\r
120          * すでに停止している場合はNullPointerExceptionをスローします。\r
121          */\r
122         public void startAutoSave() {\r
123                 try {\r
124                         this.thread.start();\r
125                 } catch (IllegalThreadStateException e) {\r
126                 }\r
127         }\r
128 \r
129         /**\r
130          * プラントデータ自動セーブを停止します。<br>\r
131          * 開始していない、もしくはすでに停止している場合はNullPointerExceptionをスローします。\r
132          */\r
133         public void stopAutoSave() {\r
134                 this.thread.stop();\r
135         }\r
136 \r
137 }\r