package com.bioxx.tfc2.networking.client;
import io.netty.buffer.ByteBuf;
import net.minecraft.util.IThreadListener;
import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler;
import net.minecraftforge.fml.common.network.simpleimpl.MessageContext;
import com.bioxx.tfc2.api.interfaces.IFoodStatsTFC;
import com.bioxx.tfc2.api.types.EnumFoodGroup;
public class CFoodPacket implements IMessage
{
public float Grain;
public float nutritionFruit;
public float nutritionVeg;
public float nutritionGrain;
public float nutritionProtein;
public float nutritionDairy;
public float waterLevel;
public CFoodPacket()
{
}
public CFoodPacket(IFoodStatsTFC stats)
{
nutritionFruit = stats.getNutritionMap().get(EnumFoodGroup.Fruit);
nutritionVeg = stats.getNutritionMap().get(EnumFoodGroup.Vegetable);
nutritionGrain = stats.getNutritionMap().get(EnumFoodGroup.Grain);
nutritionProtein = stats.getNutritionMap().get(EnumFoodGroup.Protein);
nutritionDairy = stats.getNutritionMap().get(EnumFoodGroup.Dairy);
waterLevel = stats.getWaterLevel();
}
@Override
public void toBytes(ByteBuf buffer)
{
buffer.writeFloat(nutritionFruit);
buffer.writeFloat(nutritionVeg);
buffer.writeFloat(nutritionGrain);
buffer.writeFloat(nutritionProtein);
buffer.writeFloat(nutritionDairy);
buffer.writeFloat(waterLevel);
}
@Override
public void fromBytes(ByteBuf buffer)
{
this.nutritionFruit = buffer.readFloat();
this.nutritionVeg = buffer.readFloat();
this.nutritionGrain = buffer.readFloat();
this.nutritionProtein = buffer.readFloat();
this.nutritionDairy = buffer.readFloat();
this.waterLevel = buffer.readFloat();
}
public static class Handler implements IMessageHandler<CFoodPacket, IMessage>
{
@Override
public IMessage onMessage(final CFoodPacket message, MessageContext ctx) {
IThreadListener mainThread = net.minecraft.client.Minecraft.getMinecraft(); //(WorldServer) ctx.getServerHandler().playerEntity.worldObj; // or Minecraft.getMinecraft() on the client
mainThread.addScheduledTask(new Runnable()
{
@Override
public void run()
{
IFoodStatsTFC stats = (IFoodStatsTFC)net.minecraft.client.Minecraft.getMinecraft().thePlayer.getFoodStats();
stats.getNutritionMap().put(EnumFoodGroup.Fruit, message.nutritionFruit);
stats.getNutritionMap().put(EnumFoodGroup.Vegetable, message.nutritionVeg);
stats.getNutritionMap().put(EnumFoodGroup.Grain, message.nutritionGrain);
stats.getNutritionMap().put(EnumFoodGroup.Protein, message.nutritionProtein);
stats.getNutritionMap().put(EnumFoodGroup.Dairy, message.nutritionDairy);
stats.setWaterLevel(message.waterLevel);
}
});
return null; // no response in this case
}
}
}