Repository navigation
Conversation
|
|
||
| Atm atm = optionalAtm.get(); | ||
|
|
||
| atmService.unregister(atm.id()); |
There was a problem hiding this comment.
Похоже, здесь осталась старая реализация обработки BlockBreakEvent. Ниже та же логика уже нормально разделена между HIGHEST (onBlockBreakProtection) и MONITOR (onBlockBreakCleanup).
Текущий onBlockBreak() вызывается по идее на NORMAL, а значит делает unregister() до завершения обработки события другими плагинами. Если после него другой listener отменит ломание, блок останется, а ATM уже исчезнет из реестра
|
|
||
| atms.put(atm.id(), atm); | ||
| atmRepository.save(atm); | ||
|
|
There was a problem hiding this comment.
Здесь стоит поменять порядок: если по какой-либо причине не удастся сохранить банкомат в репозиторий, то в памяти он останется до перезагрузки
| public void unregister(UUID atmId) { | ||
| atms.remove(atmId); | ||
| atmRepository.delete(atmId); | ||
| } |
| ItemStack coin = coinService.createCoin(amount); | ||
|
|
||
| player.getInventory().addItem(coin); | ||
|
|
There was a problem hiding this comment.
есть coinService, который уже используется в предыдущей строке, и в нём есть addCoins, поэтому я бы использовал его
| description: 'A template plugin' | ||
| authors: ['EnderDissa', 'Stunnerer', 's4dnex'] | ||
| authors: ['russlan_1esse'] | ||
| contributors: ['technosimp'] |
There was a problem hiding this comment.
технически, стоило добавить авторов шаблона хотя бы в контрибьютеры, но это поправим при создании репозитория, как и gradle инфу
| @@ -0,0 +1,286 @@ | |||
| package ru.joutak.template.gui; | |||
Что реализовано
Хранение данных
Баланс игроков и история операций сохраняются в YAML через
AccountRepository.Зарегистрированные банкоматы сохраняются отдельно через
AtmRepository.Бизнес-логика не зависит напрямую от конкретного способа хранения, поэтому позже YAML можно заменить на БД без переписывания GUI и основной банковской логики.
Как распознаются монеты
Монета основана на
GOLD_NUGGET, но настоящие монеты помечаются черезPersistentDataContainer.Название или переименование предмета на наковальне не делает обычный предмет настоящей валютой.
CustomModelData используется только для отображения кастомной текстуры.
Проверка
Проверил:
Демонстрация
Видео: https://drive.google.com/file/d/1DTjinDu64Tq_K873yMK-wAvahhgzC3ML/view?usp=sharing