- 124
- 1
- 0
Имеется 2 набора координат (x, y, z) и ник игрока, совершившего действие. как мне зарегестрировать сообщение (в главном классе через simpleNetworkWrapper), чтобы мод не крашил сервер и передавал сообщение всем игрокам?
вот всё, что связано с пакетами в майн классе:
сообщение:
приемник (временный):
регистрацию не даю, т.к. она не правильная
вот всё, что связано с пакетами в майн классе:
Код:
public static SimpleNetworkWrapper network;
network = NetworkRegistry.INSTANCE.newSimpleChannel("KubicTrains");
сообщение:
Код:
public class ActivateMarkerMessage implements IMessage{
public int xCoord;
public int yCoord;
public int zCoord;
public int xMark;
public int yMark;
public int zMark;
public String playerName;
public ActivateMarkerMessage() {}
public ActivateMarkerMessage(int x, int y, int z, EntityPlayer player, int xMark, int yMark, int zMark)
{
this.xCoord = x;
this.yCoord = y;
this.zCoord = z;
this.xMark = xMark;
this.yMark = yMark;
this.zMark = zMark;
this.playerName = player.getDisplayName();
}
@Override
public void fromBytes(ByteBuf buf)
{
NBTTagCompound nbt = ByteBufUtils.readTag(buf);
this.xCoord = nbt.getInteger("xCoord");
this.yCoord = nbt.getInteger("yCoord");
this.zCoord = nbt.getInteger("zCoord");
this.xMark = nbt.getInteger("xMark");
this.yMark = nbt.getInteger("yMark");
this.zMark = nbt.getInteger("zMark");
this.playerName = nbt.getString("playerName");
}
@Override
public void toBytes(ByteBuf buf)
{
NBTTagCompound nbt = new NBTTagCompound();
nbt.setInteger("xCoord", this.xCoord);
nbt.setInteger("yCoord", this.yCoord);
nbt.setInteger("zCoord", this.zCoord);
nbt.setInteger("xMark", this.xMark);
nbt.setInteger("yMark", this.yMark);
nbt.setInteger("zMark", this.zMark);
nbt.setString("playerName", this.playerName);
ByteBufUtils.writeTag(buf, nbt);
}
}
приемник (временный):
Код:
public class KTPacketHandler {
public static class ActivateMarkerHandler implements IMessageHandler<ActivateMarkerMessage, IMessage> {
@Override
public IMessage onMessage(ActivateMarkerMessage message, MessageContext ctx) {
System.out.println(String.format("%s: %s, %s, %s - %s, %s, %s",
message.playerName,
message.xCoord, message.yCoord, message.zCoord,
message.xMark, message.yMark, message.zMark));
return null;
}
}
}
регистрацию не даю, т.к. она не правильная