From 061d5084950999cf6f138f1a3ffe85050c175c44 Mon Sep 17 00:00:00 2001
From: 7sat <49030779+7sat@users.noreply.github.com>
Date: Sun, 19 Feb 2023 22:25:33 +0900
Subject: [PATCH] Multiple sell command support, PlayerPoints Support, Etc
---
pom.xml | 12 +-
.../java/me/sat7/dynamicshop/DynaShopAPI.java | 21 ++-
.../java/me/sat7/dynamicshop/DynamicShop.java | 66 ++++++-
.../me/sat7/dynamicshop/commands/Help.java | 2 +
.../dynamicshop/commands/shop/Account.java | 35 +++-
.../sat7/dynamicshop/commands/shop/Add.java | 4 +-
.../dynamicshop/commands/shop/AddHand.java | 4 +-
.../dynamicshop/commands/shop/Command.java | 165 ++++++++++++------
.../sat7/dynamicshop/commands/shop/Edit.java | 4 +-
.../dynamicshop/commands/shop/EditAll.java | 2 +-
.../dynamicshop/commands/shop/Enable.java | 2 +-
.../sat7/dynamicshop/commands/shop/Flag.java | 3 +-
.../commands/shop/Fluctuation.java | 4 +-
.../sat7/dynamicshop/commands/shop/Log.java | 4 +-
.../dynamicshop/commands/shop/MaxPage.java | 2 +-
.../dynamicshop/commands/shop/Permission.java | 2 +-
.../dynamicshop/commands/shop/Position.java | 2 +-
.../dynamicshop/commands/shop/SellBuy.java | 2 +-
.../dynamicshop/commands/shop/ShopHours.java | 2 +-
.../commands/shop/StockStabilizing.java | 4 +-
.../dynamicshop/economyhook/JobsHook.java | 69 ++++++++
.../economyhook/PlayerpointHook.java | 55 ++++++
.../me/sat7/dynamicshop/events/OnChat.java | 26 ++-
.../sat7/dynamicshop/events/OnSignClick.java | 32 ++--
.../sat7/dynamicshop/files/CustomConfig.java | 1 +
.../me/sat7/dynamicshop/guis/ItemTrade.java | 41 +++--
.../java/me/sat7/dynamicshop/guis/Shop.java | 7 +-
.../sat7/dynamicshop/guis/ShopSettings.java | 102 +++++++++--
.../me/sat7/dynamicshop/transactions/Buy.java | 108 +++++++++---
.../sat7/dynamicshop/transactions/Calc.java | 15 +-
.../sat7/dynamicshop/transactions/Sell.java | 134 ++++++++------
.../dynamicshop/utilities/ConfigUtil.java | 2 +-
.../sat7/dynamicshop/utilities/LangUtil.java | 27 ++-
.../sat7/dynamicshop/utilities/ShopUtil.java | 19 +-
.../utilities/TabCompleteUtil.java | 11 ++
src/main/resources/plugin.yml | 2 +-
36 files changed, 753 insertions(+), 240 deletions(-)
create mode 100644 src/main/java/me/sat7/dynamicshop/economyhook/JobsHook.java
create mode 100644 src/main/java/me/sat7/dynamicshop/economyhook/PlayerpointHook.java
diff --git a/pom.xml b/pom.xml
index 3bbc440..f8bd812 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
me.sat7
DynamicShop
- 3.9.0
+ 3.10.0
jar
DynamicShop
@@ -100,6 +100,10 @@
placeholderapi
https://repo.extendedclip.com/content/repositories/placeholderapi/
+
+ rosewood-repo
+ https://repo.rosewooddev.io/repository/public/
+
@@ -160,5 +164,11 @@
LocaleLib
2.4
+
+ org.black_ixx
+ playerpoints
+ 3.2.5
+ provided
+
diff --git a/src/main/java/me/sat7/dynamicshop/DynaShopAPI.java b/src/main/java/me/sat7/dynamicshop/DynaShopAPI.java
index 4af9773..b0c6863 100644
--- a/src/main/java/me/sat7/dynamicshop/DynaShopAPI.java
+++ b/src/main/java/me/sat7/dynamicshop/DynaShopAPI.java
@@ -241,7 +241,7 @@ public static ArrayList getShopItems(@NonNull String shopName)
if (validateShopName(shopName))
{
CustomConfig data = ShopUtil.shopConfigFiles.get(shopName);
-
+
ArrayList list = new ArrayList<>();
for (String s : data.get().getKeys(false))
{
@@ -402,6 +402,25 @@ public static boolean isJobsPointShop(@NonNull String shopName) throws IllegalAr
}
}
+ /**
+ * Get whether a shop is for Vault money or Player points
+ *
+ * @param shopName The shop to check the type of
+ * @return True if it is a Player Point shop, False if it is a Vault economy money shop
+ * @throws IllegalArgumentException When the shop does not exist
+ */
+ public static boolean isPlayerPointShop(@NonNull String shopName) throws IllegalArgumentException
+ {
+ if (validateShopName(shopName))
+ {
+ CustomConfig data = ShopUtil.shopConfigFiles.get(shopName);
+ return data.get().contains("Options.flag.playerpoint");
+ } else
+ {
+ throw new IllegalArgumentException("Shop: " + shopName + " does not exist");
+ }
+ }
+
/**
* Check if a shop exists
*
diff --git a/src/main/java/me/sat7/dynamicshop/DynamicShop.java b/src/main/java/me/sat7/dynamicshop/DynamicShop.java
index e764c61..1fa04de 100644
--- a/src/main/java/me/sat7/dynamicshop/DynamicShop.java
+++ b/src/main/java/me/sat7/dynamicshop/DynamicShop.java
@@ -6,12 +6,13 @@
import me.sat7.dynamicshop.commands.Optional;
import me.sat7.dynamicshop.commands.Root;
import me.sat7.dynamicshop.constants.Constants;
+import me.sat7.dynamicshop.economyhook.PlayerpointHook;
import me.sat7.dynamicshop.events.*;
import me.sat7.dynamicshop.files.CustomConfig;
import me.sat7.dynamicshop.guis.QuickSell;
import me.sat7.dynamicshop.guis.StartPage;
import me.sat7.dynamicshop.guis.UIManager;
-import me.sat7.dynamicshop.jobshook.JobsHook;
+import me.sat7.dynamicshop.economyhook.JobsHook;
import me.sat7.dynamicshop.utilities.*;
import net.md_5.bungee.api.ChatColor;
import net.md_5.bungee.api.chat.ClickEvent;
@@ -20,7 +21,10 @@
import net.md_5.bungee.api.chat.TextComponent;
import net.milkbowl.vault.economy.Economy;
+import org.black_ixx.playerpoints.PlayerPoints;
+import org.black_ixx.playerpoints.PlayerPointsAPI;
import org.bstats.bukkit.Metrics;
+import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
@@ -46,6 +50,8 @@ public static Economy getEconomy()
return econ;
}
+ public static PlayerPointsAPI ppAPI;
+
public static DynamicShop plugin;
public static ConsoleCommandSender console;
@@ -151,6 +157,7 @@ private void Init()
startSaveLogsTask();
startCullLogsTask();
hookIntoJobs();
+ hookIntoPlayerPoints();
InitPapi();
// 완료
@@ -171,7 +178,7 @@ private void SetupVault()
}
else
{
- console.sendMessage(Constants.DYNAMIC_SHOP_PREFIX + " Vault Found");
+ console.sendMessage(Constants.DYNAMIC_SHOP_PREFIX + " 'Vault' Found");
}
SetupRSP();
@@ -279,11 +286,11 @@ private void InitPapi()
isPapiExist = Bukkit.getPluginManager().getPlugin("PlaceholderAPI") != null;
if(isPapiExist)
{
- console.sendMessage(Constants.DYNAMIC_SHOP_PREFIX + " PlaceholderAPI Found");
+ console.sendMessage(Constants.DYNAMIC_SHOP_PREFIX + " 'PlaceholderAPI' Found");
}
else
{
- console.sendMessage(Constants.DYNAMIC_SHOP_PREFIX + " PlaceholderAPI Not Found");
+ console.sendMessage(Constants.DYNAMIC_SHOP_PREFIX + " 'PlaceholderAPI' Not Found");
}
}
@@ -342,15 +349,31 @@ private void hookIntoJobs()
// Jobs
if (getServer().getPluginManager().getPlugin("Jobs") == null)
{
- console.sendMessage(Constants.DYNAMIC_SHOP_PREFIX + " Jobs Reborn Not Found");
+ console.sendMessage(Constants.DYNAMIC_SHOP_PREFIX + " 'Jobs Reborn' Not Found");
JobsHook.jobsRebornActive = false;
} else
{
- console.sendMessage(Constants.DYNAMIC_SHOP_PREFIX + " Jobs Reborn Found");
+ console.sendMessage(Constants.DYNAMIC_SHOP_PREFIX + " 'Jobs Reborn' Found");
JobsHook.jobsRebornActive = true;
}
}
+ private void hookIntoPlayerPoints()
+ {
+ if (Bukkit.getPluginManager().isPluginEnabled("PlayerPoints"))
+ {
+ console.sendMessage(Constants.DYNAMIC_SHOP_PREFIX + " 'PlayerPoints' Found");
+ ppAPI = PlayerPoints.getInstance().getAPI();
+ PlayerpointHook.isPPActive = true;
+
+ }
+ else
+ {
+ console.sendMessage(Constants.DYNAMIC_SHOP_PREFIX + " 'PlayerPoints' Not Found");
+ PlayerpointHook.isPPActive = false;
+ }
+ }
+
private void initCommands()
{
// 명령어 등록 (개별 클레스로 되어있는것들)
@@ -409,10 +432,41 @@ private void InitConfig()
QuickSell.quickSellGui = new CustomConfig();
QuickSell.SetupQuickSellGUIFile();
+ ConfigUpdate();
+
getConfig().set("Version", configVersion);
saveConfig();
}
+ private void ConfigUpdate()
+ {
+ int userVersion = getConfig().getInt("Version");
+ if (userVersion == 3)
+ {
+ for(Map.Entry entry : ShopUtil.shopConfigFiles.entrySet())
+ {
+ ConfigurationSection cmdCS = entry.getValue().get().getConfigurationSection("Options.command");
+ if(cmdCS == null)
+ continue;
+
+ boolean somethingChanged = false;
+ if(cmdCS.contains("sell"))
+ {
+ cmdCS.set("sell.0", cmdCS.get("sell"));
+ somethingChanged = true;
+ }
+ if(cmdCS.contains("buy"))
+ {
+ cmdCS.set("buy.0", cmdCS.get("buy"));
+ somethingChanged = true;
+ }
+
+ if(somethingChanged)
+ entry.getValue().save();
+ }
+ }
+ }
+
private void setupUserFile()
{
ccUser.setup("User", null);
diff --git a/src/main/java/me/sat7/dynamicshop/commands/Help.java b/src/main/java/me/sat7/dynamicshop/commands/Help.java
index 7ff1600..e882651 100644
--- a/src/main/java/me/sat7/dynamicshop/commands/Help.java
+++ b/src/main/java/me/sat7/dynamicshop/commands/Help.java
@@ -1,5 +1,6 @@
package me.sat7.dynamicshop.commands;
+import me.sat7.dynamicshop.commands.shop.Command;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
@@ -186,6 +187,7 @@ public static void showHelp(String helpcode, Player player, String[] args)
} else if (helpcode.equals("command"))
{
CMDManager.command.SendHelpMessage(player);
+ Command.PrintCurrentState(player, Shop.GetShopName(args), true, true);
} else if (helpcode.equals("account"))
{
CMDManager.account.SendHelpMessage(player);
diff --git a/src/main/java/me/sat7/dynamicshop/commands/shop/Account.java b/src/main/java/me/sat7/dynamicshop/commands/shop/Account.java
index 4208a4e..42c353d 100644
--- a/src/main/java/me/sat7/dynamicshop/commands/shop/Account.java
+++ b/src/main/java/me/sat7/dynamicshop/commands/shop/Account.java
@@ -3,9 +3,9 @@
import me.sat7.dynamicshop.DynamicShop;
import me.sat7.dynamicshop.commands.DSCMD;
import me.sat7.dynamicshop.commands.Shop;
+import me.sat7.dynamicshop.economyhook.PlayerpointHook;
import me.sat7.dynamicshop.files.CustomConfig;
-import me.sat7.dynamicshop.jobshook.JobsHook;
-import me.sat7.dynamicshop.utilities.LangUtil;
+import me.sat7.dynamicshop.economyhook.JobsHook;
import me.sat7.dynamicshop.utilities.ShopUtil;
import net.milkbowl.vault.economy.Economy;
import net.milkbowl.vault.economy.EconomyResponse;
@@ -31,9 +31,9 @@ public Account()
public void SendHelpMessage(Player player)
{
player.sendMessage(DynamicShop.dsPrefix(player) + t(player, "HELP.TITLE").replace("{command}", "account"));
- player.sendMessage(" - " + t(player, "HELP.USAGE") + ": /ds shop account set ");
- player.sendMessage(" - " + t(player, "HELP.USAGE") + ": /ds shop account linkto ");
- player.sendMessage(" - " + t(player, "HELP.USAGE") + ": /ds shop account transfer ");
+ player.sendMessage(" - " + t(player, "HELP.USAGE") + ": ... account set ");
+ player.sendMessage(" - " + t(player, "HELP.USAGE") + ": ... account linkto ");
+ player.sendMessage(" - " + t(player, "HELP.USAGE") + ": ... account transfer ");
player.sendMessage(" - " + t(player, "HELP.ACCOUNT"));
player.sendMessage("");
@@ -117,7 +117,8 @@ public void RunCMD(String[] args, CommandSender sender)
}
// 출발 상점과 도착 상점의 통화 유형이 다름
- if (shopData.get().contains("Options.flag.jobpoint") != targetShopData.get().contains("Options.flag.jobpoint"))
+ if ((shopData.get().contains("Options.flag.jobpoint") != targetShopData.get().contains("Options.flag.jobpoint")) ||
+ (shopData.get().contains("Options.flag.playerpoint") != targetShopData.get().contains("Options.flag.playerpoint")) )
{
sender.sendMessage(DynamicShop.dsPrefix(sender) + t(sender, "ERR.SHOP_DIFF_CURRENCY"));
return;
@@ -160,7 +161,13 @@ public void RunCMD(String[] args, CommandSender sender)
{
sender.sendMessage(DynamicShop.dsPrefix(sender) + t(sender, "MESSAGE.NOT_ENOUGH_POINT").
replace("{bal}", n(ShopUtil.getShopBalance(args[1]))));
- } else
+ }
+ else if (shopData.get().contains("Options.flag.playerpoint"))
+ {
+ sender.sendMessage(DynamicShop.dsPrefix(sender) + t(sender, "MESSAGE.NOT_ENOUGH_PLAYER_POINT").
+ replace("{bal}", n(ShopUtil.getShopBalance(args[1]))));
+ }
+ else
{
sender.sendMessage(DynamicShop.dsPrefix(sender) + t(sender, "MESSAGE.NOT_ENOUGH_MONEY").
replace("{bal}", n(ShopUtil.getShopBalance(args[1]))));
@@ -186,7 +193,8 @@ public void RunCMD(String[] args, CommandSender sender)
}
// 출발 상점과 도착 상점의 통화 유형이 다름
- if (shopData.get().contains("Options.flag.jobpoint") != targetShopData.get().contains("Options.flag.jobpoint"))
+ if ((shopData.get().contains("Options.flag.jobpoint") != targetShopData.get().contains("Options.flag.jobpoint")) ||
+ (shopData.get().contains("Options.flag.playerpoint") != targetShopData.get().contains("Options.flag.playerpoint")) )
{
sender.sendMessage(DynamicShop.dsPrefix(sender) + t(sender, "ERR.SHOP_DIFF_CURRENCY"));
return;
@@ -221,7 +229,16 @@ public void RunCMD(String[] args, CommandSender sender)
shopData.save();
sender.sendMessage(DynamicShop.dsPrefix(sender) + t(sender, "MESSAGE.TRANSFER_SUCCESS"));
- } else
+ }
+ else if (shopData.get().contains("Options.flag.playerpoint"))
+ {
+ PlayerpointHook.addPP(target, amount);
+ ShopUtil.addShopBalance(args[1], amount * -1);
+ shopData.save();
+
+ sender.sendMessage(DynamicShop.dsPrefix(sender) + t(sender, "MESSAGE.TRANSFER_SUCCESS"));
+ }
+ else
{
Economy econ = DynamicShop.getEconomy();
EconomyResponse er = econ.depositPlayer(target, amount);
diff --git a/src/main/java/me/sat7/dynamicshop/commands/shop/Add.java b/src/main/java/me/sat7/dynamicshop/commands/shop/Add.java
index d13a17b..3295c60 100644
--- a/src/main/java/me/sat7/dynamicshop/commands/shop/Add.java
+++ b/src/main/java/me/sat7/dynamicshop/commands/shop/Add.java
@@ -27,8 +27,8 @@ public Add()
public void SendHelpMessage(Player player)
{
player.sendMessage(DynamicShop.dsPrefix(player) + t(player, "HELP.TITLE").replace("{command}", "add"));
- player.sendMessage(" - " + t(player, "HELP.USAGE") + ": /ds shop add - ");
- player.sendMessage(" - " + t(player, "HELP.USAGE") + ": /ds shop add
- ");
+ player.sendMessage(" - " + t(player, "HELP.USAGE") + ": ... add
- ");
+ player.sendMessage(" - " + t(player, "HELP.USAGE") + ": ... add
- ");
player.sendMessage(" - " + t(player, "HELP.SHOP_ADD_ITEM"));
player.sendMessage(" - " + t(player, "HELP.PRICE"));
player.sendMessage(" - " + t(player, "HELP.INF_STATIC"));
diff --git a/src/main/java/me/sat7/dynamicshop/commands/shop/AddHand.java b/src/main/java/me/sat7/dynamicshop/commands/shop/AddHand.java
index fad4337..3cc7976 100644
--- a/src/main/java/me/sat7/dynamicshop/commands/shop/AddHand.java
+++ b/src/main/java/me/sat7/dynamicshop/commands/shop/AddHand.java
@@ -25,8 +25,8 @@ public AddHand()
public void SendHelpMessage(Player player)
{
player.sendMessage(DynamicShop.dsPrefix(player) + t(player, "HELP.TITLE").replace("{command}", "addhand"));
- player.sendMessage(" - " + t(player, "HELP.USAGE") + ": /ds shop addhand ");
- player.sendMessage(" - " + t(player, "HELP.USAGE") + ": /ds shop addhand ");
+ player.sendMessage(" - " + t(player, "HELP.USAGE") + ": ... addhand ");
+ player.sendMessage(" - " + t(player, "HELP.USAGE") + ": ... addhand ");
player.sendMessage(" - " + t(player, "HELP.SHOP_ADD_HAND"));
player.sendMessage(" - " + t(player, "HELP.PRICE"));
player.sendMessage(" - " + t(player, "HELP.INF_STATIC"));
diff --git a/src/main/java/me/sat7/dynamicshop/commands/shop/Command.java b/src/main/java/me/sat7/dynamicshop/commands/shop/Command.java
index a14dc30..1409f7c 100644
--- a/src/main/java/me/sat7/dynamicshop/commands/shop/Command.java
+++ b/src/main/java/me/sat7/dynamicshop/commands/shop/Command.java
@@ -8,6 +8,9 @@
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
+import java.util.ArrayList;
+import java.util.Map;
+
import static me.sat7.dynamicshop.constants.Constants.P_ADMIN_SHOP_EDIT;
import static me.sat7.dynamicshop.utilities.LangUtil.t;
@@ -23,12 +26,50 @@ public Command()
public void SendHelpMessage(Player player)
{
player.sendMessage(DynamicShop.dsPrefix(player) + t(player, "HELP.TITLE").replace("{command}", "command"));
- player.sendMessage(" - " + t(player, "HELP.USAGE") + ": /ds shop command ");
- player.sendMessage(" - " + t(player, "HELP.USAGE") + ": /ds shop command active ");
+ player.sendMessage(" - " + t(player, "HELP.USAGE") + ": ... command add ");
+ player.sendMessage(" - " + t(player, "HELP.USAGE") + ": ... command delete ");
+ player.sendMessage(" - " + t(player, "HELP.USAGE") + ": ... command active ");
player.sendMessage("");
}
+ public static void PrintCurrentState(CommandSender sender, String shopName, boolean showSell, boolean showBuy)
+ {
+ CustomConfig data = ShopUtil.shopConfigFiles.get(shopName);
+
+ if (data.get().contains("Options.command.active") && data.get().getBoolean("Options.command.active"))
+ {
+ if (showSell && data.get().contains("Options.command.sell"))
+ {
+ sender.sendMessage(DynamicShop.dsPrefix(sender) + t(sender,"MESSAGE.SELL_COMMAND_CUR"));
+ if (data.get().getConfigurationSection("Options.command.sell") != null)
+ {
+ for (Map.Entry s : data.get().getConfigurationSection("Options.command.sell").getValues(false).entrySet())
+ {
+ sender.sendMessage(" " + s.getKey() + "/" + s.getValue());
+ }
+
+ sender.sendMessage("Placeholders: {player} {shop} {itemType} {amount} {priceSum} {tax}");
+ }
+ }
+ if (showBuy && data.get().contains("Options.command.buy"))
+ {
+ sender.sendMessage(DynamicShop.dsPrefix(sender) + t(sender,"MESSAGE.BUY_COMMAND_CUR"));
+ if (data.get().getConfigurationSection("Options.command.buy") != null)
+ {
+ for (Map.Entry s : data.get().getConfigurationSection("Options.command.buy").getValues(false).entrySet())
+ {
+ sender.sendMessage(" " + s.getKey() + "/" + s.getValue());
+ }
+
+ sender.sendMessage("Placeholders: {player} {shop} {itemType} {amount} {priceSum}");
+ }
+ }
+ }
+
+ sender.sendMessage("");
+ }
+
@Override
public void RunCMD(String[] args, CommandSender sender)
{
@@ -45,57 +86,14 @@ public void RunCMD(String[] args, CommandSender sender)
boolean setActive = args[4].equalsIgnoreCase("true");
shopData.get().set("Options.command.active", setActive);
sender.sendMessage(DynamicShop.dsPrefix(sender) + shopName + "/" + t(sender, "SHOP_SETTING.COMMAND_TOGGLE") + ": " + args[4]);
- } else if (args[3].equalsIgnoreCase("sell"))
+ }
+ else if (args[3].equalsIgnoreCase("sell"))
{
- if(args[4].equalsIgnoreCase("clear") && args.length == 5)
- {
- shopData.get().set("Options.command.sell", null);
- sender.sendMessage(DynamicShop.dsPrefix(sender) + shopName + "/" + t(sender, "SHOP_SETTING.COMMAND_SELL") + ": null");
- }
- else
- {
- String cmdString = "";
- for (int i = 4; i < args.length; i++)
- {
- if (i == 4 && args[i].startsWith("/"))
- {
- args[4] = args[4].replace("/","");
- }
-
- cmdString += args[i];
- cmdString += " ";
- }
-
- shopData.get().set("Options.command.sell", cmdString);
- sender.sendMessage(DynamicShop.dsPrefix(sender) + shopName + "/" + t(sender, "SHOP_SETTING.COMMAND_SELL") + ": ");
- sender.sendMessage("/" + cmdString);
- }
+ subCmd(sender, args, shopData, "sell");
}
else if (args[3].equalsIgnoreCase("buy"))
{
- if(args[4].equalsIgnoreCase("clear") && args.length == 5)
- {
- shopData.get().set("Options.command.buy", null);
- sender.sendMessage(DynamicShop.dsPrefix(sender) + shopName + "/" + t(sender, "SHOP_SETTING.COMMAND_BUY") + ": null");
- }
- else
- {
- String cmdString = "";
- for (int i = 4; i < args.length; i++)
- {
- if (i == 4 && args[i].startsWith("/"))
- {
- args[4] = args[4].replace("/","");
- }
-
- cmdString += args[i];
- cmdString += " ";
- }
-
- shopData.get().set("Options.command.buy", cmdString);
- sender.sendMessage(DynamicShop.dsPrefix(sender) + shopName + "/" + t(sender, "SHOP_SETTING.COMMAND_BUY") + ": ");
- sender.sendMessage("/" + cmdString);
- }
+ subCmd(sender, args, shopData, "buy");
}
else
{
@@ -111,4 +109,73 @@ else if (args[3].equalsIgnoreCase("buy"))
shopData.save();
}
+
+ private void subCmd(CommandSender sender, String[] args, CustomConfig shopData, String sellBuyString)
+ {
+ if(args[4].equalsIgnoreCase("delete") && args.length == 6)
+ {
+ int idx = 0;
+ try
+ {
+ idx = Integer.parseInt(args[5]);
+ }catch(Exception ignore)
+ {
+ sender.sendMessage(DynamicShop.dsPrefix(sender) + t(sender, "ERR.WRONG_DATATYPE"));
+ return;
+ }
+
+ shopData.get().set("Options.command." + sellBuyString + "." + idx, null);
+ CleanupIndex(shopData, "sellBuyString");
+ PrintCurrentState(sender, Shop.GetShopName(args), true, true);
+ }
+ else if(args[4].equalsIgnoreCase("add") && args.length >= 7)
+ {
+ int idx = 0;
+ try
+ {
+ idx = Integer.parseInt(args[5]);
+ }catch(Exception ignore)
+ {
+ sender.sendMessage(DynamicShop.dsPrefix(sender) + t(sender, "ERR.WRONG_DATATYPE"));
+ return;
+ }
+
+ String cmdString = "";
+ for (int i = 6; i < args.length; i++)
+ {
+ if (i == 6 && args[i].startsWith("/"))
+ {
+ args[6] = args[6].replace("/","");
+ }
+
+ cmdString += args[i];
+ cmdString += " ";
+ }
+
+ shopData.get().set("Options.command." + sellBuyString + "." + idx, cmdString);
+ CleanupIndex(shopData, "sellBuyString");
+ PrintCurrentState(sender, Shop.GetShopName(args), true, true);
+ }
+ else
+ {
+ sender.sendMessage(DynamicShop.dsPrefix(sender) + t(sender, "ERR.WRONG_USAGE"));
+ }
+ }
+
+ private void CleanupIndex(CustomConfig shopData, String sellBuyString)
+ {
+ ArrayList