end433

code of EndiumEconomy

Dec 13th, 2024
18
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 9.19 KB | Source Code | 0 0
  1. package ua.end433.endiumeconomy;
  2.  
  3. import me.clip.placeholderapi.expansion.PlaceholderExpansion;
  4. import me.clip.placeholderapi.PlaceholderAPI;
  5. import org.bukkit.Bukkit;
  6. import org.bukkit.OfflinePlayer;
  7. import org.bukkit.command.Command;
  8. import org.bukkit.command.CommandSender;
  9. import org.bukkit.configuration.file.FileConfiguration;
  10. import org.bukkit.configuration.file.YamlConfiguration;
  11. import org.bukkit.plugin.java.JavaPlugin;
  12. import org.bukkit.ChatColor;
  13. import org.jetbrains.annotations.NotNull;
  14.  
  15. import java.io.File;
  16. import java.io.IOException;
  17.  
  18. public class EndiumEconomy extends JavaPlugin {
  19.  
  20.     private File vaultsFolder;
  21.  
  22.     @Override
  23.     public void onEnable() {
  24.         saveDefaultConfig();
  25.  
  26.         getLogger().info(getMessage("plugin-enabled"));
  27.  
  28.         // Register PlaceholderAPI expansion
  29.         if (Bukkit.getPluginManager().getPlugin("PlaceholderAPI") != null) {
  30.             new CurrencyExpansion(getDataFolder()).register();
  31.             getLogger().info(getMessage("placeholderapi-registered"));
  32.         } else {
  33.             getLogger().warning(getMessage("placeholderapi-not-found"));
  34.         }
  35.  
  36.         // Creating vaults folder
  37.         vaultsFolder = new File(getDataFolder(), "vaults");
  38.         if (!vaultsFolder.exists()) {
  39.             if (vaultsFolder.mkdirs()) {
  40.                 getLogger().info(getMessage("vaults-folder-created"));
  41.             } else {
  42.                 getLogger().warning(getMessage("vaults-folder-creation-failed"));
  43.             }
  44.         }
  45.     }
  46.  
  47.     @Override
  48.     public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
  49.         if (command.getName().equalsIgnoreCase("eec")) {
  50.             if (args.length < 1) {
  51.                 sender.sendMessage(getMessage("not-enough-arguments"));
  52.                 return true;
  53.             }
  54.  
  55.             String subCommand = args[0].toLowerCase();
  56.  
  57.             if (subCommand.equals("create")) {
  58.                 return handleCreate(sender, args);
  59.             } else if (subCommand.equals("addm")) {
  60.                 return handleAddMoney(sender, args);
  61.             } else if (subCommand.equals("removem")) {
  62.                 return handleRemoveMoney(sender, args);
  63.             } else if (subCommand.equals("reload")) {
  64.                 return handleReload(sender);
  65.             } else if (subCommand.equals("remove")) {
  66.                 return handleRemoveVault(sender, args);
  67.             } else {
  68.                 sender.sendMessage(getMessage("unknown-command"));
  69.                 return true;
  70.             }
  71.         }
  72.         return false;
  73.     }
  74.  
  75.     private String getMessage(String key) {
  76.         return ChatColor.translateAlternateColorCodes('&', getConfig().getString("messages." + key, "Missing message: " + key));
  77.     }
  78.  
  79.     private boolean handleCreate(CommandSender sender, String[] args) {
  80.         if (args.length < 2) {
  81.             sender.sendMessage(getMessage("not-enough-arguments"));
  82.             return true;
  83.         }
  84.  
  85.         String vaultName = args[1];
  86.         File vaultFile = new File(vaultsFolder, vaultName + ".yml");
  87.  
  88.         if (vaultFile.exists()) {
  89.             sender.sendMessage(getMessage("vault-exists").replace("{vault}", vaultName));
  90.             return true;
  91.         }
  92.  
  93.         try {
  94.             if (vaultFile.createNewFile()) {
  95.                 sender.sendMessage(getMessage("vault-created").replace("{vault}", vaultName));
  96.             } else {
  97.                 sender.sendMessage(getMessage("vault-create-failed").replace("{vault}", vaultName));
  98.             }
  99.         } catch (IOException e) {
  100.             sender.sendMessage(getMessage("error").replace("{error}", e.getMessage()));
  101.             e.printStackTrace();
  102.         }
  103.  
  104.         return true;
  105.     }
  106.  
  107.     private boolean handleAddMoney(CommandSender sender, String[] args) {
  108.         if (args.length < 4) {
  109.             sender.sendMessage(getMessage("not-enough-arguments"));
  110.             return true;
  111.         }
  112.  
  113.         String vaultName = args[1];
  114.         String playerName = args[2];
  115.         int amount;
  116.  
  117.         try {
  118.             amount = Integer.parseInt(args[3]);
  119.         } catch (NumberFormatException e) {
  120.             sender.sendMessage(getMessage("invalid-amount"));
  121.             return true;
  122.         }
  123.  
  124.         File vaultFile = new File(vaultsFolder, vaultName + ".yml");
  125.         if (!vaultFile.exists()) {
  126.             sender.sendMessage(getMessage("vault-not-found").replace("{vault}", vaultName));
  127.             return true;
  128.         }
  129.  
  130.         FileConfiguration vaultConfig = YamlConfiguration.loadConfiguration(vaultFile);
  131.         int currentBalance = vaultConfig.getInt(playerName, 0);
  132.         vaultConfig.set(playerName, currentBalance + amount);
  133.  
  134.         try {
  135.             vaultConfig.save(vaultFile);
  136.             sender.sendMessage(getMessage("player-balance-updated")
  137.                     .replace("{player}", playerName)
  138.                     .replace("{vault}", vaultName));
  139.         } catch (IOException e) {
  140.             sender.sendMessage(getMessage("error").replace("{error}", e.getMessage()));
  141.             e.printStackTrace();
  142.         }
  143.  
  144.         return true;
  145.     }
  146.  
  147.     private boolean handleRemoveMoney(CommandSender sender, String[] args) {
  148.         if (args.length < 4) {
  149.             sender.sendMessage(getMessage("not-enough-arguments"));
  150.             return true;
  151.         }
  152.  
  153.         String vaultName = args[1];
  154.         String playerName = args[2];
  155.         int amount;
  156.  
  157.         try {
  158.             amount = Integer.parseInt(args[3]);
  159.         } catch (NumberFormatException e) {
  160.             sender.sendMessage(getMessage("invalid-amount"));
  161.             return true;
  162.         }
  163.  
  164.         File vaultFile = new File(vaultsFolder, vaultName + ".yml");
  165.         if (!vaultFile.exists()) {
  166.             sender.sendMessage(getMessage("vault-not-found").replace("{vault}", vaultName));
  167.             return true;
  168.         }
  169.  
  170.         FileConfiguration vaultConfig = YamlConfiguration.loadConfiguration(vaultFile);
  171.         int currentBalance = vaultConfig.getInt(playerName, 0);
  172.  
  173.         if (currentBalance < amount) {
  174.             sender.sendMessage(getMessage("player-insufficient-balance")
  175.                     .replace("{player}", playerName)
  176.                     .replace("{vault}", vaultName));
  177.             return true;
  178.         }
  179.  
  180.         vaultConfig.set(playerName, currentBalance - amount);
  181.  
  182.         try {
  183.             vaultConfig.save(vaultFile);
  184.             sender.sendMessage(getMessage("player-balance-updated")
  185.                     .replace("{player}", playerName)
  186.                     .replace("{vault}", vaultName));
  187.         } catch (IOException e) {
  188.             sender.sendMessage(getMessage("error").replace("{error}", e.getMessage()));
  189.             e.printStackTrace();
  190.         }
  191.  
  192.         return true;
  193.     }
  194.  
  195.     private boolean handleReload(CommandSender sender) {
  196.         reloadConfig();
  197.         sender.sendMessage(getMessage("plugin-reloaded"));
  198.         return true;
  199.     }
  200.  
  201.     private boolean handleRemoveVault(CommandSender sender, String[] args) {
  202.         if (args.length < 2) {
  203.             sender.sendMessage(getMessage("not-enough-arguments"));
  204.             return true;
  205.         }
  206.  
  207.         String vaultName = args[1];
  208.         File vaultFile = new File(vaultsFolder, vaultName + ".yml");
  209.  
  210.         if (!vaultFile.exists()) {
  211.             sender.sendMessage(getMessage("vault-not-found").replace("{vault}", vaultName));
  212.             return true;
  213.         }
  214.  
  215.         if (vaultFile.delete()) {
  216.             sender.sendMessage(getMessage("vault-removed").replace("{vault}", vaultName));
  217.         } else {
  218.             sender.sendMessage(getMessage("vault-remove-failed").replace("{vault}", vaultName));
  219.         }
  220.  
  221.         return true;
  222.     }
  223.  
  224.     @Override
  225.     public void onDisable() {
  226.         getLogger().info(getMessage("plugin-disabled"));
  227.     }
  228. }
  229.  
  230. class CurrencyExpansion extends PlaceholderExpansion {
  231.  
  232.     private final File pluginFolder;
  233.  
  234.     public CurrencyExpansion(File pluginFolder) {
  235.         this.pluginFolder = pluginFolder;
  236.     }
  237.  
  238.     @Override
  239.     public @NotNull String getIdentifier() {
  240.         return "eec";
  241.     }
  242.  
  243.     @Override
  244.     public @NotNull String getAuthor() {
  245.         return "end433";
  246.     }
  247.  
  248.     @Override
  249.     public @NotNull String getVersion() {
  250.         return "1.00";
  251.     }
  252.  
  253.     @Override
  254.     public boolean persist() {
  255.         return true;
  256.     }
  257.  
  258.     @Override
  259.     public boolean canRegister() {
  260.         return true;
  261.     }
  262.  
  263.     @Override
  264.     public String onRequest(OfflinePlayer player, @NotNull String params) {
  265.         String[] args = params.split("_");
  266.         if (args.length != 1) {
  267.             return null; // Invalid placeholder format
  268.         }
  269.  
  270.         String vaultName = args[0];
  271.         File vaultFile = new File(pluginFolder, "vaults/" + vaultName + ".yml");
  272.         if (!vaultFile.exists()) {
  273.             return "0"; // Vault not found
  274.         }
  275.  
  276.         FileConfiguration vaultConfig = YamlConfiguration.loadConfiguration(vaultFile);
  277.         String playerName = player.getName();
  278.         if (playerName == null) {
  279.             return "0"; // Player not found
  280.         }
  281.  
  282.         int balance = vaultConfig.getInt(playerName, 0);
  283.         return String.valueOf(balance);
  284.     }
  285. }
Add Comment
Please, Sign In to add comment