- 1,470
- 19
- 189
Что-то у меня пакеты не работают, температуру нулевую возвращает.
Код:
public class NetworkHandler {
public static final SimpleNetworkWrapper NETWORK = NetworkRegistry.INSTANCE.newSimpleChannel("RCCChannel");
private static int dec;
public NetworkHandler()
{
NETWORK.registerMessage(TempSync.class, TempSync.class, 0, Side.CLIENT);
}
//Метод который отправляет пакеты всем на клиенте/сервере(Зависит от ситуации)
public void sendToAll(final IMessage message)
{
NETWORK.sendToAll(message);
}
//Метод который отправляет пакет конкретному игроку.
public void sendTo(final IMessage message, final EntityPlayerMP player)
{
NETWORK.sendTo(message, player);
}
//Наш пользовательский метод, который использует LocationDoublePacket для упрощения отправки пакетов методом sendToAllAround.
public void sendToAllAround(final LocationDoublePacket message, final World world)
{
sendToAllAround(message, message.getTargetPoint(world));
}
//Метод который отправляет пакет всем игрокам от отправителя, в определённом радиусе.
public void sendToAllAround(final IMessage message, final NetworkRegistry.TargetPoint point)
{
NETWORK.sendToAllAround(message, point);
}
//Метод который отправляет пакет в определённое измерение.
public void sendToDimension(final IMessage message, final int dimensionId)
{
NETWORK.sendToDimension(message, dimensionId);
}
//Метод который отправляет пакет на сервер.
public void sendToServer(final IMessage message)
{
NETWORK.sendToServer(message);
}
}
Код:
public class ExtendedPlayer implements IExtendedEntityProperties {
private double temp;
@Override
public void saveNBTData(NBTTagCompound compound) {
NBTTagCompound tag = new NBTTagCompound();
tag.setDouble("temp", temp);
compound.setTag("customAbilities", tag);
}
@Override
public void loadNBTData(NBTTagCompound compound) {
NBTTagCompound tag = (NBTTagCompound)compound.getTag("customAbilities");
temp = tag.getDouble("temp");
}
@Override
public void init(Entity entity, World world) {
this.temp = 36.6;
}
public void setTemp(double count, final EntityPlayer player) {
if(RCC.DEBUG) {
System.out.println("Count: " + count + "\n" + "Temp: " + temp);
}
this.temp = count;
syncTemp(player);
}
public double getTemp() {
return this.temp;
}
public void syncTemp(final EntityPlayer player)
{
if(!player.getEntityWorld().isRemote) {
NetworkHandler.NETWORK.sendTo(new TempSync(this), (EntityPlayerMP) player);
}
}
}
Код:
public class TempSync extends AbstractPacket<TempSync> {
private double temp;
public TempSync(ExtendedPlayer data){
this.temp = data.getTemp();
}
@Override
/* Получаем данные с сервера */
public void fromBytes(ByteBuf buf)
{
temp = buf.readDouble();
}
@Override
/* Записываем данные в пакет для клиента */
public void toBytes(ByteBuf buf)
{
buf.writeDouble(temp);
}
@Override
public void handleClientSide(EntityPlayer player) {
if(player != null && player.worldObj != null) {
ExtendedPlayer data = (ExtendedPlayer) Minecraft.getMinecraft().thePlayer.getExtendedProperties("temp");
data.setTemp(temp, player);
}
}
@Override
public void handleServerSide(EntityPlayerMP player) {
}
}