package kpc.common;
import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.SidedProxy;
import cpw.mods.fml.common.event.FMLInitializationEvent;
import cpw.mods.fml.common.event.FMLPostInitializationEvent;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
import cpw.mods.fml.common.event.FMLServerStartingEvent;
import cpw.mods.fml.common.network.FMLEventChannel;
import cpw.mods.fml.common.network.NetworkRegistry;
import cpw.mods.fml.common.network.internal.FMLProxyPacket;
import cpw.mods.fml.common.registry.EntityRegistry;
import cpw.mods.fml.common.registry.GameRegistry;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import kpc.api.fs.MountRegistry;
import kpc.common.blocks.BlockComputer;
import kpc.common.blocks.BlockIOExpander;
import kpc.common.computer.fs.Ext9001ResourceMount;
import kpc.common.computer.fs.Ext9001UsrMount;
import kpc.common.core.ClientComputerRegistry;
import kpc.common.core.ServerComputerRegistry;
import kpc.common.entity.EntityRobit;
import kpc.common.items.ItemRobit;
import kpc.common.items.ItemScrewdriver;
import kpc.common.net.KPCPacket;
import kpc.common.net.KPCPacketHandler;
import kpc.common.tile.TileEntityComputer;
import kpc.common.tile.TileEntityIOExpander;
import net.minecraft.block.Block;
import net.minecraft.item.Item;
import net.minecraftforge.common.MinecraftForge;
import java.io.IOException;
@Mod(
modid = KPComputers.modid,
name = "KPComputers",
version = KPComputers.version,
useMetadata = true
)
public final class KPComputers{
@Mod.Instance(KPComputers.modid)
public static KPComputers instance;
@SidedProxy(
clientSide = "kpc.client.ClientProxy",
serverSide = "kpc.common.CommonProxy"
)
public static CommonProxy proxy;
public static FMLEventChannel channel;
public static final String modid = "kpc";
public static final String version = "0.0.1.0";
public static final ServerComputerRegistry serverComputerRegistry = new ServerComputerRegistry();
public static final ClientComputerRegistry clientComputerRegistry = new ClientComputerRegistry();
public static final Block blockComputer = new BlockComputer();
public static final Block blockIOExpander = new BlockIOExpander();
public static final Item itemRobit = new ItemRobit();
public static final Item itemScrewdriver = new ItemScrewdriver();
@Mod.EventHandler
public void preInit(FMLPreInitializationEvent e){
channel = NetworkRegistry.INSTANCE.newEventDrivenChannel(KPComputers.modid);
channel.register(new KPCPacketHandler());
proxy.init();
}
@Mod.EventHandler
public void init(FMLInitializationEvent e){
GameRegistry.registerItem(itemScrewdriver, "itemScrewdriver");
GameRegistry.registerItem(itemRobit, "itemRobit");
GameRegistry.registerBlock(blockComputer, "blockComputer");
GameRegistry.registerBlock(blockIOExpander, "blockIOExpander");
GameRegistry.registerTileEntity(TileEntityComputer.class, "tileComputer");
GameRegistry.registerTileEntity(TileEntityIOExpander.class, "tileIOExpander");
NetworkRegistry.INSTANCE.registerGuiHandler(KPComputers.instance, new KPCGuiHandler());
EntityRegistry.registerModEntity(EntityRobit.class, "robit", 127, KPComputers.instance, 80, 3, false);
KPComputers.proxy.init();
}
@Mod.EventHandler
public void postInit(FMLPostInitializationEvent e){
FMLCommonHandler.instance().bus().register(KPCTickHandler.instance());
MinecraftForge.EVENT_BUS.register(KPCTickHandler.instance());
MinecraftForge.EVENT_BUS.register(KPCEventHandler.instance());
}
@Mod.EventHandler
public void serverStarting(FMLServerStartingEvent e){
try {
MountRegistry.mount("/", new Ext9001ResourceMount("root"));
MountRegistry.mount("/bin", new Ext9001ResourceMount("bin"));
MountRegistry.mount("/usr", new Ext9001UsrMount());
} catch(IOException e1){
throw new RuntimeException("/usr couldn't be mounted", e1);
}
}
public static FMLProxyPacket encode(KPCPacket packet){
ByteBuf buffer = Unpooled.buffer();
packet.toBytes(buffer);
return new FMLProxyPacket(buffer, KPComputers.modid);
}
}