/* * Copyright (c) CovertJaguar, 2014 http://railcraft.info * * This code is the property of CovertJaguar * and may only be used with explicit written * permission unless otherwise specified on the * license page at http://railcraft.info/wiki/info:license. */ package mods.railcraft.common.util.network; import cpw.mods.fml.common.network.NetworkRegistry; import java.io.ByteArrayOutputStream; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; import net.minecraft.world.World; import mods.railcraft.common.util.effects.EffectManager; public class PacketEffect extends RailcraftPacket { public enum Effect { TELEPORT, FIRESPARK, FORCE_SPAWN }; private Effect effect; private ByteArrayOutputStream bytes; private DataOutputStream outStream; public PacketEffect() { super(); } public PacketEffect(Effect effect) { this.effect = effect; } public DataOutputStream getOutputStream() { if (outStream == null) { bytes = new ByteArrayOutputStream(); outStream = new DataOutputStream(bytes); } return outStream; } public void sendPacket(World world, double x, double y, double z) { PacketDispatcher.sendToAllAround(this, new NetworkRegistry.TargetPoint(world.provider.dimensionId, x, y, z, 80)); } @Override public void writeData(DataOutputStream data) throws IOException { data.writeByte(effect.ordinal()); data.write(bytes.toByteArray()); } @Override public void readData(DataInputStream data) throws IOException { EffectManager.instance.handleEffectPacket(data); } @Override public int getID() { return PacketType.EFFECT.ordinal(); } }