Не работает Packet для сохранение данных.

Версия Minecraft
1.12.2
API
Forge
122
4
6
Здоров. Создал я gui для блока, а в нем кнопку которая меняет значение TileEntity. Но проблема в том что значение меняется только на клиенте, и для этого я написал пакет который должен срабатывать на сервере, но это не происходит
Сам пакет:
public class PacketUpdateGameConsole implements IMessage, IMessageHandler<PacketUpdateGameConsole, IMessage> {
    private int timer;
    private int points;

    private int countTeams;
    private int sizeTeam;

    private int typeGame;
    private int typeMap;

    private boolean battleMode;
    private boolean friendlyFire;

    public PacketUpdateGameConsole() {}

    public PacketUpdateGameConsole(int typeGame) {
        this.typeGame = typeGame;
    }

    @Override public void fromBytes(ByteBuf buf) {
        typeGame = buf.readInt();
    }

    @Override public void toBytes(ByteBuf buf) {
        buf.writeInt(typeGame);
    }

    @Override public IMessage onMessage(PacketUpdateGameConsole message, MessageContext ctx) {
        IThreadListener mainThread = (WorldServer) ctx.getServerHandler().player.world;
        mainThread.addScheduledTask(new Runnable(){ public void run() {
            TileEntity tile = ctx.getServerHandler().player.world.getTileEntity(ctx.getServerHandler().player.getPosition());
            if (tile != null) {
                if (tile instanceof TileGameConsole) {
                    TileGameConsole tgc = (TileGameConsole) tile;

                    tgc.setTypeGame(message.typeGame);
                }
            }
        }});
        return null;
    }
}
рег пакета:
public class PacketHandler {
    public static final SimpleNetworkWrapper INSTANCE = NetworkRegistry.INSTANCE.newSimpleChannel(Main.MOD_ID.toLowerCase());

    public static void init() {
        INSTANCE.registerMessage(PacketUpdateGameConsole.class, PacketUpdateGameConsole.class, 0, Side.SERVER);
    }
}
активация по кнопке:
@Override protected void actionPerformed(GuiButton button) {
        if (button == exit) mc.displayGuiScreen(null);
        if (button == add_typegame) {
            int typeGame = tileGameConsole.getTypeGame() + 1;
            tileGameConsole.setTypeGame(typeGame);
            sendUpdateGCPacket(typeGame);
        }
    }

    private void sendUpdateGCPacket(int typeGame) {
        PacketUpdateGameConsole packet = new PacketUpdateGameConsole(typeGame);
        PacketHandler.INSTANCE.sendToServer(packet);
    }
public class CommonProxy { public void preInit(FMLPreInitializationEvent e) { regEvent(); PacketHandler.init(); } помогите кто знает в чем проблема? Может я делаю что-то не так?
 
122
4
6
уже сделал но сохранение происходит только один раз при перезаходе, но если второй раз перезайти то данные не сохранятся.
Java:
public class PacketUpdateGameConsole implements IMessage, IMessageHandler<PacketUpdateGameConsole, IMessage> {
    private int x, y, z;

    private int timer;
    private int points;

    private int countTeams;
    private int sizeTeam;

    private int typeGame;
    private int typeMap;

    private boolean battleMode;
    private boolean friendlyFire;

    public PacketUpdateGameConsole() {}

    public PacketUpdateGameConsole(BlockPos pos, int typeGame) {
        x = pos.getX();
        y = pos.getY();
        z = pos.getZ();
        this.typeGame = typeGame;
    }

    @Override public void fromBytes(ByteBuf buf) {
        x = buf.readInt();
        y = buf.readInt();
        z = buf.readInt();
        typeGame = buf.readInt();
    }

    @Override public void toBytes(ByteBuf buf) {
        buf.writeInt(x);
        buf.writeInt(y);
        buf.writeInt(z);
        buf.writeInt(typeGame);
    }

    @Override public IMessage onMessage(PacketUpdateGameConsole message, MessageContext ctx) {
        TileEntity tileEntity = ctx.getServerHandler().player.world.getTileEntity(new BlockPos(message.x, message.y, message.z));

        if (!(tileEntity instanceof TileGameConsole)) return null;
        ((TileGameConsole) tileEntity).setTypeGame(message.typeGame);
        markBlockForUpdate(ctx.getServerHandler().player.world, new BlockPos(message.x, message.y, message.z));
        return null;
    }

    public static void markBlockForUpdate(World world, BlockPos pos) {
        if (world == null) return;
        IBlockState blockState = world.getBlockState(pos);
        world.notifyBlockUpdate(pos, blockState, blockState, 3);
    }
}
Java:
@Override protected void actionPerformed(GuiButton button) {
        if (button == exit) mc.displayGuiScreen(null);
        if (button == add_typegame) {
            int typeGame = tileGameConsole.getTypeGame() + 1;
            tileGameConsole.setTypeGame(typeGame);
            PacketHandler.INSTANCE.sendToServer(new PacketUpdateGameConsole(tileGameConsole.getPos(), typeGame));
        }
    }
Java:
public class TileGameConsole extends BasisTileBlock implements ITickable {

    private boolean aC;
    private boolean activateConsole;
    private int timeStart;

    private int timer;
    private int points;

    private int countTeams;
    private int sizeTeam;

    private int typeGame;
    private int typeMap;

    private boolean battleMode;
    private boolean friendlyFire;

    @Override public void update() {
        if (getTimeStart() > 0) aC(getActivateConsole());
        if (getTypeGame() > 8) setTypeGame(0);

        if (getTimeStart() >= 1) setTimeStart(getTimeStart() + 1);
        if (getTimeStart() > 4) setTimeStart(0);
        IBlockState blockState = world.getBlockState(pos);
        world.notifyBlockUpdate(pos, blockState, blockState, 3);
    }
помогите исправить данную проблему.
 
Последнее редактирование:
Сверху