BloodMagic/BM_src/WayofTime/alchemicalWizardry/common/PacketHandler.java
Fenn e3644f2d2b Massive rework of configs, items and blocks.
I redone where the items/blocsks are stored and how the configs are
handled to clean up it and give space. You can change the config line to
AWWayofTime if you want to keep the compatibility with old configs. Now
you reference the blocks from the ModBlocks and Items from the ModItems.
2014-01-17 21:05:38 +00:00

956 lines
33 KiB
Java

package WayofTime.alchemicalWizardry.common;
import WayofTime.alchemicalWizardry.common.bloodAltarUpgrade.UpgradedAltars;
import WayofTime.alchemicalWizardry.common.tileEntity.*;
import com.google.common.io.ByteArrayDataInput;
import com.google.common.io.ByteStreams;
import cpw.mods.fml.common.network.IPacketHandler;
import cpw.mods.fml.common.network.Player;
import net.minecraft.entity.player.EntityPlayer;
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.FluidStack;
import java.io.*;
import java.util.Random;
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;
}
}