package com.arkcraft.module.core.common.network; import io.netty.buffer.ByteBuf; import net.minecraft.client.Minecraft; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; import net.minecraftforge.fml.common.network.ByteBufUtils; 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 net.minecraftforge.fml.relauncher.Side; import com.arkcraft.module.core.ARKCraft; import com.arkcraft.module.core.common.entity.data.ARKPlayer; /** * @author gegy1000 */ public class SyncPlayerData implements IMessage { private NBTTagCompound nbt; /** * Don't use */ public SyncPlayerData() { } public SyncPlayerData(boolean all, ARKPlayer player) { this.nbt = new NBTTagCompound(); player.saveNBTData(nbt); } @Override public void fromBytes(ByteBuf buf) { nbt = ByteBufUtils.readTag(buf); } @Override public void toBytes(ByteBuf buf) { ByteBufUtils.writeTag(buf, nbt); } public static class Handler implements IMessageHandler<SyncPlayerData, IMessage> { @Override public IMessage onMessage(final SyncPlayerData message, MessageContext ctx) { if (ctx.side != Side.CLIENT) { System.err.println("SyncPlayerData received on wrong side:" + ctx.side); return null; } final EntityPlayer player = ARKCraft.proxy.getPlayer(); Minecraft.getMinecraft().addScheduledTask(new Runnable() { public void run() { processMessage(message, player); } }); return null; } } static void processMessage(SyncPlayerData message, EntityPlayer player) { if (player != null) { ARKPlayer.get(player).loadNBTData(message.nbt); } } }