Skip to content

Commit cd691da

Browse files
committed
Gets some minor features from the paid version and more.
- Improved page editor - Improved Item Palette - CSV format log (Log Viewer not included) - Added option to print logs to console or admin (useful for small servers)
1 parent 85a1748 commit cd691da

File tree

19 files changed

+931
-138
lines changed

19 files changed

+931
-138
lines changed

pom.xml

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
<groupId>me.sat7</groupId>
88
<artifactId>DynamicShop</artifactId>
9-
<version>3.7.1</version>
9+
<version>3.8.0</version>
1010
<packaging>jar</packaging>
1111

1212
<name>DynamicShop</name>
@@ -40,14 +40,18 @@
4040
<plugin>
4141
<groupId>org.apache.maven.plugins</groupId>
4242
<artifactId>maven-shade-plugin</artifactId>
43-
<version>3.1.0</version>
43+
<version>3.2.4</version>
4444
<configuration>
4545
<minimizeJar>true</minimizeJar>
4646
<relocations>
4747
<relocation>
4848
<pattern>org.bstats</pattern>
4949
<shadedPattern>me.sat7.dynamicshop.lib.bstats</shadedPattern>
5050
</relocation>
51+
<relocation>
52+
<pattern>com.opencsv</pattern>
53+
<shadedPattern>me.sat7.dynamicshop.lib.opencsv</shadedPattern>
54+
</relocation>
5155
</relocations>
5256
</configuration>
5357
<executions>
@@ -117,6 +121,16 @@
117121
<version>2.2.1</version>
118122
<scope>compile</scope>
119123
</dependency>
124+
<dependency>
125+
<groupId>com.opencsv</groupId>
126+
<artifactId>opencsv</artifactId>
127+
<version>5.2</version>
128+
</dependency>
129+
<dependency>
130+
<groupId>commons-io</groupId>
131+
<artifactId>commons-io</artifactId>
132+
<version>2.11.0</version>
133+
</dependency>
120134
<dependency>
121135
<groupId>me.clip</groupId>
122136
<artifactId>placeholderapi</artifactId>

src/main/java/me/sat7/dynamicshop/DynaShopAPI.java

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,12 @@ public static void openShopSettingGui(Player player, String shopName)
6666
UIManager.Open(player, inventory, uiClass);
6767
}
6868

