1 package asia.tcrs.ccnp.addon.crops;
\r
3 import java.io.IOException;
\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
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
24 @Mod(modid="ChemiCraftNextCrops", name="ChemiCraftNextCrops", version="v1.0.0")
\r
25 @NetworkMod(clientSideRequired = true, serverSideRequired = false)
\r
26 public class ChemicalCrops {
\r
28 @Instance("ChemiCraftNextCrops")
\r
29 public static ChemicalCrops instance;
\r
31 @SidedProxy(clientSide = "asia.tcrs.ccnp.addon.crops.ClientProxy", serverSide = "asia.tcrs.ccnp.addon.crops.CommonProxy")
\r
32 public static CommonProxy proxy;
\r
37 public int crops1ID;
\r
40 * ChemicalCropsの変数。<br>
\r
41 * ここに入るインスタンスはBlockChemicalCropsと保証されます。
\r
43 private Block blockCrops1;
\r
46 * プラントデータ書き込み&読み込みのストリーム
\r
48 private static MultiBlockDataStream dataStream;
\r
53 public static final String TEXTURE = "ChemicalCrops:";
\r
56 * プラントデータ自動セーブ用のスレッド
\r
58 private Thread thread;
\r
61 * Minecraftのディレクトリパス
\r
63 private static String MINECRAFT_DIR;
\r
65 public ChemicalCrops() {
\r
66 this.thread = new Thread() {
\r
71 dataStream.createDataOutputStream();
\r
73 } catch (IOException e1) {
\r
74 e1.printStackTrace();
\r
78 } catch (InterruptedException e) {
\r
79 e.printStackTrace();
\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
92 Configuration cfg = new Configuration(event.getSuggestedConfigurationFile());
\r
94 this.crops1ID = cfg.getBlock("CropsID", 2700).getInt();
\r
99 public void init(FMLInitializationEvent event) {
\r
101 MinecraftForge.EVENT_BUS.register(new WorldEventHandler());
\r
104 this.blockCrops1 = new BlockChemicalCrops1(this.crops1ID, Material.plants).setUnlocalizedName("BlockCrops");
\r
107 GameRegistry.registerBlock(this.blockCrops1, "BlockCrops");
\r
114 public static MultiBlockDataStream getDataStream() {
\r
119 * プラントデータ自動セーブを開始します。<br>
\r
120 * すでに停止している場合はNullPointerExceptionをスローします。
\r
122 public void startAutoSave() {
\r
124 this.thread.start();
\r
125 } catch (IllegalThreadStateException e) {
\r
130 * プラントデータ自動セーブを停止します。<br>
\r
131 * 開始していない、もしくはすでに停止している場合はNullPointerExceptionをスローします。
\r
133 public void stopAutoSave() {
\r
134 this.thread.stop();
\r