mirror of
https://github.com/ChestShop-authors/ChestShop-3.git
synced 2024-06-26 06:14:44 +02:00
Support registering of economy providers after the plugin loaded
This commit is contained in:
parent
5a99180aab
commit
52492f8469
|
@ -81,12 +81,12 @@ public class Dependencies {
|
|||
}
|
||||
|
||||
if (economy == null) {
|
||||
ChestShop.getBukkitLogger().severe("No Economy plugin found! You need to install either Vault or Reserve and a compatible economy!");
|
||||
ChestShop.getBukkitLogger().severe("No Economy adapter found! You need to install either Vault or Reserve!");
|
||||
return false;
|
||||
}
|
||||
|
||||
ChestShop.registerListener(economy);
|
||||
ChestShop.getBukkitLogger().info(plugin + " loaded! Found an economy plugin!");
|
||||
ChestShop.getBukkitLogger().info(plugin + " loaded!");
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
@ -13,6 +13,8 @@ import org.bukkit.OfflinePlayer;
|
|||
import org.bukkit.World;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.server.ServiceRegisterEvent;
|
||||
import org.bukkit.event.server.ServiceUnregisterEvent;
|
||||
import org.bukkit.plugin.RegisteredServiceProvider;
|
||||
|
||||
import com.Acrobot.ChestShop.ChestShop;
|
||||
|
@ -31,9 +33,30 @@ import com.Acrobot.ChestShop.Events.Economy.CurrencyTransferEvent;
|
|||
* @author Acrobot
|
||||
*/
|
||||
public class VaultListener implements Listener {
|
||||
private RegisteredServiceProvider<Economy> rsp;
|
||||
private static Economy provider;
|
||||
|
||||
private VaultListener(Economy provider) { VaultListener.provider = provider; }
|
||||
private VaultListener() {
|
||||
updateEconomyProvider();
|
||||
}
|
||||
|
||||
private void updateEconomyProvider() {
|
||||
rsp = ChestShop.getBukkitServer().getServicesManager().getRegistration(Economy.class);
|
||||
|
||||
if (rsp != null) {
|
||||
provider = rsp.getProvider();
|
||||
ChestShop.getBukkitLogger().log(Level.INFO, "Using " + provider.getName() + " as the Economy provider now.");
|
||||
}
|
||||
}
|
||||
|
||||
private boolean checkSetup() {
|
||||
if (provider == null) {
|
||||
ChestShop.getBukkitLogger().log(Level.SEVERE, "No Vault compatible Economy plugin found!");
|
||||
ChestShop.getBukkitServer().getPluginManager().disablePlugin(ChestShop.getPlugin());
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public static Economy getProvider() { return provider; }
|
||||
|
||||
|
@ -57,25 +80,26 @@ public class VaultListener implements Listener {
|
|||
if (Bukkit.getPluginManager().getPlugin("Vault") == null) {
|
||||
return null;
|
||||
}
|
||||
return new VaultListener();
|
||||
}
|
||||
|
||||
RegisteredServiceProvider<Economy> rsp = Bukkit.getServer().getServicesManager().getRegistration(net.milkbowl.vault.economy.Economy.class);
|
||||
|
||||
if (rsp == null) {
|
||||
return null;
|
||||
@EventHandler
|
||||
public void onServiceRegister(ServiceRegisterEvent event) {
|
||||
if (event.getProvider().getProvider() instanceof Economy) {
|
||||
updateEconomyProvider();
|
||||
}
|
||||
}
|
||||
|
||||
Economy provider = rsp.getProvider();
|
||||
|
||||
if (provider == null) {
|
||||
return null;
|
||||
} else {
|
||||
return new VaultListener(provider);
|
||||
@EventHandler
|
||||
public void onServiceUnregister(ServiceUnregisterEvent event) {
|
||||
if (event.getProvider().getProvider() instanceof Economy) {
|
||||
updateEconomyProvider();
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onAmountCheck(CurrencyAmountEvent event) {
|
||||
if (!event.getAmount().equals(BigDecimal.ZERO)) {
|
||||
if (!checkSetup() || !event.getAmount().equals(BigDecimal.ZERO)) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -102,7 +126,7 @@ public class VaultListener implements Listener {
|
|||
|
||||
@EventHandler
|
||||
public void onCurrencyCheck(CurrencyCheckEvent event) {
|
||||
if (event.hasEnough()) {
|
||||
if (!checkSetup() || event.hasEnough()) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -121,7 +145,7 @@ public class VaultListener implements Listener {
|
|||
|
||||
@EventHandler
|
||||
public void onAccountCheck(AccountCheckEvent event) {
|
||||
if (event.hasAccount()) {
|
||||
if (!checkSetup() || event.hasAccount()) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -140,7 +164,7 @@ public class VaultListener implements Listener {
|
|||
|
||||
@EventHandler
|
||||
public void onCurrencyFormat(CurrencyFormatEvent event) {
|
||||
if (!event.getFormattedAmount().isEmpty()) {
|
||||
if (!checkSetup() || !event.getFormattedAmount().isEmpty()) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -150,7 +174,7 @@ public class VaultListener implements Listener {
|
|||
|
||||
@EventHandler
|
||||
public void onCurrencyAdd(CurrencyAddEvent event) {
|
||||
if (event.isAdded()) {
|
||||
if (!checkSetup() || event.isAdded()) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -172,7 +196,7 @@ public class VaultListener implements Listener {
|
|||
|
||||
@EventHandler
|
||||
public void onCurrencySubtraction(CurrencySubtractEvent event) {
|
||||
if (event.isSubtracted()) {
|
||||
if (!checkSetup() || event.isSubtracted()) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -194,7 +218,7 @@ public class VaultListener implements Listener {
|
|||
|
||||
@EventHandler
|
||||
public void onCurrencyTransfer(CurrencyTransferEvent event) {
|
||||
if (event.hasBeenTransferred()) {
|
||||
if (!checkSetup() || event.hasBeenTransferred()) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -213,7 +237,7 @@ public class VaultListener implements Listener {
|
|||
|
||||
@EventHandler
|
||||
public void onCurrencyHoldCheck(CurrencyHoldEvent event) {
|
||||
if (event.getAccount() == null || !transactionCanFail()) {
|
||||
if (!checkSetup() || event.getAccount() == null || !transactionCanFail()) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user