forked from bekvon/Residence
-
Notifications
You must be signed in to change notification settings - Fork 85
Open
Labels
Description
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);
Reactions are currently unavailable