package matteroverdrive.network.packet.client; 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.client.render.RenderParticlesHandler; import matteroverdrive.fx.AndroidTeleportParticle; import matteroverdrive.fx.ShockwaveParticle; import matteroverdrive.network.packet.PacketAbstract; import matteroverdrive.proxy.ClientProxy; import net.minecraft.client.particle.EntityFX; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.world.World; /** * Created by Simeon on 6/2/2015. */ public class PacketSpawnParticle extends PacketAbstract { String particleType; double x,y,z; int count; int blending; float size; public PacketSpawnParticle() { } public PacketSpawnParticle(String particleType, double x, double y, double z, int count, int blending) { this(particleType,x,y,z,count,blending,0); } public PacketSpawnParticle(String particleType, double x, double y, double z, int count, int blending,float size) { this.particleType = particleType; this.x = x; this.y = y; this.z = z; this.count = count; this.blending = blending; this.size = size; } @Override public void fromBytes(ByteBuf buf) { particleType = ByteBufUtils.readUTF8String(buf); x = buf.readDouble(); y = buf.readDouble(); z = buf.readDouble(); count = buf.readInt(); blending = buf.readByte(); size = buf.readableBytes(); } @Override public void toBytes(ByteBuf buf) { ByteBufUtils.writeUTF8String(buf,particleType); buf.writeDouble(x); buf.writeDouble(y); buf.writeDouble(z); buf.writeInt(count); buf.writeByte(blending); buf.writeFloat(size); } public static class ClientHandler extends AbstractClientPacketHandler<PacketSpawnParticle> { @Override public IMessage handleClientMessage(EntityPlayer player, PacketSpawnParticle message, MessageContext ctx) { spawnParticle(player.worldObj,message); return null; } @SideOnly(Side.CLIENT) public void spawnParticle(World world,PacketSpawnParticle message) { EntityFX particle = null; if (message.particleType.equalsIgnoreCase("teleport")) { particle = new AndroidTeleportParticle(world,message.x,message.y,message.z); }else if (message.particleType.equalsIgnoreCase("shockwave")) { particle = new ShockwaveParticle(world,message.x,message.y,message.z,message.size); } if (particle != null) { ClientProxy.renderHandler.getRenderParticlesHandler().addEffect(particle, RenderParticlesHandler.Blending.values()[message.blending]); } } } }