1
0
Fork 0
mirror of https://github.com/xHyroM/lighteco.git synced 2024-09-19 21:03:18 +02:00

feat(currency-money): add config

This commit is contained in:
Jozef Steinhübl 2023-08-30 13:42:28 +02:00
parent ec573d8357
commit f0fda5bcbf
8 changed files with 100 additions and 13 deletions

View file

@ -5,6 +5,7 @@ plugins {
repositories { repositories {
maven("https://repo.papermc.io/repository/maven-public/") maven("https://repo.papermc.io/repository/maven-public/")
maven("https://jitpack.io") maven("https://jitpack.io")
maven("https://storehouse.okaeri.eu/repository/maven-public/")
} }
dependencies { dependencies {
@ -14,9 +15,19 @@ dependencies {
compileOnly("com.github.MilkBowl:VaultAPI:1.7") compileOnly("com.github.MilkBowl:VaultAPI:1.7")
// This can be compileOnly because it's included in common (lighteco-platform)
// Reduce duplication and size
compileOnly("eu.okaeri:okaeri-configs-yaml-snakeyaml:5.0.0-beta.5")
compileOnly("eu.okaeri:okaeri-configs-validator-okaeri:5.0.0-beta.5")
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")
compileOnly("org.checkerframework:checker-qual:3.8.0") compileOnly("org.checkerframework:checker-qual:3.8.0")
compileOnly("org.jetbrains:annotations:20.1.0") compileOnly("org.jetbrains:annotations:20.1.0")
}
tasks.shadowJar {
relocate("eu.okaeri.configs", "dev.xhyrom.lighteco.libraries.okaeri.configs")
relocate("eu.okaeri.validator", "dev.xhyrom.lighteco.libraries.okaeri.validator")
} }

View file

@ -6,13 +6,25 @@ 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.bukkit.hooks.vault.VaultFactory;
import dev.xhyrom.lighteco.currency.money.common.MoneyCurrency; import dev.xhyrom.lighteco.currency.money.common.AbstractPlugin;
import dev.xhyrom.lighteco.currency.money.common.Plugin;
import dev.xhyrom.lighteco.currency.money.common.currency.MoneyCurrency;
import lombok.Getter;
import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.plugin.java.JavaPlugin;
import java.util.UUID;
public class BukkitMCLoader extends JavaPlugin { public class BukkitMCLoader extends JavaPlugin {
private VaultFactory vaultFactory; private VaultFactory vaultFactory;
@Getter
private final Plugin plugin;
public BukkitMCLoader() {
this.plugin = new AbstractPlugin(this.getDataFolder().toPath());
}
@Override
public void onLoad() {
this.plugin.load();
}
@Override @Override
public void onEnable() { public void onEnable() {

View file

@ -4,19 +4,25 @@ import dev.xhyrom.lighteco.api.LightEco;
import dev.xhyrom.lighteco.api.LightEcoProvider; import dev.xhyrom.lighteco.api.LightEcoProvider;
import dev.xhyrom.lighteco.api.model.currency.Currency; import dev.xhyrom.lighteco.api.model.currency.Currency;
import dev.xhyrom.lighteco.api.model.user.User; import dev.xhyrom.lighteco.api.model.user.User;
import dev.xhyrom.lighteco.currency.money.bukkit.BukkitMCLoader;
import dev.xhyrom.lighteco.currency.money.common.Plugin;
import net.milkbowl.vault.economy.AbstractEconomy; import net.milkbowl.vault.economy.AbstractEconomy;
import net.milkbowl.vault.economy.EconomyResponse; import net.milkbowl.vault.economy.EconomyResponse;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.text.NumberFormat;
import java.util.List; import java.util.List;
import java.util.Locale;
import java.util.UUID; import java.util.UUID;
public class Vault extends AbstractEconomy { public class Vault extends AbstractEconomy {
private final Plugin plugin;
private final LightEco provider; private final LightEco provider;
private final Currency currency; private final Currency currency;
public Vault() { public Vault(Plugin plugin) {
this.plugin = plugin;
this.provider = LightEcoProvider.get(); this.provider = LightEcoProvider.get();
this.currency = this.provider.getCurrencyManager().getCurrency("money"); this.currency = this.provider.getCurrencyManager().getCurrency("money");
} }
@ -43,17 +49,20 @@ public class Vault extends AbstractEconomy {
@Override @Override
public String format(double amount) { public String format(double amount) {
return null; NumberFormat format = NumberFormat.getInstance();
format.setCurrency(java.util.Currency.getInstance(this.plugin.getConfig().currencyCode));
return format.format(BigDecimal.valueOf(amount));
} }
@Override @Override
public String currencyNamePlural() { public String currencyNamePlural() {
return null; return this.plugin.getConfig().currencyNamePlural;
} }
@Override @Override
public String currencyNameSingular() { public String currencyNameSingular() {
return null; return this.plugin.getConfig().currencyNameSingular;
} }
@Override @Override

View file

@ -7,19 +7,19 @@ import org.bukkit.plugin.ServicePriority;
import org.bukkit.plugin.ServicesManager; import org.bukkit.plugin.ServicesManager;
public class VaultFactory { public class VaultFactory {
private final BukkitMCLoader plugin; private final BukkitMCLoader loader;
private Vault vault; private Vault vault;
public VaultFactory(BukkitMCLoader plugin) { public VaultFactory(BukkitMCLoader loader) {
this.plugin = plugin; this.loader = loader;
} }
public void hook() { public void hook() {
if (this.vault == null) if (this.vault == null)
vault = new Vault(); vault = new Vault(this.loader.getPlugin());
ServicesManager manager = Bukkit.getServicesManager(); ServicesManager manager = Bukkit.getServicesManager();
manager.register(Economy.class, vault, this.plugin, ServicePriority.Highest); manager.register(Economy.class, vault, this.loader, ServicePriority.Highest);
} }
public void unhook() { public void unhook() {

View file

@ -0,0 +1,28 @@
package dev.xhyrom.lighteco.currency.money.common;
import dev.xhyrom.lighteco.currency.money.common.config.Config;
import eu.okaeri.configs.ConfigManager;
import eu.okaeri.configs.yaml.snakeyaml.YamlSnakeYamlConfigurer;
import lombok.Getter;
import java.nio.file.Path;
public class AbstractPlugin implements Plugin {
@Getter
private Config config;
private Path dataDirectory;
public AbstractPlugin(Path dataDirectory) {
this.dataDirectory = dataDirectory;
}
public final void load() {
this.config = ConfigManager.create(Config.class, it -> {
it.withConfigurer(new YamlSnakeYamlConfigurer());
it.withBindFile(dataDirectory.resolve("config.yml"));
it.withRemoveOrphans(true);
it.saveDefaults();
it.load(true);
});
}
}

View file

@ -0,0 +1,9 @@
package dev.xhyrom.lighteco.currency.money.common;
import dev.xhyrom.lighteco.currency.money.common.config.Config;
public interface Plugin {
void load();
Config getConfig();
}

View file

@ -0,0 +1,18 @@
package dev.xhyrom.lighteco.currency.money.common.config;
import eu.okaeri.configs.OkaeriConfig;
import eu.okaeri.configs.annotation.Comment;
public class Config extends OkaeriConfig {
@Comment("Currency name")
@Comment("In singular form")
public String currencyNameSingular = "Dollar";
@Comment("In plural form")
public String currencyNamePlural = "Dollars";
@Comment("Currency code (ISO 4217 code of currency)")
@Comment("Used for formatting currency")
@Comment("See https://en.wikipedia.org/wiki/ISO_4217 for more information")
public String currencyCode = "USD";
}

View file

@ -1,4 +1,4 @@
package dev.xhyrom.lighteco.currency.money.common; package dev.xhyrom.lighteco.currency.money.common.currency;
import dev.xhyrom.lighteco.api.model.currency.Currency; import dev.xhyrom.lighteco.api.model.currency.Currency;