package makeo.gadomancy.common.network.packets; import cpw.mods.fml.common.network.simpleimpl.IMessage; import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; 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 makeo.gadomancy.client.util.MultiTickEffectDispatcher; import makeo.gadomancy.client.util.UtilsFX; import makeo.gadomancy.common.blocks.tiles.TileExtendedNode; import makeo.gadomancy.common.blocks.tiles.TileInfusionClaw; import makeo.gadomancy.common.utils.ExplosionHelper; import net.minecraft.client.Minecraft; import net.minecraft.tileentity.TileEntity; import thaumcraft.common.Thaumcraft; /** * This class is part of the Gadomancy Mod * Gadomancy is Open Source and distributed under the * GNU LESSER GENERAL PUBLIC LICENSE * for more read the LICENSE file * * Created by makeo @ 11.10.2015 15:19 */ public class PacketStartAnimation implements IMessage, IMessageHandler<PacketStartAnimation, IMessage> { public static final byte ID_INFUSIONCLAW = 0; public static final byte ID_EX_VORTEX = 1; public static final byte ID_BURST = 2; public static final byte ID_RUNES = 3; public static final byte ID_SPARKLE_SPREAD = 4; public static final byte ID_SPARKLE = 5; public static final byte ID_SMOKE = 6; public static final byte ID_SMOKE_SPREAD = 7; public static final byte ID_BUBBLES = 8; private byte annimationId; private int x; private int y; private int z; private int additionalData; public PacketStartAnimation(byte annimationId, int x, int y, int z) { this(annimationId, x, y, z, (byte) 0); } public PacketStartAnimation(byte annimationId, int x, int y, int z, int additionalData) { this.annimationId = annimationId; this.x = x; this.y = y; this.z = z; this.additionalData = additionalData; } public PacketStartAnimation() {} @Override public void fromBytes(ByteBuf buf) { this.annimationId = buf.readByte(); this.x = buf.readInt(); this.y = buf.readInt(); this.z = buf.readInt(); this.additionalData = buf.readInt(); } @Override public void toBytes(ByteBuf buf) { buf.writeByte(annimationId); buf.writeInt(x); buf.writeInt(y); buf.writeInt(z); buf.writeInt(additionalData); } @Override @SideOnly(Side.CLIENT) public IMessage onMessage(PacketStartAnimation message, MessageContext ctx) { switch (message.annimationId) { case ID_INFUSIONCLAW: TileInfusionClaw tile = (TileInfusionClaw) Minecraft.getMinecraft().theWorld.getTileEntity(message.x, message.y, message.z); if(tile != null) { tile.animationStates[8] = 1; } break; case ID_EX_VORTEX: TileEntity te = Minecraft.getMinecraft().theWorld.getTileEntity(message.x, message.y, message.z); if(te == null || !(te instanceof TileExtendedNode)) return null; ExplosionHelper.VortexExplosion.vortexLightning((TileExtendedNode) te); break; case ID_BURST: Thaumcraft.proxy.burst(Minecraft.getMinecraft().theWorld, message.x + 0.5F, message.y + 0.5F, message.z + 0.5F, Minecraft.getMinecraft().theWorld.rand.nextInt(3) + 1); break; case ID_RUNES: UtilsFX.doRuneEffects(Minecraft.getMinecraft().theWorld, message.x, message.y, message.z, message.additionalData); break; case ID_SPARKLE_SPREAD: UtilsFX.doSparkleEffectsAround(Minecraft.getMinecraft().theWorld, message.x, message.y, message.z); break; case ID_SPARKLE: UtilsFX.doSparkleEffects(Minecraft.getMinecraft().theWorld, message.x, message.y, message.z); break; case ID_SMOKE: UtilsFX.doSmokeEffects(Minecraft.getMinecraft().theWorld, message.x, message.y, message.z, Float.intBitsToFloat(message.additionalData)); break; case ID_SMOKE_SPREAD: UtilsFX.doSmokeEffectsAround(Minecraft.getMinecraft().theWorld, message.x, message.y, message.z, Float.intBitsToFloat(message.additionalData)); break; case ID_BUBBLES: MultiTickEffectDispatcher.BubbleFXInfo bubbles = new MultiTickEffectDispatcher.BubbleFXInfo(Minecraft.getMinecraft().theWorld.provider.dimensionId, Float.intBitsToFloat(message.x), Float.intBitsToFloat(message.y), Float.intBitsToFloat(message.z), 10, Float.intBitsToFloat(message.additionalData)); MultiTickEffectDispatcher.registerBubbles(bubbles); break; } return null; } }