OSDN Git Service

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