Не сохраняется класс

Статус
Закрыто для дальнейших ответов.

Akultist

Активный участник
Пользователь
Баллы
46
Имя в Minecraft
Name
Здравствуйте. У меня есть статическая мапа с интами и классами минигейма. При включении сервера я создаю новые экземпляры класса минигейм и помещаю их в эту мапу.
Когда сервер обращается к этой мапе он проверяет есть ли в мапе этот инт. Проверка проходит успешно. Но вот переменные которые там были не сохраняются. Просто при обращение как будто создается новый экземпляр класса.. Я чекнул на хэш код эти классы и при каждом новом обращении у них разные хеш коды. Помогите, как мне хранить эти минигеймы с интами (int для того кто не понял) что-бы все переменные сохранялись?
 
Ещё раз:

По-русски, что тебе необходимо в результате получить? Без терминов, интов, классов и так далее.
1. Игрок заходит на сервер
2. Игрок кликнул по табл.
3. Игрок заходит в игру (В моём случае sw)
4. вуоля.

Моя проблема:
Игрок заходит в игру. Другие тоже заходят. Должно пополнятся online на табличке. online стоит 1 и ничего не происходит.

P.S online - берется из той самой переменной - List<Player> players. В видео думаю видно.
 
А точно.. Про класс SkyWars забыл -
Код:
public class SkyWars extends Game {
    
    public SkyWars(int id) {
        this.id = id;
        this.join = TypeJoin.STARTING;
    }
    
    @Override
    protected void startGame() {
        
    }

    @Override
    protected void logicGame() {
        
    }

    @Override
    protected void endGame(boolean force) {
        
    }

    @Override
    public int defaultTime() {
        return 20;
    }

}
 
Не обновляется табличка?
Нет.. Она обновляется. При заходе игрока создается новый класс куда игрок и пихается. Хотя должно брать из мапы класс и добавлять его туда. (Заходе в игру SW (Клике по табличке))
 
Нет.. Она обновляется. При заходе игрока создается новый класс куда игрок и пихается. Хотя должно брать из мапы класс и добавлять его туда. (Заходе в игру SW (Клике по табличке))
map.get(key) получить объект из мапы. Ничего сложного.
 
Метод register();

Код:
ConfigManager arena = new ConfigManager("arena", Main.getInstance());

        if (arena.getString("arena") != null)
        {
            for (String arenas: arena.getCS("arena").getKeys(false))
            {
                swMap.put(Integer.parseInt(arenas), new SkyWars(Integer.parseInt(arenas)));
            }
        }

в файле арена -

Код:
arena:
  '990':
    map: test
 
Ок. Вот те пример.

Код:
public class SkyWars {
    private List<Player> players = new ArrayList<Player>();

    public void joinPlayer(Player player) {
        this.players.add(player);
    }
    
    public  List<Player> getPlayers() {
        return this.players;
    }
}

Код:
        map.get(1).joinPlayer(player);
        map.get(1).getPlayers();
 
Ок. Вот те пример.

Код:
public class SkyWars {
    private List<Player> players = new ArrayList<Player>();

    public void joinPlayer(Player player) {
        this.players.add(player);
    }
   
    public  List<Player> getPlayers() {
        return this.players;
    }
}

Код:
        map.get(1).joinPlayer(player);
        map.get(1).getPlayers();
У меня же по сути также.. Или что у меня отличается?
 
Ок. Вот те пример.

Код:
public class SkyWars {
    private List<Player> players = new ArrayList<Player>();

    public void joinPlayer(Player player) {
        this.players.add(player);
    }
   
    public  List<Player> getPlayers() {
        return this.players;
    }
}

Код:
        map.get(1).joinPlayer(player);
        map.get(1).getPlayers();
У меня такой же swMap.get(id).joinPlayer(Player);
такой же swMap.get(id).getSize();

И в абстрактном классе тоже есть такие методы и переменные как у Вас.
 
Оказывается ответ был прост.. Нужно было просто в методе register(); сделать проверку на то что если игра уже содержится в мапе продолжить цикл.. P.S:
Код:
private void register()
    {
        ConfigManager arena = new ConfigManager("arena", Main.getInstance());

        if (arena.getString("arena") != null)
        {
            for (String arenas: arena.getCS("arena").getKeys(false))
            {
                if (swMap.containsKey(Integer.parseInt(arenas))) continue;
                swMap.put(Integer.parseInt(arenas), new SkyWars(Integer.parseInt(arenas)));
            }
        }
    }

P.S: if (swMap.containsKey(Integer.parseInt(arenas))) continue;

Потому-что в мапу все игры добавлялись по два раза..
Тема закрыта.
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх