mirror of
https://github.com/xHyroM/lighteco.git
synced 2024-11-21 22:41:06 +01:00
feat(currency-money): vault support, feat(common): messages
This commit is contained in:
parent
c82b04970b
commit
f937943bdd
11 changed files with 311 additions and 9 deletions
|
@ -54,7 +54,8 @@ public class BukkitCommandManager extends AbstractCommandManager {
|
||||||
new CommandAPICommand(currency.getIdentifier())
|
new CommandAPICommand(currency.getIdentifier())
|
||||||
.withSubcommand(new SetCommand(this, currency, permissionBase).build())
|
.withSubcommand(new SetCommand(this, currency, permissionBase).build())
|
||||||
.withSubcommand(new GiveCommand(this, currency, permissionBase).build())
|
.withSubcommand(new GiveCommand(this, currency, permissionBase).build())
|
||||||
.withSubcommand(new TakeCommand(this, currency, permissionBase).build());
|
.withSubcommand(new TakeCommand(this, currency, permissionBase).build())
|
||||||
|
.register();
|
||||||
|
|
||||||
new PayCommand(this, currency, permissionBase).build().register();
|
new PayCommand(this, currency, permissionBase).build().register();
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package dev.xhyrom.lighteco.common.config;
|
package dev.xhyrom.lighteco.common.config;
|
||||||
|
|
||||||
|
import dev.xhyrom.lighteco.common.config.message.MessageConfig;
|
||||||
import dev.xhyrom.lighteco.common.config.storage.StorageConfig;
|
import dev.xhyrom.lighteco.common.config.storage.StorageConfig;
|
||||||
import eu.okaeri.configs.OkaeriConfig;
|
import eu.okaeri.configs.OkaeriConfig;
|
||||||
import eu.okaeri.configs.annotation.Comment;
|
import eu.okaeri.configs.annotation.Comment;
|
||||||
|
@ -15,4 +16,7 @@ public class Config extends OkaeriConfig {
|
||||||
|
|
||||||
@Comment("Storage settings.")
|
@Comment("Storage settings.")
|
||||||
public StorageConfig storage = new StorageConfig();
|
public StorageConfig storage = new StorageConfig();
|
||||||
|
|
||||||
|
@Comment("Messages")
|
||||||
|
public MessageConfig messages = new MessageConfig();
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,16 @@
|
||||||
|
package dev.xhyrom.lighteco.common.config.message;
|
||||||
|
|
||||||
|
import eu.okaeri.configs.OkaeriConfig;
|
||||||
|
import eu.okaeri.configs.annotation.Variable;
|
||||||
|
|
||||||
|
public class CurrencyMessageConfig extends OkaeriConfig {
|
||||||
|
public String balance = "<currency> <dark_gray>| <gray>Your balance: <yellow><balance> </yellow></gray>";
|
||||||
|
@Variable("balance-others")
|
||||||
|
public String balanceOthers = "<currency> <dark_gray>| <gray>Balance of <yellow><target> <dark_gray>| <gray><yellow><balance> </yellow></gray>";
|
||||||
|
|
||||||
|
public String set = "<currency> <dark_gray>| <gray>Set balance of <yellow><target> <dark_gray>| <gray><yellow><balance> </yellow></gray>";
|
||||||
|
public String give = "<currency> <dark_gray>| <gray>Gave <yellow><target> <dark_gray>| <gray><yellow><balance> </yellow></gray>";
|
||||||
|
public String take = "<currency> <dark_gray>| <gray>Took <yellow><target> <dark_gray>| <gray><yellow><balance> </yellow></gray>";
|
||||||
|
|
||||||
|
public String pay = "<currency> <dark_gray>| <gray>Paid <gold><amount> <yellow>to <gold><target> <dark_gray>(<gold><taxed_amount> <yellow>after tax)</gray>";
|
||||||
|
}
|
|
@ -0,0 +1,10 @@
|
||||||
|
package dev.xhyrom.lighteco.common.config.message;
|
||||||
|
|
||||||
|
import eu.okaeri.configs.OkaeriConfig;
|
||||||
|
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
public class MessageConfig extends OkaeriConfig {
|
||||||
|
public Map<String, CurrencyMessageConfig> currency = Collections.singletonMap("default", new CurrencyMessageConfig());
|
||||||
|
}
|
|
@ -1,25 +1,29 @@
|
||||||
package dev.xhyrom.lighteco.common.manager.command;
|
package dev.xhyrom.lighteco.common.manager.command;
|
||||||
|
|
||||||
|
import dev.xhyrom.lighteco.common.config.message.CurrencyMessageConfig;
|
||||||
import dev.xhyrom.lighteco.common.model.chat.CommandSender;
|
import dev.xhyrom.lighteco.common.model.chat.CommandSender;
|
||||||
import dev.xhyrom.lighteco.common.model.currency.Currency;
|
import dev.xhyrom.lighteco.common.model.currency.Currency;
|
||||||
import dev.xhyrom.lighteco.common.model.user.User;
|
import dev.xhyrom.lighteco.common.model.user.User;
|
||||||
import dev.xhyrom.lighteco.common.plugin.LightEcoPlugin;
|
import dev.xhyrom.lighteco.common.plugin.LightEcoPlugin;
|
||||||
import net.kyori.adventure.text.minimessage.MiniMessage;
|
import net.kyori.adventure.text.minimessage.MiniMessage;
|
||||||
|
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.math.RoundingMode;
|
import java.math.RoundingMode;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.Map;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import java.util.concurrent.CompletableFuture;
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
|
||||||
public abstract class AbstractCommandManager implements CommandManager {
|
public abstract class AbstractCommandManager implements CommandManager {
|
||||||
public final LightEcoPlugin plugin;
|
public final LightEcoPlugin plugin;
|
||||||
private final MiniMessage miniMessage = MiniMessage.miniMessage();
|
private final MiniMessage miniMessage = MiniMessage.miniMessage();
|
||||||
|
private final Map<String, CurrencyMessageConfig> config;
|
||||||
private final ArrayList<UUID> mustWait = new ArrayList<>();
|
private final ArrayList<UUID> mustWait = new ArrayList<>();
|
||||||
|
|
||||||
public AbstractCommandManager(LightEcoPlugin plugin) {
|
public AbstractCommandManager(LightEcoPlugin plugin) {
|
||||||
this.plugin = plugin;
|
this.plugin = plugin;
|
||||||
|
this.config = this.plugin.getConfig().messages.currency;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -52,13 +56,27 @@ public abstract class AbstractCommandManager implements CommandManager {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private CurrencyMessageConfig getConfig(Currency currency) {
|
||||||
|
CurrencyMessageConfig config = this.config.get(currency.getIdentifier());
|
||||||
|
|
||||||
|
if (config == null) {
|
||||||
|
return this.config.get("default");
|
||||||
|
}
|
||||||
|
|
||||||
|
return config;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onBalance(CommandSender sender, Currency currency) {
|
public void onBalance(CommandSender sender, Currency currency) {
|
||||||
User user = this.plugin.getUserManager().getIfLoaded(sender.getUniqueId());
|
User user = this.plugin.getUserManager().getIfLoaded(sender.getUniqueId());
|
||||||
BigDecimal balance = user.getBalance(currency);
|
BigDecimal balance = user.getBalance(currency);
|
||||||
|
|
||||||
sender.sendMessage(
|
sender.sendMessage(
|
||||||
miniMessage.deserialize("<yellow>Your balance: <gold>" + balance.toPlainString() + " <yellow>" + currency.getIdentifier())
|
miniMessage.deserialize(
|
||||||
|
getConfig(currency).balance,
|
||||||
|
Placeholder.parsed("currency", currency.getIdentifier()),
|
||||||
|
Placeholder.parsed("balance", balance.toPlainString())
|
||||||
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -67,7 +85,13 @@ public abstract class AbstractCommandManager implements CommandManager {
|
||||||
BigDecimal balance = target.getBalance(currency);
|
BigDecimal balance = target.getBalance(currency);
|
||||||
|
|
||||||
sender.sendMessage(
|
sender.sendMessage(
|
||||||
miniMessage.deserialize("<yellow>" + target.getUsername() + "'s balance: <gold>" + balance.toPlainString() + " <yellow>" + currency.getIdentifier())
|
miniMessage.deserialize(
|
||||||
|
getConfig(currency).balanceOthers,
|
||||||
|
Placeholder.parsed("currency", currency.getIdentifier()),
|
||||||
|
Placeholder.parsed("target", target.getUsername()),
|
||||||
|
Placeholder.parsed("balance", balance.toPlainString())
|
||||||
|
)
|
||||||
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -4,12 +4,13 @@ plugins {
|
||||||
|
|
||||||
repositories {
|
repositories {
|
||||||
maven("https://repo.papermc.io/repository/maven-public/")
|
maven("https://repo.papermc.io/repository/maven-public/")
|
||||||
|
maven("https://jitpack.io")
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
compileOnly(project(":lighteco-api"))
|
compileOnly(project(":lighteco-api"))
|
||||||
|
|
||||||
compileOnly("io.papermc.paper:paper-api:1.20.1-R0.1-SNAPSHOT")
|
compileOnly("io.papermc.paper:paper-api:1.20.1-R0.1-SNAPSHOT")
|
||||||
|
compileOnly("com.github.MilkBowl:VaultAPI:1.7")
|
||||||
|
|
||||||
compileOnly("org.projectlombok:lombok:1.18.28")
|
compileOnly("org.projectlombok:lombok:1.18.28")
|
||||||
annotationProcessor("org.projectlombok:lombok:1.18.28")
|
annotationProcessor("org.projectlombok:lombok:1.18.28")
|
||||||
|
|
|
@ -5,6 +5,7 @@ import dev.xhyrom.lighteco.api.LightEcoProvider;
|
||||||
import dev.xhyrom.lighteco.api.manager.CommandManager;
|
import dev.xhyrom.lighteco.api.manager.CommandManager;
|
||||||
import dev.xhyrom.lighteco.api.manager.CurrencyManager;
|
import dev.xhyrom.lighteco.api.manager.CurrencyManager;
|
||||||
import dev.xhyrom.lighteco.api.model.currency.Currency;
|
import dev.xhyrom.lighteco.api.model.currency.Currency;
|
||||||
|
import dev.xhyrom.lighteco.currency.money.bukkit.hooks.vault.VaultFactory;
|
||||||
import dev.xhyrom.lighteco.currency.money.common.MoneyCurrency;
|
import dev.xhyrom.lighteco.currency.money.common.MoneyCurrency;
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
|
||||||
|
@ -19,6 +20,11 @@ public class BukkitMCLoader extends JavaPlugin {
|
||||||
|
|
||||||
currencyManager.registerCurrency(currency);
|
currencyManager.registerCurrency(currency);
|
||||||
commandManager.registerCurrencyCommand(currency, true);
|
commandManager.registerCurrencyCommand(currency, true);
|
||||||
|
|
||||||
|
if (getServer().getPluginManager().getPlugin("Vault") != null) {
|
||||||
|
getSLF4JLogger().info("Vault found, hooking...");
|
||||||
|
new VaultFactory(this).hook();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
package dev.xhyrom.lighteco.currency.money.bukkit.hooks;
|
|
||||||
|
|
||||||
public class Vault {
|
|
||||||
}
|
|
|
@ -0,0 +1,205 @@
|
||||||
|
package dev.xhyrom.lighteco.currency.money.bukkit.hooks.vault;
|
||||||
|
|
||||||
|
import dev.xhyrom.lighteco.api.LightEco;
|
||||||
|
import dev.xhyrom.lighteco.api.LightEcoProvider;
|
||||||
|
import dev.xhyrom.lighteco.api.model.currency.Currency;
|
||||||
|
import dev.xhyrom.lighteco.api.model.user.User;
|
||||||
|
import net.milkbowl.vault.economy.AbstractEconomy;
|
||||||
|
import net.milkbowl.vault.economy.EconomyResponse;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
public class Vault extends AbstractEconomy {
|
||||||
|
private final LightEco provider;
|
||||||
|
private final Currency currency;
|
||||||
|
|
||||||
|
public Vault() {
|
||||||
|
this.provider = LightEcoProvider.get();
|
||||||
|
this.currency = this.provider.getCurrencyManager().getCurrency("money");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isEnabled() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getName() {
|
||||||
|
return "LightEco";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean hasBankSupport() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int fractionalDigits() {
|
||||||
|
return currency.fractionalDigits();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String format(double amount) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String currencyNamePlural() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String currencyNameSingular() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean hasAccount(String playerName) {
|
||||||
|
return hasAccount(playerName, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean hasAccount(String playerName, String worldName) {
|
||||||
|
UUID uniqueId = Bukkit.getPlayerUniqueId(playerName);
|
||||||
|
assert uniqueId != null;
|
||||||
|
|
||||||
|
return provider.getUserManager().isLoaded(uniqueId);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public double getBalance(String playerName) {
|
||||||
|
return getBalance(playerName, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public double getBalance(String playerName, String world) {
|
||||||
|
UUID uniqueId = Bukkit.getPlayerUniqueId(playerName);
|
||||||
|
User user = provider.getUserManager().loadUser(uniqueId).join();
|
||||||
|
|
||||||
|
return bigDecimalToDouble(user.getBalance(currency));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean has(String playerName, double amount) {
|
||||||
|
return has(playerName, null, amount);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean has(String playerName, String worldName, double amount) {
|
||||||
|
UUID uniqueId = Bukkit.getPlayerUniqueId(playerName);
|
||||||
|
User user = provider.getUserManager().loadUser(uniqueId).join();
|
||||||
|
|
||||||
|
return user.getBalance(currency).compareTo(BigDecimal.valueOf(amount)) >= 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public EconomyResponse withdrawPlayer(String playerName, double amount) {
|
||||||
|
return withdrawPlayer(playerName, null, amount);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public EconomyResponse withdrawPlayer(String playerName, String worldName, double amount) {
|
||||||
|
UUID uniqueId = Bukkit.getPlayerUniqueId(playerName);
|
||||||
|
User user = provider.getUserManager().loadUser(uniqueId).join();
|
||||||
|
|
||||||
|
BigDecimal balance = user.getBalance(currency);
|
||||||
|
BigDecimal newBalance = balance.subtract(BigDecimal.valueOf(amount));
|
||||||
|
|
||||||
|
user.setBalance(currency, newBalance);
|
||||||
|
|
||||||
|
provider.getUserManager().saveUser(user);
|
||||||
|
|
||||||
|
return new EconomyResponse(amount, bigDecimalToDouble(newBalance), EconomyResponse.ResponseType.SUCCESS, "");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public EconomyResponse depositPlayer(String playerName, double amount) {
|
||||||
|
return depositPlayer(playerName, null, amount);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public EconomyResponse depositPlayer(String playerName, String worldName, double amount) {
|
||||||
|
UUID uniqueId = Bukkit.getPlayerUniqueId(playerName);
|
||||||
|
User user = provider.getUserManager().loadUser(uniqueId).join();
|
||||||
|
|
||||||
|
BigDecimal balance = user.getBalance(currency);
|
||||||
|
BigDecimal newBalance = balance.add(BigDecimal.valueOf(amount));
|
||||||
|
|
||||||
|
user.setBalance(currency, newBalance);
|
||||||
|
|
||||||
|
provider.getUserManager().saveUser(user);
|
||||||
|
|
||||||
|
return new EconomyResponse(amount, bigDecimalToDouble(newBalance), EconomyResponse.ResponseType.SUCCESS, "");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public EconomyResponse createBank(String name, String player) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public EconomyResponse deleteBank(String name) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public EconomyResponse bankBalance(String name) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public EconomyResponse bankHas(String name, double amount) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public EconomyResponse bankWithdraw(String name, double amount) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public EconomyResponse bankDeposit(String name, double amount) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public EconomyResponse isBankOwner(String name, String playerName) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public EconomyResponse isBankMember(String name, String playerName) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<String> getBanks() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean createPlayerAccount(String playerName) {
|
||||||
|
return createPlayerAccount(playerName, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean createPlayerAccount(String playerName, String worldName) {
|
||||||
|
UUID uniqueId = Bukkit.getPlayerUniqueId(playerName);
|
||||||
|
provider.getUserManager().loadUser(uniqueId).join();
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private double bigDecimalToDouble(final BigDecimal value) {
|
||||||
|
double amount = value.doubleValue();
|
||||||
|
|
||||||
|
if (new BigDecimal(amount).compareTo(value) > 0) {
|
||||||
|
amount = Math.nextAfter(amount, Double.NEGATIVE_INFINITY);
|
||||||
|
}
|
||||||
|
|
||||||
|
return amount;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,24 @@
|
||||||
|
package dev.xhyrom.lighteco.currency.money.bukkit.hooks.vault;
|
||||||
|
|
||||||
|
import dev.xhyrom.lighteco.currency.money.bukkit.BukkitMCLoader;
|
||||||
|
import net.milkbowl.vault.economy.Economy;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.plugin.ServicePriority;
|
||||||
|
import org.bukkit.plugin.ServicesManager;
|
||||||
|
|
||||||
|
public class VaultFactory {
|
||||||
|
private final BukkitMCLoader plugin;
|
||||||
|
private Vault vault;
|
||||||
|
|
||||||
|
public VaultFactory(BukkitMCLoader plugin) {
|
||||||
|
this.plugin = plugin;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void hook() {
|
||||||
|
if (this.vault == null)
|
||||||
|
vault = new Vault();
|
||||||
|
|
||||||
|
ServicesManager manager = Bukkit.getServicesManager();
|
||||||
|
manager.register(Economy.class, vault, this.plugin, ServicePriority.Highest);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,15 @@
|
||||||
|
package dev.xhyrom.lighteco.currency.money.bukkit.listener;
|
||||||
|
|
||||||
|
import net.milkbowl.vault.economy.Economy;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.Listener;
|
||||||
|
import org.bukkit.event.server.ServiceRegisterEvent;
|
||||||
|
|
||||||
|
public class BukkitServiceListener implements Listener {
|
||||||
|
@EventHandler
|
||||||
|
public void onServiceRegister(ServiceRegisterEvent event) {
|
||||||
|
if (!(event.getProvider().getProvider() instanceof Economy)) return;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue