package mods.recipear;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.logging.Logger;
import mods.recipear.api.RecipearEvent;
import mods.recipear.api.RecipearListener;
import net.minecraft.command.ServerCommandManager;
import net.minecraft.network.packet.Packet250CustomPayload;
import net.minecraft.server.MinecraftServer;
import net.minecraftforge.common.MinecraftForge;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.EventHandler;
import cpw.mods.fml.common.SidedProxy;
import cpw.mods.fml.common.event.FMLInitializationEvent;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
import cpw.mods.fml.common.event.FMLServerStartingEvent;
import cpw.mods.fml.common.network.NetworkMod;
import cpw.mods.fml.common.network.NetworkRegistry;
import cpw.mods.fml.common.registry.GameRegistry;
import cpw.mods.fml.common.registry.TickRegistry;
import cpw.mods.fml.relauncher.Side;
@Mod(modid = "Recipear2", name = "Recipear2", version = "2.3.1", dependencies="required-after:Forge@[9.10,)")
@NetworkMod(clientSideRequired = false, serverSideRequired = false, channels = {"recipear"}, packetHandler = PacketManager.class)
public class Recipear
{
public static RecipearListener events = new RecipearListener();
@SidedProxy(clientSide="mods.recipear.RecipearClientProxy", serverSide="mods.recipear.RecipearCommonProxy")
public static RecipearCommonProxy proxy;
public static RecipearConfig config;
public static RecipearPlayerTick playertick = new RecipearPlayerTick();
public static RecipearPlayerTracker playertracker = new RecipearPlayerTracker();
public static String mcDataDir = "";
public static RecipearTooltip tooltip = new RecipearTooltip();
@EventHandler
public void preInit(FMLPreInitializationEvent event)
{
String date = new SimpleDateFormat("yyyyMMdd").format(Calendar.getInstance().getTime());
mcDataDir = event.getModConfigurationDirectory().getParentFile().getAbsolutePath();
BannedRecipes.AddBannedRecipeType("INVENTORY");
RecipearLogger.setLogger(Logger.getLogger("Recipear"), new File(mcDataDir, "Recipear-" + (proxy.isServer() ? "server" : "client") + ".log").getAbsolutePath());
if(proxy.isServer()) {
config = new RecipearConfig();
config.init(event);
}
}
@EventHandler
public void init(FMLInitializationEvent event)
{
if(!proxy.isServer()) {
MinecraftForge.EVENT_BUS.register(tooltip);
}
}
@EventHandler
void ServerStartingEvent(FMLServerStartingEvent event) {
if (!proxy.isSinglePlayer()) {
events.trigger(new RecipearEvent(Side.SERVER, false));
if(RecipearConfig.removeIngame) {
playertracker.active = true;
GameRegistry.registerPlayerTracker(playertracker);
playertick.active = true;
TickRegistry.registerScheduledTickHandler(playertick, Side.SERVER);
}
ServerCommandManager serverCommand = (ServerCommandManager)MinecraftServer.getServer().getCommandManager();
serverCommand.registerCommand(new RecipearCommand());
NetworkRegistry.instance().registerConnectionHandler(new ConnectionHandler());
}
}
public static Packet250CustomPayload getPacket(ConfigPacket object) {
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
ObjectOutputStream data = null;
try {
data = new ObjectOutputStream(bytes);
} catch (IOException e1) {
e1.printStackTrace();
}
try {
data.writeObject(object);
} catch (IOException e) {
e.printStackTrace();
}
Packet250CustomPayload packet = new Packet250CustomPayload();
packet.channel = "recipear";
packet.data = bytes.toByteArray();
packet.length = bytes.size();
return packet;
}
}