Finished networking
This commit is contained in:
parent
9566be0b45
commit
023ce31dae
7 changed files with 139 additions and 72 deletions
|
@ -10,6 +10,7 @@ import gregtechmod.api.util.GT_OreDictUnificator;
|
||||||
import gregtechmod.api.util.GT_Utility;
|
import gregtechmod.api.util.GT_Utility;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
import net.minecraft.entity.item.EntityItem;
|
import net.minecraft.entity.item.EntityItem;
|
||||||
|
@ -334,19 +335,14 @@ public class BaseMetaPipeEntity extends BaseTileEntity implements IGregTechTileE
|
||||||
return rPacket;
|
return rPacket;
|
||||||
}
|
}
|
||||||
|
|
||||||
public final void receiveMetaTileEntityData(short aID, int aCover0, int aCover1, int aCover2, int aCover3, int aCover4, int aCover5, byte aTextureData, byte aUpdateData, byte aRedstoneData, byte aColorData) {
|
public final void receiveMetaTileEntityData(short aID, int[] aCovers, byte aTextureData, byte aUpdateData, byte aRedstoneData, byte aColorData) {
|
||||||
issueTextureUpdate();
|
issueTextureUpdate();
|
||||||
if (mID != aID && aID > 0) {
|
if (mID != aID && aID > 0) {
|
||||||
mID = aID;
|
mID = aID;
|
||||||
createNewMetatileEntity(mID);
|
createNewMetatileEntity(mID);
|
||||||
}
|
}
|
||||||
|
|
||||||
mCoverSides[0] = aCover0;
|
mCoverSides = Arrays.copyOf(aCovers, aCovers.length);
|
||||||
mCoverSides[1] = aCover1;
|
|
||||||
mCoverSides[2] = aCover2;
|
|
||||||
mCoverSides[3] = aCover3;
|
|
||||||
mCoverSides[4] = aCover4;
|
|
||||||
mCoverSides[5] = aCover5;
|
|
||||||
|
|
||||||
receiveClientEvent(0, aTextureData);
|
receiveClientEvent(0, aTextureData);
|
||||||
receiveClientEvent(1, aUpdateData);
|
receiveClientEvent(1, aUpdateData);
|
||||||
|
|
|
@ -8,8 +8,10 @@ import gregtechmod.api.util.GT_Log;
|
||||||
import gregtechmod.api.util.GT_ModHandler;
|
import gregtechmod.api.util.GT_ModHandler;
|
||||||
import gregtechmod.api.util.GT_OreDictUnificator;
|
import gregtechmod.api.util.GT_OreDictUnificator;
|
||||||
import gregtechmod.api.util.GT_Utility;
|
import gregtechmod.api.util.GT_Utility;
|
||||||
|
import gregtechmod.common.network.packet.GT_TileEntityPacket;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
import net.minecraft.entity.item.EntityItem;
|
import net.minecraft.entity.item.EntityItem;
|
||||||
|
@ -20,7 +22,6 @@ import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
import net.minecraft.nbt.NBTTagList;
|
import net.minecraft.nbt.NBTTagList;
|
||||||
import net.minecraft.network.Packet;
|
import net.minecraft.network.Packet;
|
||||||
import net.minecraft.network.play.server.S3FPacketCustomPayload;
|
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
import net.minecraft.util.IIcon;
|
import net.minecraft.util.IIcon;
|
||||||
import net.minecraft.world.EnumSkyBlock;
|
import net.minecraft.world.EnumSkyBlock;
|
||||||
|
@ -29,9 +30,6 @@ import net.minecraftforge.fluids.Fluid;
|
||||||
import net.minecraftforge.fluids.FluidStack;
|
import net.minecraftforge.fluids.FluidStack;
|
||||||
import net.minecraftforge.fluids.FluidTankInfo;
|
import net.minecraftforge.fluids.FluidTankInfo;
|
||||||
|
|
||||||
import com.google.common.io.ByteArrayDataOutput;
|
|
||||||
import com.google.common.io.ByteStreams;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* NEVER INCLUDE THIS FILE IN YOUR MOD!!!
|
* NEVER INCLUDE THIS FILE IN YOUR MOD!!!
|
||||||
*
|
*
|
||||||
|
@ -468,7 +466,7 @@ public class BaseMetaTileEntity extends BaseTileEntity implements IGregTechTileE
|
||||||
if (isServerSide()) {
|
if (isServerSide()) {
|
||||||
if (getTimer() % 10 == 0) {
|
if (getTimer() % 10 == 0) {
|
||||||
if (mSendClientData) {
|
if (mSendClientData) {
|
||||||
GT_Utility.sendPacketToAllPlayersInRange(getWorld(), getDescriptionPacket(), getXCoord(), getZCoord());
|
GT_Utility.sendPacketToAllPlayersInRange(getWorld(), getMetaTileEntityData(), getXCoord(), getZCoord());
|
||||||
mSendClientData = false;
|
mSendClientData = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -505,44 +503,60 @@ public class BaseMetaTileEntity extends BaseTileEntity implements IGregTechTileE
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Packet getDescriptionPacket() {
|
public Packet getDescriptionPacket() {
|
||||||
ByteArrayDataOutput tOut = ByteStreams.newDataOutput();
|
// ByteArrayDataOutput tOut = ByteStreams.newDataOutput();
|
||||||
|
//
|
||||||
tOut.writeInt(getXCoord());
|
// tOut.writeInt(getXCoord());
|
||||||
tOut.writeShort(getYCoord());
|
// tOut.writeShort(getYCoord());
|
||||||
tOut.writeInt(getZCoord());
|
// tOut.writeInt(getZCoord());
|
||||||
|
//
|
||||||
tOut.writeShort(mID);
|
// tOut.writeShort(mID);
|
||||||
tOut.writeInt(mCoverSides[0]);
|
// tOut.writeInt(mCoverSides[0]);
|
||||||
tOut.writeInt(mCoverSides[1]);
|
// tOut.writeInt(mCoverSides[1]);
|
||||||
tOut.writeInt(mCoverSides[2]);
|
// tOut.writeInt(mCoverSides[2]);
|
||||||
tOut.writeInt(mCoverSides[3]);
|
// tOut.writeInt(mCoverSides[3]);
|
||||||
tOut.writeInt(mCoverSides[4]);
|
// tOut.writeInt(mCoverSides[4]);
|
||||||
tOut.writeInt(mCoverSides[5]);
|
// tOut.writeInt(mCoverSides[5]);
|
||||||
|
//
|
||||||
tOut.writeByte(oTextureData = (byte)((getFrontFacing()&7) | (mActive?8:0) | (mRedstone?16:0) | (mLockUpgrade?32:0)));
|
// tOut.writeByte(oTextureData = (byte)((getFrontFacing()&7) | (mActive?8:0) | (mRedstone?16:0) | (mLockUpgrade?32:0)));
|
||||||
tOut.writeByte(oUpdateData = hasValidMetaTileEntity()?mMetaTileEntity.getUpdateData():0);
|
// tOut.writeByte(oUpdateData = hasValidMetaTileEntity()?mMetaTileEntity.getUpdateData():0);
|
||||||
tOut.writeByte(oRedstoneData = (byte)(((mSidedRedstone[0]>0)?1:0)|((mSidedRedstone[1]>0)?2:0)|((mSidedRedstone[2]>0)?4:0)|((mSidedRedstone[3]>0)?8:0)|((mSidedRedstone[4]>0)?16:0)|((mSidedRedstone[5]>0)?32:0)));
|
// tOut.writeByte(oRedstoneData = (byte)(((mSidedRedstone[0]>0)?1:0)|((mSidedRedstone[1]>0)?2:0)|((mSidedRedstone[2]>0)?4:0)|((mSidedRedstone[3]>0)?8:0)|((mSidedRedstone[4]>0)?16:0)|((mSidedRedstone[5]>0)?32:0)));
|
||||||
tOut.writeByte(oColor = mColor);
|
// tOut.writeByte(oColor = mColor);
|
||||||
|
//
|
||||||
oLightValue = -1;
|
// oLightValue = -1;
|
||||||
|
//
|
||||||
S3FPacketCustomPayload rPacket = new S3FPacketCustomPayload(GregTech_API.TILEENTITY_PACKET_CHANNEL, tOut.toByteArray());
|
// S3FPacketCustomPayload rPacket = new S3FPacketCustomPayload(GregTech_API.TILEENTITY_PACKET_CHANNEL, tOut.toByteArray());
|
||||||
return rPacket;
|
// return rPacket;
|
||||||
|
return super.getDescriptionPacket();
|
||||||
}
|
}
|
||||||
|
|
||||||
public final void receiveMetaTileEntityData(short aID, int aCover0, int aCover1, int aCover2, int aCover3, int aCover4, int aCover5, byte aTextureData, byte aUpdateData, byte aRedstoneData, byte aColorData) {
|
public final GT_TileEntityPacket getMetaTileEntityData() {
|
||||||
|
GT_TileEntityPacket tOut = new GT_TileEntityPacket();
|
||||||
|
tOut.aX = getXCoord();
|
||||||
|
tOut.aY = getYCoord();
|
||||||
|
tOut.aZ = getZCoord();
|
||||||
|
tOut.aID = mID;
|
||||||
|
tOut.aCovers = mCoverSides;
|
||||||
|
tOut.aTextureData = (byte)((getFrontFacing() & 7) | (mActive ? 8 : 0) | (mRedstone ? 16 : 0) | (mLockUpgrade ? 32 : 0));
|
||||||
|
tOut.aUpdateData = (oUpdateData = hasValidMetaTileEntity() ? mMetaTileEntity.getUpdateData() : 0);
|
||||||
|
tOut.aRedstoneData = (oRedstoneData = (byte)
|
||||||
|
(((mSidedRedstone[0] >0 ) ? 1: 0) |
|
||||||
|
((mSidedRedstone[1] > 0) ? 2 : 0) |
|
||||||
|
((mSidedRedstone[2] > 0) ? 4 : 0) |
|
||||||
|
((mSidedRedstone[3] >0) ? 8 : 0) |
|
||||||
|
((mSidedRedstone[4] > 0) ? 16 : 0) |
|
||||||
|
((mSidedRedstone[5] > 0) ? 32 : 0)));
|
||||||
|
tOut.aRedstoneData = (oColor = mColor);
|
||||||
|
return tOut;
|
||||||
|
}
|
||||||
|
|
||||||
|
public final void receiveMetaTileEntityData(short aID, int[] aCovers, byte aTextureData, byte aUpdateData, byte aRedstoneData, byte aColorData) {
|
||||||
issueTextureUpdate();
|
issueTextureUpdate();
|
||||||
if (mID != aID && aID > 0) {
|
if (mID != aID && aID > 0) {
|
||||||
mID = aID;
|
mID = aID;
|
||||||
createNewMetatileEntity(mID);
|
createNewMetatileEntity(mID);
|
||||||
}
|
}
|
||||||
|
|
||||||
mCoverSides[0] = aCover0;
|
mCoverSides = Arrays.copyOf(aCovers, aCovers.length);
|
||||||
mCoverSides[1] = aCover1;
|
|
||||||
mCoverSides[2] = aCover2;
|
|
||||||
mCoverSides[3] = aCover3;
|
|
||||||
mCoverSides[4] = aCover4;
|
|
||||||
mCoverSides[5] = aCover5;
|
|
||||||
|
|
||||||
receiveClientEvent(0, aTextureData);
|
receiveClientEvent(0, aTextureData);
|
||||||
receiveClientEvent(1, aUpdateData);
|
receiveClientEvent(1, aUpdateData);
|
||||||
|
|
|
@ -9,6 +9,7 @@ import gregtechmod.api.interfaces.IMachineProgress;
|
||||||
import gregtechmod.api.interfaces.IUpgradableMachine;
|
import gregtechmod.api.interfaces.IUpgradableMachine;
|
||||||
import gregtechmod.api.items.GT_EnergyArmor_Item;
|
import gregtechmod.api.items.GT_EnergyArmor_Item;
|
||||||
import gregtechmod.common.network.GT_PacketHandler;
|
import gregtechmod.common.network.GT_PacketHandler;
|
||||||
|
import gregtechmod.common.network.packet.GT_Packet;
|
||||||
import gregtechmod.common.network.packet.GT_SoundPacket;
|
import gregtechmod.common.network.packet.GT_SoundPacket;
|
||||||
|
|
||||||
import java.lang.reflect.Field;
|
import java.lang.reflect.Field;
|
||||||
|
@ -676,15 +677,6 @@ public class GT_Utility {
|
||||||
|
|
||||||
public static boolean sendSoundToPlayers(World aWorld, String aSoundName, float aSoundStrength, float aSoundModulation, int aX, int aY, int aZ) {
|
public static boolean sendSoundToPlayers(World aWorld, String aSoundName, float aSoundStrength, float aSoundModulation, int aX, int aY, int aZ) {
|
||||||
if (aSoundName == null || aSoundName.equals("") || aWorld == null || aWorld.isRemote) return false;
|
if (aSoundName == null || aSoundName.equals("") || aWorld == null || aWorld.isRemote) return false;
|
||||||
// ByteArrayDataOutput tOut = ByteStreams.newDataOutput();
|
|
||||||
//
|
|
||||||
// tOut.writeInt(aX);
|
|
||||||
// tOut.writeShort(aY);
|
|
||||||
// tOut.writeInt(aZ);
|
|
||||||
//
|
|
||||||
// tOut.writeUTF(aSoundName);
|
|
||||||
// tOut.writeFloat(aSoundStrength);
|
|
||||||
// tOut.writeFloat(aSoundModulation < 0 ? (1.0F + (aWorld.rand.nextFloat() - aWorld.rand.nextFloat()) * 0.2F) * 0.7F : aSoundModulation);
|
|
||||||
aSoundModulation = aSoundModulation < 0 ? (1.0F + (aWorld.rand.nextFloat() - aWorld.rand.nextFloat()) * 0.2F) * 0.7F : aSoundModulation;
|
aSoundModulation = aSoundModulation < 0 ? (1.0F + (aWorld.rand.nextFloat() - aWorld.rand.nextFloat()) * 0.2F) * 0.7F : aSoundModulation;
|
||||||
GT_SoundPacket tPacket = new GT_SoundPacket(aSoundName, aX, aY, aZ, aSoundStrength, aSoundModulation);
|
GT_SoundPacket tPacket = new GT_SoundPacket(aSoundName, aX, aY, aZ, aSoundStrength, aSoundModulation);
|
||||||
sendPacketToAllPlayersInRange(aWorld, tPacket, aX, aZ);
|
sendPacketToAllPlayersInRange(aWorld, tPacket, aX, aZ);
|
||||||
|
@ -692,7 +684,7 @@ public class GT_Utility {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void sendPacketToAllPlayersInRange(World aWorld, GT_SoundPacket aPacket, int aX, int aZ) {
|
public static void sendPacketToAllPlayersInRange(World aWorld, GT_Packet aPacket, int aX, int aZ) {
|
||||||
for (Object tObject : aWorld.playerEntities) {
|
for (Object tObject : aWorld.playerEntities) {
|
||||||
if (tObject instanceof EntityPlayerMP) {
|
if (tObject instanceof EntityPlayerMP) {
|
||||||
EntityPlayerMP tPlayer = (EntityPlayerMP)tObject;
|
EntityPlayerMP tPlayer = (EntityPlayerMP)tObject;
|
||||||
|
@ -700,7 +692,7 @@ public class GT_Utility {
|
||||||
Chunk tChunk = aWorld.getChunkFromBlockCoords(aX, aZ);
|
Chunk tChunk = aWorld.getChunkFromBlockCoords(aX, aZ);
|
||||||
if (tPlayer.getServerForPlayer().getPlayerManager().isPlayerWatchingChunk(tPlayer, tChunk.xPosition, tChunk.zPosition)) {
|
if (tPlayer.getServerForPlayer().getPlayerManager().isPlayerWatchingChunk(tPlayer, tChunk.xPosition, tChunk.zPosition)) {
|
||||||
if (GregTech_API.DEBUG_MODE) GT_Log.log.debug("sent Packet to " + tPlayer.getDisplayName());
|
if (GregTech_API.DEBUG_MODE) GT_Log.log.debug("sent Packet to " + tPlayer.getDisplayName());
|
||||||
GT_PacketHandler.SOUND_PACKET_CHANNEL.sendTo(aPacket, tPlayer);
|
GT_PacketHandler.sendPacket(aPacket, tPlayer);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -4,18 +4,40 @@ import cpw.mods.fml.common.network.simpleimpl.IMessage;
|
||||||
import cpw.mods.fml.common.network.simpleimpl.IMessageHandler;
|
import cpw.mods.fml.common.network.simpleimpl.IMessageHandler;
|
||||||
import cpw.mods.fml.common.network.simpleimpl.MessageContext;
|
import cpw.mods.fml.common.network.simpleimpl.MessageContext;
|
||||||
import gregtechmod.api.GregTech_API;
|
import gregtechmod.api.GregTech_API;
|
||||||
|
import gregtechmod.api.metatileentity.BaseMetaPipeEntity;
|
||||||
|
import gregtechmod.api.metatileentity.BaseMetaTileEntity;
|
||||||
import gregtechmod.api.util.GT_Log;
|
import gregtechmod.api.util.GT_Log;
|
||||||
import gregtechmod.api.util.GT_Utility;
|
import gregtechmod.api.util.GT_Utility;
|
||||||
import gregtechmod.common.network.packet.GT_Packet;
|
import gregtechmod.common.network.packet.GT_Packet;
|
||||||
import gregtechmod.common.network.packet.GT_SoundPacket;
|
import gregtechmod.common.network.packet.GT_SoundPacket;
|
||||||
import gregtechmod.common.network.packet.GT_TileEntityPacket;
|
import gregtechmod.common.network.packet.GT_TileEntityPacket;
|
||||||
|
import net.minecraft.tileentity.TileEntity;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Used to handle packets on client side
|
||||||
|
* @author iDnK
|
||||||
|
*
|
||||||
|
* @param <T> should be GT_Packet or their child class
|
||||||
|
*/
|
||||||
public abstract class GT_NetworkHandler<T extends GT_Packet> implements IMessageHandler<T, IMessage> {
|
public abstract class GT_NetworkHandler<T extends GT_Packet> implements IMessageHandler<T, IMessage> {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public IMessage onMessage(T message, MessageContext ctx) {
|
public IMessage onMessage(T message, MessageContext ctx) {
|
||||||
if (message instanceof GT_TileEntityPacket) {
|
if (message instanceof GT_TileEntityPacket) {
|
||||||
// TODO Packets
|
GT_TileEntityPacket packet = (GT_TileEntityPacket) message;
|
||||||
|
if (GT_Utility.sCurrentPlayer != null && GT_Utility.sCurrentPlayer.worldObj != null) {
|
||||||
|
String name = GT_Utility.sCurrentPlayer.getDisplayName();
|
||||||
|
if (GregTech_API.DEBUG_MODE && (name.equals("Player") || name.equals("GregoriusT") || name.equals("The_DnK")))
|
||||||
|
GT_Log.log.info(String.format("Received initial MetaTileEntity Data: %s Bytes @ (%d;%d;%d) during Tick: %s", packet.data.capacity(), packet.aX, packet.aY, packet.aZ, GregTech_API.sClientTickCounter));
|
||||||
|
TileEntity tTile = GT_Utility.sCurrentPlayer.worldObj.getTileEntity(packet.aX, packet.aY, packet.aZ);
|
||||||
|
if (tTile != null) {
|
||||||
|
if (tTile instanceof BaseMetaTileEntity) {
|
||||||
|
((BaseMetaTileEntity) tTile).receiveMetaTileEntityData(packet.aID, packet.aCovers, packet.aTextureData, packet.aUpdateData, packet.aRedstoneData, packet.aColorData);
|
||||||
|
} else if (tTile instanceof BaseMetaPipeEntity) {
|
||||||
|
((BaseMetaPipeEntity) tTile).receiveMetaTileEntityData(packet.aID, packet.aCovers, packet.aTextureData, packet.aUpdateData, packet.aRedstoneData, packet.aColorData);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
} else if (message instanceof GT_SoundPacket) {
|
} else if (message instanceof GT_SoundPacket) {
|
||||||
GT_SoundPacket sound = (GT_SoundPacket) message;
|
GT_SoundPacket sound = (GT_SoundPacket) message;
|
||||||
if (GT_Utility.sCurrentPlayer != null) {
|
if (GT_Utility.sCurrentPlayer != null) {
|
||||||
|
@ -27,22 +49,6 @@ public abstract class GT_NetworkHandler<T extends GT_Packet> implements IMessage
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// public void onPacketData(INetworkManager aManager, Packet250CustomPayload aPacket, Player aPlayer) {
|
|
||||||
// if (aPacket.channel.equals(GregTech_API.TILEENTITY_PACKET_CHANNEL)) {
|
|
||||||
// ByteArrayDataInput tIn = ByteStreams.newDataInput(aPacket.data);
|
|
||||||
// int tX = tIn.readInt(), tY = tIn.readShort(), tZ = tIn.readInt();
|
|
||||||
// if (aPlayer != null && aPlayer instanceof EntityPlayer) {
|
|
||||||
// if (GregTech_API.DEBUG_MODE && (((EntityPlayer)aPlayer).username.equals("Player") || ((EntityPlayer)aPlayer).username.equals("GregoriusT"))) GT_Log.out.println("Received initial MetaTileEntity Data: " + aPacket.length + " Bytes @ (" + tX + ";" + tY + ";" + tZ + ") during Tick: " + GregTech_API.sClientTickCounter);
|
|
||||||
// TileEntity tTileEntity = ((EntityPlayer)aPlayer).worldObj.getBlockTileEntity(tX, tY, tZ);
|
|
||||||
// if (tTileEntity != null) {
|
|
||||||
// if (tTileEntity instanceof BaseMetaTileEntity) ((BaseMetaTileEntity)tTileEntity).receiveMetaTileEntityData(tIn.readShort(), tIn.readInt(), tIn.readInt(), tIn.readInt(), tIn.readInt(), tIn.readInt(), tIn.readInt(), tIn.readByte(), tIn.readByte(), tIn.readByte(), tIn.readByte());
|
|
||||||
// else if (tTileEntity instanceof BaseMetaPipeEntity) ((BaseMetaPipeEntity)tTileEntity).receiveMetaTileEntityData(tIn.readShort(), tIn.readInt(), tIn.readInt(), tIn.readInt(), tIn.readInt(), tIn.readInt(), tIn.readInt(), tIn.readByte(), tIn.readByte(), tIn.readByte(), tIn.readByte());
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -6,6 +6,7 @@ import cpw.mods.fml.relauncher.Side;
|
||||||
import gregtechmod.common.network.packet.GT_Packet;
|
import gregtechmod.common.network.packet.GT_Packet;
|
||||||
import gregtechmod.common.network.packet.GT_SoundPacket;
|
import gregtechmod.common.network.packet.GT_SoundPacket;
|
||||||
import gregtechmod.common.network.packet.GT_TileEntityPacket;
|
import gregtechmod.common.network.packet.GT_TileEntityPacket;
|
||||||
|
import net.minecraft.entity.player.EntityPlayerMP;
|
||||||
|
|
||||||
public final class GT_PacketHandler implements Runnable {
|
public final class GT_PacketHandler implements Runnable {
|
||||||
private static byte discriminator = 0;
|
private static byte discriminator = 0;
|
||||||
|
@ -26,6 +27,16 @@ public final class GT_PacketHandler implements Runnable {
|
||||||
GT_PacketHandler.registerClientMessage(SOUND_PACKET_CHANNEL, GT_SoundPacket.class);
|
GT_PacketHandler.registerClientMessage(SOUND_PACKET_CHANNEL, GT_SoundPacket.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static <T extends GT_Packet> void sendPacket(T packet, EntityPlayerMP reciever) {
|
||||||
|
if (packet instanceof GT_TileEntityPacket) {
|
||||||
|
TILEENTITY_PACKET_CHANNEL.sendTo(packet, reciever);
|
||||||
|
} else if (packet instanceof GT_SoundPacket) {
|
||||||
|
SOUND_PACKET_CHANNEL.sendTo(packet, reciever);
|
||||||
|
} else {
|
||||||
|
GENERIC_CHANNEL.sendTo(packet, reciever);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
protected static <T extends GT_Packet> void registerServerMessage(SimpleNetworkWrapper channel, Class<T> type) {
|
protected static <T extends GT_Packet> void registerServerMessage(SimpleNetworkWrapper channel, Class<T> type) {
|
||||||
GT_PacketHandler.register(channel, type, Side.SERVER);
|
GT_PacketHandler.register(channel, type, Side.SERVER);
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,6 +3,12 @@ package gregtechmod.common.network.packet;
|
||||||
import cpw.mods.fml.common.network.simpleimpl.IMessage;
|
import cpw.mods.fml.common.network.simpleimpl.IMessage;
|
||||||
import io.netty.buffer.ByteBuf;
|
import io.netty.buffer.ByteBuf;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Abstract packet, contains raw data buffer.
|
||||||
|
* Fucking new packet system, in same time it is useful
|
||||||
|
* @author iDnK
|
||||||
|
*
|
||||||
|
*/
|
||||||
public abstract class GT_Packet implements IMessage {
|
public abstract class GT_Packet implements IMessage {
|
||||||
public ByteBuf data;
|
public ByteBuf data;
|
||||||
|
|
||||||
|
|
|
@ -1,18 +1,60 @@
|
||||||
package gregtechmod.common.network.packet;
|
package gregtechmod.common.network.packet;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import io.netty.buffer.ByteBuf;
|
import io.netty.buffer.ByteBuf;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Data packet for MTE updates
|
||||||
|
* @author iDnK
|
||||||
|
*
|
||||||
|
*/
|
||||||
public class GT_TileEntityPacket extends GT_Packet {
|
public class GT_TileEntityPacket extends GT_Packet {
|
||||||
|
public int aX;
|
||||||
|
public int aY;
|
||||||
|
public int aZ;
|
||||||
|
public short aID;
|
||||||
|
public int[] aCovers;
|
||||||
|
public byte aTextureData;
|
||||||
|
public byte aUpdateData;
|
||||||
|
public byte aRedstoneData;
|
||||||
|
public byte aColorData;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void fromBytes(ByteBuf buf) {
|
public void fromBytes(ByteBuf buf) {
|
||||||
|
aX = buf.readInt();
|
||||||
|
aY = buf.readInt();
|
||||||
|
aZ = buf.readInt();
|
||||||
|
aID = buf.readShort();
|
||||||
|
for (int i = 0; i < 6; i++)
|
||||||
|
aCovers[i] = buf.readInt();
|
||||||
|
aTextureData = buf.readByte();
|
||||||
|
aUpdateData = buf.readByte();
|
||||||
|
aRedstoneData = buf.readByte();
|
||||||
|
aColorData = buf.readByte();
|
||||||
super.fromBytes(buf);
|
super.fromBytes(buf);
|
||||||
// FIXME Packets
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void toBytes(ByteBuf buf) {
|
public void toBytes(ByteBuf buf) {
|
||||||
|
buf.writeInt(aX);
|
||||||
|
buf.writeInt(aY);
|
||||||
|
buf.writeInt(aZ);
|
||||||
|
buf.writeShort(aID);
|
||||||
|
for (int i = 0; i < 6; i++)
|
||||||
|
buf.writeInt(aCovers[i]);
|
||||||
|
buf.writeByte(aTextureData);
|
||||||
|
buf.writeByte(aUpdateData);
|
||||||
|
buf.writeByte(aRedstoneData);
|
||||||
|
buf.writeByte(aColorData);
|
||||||
super.toBytes(buf);
|
super.toBytes(buf);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return String.format("GT_TileEntityPacket[x=%d, y=%d, z=%d, ID=%d, TextureData=%d, UpdateData=%d, RedstoneData=%d, ColorData=%d, CoverData=%s]",
|
||||||
|
aX, aY, aZ, (int)aID, (int)aTextureData, (int)aUpdateData, (int)aRedstoneData, (int)aColorData,
|
||||||
|
Arrays.stream(aCovers).mapToObj(i -> new Integer(i)).collect(Collectors.toList()).toString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue