From 13b18ac7a1a03c8f440ce3ec9a80cfb5b23f53c0 Mon Sep 17 00:00:00 2001 From: lbenav8095 Date: Wed, 29 Mar 2023 15:01:12 -0600 Subject: [PATCH] Added MultiEconomyWrapper Moved economy wrappers to /economy/wrappers/ package Improved Economy documentation Improved IdentityEconomy documentation Improved MultiEconomy documentation --- pom.xml | 2 +- .../net/milkbowl/vault/economy/Economy.java | 1 - .../vault/economy/IdentityEconomy.java | 11 ++++-- .../milkbowl/vault/economy/LegacyEconomy.java | 4 +- .../milkbowl/vault/economy/MultiEconomy.java | 6 +++ .../{ => wrappers}/EconomyWrapper.java | 9 +++-- .../IdentityEconomyWrapper.java | 8 ++-- .../economy/wrappers/MultiEconomyWrapper.java | 37 +++++++++++++++++++ 8 files changed, 64 insertions(+), 14 deletions(-) rename src/main/java/net/milkbowl/vault/economy/{ => wrappers}/EconomyWrapper.java (78%) rename src/main/java/net/milkbowl/vault/economy/{ => wrappers}/IdentityEconomyWrapper.java (75%) create mode 100644 src/main/java/net/milkbowl/vault/economy/wrappers/MultiEconomyWrapper.java diff --git a/pom.xml b/pom.xml index a41d850..fb15114 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 net.milkbowl.vault vaultapi - 2.2-SNAPSHOT + 2.3-SNAPSHOT VaultAPI Vault is a Permissions & Economy API to allow plugins to more easily hook into these systems without needing to hook each individual system themselves. diff --git a/src/main/java/net/milkbowl/vault/economy/Economy.java b/src/main/java/net/milkbowl/vault/economy/Economy.java index 92789b5..8f84eeb 100644 --- a/src/main/java/net/milkbowl/vault/economy/Economy.java +++ b/src/main/java/net/milkbowl/vault/economy/Economy.java @@ -22,7 +22,6 @@ import org.bukkit.OfflinePlayer; /** * The main economy API - * */ public interface Economy { diff --git a/src/main/java/net/milkbowl/vault/economy/IdentityEconomy.java b/src/main/java/net/milkbowl/vault/economy/IdentityEconomy.java index c3a5712..f368121 100644 --- a/src/main/java/net/milkbowl/vault/economy/IdentityEconomy.java +++ b/src/main/java/net/milkbowl/vault/economy/IdentityEconomy.java @@ -16,17 +16,20 @@ package net.milkbowl.vault.economy; +import net.milkbowl.vault.economy.wrappers.IdentityEconomyWrapper; + import java.util.Collection; import java.util.List; import java.util.Map; import java.util.UUID; /** - * Its provider needs to be registered before Economy.class - * This is because Vault2 will attempt to do it automatically + * Adds UUID support to the Economy interface. + * In case of {@link #isLegacy()} returning false, methods such as: + * {@link #getAllRecords()} and {@link #getAllOnline()} + * should be expected to work. *

- * If not understood, register using either {@link IdentityEconomyWrapper#registerProviders()} - * or {@link EconomyWrapper#registerProviders()} + * In order to register/provide it, you should use {@link IdentityEconomyWrapper#registerProviders()} */ public interface IdentityEconomy extends Economy{ /** diff --git a/src/main/java/net/milkbowl/vault/economy/LegacyEconomy.java b/src/main/java/net/milkbowl/vault/economy/LegacyEconomy.java index 754bd46..7f14297 100644 --- a/src/main/java/net/milkbowl/vault/economy/LegacyEconomy.java +++ b/src/main/java/net/milkbowl/vault/economy/LegacyEconomy.java @@ -7,9 +7,9 @@ import java.util.List; import java.util.Map; import java.util.UUID; -public class LegacyEconomy implements IdentityEconomy{ +public class LegacyEconomy implements IdentityEconomy { private final Economy economy; - protected LegacyEconomy(Economy economy){ + public LegacyEconomy(Economy economy){ this.economy = economy; } diff --git a/src/main/java/net/milkbowl/vault/economy/MultiEconomy.java b/src/main/java/net/milkbowl/vault/economy/MultiEconomy.java index 4dd6d1a..72439ee 100644 --- a/src/main/java/net/milkbowl/vault/economy/MultiEconomy.java +++ b/src/main/java/net/milkbowl/vault/economy/MultiEconomy.java @@ -1,5 +1,6 @@ package net.milkbowl.vault.economy; +import net.milkbowl.vault.economy.wrappers.MultiEconomyWrapper; import org.bukkit.World; import java.util.Collection; @@ -8,6 +9,11 @@ import java.util.Collection; * This interface is used to provide multi-world, multi-currency support for the economy. * It allows disabling currencies/economies. * It forces currencies to support UUIDs. + *

+ * In order to register/provide it, you should use {@link MultiEconomyWrapper#registerProviders()} + * Inside this interface, we make use of the term "implementation" to refer to an actual currency. + * You should expect that these currencies/implementations might + * return true for {@link IdentityEconomy#isLegacy()} in case plugin's author preference! */ public interface MultiEconomy { diff --git a/src/main/java/net/milkbowl/vault/economy/EconomyWrapper.java b/src/main/java/net/milkbowl/vault/economy/wrappers/EconomyWrapper.java similarity index 78% rename from src/main/java/net/milkbowl/vault/economy/EconomyWrapper.java rename to src/main/java/net/milkbowl/vault/economy/wrappers/EconomyWrapper.java index 76f6161..f7c2a75 100644 --- a/src/main/java/net/milkbowl/vault/economy/EconomyWrapper.java +++ b/src/main/java/net/milkbowl/vault/economy/wrappers/EconomyWrapper.java @@ -1,5 +1,8 @@ -package net.milkbowl.vault.economy; +package net.milkbowl.vault.economy.wrappers; +import net.milkbowl.vault.economy.Economy; +import net.milkbowl.vault.economy.IdentityEconomy; +import net.milkbowl.vault.economy.LegacyEconomy; import org.bukkit.Bukkit; import org.bukkit.plugin.ServicePriority; import org.bukkit.plugin.ServicesManager; @@ -21,8 +24,8 @@ public class EconomyWrapper { } /** - * Will register both IdentityEconomy and legacy Economy to Vault - * @return true registered successfully, false already registered + * Will register IdentityEconomy and legacy Economy to Vault + * @return true if registered successfully, false if already registered */ public boolean registerProviders(){ ServicesManager manager = Bukkit.getServicesManager(); diff --git a/src/main/java/net/milkbowl/vault/economy/IdentityEconomyWrapper.java b/src/main/java/net/milkbowl/vault/economy/wrappers/IdentityEconomyWrapper.java similarity index 75% rename from src/main/java/net/milkbowl/vault/economy/IdentityEconomyWrapper.java rename to src/main/java/net/milkbowl/vault/economy/wrappers/IdentityEconomyWrapper.java index 9a70292..f73a452 100644 --- a/src/main/java/net/milkbowl/vault/economy/IdentityEconomyWrapper.java +++ b/src/main/java/net/milkbowl/vault/economy/wrappers/IdentityEconomyWrapper.java @@ -1,5 +1,7 @@ -package net.milkbowl.vault.economy; +package net.milkbowl.vault.economy.wrappers; +import net.milkbowl.vault.economy.Economy; +import net.milkbowl.vault.economy.IdentityEconomy; import org.bukkit.Bukkit; import org.bukkit.plugin.ServicePriority; import org.bukkit.plugin.ServicesManager; @@ -12,8 +14,8 @@ public class IdentityEconomyWrapper { } /** - * Will register both IdentityEconomy and legacy Economy to Vault - * @return true registered successfully, false already registered + * Will register IdentityEconomy and legacy Economy to Vault + * @return true if registered successfully, false if already registered */ public boolean registerProviders(){ ServicesManager manager = Bukkit.getServicesManager(); diff --git a/src/main/java/net/milkbowl/vault/economy/wrappers/MultiEconomyWrapper.java b/src/main/java/net/milkbowl/vault/economy/wrappers/MultiEconomyWrapper.java new file mode 100644 index 0000000..32aaac9 --- /dev/null +++ b/src/main/java/net/milkbowl/vault/economy/wrappers/MultiEconomyWrapper.java @@ -0,0 +1,37 @@ +package net.milkbowl.vault.economy.wrappers; + +import net.milkbowl.vault.economy.Economy; +import net.milkbowl.vault.economy.IdentityEconomy; +import net.milkbowl.vault.economy.MultiEconomy; +import org.bukkit.Bukkit; +import org.bukkit.plugin.ServicePriority; +import org.bukkit.plugin.ServicesManager; + +public class MultiEconomyWrapper { + private final MultiEconomy economy; + + public MultiEconomyWrapper(MultiEconomy economy){ + this.economy = economy; + } + + /** + * Will register MultiEconomy, IdentityEconomy and legacy Economy to Vault + * @return true if registered successfully, false if already registered + */ + public boolean registerProviders(){ + ServicesManager manager = Bukkit.getServicesManager(); + if (manager.isProvidedFor(MultiEconomy.class)) + return false; + if (manager.isProvidedFor(IdentityEconomy.class)) + return false; + if (manager.isProvidedFor(Economy.class)) + return false; + manager.register(MultiEconomy.class, economy, + Bukkit.getPluginManager().getPlugin("Vault"), ServicePriority.Normal); + manager.register(IdentityEconomy.class, economy.getDefault(), + Bukkit.getPluginManager().getPlugin("Vault"), ServicePriority.Normal); + manager.register(Economy.class, economy.getDefault(), + Bukkit.getPluginManager().getPlugin("Vault"), ServicePriority.Normal); + return true; + } +}