1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Помогите Vault hook. Недостаточно средств

Тема в разделе "Разработка плагинов для новичков", создана пользователем OJIEKCAHDP, 14 апр 2021.

  1. Автор темы
    OJIEKCAHDP

    OJIEKCAHDP Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    OJIEKCAHDP
    В общем решил сделать свой плуг на экономику, баланс определяет, но когда пытаюсь что-либо купить допустим на аукционе (который поддерживает Vault) пишет недостаточно средств, в чём может быть проблема?
    Код:
        @Override
        public EconomyResponse withdrawPlayer(OfflinePlayer player, String arg1, double amount) {
            
            if (plugin.getConfig().get("BalanceList." + player.getName() + ".rubins") == null) {
                plugin.getConfig().set("BalanceList." + player.getName() + ".rubins", 0);
                plugin.saveConfig();
            }
            
            double balance = this.getBalance(player);
            if (amount > balance) {
                return new EconomyResponse(amount, balance, EconomyResponse.ResponseType.FAILURE, "§fсредств нема");
            }
            
            plugin.getConfig().set("BalanceList." + player.getName() + ".rubins", balance - amount);
            plugin.saveConfig();
            
            return new EconomyResponse(amount, balance, EconomyResponse.ResponseType.SUCCESS, "");
        }
     
  2. imDaniX

    imDaniX Активный участник Пользователь

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
    Очевидно, возвращается низкий баланс. Проверь - хоть в консоль или сообщение игроку кинь.
     
  3. Автор темы
    OJIEKCAHDP

    OJIEKCAHDP Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    OJIEKCAHDP
    нет, с балансом нормально всё, хватает для покупки
     
  4. Автор темы
    OJIEKCAHDP

    OJIEKCAHDP Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    OJIEKCAHDP
    кстати говоря, если добавить
    Код:
    System.out.print(balance);
    то в консоли не выводится, будто функция даже не выполняется
     
  5. imDaniX

    imDaniX Активный участник Пользователь

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
    Но ведь тебе пишет, что средств не хватает - значит проваливается конкретно условие amount > balance. Возможно, amount больше баланса.
    println попробуй.
     
  6. Автор темы
    OJIEKCAHDP

    OJIEKCAHDP Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    OJIEKCAHDP
    Не работает println, на счёт того, что сумма больше баланса - нет. Я мог бы думать, что плагин на аукцион кривой, но с другим плагином на экономику работает на ура. Баланс определяю другим методом getBalance, выводит нормально, от него и получаю сюда. Такое ощущение, что просто функция не выполняется.
     
  7. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    А ты экономику свою правильно зарегистрировал то?
    Код:
        private void setupVault() {
            Plugin vault = this.getServer().getPluginManager().getPlugin("Vault");
            if (vault != null) {
                RegisteredServiceProvider<Economy> economyProvider = this.getServer().getServicesManager()
                        .getRegistration(Economy.class);
                if (economyProvider != null) {
                    this.getServer().getServicesManager().unregister(economyProvider.getProvider());
                }
                this.getServer().getServicesManager().register(Economy.class, this.eco, this, ServicePriority.Highest);
            }
        }
     
  8. Автор темы
    OJIEKCAHDP

    OJIEKCAHDP Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    OJIEKCAHDP
    да, правильно
     
  9. imDaniX

    imDaniX Активный участник Пользователь

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
    Хм. Мб выполняется метод withdrawPlayer(OfflinePlayer player, double amount)? Tы реализовал его также?
     
  10. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Есть еще метод withdrawPlayer(String player, double amount) где игрок по имени. И того 4 разных вариаций.
     
  11. imDaniX

    imDaniX Активный участник Пользователь

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
    deprecated же. Хотя если плагин древний...
     
  12. Автор темы
    OJIEKCAHDP

    OJIEKCAHDP Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    OJIEKCAHDP
    Все методы реализованы одинаково, просто вместо name использую player.getName()
     
  13. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Ну значит ты все же не зарегистрировал класс экономики или еще что.
     
  14. Автор темы
    OJIEKCAHDP

    OJIEKCAHDP Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    OJIEKCAHDP
    пробую регистрировать по примеру выше, что вы имеете ввиду под this.eco:
     
  15. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Реализация интерфейса Economy, логично же.
     
  16. Автор темы
    OJIEKCAHDP

    OJIEKCAHDP Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    OJIEKCAHDP
    Возможно я тупой, но я делаю так:

    Код:
        private VaultHook vaulthook;
            vaulthook = new VaultHook();
    
          public void onEnable() {
          setupVault();
         }
    
        private void setupVault() {
            Plugin vault = this.getServer().getPluginManager().getPlugin("Vault");
            if (vault != null) {
                RegisteredServiceProvider<Economy> economyProvider = this.getServer().getServicesManager()
                        .getRegistration(Economy.class);
                if (economyProvider != null) {
                    this.getServer().getServicesManager().unregister(economyProvider.getProvider());
                }
                this.getServer().getServicesManager().register(Economy.class, vaulthook, this, ServicePriority.Highest);
            }
        }
    что не так?
     
  17. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Так и есть. Выучи java.
     
  18. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Код:
        private VaultHook vaulthook;
     
         public void onEnable() {
            vaulthook = new VaultHook();
            setupVault();
         }
     
  19. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Ну или сразу вот так
    Код:
    private void setupVault() {
            Plugin vault = this.getServer().getPluginManager().getPlugin("Vault");
            if (vault != null) {
                RegisteredServiceProvider<Economy> economyProvider = this.getServer().getServicesManager()
                        .getRegistration(Economy.class);
                if (economyProvider != null) {
                    this.getServer().getServicesManager().unregister(economyProvider.getProvider());
                }
                this.getServer().getServicesManager().register(Economy.class, new VaultHook(), this, ServicePriority.Highest);
            }
        }
     
  20. Автор темы
    OJIEKCAHDP

    OJIEKCAHDP Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    OJIEKCAHDP
    короче бред, правильно зарегистрировал, раз определяет мой счёт, есть ещё предположения?
     

Поделиться этой страницей