diff --git a/build.gradle b/build.gradle index 4396723..91a46a5 100644 --- a/build.gradle +++ b/build.gradle @@ -10,13 +10,13 @@ repositories { mavenCentral() maven { - name = "Secret Thing :trol:" - url = "https://mvn.theclashfruit.me/bukkit" + name = "Spigot" + url = "https://hub.spigotmc.org/nexus/content/repositories/snapshots/" } maven { - name = "Spigot" - url = "https://hub.spigotmc.org/nexus/content/repositories/snapshots/" + name = "Vault" + url = "https://nexus.hc.to/content/repositories/pub_releases" } maven { @@ -30,6 +30,7 @@ dependencies { testImplementation 'org.junit.jupiter:junit-jupiter' shadow implementation("org.spigotmc:spigot-api:${project.bukkit_version}") + shadow implementation("net.milkbowl.vault:VaultAPI:1.5") implementation 'org.eclipse.jetty:jetty-server:9.4.52.v20230823' implementation 'org.eclipse.jetty:jetty-servlet:9.4.52.v20230823' diff --git a/src/main/java/me/theclashfruit/crss/Plugin.java b/src/main/java/me/theclashfruit/crss/Plugin.java index 71a4596..fd2b10a 100644 --- a/src/main/java/me/theclashfruit/crss/Plugin.java +++ b/src/main/java/me/theclashfruit/crss/Plugin.java @@ -4,12 +4,16 @@ import me.theclashfruit.crss.api.ChatServlet; import me.theclashfruit.crss.api.GatewaySocket; import me.theclashfruit.crss.api.PlayersServlet; import me.theclashfruit.crss.api.StatusServlet; +import me.theclashfruit.crss.commands.BalanceCommand; import me.theclashfruit.crss.listener.ChatListener; +import me.theclashfruit.crss.listener.PlayerJoinListener; import me.theclashfruit.crss.listener.SleepingListener; import me.theclashfruit.crss.map.MapServlet; import me.theclashfruit.crss.models.SocketData; import me.theclashfruit.crss.models.SocketMessage; +import net.milkbowl.vault.economy.Economy; import org.bukkit.plugin.PluginManager; +import org.bukkit.plugin.RegisteredServiceProvider; import org.bukkit.plugin.java.JavaPlugin; import org.eclipse.jetty.server.Connector; import org.eclipse.jetty.server.Server; @@ -17,6 +21,7 @@ import org.eclipse.jetty.server.ServerConnector; import org.eclipse.jetty.servlet.ServletHandler; import java.io.File; +import java.util.Arrays; public class Plugin extends JavaPlugin { GatewaySocket chatSocket; @@ -25,6 +30,8 @@ public class Plugin extends JavaPlugin { Connector connector = new ServerConnector(server); ServletHandler handler = new ServletHandler(); + private static Economy economy = null; + @Override public void onEnable() { getLogger().info("Plugin enabled!"); @@ -32,6 +39,12 @@ public class Plugin extends JavaPlugin { saveDefaultConfig(); PluginManager pluginManager = getServer().getPluginManager(); + + if (!setupEconomy()) { + getLogger().severe("Vault not found! Disabling plugin."); + + // pluginManager.disablePlugin(this); + } // create api server // ContextHandler context = new ContextHandler(new ApiHandler(), "/v1"); @@ -65,6 +78,10 @@ public class Plugin extends JavaPlugin { // register events pluginManager.registerEvents(new SleepingListener(), this); pluginManager.registerEvents(new ChatListener(), this); + pluginManager.registerEvents(new PlayerJoinListener(), this); + + // register commands + getCommand("balance").setExecutor(new BalanceCommand()); } @Override @@ -87,5 +104,18 @@ public class Plugin extends JavaPlugin { throw new RuntimeException(e); } } + + private boolean setupEconomy() { + RegisteredServiceProvider economyProvider = getServer().getServicesManager().getRegistration(net.milkbowl.vault.economy.Economy.class); + + if (economyProvider != null) + economy = economyProvider.getProvider(); + + return (economy != null); + } + + public static Economy getEconomy() { + return economy; + } } diff --git a/src/main/java/me/theclashfruit/crss/commands/BalanceCommand.java b/src/main/java/me/theclashfruit/crss/commands/BalanceCommand.java new file mode 100644 index 0000000..04e2bb0 --- /dev/null +++ b/src/main/java/me/theclashfruit/crss/commands/BalanceCommand.java @@ -0,0 +1,16 @@ +package me.theclashfruit.crss.commands; + +import me.theclashfruit.crss.Plugin; +import org.bukkit.ChatColor; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; + +public class BalanceCommand implements CommandExecutor { + @Override + public boolean onCommand(CommandSender commandSender, Command command, String s, String[] strings) { + commandSender.sendMessage("Your balance is: " + Plugin.getEconomy().getBalance(commandSender.getName())); + + return true; + } +} diff --git a/src/main/java/me/theclashfruit/crss/listener/PlayerJoinListener.java b/src/main/java/me/theclashfruit/crss/listener/PlayerJoinListener.java new file mode 100644 index 0000000..c964cbe --- /dev/null +++ b/src/main/java/me/theclashfruit/crss/listener/PlayerJoinListener.java @@ -0,0 +1,20 @@ +package me.theclashfruit.crss.listener; + +import me.theclashfruit.crss.Plugin; +import net.milkbowl.vault.economy.Economy; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerJoinEvent; + +public class PlayerJoinListener implements Listener { + private Economy economy = Plugin.getEconomy(); + + @EventHandler + public void onPlayerJoin(PlayerJoinEvent event) { + Player player = event.getPlayer(); + + if (!economy.hasAccount(player)) + economy.createPlayerAccount(player); + } +} diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 885326e..9c74240 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,3 +1,15 @@ name: CRSS main: me.theclashfruit.crss.Plugin -version: ${version} \ No newline at end of file +version: ${version} +database: true + +author: TheClashFruit + +commands: + balance: + description: Check your balance + usage: /balance + +load: POSTWORLD +depend: + - Vault \ No newline at end of file