💸Custom economy

Add your economies

With the zAuctionHouse API, you can create an infinite amount of AuctionEconomy! To do this, you need to create a class that implements the AuctionEconomy interface. Then, simply implement each method in the interface.

Here is an example of an economy with the level of the players:

package fr.maxlego08.zauctionhouse.economy;

import org.bukkit.OfflinePlayer;
import org.bukkit.entity.Player;

import fr.maxlego08.zauctionhouse.api.economy.AuctionEconomy;

public class LevelEconomy implements AuctionEconomy {

  @Override
  public long getMoney(OfflinePlayer offlinePlayer) {
    return offlinePlayer.isOnline() ? ((Player) offlinePlayer).getLevel() : 0;
  }

  @Override
  public boolean hasMoney(OfflinePlayer offlinePlayer, long price) {
    return getMoney(offlinePlayer) >= price;
  }

  @Override
  public void depositMoney(OfflinePlayer offlinePlayer, long value) {
    if (offlinePlayer.isOnline()) {
      int level = offlinePlayer.getPlayer().getLevel();
      offlinePlayer.getPlayer().setLevel((int) (level + value));
    }
  }

  @Override
  public void withdrawMoney(OfflinePlayer offlinePlayer, long value) {
    if (offlinePlayer.isOnline()) {
       int level = offlinePlayer.getPlayer().getLevel();
       offlinePlayer.getPlayer().setLevel((int) (level - value));
    }
  }

  @Override
  public String getCurrency() {
    return "%price%L";
  }

  @Override
  public String getFormat() {
    return "l";
  }

  @Override
  public boolean isEnable() {  
    return true;
  }

  @Override
  public String getName() {
    return "LEVEL";
  }
  
}

If you directly imported the jar of the plugin you can use the DefaultEconomy class like that:

public class ExampleEconomy extends DefaultEconomy {

    public ExampleEconomy() {
        super("example", "%price%â‚Ŧ", "You dont have enough money", "e");
    }

    @Override
    public long getMoney(OfflinePlayer offlinePlayer) {
        return 10000;
    }

    @Override
    public void depositMoney(OfflinePlayer offlinePlayer, long l) {
        // Do Your Stuff
    }

    @Override
    public void withdrawMoney(OfflinePlayer offlinePlayer, long l) {
        // Do Your Stuff
    }
}

Vous devez ajouter dans votre plugin.yml le loadBefore pour zAuctionHouse. Cela va indiquer a votre serveur que votre plugin doit charger avant zAuctionHouse.

loadbefore:
  - zAuctionHouseV3

Then you need to create a listener for the event AuctionLoadEconomyEvent, this event will allow to retrieve the EconomyManager interface to register your economy.

public class TestListener implements Listener {

    @EventHandler
    public void onLoad(AuctionLoadEconomyEvent event) {

        EconomyManager economyManager = event.getEconomyManager();
        economyManager.registerEconomy(new ExampleEconomy());
    }

}

Last updated