Skip to content

Commit

Permalink
Gets some minor features from the paid version and more.
Browse files Browse the repository at this point in the history
- 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)
  • Loading branch information
7sat committed Feb 12, 2023
1 parent 85a1748 commit cd691da
Show file tree
Hide file tree
Showing 19 changed files with 931 additions and 138 deletions.
18 changes: 16 additions & 2 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

<groupId>me.sat7</groupId>
<artifactId>DynamicShop</artifactId>
<version>3.7.1</version>
<version>3.8.0</version>
<packaging>jar</packaging>

<name>DynamicShop</name>
Expand Down Expand Up @@ -40,14 +40,18 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.1.0</version>
<version>3.2.4</version>
<configuration>
<minimizeJar>true</minimizeJar>
<relocations>
<relocation>
<pattern>org.bstats</pattern>
<shadedPattern>me.sat7.dynamicshop.lib.bstats</shadedPattern>
</relocation>
<relocation>
<pattern>com.opencsv</pattern>
<shadedPattern>me.sat7.dynamicshop.lib.opencsv</shadedPattern>
</relocation>
</relocations>
</configuration>
<executions>
Expand Down Expand Up @@ -117,6 +121,16 @@
<version>2.2.1</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.opencsv</groupId>
<artifactId>opencsv</artifactId>
<version>5.2</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.11.0</version>
</dependency>
<dependency>
<groupId>me.clip</groupId>
<artifactId>placeholderapi</artifactId>
Expand Down
28 changes: 27 additions & 1 deletion src/main/java/me/sat7/dynamicshop/DynaShopAPI.java
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,12 @@ public static void openShopSettingGui(Player player, String shopName)
UIManager.Open(player, inventory, uiClass);
}

// 상점 로테이트 편집기
public static void OpenRotationEditor(Player player, String shopName)
{
DynamicShop.PaidOnlyMsg(player);
}

// 거래화면 생성 및 열기
public static void openItemTradeGui(Player player, String shopName, String tradeIdx)
{
Expand Down Expand Up @@ -110,6 +116,26 @@ public static void openItemSettingGui(Player player, String shopName, int shopSl
UIManager.Open(player, inventory, uiClass);
}

// 페이지 에디터 열기
public static void openPageEditor(Player player, String shopName, int page)
{
PageEditor uiClass = new PageEditor();
Inventory inventory = uiClass.getGui(player, shopName, page);
UIManager.Open(player, inventory, uiClass);
}

// 로그뷰어 열기
public static void openLogViewer(Player player, String shopName)
{
DynamicShop.PaidOnlyMsg(player);
}

// 재고 시뮬레이터 열기
public static void openStockSimulator(Player player, String shopName)
{
DynamicShop.PaidOnlyMsg(player);
}

// 스타트 페이지
public static void openStartPage(Player player)
{
Expand Down Expand Up @@ -214,7 +240,7 @@ public static ArrayList<ItemStack> getShopItems(@NonNull String shopName)
if (validateShopName(shopName))
{
CustomConfig data = ShopUtil.shopConfigFiles.get(shopName);

ArrayList<ItemStack> list = new ArrayList<>();
for (String s : data.get().getKeys(false))
{
Expand Down
63 changes: 61 additions & 2 deletions src/main/java/me/sat7/dynamicshop/DynamicShop.java
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@
import java.util.*;

import static me.sat7.dynamicshop.utilities.ConfigUtil.configVersion;
import static me.sat7.dynamicshop.utilities.LangUtil.t;

public final class DynamicShop extends JavaPlugin implements Listener
{
Expand Down Expand Up @@ -76,6 +77,7 @@ public static String dsPrefix(Player player)
public static CustomConfig ccSign;

private BukkitTask periodicRepetitiveTask;
private BukkitTask saveLogsTask;
private BukkitTask cullLogsTask;

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

public static final boolean DEBUG_MODE = false;
public static void DebugLog()
{
if(!DEBUG_MODE)
return;

console.sendMessage("========== DEBUG LOG ==========");

console.sendMessage("userTempData: size" + userTempData.size());
for(Map.Entry<UUID, String> entry : userTempData.entrySet())
console.sendMessage(entry.getKey() + ": " + entry.getValue());

console.sendMessage("---------------------");

console.sendMessage("userInteractItem: size" + userInteractItem.size());
for(Map.Entry<UUID, String> entry : userInteractItem.entrySet())
console.sendMessage(entry.getKey() + ": " + entry.getValue());

console.sendMessage("---------------------");

console.sendMessage("ShopUtil.shopConfigFiles: size" + ShopUtil.shopConfigFiles.size());
for(Map.Entry<String, CustomConfig> entry : ShopUtil.shopConfigFiles.entrySet())
console.sendMessage(entry.getKey() + ": " + entry.getValue());

console.sendMessage("---------------------");

UIManager.DebugLog();

//console.sendMessage("---------------------");

//console.sendMessage("RotationTaskMap: size" + RotationUtil.RotationTaskMap.size());
//for(Map.Entry<String, Integer> entry : RotationUtil.RotationTaskMap.entrySet())
// console.sendMessage(entry.getKey() + ": " + entry.getValue());

console.sendMessage("========== DEBUG LOG END ==========");
}

@Override
public void onEnable()
{
Expand All @@ -109,6 +148,7 @@ private void Init()
InitConfig();

PeriodicRepetitiveTask();
startSaveLogsTask();
startCullLogsTask();
hookIntoJobs();
InitPapi();
Expand Down Expand Up @@ -247,6 +287,18 @@ private void InitPapi()
}
}

public void startSaveLogsTask()
{
if (getConfig().getBoolean("Log.SaveLogs"))
{
if (saveLogsTask != null)
{
saveLogsTask.cancel();
}
saveLogsTask = Bukkit.getScheduler().runTaskTimerAsynchronously(this, LogUtil::SaveLogToCSV, 0L, (20L * 10L));
}
}

public void startCullLogsTask()
{
if (getConfig().getBoolean("Log.CullLogs"))
Expand Down Expand Up @@ -340,7 +392,6 @@ private void InitConfig()
ccSign = new CustomConfig();
WorthUtil.ccWorth = new CustomConfig();
SoundUtil.ccSound = new CustomConfig();
LogUtil.ccLog = new CustomConfig();

ShopUtil.Reload();

Expand All @@ -354,7 +405,6 @@ private void InitConfig()
setupSignFile();
WorthUtil.setupWorthFile();
SoundUtil.setupSoundFile();
LogUtil.setupLogFile();

QuickSell.quickSellGui = new CustomConfig();
QuickSell.SetupQuickSellGUIFile();
Expand Down Expand Up @@ -403,4 +453,13 @@ public void onDisable()
Bukkit.getScheduler().cancelTasks(this);
console.sendMessage(Constants.DYNAMIC_SHOP_PREFIX + " Disabled");
}

public static void PaidOnlyMsg(Player p)
{
TextComponent text = new TextComponent("");
text.addExtra(DynamicShop.dsPrefix(p) + t(p, "PAID_VERSION.DESC"));
text.addExtra(DynamicShop.CreateLink(t(p, "PAID_VERSION.GET_PREMIUM"), false, ChatColor.WHITE, "https://spigotmc.org/resources/100058"));

p.spigot().sendMessage(text);
}
}
1 change: 1 addition & 0 deletions src/main/java/me/sat7/dynamicshop/commands/Reload.java
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ public void RunCMD(String[] args, CommandSender sender)
ConfigUtil.configSetup(DynamicShop.plugin);
DynamicShop.plugin.PeriodicRepetitiveTask();

DynamicShop.plugin.startSaveLogsTask();
DynamicShop.plugin.startCullLogsTask();

QuickSell.quickSellGui.reload();
Expand Down
7 changes: 6 additions & 1 deletion src/main/java/me/sat7/dynamicshop/commands/Root.java
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,12 @@ else if (args[0].equalsIgnoreCase("qsell"))
{
if (args.length > 0)
{
if (args[0].equalsIgnoreCase("shop"))
if (args[0].equalsIgnoreCase("debug"))
{
DynamicShop.DebugLog();
return true;
}
else if (args[0].equalsIgnoreCase("shop"))
{
Shop.shopCommand(args, sender);
return true;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ public Enable()
public void SendHelpMessage(Player player)
{
player.sendMessage(DynamicShop.dsPrefix(player) + t(player, "HELP.TITLE").replace("{command}", "enable"));
player.sendMessage(" - " + t(player, "HELP.USAGE") + ": /ds shop <shopname> <true|false>");
player.sendMessage(" - " + t(player, "HELP.USAGE") + ": /ds shop <shopname> <true | false>");
player.sendMessage("");
}

Expand Down
81 changes: 67 additions & 14 deletions src/main/java/me/sat7/dynamicshop/commands/shop/Log.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
import me.sat7.dynamicshop.commands.DSCMD;
import me.sat7.dynamicshop.commands.Shop;
import me.sat7.dynamicshop.files.CustomConfig;
import me.sat7.dynamicshop.utilities.LangUtil;
import me.sat7.dynamicshop.utilities.LogUtil;
import me.sat7.dynamicshop.utilities.ShopUtil;
import org.bukkit.command.CommandSender;
Expand All @@ -20,13 +19,15 @@ public Log()
inGameUseOnly = false;
permission = P_ADMIN_SHOP_EDIT;
validArgCount.add(4);
validArgCount.add(5);
}

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

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

if (args[3].equalsIgnoreCase("enable"))
if (args.length == 4)
{
shopData.get().set("Options.log", true);
sender.sendMessage(DynamicShop.dsPrefix(sender) + shopName + "/" + t(sender, "LOG.LOG") + ": " + args[3]);
} else if (args[3].equalsIgnoreCase("disable"))
{
shopData.get().set("Options.log", null);
sender.sendMessage(DynamicShop.dsPrefix(sender) + shopName + "/" + t(sender, "LOG.LOG") + ": " + args[3]);
} else if (args[3].equalsIgnoreCase("clear"))
if (args[3].equalsIgnoreCase("enable"))
{
shopData.get().set("Options.log.active", true);
sender.sendMessage(DynamicShop.dsPrefix(sender) + shopName + "/" + t(sender, "LOG.LOG") + ": " + args[3]);
} else if (args[3].equalsIgnoreCase("disable"))
{
shopData.get().set("Options.log.active", false);
sender.sendMessage(DynamicShop.dsPrefix(sender) + shopName + "/" + t(sender, "LOG.LOG") + ": " + args[3]);
} else if (args[3].equalsIgnoreCase("clear"))
{
LogUtil.DeleteShopLog(shopName);

sender.sendMessage(DynamicShop.dsPrefix(sender) + shopName + "/" + t(sender, "LOG.CLEAR"));
} else
{
sender.sendMessage(DynamicShop.dsPrefix(sender) + t(sender, "ERR.WRONG_USAGE"));
return;
}
}
else if(args.length == 5)
{
LogUtil.ccLog.get().set(shopName, null);
LogUtil.ccLog.save();
sender.sendMessage(DynamicShop.dsPrefix(sender) + shopName + "/" + t(sender, "LOG.CLEAR"));
} else
if (args[3].equalsIgnoreCase("printToConsole"))
{
if (args[4].equalsIgnoreCase("on"))
{
shopData.get().set("Options.log.printToConsole", true);
sender.sendMessage(DynamicShop.dsPrefix(sender) + shopName + "/" + t(sender, "SHOP_SETTING.LOG_PRINT_CONSOLE") + ": " + args[4]);
}
else if(args[4].equalsIgnoreCase("off"))
{
shopData.get().set("Options.log.printToConsole", false);
sender.sendMessage(DynamicShop.dsPrefix(sender) + shopName + "/" + t(sender, "SHOP_SETTING.LOG_PRINT_CONSOLE") + ": " + args[4]);
}
else
{
sender.sendMessage(DynamicShop.dsPrefix(sender) + t(sender, "ERR.WRONG_USAGE"));
return;
}
}
else if (args[3].equalsIgnoreCase("printToAdmin"))
{
if (args[4].equalsIgnoreCase("on"))
{
shopData.get().set("Options.log.printToAdmin", true);
sender.sendMessage(DynamicShop.dsPrefix(sender) + shopName + "/" + t(sender, "SHOP_SETTING.LOG_PRINT_ADMIN") + ": " + args[4]);
}
else if(args[4].equalsIgnoreCase("off"))
{
shopData.get().set("Options.log.printToAdmin", false);
sender.sendMessage(DynamicShop.dsPrefix(sender) + shopName + "/" + t(sender, "SHOP_SETTING.LOG_PRINT_ADMIN") + ": " + args[4]);
}
else
{
sender.sendMessage(DynamicShop.dsPrefix(sender) + t(sender, "ERR.WRONG_USAGE"));
return;
}
}
else
{
sender.sendMessage(DynamicShop.dsPrefix(sender) + t(sender, "ERR.WRONG_USAGE"));
return;
}
}
else
{
sender.sendMessage(DynamicShop.dsPrefix(sender) + t(sender, "ERR.WRONG_USAGE"));
return;
Expand Down
10 changes: 8 additions & 2 deletions src/main/java/me/sat7/dynamicshop/events/OnChat.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
import java.util.UUID;

import static me.sat7.dynamicshop.utilities.LangUtil.t;
import static me.sat7.dynamicshop.utilities.MathUtil.Clamp;

public class OnChat implements Listener
{
Expand Down Expand Up @@ -124,8 +125,13 @@ public void onPlayerChat(AsyncPlayerChatEvent e)
if (e.getMessage().equals("delete"))
{
String[] temp = DynamicShop.userInteractItem.get(uuid).split("/");
ShopUtil.deleteShopPage(temp[0], Integer.parseInt(temp[1]));
DynaShopAPI.openShopGui(p, temp[0], 1);
int targetPage = Integer.parseInt(temp[1]);
ShopUtil.deleteShopPage(temp[0], targetPage);

int openPage = Clamp(targetPage, 1, ShopUtil.GetShopMaxPage(temp[0]));
DynamicShop.userInteractItem.put(uuid, temp[0] + "/" + openPage);

DynaShopAPI.openPageEditor(p, temp[0], openPage);
} else
{
p.sendMessage(DynamicShop.dsPrefix(p) + t(p, "MESSAGE.INPUT_CANCELED"));
Expand Down
1 change: 1 addition & 0 deletions src/main/java/me/sat7/dynamicshop/guis/InGameUI.java
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ public enum UI_TYPE
StartPageSettings,
StartPage_ShopList,
StartPage_ColorList,
PageEditor
}

public UI_TYPE uiType;
Expand Down
Loading

0 comments on commit cd691da

Please sign in to comment.