И снова здравствуйте, я все еще не могу решить свои проблемы с данными в тайле)
Пытаюсь каждый раз при обновлении счетчика в тайле отправлять пакет клиенту. Вот все что есть.
Спасибо большое всем, кто помогал мне в прошлых темах, я очень ценю такую поддержку))
Но вот что-то эта проблема все не хочет уходить от меня. Я много гуглил, смотрел ролики на ютубе. Тупо копипастил готовый код, но почему-то все равно не могу решить, вроде бы, не сложную проблему.
Пытаюсь каждый раз при обновлении счетчика в тайле отправлять пакет клиенту. Вот все что есть.
Спасибо большое всем, кто помогал мне в прошлых темах, я очень ценю такую поддержку))
Но вот что-то эта проблема все не хочет уходить от меня. Я много гуглил, смотрел ролики на ютубе. Тупо копипастил готовый код, но почему-то все равно не могу решить, вроде бы, не сложную проблему.
Код:
public class MessageCount implements IMessage
{
private int count;
private int X;
private int Y;
private int Z;
public MessageCount(int c, int X, int Y, int Z)
{
this.count=c;
this.X=X;
this.Y=Y;
this.Z=Z;
}
public int getCount()
{
return this.count;
}
public int getX()
{
return this.X;
}
public int getY()
{
return this.Y;
}
public int getZ()
{
return this.Z;
}
@Override
public void fromBytes(ByteBuf buf)
{
this.count = buf.readInt();
this.X=buf.readInt();
this.Y=buf.readInt();
this.Z=buf.readInt();
}
@Override
public void toBytes(ByteBuf buf)
{
buf.writeInt(this.count);
buf.writeInt(this.X);
buf.writeInt(this.Y);
buf.writeInt(this.Z);
}
}
Код:
public class CounterMessageHandler implements IMessageHandler<MessageCount, IMessage>
{
@Override
public IMessage onMessage(MessageCount message, MessageContext ctx) {
EntityPlayerMP serverPlayer = ctx.getServerHandler().player;
BlockPos pos = new BlockPos(message.getX(), message.getY(), message.getZ());
TileCounter tile = (TileCounter) serverPlayer.getEntityWorld().getTileEntity(pos);
tile.setCount(message.getCount());
return null;
}
}
Код:
public void sendUpdates() //Вызываю метод там, где в тайле меняется значение счетчика
{
IMessage msg = new MessageCount(this.count, this.pos.getX(), this.pos.getY(), this.pos.getZ());
WorldServer worldServer = (WorldServer) this.getWorld();
TargetPoint point = new TargetPoint(worldServer.provider.getDimension(), this.pos.getX(), this.pos.getY(), this.pos.getZ(), 1.0D);
CommonProxy.networkHandler.sendToAllAround(msg, point);
}
//сетер
public void setCount(int n)
{
this.count = n;
}
Код:
public static SimpleNetworkWrapper networkHandler;
@EventHandler
public void preInit(FMLPreInitializationEvent event)
{
networkHandler = NetworkRegistry.INSTANCE.newSimpleChannel("expchannel");
networkHandler.registerMessage(CounterMessageHandler.class, MessageCount.class, 1, Side.SERVER);
}