BloodMagic/BM_src/WayofTime/alchemicalWizardry/common/PacketHandler.java
2014-01-17 14:12:49 -05:00

1016 lines
34 KiB
Java

package WayofTime.alchemicalWizardry.common;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.util.Random;
import WayofTime.alchemicalWizardry.common.bloodAltarUpgrade.UpgradedAltars;
import WayofTime.alchemicalWizardry.common.tileEntity.TEAltar;
import WayofTime.alchemicalWizardry.common.tileEntity.TEOrientable;
import WayofTime.alchemicalWizardry.common.tileEntity.TEPedestal;
import WayofTime.alchemicalWizardry.common.tileEntity.TEPlinth;
import WayofTime.alchemicalWizardry.common.tileEntity.TESocket;
import WayofTime.alchemicalWizardry.common.tileEntity.TETeleposer;
import WayofTime.alchemicalWizardry.common.tileEntity.TEWritingTable;
import com.google.common.io.ByteArrayDataInput;
import com.google.common.io.ByteStreams;
import net.minecraft.block.Block;
import net.minecraft.client.Minecraft;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.network.INetworkManager;
import net.minecraft.network.packet.Packet;
import net.minecraft.network.packet.Packet250CustomPayload;
import net.minecraft.server.MinecraftServer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ChatMessageComponent;
import net.minecraft.util.DamageSource;
import net.minecraft.world.World;
import net.minecraftforge.common.ForgeDirection;
import net.minecraftforge.fluids.Fluid;
import net.minecraftforge.fluids.FluidStack;
import cpw.mods.fml.common.network.IPacketHandler;
import cpw.mods.fml.common.network.PacketDispatcher;
import cpw.mods.fml.common.network.Player;
public class PacketHandler implements IPacketHandler
{
@Override
public void onPacketData(INetworkManager manager, Packet250CustomPayload packet, Player player)
{
if (packet.channel.equals("BloodAltar"))
{
ByteArrayDataInput dat = ByteStreams.newDataInput(packet.data);
int x = dat.readInt();
int y = dat.readInt();
int z = dat.readInt();
boolean hasStacks = dat.readByte() != 0;
int[] items = new int[0];
if (hasStacks)
{
items = new int[1 * 3];
for (int i = 0; i < items.length; i++)
{
items[i] = dat.readInt();
}
}
int fluidIDMain = dat.readInt();
int fluidAmountMain = dat.readInt();
int fluidIDOutput = dat.readInt();
int fluidAmountOutput = dat.readInt();
int fluidIDInput = dat.readInt();
int fluidAmountInput = dat.readInt();
int capacity = dat.readInt();
World world = AlchemicalWizardry.proxy.getClientWorld();
TileEntity tileEntity = world.getBlockTileEntity(x, y, z);
if (tileEntity instanceof TEAltar)
{
TEAltar tileEntityAltar = (TEAltar) tileEntity;
FluidStack flMain = new FluidStack(fluidIDMain, fluidAmountMain);
FluidStack flOutput = new FluidStack(fluidIDOutput, fluidAmountOutput);
FluidStack flInput = new FluidStack(fluidIDInput, fluidAmountInput);
tileEntityAltar.handlePacketData(items, flMain, flOutput, flInput, capacity);
}
}
else if (packet.channel.equals("FallReset"))
{
if (player instanceof EntityPlayer)
{
((EntityPlayer)player).fallDistance = 0;
}
}
else if (packet.channel.equals("particle"))
{
ByteArrayInputStream bin = new ByteArrayInputStream(packet.data);
DataInputStream din = new DataInputStream(bin);
Random rand = new Random();
try
{
double x = din.readDouble();
double y = din.readDouble();
double z = din.readDouble();
short particleType = din.readShort();
World world = ((EntityPlayer)player).worldObj;
if (particleType == 1)
{
world.spawnParticle("mobSpell", x + 0.5D + rand.nextGaussian() / 8, y + 1.1D, z + 0.5D + rand.nextGaussian() / 8, 0.5117D, 0.0117D, 0.0117D);
}
if (particleType == 2)
{
world.spawnParticle("reddust", x + 0.5D + rand.nextGaussian() / 8, y + 1.1D, z + 0.5D + rand.nextGaussian() / 8, 0.82D, 0.941D, 0.91D);
}
if (particleType == 3)
{
world.spawnParticle("mobSpell", x + 0.5D + rand.nextGaussian() / 8, y + 1.1D, z + 0.5D + rand.nextGaussian() / 8, 1.0D, 0.371D, 0.371D);
}
if (particleType == 4)
{
float f = (float)1.0F;
float f1 = f * 0.6F + 0.4F;
float f2 = f * f * 0.7F - 0.5F;
float f3 = f * f * 0.6F - 0.7F;
for (int l = 0; l < 8; ++l)
{
world.spawnParticle("reddust", x + Math.random() - Math.random(), y + Math.random() - Math.random(), z + Math.random() - Math.random(), f1, f2, f3);
}
}
}
catch (IOException e)
{
e.printStackTrace();
}
}
else if (packet.channel.equals("CustomParticle"))
{
ByteArrayInputStream bin = new ByteArrayInputStream(packet.data);
DataInputStream din = new DataInputStream(bin);
Random rand = new Random();
try
{
World world = ((EntityPlayer)player).worldObj;
int size = din.readInt();
String str = "";
for (int i = 0; i < size; i++)
{
str = str + din.readChar();
}
double x = din.readDouble();
double y = din.readDouble();
double z = din.readDouble();
double xVel = din.readDouble();
double yVel = din.readDouble();
double zVel = din.readDouble();
world.spawnParticle(str, x, y, z, xVel, yVel, zVel);
}
catch (IOException e)
{
e.printStackTrace();
}
}
else if (packet.channel.equals("SetLifeEssence")) //Sets the data for the character
{
ByteArrayInputStream bin = new ByteArrayInputStream(packet.data);
DataInputStream din = new DataInputStream(bin);
try
{
EntityPlayer user = (EntityPlayer)player;
int length = din.readInt();
String ownerName = "";
for (int i = 0; i < length; i++)
{
ownerName = ownerName + din.readChar();
}
int addedEssence = din.readInt();
int maxEssence = din.readInt();
World world = MinecraftServer.getServer().worldServers[0];
LifeEssenceNetwork data = (LifeEssenceNetwork)world.loadItemData(LifeEssenceNetwork.class, ownerName);
if (data == null)
{
data = new LifeEssenceNetwork(ownerName);
world.setItemData(ownerName, data);
}
if (addedEssence > 0)
{
if (data.currentEssence < maxEssence)
{
data.currentEssence = Math.min(maxEssence, data.currentEssence + addedEssence);
data.markDirty();
}
if (!user.capabilities.isCreativeMode)
{
for (int i = 0; i < ((addedEssence + 99) / 100); i++)
{
//player.setEntityHealth((player.getHealth()-1));
user.setHealth((user.getHealth() - 1));
if (user.getHealth() <= 0.5f)
{
//user.inventory.dropAllItems();
user.onDeath(DamageSource.generic);
return;
}
}
}
}
else
{
int removedEssence = -addedEssence;
if ((data.currentEssence - removedEssence) >= 0)
{
data.currentEssence -= removedEssence;
data.markDirty();
}
else
{
if (removedEssence >= 100)
{
for (int i = 0; i < ((removedEssence + 99) / 100); i++)
{
//player.setEntityHealth((player.getHealth()-1));
user.setHealth((user.getHealth() - 1));
if (user.getHealth() <= 0.5f)
{
//user.inventory.dropAllItems();
user.onDeath(DamageSource.generic);
return;
}
}
}
else
{
if (user.worldObj.rand.nextInt(100) <= removedEssence)
{
user.setHealth((user.getHealth() - 1));
if (user.getHealth() <= 0.5f)
{
//user.inventory.dropAllItems();
user.onDeath(DamageSource.generic);
return;
}
}
}
}
}
//PacketDispatcher.sendPacketToPlayer(PacketHandler.getPacket(ownerName), (Player)user);
// data.currentEssence = addedEssence;
// data.markDirty();
}
catch (IOException e)
{
e.printStackTrace();
}
}
else if (packet.channel.equals("InfiniteLPPath"))
{
ByteArrayInputStream bin = new ByteArrayInputStream(packet.data);
DataInputStream din = new DataInputStream(bin);
try
{
EntityPlayer user = (EntityPlayer)player;
int length = din.readInt();
String ownerName = "";
for (int i = 0; i < length; i++)
{
ownerName = ownerName + din.readChar();
}
boolean fill = din.readBoolean();
World world = MinecraftServer.getServer().worldServers[0];
LifeEssenceNetwork data = (LifeEssenceNetwork)world.loadItemData(LifeEssenceNetwork.class, ownerName);
if (data == null)
{
data = new LifeEssenceNetwork(ownerName);
world.setItemData(ownerName, data);
}
if (fill)
{
data.currentEssence += 1000000;
data.markDirty();
}
else
{
data.currentEssence = 0;
data.markDirty();
}
//PacketDispatcher.sendPacketToPlayer(PacketHandler.getPacket(ownerName), (Player)user);
// data.currentEssence = addedEssence;
// data.markDirty();
}
catch (IOException e)
{
e.printStackTrace();
}
}
else if (packet.channel.equals("GetLifeEssence"))
{
ByteArrayInputStream bin = new ByteArrayInputStream(packet.data);
DataInputStream din = new DataInputStream(bin);
try
{
int length = din.readInt();
String ownerName = "";
for (int i = 0; i < length; i++)
{
ownerName = ownerName + din.readChar();
}
World world = MinecraftServer.getServer().worldServers[0];
LifeEssenceNetwork data = (LifeEssenceNetwork)world.loadItemData(LifeEssenceNetwork.class, ownerName);
if (data == null)
{
data = new LifeEssenceNetwork(ownerName);
world.setItemData(ownerName, data);
}
if (player instanceof EntityPlayer)
{
EntityPlayer owner = (EntityPlayer)player;
ChatMessageComponent chatmessagecomponent = new ChatMessageComponent();
//chatmessagecomponent.func_111072_b("Current Essence: " + data.currentEssence + "LP");
chatmessagecomponent.addText("Current Essence: " + data.currentEssence + "LP");
owner.sendChatToPlayer(chatmessagecomponent);
}
}
catch (IOException e)
{
e.printStackTrace();
}
}
else if (packet.channel.equals("GetAltarEssence"))
{
ByteArrayInputStream bin = new ByteArrayInputStream(packet.data);
DataInputStream din = new DataInputStream(bin);
try
{
int x = din.readInt();
int y = din.readInt();
int z = din.readInt();
if (player instanceof EntityPlayer)
{
EntityPlayer owner = (EntityPlayer)player;
World world = owner.worldObj;
TEAltar tileEntity = (TEAltar)world.getBlockTileEntity(x, y, z);
if (tileEntity != null)
{
int level = UpgradedAltars.isAltarValid(world, x, y, z);
ChatMessageComponent chatmessagecomponent = new ChatMessageComponent();
chatmessagecomponent.addText("Altar's Current Essence: " + tileEntity.getFluidAmount() + "LP" + "\n" + "Altar's Current Tier: " + level + "\nCapacity: " + tileEntity.getCapacity() + "LP");
//chatmessagecomponent.addText();
owner.sendChatToPlayer(chatmessagecomponent);
}
}
}
catch (IOException e)
{
e.printStackTrace();
}
}
else if (packet.channel.equals("TESocket"))
{
ByteArrayDataInput dat = ByteStreams.newDataInput(packet.data);
int x = dat.readInt();
int y = dat.readInt();
int z = dat.readInt();
boolean hasStacks = dat.readByte() != 0;
int[] items = new int[0];
if (hasStacks)
{
items = new int[1 * 3];
for (int i = 0; i < items.length; i++)
{
items[i] = dat.readInt();
}
}
World world = AlchemicalWizardry.proxy.getClientWorld();
TileEntity tileEntity = world.getBlockTileEntity(x, y, z);
if (tileEntity instanceof TESocket)
{
TESocket tileEntityAltar = (TESocket) tileEntity;
tileEntityAltar.handlePacketData(items);
}
}
else if (packet.channel.equals("TEWritingTable"))
{
ByteArrayDataInput dat = ByteStreams.newDataInput(packet.data);
int x = dat.readInt();
int y = dat.readInt();
int z = dat.readInt();
boolean hasStacks = dat.readByte() != 0;
int[] items = new int[0];
if (hasStacks)
{
items = new int[7 * 3];
for (int i = 0; i < items.length; i++)
{
items[i] = dat.readInt();
}
}
World world = AlchemicalWizardry.proxy.getClientWorld();
TileEntity tileEntity = world.getBlockTileEntity(x, y, z);
if (tileEntity instanceof TEWritingTable)
{
TEWritingTable tileEntityAltar = (TEWritingTable) tileEntity;
tileEntityAltar.handlePacketData(items);
}
}
else if (packet.channel.equals("TEOrientor"))
{
ByteArrayDataInput dat = ByteStreams.newDataInput(packet.data);
int x = dat.readInt();
int y = dat.readInt();
int z = dat.readInt();
World world = AlchemicalWizardry.proxy.getClientWorld();
TileEntity tileEntity = world.getBlockTileEntity(x, y, z);
if (tileEntity instanceof TEOrientable)
{
TEOrientable tileEntityOrientable = (TEOrientable) tileEntity;
tileEntityOrientable.setInputDirection(ForgeDirection.getOrientation(dat.readInt()));
tileEntityOrientable.setOutputDirection(ForgeDirection.getOrientation(dat.readInt()));
}
}
else if (packet.channel.equals("TEPedestal"))
{
ByteArrayDataInput dat = ByteStreams.newDataInput(packet.data);
int x = dat.readInt();
int y = dat.readInt();
int z = dat.readInt();
boolean hasStacks = dat.readByte() != 0;
int[] items = new int[0];
if (hasStacks)
{
items = new int[1 * 3];
for (int i = 0; i < items.length; i++)
{
items[i] = dat.readInt();
}
}
World world = AlchemicalWizardry.proxy.getClientWorld();
TileEntity tileEntity = world.getBlockTileEntity(x, y, z);
if (tileEntity instanceof TEPedestal)
{
TEPedestal tileEntityAltar = (TEPedestal) tileEntity;
tileEntityAltar.handlePacketData(items);
}
}
else if (packet.channel.equals("TEPlinth"))
{
ByteArrayDataInput dat = ByteStreams.newDataInput(packet.data);
int x = dat.readInt();
int y = dat.readInt();
int z = dat.readInt();
boolean hasStacks = dat.readByte() != 0;
int[] items = new int[0];
if (hasStacks)
{
items = new int[1 * 3];
for (int i = 0; i < items.length; i++)
{
items[i] = dat.readInt();
}
}
World world = AlchemicalWizardry.proxy.getClientWorld();
TileEntity tileEntity = world.getBlockTileEntity(x, y, z);
if (tileEntity instanceof TEPlinth)
{
TEPlinth tileEntityAltar = (TEPlinth) tileEntity;
tileEntityAltar.handlePacketData(items);
}
}
else if (packet.channel.equals("TETeleposer"))
{
ByteArrayDataInput dat = ByteStreams.newDataInput(packet.data);
int x = dat.readInt();
int y = dat.readInt();
int z = dat.readInt();
boolean hasStacks = dat.readByte() != 0;
int[] items = new int[0];
if (hasStacks)
{
items = new int[1 * 3];
for (int i = 0; i < items.length; i++)
{
items[i] = dat.readInt();
}
}
World world = AlchemicalWizardry.proxy.getClientWorld();
TileEntity tileEntity = world.getBlockTileEntity(x, y, z);
if (tileEntity instanceof TETeleposer)
{
TETeleposer tileEntityAltar = (TETeleposer) tileEntity;
tileEntityAltar.handlePacketData(items);
}
}
else if (packet.channel.equals("SetPlayerVel"))
{
ByteArrayDataInput dat = ByteStreams.newDataInput(packet.data);
double xVel = dat.readDouble();
double yVel = dat.readDouble();
double zVel = dat.readDouble();
((EntityPlayer)player).setVelocity(xVel, yVel, zVel);
}
else if (packet.channel.equals("SetPlayerPos"))
{
ByteArrayDataInput dat = ByteStreams.newDataInput(packet.data);
double xVel = dat.readDouble();
double yVel = dat.readDouble();
double zVel = dat.readDouble();
((EntityPlayer)player).setPosition(xVel, yVel, zVel);
}
}
public static Packet getPacket(TEAltar tileEntity)
{
ByteArrayOutputStream bos = new ByteArrayOutputStream(140);
DataOutputStream dos = new DataOutputStream(bos);
int[] items = tileEntity.buildIntDataList();
boolean hasStacks = (items != null);
try
{
dos.writeInt(tileEntity.xCoord);
dos.writeInt(tileEntity.yCoord);
dos.writeInt(tileEntity.zCoord);
dos.writeByte(hasStacks ? 1 : 0);
if (hasStacks)
{
for (int i = 0; i < 3; i++)
{
dos.writeInt(items[i]);
}
}
FluidStack flMain = tileEntity.getFluid();
if (flMain == null)
{
dos.writeInt(AlchemicalWizardry.lifeEssenceFluid.getBlockID());
dos.writeInt(0);
}
else
{
dos.writeInt(flMain.fluidID);
dos.writeInt(flMain.amount);
}
FluidStack flOut = tileEntity.getOutputFluid();
if (flOut == null)
{
dos.writeInt(AlchemicalWizardry.lifeEssenceFluid.getBlockID());
dos.writeInt(0);
}
else
{
dos.writeInt(flOut.fluidID);
dos.writeInt(flOut.amount);
}
FluidStack flIn = tileEntity.getInputFluid();
if (flIn == null)
{
dos.writeInt(AlchemicalWizardry.lifeEssenceFluid.getBlockID());
dos.writeInt(0);
}
else
{
dos.writeInt(flIn.fluidID);
dos.writeInt(flIn.amount);
}
dos.writeInt(tileEntity.capacity);
}
catch (IOException e)
{
e.printStackTrace();
}
Packet250CustomPayload pkt = new Packet250CustomPayload();
pkt.channel = "BloodAltar";
pkt.data = bos.toByteArray();
pkt.length = bos.size();
pkt.isChunkDataPacket = true;
return pkt;
}
public static Packet getPacket(TESocket tileEntity)
{
ByteArrayOutputStream bos = new ByteArrayOutputStream(140);
DataOutputStream dos = new DataOutputStream(bos);
int[] items = tileEntity.buildIntDataList();
boolean hasStacks = (items != null);
try
{
dos.writeInt(tileEntity.xCoord);
dos.writeInt(tileEntity.yCoord);
dos.writeInt(tileEntity.zCoord);
dos.writeByte(hasStacks ? 1 : 0);
if (hasStacks)
{
for (int i = 0; i < 3; i++)
{
dos.writeInt(items[i]);
}
}
}
catch (IOException e)
{
e.printStackTrace();
}
Packet250CustomPayload pkt = new Packet250CustomPayload();
pkt.channel = "TESocket";
pkt.data = bos.toByteArray();
pkt.length = bos.size();
pkt.isChunkDataPacket = true;
return pkt;
}
public static Packet getPacket(String ownerName, int addedEssence, int maxEssence)
//Packet to be sent to server to change essence
{
ByteArrayOutputStream bos = new ByteArrayOutputStream(140);
DataOutputStream dos = new DataOutputStream(bos);
try
{
dos.writeInt(ownerName.length());
dos.writeChars(ownerName);
dos.writeInt(addedEssence);
dos.writeInt(maxEssence); //Used for Blood Orbs, but does nothing for other items
}
catch (IOException e)
{
e.printStackTrace();
}
Packet250CustomPayload pkt = new Packet250CustomPayload();
pkt.channel = "SetLifeEssence";
pkt.data = bos.toByteArray();
pkt.length = bos.size();
//pkt.isChunkDataPacket = true;
return pkt;
}
public static Packet getPacket(String ownerName) //stores the current essence in the player's NBT
{
ByteArrayOutputStream bos = new ByteArrayOutputStream(140);
DataOutputStream dos = new DataOutputStream(bos);
try
{
dos.writeInt(ownerName.length());
dos.writeChars(ownerName);
}
catch (IOException e)
{
e.printStackTrace();
}
Packet250CustomPayload pkt = new Packet250CustomPayload();
pkt.channel = "GetLifeEssence";
pkt.data = bos.toByteArray();
pkt.length = bos.size();
//pkt.isChunkDataPacket = true;
return pkt;
}
public static Packet getAltarPacket(int x, int y, int z)
{
ByteArrayOutputStream bos = new ByteArrayOutputStream(140);
DataOutputStream dos = new DataOutputStream(bos);
try
{
dos.writeInt(x);
dos.writeInt(y);
dos.writeInt(z);
}
catch (IOException e)
{
e.printStackTrace();
}
Packet250CustomPayload pkt = new Packet250CustomPayload();
pkt.channel = "GetAltarEssence";
pkt.data = bos.toByteArray();
pkt.length = bos.size();
//pkt.isChunkDataPacket = true;
return pkt;
}
public static Packet getPacket(TEWritingTable tileEntity)
{
// TODO Auto-generated method stub
ByteArrayOutputStream bos = new ByteArrayOutputStream(140);
DataOutputStream dos = new DataOutputStream(bos);
int[] items = tileEntity.buildIntDataList();
boolean hasStacks = (items != null);
try
{
dos.writeInt(tileEntity.xCoord);
dos.writeInt(tileEntity.yCoord);
dos.writeInt(tileEntity.zCoord);
dos.writeByte(hasStacks ? 1 : 0);
if (hasStacks)
{
for (int i = 0; i < 3 * 7; i++)
{
dos.writeInt(items[i]);
}
}
}
catch (IOException e)
{
e.printStackTrace();
}
Packet250CustomPayload pkt = new Packet250CustomPayload();
pkt.channel = "TEWritingTable";
pkt.data = bos.toByteArray();
pkt.length = bos.size();
pkt.isChunkDataPacket = true;
return pkt;
}
public static Packet getPacket(TEPedestal tileEntity)
{
// TODO Auto-generated method stub
ByteArrayOutputStream bos = new ByteArrayOutputStream(140);
DataOutputStream dos = new DataOutputStream(bos);
int[] items = tileEntity.buildIntDataList();
boolean hasStacks = (items != null);
try
{
dos.writeInt(tileEntity.xCoord);
dos.writeInt(tileEntity.yCoord);
dos.writeInt(tileEntity.zCoord);
dos.writeByte(hasStacks ? 1 : 0);
if (hasStacks)
{
for (int i = 0; i < 3 * 1; i++)
{
dos.writeInt(items[i]);
}
}
}
catch (IOException e)
{
e.printStackTrace();
}
Packet250CustomPayload pkt = new Packet250CustomPayload();
pkt.channel = "TEPedestal";
pkt.data = bos.toByteArray();
pkt.length = bos.size();
pkt.isChunkDataPacket = true;
return pkt;
}
public static Packet getPacket(TEPlinth tileEntity)
{
// TODO Auto-generated method stub
ByteArrayOutputStream bos = new ByteArrayOutputStream(140);
DataOutputStream dos = new DataOutputStream(bos);
int[] items = tileEntity.buildIntDataList();
boolean hasStacks = (items != null);
try
{
dos.writeInt(tileEntity.xCoord);
dos.writeInt(tileEntity.yCoord);
dos.writeInt(tileEntity.zCoord);
dos.writeByte(hasStacks ? 1 : 0);
if (hasStacks)
{
for (int i = 0; i < 3 * 1; i++)
{
dos.writeInt(items[i]);
}
}
}
catch (IOException e)
{
e.printStackTrace();
}
Packet250CustomPayload pkt = new Packet250CustomPayload();
pkt.channel = "TEPlinth";
pkt.data = bos.toByteArray();
pkt.length = bos.size();
pkt.isChunkDataPacket = true;
return pkt;
}
public static Packet getPacket(TETeleposer tileEntity)
{
// TODO Auto-generated method stub
ByteArrayOutputStream bos = new ByteArrayOutputStream(140);
DataOutputStream dos = new DataOutputStream(bos);
int[] items = tileEntity.buildIntDataList();
boolean hasStacks = (items != null);
try
{
dos.writeInt(tileEntity.xCoord);
dos.writeInt(tileEntity.yCoord);
dos.writeInt(tileEntity.zCoord);
dos.writeByte(hasStacks ? 1 : 0);
if (hasStacks)
{
for (int i = 0; i < 3 * 1; i++)
{
dos.writeInt(items[i]);
}
}
}
catch (IOException e)
{
e.printStackTrace();
}
Packet250CustomPayload pkt = new Packet250CustomPayload();
pkt.channel = "TETeleposer";
pkt.data = bos.toByteArray();
pkt.length = bos.size();
pkt.isChunkDataPacket = true;
return pkt;
}
public static Packet getCustomParticlePacket(String str, double x, double y, double z, double xVel, double yVel, double zVel)
{
ByteArrayOutputStream bos = new ByteArrayOutputStream(140);
DataOutputStream dos = new DataOutputStream(bos);
try
{
dos.writeInt(str.length());
dos.writeChars(str);
dos.writeDouble(x);
dos.writeDouble(y);
dos.writeDouble(z);
dos.writeDouble(xVel);
dos.writeDouble(yVel);
dos.writeDouble(zVel);
}
catch (IOException e)
{
e.printStackTrace();
}
Packet250CustomPayload pkt = new Packet250CustomPayload();
pkt.channel = "CustomParticle";
pkt.data = bos.toByteArray();
pkt.length = bos.size();
pkt.isChunkDataPacket = false;
return pkt;
}
public static Packet getPlayerVelocitySettingPacket(double xVel, double yVel, double zVel)
{
ByteArrayOutputStream bos = new ByteArrayOutputStream(140);
DataOutputStream dos = new DataOutputStream(bos);
try
{
dos.writeDouble(xVel);
dos.writeDouble(yVel);
dos.writeDouble(zVel);
}
catch (IOException e)
{
e.printStackTrace();
}
Packet250CustomPayload pkt = new Packet250CustomPayload();
pkt.channel = "SetPlayerVel";
pkt.data = bos.toByteArray();
pkt.length = bos.size();
pkt.isChunkDataPacket = false;
return pkt;
}
public static Packet getPlayerPositionSettingPacket(double xVel, double yVel, double zVel)
{
ByteArrayOutputStream bos = new ByteArrayOutputStream(140);
DataOutputStream dos = new DataOutputStream(bos);
try
{
dos.writeDouble(xVel);
dos.writeDouble(yVel);
dos.writeDouble(zVel);
}
catch (IOException e)
{
e.printStackTrace();
}
Packet250CustomPayload pkt = new Packet250CustomPayload();
pkt.channel = "SetPlayerPos";
pkt.data = bos.toByteArray();
pkt.length = bos.size();
pkt.isChunkDataPacket = false;
return pkt;
}
public static Packet getCreativeCheatPacket(String ownerName, boolean isFill)
{
ByteArrayOutputStream bos = new ByteArrayOutputStream(140);
DataOutputStream dos = new DataOutputStream(bos);
try
{
dos.writeInt(ownerName.length());
dos.writeChars(ownerName);
dos.writeBoolean(isFill);
}
catch (IOException e)
{
e.printStackTrace();
}
Packet250CustomPayload pkt = new Packet250CustomPayload();
pkt.channel = "InfiniteLPPath";
pkt.data = bos.toByteArray();
pkt.length = bos.size();
pkt.isChunkDataPacket = false;
return pkt;
}
public static Packet getBlockOrientationPacket(TEOrientable tileEntity)
{
ByteArrayOutputStream bos = new ByteArrayOutputStream(140);
DataOutputStream dos = new DataOutputStream(bos);
try
{
dos.writeInt(tileEntity.xCoord);
dos.writeInt(tileEntity.yCoord);
dos.writeInt(tileEntity.zCoord);
dos.writeInt(tileEntity.getIntForForgeDirection(tileEntity.getInputDirection()));
dos.writeInt(tileEntity.getIntForForgeDirection(tileEntity.getOutputDirection()));
}
catch (IOException e)
{
e.printStackTrace();
}
Packet250CustomPayload pkt = new Packet250CustomPayload();
pkt.channel = "TEOrientor";
pkt.data = bos.toByteArray();
pkt.length = bos.size();
pkt.isChunkDataPacket = true;
return pkt;
}
}