Skip to content

SUGGESTION EtyEconomy support (My own plugin) #1396

@Majales13

Description

@Majales13

Hello There, is it possible to add economy support from my plugin? My plugin is not public yet, but i am going to publish it as it has more interesting features as all the other plugins. I will send you all the needed information you need. ❤️

Thank you for your time and energy, if you will need more information, please contact me on discord: majales
Have a great day 👑

POM Dependency:

    <dependency>
        <groupId>sGoEty</groupId>
        <artifactId>etycommander</artifactId>
        <version>1.0</version>
        <scope>provided</scope>
    </dependency>

Soft depend: [EtyCommander]

Economy Hook:

package name.yourpluginname.economy;

import org.bukkit.Bukkit;
import org.bukkit.plugin.RegisteredServiceProvider;
import org.bukkit.plugin.java.JavaPlugin;
import sGoEty.etyCommander.storage.EconomyStorage.EconomyService;

public final class EtyEconomyHook {

    private static EconomyService economy;

    public static boolean setup(JavaPlugin plugin) {
        RegisteredServiceProvider<EconomyService> rsp =
                Bukkit.getServicesManager().getRegistration(EconomyService.class);

        if (rsp == null) return false;

        economy = rsp.getProvider();
        return economy != null;
    }

    public static EconomyService get() {
        return economy;
    }
}

Economy Adapter:

package name.yourpluginname.economy;

import sGoEty.etyCommander.storage.EconomyStorage.EconomyService;

import java.util.UUID;
import java.util.concurrent.CompletableFuture;

public final class EtyEconomyAdapter {

    private final EconomyService eco;

    public EtyEconomyAdapter(EconomyService eco) {
        this.eco = eco;
    }

    public CompletableFuture<Long> balance(UUID player) {
        return eco.getBalance(player);
    }

    public CompletableFuture<Boolean> has(UUID player, long amount) {
        if (amount <= 0) return CompletableFuture.completedFuture(true);
        return eco.getBalance(player).thenApply(bal -> bal >= amount);
    }

    public CompletableFuture<Boolean> withdraw(UUID player, String playerName, long amount) {
        if (amount <= 0) return CompletableFuture.completedFuture(true);
        return eco.take(player, playerName, amount);
    }

    public CompletableFuture<Boolean> deposit(UUID player, String playerName, long amount) {
        if (amount <= 0) return CompletableFuture.completedFuture(true);
        return eco.add(player, playerName, amount);
    }

Economy detection:

package name.yourpluginname.listener;

import name.yourpluginname.economy.EtyEconomyHook;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.server.PluginEnableEvent;
import org.bukkit.plugin.java.JavaPlugin;

public class EtyCommanderEnableListener implements Listener {

    private final JavaPlugin plugin;

    public EtyCommanderEnableListener(JavaPlugin plugin) {
        this.plugin = plugin;
    }

    @EventHandler
    public void onPluginEnable(PluginEnableEvent e) {
        if (!e.getPlugin().getName().equalsIgnoreCase("EtyCommander")) return;

        if (EtyEconomyHook.get() != null) return;

        if (EtyEconomyHook.setup(plugin)) {
            plugin.getLogger().info("EtyCommander EconomyService found – economy is ready.");
        } else {
            plugin.getLogger().warning("EtyCommander turned on, but EconomyService is still unavailable.");
        }
    }
}

Warning message if residence loads before economy plugin (main class - onEnable):

if (!EtyEconomyHook.setup(this)) {
            getLogger().warning("EtyCommander EconomyService is not available yet. Waiting until it's turned on...");
        }

listener implementation onEnable:

Bukkit.getPluginManager().registerEvents(new EtyCommanderEnableListener(this), this);

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions