Packets!
This commit is contained in:
parent
8278bb7794
commit
ec9835aa53
4 changed files with 94 additions and 11 deletions
|
@ -5,6 +5,7 @@ package resonantinduction;
|
||||||
|
|
||||||
import java.io.ByteArrayOutputStream;
|
import java.io.ByteArrayOutputStream;
|
||||||
import java.io.DataOutputStream;
|
import java.io.DataOutputStream;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.network.INetworkManager;
|
import net.minecraft.network.INetworkManager;
|
||||||
|
@ -52,6 +53,19 @@ public class PacketHandler implements IPacketHandler
|
||||||
((IPacketReceiver) tileEntity).handle(dataStream);
|
((IPacketReceiver) tileEntity).handle(dataStream);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (packetType == PacketType.DATA_REQUEST.ordinal())
|
||||||
|
{
|
||||||
|
int x = dataStream.readInt();
|
||||||
|
int y = dataStream.readInt();
|
||||||
|
int z = dataStream.readInt();
|
||||||
|
|
||||||
|
TileEntity tileEntity = world.getBlockTileEntity(x, y, z);
|
||||||
|
|
||||||
|
if (tileEntity instanceof IPacketReceiver)
|
||||||
|
{
|
||||||
|
sendTileEntityPacketToClients(tileEntity, ((IPacketReceiver) tileEntity).getNetworkedData(new ArrayList()));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
|
@ -90,6 +104,10 @@ public class PacketHandler implements IPacketHandler
|
||||||
{
|
{
|
||||||
output.writeByte((Byte) data);
|
output.writeByte((Byte) data);
|
||||||
}
|
}
|
||||||
|
else if (data instanceof Object[])
|
||||||
|
{
|
||||||
|
encode((Object[])data, output);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
|
@ -97,6 +115,30 @@ public class PacketHandler implements IPacketHandler
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void sendDataRequest(TileEntity tileEntity)
|
||||||
|
{
|
||||||
|
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
|
||||||
|
DataOutputStream data = new DataOutputStream(bytes);
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
data.writeInt(PacketType.DATA_REQUEST.ordinal());
|
||||||
|
data.writeInt(tileEntity.xCoord);
|
||||||
|
data.writeInt(tileEntity.yCoord);
|
||||||
|
data.writeInt(tileEntity.zCoord);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
Packet250CustomPayload packet = new Packet250CustomPayload();
|
||||||
|
packet.channel = ResonantInduction.CHANNEL;
|
||||||
|
packet.data = bytes.toByteArray();
|
||||||
|
packet.length = packet.data.length;
|
||||||
|
|
||||||
|
PacketDispatcher.sendPacketToServer(packet);
|
||||||
|
}
|
||||||
|
|
||||||
public static void sendTileEntityPacketToServer(TileEntity tileEntity, Object... dataValues)
|
public static void sendTileEntityPacketToServer(TileEntity tileEntity, Object... dataValues)
|
||||||
{
|
{
|
||||||
PacketDispatcher.sendPacketToServer(getTileEntityPacket(tileEntity, dataValues));
|
PacketDispatcher.sendPacketToServer(getTileEntityPacket(tileEntity, dataValues));
|
||||||
|
@ -135,6 +177,7 @@ public class PacketHandler implements IPacketHandler
|
||||||
|
|
||||||
public static enum PacketType
|
public static enum PacketType
|
||||||
{
|
{
|
||||||
TILE
|
TILE,
|
||||||
|
DATA_REQUEST
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,8 +1,12 @@
|
||||||
package resonantinduction.base;
|
package resonantinduction.base;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
import com.google.common.io.ByteArrayDataInput;
|
import com.google.common.io.ByteArrayDataInput;
|
||||||
|
|
||||||
public interface IPacketReceiver
|
public interface IPacketReceiver
|
||||||
{
|
{
|
||||||
public void handle(ByteArrayDataInput input);
|
public void handle(ByteArrayDataInput input);
|
||||||
|
|
||||||
|
public ArrayList getNetworkedData(ArrayList data);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,13 @@
|
||||||
package resonantinduction.contractor;
|
package resonantinduction.contractor;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import com.google.common.io.ByteArrayDataInput;
|
||||||
|
|
||||||
|
import resonantinduction.PacketHandler;
|
||||||
|
import resonantinduction.base.IPacketReceiver;
|
||||||
|
|
||||||
import net.minecraft.entity.Entity;
|
import net.minecraft.entity.Entity;
|
||||||
import net.minecraft.entity.item.EntityItem;
|
import net.minecraft.entity.item.EntityItem;
|
||||||
import net.minecraft.inventory.IInventory;
|
import net.minecraft.inventory.IInventory;
|
||||||
|
@ -10,7 +16,7 @@ import net.minecraft.tileentity.TileEntity;
|
||||||
import net.minecraft.util.AxisAlignedBB;
|
import net.minecraft.util.AxisAlignedBB;
|
||||||
import net.minecraftforge.common.ForgeDirection;
|
import net.minecraftforge.common.ForgeDirection;
|
||||||
|
|
||||||
public class TileEntityEMContractor extends TileEntity
|
public class TileEntityEMContractor extends TileEntity implements IPacketReceiver
|
||||||
{
|
{
|
||||||
public static int MAX_REACH = 40;
|
public static int MAX_REACH = 40;
|
||||||
public static double MAX_SPEED = .1;
|
public static double MAX_SPEED = .1;
|
||||||
|
@ -30,7 +36,6 @@ public class TileEntityEMContractor extends TileEntity
|
||||||
@Override
|
@Override
|
||||||
public void updateEntity()
|
public void updateEntity()
|
||||||
{
|
{
|
||||||
System.out.println(facing + " " + worldObj.isRemote);
|
|
||||||
pushDelay = Math.max(0, pushDelay--);
|
pushDelay = Math.max(0, pushDelay--);
|
||||||
|
|
||||||
if(!suck && pushDelay == 0)
|
if(!suck && pushDelay == 0)
|
||||||
|
@ -42,11 +47,6 @@ public class TileEntityEMContractor extends TileEntity
|
||||||
{
|
{
|
||||||
List<Entity> list = worldObj.getEntitiesWithinAABB(Entity.class, operationBounds);
|
List<Entity> list = worldObj.getEntitiesWithinAABB(Entity.class, operationBounds);
|
||||||
|
|
||||||
if(!list.isEmpty())
|
|
||||||
{
|
|
||||||
System.out.println("GOood");
|
|
||||||
}
|
|
||||||
|
|
||||||
for(Entity entity : list)
|
for(Entity entity : list)
|
||||||
{
|
{
|
||||||
if(entity instanceof EntityItem)
|
if(entity instanceof EntityItem)
|
||||||
|
@ -175,6 +175,17 @@ public class TileEntityEMContractor extends TileEntity
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void validate()
|
||||||
|
{
|
||||||
|
super.validate();
|
||||||
|
|
||||||
|
if(worldObj.isRemote)
|
||||||
|
{
|
||||||
|
PacketHandler.sendDataRequest(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void updateBounds()
|
public void updateBounds()
|
||||||
{
|
{
|
||||||
switch(facing)
|
switch(facing)
|
||||||
|
@ -228,6 +239,12 @@ public class TileEntityEMContractor extends TileEntity
|
||||||
public void setFacing(ForgeDirection side)
|
public void setFacing(ForgeDirection side)
|
||||||
{
|
{
|
||||||
facing = side;
|
facing = side;
|
||||||
|
|
||||||
|
if(!worldObj.isRemote)
|
||||||
|
{
|
||||||
|
PacketHandler.sendTileEntityPacketToClients(this, getNetworkedData(new ArrayList()));
|
||||||
|
}
|
||||||
|
|
||||||
updateBounds();
|
updateBounds();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -248,4 +265,19 @@ public class TileEntityEMContractor extends TileEntity
|
||||||
nbtTags.setInteger("facing", facing.ordinal());
|
nbtTags.setInteger("facing", facing.ordinal());
|
||||||
nbtTags.setBoolean("suck", suck);
|
nbtTags.setBoolean("suck", suck);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void handle(ByteArrayDataInput input)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
facing = ForgeDirection.getOrientation(input.readInt());
|
||||||
|
} catch(Exception e) {}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ArrayList getNetworkedData(ArrayList data)
|
||||||
|
{
|
||||||
|
data.add(facing.ordinal());
|
||||||
|
return data;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,18 +3,16 @@
|
||||||
*/
|
*/
|
||||||
package resonantinduction.tesla;
|
package resonantinduction.tesla;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
import net.minecraft.block.BlockFurnace;
|
import net.minecraft.block.BlockFurnace;
|
||||||
import net.minecraft.entity.Entity;
|
|
||||||
import net.minecraft.item.crafting.FurnaceRecipes;
|
import net.minecraft.item.crafting.FurnaceRecipes;
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
import net.minecraft.network.packet.Packet;
|
import net.minecraft.network.packet.Packet;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
import net.minecraft.tileentity.TileEntityFurnace;
|
import net.minecraft.tileentity.TileEntityFurnace;
|
||||||
import net.minecraft.util.AxisAlignedBB;
|
|
||||||
import resonantinduction.ITesla;
|
import resonantinduction.ITesla;
|
||||||
import resonantinduction.PacketHandler;
|
import resonantinduction.PacketHandler;
|
||||||
import resonantinduction.ResonantInduction;
|
import resonantinduction.ResonantInduction;
|
||||||
|
@ -180,6 +178,12 @@ public class TileEntityTesla extends TileEntityBase implements ITesla, IPacketRe
|
||||||
return PacketHandler.getTileEntityPacket(this, (byte) 1, this.getEnergyStored(), this.dyeID);
|
return PacketHandler.getTileEntityPacket(this, (byte) 1, this.getEnergyStored(), this.dyeID);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ArrayList getNetworkedData(ArrayList data)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void handle(ByteArrayDataInput input)
|
public void handle(ByteArrayDataInput input)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue