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

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, "");
    }
 
Очевидно, возвращается низкий баланс. Проверь - хоть в консоль или сообщение игроку кинь.
кстати говоря, если добавить
Код:
System.out.print(balance);
то в консоли не выводится, будто функция даже не выполняется
 
нет, с балансом нормально всё, хватает для покупки
Но ведь тебе пишет, что средств не хватает - значит проваливается конкретно условие amount > balance. Возможно, amount больше баланса.
кстати говоря, если добавить
Код:
System.out.print(balance);
то в консоли не выводится, будто функция даже не выполняется
println попробуй.
 
Но ведь тебе пишет, что средств не хватает - значит проваливается конкретно условие amount > balance. Возможно, amount больше баланса.

println попробуй.
Не работает println, на счёт того, что сумма больше баланса - нет. Я мог бы думать, что плагин на аукцион кривой, но с другим плагином на экономику работает на ура. Баланс определяю другим методом getBalance, выводит нормально, от него и получаю сюда. Такое ощущение, что просто функция не выполняется.
 
В общем решил сделать свой плуг на экономику, баланс определяет, но когда пытаюсь что-либо купить допустим на аукционе (который поддерживает Vault) пишет недостаточно средств, в чём может быть проблема?
А ты экономику свою правильно зарегистрировал то?
Код:
    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);
        }
    }
 
А ты экономику свою правильно зарегистрировал то?
Код:
    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);
        }
    }
да, правильно
 
Не работает println, на счёт того, что сумма больше баланса - нет. Я мог бы думать, что плагин на аукцион кривой, но с другим плагином на экономику работает на ура. Баланс определяю другим методом getBalance, выводит нормально, от него и получаю сюда. Такое ощущение, что просто функция не выполняется.
Хм. Мб выполняется метод withdrawPlayer(OfflinePlayer player, double amount)? Tы реализовал его также?
 
Есть еще метод withdrawPlayer(String player, double amount) где игрок по имени. И того 4 разных вариаций.
 
Хм. Мб выполняется метод withdrawPlayer(OfflinePlayer player, double amount)? Tы реализовал его также?
Есть еще метод withdrawPlayer(String player, double amount) где игрок по имени. И того 4 разных вариаций.

Все методы реализованы одинаково, просто вместо name использую player.getName()
 
А ты экономику свою правильно зарегистрировал то?
Код:
    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);
        }
    }
пробую регистрировать по примеру выше, что вы имеете ввиду под this.eco:
this.getServer().getServicesManager().register(Economy.class, this.eco, this, ServicePriority.Highest);
 
Реализация интерфейса Economy, логично же.
Возможно я тупой, но я делаю так:

Код:
    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);
        }
    }
что не так?
 
Код:
    private VaultHook vaulthook;
 
     public void onEnable() {
        vaulthook = new VaultHook();
        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, new VaultHook(), this, ServicePriority.Highest);
        }
    }
 
Назад
Верх