package matteroverdrive.network.packet.client.starmap; import cpw.mods.fml.common.network.ByteBufUtils; import cpw.mods.fml.common.network.simpleimpl.IMessage; import cpw.mods.fml.common.network.simpleimpl.MessageContext; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; import matteroverdrive.gui.GuiStarMap; import matteroverdrive.network.packet.PacketAbstract; import matteroverdrive.network.packet.client.AbstractClientPacketHandler; import matteroverdrive.starmap.GalaxyClient; import matteroverdrive.starmap.data.Galaxy; import matteroverdrive.starmap.data.Planet; import matteroverdrive.starmap.data.Quadrant; import matteroverdrive.starmap.data.Star; import net.minecraft.client.Minecraft; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; /** * Created by Simeon on 6/15/2015. */ public class PacketUpdatePlanet extends PacketAbstract { int planetID; int starID; int quadrantID; boolean updateHomeworlds; NBTTagCompound planetData; public PacketUpdatePlanet() { } public PacketUpdatePlanet(Planet planet) { this(planet,false); } public PacketUpdatePlanet(Planet planet,boolean updateHomeworlds) { planetID = planet.getId(); starID = planet.getStar().getId(); quadrantID = planet.getStar().getQuadrant().getId(); planetData = new NBTTagCompound(); this.updateHomeworlds = updateHomeworlds; planet.writeToNBT(planetData); } @Override public void fromBytes(ByteBuf buf) { planetID = buf.readInt(); starID = buf.readInt(); quadrantID = buf.readInt(); updateHomeworlds = buf.readBoolean(); planetData = ByteBufUtils.readTag(buf); } @Override public void toBytes(ByteBuf buf) { buf.writeInt(planetID); buf.writeInt(starID); buf.writeInt(quadrantID); buf.writeBoolean(updateHomeworlds); ByteBufUtils.writeTag(buf,planetData); } public static class ClientHandler extends AbstractClientPacketHandler<PacketUpdatePlanet> { @Override public IMessage handleClientMessage(EntityPlayer player, PacketUpdatePlanet message, MessageContext ctx) { Galaxy galaxy = GalaxyClient.getInstance().getTheGalaxy(); if (galaxy != null) { Quadrant quadrant = galaxy.quadrant(message.quadrantID); if (quadrant != null) { Star star = quadrant.star(message.starID); if (star != null) { Planet planet = star.planet(message.planetID); if (planet == null) { planet = new Planet(); planet.readFromNBT(message.planetData,null); star.addPlanet(planet); } else { planet.readFromNBT(message.planetData,null); } notifyChange(planet); } } if (message.updateHomeworlds) { GalaxyClient.getInstance().loadClaimedPlanets(); } } return null; } @SideOnly(Side.CLIENT) private void notifyChange(Planet planet) { if (Minecraft.getMinecraft().currentScreen instanceof GuiStarMap) { GuiStarMap guiStarMap = (GuiStarMap)Minecraft.getMinecraft().currentScreen; guiStarMap.onPlanetChange(planet); } } } }