From fab2b5819d0ff61ccf403d2e7ab2cffe52f39608 Mon Sep 17 00:00:00 2001 From: NorbiPeti Date: Fri, 1 Mar 2019 17:52:45 +0100 Subject: [PATCH] Moved Votifier reward here, fixes Checking if Towny or Votifier is present --- .idea/compiler.xml | 2 +- BuildConfigUpdater/BuildConfigUpdater.iml | 1 - ...1) (com.github.TBMCPlugins.ButtonCore).iml | 1 + ButtonCore/pom.xml | 10 ++++ .../java/buttondevteam/core/MainPlugin.java | 34 +++++++++++--- .../java/buttondevteam/core/TestPrepare.java | 1 + .../component/members/MemberComponent.java | 2 +- .../component/randomtp/RandomTPComponent.java | 3 +- .../component/restart/RestartComponent.java | 3 +- .../core/component/towny/TownyComponent.java | 3 +- .../updater/PluginUpdaterComponent.java | 3 +- .../component/votifier/VotifierComponent.java | 46 +++++++++++++++++++ ButtonCore/src/main/resources/plugin.yml | 7 ++- ButtonProcessor/ButtonProcessor.iml | 1 - 14 files changed, 101 insertions(+), 16 deletions(-) create mode 100644 ButtonCore/src/main/java/buttondevteam/core/component/votifier/VotifierComponent.java diff --git a/.idea/compiler.xml b/.idea/compiler.xml index b761e6a..ba952b2 100755 --- a/.idea/compiler.xml +++ b/.idea/compiler.xml @@ -12,7 +12,7 @@ - + diff --git a/BuildConfigUpdater/BuildConfigUpdater.iml b/BuildConfigUpdater/BuildConfigUpdater.iml index 72a504c..f14440c 100644 --- a/BuildConfigUpdater/BuildConfigUpdater.iml +++ b/BuildConfigUpdater/BuildConfigUpdater.iml @@ -13,7 +13,6 @@ - diff --git a/ButtonCore/ButtonCore (1) (com.github.TBMCPlugins.ButtonCore).iml b/ButtonCore/ButtonCore (1) (com.github.TBMCPlugins.ButtonCore).iml index 692ea56..7c2fa83 100644 --- a/ButtonCore/ButtonCore (1) (com.github.TBMCPlugins.ButtonCore).iml +++ b/ButtonCore/ButtonCore (1) (com.github.TBMCPlugins.ButtonCore).iml @@ -32,6 +32,7 @@ + \ No newline at end of file diff --git a/ButtonCore/pom.xml b/ButtonCore/pom.xml index 0bd3d00..ed35499 100755 --- a/ButtonCore/pom.xml +++ b/ButtonCore/pom.xml @@ -113,6 +113,10 @@ ess-repo http://repo.ess3.net/content/repositories/essrel/ + + Votifier + https://dl.bintray.com/nuvotifier/maven/ + @@ -177,6 +181,12 @@ 2.13.1 provided + + com.vexsoftware + nuvotifier-universal + 2.3.4 + provided + TBMCPlugins diff --git a/ButtonCore/src/main/java/buttondevteam/core/MainPlugin.java b/ButtonCore/src/main/java/buttondevteam/core/MainPlugin.java index 6286e32..b6c78f4 100755 --- a/ButtonCore/src/main/java/buttondevteam/core/MainPlugin.java +++ b/ButtonCore/src/main/java/buttondevteam/core/MainPlugin.java @@ -9,6 +9,7 @@ import buttondevteam.core.component.restart.RestartComponent; import buttondevteam.core.component.towny.TownyComponent; import buttondevteam.core.component.updater.PluginUpdater; import buttondevteam.core.component.updater.PluginUpdaterComponent; +import buttondevteam.core.component.votifier.VotifierComponent; import buttondevteam.lib.TBMCCoreAPI; import buttondevteam.lib.architecture.ButtonPlugin; import buttondevteam.lib.architecture.Component; @@ -19,6 +20,7 @@ import buttondevteam.lib.player.ChromaGamerBase; import buttondevteam.lib.player.TBMCPlayer; import buttondevteam.lib.player.TBMCPlayerBase; import com.earth2me.essentials.Essentials; +import net.milkbowl.vault.economy.Economy; import net.milkbowl.vault.permission.Permission; import org.bukkit.Bukkit; import org.bukkit.command.BlockCommandSender; @@ -29,6 +31,7 @@ import org.bukkit.entity.Player; import org.bukkit.plugin.PluginDescriptionFile; import org.bukkit.plugin.RegisteredServiceProvider; +import javax.annotation.Nullable; import java.io.File; import java.io.IOException; import java.nio.file.Files; @@ -45,6 +48,8 @@ public class MainPlugin extends ButtonPlugin { public static Essentials ess; private Logger logger; + @Nullable + private Economy economy; private ConfigData writePluginList() { return getIConfig().getData("writePluginList", false); @@ -58,14 +63,20 @@ public class MainPlugin extends ButtonPlugin { logger = getLogger(); if (!setupPermissions()) throw new NullPointerException("No permission plugin found!"); + if (!setupEconomy()) //Though Essentials always provides economy so this shouldn't happen + getLogger().warning("No economy plugin found! Components using economy will not be registered."); Test = getConfig().getBoolean("test", true); saveConfig(); Component.registerComponent(this, new PluginUpdaterComponent()); Component.registerComponent(this, new RestartComponent()); + //noinspection unchecked - needed for testing Component.registerComponent(this, new ChannelComponent()); Component.registerComponent(this, new RandomTPComponent()); Component.registerComponent(this, new MemberComponent()); - Component.registerComponent(this, new TownyComponent()); + if (Bukkit.getPluginManager().isPluginEnabled("Towny")) //It fails to load the component class otherwise + Component.registerComponent(this, new TownyComponent()); + if (Bukkit.getPluginManager().isPluginEnabled("Votifier") && economy != null) + Component.registerComponent(this, new VotifierComponent(economy)); ComponentManager.enableComponents(); getCommand2MC().registerCommand(new ComponentCommand()); TBMCCoreAPI.RegisterEventsForExceptions(new PlayerListener(), this); @@ -74,7 +85,7 @@ public class MainPlugin extends ButtonPlugin { ChromaGamerBase.addConverter(sender -> Optional.ofNullable(sender instanceof Player ? TBMCPlayer.getPlayer(((Player) sender).getUniqueId(), TBMCPlayer.class) : null)); //Players, has higher priority TBMCCoreAPI.RegisterUserClass(TBMCPlayerBase.class); - TBMCChatAPI.RegisterChatChannel(Channel.GlobalChat = new Channel("§fOOC§f", Color.White, "g", null)); //The /ooc ID has moved to the config + TBMCChatAPI.RegisterChatChannel(Channel.GlobalChat = new Channel("§fg§f", Color.White, "g", null)); //The /ooc ID has moved to the config TBMCChatAPI.RegisterChatChannel( Channel.AdminChat = new Channel("§cADMIN§f", Color.Red, "a", Channel.inGroupFilter(null))); TBMCChatAPI.RegisterChatChannel( @@ -120,14 +131,23 @@ public class MainPlugin extends ButtonPlugin { } private boolean setupPermissions() { - RegisteredServiceProvider permissionProvider = getServer().getServicesManager() - .getRegistration(Permission.class); - if (permissionProvider != null) { - permission = permissionProvider.getProvider(); - } + permission = setupProvider(Permission.class); return (permission != null); } + private boolean setupEconomy() { + economy = setupProvider(Economy.class); + return (economy != null); + } + + private T setupProvider(Class cl) { + RegisteredServiceProvider provider = getServer().getServicesManager() + .getRegistration(cl); + if (provider != null) + return provider.getProvider(); + return null; + } + @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { if (command.getName().equals("dontrunthiscmd")) return true; //Used in chat preprocess for console diff --git a/ButtonCore/src/main/java/buttondevteam/core/TestPrepare.java b/ButtonCore/src/main/java/buttondevteam/core/TestPrepare.java index 67b0a33..13513b4 100755 --- a/ButtonCore/src/main/java/buttondevteam/core/TestPrepare.java +++ b/ButtonCore/src/main/java/buttondevteam/core/TestPrepare.java @@ -41,6 +41,7 @@ public class TestPrepare { return cl.isAssignableFrom(invocation.getMethod().getReturnType()); } })); + //noinspection unchecked Component.registerComponent(Mockito.mock(JavaPlugin.class), new ChannelComponent()); TBMCChatAPI.RegisterChatChannel(Channel.GlobalChat = new Channel("§fg§f", Color.White, "g", null)); } diff --git a/ButtonCore/src/main/java/buttondevteam/core/component/members/MemberComponent.java b/ButtonCore/src/main/java/buttondevteam/core/component/members/MemberComponent.java index 1fff614..6cc9536 100644 --- a/ButtonCore/src/main/java/buttondevteam/core/component/members/MemberComponent.java +++ b/ButtonCore/src/main/java/buttondevteam/core/component/members/MemberComponent.java @@ -14,7 +14,7 @@ import java.util.Date; import static buttondevteam.core.MainPlugin.permission; -public class MemberComponent extends Component implements Listener { +public class MemberComponent extends Component implements Listener { ConfigData memberGroup() { return getConfig().getData("memberGroup", "member"); } diff --git a/ButtonCore/src/main/java/buttondevteam/core/component/randomtp/RandomTPComponent.java b/ButtonCore/src/main/java/buttondevteam/core/component/randomtp/RandomTPComponent.java index e324b3a..e7df49d 100644 --- a/ButtonCore/src/main/java/buttondevteam/core/component/randomtp/RandomTPComponent.java +++ b/ButtonCore/src/main/java/buttondevteam/core/component/randomtp/RandomTPComponent.java @@ -1,8 +1,9 @@ package buttondevteam.core.component.randomtp; +import buttondevteam.core.MainPlugin; import buttondevteam.lib.architecture.Component; -public class RandomTPComponent extends Component { +public class RandomTPComponent extends Component { @Override protected void enable() { new RandomTP().onEnable(this); //It registers it's command diff --git a/ButtonCore/src/main/java/buttondevteam/core/component/restart/RestartComponent.java b/ButtonCore/src/main/java/buttondevteam/core/component/restart/RestartComponent.java index f8eeb11..dd58a0c 100644 --- a/ButtonCore/src/main/java/buttondevteam/core/component/restart/RestartComponent.java +++ b/ButtonCore/src/main/java/buttondevteam/core/component/restart/RestartComponent.java @@ -1,5 +1,6 @@ package buttondevteam.core.component.restart; +import buttondevteam.core.MainPlugin; import buttondevteam.core.component.channel.Channel; import buttondevteam.lib.TBMCSystemChatEvent; import buttondevteam.lib.architecture.Component; @@ -12,7 +13,7 @@ import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerQuitEvent; -public class RestartComponent extends Component implements Listener { +public class RestartComponent extends Component implements Listener { @Override public void enable() { //TODO: Permissions for the commands diff --git a/ButtonCore/src/main/java/buttondevteam/core/component/towny/TownyComponent.java b/ButtonCore/src/main/java/buttondevteam/core/component/towny/TownyComponent.java index 1b2bf9d..0397c8a 100644 --- a/ButtonCore/src/main/java/buttondevteam/core/component/towny/TownyComponent.java +++ b/ButtonCore/src/main/java/buttondevteam/core/component/towny/TownyComponent.java @@ -1,6 +1,7 @@ package buttondevteam.core.component.towny; import buttondevteam.core.ComponentManager; +import buttondevteam.core.MainPlugin; import buttondevteam.lib.TBMCCoreAPI; import buttondevteam.lib.architecture.Component; import com.palmergames.bukkit.towny.Towny; @@ -10,7 +11,7 @@ import com.palmergames.bukkit.towny.object.Resident; import com.palmergames.bukkit.towny.object.TownyUniverse; import org.bukkit.Bukkit; -public class TownyComponent extends Component { +public class TownyComponent extends Component { @Override protected void enable() { } diff --git a/ButtonCore/src/main/java/buttondevteam/core/component/updater/PluginUpdaterComponent.java b/ButtonCore/src/main/java/buttondevteam/core/component/updater/PluginUpdaterComponent.java index 2ead741..0adef98 100644 --- a/ButtonCore/src/main/java/buttondevteam/core/component/updater/PluginUpdaterComponent.java +++ b/ButtonCore/src/main/java/buttondevteam/core/component/updater/PluginUpdaterComponent.java @@ -1,9 +1,10 @@ package buttondevteam.core.component.updater; +import buttondevteam.core.MainPlugin; import buttondevteam.lib.architecture.Component; import buttondevteam.lib.chat.TBMCChatAPI; -public class PluginUpdaterComponent extends Component { +public class PluginUpdaterComponent extends Component { @Override public void enable() { TBMCChatAPI.AddCommand(this, new UpdatePluginCommand()); diff --git a/ButtonCore/src/main/java/buttondevteam/core/component/votifier/VotifierComponent.java b/ButtonCore/src/main/java/buttondevteam/core/component/votifier/VotifierComponent.java new file mode 100644 index 0000000..839ea17 --- /dev/null +++ b/ButtonCore/src/main/java/buttondevteam/core/component/votifier/VotifierComponent.java @@ -0,0 +1,46 @@ +package buttondevteam.core.component.votifier; + +import buttondevteam.core.MainPlugin; +import buttondevteam.lib.architecture.Component; +import buttondevteam.lib.architecture.ConfigData; +import com.vexsoftware.votifier.model.Vote; +import com.vexsoftware.votifier.model.VotifierEvent; +import lombok.RequiredArgsConstructor; +import net.milkbowl.vault.economy.Economy; +import org.bukkit.Bukkit; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; + +@RequiredArgsConstructor +public class VotifierComponent extends Component { + private final Economy economy; + + private ConfigData rewardAmount() { + return getConfig().getData("rewardAmount", 50.0); + } + + @Override + protected void enable() { + + } + + @Override + protected void disable() { + + } + + @EventHandler + @SuppressWarnings("deprecation") + public void onVotifierEvent(VotifierEvent event) { + Vote vote = event.getVote(); + getPlugin().getLogger().info("Vote: " + vote); + org.bukkit.OfflinePlayer op = Bukkit.getOfflinePlayer(vote.getUsername()); + Player p = Bukkit.getPlayer(vote.getUsername()); + if (op != null) { + economy.depositPlayer(op, rewardAmount().get()); + } + if (p != null) { + p.sendMessage("§bThanks for voting! $50 was added to your account."); + } + } +} diff --git a/ButtonCore/src/main/resources/plugin.yml b/ButtonCore/src/main/resources/plugin.yml index 43c609f..29bfbb1 100755 --- a/ButtonCore/src/main/resources/plugin.yml +++ b/ButtonCore/src/main/resources/plugin.yml @@ -15,4 +15,9 @@ commands: description: Add or remove a member component: description: Enable or disable or list components - dontrunthiscmd: \ No newline at end of file + dontrunthiscmd: +depend: + - Vault +softdepend: + - Towny + - Votifier \ No newline at end of file diff --git a/ButtonProcessor/ButtonProcessor.iml b/ButtonProcessor/ButtonProcessor.iml index 3c6a51e..35bfd14 100755 --- a/ButtonProcessor/ButtonProcessor.iml +++ b/ButtonProcessor/ButtonProcessor.iml @@ -13,7 +13,6 @@ -