69+
// 상점 로테이트 편집기
70+
public static void OpenRotationEditor(Player player, String shopName)
71+
{
72+
DynamicShop.PaidOnlyMsg(player);
73+
}
74+
6975
// 거래화면 생성 및 열기
7076
public static void openItemTradeGui(Player player, String shopName, String tradeIdx)
7177
{
@@ -110,6 +116,26 @@ public static void openItemSettingGui(Player player, String shopName, int shopSl
110116
UIManager.Open(player, inventory, uiClass);
111117
}
112118

119+
// 페이지 에디터 열기
120+
public static void openPageEditor(Player player, String shopName, int page)
121+
{
122+
PageEditor uiClass = new PageEditor();
123+
Inventory inventory = uiClass.getGui(player, shopName, page);
124+
UIManager.Open(player, inventory, uiClass);
125+
}
126+
127+
// 로그뷰어 열기
128+
public static void openLogViewer(Player player, String shopName)
129+
{
130+
DynamicShop.PaidOnlyMsg(player);
131+
}
132+
133+
// 재고 시뮬레이터 열기
134+
public static void openStockSimulator(Player player, String shopName)
135+
{
136+
DynamicShop.PaidOnlyMsg(player);
137+
}
138+
113139
// 스타트 페이지
114140
public static void openStartPage(Player player)
115141
{
@@ -214,7 +240,7 @@ public static ArrayList<ItemStack> getShopItems(@NonNull String shopName)
214240
if (validateShopName(shopName))
215241
{
216242
CustomConfig data = ShopUtil.shopConfigFiles.get(shopName);
217-
243+
218244
ArrayList<ItemStack> list = new ArrayList<>();
219245
for (String s : data.get().getKeys(false))
220246
{

src/main/java/me/sat7/dynamicshop/DynamicShop.java

Lines changed: 61 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
import java.util.*;
3737

3838
import static me.sat7.dynamicshop.utilities.ConfigUtil.configVersion;
39+
import static me.sat7.dynamicshop.utilities.LangUtil.t;
3940

4041
public final class DynamicShop extends JavaPlugin implements Listener
4142
{
@@ -76,6 +77,7 @@ public static String dsPrefix(Player player)
7677
public static CustomConfig ccSign;
7778

7879
private BukkitTask periodicRepetitiveTask;
80+
private BukkitTask saveLogsTask;
7981
private BukkitTask cullLogsTask;
8082

8183
public static boolean updateAvailable = false;
@@ -89,6 +91,43 @@ public static String dsPrefix(Player player)
8991
public static final LocaleManager localeManager = new LocaleManager();
9092
public static boolean isPapiExist;
9193

94+
public static final boolean DEBUG_MODE = false;
95+
public static void DebugLog()
96+
{
97+
if(!DEBUG_MODE)
98+
return;
99+
100+
console.sendMessage("========== DEBUG LOG ==========");
101+
102+
console.sendMessage("userTempData: size" + userTempData.size());
103+
for(Map.Entry<UUID, String> entry : userTempData.entrySet())
104+
console.sendMessage(entry.getKey() + ": " + entry.getValue());
105+
106+
console.sendMessage("---------------------");
107+
108+
console.sendMessage("userInteractItem: size" + userInteractItem.size());
109+
for(Map.Entry<UUID, String> entry : userInteractItem.entrySet())
110+
console.sendMessage(entry.getKey() + ": " + entry.getValue());
111+
112+
console.sendMessage("---------------------");
113+
114+
console.sendMessage("ShopUtil.shopConfigFiles: size" + ShopUtil.shopConfigFiles.size());
115+
for(Map.Entry<String, CustomConfig> entry : ShopUtil.shopConfigFiles.entrySet())
116+
console.sendMessage(entry.getKey() + ": " + entry.getValue());
117+
118+
console.sendMessage("---------------------");
119+
120+
UIManager.DebugLog();
121+
122+
//console.sendMessage("---------------------");
123+
124+
//console.sendMessage("RotationTaskMap: size" + RotationUtil.RotationTaskMap.size());
125+
//for(Map.Entry<String, Integer> entry : RotationUtil.RotationTaskMap.entrySet())
126+
// console.sendMessage(entry.getKey() + ": " + entry.getValue());
127+
128+
console.sendMessage("========== DEBUG LOG END ==========");
129+
}
130+
92131
@Override
93132
public void onEnable()
94133
{
@@ -109,6 +148,7 @@ private void Init()
109148
InitConfig();
110149

111150
PeriodicRepetitiveTask();
151+
startSaveLogsTask();
112152
startCullLogsTask();
113153
hookIntoJobs();
114154
InitPapi();
@@ -247,6 +287,18 @@ private void InitPapi()
247287
}
248288
}
249289

290+
public void startSaveLogsTask()
291+
{
292+
if (getConfig().getBoolean("Log.SaveLogs"))
293+
{
294+
if (saveLogsTask != null)
295+
{
296+
saveLogsTask.cancel();
297+
}
298+
saveLogsTask = Bukkit.getScheduler().runTaskTimerAsynchronously(this, LogUtil::SaveLogToCSV, 0L, (20L * 10L));
299+
}
300+
}
301+
250302
public void startCullLogsTask()
251303
{
252304
if (getConfig().getBoolean("Log.CullLogs"))
@@ -340,7 +392,6 @@ private void InitConfig()
340392
ccSign = new CustomConfig();
341393
WorthUtil.ccWorth = new CustomConfig();
342394
SoundUtil.ccSound = new CustomConfig();
343-
LogUtil.ccLog = new CustomConfig();
344395

345396
ShopUtil.Reload();
346397

@@ -354,7 +405,6 @@ private void InitConfig()
354405
setupSignFile();
355406
WorthUtil.setupWorthFile();
356407
SoundUtil.setupSoundFile();
357-
LogUtil.setupLogFile();
358408

359409
QuickSell.quickSellGui = new CustomConfig();
360410
QuickSell.SetupQuickSellGUIFile();
@@ -403,4 +453,13 @@ public void onDisable()
403453
Bukkit.getScheduler().cancelTasks(this);
404454
console.sendMessage(Constants.DYNAMIC_SHOP_PREFIX + " Disabled");
405455
}
456+
457+
public static void PaidOnlyMsg(Player p)
458+
{
459+
TextComponent text = new TextComponent("");
460+
text.addExtra(DynamicShop.dsPrefix(p) + t(p, "PAID_VERSION.DESC"));
461+
text.addExtra(DynamicShop.CreateLink(t(p, "PAID_VERSION.GET_PREMIUM"), false, ChatColor.WHITE, "https://spigotmc.org/resources/100058"));
462+
463+
p.spigot().sendMessage(text);
464+
}
406465
}

src/main/java/me/sat7/dynamicshop/commands/Reload.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ public void RunCMD(String[] args, CommandSender sender)
5555
ConfigUtil.configSetup(DynamicShop.plugin);
5656
DynamicShop.plugin.PeriodicRepetitiveTask();
5757

58+
DynamicShop.plugin.startSaveLogsTask();
5859
DynamicShop.plugin.startCullLogsTask();
5960

6061
QuickSell.quickSellGui.reload();

src/main/java/me/sat7/dynamicshop/commands/Root.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,12 @@ else if (args[0].equalsIgnoreCase("qsell"))
7171
{
7272
if (args.length > 0)
7373
{
74-
if (args[0].equalsIgnoreCase("shop"))
74+
if (args[0].equalsIgnoreCase("debug"))
75+
{
76+
DynamicShop.DebugLog();
77+
return true;
78+
}
79+
else if (args[0].equalsIgnoreCase("shop"))
7580
{
7681
Shop.shopCommand(args, sender);
7782
return true;

src/main/java/me/sat7/dynamicshop/commands/shop/Enable.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ public Enable()
2525
public void SendHelpMessage(Player player)
2626
{
2727
player.sendMessage(DynamicShop.dsPrefix(player) + t(player, "HELP.TITLE").replace("{command}", "enable"));
28-
player.sendMessage(" - " + t(player, "HELP.USAGE") + ": /ds shop <shopname> <true|false>");
28+
player.sendMessage(" - " + t(player, "HELP.USAGE") + ": /ds shop <shopname> <true | false>");
2929
player.sendMessage("");
3030
}
3131

src/main/java/me/sat7/dynamicshop/commands/shop/Log.java

Lines changed: 67 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
import me.sat7.dynamicshop.commands.DSCMD;
55
import me.sat7.dynamicshop.commands.Shop;
66
import me.sat7.dynamicshop.files.CustomConfig;
7-
import me.sat7.dynamicshop.utilities.LangUtil;
87
import me.sat7.dynamicshop.utilities.LogUtil;
98
import me.sat7.dynamicshop.utilities.ShopUtil;
109
import org.bukkit.command.CommandSender;
@@ -20,13 +19,15 @@ public Log()
2019
inGameUseOnly = false;
2120
permission = P_ADMIN_SHOP_EDIT;
2221
validArgCount.add(4);
22+
validArgCount.add(5);
2323
}
2424

2525
@Override
2626
public void SendHelpMessage(Player player)
2727
{
2828
player.sendMessage(DynamicShop.dsPrefix(player) + t(player, "HELP.TITLE").replace("{command}", "log"));
29-
player.sendMessage(" - " + t(player, "HELP.USAGE") + ": /ds shop <shop name> log < enable | disable | clear >");
29+
player.sendMessage(" - " + t(player, "HELP.USAGE") + ": /ds shop <shop name> log <enable | disable | clear>");
30+
player.sendMessage(" - " + t(player, "HELP.USAGE") + ": /ds shop <shop name> log <printToConsole | printToAdmin> <on | off>");
3031

3132
player.sendMessage("");
3233
}
@@ -40,20 +41,72 @@ public void RunCMD(String[] args, CommandSender sender)
4041
String shopName = Shop.GetShopName(args);
4142
CustomConfig shopData = ShopUtil.shopConfigFiles.get(shopName);
4243

43-
if (args[3].equalsIgnoreCase("enable"))
44+
if (args.length == 4)
4445
{
45-
shopData.get().set("Options.log", true);
46-
sender.sendMessage(DynamicShop.dsPrefix(sender) + shopName + "/" + t(sender, "LOG.LOG") + ": " + args[3]);
47-
} else if (args[3].equalsIgnoreCase("disable"))
48-
{
49-
shopData.get().set("Options.log", null);
50-
sender.sendMessage(DynamicShop.dsPrefix(sender) + shopName + "/" + t(sender, "LOG.LOG") + ": " + args[3]);
51-
} else if (args[3].equalsIgnoreCase("clear"))
46+
if (args[3].equalsIgnoreCase("enable"))
47+
{
48+
shopData.get().set("Options.log.active", true);
49+
sender.sendMessage(DynamicShop.dsPrefix(sender) + shopName + "/" + t(sender, "LOG.LOG") + ": " + args[3]);
50+
} else if (args[3].equalsIgnoreCase("disable"))
51+
{
52+
shopData.get().set("Options.log.active", false);
53+
sender.sendMessage(DynamicShop.dsPrefix(sender) + shopName + "/" + t(sender, "LOG.LOG") + ": " + args[3]);
54+
} else if (args[3].equalsIgnoreCase("clear"))
55+
{
56+
LogUtil.DeleteShopLog(shopName);
57+
58+
sender.sendMessage(DynamicShop.dsPrefix(sender) + shopName + "/" + t(sender, "LOG.CLEAR"));
59+
} else
60+
{
61+
sender.sendMessage(DynamicShop.dsPrefix(sender) + t(sender, "ERR.WRONG_USAGE"));
62+
return;
63+
}
64+
}
65+
else if(args.length == 5)
5266
{
53-
LogUtil.ccLog.get().set(shopName, null);
54-
LogUtil.ccLog.save();
55-
sender.sendMessage(DynamicShop.dsPrefix(sender) + shopName + "/" + t(sender, "LOG.CLEAR"));
56-
} else
67+
if (args[3].equalsIgnoreCase("printToConsole"))
68+
{
69+
if (args[4].equalsIgnoreCase("on"))
70+
{
71+
shopData.get().set("Options.log.printToConsole", true);
72+
sender.sendMessage(DynamicShop.dsPrefix(sender) + shopName + "/" + t(sender, "SHOP_SETTING.LOG_PRINT_CONSOLE") + ": " + args[4]);
73+
}
74+
else if(args[4].equalsIgnoreCase("off"))
75+
{
76+
shopData.get().set("Options.log.printToConsole", false);
77+
sender.sendMessage(DynamicShop.dsPrefix(sender) + shopName + "/" + t(sender, "SHOP_SETTING.LOG_PRINT_CONSOLE") + ": " + args[4]);
78+
}
79+
else
80+
{
81+
sender.sendMessage(DynamicShop.dsPrefix(sender) + t(sender, "ERR.WRONG_USAGE"));
82+
return;
83+
}
84+
}
85+
else if (args[3].equalsIgnoreCase("printToAdmin"))
86+
{
87+
if (args[4].equalsIgnoreCase("on"))
88+
{
89+
shopData.get().set("Options.log.printToAdmin", true);
90+
sender.sendMessage(DynamicShop.dsPrefix(sender) + shopName + "/" + t(sender, "SHOP_SETTING.LOG_PRINT_ADMIN") + ": " + args[4]);
91+
}
92+
else if(args[4].equalsIgnoreCase("off"))
93+
{
94+
shopData.get().set("Options.log.printToAdmin", false);
95+
sender.sendMessage(DynamicShop.dsPrefix(sender) + shopName + "/" + t(sender, "SHOP_SETTING.LOG_PRINT_ADMIN") + ": " + args[4]);
96+
}
97+
else
98+
{
99+
sender.sendMessage(DynamicShop.dsPrefix(sender) + t(sender, "ERR.WRONG_USAGE"));
100+
return;
101+
}
102+
}
103+
else
104+
{
105+
sender.sendMessage(DynamicShop.dsPrefix(sender) + t(sender, "ERR.WRONG_USAGE"));
106+
return;
107+
}
108+
}
109+
else
57110
{
58111
sender.sendMessage(DynamicShop.dsPrefix(sender) + t(sender, "ERR.WRONG_USAGE"));
59112
return;

src/main/java/me/sat7/dynamicshop/events/OnChat.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import java.util.UUID;
2020

2121
import static me.sat7.dynamicshop.utilities.LangUtil.t;
22+
import static me.sat7.dynamicshop.utilities.MathUtil.Clamp;
2223

2324
public class OnChat implements Listener
2425
{
@@ -124,8 +125,13 @@ public void onPlayerChat(AsyncPlayerChatEvent e)
124125
if (e.getMessage().equals("delete"))
125126
{
126127
String[] temp = DynamicShop.userInteractItem.get(uuid).split("/");
127-
ShopUtil.deleteShopPage(temp[0], Integer.parseInt(temp[1]));
128-
DynaShopAPI.openShopGui(p, temp[0], 1);
128+
int targetPage = Integer.parseInt(temp[1]);
129+
ShopUtil.deleteShopPage(temp[0], targetPage);
130+
131+
int openPage = Clamp(targetPage, 1, ShopUtil.GetShopMaxPage(temp[0]));
132+
DynamicShop.userInteractItem.put(uuid, temp[0] + "/" + openPage);
133+
134+
DynaShopAPI.openPageEditor(p, temp[0], openPage);
129135
} else
130136
{
131137
p.sendMessage(DynamicShop.dsPrefix(p) + t(p, "MESSAGE.INPUT_CANCELED"));

src/main/java/me/sat7/dynamicshop/guis/InGameUI.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ public enum UI_TYPE
2828
StartPageSettings,
2929
StartPage_ShopList,
3030
StartPage_ColorList,
31+
PageEditor
3132
}
3233

3334
public UI_TYPE uiType;

0 commit comments

Comments
 (0)