diff --git a/README.md b/README.md
index 37658c9..c70c2eb 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-Supported Minecraft versions: 1.16.5 ~ 1.21
+Supported Minecraft versions: 1.16.5 ~ 1.21.10
Free version https://www.spigotmc.org/resources/65603/
diff --git a/pom.xml b/pom.xml
index f3c31f2..9669be0 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
me.sat7
DynamicShop
- 3.120.1
+ 3.120.4
jar
DynamicShop
@@ -104,6 +104,10 @@
rosewood-repo
https://repo.rosewooddev.io/repository/public/
+
+ codemc-repo
+ https://repo.codemc.io/repository/maven-public/
+
@@ -128,12 +132,12 @@
com.opencsv
opencsv
- 5.2
+ 5.11.2
commons-io
commons-io
- 2.11.0
+ 2.14.0
me.clip
@@ -162,7 +166,7 @@
com.github.PikaMug
LocaleLib
- 3.9
+ 4.1.1
org.black_ixx
diff --git a/src/main/java/me/sat7/dynamicshop/DynaShopAPI.java b/src/main/java/me/sat7/dynamicshop/DynaShopAPI.java
index 1626017..f7393bd 100644
--- a/src/main/java/me/sat7/dynamicshop/DynaShopAPI.java
+++ b/src/main/java/me/sat7/dynamicshop/DynaShopAPI.java
@@ -36,7 +36,7 @@ public static boolean IsShopEnable(String shopName)
return shopData.get().getBoolean("Options.enable", true);
}
- // 상점 UI생성 후 열기
+ // 상점 UI생성 후 열기 (建立商店UI後開啟)
public static void openShopGui(Player player, String shopName, int page)
{
if(!IsShopEnable(shopName))
@@ -60,7 +60,7 @@ public static void openShopGui(Player player, String shopName, int page)
}
}
- // 상점 설정 화면
+ // 상점 설정 화면 (商店設定畫面)
public static void openShopSettingGui(Player player, String shopName)
{
ShopSettings uiClass = new ShopSettings();
@@ -68,7 +68,7 @@ public static void openShopSettingGui(Player player, String shopName)
UIManager.Open(player, inventory, uiClass);
}
- // 상점 로테이트 편집기
+ // 상점 로테이트 편집기 (商店輪換編輯器)
public static void OpenRotationEditor(Player player, String shopName)
{
RotationEditor uiClass = new RotationEditor();
@@ -76,7 +76,7 @@ public static void OpenRotationEditor(Player player, String shopName)
UIManager.Open(player, inventory, uiClass);
}
- // 거래화면 생성 및 열기
+ // 거래화면 생성 및 열기 (建立並開啟交易畫面)
public static void openItemTradeGui(Player player, String shopName, String tradeIdx)
{
if(!IsShopEnable(shopName))
@@ -94,7 +94,7 @@ public static void openItemTradeGui(Player player, String shopName, String trade
}
- // 아이탬 파렛트 생성 및 열기
+ // 아이탬 파렛트 생성 및 열기 (建立並開啟物品調色盤)
public static void openItemPalette(Player player, int uiSubType, String shopName, int targetSlot, int page, String search)
{
ItemPalette uiClass = new ItemPalette();
@@ -114,7 +114,7 @@ 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();
@@ -122,7 +122,7 @@ public static void openPageEditor(Player player, String shopName, int page)
UIManager.Open(player, inventory, uiClass);
}
- // 로그뷰어 열기
+ // 로그뷰어 열기 (開啟日誌檢視器)
public static void openLogViewer(Player player, String shopName)
{
LogViewer uiClass = new LogViewer();
@@ -130,7 +130,7 @@ public static void openLogViewer(Player player, String shopName)
UIManager.Open(player, inventory, uiClass);
}
- // 재고 시뮬레이터 열기
+ // 재고 시뮬레이터 열기 (開啟庫存模擬器)
public static void openStockSimulator(Player player, String shopName)
{
StockSimulator uiClass = new StockSimulator();
@@ -138,7 +138,7 @@ public static void openStockSimulator(Player player, String shopName)
UIManager.Open(player, inventory, uiClass);
}
- // 스타트 페이지
+ // 스타트 페이지 (起始頁)
public static void openStartPage(Player player)
{
StartPage uiClass = new StartPage();
@@ -146,7 +146,7 @@ public static void openStartPage(Player player)
UIManager.Open(player, inventory, uiClass);
}
- // 상점 목록창
+ // 상점 목록창 (商店列表視窗)
public static void openShopListUI(Player player, int page, int slotIndex)
{
ShopList uiClass = new ShopList();
@@ -154,7 +154,7 @@ public static void openShopListUI(Player player, int page, int slotIndex)
UIManager.Open(player, inventory, uiClass);
}
- // 컬러 픽커
+ // 컬러 픽커 (顏色選擇器)
public static void openColorPicker(Player player, int slotIndex)
{
ColorPicker uiClass = new ColorPicker();
@@ -162,7 +162,7 @@ public static void openColorPicker(Player player, int slotIndex)
UIManager.Open(player, inventory, uiClass);
}
- // 퀵셀 창
+ // 퀵셀 창 (快速銷售視窗)
public static void openQuickSellGUI(Player player)
{
QuickSell uiClass = new QuickSell();
@@ -170,13 +170,13 @@ public static void openQuickSellGUI(Player player)
UIManager.Open(player, inventory, uiClass);
}
- // 유저 데이터를 다시 만들고 만들어졌는지 확인함.
+ // 유저 데이터를 다시 만들고 만들어졌는지 확인함. (重新建立使用者資料並確認是否已建立)
public static boolean recreateUserData(Player player)
{
return UserUtil.RecreateUserData(player);
}
- // 스타트페이지 셋팅창
+ // 스타트페이지 셋팅창 (起始頁設定視窗)
public static void openStartPageSettingGui(Player player, int slotIndex)
{
StartPageSettings uiClass = new StartPageSettings();
@@ -245,10 +245,10 @@ public static ArrayList getShopItems(@NonNull String shopName)
if (!data.get().contains(s + ".value"))
{
- continue; // 장식용임
+ continue; // 장식용임 (裝飾用)
}
- String itemName = data.get().getString(s + ".mat"); // 메테리얼
+ String itemName = data.get().getString(s + ".mat"); // 메테리얼 (材料)
try
{
Material mat = Material.getMaterial(itemName);
diff --git a/src/main/java/me/sat7/dynamicshop/DynamicShop.java b/src/main/java/me/sat7/dynamicshop/DynamicShop.java
index 86a975b..b7d4913 100644
--- a/src/main/java/me/sat7/dynamicshop/DynamicShop.java
+++ b/src/main/java/me/sat7/dynamicshop/DynamicShop.java
@@ -42,7 +42,7 @@
public final class DynamicShop extends JavaPlugin implements Listener
{
- private static Economy econ = null; // 볼트에 물려있는 이코노미
+ private static Economy econ = null; // 볼트에 물려있는 이코노미 (與Vault掛鉤的經濟系統)
public static Economy getEconomy()
{
return econ;
@@ -203,14 +203,14 @@ private void Init()
RotationUtil.RestartAllRotationTask();
- // 완료
+ // 완료 (完成)
console.sendMessage(Constants.DYNAMIC_SHOP_PREFIX + " Enabled! :)");
CheckUpdate();
InitBstats();
}
- // 볼트 이코노미 초기화
+ // 볼트 이코노미 초기화 (Vault經濟系統初始化)
private void SetupVault()
{
if (getServer().getPluginManager().getPlugin("Vault") == null)
@@ -380,8 +380,8 @@ public void PeriodicRepetitiveTask()
periodicRepetitiveTask.cancel();
}
- // 1000틱 = 50초 = 마인크래프트 1시간
- // 20틱 = 현실시간 1초
+ // 1000틱 = 50초 = 마인크래프트 1시간 (1000 tick = 50秒 = Minecraft 1小時)
+ // 20틱 = 현실시간 1초 (20 tick = 現實時間 1秒)
periodicRepetitiveTask = Bukkit.getScheduler().runTaskTimer(DynamicShop.plugin, this::RepeatAction, 20, 20);
}
@@ -394,7 +394,7 @@ private void RepeatAction()
//String time = sdf.format(System.currentTimeMillis());
//console.sendMessage(time + " / " + repeatTaskCount);
- if (repeatTaskCount == 25) // 25초 = 500틱 = 마인크래프트 30분
+ if (repeatTaskCount == 25) // 25초 = 500틱 = 마인크래프트 30분 (25秒 = 500 tick = Minecraft 30分鐘)
{
ShopUtil.randomChange(new Random());
repeatTaskCount = 0;
@@ -458,12 +458,12 @@ private void hookIntoPlayerPoints()
private void initCommands()
{
- // 명령어 등록 (개별 클레스로 되어있는것들)
+ // 명령어 등록 (개별 클레스로 되어있는것들) (指令註冊(分別在不同的類別中))
getCommand("DynamicShop").setExecutor(new Root());
getCommand("shop").setExecutor(new Optional());
getCommand("sell").setExecutor(new Sell());
- // 자동완성
+ // 자동완성 (自動完成)
getCommand("DynamicShop").setTabCompleter(this);
getCommand("shop").setTabCompleter(this);
getCommand("sell").setTabCompleter(this);
@@ -484,7 +484,7 @@ private void registerEvents()
private void makeFolders()
{
File shopFolder = new File(getDataFolder(), "Shop");
- shopFolder.mkdir(); // new 하고 같은줄에서 바로 하면 폴더 안만들어짐.
+ shopFolder.mkdir(); // new 하고 같은줄에서 바로 하면 폴더 안만들어짐. (如果在new的同一行直接執行,資料夾不會建立)
File rotationFolder = new File(getDataFolder(), "Rotation");
rotationFolder.mkdir();
@@ -498,8 +498,9 @@ private void InitConfig()
UserUtil.Init();
ShopUtil.Reload();
ConfigUtil.Load();
+ DynamicShop.DEBUG_MODE = ConfigUtil.GetDebugMode();
- LangUtil.setupLangFile(ConfigUtil.GetLanguage()); // ConfigUtil.Load() 보다 밑에 있어야함.
+ LangUtil.setupLangFile(ConfigUtil.GetLanguage()); // ConfigUtil.Load() 보다 밑에 있어야함. (必須在 ConfigUtil.Load() 之後)
LayoutUtil.Setup();
StartPage.setupStartPageFile();
@@ -518,7 +519,7 @@ private void setupSignFile()
ccSign.save();
}
- // 명령어 자동완성
+ // 명령어 자동완성 (指令自動完成)
@Override
public List onTabComplete(CommandSender sender, Command cmd, String commandLabel, String[] args)
{
diff --git a/src/main/java/me/sat7/dynamicshop/commands/CMDManager.java b/src/main/java/me/sat7/dynamicshop/commands/CMDManager.java
index ece64aa..3dbe7c6 100644
--- a/src/main/java/me/sat7/dynamicshop/commands/CMDManager.java
+++ b/src/main/java/me/sat7/dynamicshop/commands/CMDManager.java
@@ -123,6 +123,8 @@ public static void RunCMD(String key, String[] args, CommandSender sender)
if(CMDHashMap.containsKey(key))
{
CMDHashMap.get(key).RunCMD(args, sender);
+ } else {
+ Help.showHelp("main", sender, args);
}
}
}
diff --git a/src/main/java/me/sat7/dynamicshop/commands/DeleteUser.java b/src/main/java/me/sat7/dynamicshop/commands/DeleteUser.java
index cf1cb90..3e82f71 100644
--- a/src/main/java/me/sat7/dynamicshop/commands/DeleteUser.java
+++ b/src/main/java/me/sat7/dynamicshop/commands/DeleteUser.java
@@ -62,7 +62,7 @@ public void RunCMD(String[] args, CommandSender sender)
if (lastJoinLong == 0)
continue;
- // 마지막으로 접속한지 입력한 일보다 더 지남.
+ // 마지막으로 접속한지 입력한 일보다 더 지남. (最後上線時間已超過輸入的天數)
long dayPassed = currentTime - lastJoinLong;
if (dayPassed > target)
{
diff --git a/src/main/java/me/sat7/dynamicshop/commands/Help.java b/src/main/java/me/sat7/dynamicshop/commands/Help.java
index 30cbbbf..2ab5291 100644
--- a/src/main/java/me/sat7/dynamicshop/commands/Help.java
+++ b/src/main/java/me/sat7/dynamicshop/commands/Help.java
@@ -3,6 +3,7 @@
import me.sat7.dynamicshop.commands.shop.Command;
import me.sat7.dynamicshop.utilities.UserUtil;
import org.bukkit.Material;
+import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
@@ -22,7 +23,7 @@ private Help()
}
- // 명령어 도움말 표시
+ // 명령어 도움말 표시 (顯示指令說明)
public static void showHelp(String helpcode, Player player, String[] args)
{
if (!UserUtil.ccUser.get().getBoolean(player.getUniqueId() + ".cmdHelp"))
@@ -103,7 +104,9 @@ public static void showHelp(String helpcode, Player player, String[] args)
{
try
{
- ItemStack tempItem = new ItemStack(Material.getMaterial(args[3]));
+ Material material = Material.getMaterial(args[3]);
+ if(material == null) return;
+ ItemStack tempItem = new ItemStack(material);
int idx = ShopUtil.findItemFromShop(args[1], tempItem);
if (idx != -1)
@@ -124,7 +127,9 @@ public static void showHelp(String helpcode, Player player, String[] args)
{
try
{
- ItemStack tempItem = new ItemStack(Material.getMaterial(args[3].substring(args[3].indexOf("/") + 1)));
+ Material material = Material.getMaterial(args[3].substring(args[3].indexOf("/") + 1));
+ if(material == null) return;
+ ItemStack tempItem = new ItemStack(material);
int idx = ShopUtil.findItemFromShop(args[1], tempItem);
if (idx != -1)
@@ -222,5 +227,193 @@ else if (helpcode.equals("background"))
{
CMDManager.background.SendHelpMessage(player);
}
+ else
+ {
+ CMDManager.commandHelp.SendHelpMessage(player);
+ }
+ }
+
+ public static void showHelp(String helpcode, CommandSender sender, String[] args) {
+ // 控制台不需要权限和用户数据检查
+
+ switch (helpcode) {
+ case "main":
+ sender.sendMessage(DynamicShop.dsPrefix(sender) + t(sender, "HELP.TITLE").replace("{command}", "main"));
+ sender.sendMessage(" - shop: " + t(sender, "HELP.SHOP"));
+ sender.sendMessage(" - qsell: " + t(sender, "HELP.QSELL"));
+ sender.sendMessage(" - cmdHelp: " + t(sender, "HELP.CMD"));
+ sender.sendMessage("§e - createshop: " + t(sender, "HELP.CREATE_SHOP"));
+ sender.sendMessage("§e - deleteshop: " + t(sender, "HELP.DELETE_SHOP"));
+ sender.sendMessage("§e - reload: " + t(sender, "HELP.RELOAD"));
+ sender.sendMessage("");
+ break;
+ case "shop":
+ sender.sendMessage(DynamicShop.dsPrefix(sender) + t(sender, "HELP.TITLE").replace("{command}", "shop"));
+ sender.sendMessage(" - " + t(sender, "HELP.USAGE") + ": /ds shop []");
+ sender.sendMessage(" - " + t(sender, "HELP.USAGE")
+ + ": /ds shop ");
+
+ sender.sendMessage("§e - enable: " + t(sender, "HELP.SHOP_ENABLE"));
+ sender.sendMessage("§e - add: " + t(sender, "HELP.SHOP_ADD_ITEM"));
+ sender.sendMessage("§e - edit: " + t(sender, "HELP.SHOP_EDIT"));
+ sender.sendMessage("§e - editall: " + t(sender, "HELP.EDIT_ALL"));
+ sender.sendMessage("§e - setToRecAll: " + t(sender, "HELP.SET_TO_REC_ALL"));
+ sender.sendMessage("");
+ break;
+ case "open_shop":
+ sender.sendMessage(DynamicShop.dsPrefix(sender) + t(sender, "HELP.TITLE").replace("{command}", "open_shop"));
+ sender.sendMessage(" - " + t(sender, "HELP.USAGE") + ": /ds openshop [player]");
+ sender.sendMessage("");
+ break;
+ case "enable":
+ sender.sendMessage(DynamicShop.dsPrefix(sender) + t(sender, "HELP.TITLE").replace("{command}", "enable"));
+ sender.sendMessage(" - " + t(sender, "HELP.USAGE") + ": /ds shop enable ");
+ sender.sendMessage("");
+ break;
+ case "add":
+ sender.sendMessage(DynamicShop.dsPrefix(sender) + t(sender, "HELP.TITLE").replace("{command}", "add"));
+ sender.sendMessage(" - " + t(sender, "HELP.USAGE") + ": /ds shop add [display_name]");
+ sender.sendMessage("");
+ break;
+ case "edit":
+ sender.sendMessage(DynamicShop.dsPrefix(sender) + t(sender, "HELP.TITLE").replace("{command}", "edit"));
+ sender.sendMessage(" - " + t(sender, "HELP.USAGE") + ": /ds shop edit ");
+ sender.sendMessage("");
+ break;
+ case "edit_all":
+ sender.sendMessage(DynamicShop.dsPrefix(sender) + t(sender, "HELP.TITLE").replace("{command}", "edit_all"));
+ sender.sendMessage(" - " + t(sender, "HELP.USAGE") + ": /ds shop editall ");
+ sender.sendMessage("");
+ break;
+ case "set_to_rec_all":
+ sender.sendMessage(DynamicShop.dsPrefix(sender) + t(sender, "HELP.TITLE").replace("{command}", "set_to_rec_all"));
+ sender.sendMessage(" - " + t(sender, "HELP.USAGE") + ": /ds shop setToRecAll");
+ sender.sendMessage("");
+ break;
+ case "cmd_help":
+ sender.sendMessage(DynamicShop.dsPrefix(sender) + t(sender, "HELP.TITLE").replace("{command}", "cmdHelp"));
+ sender.sendMessage(" - " + t(sender, "HELP.USAGE") + ": /ds cmdHelp ");
+ sender.sendMessage(" - " + t(sender, "HELP.CMD"));
+ sender.sendMessage("");
+ break;
+ case "iteminfo":
+ sender.sendMessage(DynamicShop.dsPrefix(sender) + t(sender, "HELP.TITLE").replace("{command}", "iteminfo"));
+ sender.sendMessage(" - " + t(sender, "HELP.USAGE") + ": /ds iteminfo");
+ sender.sendMessage("");
+ break;
+ case "create_shop":
+ sender.sendMessage(DynamicShop.dsPrefix(sender) + t(sender, "HELP.TITLE").replace("{command}", "createshop"));
+ sender.sendMessage(" - " + t(sender, "HELP.USAGE") + ": /ds createshop ");
+ sender.sendMessage("");
+ break;
+ case "delete_shop":
+ sender.sendMessage(DynamicShop.dsPrefix(sender) + t(sender, "HELP.TITLE").replace("{command}", "deleteshop"));
+ sender.sendMessage(" - " + t(sender, "HELP.USAGE") + ": /ds deleteshop ");
+ sender.sendMessage("");
+ break;
+ case "merge_shop":
+ sender.sendMessage(DynamicShop.dsPrefix(sender) + t(sender, "HELP.TITLE").replace("{command}", "mergeshop"));
+ sender.sendMessage(" - " + t(sender, "HELP.USAGE") + ": /ds mergeshop ");
+ sender.sendMessage("");
+ break;
+ case "rename_shop":
+ sender.sendMessage(DynamicShop.dsPrefix(sender) + t(sender, "HELP.TITLE").replace("{command}", "renameshop"));
+ sender.sendMessage(" - " + t(sender, "HELP.USAGE") + ": /ds renameshop ");
+ sender.sendMessage("");
+ break;
+ case "copy_shop":
+ sender.sendMessage(DynamicShop.dsPrefix(sender) + t(sender, "HELP.TITLE").replace("{command}", "copyshop"));
+ sender.sendMessage(" - " + t(sender, "HELP.USAGE") + ": /ds copyshop ");
+ sender.sendMessage("");
+ break;
+ case "permission":
+ sender.sendMessage(DynamicShop.dsPrefix(sender) + t(sender, "HELP.TITLE").replace("{command}", "permission"));
+ sender.sendMessage(" - " + t(sender, "HELP.USAGE") + ": /ds shop permission ");
+ sender.sendMessage("");
+ break;
+ case "max_page":
+ sender.sendMessage(DynamicShop.dsPrefix(sender) + t(sender, "HELP.TITLE").replace("{command}", "maxpage"));
+ sender.sendMessage(" - " + t(sender, "HELP.USAGE") + ": /ds shop maxpage ");
+ sender.sendMessage("");
+ break;
+ case "currency":
+ sender.sendMessage(DynamicShop.dsPrefix(sender) + t(sender, "HELP.TITLE").replace("{command}", "currency"));
+ sender.sendMessage(" - " + t(sender, "HELP.USAGE") + ": /ds shop currency ");
+ sender.sendMessage("");
+ break;
+ case "flag":
+ sender.sendMessage(DynamicShop.dsPrefix(sender) + t(sender, "HELP.TITLE").replace("{command}", "flag"));
+ sender.sendMessage(" - " + t(sender, "HELP.USAGE") + ": /ds shop flag ");
+ sender.sendMessage("");
+ break;
+ case "position":
+ sender.sendMessage(DynamicShop.dsPrefix(sender) + t(sender, "HELP.TITLE").replace("{command}", "position"));
+ sender.sendMessage(" - " + t(sender, "HELP.USAGE") + ": /ds shop position");
+ sender.sendMessage("");
+ break;
+ case "shophours":
+ sender.sendMessage(DynamicShop.dsPrefix(sender) + t(sender, "HELP.TITLE").replace("{command}", "shophours"));
+ sender.sendMessage(" - " + t(sender, "HELP.USAGE") + ": /ds shop shophours ");
+ sender.sendMessage("");
+ break;
+ case "fluctuation":
+ sender.sendMessage(DynamicShop.dsPrefix(sender) + t(sender, "HELP.TITLE").replace("{command}", "fluctuation"));
+ sender.sendMessage(" - " + t(sender, "HELP.USAGE") + ": /ds shop fluctuation ");
+ sender.sendMessage("");
+ break;
+ case "stock_stabilizing":
+ sender.sendMessage(DynamicShop.dsPrefix(sender) + t(sender, "HELP.TITLE").replace("{command}", "stockStabilizing"));
+ sender.sendMessage(" - " + t(sender, "HELP.USAGE") + ": /ds shop stockStabilizing ");
+ sender.sendMessage("");
+ break;
+ case "command":
+ sender.sendMessage(DynamicShop.dsPrefix(sender) + t(sender, "HELP.TITLE").replace("{command}", "command"));
+ sender.sendMessage(" - " + t(sender, "HELP.USAGE") + ": /ds shop command add ");
+ sender.sendMessage(" - " + t(sender, "HELP.USAGE") + ": /ds shop command delete ");
+ sender.sendMessage(" - " + t(sender, "HELP.USAGE") + ": /ds shop command active ");
+ sender.sendMessage("");
+ Command.PrintCurrentState(sender, Shop.GetShopName(args), true, true);
+ break;
+ case "account":
+ sender.sendMessage(DynamicShop.dsPrefix(sender) + t(sender, "HELP.TITLE").replace("{command}", "account"));
+ sender.sendMessage(" - " + t(sender, "HELP.USAGE") + ": /ds shop account [value]");
+ sender.sendMessage("");
+ break;
+ case "set_tax":
+ sender.sendMessage(DynamicShop.dsPrefix(sender) + t(sender, "HELP.TITLE").replace("{command}", "settax"));
+ sender.sendMessage(" - " + t(sender, "HELP.USAGE") + ": /ds settax ");
+ sender.sendMessage("");
+ break;
+ case "set_default_shop":
+ sender.sendMessage(DynamicShop.dsPrefix(sender) + t(sender, "HELP.TITLE").replace("{command}", "setdefaultshop"));
+ sender.sendMessage(" - " + t(sender, "HELP.USAGE") + ": /ds setdefaultshop ");
+ sender.sendMessage("");
+ break;
+ case "delete_old_user":
+ sender.sendMessage(DynamicShop.dsPrefix(sender) + t(sender, "HELP.TITLE").replace("{command}", "deleteolduser"));
+ sender.sendMessage(" - " + t(sender, "HELP.USAGE") + ": /ds deleteolduser ");
+ sender.sendMessage("");
+ break;
+ case "sellbuy":
+ sender.sendMessage(DynamicShop.dsPrefix(sender) + t(sender, "HELP.TITLE").replace("{command}", "sellbuy"));
+ sender.sendMessage(" - " + t(sender, "HELP.USAGE") + ": /ds shop sellbuy ");
+ sender.sendMessage("");
+ break;
+ case "log":
+ sender.sendMessage(DynamicShop.dsPrefix(sender) + t(sender, "HELP.TITLE").replace("{command}", "log"));
+ sender.sendMessage(" - " + t(sender, "HELP.USAGE") + ": /ds shop log ");
+ sender.sendMessage("");
+ break;
+ case "resetTradingVolume":
+ sender.sendMessage(DynamicShop.dsPrefix(sender) + t(sender, "HELP.TITLE").replace("{command}", "resetTradingVolume"));
+ sender.sendMessage(" - " + t(sender, "HELP.USAGE") + ": /ds shop resetTradingVolume");
+ sender.sendMessage("");
+ break;
+ case "background":
+ sender.sendMessage(DynamicShop.dsPrefix(sender) + t(sender, "HELP.TITLE").replace("{command}", "background"));
+ sender.sendMessage(" - " + t(sender, "HELP.USAGE") + ": /ds shop background ");
+ sender.sendMessage("");
+ break;
+ }
}
}
diff --git a/src/main/java/me/sat7/dynamicshop/commands/Reload.java b/src/main/java/me/sat7/dynamicshop/commands/Reload.java
index 0e35da5..e862cca 100644
--- a/src/main/java/me/sat7/dynamicshop/commands/Reload.java
+++ b/src/main/java/me/sat7/dynamicshop/commands/Reload.java
@@ -65,7 +65,7 @@ public void RunCMD(String[] args, CommandSender sender)
QuickSell.quickSellGui.reload();
QuickSell.SetupQuickSellGUIFile();
- LangUtil.setupLangFile(ConfigUtil.GetLanguage()); // ConfigUtil.Load() 보다 밑에 있어야함.
+ LangUtil.setupLangFile(ConfigUtil.GetLanguage()); // ConfigUtil.Load() 보다 밑에 있어야함. (必須在 ConfigUtil.Load() 之後)
RotationUtil.Reload();
diff --git a/src/main/java/me/sat7/dynamicshop/commands/Root.java b/src/main/java/me/sat7/dynamicshop/commands/Root.java
index a7c8eb1..e7f6947 100644
--- a/src/main/java/me/sat7/dynamicshop/commands/Root.java
+++ b/src/main/java/me/sat7/dynamicshop/commands/Root.java
@@ -18,6 +18,39 @@ public class Root implements CommandExecutor
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args)
{
+ if (args.length > 0)
+ {
+ if (args[0].equalsIgnoreCase("dbgToggle"))
+ {
+ if (sender instanceof Player && !sender.hasPermission(Constants.P_ADMIN_SHOP_EDIT)) {
+ sender.sendMessage(DynamicShop.dsPrefix((Player)sender) + t((Player)sender, "ERR.NO_PERMISSION"));
+ return true;
+ }
+ DynamicShop.DEBUG_MODE = !DynamicShop.DEBUG_MODE;
+ sender.sendMessage(Constants.DYNAMIC_SHOP_PREFIX + "DebugMode " + DynamicShop.DEBUG_MODE);
+ return true;
+ }
+ else if (args[0].equalsIgnoreCase("dbgLog"))
+ {
+ if (sender instanceof Player && !sender.hasPermission(Constants.P_ADMIN_SHOP_EDIT)) {
+ sender.sendMessage(DynamicShop.dsPrefix((Player)sender) + t((Player)sender, "ERR.NO_PERMISSION"));
+ return true;
+ }
+ DynamicShop.DEBUG_LOG_ENABLED = !DynamicShop.DEBUG_LOG_ENABLED;
+ sender.sendMessage(Constants.DYNAMIC_SHOP_PREFIX + "DebugLog " + DynamicShop.DEBUG_LOG_ENABLED);
+ return true;
+ }
+ else if (args[0].equalsIgnoreCase("dbg") && DynamicShop.DEBUG_MODE)
+ {
+ if (sender instanceof Player && !sender.hasPermission(Constants.P_ADMIN_SHOP_EDIT)) {
+ sender.sendMessage(DynamicShop.dsPrefix((Player)sender) + t((Player)sender, "ERR.NO_PERMISSION"));
+ return true;
+ }
+ DynamicShop.DebugLog();
+ return true;
+ }
+ }
+
boolean senderIsPlayer = (sender instanceof Player);
if(senderIsPlayer)
{
@@ -35,14 +68,14 @@ public boolean onCommand(CommandSender sender, Command command, String label, St
return true;
}
- // user.yml 에 player가 없으면 재생성 시도. 실패시 리턴.
+ // user.yml 에 player가 없으면 재생성 시도. 실패시 리턴. (如果 player 不在 user.yml 中,請嘗試重新建立。如果失敗,則返回。)
if (!DynaShopAPI.recreateUserData(player))
{
player.sendMessage(DynamicShop.dsPrefix(player) + t(player, "ERR.NO_USER_ID"));
return true;
}
- // 스타트페이지
+ // 스타트페이지 (起始頁)
if (args.length == 0)
{
DynaShopAPI.openStartPage(player);
@@ -72,29 +105,12 @@ else if (args[0].equalsIgnoreCase("dummyUUID") && DynamicShop.DEBUG_MODE && play
return true;
}
}
- // 콘솔에서 실행했음.
+ // 콘솔에서 실행했음. (從控制台執行)
else
{
if (args.length > 0)
{
- if (args[0].equalsIgnoreCase("dbgToggle"))
- {
- DynamicShop.DEBUG_MODE = !DynamicShop.DEBUG_MODE;
- sender.sendMessage(Constants.DYNAMIC_SHOP_PREFIX + "DebugMode " + DynamicShop.DEBUG_MODE);
- return true;
- }
- else if (args[0].equalsIgnoreCase("dbgLog"))
- {
- DynamicShop.DEBUG_LOG_ENABLED = !DynamicShop.DEBUG_LOG_ENABLED;
- sender.sendMessage(Constants.DYNAMIC_SHOP_PREFIX + "DebugLog " + DynamicShop.DEBUG_LOG_ENABLED);
- return true;
- }
- else if (args[0].equalsIgnoreCase("dbg") && DynamicShop.DEBUG_MODE)
- {
- DynamicShop.DebugLog();
- return true;
- }
- else if (args[0].equalsIgnoreCase("shop"))
+ if (args[0].equalsIgnoreCase("shop"))
{
Shop.shopCommand(args, sender);
return true;
diff --git a/src/main/java/me/sat7/dynamicshop/commands/Shop.java b/src/main/java/me/sat7/dynamicshop/commands/Shop.java
index 6575874..80fc68c 100644
--- a/src/main/java/me/sat7/dynamicshop/commands/Shop.java
+++ b/src/main/java/me/sat7/dynamicshop/commands/Shop.java
@@ -53,7 +53,7 @@ static void shopCommand(String[] args, CommandSender sender)
String shopName = GetShopName(args);
- // 그런 이름을 가진 상점이 있는지 확인
+ // 그런 이름을 가진 상점이 있는지 확인 (檢查是否存在具有該名稱的商店)
if (player != null && !ShopUtil.shopConfigFiles.containsKey(shopName))
{
player.sendMessage(DynamicShop.dsPrefix(player) + t(player, "ERR.SHOP_NOT_FOUND"));
@@ -62,10 +62,10 @@ static void shopCommand(String[] args, CommandSender sender)
CustomConfig shopData = ShopUtil.shopConfigFiles.get(shopName);
- // 상점 UI 열기
+ // 상점 UI 열기 (開啟商店UI)
if (player != null && args.length <= 2)
{
- //권한 확인
+ //권한 확인 (權限確認)
String s = shopData.get().getString("Options.permission");
if (s != null && s.length() > 0)
{
@@ -76,7 +76,7 @@ static void shopCommand(String[] args, CommandSender sender)
}
}
- // 플래그 확인
+ // 플래그 확인 (旗標確認)
ConfigurationSection shopConf = shopData.get().getConfigurationSection("Options");
if (shopConf.contains("flag.signshop"))
{
@@ -123,7 +123,7 @@ static void shopCommand(String[] args, CommandSender sender)
DynaShopAPI.openShopGui(player, shopName, 1);
}
- // 그외 각종 상점관련 명령어
+ // 그외 각종 상점관련 명령어 (其他各種商店相關指令)
else if (args.length >= 3)
{
CMDManager.RunCMD(args[2].toLowerCase(), args, sender);
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 3fa6d80..3dfdff7 100644
--- a/src/main/java/me/sat7/dynamicshop/commands/shop/Account.java
+++ b/src/main/java/me/sat7/dynamicshop/commands/shop/Account.java
@@ -72,19 +72,19 @@ public void RunCMD(String[] args, CommandSender sender)
}
break;
case "linkto":
- // 그런 상점(타깃) 없음
+ // 그런 상점(타깃) 없음 (沒有這樣的商店(目標))
if (!ShopUtil.shopConfigFiles.containsKey(args[4]))
{
sender.sendMessage(DynamicShop.dsPrefix(sender) + t(sender, "ERR.SHOP_NOT_FOUND"));
return;
}
- // 타깃 상점이 연동계좌임
+ // 타깃 상점이 연동계좌임 (目標商店是連結帳戶)
if (targetShopData.get().contains("Options.Balance"))
{
try
{
- // temp 를 직접 사용하지는 않지만 의도적으로 넣은 코드임. 숫자가 아니면 건너뛰기 위함.
+ // temp 를 직접 사용하지는 않지만 의도적으로 넣은 코드임. 숫자가 아니면 건너뛰기 위함. (雖然沒有直接使用temp,但這是刻意加入的程式碼。目的是為了跳過非數字的情況。)
Double temp = Double.parseDouble(targetShopData.get().getString("Options.Balance"));
} catch (Exception e)
{
@@ -93,7 +93,7 @@ public void RunCMD(String[] args, CommandSender sender)
}
}
- // 출발상점을 타깃으로 하는 상점이 있음
+ // 출발상점을 타깃으로 하는 상점이 있음 (有以出發商店為目標的商店)
for (CustomConfig tempShopData : ShopUtil.shopConfigFiles.values())
{
String temp = tempShopData.get().getString("Options.Balance");
@@ -110,14 +110,14 @@ public void RunCMD(String[] args, CommandSender sender)
}
}
- // 출발 상점과 도착 상점이 같음
+ // 출발 상점과 도착 상점이 같음 (出發商店和到達商店相同)
if (args[1].equals(args[4]))
{
sender.sendMessage(DynamicShop.dsPrefix(sender) + t(sender, "ERR.WRONG_USAGE"));
return;
}
- // 출발 상점과 도착 상점의 통화 유형이 다름
+ // 출발 상점과 도착 상점의 통화 유형이 다름 (出發商店和到達商店的貨幣類型不同)
if (!ShopUtil.GetCurrency(shopData).equals(ShopUtil.GetCurrency(targetShopData)))
{
sender.sendMessage(DynamicShop.dsPrefix(sender) + t(sender, "ERR.SHOP_DIFF_CURRENCY"));
@@ -129,7 +129,7 @@ public void RunCMD(String[] args, CommandSender sender)
sender.sendMessage(DynamicShop.dsPrefix(sender) + t(sender, "MESSAGE.CHANGES_APPLIED") + args[4]);
break;
case "transfer":
- //[4] 대상 [5] 금액
+ //[4] 대상 [5] 금액 ([4] 對象 [5] 金額)
if (args.length < 6)
{
sender.sendMessage(DynamicShop.dsPrefix(sender) + t(sender, "ERR.WRONG_USAGE"));
@@ -137,7 +137,7 @@ public void RunCMD(String[] args, CommandSender sender)
}
double amount;
- // 마지막 인자가 숫자가 아님
+ // 마지막 인자가 숫자가 아님 (最後一個參數不是數字)
try
{
amount = Double.parseDouble(args[5]);
@@ -147,14 +147,14 @@ public void RunCMD(String[] args, CommandSender sender)
return;
}
- // 출발 상점이 무한계좌임
+ // 출발 상점이 무한계좌임 (出發商店是無限帳戶)
if (!shopData.get().contains("Options.Balance"))
{
sender.sendMessage(DynamicShop.dsPrefix(sender) + t(sender, "ERR.SHOP_HAS_INF_BAL").replace("{shop}", args[1]));
return;
}
- // 출발 상점에 돈이 부족
+ // 출발 상점에 돈이 부족 (出發商店金額不足)
if (ShopUtil.getShopBalance(args[1]) < amount)
{
if (ShopUtil.GetCurrency(shopData).equalsIgnoreCase(Constants.S_JOBPOINT))
@@ -180,31 +180,31 @@ else if (ShopUtil.GetCurrency(shopData).equalsIgnoreCase(Constants.S_EXP))
return;
}
- // 다른 상점으로 송금
+ // 다른 상점으로 송금 (匯款到其他商店)
if (ShopUtil.shopConfigFiles.containsKey(args[4]))
{
- // 도착 상점이 무한계좌임
+ // 도착 상점이 무한계좌임 (到達商店是無限帳戶)
if (!targetShopData.get().contains("Options.Balance"))
{
sender.sendMessage(DynamicShop.dsPrefix(sender) + t(sender, "ERR.SHOP_HAS_INF_BAL").replace("{shop}", args[4]));
return;
}
- // 출발 상점과 도착 상점이 같음
+ // 출발 상점과 도착 상점이 같음 (出發商店和到達商店相同)
if (args[1].equals(args[4]))
{
sender.sendMessage(DynamicShop.dsPrefix(sender) + t(sender, "ERR.WRONG_USAGE"));
return;
}
- // 출발 상점과 도착 상점의 통화 유형이 다름
+ // 출발 상점과 도착 상점의 통화 유형이 다름 (出發商店和到達商店的貨幣類型不同)
if (!ShopUtil.GetCurrency(shopData).equals(ShopUtil.GetCurrency(targetShopData)))
{
sender.sendMessage(DynamicShop.dsPrefix(sender) + t(sender, "ERR.SHOP_DIFF_CURRENCY"));
return;
}
- // 송금.
+ // 송금. (匯款.)
ShopUtil.addShopBalance(args[1], amount * -1);
ShopUtil.addShopBalance(args[4], amount);
@@ -213,7 +213,7 @@ else if (ShopUtil.GetCurrency(shopData).equalsIgnoreCase(Constants.S_EXP))
sender.sendMessage(DynamicShop.dsPrefix(sender) + t(sender, "MESSAGE.TRANSFER_SUCCESS"));
}
- // 플레이어에게 송금
+ // 플레이어에게 송금 (匯款給玩家)
else
{
try
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 2a96f3b..fb63221 100644
--- a/src/main/java/me/sat7/dynamicshop/commands/shop/Add.java
+++ b/src/main/java/me/sat7/dynamicshop/commands/shop/Add.java
@@ -69,7 +69,7 @@ public void RunCMD(String[] args, CommandSender sender)
median = Integer.parseInt(args[7]);
stock = Integer.parseInt(args[8]);
- // 유효성 검사
+ // 유효성 검사 (有效性檢查)
if (valueMax > 0 && valueMin > 0 && valueMin >= valueMax)
{
sender.sendMessage(DynamicShop.dsPrefix(sender) + t(sender, "ERR.MAX_LOWER_THAN_MIN"));
@@ -98,14 +98,14 @@ public void RunCMD(String[] args, CommandSender sender)
return;
}
- // 금지품목
+ // 금지품목 (禁止品項)
if (Material.getMaterial(args[3]) == Material.AIR)
{
sender.sendMessage(DynamicShop.dsPrefix(sender) + t(sender, "ERR.ITEM_FORBIDDEN"));
return;
}
- // 상점에서 같은 아이탬 찾기
+ // 상점에서 같은 아이탬 찾기 (在商店中尋找相同的物品)
ItemStack itemStack;
try
{
@@ -119,20 +119,20 @@ public void RunCMD(String[] args, CommandSender sender)
int idx = ShopUtil.findItemFromShop(shopName, itemStack);
DSItem temp = new DSItem(itemStack, buyValue, buyValue, valueMin, valueMax, median, stock);
- // 상점에 새 아이탬 추가
+ // 상점에 새 아이탬 추가 (向商店新增物品)
if (idx == -1)
{
idx = ShopUtil.findEmptyShopSlot(shopName, 1, true);
if (idx == -1)
{
sender.sendMessage(DynamicShop.dsPrefix(sender) + t(sender, "ERR.NO_EMPTY_SLOT"));
- } else if (ShopUtil.addItemToShop(shopName, idx, temp)) // 아이탬 추가
+ } else if (ShopUtil.addItemToShop(shopName, idx, temp)) // 아이탬 추가 (新增物品)
{
sender.sendMessage(DynamicShop.dsPrefix(sender) + t(sender, "MESSAGE.ITEM_ADDED"));
ItemsUtil.sendItemInfo(sender, shopName, idx, "HELP.ITEM_INFO");
}
}
- // 기존 아이탬 수정
+ // 기존 아이탬 수정 (修改現有物品)
else
{
ShopUtil.editShopItem(shopName, idx, temp);
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 f03d423..019d50c 100644
--- a/src/main/java/me/sat7/dynamicshop/commands/shop/AddHand.java
+++ b/src/main/java/me/sat7/dynamicshop/commands/shop/AddHand.java
@@ -63,7 +63,7 @@ public void RunCMD(String[] args, CommandSender sender)
median = Integer.parseInt(args[6]);
stock = Integer.parseInt(args[7]);
- // 유효성 검사
+ // 유효성 검사 (有效性檢查)
if (valueMax > 0 && valueMin > 0 && valueMin >= valueMax)
{
player.sendMessage(DynamicShop.dsPrefix(player) + t(player, "ERR.MAX_LOWER_THAN_MIN"));
@@ -92,14 +92,14 @@ public void RunCMD(String[] args, CommandSender sender)
return;
}
- // 손에 뭔가 들고있는지 확인
+ // 손에 뭔가 들고있는지 확인 (檢查手上是否有物品)
if (player.getInventory().getItemInMainHand() == null || player.getInventory().getItemInMainHand().getType() == Material.AIR)
{
player.sendMessage(DynamicShop.dsPrefix(player) + t(player, "ERR.HAND_EMPTY"));
return;
}
- // 금지품목
+ // 금지품목 (禁止品項)
if (Material.getMaterial(player.getInventory().getItemInMainHand().getType().toString()) == Material.AIR)
{
player.sendMessage(DynamicShop.dsPrefix(player) + t(player, "ERR.ITEM_FORBIDDEN"));
@@ -108,22 +108,22 @@ public void RunCMD(String[] args, CommandSender sender)
DSItem temp = new DSItem(player.getInventory().getItemInMainHand(), buyValue, buyValue, valueMin, valueMax, median, stock);
- // 상점에서 같은 아이탬 찾기
+ // 상점에서 같은 아이탬 찾기 (在商店中尋找相同的物品)
int idx = ShopUtil.findItemFromShop(shopName, player.getInventory().getItemInMainHand());
- // 상점에 새 아이탬 추가
+ // 상점에 새 아이탬 추가 (向商店新增物品)
if (idx == -1)
{
idx = ShopUtil.findEmptyShopSlot(shopName, 1, true);
if (idx == -1)
{
player.sendMessage(DynamicShop.dsPrefix(player) + t(player, "ERR.NO_EMPTY_SLOT"));
- } else if (ShopUtil.addItemToShop(shopName, idx, temp)) // 아이탬 추가
+ } else if (ShopUtil.addItemToShop(shopName, idx, temp)) // 아이탬 추가 (新增物品)
{
player.sendMessage(DynamicShop.dsPrefix(player) + t(player, "MESSAGE.ITEM_ADDED"));
ItemsUtil.sendItemInfo(player, shopName, idx, "HELP.ITEM_INFO");
}
}
- // 기존 아이탬 수정
+ // 기존 아이탬 수정 (修改現有物品)
else
{
ShopUtil.editShopItem(shopName, idx, temp);
diff --git a/src/main/java/me/sat7/dynamicshop/commands/shop/Edit.java b/src/main/java/me/sat7/dynamicshop/commands/shop/Edit.java
index 2effd81..bba13d1 100644
--- a/src/main/java/me/sat7/dynamicshop/commands/shop/Edit.java
+++ b/src/main/java/me/sat7/dynamicshop/commands/shop/Edit.java
@@ -66,7 +66,7 @@ public void RunCMD(String[] args, CommandSender sender)
}
buyValue = Double.parseDouble(args[4]);
- // 삭제
+ // 삭제 (刪除)
if (buyValue <= 0)
{
ShopUtil.removeItemFromShop(shopName, idx);
@@ -91,7 +91,7 @@ public void RunCMD(String[] args, CommandSender sender)
else
maxStock = shopData.get().getInt(idx + ".maxStock", -1);
- // 유효성 검사
+ // 유효성 검사 (有效性檢查)
if (valueMax > 0 && valueMin > 0 && valueMin >= valueMax)
{
sender.sendMessage(DynamicShop.dsPrefix(sender) + t(sender, "ERR.MAX_LOWER_THAN_MIN"));
@@ -115,7 +115,7 @@ public void RunCMD(String[] args, CommandSender sender)
return;
}
- // 수정
+ // 수정 (修改)
int discount = shopData.get().getInt(idx + ".discount");
int sellLimit = shopData.get().getInt(idx + ".tradeLimitPerPlayer.sell");
int buyLimit = shopData.get().getInt(idx + ".tradeLimitPerPlayer.buy");
diff --git a/src/main/java/me/sat7/dynamicshop/commands/shop/EditAll.java b/src/main/java/me/sat7/dynamicshop/commands/shop/EditAll.java
index 838b5e5..b6fd323 100644
--- a/src/main/java/me/sat7/dynamicshop/commands/shop/EditAll.java
+++ b/src/main/java/me/sat7/dynamicshop/commands/shop/EditAll.java
@@ -85,13 +85,13 @@ public void RunCMD(String[] args, CommandSender sender)
return;
}
- // 수정
+ // 수정 (修改)
for (String s : shopData.get().getKeys(false))
{
try
{
- @SuppressWarnings("unused") int i = Integer.parseInt(s); // 의도적으로 넣은 코드임. 숫자가 아니면 건너뛰기 위함.
- if (!shopData.get().contains(s + ".value")) continue; //장식용임
+ @SuppressWarnings("unused") int i = Integer.parseInt(s); // 의도적으로 넣은 코드임. 숫자가 아니면 건너뛰기 위함. (這是刻意加入的程式碼。目的是為了跳過非數字的情況。)
+ if (!shopData.get().contains(s + ".value")) continue; //장식용임 (裝飾用)
}
catch (Exception e)
{
diff --git a/src/main/java/me/sat7/dynamicshop/commands/shop/SellBuy.java b/src/main/java/me/sat7/dynamicshop/commands/shop/SellBuy.java
index 1a22b5f..8290de4 100644
--- a/src/main/java/me/sat7/dynamicshop/commands/shop/SellBuy.java
+++ b/src/main/java/me/sat7/dynamicshop/commands/shop/SellBuy.java
@@ -54,9 +54,9 @@ public void RunCMD(String[] args, CommandSender sender)
{
try
{
- // i를 직접 사용하지는 않지만 의도적으로 넣은 코드임.
+ // i를 직접 사용하지는 않지만 의도적으로 넣은 코드임. (雖然沒有直接使用i,但這是刻意加入的程式碼。)
int i = Integer.parseInt(s);
- if (!shopData.get().contains(s + ".value")) continue; //장식용임
+ if (!shopData.get().contains(s + ".value")) continue; //장식용임 (裝飾用)
} catch (Exception e)
{
continue;
diff --git a/src/main/java/me/sat7/dynamicshop/constants/Constants.java b/src/main/java/me/sat7/dynamicshop/constants/Constants.java
index 8e209ef..9546cf5 100644
--- a/src/main/java/me/sat7/dynamicshop/constants/Constants.java
+++ b/src/main/java/me/sat7/dynamicshop/constants/Constants.java
@@ -25,9 +25,9 @@ public final class Constants
public static final String P_ADMIN_ITEM_INFO = "dshop.admin.iteminfo";
// Permission_User
- public static final String P_USE = "dshop.use"; // 이 권한은 기본적으로 지급됨
- public static final String P_SELL = "dshop.sell"; // 이 권한은 기본적으로 지급됨
- public static final String P_USE_QSELL = "dshop.use.qsell"; // 이 권한은 기본적으로 지급됨
+ public static final String P_USE = "dshop.use"; // 이 권한은 기본적으로 지급됨 (此權限預設授予)
+ public static final String P_SELL = "dshop.sell"; // 이 권한은 기본적으로 지급됨 (此權限預設授予)
+ public static final String P_USE_QSELL = "dshop.use.qsell"; // 이 권한은 기본적으로 지급됨 (此權限預設授予)
// Currency
public static final String S_VAULT = "Vault";
diff --git a/src/main/java/me/sat7/dynamicshop/economyhook/JobsHook.java b/src/main/java/me/sat7/dynamicshop/economyhook/JobsHook.java
index fc4cc40..578802a 100644
--- a/src/main/java/me/sat7/dynamicshop/economyhook/JobsHook.java
+++ b/src/main/java/me/sat7/dynamicshop/economyhook/JobsHook.java
@@ -20,7 +20,7 @@ private JobsHook()
}
- // JobsReborn의 points 수정
+ // JobsReborn의 points 수정 (修改JobsReborn的點數)
public static boolean addJobsPoint(Player p, double amount)
{
if (!jobsRebornActive)
@@ -30,7 +30,7 @@ public static boolean addJobsPoint(Player p, double amount)
}
PlayerPoints pp = JobsHook.getJobsPlayerPoints(p);
- // 차감
+ // 차감 (扣除)
if (amount < 0.0)
{
if (pp.havePoints(amount * -1))
@@ -38,7 +38,7 @@ public static boolean addJobsPoint(Player p, double amount)
pp.takePoints(amount * -1);
return true;
}
- // 포인트 부족
+ // 포인트 부족 (點數不足)
else
{
p.sendMessage(DynamicShop.dsPrefix(p) + t(p, "MESSAGE.NOT_ENOUGH_POINT")
@@ -46,7 +46,7 @@ public static boolean addJobsPoint(Player p, double amount)
return false;
}
}
- // 증가
+ // 증가 (增加)
else
{
pp.addPoints(amount);
@@ -54,7 +54,7 @@ public static boolean addJobsPoint(Player p, double amount)
}
}
- // JobsReborn. 플레이어의 잔액 확인
+ // JobsReborn. 플레이어의 잔액 확인 (JobsReborn. 確認玩家餘額)
public static double getCurJobPoints(Player p)
{
JobsPlayer jobsPlayer = Jobs.getPlayerManager().getJobsPlayer(p);
diff --git a/src/main/java/me/sat7/dynamicshop/events/OnClick.java b/src/main/java/me/sat7/dynamicshop/events/OnClick.java
index 6a71415..decabc2 100644
--- a/src/main/java/me/sat7/dynamicshop/events/OnClick.java
+++ b/src/main/java/me/sat7/dynamicshop/events/OnClick.java
@@ -19,7 +19,7 @@ public class OnClick implements Listener
@EventHandler
public void OnInventoryDragEvent(InventoryDragEvent e)
{
- // UI 인벤토리에 드래그로 아이탬 올리는것을 막음
+ // UI 인벤토리에 드래그로 아이탬 올리는것을 막음 (防止拖曳物品到UI介面)
if (UIManager.IsPlayerUsingPluginGUI((Player) e.getWhoClicked()))
e.setCancelled(true);
}
@@ -32,10 +32,10 @@ public void OnInventoryClickEvent(InventoryClickEvent e)
Player player = (Player) e.getWhoClicked();
- // 위쪽 인벤토리를 클릭함 (= 내 인벤토리가 아님)
+ // 위쪽 인벤토리를 클릭함 (= 내 인벤토리가 아님) (點擊了上方的介面(= 不是自己的背包))
if (e.getClickedInventory() != player.getInventory())
{
- // UUID 확인되지 않는 경우 플러그인 사용을 막음. (이게 실질적으로 의미가 있는지는 모르겠음)
+ // UUID 확인되지 않는 경우 플러그인 사용을 막음. (이게 실질적으로 의미가 있는지는 모르겠음) (如果UUID未經驗證,則阻止使用插件。(不確定這是否真的有意義))
String pUuid = player.getUniqueId().toString();
if (UserUtil.ccUser.get().getConfigurationSection(pUuid) == null)
@@ -54,7 +54,7 @@ public void OnInventoryClickEvent(InventoryClickEvent e)
UIManager.OnClickUpperInventory(e);
}
}
- // 아래쪽 인벤토리를 클릭함
+ // 아래쪽 인벤토리를 클릭함 (點擊了下方的介面)
else
{
if (UIManager.GetPlayerCurrentUIType(player) == InGameUI.UI_TYPE.ItemPalette ||
@@ -66,7 +66,7 @@ public void OnInventoryClickEvent(InventoryClickEvent e)
e.setCancelled(true);
UIManager.OnClickLowerInventory(e);
}
- // Shift클릭으로 상단의 UI인벤토리로 아이템 올리는것을 막음
+ // Shift클릭으로 상단의 UI인벤토리로 아이템 올리는것을 막음 (防止使用Shift點擊將物品放入上方的UI介面)
else if (e.isShiftClick() && UIManager.IsPlayerUsingPluginGUI(player))
{
e.setCancelled(true);
diff --git a/src/main/java/me/sat7/dynamicshop/events/OnSignClick.java b/src/main/java/me/sat7/dynamicshop/events/OnSignClick.java
index 06e86da..1e5dede 100644
--- a/src/main/java/me/sat7/dynamicshop/events/OnSignClick.java
+++ b/src/main/java/me/sat7/dynamicshop/events/OnSignClick.java
@@ -37,7 +37,7 @@
public class OnSignClick implements Listener
{
- // 생성
+ // 생성 (建立)
@EventHandler
public void onSignChange(SignChangeEvent e) {
if (!e.getPlayer().hasPermission(P_ADMIN_CREATE_SIGN)) return;
@@ -110,7 +110,7 @@ public void onSignChange(SignChangeEvent e) {
}
}
- // 상호작용
+ // 상호작용 (互動)
@EventHandler
public void onInteract(PlayerInteractEvent e)
{
@@ -132,12 +132,12 @@ public void onInteract(PlayerInteractEvent e)
String signId = CreateID(e.getClickedBlock());
- // 정보가 없음
+ // 정보가 없음 (沒有資訊)
if (!DynamicShop.ccSign.get().contains(signId) &&
s.getLine(1).length() > 0 &&
ShopUtil.shopConfigFiles.containsKey(ChatColor.stripColor(s.getLine(1))))
{
- // 재생성 시도
+ // 재생성 시도 (嘗試重建)
if (e.getPlayer().hasPermission(P_ADMIN_CREATE_SIGN))
{
String shop = ChatColor.stripColor(s.getLine(1));
@@ -188,7 +188,7 @@ public void onInteract(PlayerInteractEvent e)
String shopName = DynamicShop.ccSign.get().getString(signId + ".shop");
if (shopName == null || shopName.length() == 0) return;
- // 상점 존재 확인
+ // 상점 존재 확인 (確認商店是否存在)
if (ShopUtil.shopConfigFiles.containsKey(shopName))
{
if (p.getGameMode() == GameMode.CREATIVE && !p.hasPermission(Constants.P_ADMIN_CREATIVE))
@@ -207,7 +207,7 @@ public void onInteract(PlayerInteractEvent e)
}
- //권한 확인
+ //권한 확인 (權限確認)
String permission = ShopUtil.shopConfigFiles.get(shopName).get().getString("Options.permission");
if (permission != null && permission.length() > 0)
{
@@ -242,7 +242,7 @@ public void onInteract(PlayerInteractEvent e)
}
}
- // 파괴
+ // 파괴 (破壞)
@EventHandler
public void onBlockBreak(BlockBreakEvent e)
{
@@ -279,7 +279,7 @@ public void onBlockBreak(BlockBreakEvent e)
}
}
- // 상점 표지판이 폭발하는것 방지
+ // 상점 표지판이 폭발하는것 방지 (防止商店招牌爆炸)
@EventHandler
public void onEntityExplode(EntityExplodeEvent event)
{
@@ -298,7 +298,7 @@ public void onEntityExplode(EntityExplodeEvent event)
}
}
- // 상점 표지판이 불타는것 방지
+ // 상점 표지판이 불타는것 방지 (防止商店招牌燒毀)
@EventHandler
public void onBlockBurn(BlockBurnEvent e)
{
diff --git a/src/main/java/me/sat7/dynamicshop/files/CustomConfig.java b/src/main/java/me/sat7/dynamicshop/files/CustomConfig.java
index f9400fd..16550bd 100644
--- a/src/main/java/me/sat7/dynamicshop/files/CustomConfig.java
+++ b/src/main/java/me/sat7/dynamicshop/files/CustomConfig.java
@@ -15,7 +15,7 @@
public class CustomConfig
{
private File file;
- protected FileConfiguration customFile; // 버킷의 데이터 타입
+ protected FileConfiguration customFile; // 버킷의 데이터 타입 (Bukkit的資料型態)
//Finds or generates the custom config file
public void setup(String name, String folder)
diff --git a/src/main/java/me/sat7/dynamicshop/guis/ItemPalette.java b/src/main/java/me/sat7/dynamicshop/guis/ItemPalette.java
index cf2ad44..13f22ee 100644
--- a/src/main/java/me/sat7/dynamicshop/guis/ItemPalette.java
+++ b/src/main/java/me/sat7/dynamicshop/guis/ItemPalette.java
@@ -1,8 +1,6 @@
package me.sat7.dynamicshop.guis;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Comparator;
+import java.util.*;
import me.sat7.dynamicshop.DynaShopAPI;
import me.sat7.dynamicshop.events.OnChat;
@@ -29,6 +27,7 @@
public final class ItemPalette extends InGameUI
{
+
public ItemPalette()
{
uiType = UI_TYPE.ItemPalette;
@@ -44,6 +43,7 @@ public ItemPalette()
private static ArrayList sortedList = new ArrayList<>();
private ArrayList paletteList = new ArrayList<>();
+ private Map lastPage = new HashMap<>();
private Player player;
private String shopName = "";
private int shopSlotIndex = 0;
@@ -392,6 +392,10 @@ private void MovePage(boolean isLeft, boolean isRight)
return;
DynaShopAPI.openItemPalette(player, uiSubType, shopName, shopSlotIndex, targetPage, this.search);
+
+ if(uiType == UI_TYPE.Shop) {
+ lastPage.put(player.getUniqueId(), currentPage);
+ }
}
private void AddAll(boolean applyRecommend)
@@ -404,7 +408,7 @@ private void AddAll(boolean applyRecommend)
{
if (inventory.getItem(i) != null)
{
- ItemStack original = inventory.getItem(i); // UI 요소가 추가된 상태임.
+ ItemStack original = inventory.getItem(i); // UI 요소가 추가된 상태임. (UI元素已新增的狀態)
if (original == null || original.getType() == Material.AIR)
continue;
@@ -431,6 +435,7 @@ private void AddAll(boolean applyRecommend)
if (worth != 0)
{
median = ShopUtil.CalcRecommendedMedian(worth, ConfigUtil.GetNumberOfPlayer());
+ worth = 1;
} else
{
if (player != null)
@@ -442,7 +447,7 @@ private void AddAll(boolean applyRecommend)
ShopUtil.addItemToShop(shopName, targetSlotIdx, temp);
}
}
- DynaShopAPI.openShopGui(player, shopName, 1);
+ DynaShopAPI.openShopGui(player, shopName, lastPage.getOrDefault(player.getUniqueId(), 1));
}
private void OnClickSearch(boolean isLeft, boolean isRight)
@@ -467,7 +472,7 @@ private void OnClickItem(boolean isLeft, boolean isRight, boolean isShift, ItemS
if (item == null || item.getType() == Material.AIR)
return;
- // 인자로 들어오는 item은 UI요소임
+ // 인자로 들어오는 item은 UI요소임 (作為參數傳入的item是UI元素)
ItemStack itemStack = CreateItemStackWithRef(item);
if(uiSubType == 0)
diff --git a/src/main/java/me/sat7/dynamicshop/guis/ItemSettings.java b/src/main/java/me/sat7/dynamicshop/guis/ItemSettings.java
index 4a9b20c..ea4d5a1 100644
--- a/src/main/java/me/sat7/dynamicshop/guis/ItemSettings.java
+++ b/src/main/java/me/sat7/dynamicshop/guis/ItemSettings.java
@@ -113,7 +113,7 @@ public Inventory getGui(Player player, String shopName, int shopSlotIndex, int t
CreateButton(SHIFT, Material.BLACK_STAINED_GLASS_PANE, "Shift = x5", "");
- // 조절버튼
+ // 조절버튼 (調整按鈕)
if (dsItem.getBuyValue() == dsItem.getSellValue())
sellValueStr = "§8" + ChatColor.stripColor(sellValueStr);
if (dsItem.getMinPrice() <= 0.0001)
@@ -174,7 +174,7 @@ public Inventory getGui(Player player, String shopName, int shopSlotIndex, int t
if(buyPrice < 0.0001)
buyPrice = 0.0001;
- if (dsItem.getBuyValue() != dsItem.getSellValue()) // 판매가 별도설정
+ if (dsItem.getBuyValue() != dsItem.getSellValue()) // 판매가 별도설정 (另外設定售價)
{
editBtnLore.add("§7" + ChatColor.stripColor(t(null, "ITEM_SETTING.TAX_IGNORED")));
sellPrice = (dsItem.getSellValue() * dsItem.getMedian()) / dsItem.getStock();
@@ -233,7 +233,7 @@ public Inventory getGui(Player player, String shopName, int shopSlotIndex, int t
else if (currentTab == MAX_STOCK) CreateButton(SET_TO_OTHER, yellow, t(null, "ITEM_SETTING.SET_TO_STOCK"), editBtnLore);
}
- inventory.setItem(SAMPLE_ITEM, dsItem.getItemStack()); // 아이탬 견본
+ inventory.setItem(SAMPLE_ITEM, dsItem.getItemStack()); // 아이탬 견본 (物品樣本)
inventory.getItem(SAMPLE_ITEM).setAmount(1);
double worth = TryGetWorth(dsItem.getItemStack().getType().name());
@@ -286,11 +286,11 @@ public Inventory getGui(Player player, String shopName, int shopSlotIndex, int t
t(player, "ITEM_SETTING.TRADE_LIMIT_TIMER_LORE").replace("{num}", String.valueOf(timerOffset / 1000 / 60 / 60)).replace("{time}", tradeLimitNextTimerString));
}
- CreateButton(RECOMMEND, Material.NETHER_STAR, t(player, "ITEM_SETTING.RECOMMEND"), recommendLore); // 추천 버튼
+ CreateButton(RECOMMEND, Material.NETHER_STAR, t(player, "ITEM_SETTING.RECOMMEND"), recommendLore); // 추천 버튼 (推薦按鈕)
- CreateButton(DONE, Material.STRUCTURE_VOID, t(player, "ITEM_SETTING.DONE"), t(player, "ITEM_SETTING.DONE_LORE")); // 완료 버튼
- CreateButton(CLOSE, Material.BARRIER, t(player, "ITEM_SETTING.CLOSE"), t(player, "ITEM_SETTING.CLOSE_LORE")); // 닫기 버튼
- CreateButton(REMOVE, Material.BONE, t(player, "ITEM_SETTING.REMOVE"), t(player, "ITEM_SETTING.REMOVE_LORE")); // 삭제 버튼
+ CreateButton(DONE, Material.STRUCTURE_VOID, t(player, "ITEM_SETTING.DONE"), t(player, "ITEM_SETTING.DONE_LORE")); // 완료 버튼 (完成按鈕)
+ CreateButton(CLOSE, Material.BARRIER, t(player, "ITEM_SETTING.CLOSE"), t(player, "ITEM_SETTING.CLOSE_LORE")); // 닫기 버튼 (關閉按鈕)
+ CreateButton(REMOVE, Material.BONE, t(player, "ITEM_SETTING.REMOVE"), t(player, "ITEM_SETTING.REMOVE_LORE")); // 삭제 버튼 (刪除按鈕)
return inventory;
}
@@ -318,7 +318,7 @@ public void OnClickUpperInventory(InventoryClickEvent e)
else if (e.getSlot() == TRADE_LIMIT_INTERVAL_TIMER) OnTradeLimitTimerAdjustButtonClick(e.isLeftClick(), e.isShiftClick());
else if (e.getSlot() >= TAB_START && e.getSlot() <= TAB_END) ChangeTab(e.getSlot());
else if (e.getSlot() == RESET) Reset();
- else if (e.getSlot() >= 18 && e.getSlot() < 27) PlusMinus(e.isShiftClick(), e.getCurrentItem()); // RESET 이 22인것에 주의
+ else if (e.getSlot() >= 18 && e.getSlot() < 27) PlusMinus(e.isShiftClick(), e.getCurrentItem()); // RESET 이 22인것에 주의 (注意RESET是22)
else if (e.getSlot() == DIVIDE) Divide(e.isShiftClick());
else if (e.getSlot() == MULTIPLY) Multiply(e.isShiftClick());
else if (e.getSlot() == ROUND_DOWN) RoundDown();
@@ -328,7 +328,7 @@ public void OnClickUpperInventory(InventoryClickEvent e)
private void SaveSetting()
{
- // 유효성 검사
+ // 유효성 검사 (有效性檢查)
if (dsItem.maxPrice > 0 && dsItem.buyValue > dsItem.maxPrice)
{
player.sendMessage(DynamicShop.dsPrefix(player) + t(player, "ERR.DEFAULT_VALUE_OUT_OF_RANGE"));
diff --git a/src/main/java/me/sat7/dynamicshop/guis/ItemTrade.java b/src/main/java/me/sat7/dynamicshop/guis/ItemTrade.java
index 7ff6a90..fd641f0 100644
--- a/src/main/java/me/sat7/dynamicshop/guis/ItemTrade.java
+++ b/src/main/java/me/sat7/dynamicshop/guis/ItemTrade.java
@@ -116,7 +116,7 @@ public void OnClickUpperInventory(InventoryClickEvent e)
{
if (e.getSlot() == CLOSE)
{
- // 표지판을 클릭해서 거래화면에 진입한 경우에는 상점UI로 돌아가는 대신 인벤토리를 닫음
+ // 표지판을 클릭해서 거래화면에 진입한 경우에는 상점UI로 돌아가는 대신 인벤토리를 닫음 (點擊招牌進入交易畫面時,直接關閉介面而不是返回商店UI)
if (UserUtil.userTempData.get(player.getUniqueId()).equalsIgnoreCase("sign"))
{
UserUtil.userTempData.put(player.getUniqueId(), "");
@@ -193,17 +193,17 @@ public void OnClickUpperInventory(InventoryClickEvent e)
ItemStack tempIS = new ItemStack(e.getCurrentItem().getType(), e.getCurrentItem().getAmount());
tempIS.setItemMeta((ItemMeta) data.get().get(tradeIdx + ".itemStack"));
- // 무한재고&고정가격
+ // 무한재고&고정가격 (無限庫存&固定價格)
boolean infiniteStock = data.get().getInt(tradeIdx + ".stock") <= 0;
- // 배달비 계산
+ // 배달비 (運費) 계산 (運費計算)
ConfigurationSection optionS = data.get().getConfigurationSection("Options");
if (optionS.contains("world") && optionS.contains("pos1") && optionS.contains("pos2") && optionS.contains("flag.deliverycharge"))
{
deliveryCharge = ShopUtil.CalcShipping(shopName, player);
if (deliveryCharge == -1)
{
- player.sendMessage(DynamicShop.dsPrefix(player) + t(player, "MESSAGE.DELIVERY_CHARGE_NA")); // 다른 월드로 배달 불가능
+ player.sendMessage(DynamicShop.dsPrefix(player) + t(player, "MESSAGE.DELIVERY_CHARGE_NA")); // 다른 월드로 배달 불가능 (無法配送到其他世界)
return;
}
}
@@ -302,7 +302,7 @@ private void CreateTradeButtons()
private void CreateTradeButtons(boolean sell)
{
- // 플레이어당 거래 제한
+ // 플레이어당 거래 제한 (每位玩家的交易限制)
String tradeLimitString = "";
int tradeIdxInt = Integer.parseInt(tradeIdx);
int tradeLimitLeft = UserUtil.GetTradingLimitLeft(player, shopName, tradeIdxInt, HashUtil.GetItemHash(new ItemStack(Material.getMaterial(material))), sell);
@@ -413,7 +413,7 @@ else if (ShopUtil.GetCurrency(shopData).equalsIgnoreCase(Constants.S_EXP))
if (!sell)
{
- if (stock != -1 && stock <= amount) // stock은 1이거나 그보다 작을 수 없음. 단 -1은 무한재고를 의미함.
+ if (stock != -1 && stock <= amount) // stock은 1이거나 그보다 작을 수 없음. 단 -1은 무한재고를 의미함. (stock不能是1或更小。但是-1代表無限庫存。)
continue;
}
@@ -449,7 +449,7 @@ else if (ShopUtil.GetCurrency(shopData).equalsIgnoreCase(Constants.S_EXP))
}
}
- // 플레이어당 거래 제한
+ // 플레이어당 거래 제한 (每位玩家的交易限制)
if (tradeLimitLeft != Integer.MAX_VALUE)
{
if (!stockText.isEmpty())
@@ -457,7 +457,7 @@ else if (ShopUtil.GetCurrency(shopData).equalsIgnoreCase(Constants.S_EXP))
stockText += tradeLimitString;
}
- // 배달비
+ // 배달비 (運費)
String deliveryChargeText = "";
if (deliveryCharge > 0)
{
diff --git a/src/main/java/me/sat7/dynamicshop/guis/PageEditor.java b/src/main/java/me/sat7/dynamicshop/guis/PageEditor.java
index 146ebb9..3ec93d4 100644
--- a/src/main/java/me/sat7/dynamicshop/guis/PageEditor.java
+++ b/src/main/java/me/sat7/dynamicshop/guis/PageEditor.java
@@ -56,17 +56,17 @@ public Inventory getGui(Player player, String shopName, int page)
{
try
{
- // 현재 페이지에 해당하는 것들만 출력
+ // 현재 페이지에 해당하는 것들만 출력 (只輸出目前頁面的項目)
int idx = Integer.parseInt(s);
idx -= ((page - 1) * 45);
if (!(idx < 45 && idx >= 0)) continue;
- // 아이탬 생성
- String itemName = data.get().getString(s + ".mat"); // 메테리얼
+ // 아이탬 생성 (建立物品)
+ String itemName = data.get().getString(s + ".mat"); // 메테리얼 (材料)
ItemStack itemStack = new ItemStack(Material.getMaterial(itemName), 1); // 아이탬 생성
- itemStack.setItemMeta((ItemMeta) data.get().get(s + ".itemStack")); // 저장된 메타 적용
+ itemStack.setItemMeta((ItemMeta) data.get().get(s + ".itemStack")); // 저장된 메타 적용 (套用已儲存的Meta)
- // 커스텀 메타 설정
+ // 커스텀 메타 설정 (自訂Meta設定)
ItemMeta meta = itemStack.getItemMeta();
meta.setDisplayName("§8#" + s);
ArrayList loreList = new ArrayList<>();
@@ -116,7 +116,7 @@ public void OnClickUpperInventory(InventoryClickEvent e)
int pageButtonCount = PAGE_BUTTON_END - PAGE_BUTTON_START + 1;
- // 닫기 버튼
+ // 닫기 버튼 (關閉按鈕)
if (e.getSlot() == CLOSE)
{
DynaShopAPI.openShopGui(player, shopName, page);
@@ -286,7 +286,7 @@ private void DeletePage(Player player, String shopName, int page)
{
ShopUtil.closeInventoryWithDelay(player);
- UserUtil.userInteractItem.put(player.getUniqueId(), shopName + "/" + page); // 삭제 확인을 위해 필요.
+ UserUtil.userInteractItem.put(player.getUniqueId(), shopName + "/" + page); // 삭제 확인을 위해 필요. (刪除確認時需要。)
UserUtil.userTempData.put(player.getUniqueId(), "waitforPageDelete");
OnChat.WaitForInput(player);
diff --git a/src/main/java/me/sat7/dynamicshop/guis/QuickSell.java b/src/main/java/me/sat7/dynamicshop/guis/QuickSell.java
index 1cd59c8..ef1e340 100644
--- a/src/main/java/me/sat7/dynamicshop/guis/QuickSell.java
+++ b/src/main/java/me/sat7/dynamicshop/guis/QuickSell.java
@@ -83,7 +83,7 @@ public void OnClickLowerInventory(InventoryClickEvent e)
{
if (e.isLeftClick())
{
- // 찾은 상점에 판매
+ // 찾은 상점에 판매 (銷售到找到的商店)
Sell.quickSellItem(player, e.getCurrentItem(), topShopName, tradeIdx, e.isShiftClick(), e.getSlot());
} else if (e.isRightClick())
{
diff --git a/src/main/java/me/sat7/dynamicshop/guis/RotationEditor.java b/src/main/java/me/sat7/dynamicshop/guis/RotationEditor.java
index 8630528..c8721cc 100644
--- a/src/main/java/me/sat7/dynamicshop/guis/RotationEditor.java
+++ b/src/main/java/me/sat7/dynamicshop/guis/RotationEditor.java
@@ -39,10 +39,10 @@ public RotationEditor()
private final SimpleDateFormat sdf = new SimpleDateFormat("MM.dd.yyyy HH:mm:ss");
private String timeLore;
- private long period; // 밀리초
- private long period_new; // 밀리초
- private long nextTimer; // 밀리초
- private long nextTimer_new; // 밀리초
+ private long period; // 밀리초 (毫秒)
+ private long period_new; // 밀리초 (毫秒)
+ private long nextTimer; // 밀리초 (毫秒)
+ private long nextTimer_new; // 밀리초 (毫秒)
private int moveTarget;
@@ -110,7 +110,7 @@ else if (e.isRightClick())
nextTimer_new += editAmount;
nextTimer_new = nextTimer_new / 1000 / 60 / 10;
- nextTimer_new = nextTimer_new * 1000 * 60 * 10; // 10분단위로 내림처리.
+ nextTimer_new = nextTimer_new * 1000 * 60 * 10; // 10분단위로 내림처리. (以10分鐘為單位進行無條件捨去)
RefreshUI();
} else if (e.getSlot() == APPLY_CHANGES)
{
@@ -160,7 +160,7 @@ public void RefreshUI()
private void UpdateToggleButton()
{
- // 활성화 토글
+ // 활성화 토글 (啟用/禁用 切換)
if (currentRotation != -1)
{
String lore = t(player, "ROTATION_EDITOR.CLICK_TO_DISABLE") + "\n\n" + timeLore;
@@ -253,7 +253,7 @@ private void OnClickDataButton(boolean isEmptySlot, int dataIndex, boolean isLef
{
if (isEmptySlot)
{
- // 새 로테이션 파일 생성
+ // 새 로테이션 파일 생성 (建立新的輪換檔案)
if (isLeftClick)
{
RotationUtil.AddNewRotationData(shopName, dataIndex, true);
@@ -261,7 +261,7 @@ private void OnClickDataButton(boolean isEmptySlot, int dataIndex, boolean isLef
}
else if (isRightClick)
{
- // 이동
+ // 이동 (移動)
if(moveTarget != -1)
{
RotationUtil.OnRotationFileSlotMoved(shopName, moveTarget, dataIndex);
@@ -272,7 +272,7 @@ else if (isRightClick)
}
moveTarget = -1;
}
- // 현재 상점 복사하여 새로 만들기
+ // 현재 상점 복사하여 새로 만들기 (複製目前商店以建立新商店)
else
{
RotationUtil.AddNewRotationData(shopName, dataIndex, false);
@@ -283,21 +283,21 @@ else if (isRightClick)
{
if (isLeftClick)
{
- // 로테이션 적용
+ // 로테이션 적용 (套用輪換)
if (currentRotation != dataIndex || isShift)
{
RotationUtil.ApplyRotation(shopName, currentRotation, dataIndex);
currentRotation = dataIndex;
RefreshUI();
}
- // 로테이션 적용된 상태의 상점 UI를 연다
+ // 로테이션 적용된 상태의 상점 UI를 연다 (開啟已套用輪換的商店UI)
else
{
DynaShopAPI.openShopGui(player, shopName, 0);
}
} else if (isRightClick)
{
- // 로테이션 데이터 삭제
+ // 로테이션 데이터 삭제 (刪除輪換資料)
if (isShift)
{
RotationUtil.DeleteRotationFile(shopName, dataIndex);
@@ -314,7 +314,7 @@ else if (isRightClick)
}
RefreshUI();
}
- // 이동
+ // 이동 (移動)
else
{
if(moveTarget == -1)
diff --git a/src/main/java/me/sat7/dynamicshop/guis/Shop.java b/src/main/java/me/sat7/dynamicshop/guis/Shop.java
index adaf8b0..2421cc9 100644
--- a/src/main/java/me/sat7/dynamicshop/guis/Shop.java
+++ b/src/main/java/me/sat7/dynamicshop/guis/Shop.java
@@ -136,21 +136,30 @@ private void ShowItems()
{
try
{
- // 현재 페이지에 해당하는 것들만 출력
+ // 현재 페이지에 해당하는 것들만 출력 (只輸出目前頁面的項目)
idx = Integer.parseInt(s);
idx -= ((page - 1) * 45);
if (!(idx < 45 && idx >= 0)) continue;
- // 아이탬 생성
- String itemName = shopData.getString(s + ".mat"); // 메테리얼
- ItemStack itemStack = new ItemStack(Material.getMaterial(itemName), 1); // 아이탬 생성
- itemStack.setItemMeta((ItemMeta) shopData.get(s + ".itemStack")); // 저장된 메타 적용
+ // 아이탬 생성 (建立物品)
+ String itemName = shopData.getString(s + ".mat"); // 메테리얼 (材料)
+ Material mat = Material.getMaterial(itemName);
+ if(mat == null)
+ {
+ if (player.hasPermission(P_ADMIN_SHOP_EDIT))
+ CreateButton(idx, Material.BARRIER, t(player, "SHOP.INCOMPLETE_DATA"), t(null, "SHOP.INCOMPLETE_DATA_Lore") + s);
+
+ DynamicShop.console.sendMessage(Constants.DYNAMIC_SHOP_PREFIX + "Invalid material '" + itemName + "' in shop '" + shopName + "' at index " + s);
+ continue;
+ }
+ ItemStack itemStack = new ItemStack(mat, 1); // 아이탬 생성
+ itemStack.setItemMeta((ItemMeta) shopData.get(s + ".itemStack")); // 저장된 메타 적용 (套用已儲存的Meta)
- // 커스텀 메타 설정
+ // 커스텀 메타 설정 (自訂Meta設定)
ItemMeta meta = itemStack.getItemMeta();
String lore = "";
- // 상품
+ // 상품 (商品)
if (shopData.contains(s + ".value"))
{
int tradeIdx = Integer.parseInt(s);
@@ -345,7 +354,7 @@ else if (ShopUtil.GetCurrency(shopData).equalsIgnoreCase(Constants.S_EXP))
lore += "\n" + t(player, "SHOP.ITEM_EDIT_LORE");
}
}
- // 장식용
+ // 장식용 (裝飾用)
else
{
if (player.hasPermission(P_ADMIN_SHOP_EDIT))
@@ -417,7 +426,7 @@ private String CreateShopInfoText()
}
}
- // 권한
+ // 권한 (權限)
String finalPermText = "";
String perm = shopData.getString("Options.permission");
if (perm != null && perm.length() > 0)
@@ -426,12 +435,12 @@ private String CreateShopInfoText()
finalPermText += t(player, "SHOP.PERMISSION_ITEM").replace("{permission}", perm) + "\n";
}
- // 세금
+ // 세금 (稅金)
String finalTaxText = "";
finalTaxText += t(player, "TAX.SALES_TAX") + ":" + "\n";
finalTaxText += t(player, "SHOP.SHOP_INFO_DASH") + Calc.getTaxRate(shopName) + "%" + "\n";
- // 상점 잔액
+ // 상점 잔액 (商店餘額)
String finalShopBalanceText = "";
if(!shopData.contains("Options.flag.hideshopbalance"))
@@ -456,7 +465,7 @@ else if (ShopUtil.GetCurrency(shopData).equalsIgnoreCase(Constants.S_EXP))
}
}
- // 영업시간
+ // 영업시간 (營業時間)
String finalShopHourText = "";
if (shopData.contains("Options.shophours"))
{
@@ -469,7 +478,7 @@ else if (ShopUtil.GetCurrency(shopData).equalsIgnoreCase(Constants.S_EXP))
finalShopHourText += t(player, "SHOP.SHOP_INFO_DASH") + t(player, "TIME.CLOSE") + ": " + close + "\n";
}
- // 상점 좌표
+ // 상점 좌표 (商店座標)
String finalShopPosText = "";
if (shopData.contains("Options.pos1") && shopData.contains("Options.pos2"))
{
@@ -497,11 +506,11 @@ else if (ShopUtil.GetCurrency(shopData).equalsIgnoreCase(Constants.S_EXP))
if(ChatColor.stripColor(temp).startsWith("\n"))
shopLore = shopLore.replaceFirst("\n","");
- // 어드민이면----------
+ // 어드민이면---------- (如果是管理員----------)
if (player.hasPermission(P_ADMIN_SHOP_EDIT))
shopLore += "\n";
- // 플래그
+ // 플래그 (旗標)
StringBuilder finalFlagText = new StringBuilder();
if (player.hasPermission(P_ADMIN_SHOP_EDIT))
{
@@ -527,7 +536,7 @@ else if (ShopUtil.GetCurrency(shopData).equalsIgnoreCase(Constants.S_EXP))
private void CloseUI()
{
- // 표지판으로 접근한 경우에는 그냥 창을 닫음
+ // 표지판으로 접근한 경우에는 그냥 창을 닫음 (透過招牌進入時直接關閉視窗)
if (UserUtil.userTempData.get(player.getUniqueId()).equalsIgnoreCase("sign"))
{
UserUtil.userTempData.put(player.getUniqueId(), "");
@@ -603,13 +612,13 @@ else if (e.getCurrentItem().getItemMeta().getDisplayName().equals(" ") ||
return;
}
- // 거래화면 열기
+ // 거래화면 열기 (開啟交易畫面)
if (e.isLeftClick() && shopData.contains(idx + ".value"))
{
SoundUtil.playerSoundEffect(player, "tradeview");
DynaShopAPI.openItemTradeGui(player, shopName, String.valueOf(idx));
}
- // 아이탬 이동, 수정, 또는 장식탬 삭제
+ // 아이탬 이동, 수정, 또는 장식탬 삭제 (移動、修改物品或刪除裝飾品)
else if (e.isRightClick() && player.hasPermission(P_ADMIN_SHOP_EDIT))
{
if (e.isShiftClick())
@@ -656,7 +665,7 @@ else if (e.isRightClick() && player.hasPermission(P_ADMIN_SHOP_EDIT))
}
else if (player.hasPermission(P_ADMIN_SHOP_EDIT))
{
- // 아이탬 이동. 또는 장식 복사
+ // 아이탬 이동. 또는 장식 복사 (移動物品或複製裝飾)
if (e.isRightClick() && selectedSlot != -1)
{
shopData.set(String.valueOf(idx), shopData.get(String.valueOf(selectedSlot)));
@@ -673,7 +682,7 @@ else if (player.hasPermission(P_ADMIN_SHOP_EDIT))
selectedSlot = -1;
RefreshUI();
}
- // 팔렛트 열기
+ // 팔렛트 열기 (開啟調色盤)
else
{
DynaShopAPI.openItemPalette(player, 0, shopName, idx, 1, "");
diff --git a/src/main/java/me/sat7/dynamicshop/guis/ShopSettings.java b/src/main/java/me/sat7/dynamicshop/guis/ShopSettings.java
index d6c4272..72a6369 100644
--- a/src/main/java/me/sat7/dynamicshop/guis/ShopSettings.java
+++ b/src/main/java/me/sat7/dynamicshop/guis/ShopSettings.java
@@ -92,10 +92,10 @@ public Inventory getGui(Player player, String shopName)
CustomConfig data = ShopUtil.shopConfigFiles.get(shopName);
ConfigurationSection confSec_Options = data.get().getConfigurationSection("Options");
- // 닫기 버튼
+ // 닫기 버튼 (關閉按鈕)
CreateCloseButton(player, CLOSE);
- // 활성화 버튼
+ // 활성화 (啟用) 버튼 (啟用按鈕)
boolean isShopEnable = confSec_Options.getBoolean("enable", true);
Material enableToggleMat = isShopEnable ? Material.GREEN_STAINED_GLASS : Material.RED_STAINED_GLASS;
String current = isShopEnable ? t(player, "SHOP_SETTING.STATE_ENABLE") : t(player, "SHOP_SETTING.STATE_DISABLE");
@@ -104,7 +104,7 @@ public Inventory getGui(Player player, String shopName)
enableToggleLore += "\n§e" + t(player, "CLICK") + ": " + set;
CreateButton(ENABLE_TOGGLE, enableToggleMat, t(player, "SHOP_SETTING.STATE"), enableToggleLore);
- // 권한 버튼
+ // 권한 (權限) 버튼 (權限按鈕)
String permStr = confSec_Options.getString("permission");
String permNew = "dshop.user.shop." + shopName;
Material permIcon;
@@ -128,22 +128,22 @@ public Inventory getGui(Player player, String shopName)
permLore.add("§e" + t(player, "CLICK") + ": " + permNew);
CreateButton(PERMISSION, permIcon, t(player, "SHOP_SETTING.PERMISSION"), permLore);
- //최대 페이지 버튼
+ //최대 페이지 버튼 (最大頁數按鈕)
CreateButton(MAX_PAGE, InGameUI.GetPageButtonIconMat(), t(player, "SHOP_SETTING.MAX_PAGE"), new ArrayList<>(Arrays.asList(t(player, "SHOP_SETTING.MAX_PAGE_LORE"), t(player, "SHOP_SETTING.L_R_SHIFT"))), data.get().getInt("Options.page"));
- // 배경 색상
+ // 배경 색상 (背景顏色)
String color = confSec_Options.getString("background","");
Material mat = Material.getMaterial( color.toUpperCase() + "_CONCRETE");
if (mat == null)
mat = Material.LIGHT_GRAY_CONCRETE;
CreateButton(BACKGROUND, mat, t(player, "SHOP_SETTING.BACKGROUND"), t(player, "SHOP_SETTING.BACKGROUND_LORE"));
- // 로테이션 에디터
+ // 로테이션 에디터 (輪換編輯器)
int currentRotation = confSec_Options.getInt("Rotation.Current", -1);
String rotationString = currentRotation == -1 ? t(player, "ROTATION_EDITOR.DISABLED") : String.valueOf(currentRotation + 1);
CreateButton(ROTATION_EDITOR, Material.CLOCK, t(player, "SHOP_SETTING.ROTATION_EDITOR") + rotationString, t(player, "SHOP_SETTING.ROTATION_EDITOR_LORE"));
- // 영업시간 버튼
+ // 영업시간 버튼 (營業時間按鈕)
int curTime = (int) (player.getWorld().getTime()) / 1000 + 6;
if (curTime > 24) curTime -= 24;
if (data.get().contains("Options.shophours"))
@@ -170,7 +170,7 @@ public Inventory getGui(Player player, String shopName)
CreateButton(SHOP_HOUR, Material.CLOCK, t(player, "TIME.SHOPHOURS"), shopHourLore);
}
- // 랜덤스톡 버튼
+ // 랜덤스톡 (隨機庫存) 버튼 (隨機庫存按鈕)
ConfigurationSection flucConf = data.get().getConfigurationSection("Options.fluctuation");
if (flucConf != null)
{
@@ -205,7 +205,7 @@ public Inventory getGui(Player player, String shopName)
inventory.setItem(FLUC, flucToggleBtn);
}
- // 재고 안정화 버튼
+ // 재고 안정화 버튼 (庫存穩定按鈕)
ConfigurationSection stockStableConf = data.get().getConfigurationSection("Options.stockStabilizing");
if (stockStableConf != null)
{
@@ -237,7 +237,7 @@ public Inventory getGui(Player player, String shopName)
CreateButton(STABLE, Material.COMPARATOR, t(player, "STOCK_STABILIZING.SS"), stableLore);
}
- // 커맨드 버튼
+ // 커맨드 버튼 (指令按鈕)
boolean cmdEnabled = confSec_Options.contains("command.active") && confSec_Options.getBoolean("command.active");
ArrayList CmdToggleLore = new ArrayList<>(Arrays.asList(
t(player, "SHOP_SETTING.COMMAND_TOGGLE_LORE"),
@@ -291,7 +291,7 @@ public Inventory getGui(Player player, String shopName)
CreateButton(CMD_SELL, sellCmdValid ? Material.GREEN_STAINED_GLASS_PANE : Material.BLACK_STAINED_GLASS_PANE, t(player, "SHOP_SETTING.COMMAND_SELL"), sellCmdLore);
CreateButton(CMD_BUY, buyCmdValid ? Material.RED_STAINED_GLASS_PANE : Material.BLACK_STAINED_GLASS_PANE, t(player, "SHOP_SETTING.COMMAND_BUY"), buyCmdLore);
- // 세금
+ // 세금 (稅金)
int globalTax = ConfigUtil.getCurrentTax();
if (data.get().contains("Options.SalesTax"))
{
@@ -314,7 +314,7 @@ public Inventory getGui(Player player, String shopName)
CreateButton(TAX_TOGGLE, Material.IRON_INGOT, t(player, "TAX.SALES_TAX"), taxLore);
}
- // 플래그 버튼들
+ // 플래그 버튼들 (旗標按鈕)
CreateFlagButton(FLAG_SIGNSHOP, confSec_Options.contains("flag.signshop"), "signShop", t(player, "SHOP_SETTING.SIGN_SHOP_LORE"));
CreateFlagButton(FLAG_LOCALSHOP, confSec_Options.contains("flag.localshop"), "localShop", t(player, "SHOP_SETTING.LOCAL_SHOP_LORE"));
CreateFlagButton(FLAG_DELIVERY, confSec_Options.contains("flag.deliverycharge"), "deliveryCharge", t(player, "SHOP_SETTING.DELIVERY_CHARGE_LORE"));
@@ -337,7 +337,7 @@ public Inventory getGui(Player player, String shopName)
CreateCurrencyButton(CURRENCY_JP, currency.equalsIgnoreCase(Constants.S_JOBPOINT), t(player, "SHOP_SETTING.CURRENCY") + "JobPoint", t(player, "SHOP_SETTING.JOB_POINT_LORE"));
CreateCurrencyButton(CURRENCY_PP, currency.equalsIgnoreCase(Constants.S_PLAYERPOINT), t(player, "SHOP_SETTING.CURRENCY") + "PlayerPoint", t(player, "SHOP_SETTING.PLAYER_POINT_LORE"));
- // 로그 버튼
+ // 로그 버튼 (日誌按鈕)
String log_cur;
String log_set;
if (confSec_Options.contains("log.active") && confSec_Options.getBoolean("log.active"))
@@ -367,7 +367,7 @@ public Inventory getGui(Player player, String shopName)
logLore_3.add("§e" + t(player, "LMB") + ": " + (printToAdminActive ? t(player, "OFF") : t(player, "ON")));
CreateButton(LOG_PRINT_ADMIN, printToAdminActive ? Material.GREEN_STAINED_GLASS_PANE : Material.BLACK_STAINED_GLASS_PANE, t(player, "SHOP_SETTING.LOG_PRINT_ADMIN"), logLore_3);
- // 거래 UI 설정
+ // 거래 UI 설정 (交易UI設定)
ArrayList tradeUILore = new ArrayList<>();
tradeUILore.add("§9" + t(null, "CUR_STATE") + ": " + (confSec_Options.contains("tradeUI") ? confSec_Options.get("tradeUI") : t(player,"NULL")));
tradeUILore.add(t(player, "SHOP_SETTING.TRADE_UI_LORE_2"));
@@ -383,12 +383,12 @@ public void OnClickUpperInventory(InventoryClickEvent e)
CustomConfig data = ShopUtil.shopConfigFiles.get(shopName);
- // 닫기버튼
+ // 닫기버튼 (關閉按鈕)
if (e.getSlot() == CLOSE)
{
DynaShopAPI.openShopGui(player, shopName, 1);
}
- // 활성화
+ // 활성화 (啟用)
if (e.getSlot() == ENABLE_TOGGLE)
{
if (data.get().getBoolean("Options.enable", true))
@@ -400,7 +400,7 @@ public void OnClickUpperInventory(InventoryClickEvent e)
}
DynaShopAPI.openShopSettingGui(player, shopName);
}
- // 권한
+ // 권한 (權限)
else if (e.getSlot() == PERMISSION)
{
if (data.get().getString("Options.permission").isEmpty())
@@ -412,7 +412,7 @@ else if (e.getSlot() == PERMISSION)
}
DynaShopAPI.openShopSettingGui(player, shopName);
}
- // 최대 페이지
+ // 최대 페이지 (最大頁數)
else if (e.getSlot() == MAX_PAGE)
{
int oldvalue = data.get().getInt("Options.page");
@@ -433,12 +433,12 @@ else if (e.getSlot() == MAX_PAGE)
}
DynaShopAPI.openShopSettingGui(player, shopName);
}
- // 배경 색상 변경
+ // 배경 색상 변경 (變更背景顏色)
else if (e.getSlot() == BACKGROUND)
{
DynaShopAPI.openColorPicker(player, -1);
}
- // 로테이션 편집기
+ // 로테이션 편집기 (輪換編輯器) (輪換編輯器)
else if (e.getSlot() == ROTATION_EDITOR)
{
DynaShopAPI.OpenRotationEditor(player, shopName);
@@ -506,7 +506,7 @@ else if (e.getSlot() == SHOP_HOUR || e.getSlot() == SHOP_HOUR_OPEN || e.getSlot(
}
}
}
- // 랜덤스톡
+ // 랜덤스톡 (隨機庫存)
else if (e.getSlot() == FLUC || e.getSlot() == FLUC_INTERVAL || e.getSlot() == FLUC_STRENGTH)
{
if (data.get().contains("Options.fluctuation"))
@@ -565,7 +565,7 @@ else if(e.isRightClick())
}
}
}
- // 스톡 안정화
+ // 스톡 안정화 (庫存穩定) (庫存穩定)
else if (e.getSlot() == STABLE || e.getSlot() == STABLE_INTERVAL || e.getSlot() == STABLE_STRENGTH)
{
if (data.get().contains("Options.stockStabilizing"))
@@ -624,10 +624,10 @@ else if(e.isRightClick())
}
}
}
- // 세금
+ // 세금 (稅金)
else if (e.getSlot() == TAX_TOGGLE || e.getSlot() == TAX_AMOUNT)
{
- // 전역,지역 토글
+ // 전역,지역 토글 (全域/區域 切換)
if (e.getSlot() == TAX_TOGGLE)
{
if (data.get().contains("Options.SalesTax"))
@@ -640,7 +640,7 @@ else if (e.getSlot() == TAX_TOGGLE || e.getSlot() == TAX_AMOUNT)
DynaShopAPI.openShopSettingGui(player, shopName);
}
- // 수치설정
+ // 수치설정 (數值設定)
else if (data.get().contains("Options.SalesTax"))
{
int edit = -1;
@@ -654,7 +654,7 @@ else if (data.get().contains("Options.SalesTax"))
}
data.save();
}
- // signshop
+ // signshop (招牌商店)
else if (e.getSlot() == FLAG_SIGNSHOP)
{
if (data.get().contains("Options.flag.signshop"))
@@ -666,7 +666,7 @@ else if (e.getSlot() == FLAG_SIGNSHOP)
}
DynaShopAPI.openShopSettingGui(player, shopName);
}
- // localshop
+ // localshop (本地商店)
else if (e.getSlot() == FLAG_LOCALSHOP)
{
if (data.get().contains("Options.flag.localshop"))
@@ -678,7 +678,7 @@ else if (e.getSlot() == FLAG_LOCALSHOP)
}
DynaShopAPI.openShopSettingGui(player, shopName);
}
- // deliverycharge
+ // deliverycharge (運費)
else if (e.getSlot() == FLAG_DELIVERY)
{
if (data.get().contains("Options.flag.deliverycharge"))
@@ -690,7 +690,7 @@ else if (e.getSlot() == FLAG_DELIVERY)
}
DynaShopAPI.openShopSettingGui(player, shopName);
}
- // showValueChange
+ // showValueChange (顯示價值變化)
else if (e.getSlot() == FLAG_SHOW_VALUE_CHANGE)
{
if (data.get().contains("Options.flag.showvaluechange"))
@@ -702,7 +702,7 @@ else if (e.getSlot() == FLAG_SHOW_VALUE_CHANGE)
}
DynaShopAPI.openShopSettingGui(player, shopName);
}
- // HIDE_STOCK
+ // HIDE_STOCK (隱藏庫存)
else if (e.getSlot() == FLAG_HIDE_STOCK)
{
if (data.get().contains("Options.flag.hidestock"))
@@ -714,7 +714,7 @@ else if (e.getSlot() == FLAG_HIDE_STOCK)
}
DynaShopAPI.openShopSettingGui(player, shopName);
}
- // HIDE_PRICING_TYPE
+ // HIDE_PRICING_TYPE (隱藏價格類型)
else if (e.getSlot() == FLAG_HIDE_PRICING_TYPE)
{
if (data.get().contains("Options.flag.hidepricingtype"))
@@ -726,7 +726,7 @@ else if (e.getSlot() == FLAG_HIDE_PRICING_TYPE)
}
DynaShopAPI.openShopSettingGui(player, shopName);
}
- // HIDE_SHOP_BALANCE
+ // HIDE_SHOP_BALANCE (隱藏商店餘額)
else if (e.getSlot() == FLAG_HIDE_SHOP_BALANCE)
{
if (data.get().contains("Options.flag.hideshopbalance"))
@@ -738,7 +738,7 @@ else if (e.getSlot() == FLAG_HIDE_SHOP_BALANCE)
}
DynaShopAPI.openShopSettingGui(player, shopName);
}
- // SHOW_MAX_STOCK
+ // SHOW_MAX_STOCK (顯示最大庫存)
else if (e.getSlot() == FLAG_SHOW_MAX_STOCK)
{
if (data.get().contains("Options.flag.showmaxstock"))
@@ -750,7 +750,7 @@ else if (e.getSlot() == FLAG_SHOW_MAX_STOCK)
}
DynaShopAPI.openShopSettingGui(player, shopName);
}
- // HIDDEN_IN_COMMAND
+ // HIDDEN_IN_COMMAND (在指令中隱藏)
else if (e.getSlot() == FLAG_HIDDEN_IN_COMMAND)
{
if (data.get().contains("Options.flag.hiddenincommand"))
@@ -762,7 +762,7 @@ else if (e.getSlot() == FLAG_HIDDEN_IN_COMMAND)
}
DynaShopAPI.openShopSettingGui(player, shopName);
}
- // log
+ // log (日誌)
else if (e.getSlot() == LOG_TOGGLE)
{
if (e.isLeftClick())
@@ -796,7 +796,7 @@ else if (e.getSlot() == LOG_PRINT_ADMIN)
DynaShopAPI.openShopSettingGui(player, shopName);
}
- // 명령어
+ // 명령어 (指令)
else if (e.getSlot() == CMD_TOGGLE)
{
boolean active = data.get().contains("Options.command.active") && data.get().getBoolean("Options.command.active");
@@ -849,7 +849,7 @@ else if(e.isLeftClick())
OnChat.WaitForInput(player);
}
}
- // INTEGER_ONLY
+ // INTEGER_ONLY (僅整數)
else if (e.getSlot() == FLAG_INT_ONLY)
{
if (data.get().contains("Options.flag.integeronly"))
@@ -865,7 +865,7 @@ else if (e.getSlot() == FLAG_INT_ONLY)
}
DynaShopAPI.openShopSettingGui(player, shopName);
}
- // vault
+ // vault (金庫)
else if (e.getSlot() == CURRENCY_VAULT)
{
if (!currency.equalsIgnoreCase(Constants.S_VAULT))
@@ -874,7 +874,7 @@ else if (e.getSlot() == CURRENCY_VAULT)
}
DynaShopAPI.openShopSettingGui(player, shopName);
}
- // exp
+ // exp (經驗)
else if (e.getSlot() == CURRENCY_EXP)
{
if (!currency.equalsIgnoreCase(Constants.S_EXP))
@@ -884,7 +884,7 @@ else if (e.getSlot() == CURRENCY_EXP)
}
DynaShopAPI.openShopSettingGui(player, shopName);
}
- // jobpoint
+ // jobpoint (職業點數)
else if (e.getSlot() == CURRENCY_JP)
{
if (!JobsHook.jobsRebornActive)
@@ -899,7 +899,7 @@ else if (e.getSlot() == CURRENCY_JP)
}
DynaShopAPI.openShopSettingGui(player, shopName);
}
- // Player point
+ // Player point (玩家點数)
else if (e.getSlot() == CURRENCY_PP)
{
if (!PlayerpointHook.isPPActive)
diff --git a/src/main/java/me/sat7/dynamicshop/guis/StartPage.java b/src/main/java/me/sat7/dynamicshop/guis/StartPage.java
index 81e0221..c0ecf0b 100644
--- a/src/main/java/me/sat7/dynamicshop/guis/StartPage.java
+++ b/src/main/java/me/sat7/dynamicshop/guis/StartPage.java
@@ -61,7 +61,7 @@ public Inventory getGui(Player player)
inventory = Bukkit.createInventory(player, ccStartPage.get().getInt("Options.UiSlotCount"), ccStartPage.get().getString("Options.Title"));
- //아이콘, 이름, 로어, 인덱스, 커맨드
+ //아이콘, 이름, 로어, 인덱스, 커맨드 (圖示, 名稱, 描述, 索引, 指令)
ConfigurationSection cs = ccStartPage.get().getConfigurationSection("Buttons");
for (String s : cs.getKeys(false))
{
@@ -101,7 +101,7 @@ public Inventory getGui(Player player)
if (cs.contains(s + ".itemStack"))
{
- ItemMeta tempMeta = (ItemMeta) cs.get(s + ".itemStack"); // 저장된 메타 적용
+ ItemMeta tempMeta = (ItemMeta) cs.get(s + ".itemStack"); // 저장된 메타 적용 (套用已儲存的Meta)
meta = tempMeta.clone();
}
else
@@ -149,7 +149,7 @@ public void OnClickUpperInventory(InventoryClickEvent e)
{
if (e.getCurrentItem() == null || e.getCurrentItem().getType() == Material.AIR)
{
- // 새 버튼 추가
+ // 새 버튼 추가 (新增按鈕)
if (player.hasPermission(P_ADMIN_SHOP_EDIT))
{
StartPage.ccStartPage.get().set("Buttons." + e.getSlot() + ".displayName", "§3New Button");
@@ -177,10 +177,10 @@ public void OnClickUpperInventory(InventoryClickEvent e)
}
}
}
- // 우클릭
+ // 우클릭 (右鍵點擊)
else if (player.hasPermission(P_ADMIN_SHOP_EDIT))
{
- // 편집
+ // 편집 (編輯)
if (e.isShiftClick())
{
if (e.getCurrentItem() == null || e.getCurrentItem().getType() == Material.AIR) return;
@@ -188,7 +188,7 @@ else if (player.hasPermission(P_ADMIN_SHOP_EDIT))
selectedIndex = e.getSlot();
DynaShopAPI.openStartPageSettingGui(player, selectedIndex);
}
- // 이동
+ // 이동 (移動)
else
{
if (selectedIndex == -1)
diff --git a/src/main/java/me/sat7/dynamicshop/guis/StartPageSettings.java b/src/main/java/me/sat7/dynamicshop/guis/StartPageSettings.java
index 7bcfc89..f272374 100644
--- a/src/main/java/me/sat7/dynamicshop/guis/StartPageSettings.java
+++ b/src/main/java/me/sat7/dynamicshop/guis/StartPageSettings.java
@@ -41,19 +41,19 @@ public Inventory getGui(Player player, int slotIndex)
inventory = Bukkit.createInventory(player, 9, t(player, "START_PAGE.EDITOR_TITLE"));
- CreateCloseButton(player, CLOSE); // 닫기 버튼
+ CreateCloseButton(player, CLOSE); // 닫기 버튼 (關閉按鈕)
- CreateButton(NAME, Material.BOOK, t(player, "START_PAGE.EDIT_NAME"), ""); // 이름 버튼
- CreateButton(LORE, Material.BOOK, t(player, "START_PAGE.EDIT_LORE"), ""); // 설명 버튼
+ CreateButton(NAME, Material.BOOK, t(player, "START_PAGE.EDIT_NAME"), ""); // 이름 버튼 (名稱按鈕)
+ CreateButton(LORE, Material.BOOK, t(player, "START_PAGE.EDIT_LORE"), ""); // 설명 버튼 (說明按鈕)
- // 아이콘 버튼
+ // 아이콘 버튼 (圖示按鈕)
CreateButton(ICON, Material.getMaterial(StartPage.ccStartPage.get().getString("Buttons." + slotIndex + ".icon")), t(player, "START_PAGE.EDIT_ICON"), "");
String cmdString = StartPage.ccStartPage.get().getString("Buttons." + slotIndex + ".action");
- CreateButton(CMD, Material.REDSTONE_TORCH, t(player, "START_PAGE.EDIT_ACTION"), cmdString == null || cmdString.isEmpty() ? null : "§7/" + cmdString); // 액션 버튼
- CreateButton(SHOP_SHORTCUT, Material.EMERALD, t(player, "START_PAGE.SHOP_SHORTCUT"), ""); // 상점 바로가기 생성 버튼
- CreateButton(DECO, Material.BLUE_STAINED_GLASS_PANE, t(player, "START_PAGE.CREATE_DECO"), ""); // 장식 버튼
- CreateButton(DELETE, Material.BONE, t(player, "START_PAGE.REMOVE"), t(player, "START_PAGE.REMOVE_LORE")); // 삭제 버튼
+ CreateButton(CMD, Material.REDSTONE_TORCH, t(player, "START_PAGE.EDIT_ACTION"), cmdString == null || cmdString.isEmpty() ? null : "§7/" + cmdString); // 액션 버튼 (動作按鈕)
+ CreateButton(SHOP_SHORTCUT, Material.EMERALD, t(player, "START_PAGE.SHOP_SHORTCUT"), ""); // 상점 바로가기 생성 버튼 (建立商店捷徑按鈕)
+ CreateButton(DECO, Material.BLUE_STAINED_GLASS_PANE, t(player, "START_PAGE.CREATE_DECO"), ""); // 장식 버튼 (裝飾按鈕)
+ CreateButton(DELETE, Material.BONE, t(player, "START_PAGE.REMOVE"), t(player, "START_PAGE.REMOVE_LORE")); // 삭제 버튼 (刪除按鈕)
return inventory;
}
@@ -64,12 +64,12 @@ public void OnClickUpperInventory(InventoryClickEvent e)
Player player = (Player) e.getWhoClicked();
UUID uuid = player.getUniqueId();
- // 돌아가기
+ // 돌아가기 (返回)
if (e.getSlot() == CLOSE)
{
DynaShopAPI.openStartPage(player);
}
- // 버튼 삭제
+ // 버튼 삭제 (刪除按鈕)
else if (e.getSlot() == DELETE)
{
StartPage.ccStartPage.get().set("Buttons." + slotIndex, null);
@@ -77,7 +77,7 @@ else if (e.getSlot() == DELETE)
DynaShopAPI.openStartPage(player);
}
- //이름
+ //이름 (名稱)
else if (e.getSlot() == NAME)
{
player.sendMessage(DynamicShop.dsPrefix(player) + t(player, "START_PAGE.ENTER_NAME"));
@@ -85,7 +85,7 @@ else if (e.getSlot() == NAME)
UserUtil.userTempData.put(uuid,"waitforInput" + "btnName");
OnChat.WaitForInput(player);
}
- //설명
+ //설명 (說明)
else if (e.getSlot() == LORE)
{
player.sendMessage(DynamicShop.dsPrefix(player) + t(player, "START_PAGE.ENTER_LORE"));
@@ -93,13 +93,13 @@ else if (e.getSlot() == LORE)
UserUtil.userTempData.put(uuid,"waitforInput" + "btnLore");
OnChat.WaitForInput(player);
}
- //아이콘
+ //아이콘 (圖示)
else if (e.getSlot() == ICON)
{
UserUtil.userInteractItem.put(player.getUniqueId(), "startPage/" + slotIndex);
DynaShopAPI.openItemPalette(player, 1, "", slotIndex, 1, "");
}
- //액션
+ //액션 (動作)
else if (e.getSlot() == CMD)
{
player.sendMessage(DynamicShop.dsPrefix(player) + t(player, "START_PAGE.ENTER_ACTION"));
@@ -107,12 +107,12 @@ else if (e.getSlot() == CMD)
UserUtil.userTempData.put(uuid,"waitforInput" + "btnAction");
OnChat.WaitForInput(player);
}
- // 상점 숏컷
+ // 상점 숏컷 (商店捷徑)
else if (e.getSlot() == SHOP_SHORTCUT)
{
DynaShopAPI.openShopListUI(player, 1, slotIndex);
}
- // 장식
+// 장식 (裝飾)
else if (e.getSlot() == DECO)
{
DynaShopAPI.openColorPicker(player, slotIndex);
diff --git a/src/main/java/me/sat7/dynamicshop/guis/StockSimulator.java b/src/main/java/me/sat7/dynamicshop/guis/StockSimulator.java
index fc3725c..d322c8c 100644
--- a/src/main/java/me/sat7/dynamicshop/guis/StockSimulator.java
+++ b/src/main/java/me/sat7/dynamicshop/guis/StockSimulator.java
@@ -113,12 +113,12 @@ public void OnClickUpperInventory(InventoryClickEvent e)
{
Player player = (Player) e.getWhoClicked();
- // 닫기 버튼
+ // 닫기 버튼 (關閉按鈕)
if (e.getSlot() == CLOSE)
{
DynaShopAPI.openShopSettingGui(player, shopName);
}
- // 샘플 아이템 변경
+ // 샘플 아이템 변경 (變更範例物品)
else if (e.getSlot() == ITEM_1 || e.getSlot() == ITEM_2 || e.getSlot() == ITEM_3 || e.getSlot() == ITEM_4 || e.getSlot() == ITEM_5)
{
if (e.isLeftClick())
@@ -129,7 +129,7 @@ else if (e.isRightClick())
sampleStartIdx = Clamp(sampleStartIdx, 0, shopItemCount - 5);
CreateSampleDatas(sampleStartIdx);
}
- // 무작위 재고
+ // 무작위 재고 (隨機庫存)
else if (e.getSlot() == FLUC || e.getSlot() == FLUC_INTERVAL || e.getSlot() == FLUC_STRENGTH)
{
if (fluc)
@@ -167,7 +167,7 @@ else if (e.getSlot() == FLUC || e.getSlot() == FLUC_INTERVAL || e.getSlot() == F
UpdateBottomButtons();
}
- // 스톡 안정화
+ // 스톡 안정화 (庫存穩定)
else if (e.getSlot() == STABLE || e.getSlot() == STABLE_INTERVAL || e.getSlot() == STABLE_STRENGTH)
{
if (stable)
@@ -205,7 +205,7 @@ else if (e.getSlot() == STABLE || e.getSlot() == STABLE_INTERVAL || e.getSlot()
UpdateBottomButtons();
}
- // 시뮬레이션 실행
+ // 시뮬레이션 실행 (執行模擬)
else if (e.getSlot() == RUN)
{
if (e.isLeftClick())
@@ -235,14 +235,14 @@ private void CreateSampleDatas(int startIdx)
continue;
}
- int i = Integer.parseInt(item); // options에 대해 적용하지 않기 위해.
+ int i = Integer.parseInt(item); // options에 대해 적용하지 않기 위해. (為了不套用到options)
- if (!data.get().contains(item + ".value")) continue; // 장식용은 스킵
+ if (!data.get().contains(item + ".value")) continue; // 장식용은 스킵 (跳過裝飾品)
int stock = data.get().getInt(item + ".stock");
- if (stock < 1) continue; // 무한재고에 대해서는 스킵
+ if (stock < 1) continue; // 무한재고에 대해서는 스킵 (跳過無限庫存)
int oldMedian = data.get().getInt(item + ".median");
- if (oldMedian < 1) continue; // 고정가 상품에 대해서는 스킵
+ if (oldMedian < 1) continue; // 고정가 상품에 대해서는 스킵 (跳過固定價格商品)
SimulData simulData = new SimulData();
simulData.mat = data.get().getString(item + ".mat");
@@ -286,7 +286,7 @@ private void UpdateBottomButtons()
for (int i = 47; i < 54; i++)
inventory.setItem(i, null);
- // 랜덤
+ // 랜덤 (隨機)
if (fluc)
{
ArrayList fluctuationLore = new ArrayList<>(Arrays.asList(
@@ -318,7 +318,7 @@ private void UpdateBottomButtons()
inventory.setItem(FLUC, flucToggleBtn);
}
- // 안정화
+ // 안정화 (穩定)
if (stable)
{
ArrayList stableLore = new ArrayList<>(Arrays.asList(
@@ -359,12 +359,12 @@ private void RunSimulation()
}
final int[] time = new int[]{
- 48, 48 * 2, 48 * 3, //48 = 20분(마크 1일)
- 144 * 2, 144 * 4, 144 * 6, // 144 = 1시간
+ 48, 48 * 2, 48 * 3, //48 = 20분(마크 1일) (48 = 20分鐘(Minecraft 1天))
+ 144 * 2, 144 * 4, 144 * 6, // 144 = 1시간 (144 = 1小時)
144 * 8, 144 * 10, 144 * 12,
144 * 14, 144 * 16, 144 * 18,
144 * 20, 144 * 22, 144 * 24,
- 3456 * 2, 3456 * 3, 3456 * 4, // 3456 = 1일
+ 3456 * 2, 3456 * 3, 3456 * 4, // 3456 = 1일 (3456 = 1天)
3456 * 5, 3456 * 6, 3456 * 7};
Random generator = new Random();
diff --git a/src/main/java/me/sat7/dynamicshop/guis/UIManager.java b/src/main/java/me/sat7/dynamicshop/guis/UIManager.java
index bae7c59..485a8bb 100644
--- a/src/main/java/me/sat7/dynamicshop/guis/UIManager.java
+++ b/src/main/java/me/sat7/dynamicshop/guis/UIManager.java
@@ -35,7 +35,7 @@ public void OnOpen(InventoryOpenEvent e)
@EventHandler
public void OnClose(InventoryCloseEvent e)
{
- // 기존에 인벤토리가 열려있는 상태에서 다른것을 열면 close가 먼저 불림.
+ // 기존에 인벤토리가 열려있는 상태에서 다른것을 열면 close가 먼저 불림. (如果已經開啟一個介面,再開啟另一個介面時,會先觸發close事件。)
Player player = (Player) e.getPlayer();
currentUI.remove(player);
}
@@ -52,7 +52,7 @@ public static void Open(Player player, Inventory inventory, InGameUI inGameUI)
@Override
public void run()
{
- player.openInventory(inventory); // 가장 먼저 불려야함. (버킷에서 새 인벤이 열릴때 기존의 것이 닫힘처리됨)
+ player.openInventory(inventory); // 가장 먼저 불려야함. (버킷에서 새 인벤이 열릴때 기존의 것이 닫힘처리됨) (必須最先被呼叫。(因為在Bukkit中,當新的介面開啟時,舊的介面會被處理為關閉))
currentUI.put(player, inGameUI);
}
diff --git a/src/main/java/me/sat7/dynamicshop/jobshook/JobsHook.java b/src/main/java/me/sat7/dynamicshop/jobshook/JobsHook.java
index 1d3b36d..4729f7e 100644
--- a/src/main/java/me/sat7/dynamicshop/jobshook/JobsHook.java
+++ b/src/main/java/me/sat7/dynamicshop/jobshook/JobsHook.java
@@ -20,7 +20,7 @@ private JobsHook()
}
- // JobsReborn의 points 수정
+ // JobsReborn의 points 수정 (修改JobsReborn的點數)
public static boolean addJobsPoint(Player p, double amount)
{
if (!jobsRebornActive)
@@ -30,7 +30,7 @@ public static boolean addJobsPoint(Player p, double amount)
}
PlayerPoints pp = JobsHook.getJobsPlayerPoints(p);
- // 차감
+ // 차감 (扣除)
if (amount < 0.0)
{
if (pp.havePoints(amount * -1))
@@ -38,7 +38,7 @@ public static boolean addJobsPoint(Player p, double amount)
pp.takePoints(amount * -1);
return true;
}
- // 포인트 부족
+ // 포인트 부족 (點數不足)
else
{
p.sendMessage(DynamicShop.dsPrefix(p) + t(p, "MESSAGE.NOT_ENOUGH_POINT")
@@ -46,7 +46,7 @@ public static boolean addJobsPoint(Player p, double amount)
return false;
}
}
- // 증가
+ // 증가 (增加)
else
{
pp.addPoints(amount);
@@ -54,7 +54,7 @@ public static boolean addJobsPoint(Player p, double amount)
}
}
- // JobsReborn. 플레이어의 잔액 확인
+ // JobsReborn. 플레이어의 잔액 확인 (JobsReborn. 確認玩家餘額)
public static double getCurJobPoints(Player p)
{
JobsPlayer jobsPlayer = Jobs.getPlayerManager().getJobsPlayer(p);
diff --git a/src/main/java/me/sat7/dynamicshop/transactions/Buy.java b/src/main/java/me/sat7/dynamicshop/transactions/Buy.java
index e41c3ba..e117fcd 100644
--- a/src/main/java/me/sat7/dynamicshop/transactions/Buy.java
+++ b/src/main/java/me/sat7/dynamicshop/transactions/Buy.java
@@ -58,7 +58,7 @@ else if (currency.equalsIgnoreCase(Constants.S_PLAYERPOINT))
playerBalance = econ.getBalance(player);
}
- // 플레이어 당 거래량 제한 확인
+ // 플레이어 당 거래량 제한 확인 (確認每個玩家的交易限制)
int tradeIdxInt = Integer.parseInt(tradeIdx);
int tradeLimitPerPlayer = ShopUtil.GetBuyLimitPerPlayer(shopName, tradeIdxInt);
int playerTradingVolume = UserUtil.GetPlayerTradingVolume(player, shopName, HashUtil.GetItemHash(itemStack));
@@ -92,7 +92,7 @@ else if (currency.equalsIgnoreCase(Constants.S_PLAYERPOINT))
tradeAmount++;
}
- // 실 구매 가능량이 0이다 = 돈이 없다.
+ // 실 구매 가능량이 0이다 = 돈이 없다. (實際可購買量為0 = 沒有錢)
if (tradeAmount <= 0)
{
String message = "";
@@ -118,7 +118,7 @@ else if (currency.equalsIgnoreCase(Constants.S_EXP))
return;
}
- // 상점 재고 부족
+ // 상점 재고 부족 (商店庫存不足)
if (!infiniteStock && stockOld <= tradeAmount)
{
player.sendMessage(DynamicShop.dsPrefix(player) + t(player, "MESSAGE.OUT_OF_STOCK"));
@@ -180,34 +180,34 @@ else if (currency.equalsIgnoreCase(Constants.S_EXP))
leftAmount -= giveAmount;
}
- // 플레이어 당 거래량 제한 아이템에 대한 처리.
+ // 플레이어 당 거래량 제한 아이템에 대한 처리. (處理每個玩家的交易限制物品)
if (tradeLimitPerPlayer < Integer.MAX_VALUE)
{
UserUtil.OnPlayerTradeLimitedItem(player, shopName, HashUtil.GetItemHash(itemStack), tradeAmount, false);
}
- //로그 기록
+ //로그 기록 (日誌記錄)
LogUtil.addLog(shopName, itemStack.getType().toString(), tradeAmount, priceSum, currency, player.getName());
- // 메시지 출력
+ // 메시지 출력 (輸出訊息)
SendBuyMessage(currency, econ, player, tradeAmount, priceSum, itemStack);
- // 플레이어에게 소리 재생
+ // 플레이어에게 소리 재생 (向玩家播放音效)
SoundUtil.playerSoundEffect(player, "buy");
- // 상점 계좌 잔액 수정
+ // 상점 계좌 잔액 수정 (修改商店帳戶餘額)
if (data.get().contains("Options.Balance"))
{
ShopUtil.addShopBalance(shopName, priceSum);
}
- // 커맨드 실행
+ // 커맨드 실행 (執行指令)
RunBuyCommand(data, player, shopName, itemStack, tradeAmount, priceSum);
ShopUtil.shopDirty.put(shopName, true);
DynaShopAPI.openItemTradeGui(player, shopName, tradeIdx);
- // 이벤트 호출
+ // 이벤트 호출 (呼叫事件)
ShopBuySellEvent event = new ShopBuySellEvent(true, priceBuyOld, Calc.getCurrentPrice(shopName, tradeIdx, true), priceSellOld, DynaShopAPI.getSellPrice(shopName, itemStack), stockOld, DynaShopAPI.getStock(shopName, itemStack), DynaShopAPI.getMedian(shopName, itemStack), shopName, itemStack, player);
Bukkit.getPluginManager().callEvent(event);
}
diff --git a/src/main/java/me/sat7/dynamicshop/transactions/Calc.java b/src/main/java/me/sat7/dynamicshop/transactions/Calc.java
index 86f242f..3d49dac 100644
--- a/src/main/java/me/sat7/dynamicshop/transactions/Calc.java
+++ b/src/main/java/me/sat7/dynamicshop/transactions/Calc.java
@@ -12,7 +12,7 @@ private Calc()
}
- // 특정 아이탬의 현재 가치를 계산 (다이나믹 or 고정가) (세금 반영)
+ // 특정 아이탬의 현재 가치를 계산 (다이나믹 or 고정가) (세금 반영) (計算特定物品的目前價值(動態或固定價格)(已含稅))
public static double getCurrentPrice(String shopName, String idx, boolean buy)
{
return getCurrentPrice(shopName, idx, buy, false);
@@ -57,14 +57,14 @@ public static double getCurrentPrice(String shopName, String idx, boolean buy, b
price = max;
}
- // 할인
+ // 할인 (折扣)
if (data.contains(idx + ".discount"))
{
int discount = data.getInt(idx + ".discount");
price = price * (100 - discount) / 100;
}
- // 판매세 계산 (임의 지정된 판매가치가 없는 경우에만)
+ // 판매세 계산 (임의 지정된 판매가치가 없는 경우에만) (計算銷售稅(僅在沒有任意指定銷售價值時))
if (!buy && !data.contains(idx + ".value2"))
{
double tax = ((price / 100) * getTaxRate(shopName));
@@ -84,7 +84,7 @@ public static double getCurrentPrice(String shopName, String idx, boolean buy, b
}
}
- // 특정 아이탬의 앞으로 n개의 가치합을 계산 (다이나믹 or 고정가) ([0] 세금 반영된 값, [1] 세금)
+ // 특정 아이탬의 앞으로 n개의 가치합을 계산 (다이나믹 or 고정가) ([0] 세금 반영된 값, [1] 세금) (計算特定物品未來n個的價值總和(動態或固定價格)([0]含稅值,[1]稅金))
public static double[] calcTotalCost(String shopName, String idx, int amount)
{
FileConfiguration data = ShopUtil.shopConfigFiles.get(shopName).get();
@@ -139,14 +139,14 @@ public static double[] calcTotalCost(String shopName, String idx, int amount)
}
}
- // 할인
+ // 할인 (折扣)
if (data.contains(idx + ".discount"))
{
int discount = data.getInt(idx + ".discount");
total = total * (100 - discount) / 100;
}
- // 세금 적용 (판매가 별도지정시 세금계산 안함)
+ // 세금 적용 (판매가 별도지정시 세금계산 안함) (套用稅金(另外指定售價時不計算稅金))
double tax = 0;
if (amount < 0 && !data.contains(idx + ".value2"))
{
@@ -169,7 +169,7 @@ public static double[] calcTotalCost(String shopName, String idx, int amount)
return new double[]{total, tax};
}
- // 상점의 세율 반환
+ // 상점의 세율 반환 (傳回商店的稅率)
public static int getTaxRate(String shopName)
{
CustomConfig data = ShopUtil.shopConfigFiles.get(shopName);
diff --git a/src/main/java/me/sat7/dynamicshop/transactions/Sell.java b/src/main/java/me/sat7/dynamicshop/transactions/Sell.java
index 8c7efda..6146fdc 100644
--- a/src/main/java/me/sat7/dynamicshop/transactions/Sell.java
+++ b/src/main/java/me/sat7/dynamicshop/transactions/Sell.java
@@ -47,7 +47,7 @@ public static double quickSellItem(Player player, ItemStack itemStack, String sh
double deliveryCharge = ShopUtil.CalcShipping(shopName, player);
double priceSum = -deliveryCharge;
- // 실제 판매 가능량 확인
+ // 실제 판매 가능량 확인 (確認實際可銷售數量)
int tradeAmount;
if (player != null)
{
@@ -71,7 +71,7 @@ public static double quickSellItem(Player player, ItemStack itemStack, String sh
tradeAmount = Math.max(0, tradeAmount);
}
- // 판매할 아이탬이 없음
+ // 판매할 아이탬이 없음 (沒有可銷售的物品)
if (tradeAmount == 0)
{
if (player != null)
@@ -81,7 +81,7 @@ public static double quickSellItem(Player player, ItemStack itemStack, String sh
return 0;
}
- // 플레이어 당 거래량 제한 확인
+ // 플레이어 당 거래량 제한 확인 (確認每個玩家的交易限制)
int sellLimit = ShopUtil.GetSellLimitPerPlayer(shopName, tradeIdx);
if (player != null && sellLimit != 0)
{
@@ -93,11 +93,11 @@ public static double quickSellItem(Player player, ItemStack itemStack, String sh
}
}
- // 비용 계산
+ // 비용 계산 (計算費用)
double[] calcResult = Calc.calcTotalCost(shopName, String.valueOf(tradeIdx), -tradeAmount);
priceSum += calcResult[0];
- // 계산된 비용에 대한 처리 시도
+ // 계산된 비용에 대한 처리 시도 (嘗試處理計算出的費用)
Economy econ = DynamicShop.getEconomy();
if (!CheckTransactionSuccess(currencyType, player, priceSum))
{
@@ -105,7 +105,7 @@ public static double quickSellItem(Player player, ItemStack itemStack, String sh
return 0;
}
- // 플레이어 인벤토리에서 아이템 제거
+ // 플레이어 인벤토리에서 아이템 제거 (從玩家背包中移除物品)
if (player != null)
{
if (isShiftClick)
@@ -154,43 +154,43 @@ public static double quickSellItem(Player player, ItemStack itemStack, String sh
player.updateInventory();
}
- // 플레이어 당 거래량 제한 아이템에 대한 처리.
+ // 플레이어 당 거래량 제한 아이템에 대한 처리. (處理每個玩家的交易限制物品)
if (player != null & sellLimit != Integer.MIN_VALUE)
{
UserUtil.OnPlayerTradeLimitedItem(player, shopName, HashUtil.GetItemHash(itemStack), tradeAmount, true);
}
- // 로그 기록
+ // 로그 기록 (日誌記錄)
LogUtil.addLog(shopName, itemStack.getType().toString(), -tradeAmount, priceSum, currencyType, player != null ? player.getName() : shopName);
if (player != null)
{
- // 플레이어에게 메시지 출력
+ // 플레이어에게 메시지 출력 (向玩家輸出訊息)
SendSellMessage(currencyType, econ, player, tradeAmount, priceSum, itemStack);
- // 플레이어에게 소리 재생
+ // 플레이어에게 소리 재생 (向玩家播放音效)
if (playSound)
player.playSound(player.getLocation(), Sound.valueOf("ENTITY_EXPERIENCE_ORB_PICKUP"), 1, 1);
}
- // 상점 계좌 잔액 수정
+ // 상점 계좌 잔액 수정 (修改商店帳戶餘額)
if (data.get().contains("Options.Balance"))
{
ShopUtil.addShopBalance(shopName, priceSum * -1);
}
- // 상점 재고 증가
+ // 상점 재고 증가 (增加商店庫存)
if (stockOld > 0)
{
data.get().set(tradeIdx + ".stock", MathUtil.SafeAdd(stockOld, tradeAmount));
}
- // 커맨드 실행
+ // 커맨드 실행 (執行指令)
RunSellCommand(data, player, shopName, itemStack, tradeAmount, priceSum, calcResult[1]);
- // 더티
+ // 더티 (Dirty)
ShopUtil.shopDirty.put(shopName, true);
- // 이벤트 호출
+ // 이벤트 호출 (呼叫事件)
if (player != null)
{
ShopBuySellEvent event = new ShopBuySellEvent(false, priceBuyOld, Calc.getCurrentPrice(shopName, String.valueOf(tradeIdx), true),
@@ -213,14 +213,14 @@ public static void sell(String currency, Player player, String shopName, String
double priceSellOld = DynaShopAPI.getSellPrice(shopName, itemStack);
double priceBuyOld = Calc.getCurrentPrice(shopName, String.valueOf(tradeIdx), true);
int stockOld = data.get().getInt(tradeIdx + ".stock");
- // 상점에 돈이 없음
+ // 상점에 돈이 없음 (商店金額不足)
if (ShopUtil.getShopBalance(shopName) != -1 && ShopUtil.getShopBalance(shopName) < Calc.calcTotalCost(shopName, tradeIdx, itemStack.getAmount())[0])
{
player.sendMessage(DynamicShop.dsPrefix(player) + t(player, "MESSAGE.SHOP_BAL_LOW"));
return;
}
- // 상점이 매입을 거절.
+ // 상점이 매입을 거절. (商店拒絕收購)
int stock = data.get().getInt(tradeIdx + ".stock");
int maxStock = data.get().getInt(tradeIdx + ".maxStock", -1);
if (maxStock != -1 && maxStock <= stock)
@@ -229,7 +229,7 @@ public static void sell(String currency, Player player, String shopName, String
return;
}
- // 실제 판매 가능량 확인
+ // 실제 판매 가능량 확인 (確認實際可銷售數量)
int tradeAmount = itemStack.getAmount();
int playerHas = GetPlayerItemCount(player, itemStack);
if (tradeAmount > playerHas)
@@ -237,7 +237,7 @@ public static void sell(String currency, Player player, String shopName, String
tradeAmount = playerHas;
}
- // 판매할 아이탬이 없음
+ // 판매할 아이탬이 없음 (沒有可銷售的物品)
if (tradeAmount == 0)
{
player.sendMessage(DynamicShop.dsPrefix(player) + t(player, "MESSAGE.NO_ITEM_TO_SELL"));
@@ -250,7 +250,7 @@ public static void sell(String currency, Player player, String shopName, String
tradeAmount = Math.max(0, tradeAmount);
}
- // 플레이어 당 거래량 제한 확인
+ // 플레이어 당 거래량 제한 확인 (確認每個玩家的交易限制)
int tradeIdxInt = Integer.parseInt(tradeIdx);
int tradeLimitPerPlayer = ShopUtil.GetSellLimitPerPlayer(shopName, tradeIdxInt);
if (tradeLimitPerPlayer != 0)
@@ -260,58 +260,58 @@ public static void sell(String currency, Player player, String shopName, String
return;
}
- // 비용 계산
+ // 비용 계산 (計算費用)
double[] calcResult = Calc.calcTotalCost(shopName, tradeIdx, -tradeAmount);
priceSum += calcResult[0];
- // 계산된 비용에 대한 처리 시도
+ // 계산된 비용에 대한 처리 시도 (嘗試處理計算出的費用)
Economy econ = DynamicShop.getEconomy();
if (!CheckTransactionSuccess(currency, player, priceSum))
return;
- // 플레이어 인벤토리에서 아이템 제거
+ // 플레이어 인벤토리에서 아이템 제거 (從玩家背包中移除物品)
ItemStack delete = new ItemStack(itemStack);
delete.setAmount(tradeAmount);
player.getInventory().removeItem(delete);
player.updateInventory();
- // 플레이어 당 거래량 제한 아이템에 대한 처리.
+ // 플레이어 당 거래량 제한 아이템에 대한 처리. (處理每個玩家的交易限制物品)
if (tradeLimitPerPlayer != Integer.MIN_VALUE)
{
UserUtil.OnPlayerTradeLimitedItem(player, shopName, HashUtil.GetItemHash(itemStack), tradeAmount, true);
}
- // 로그 기록
+ // 로그 기록 (日誌記錄)
LogUtil.addLog(shopName, itemStack.getType().toString(), -tradeAmount, priceSum, currency, player.getName());
// 메시지 출력
SendSellMessage(currency, econ, player, tradeAmount, priceSum, itemStack);
- // 플레이어에게 소리 재생
+ // 플레이어에게 소리 재생 (向玩家播放音效)
SoundUtil.playerSoundEffect(player, "sell");
- // 상점 계좌 잔액 수정
+ // 상점 계좌 잔액 수정 (修改商店帳戶餘額)
if (data.get().contains("Options.Balance"))
{
ShopUtil.addShopBalance(shopName, priceSum * -1);
}
- // 상점 재고 증가
+ // 상점 재고 증가 (增加商店庫存)
if (!infiniteStock)
{
data.get().set(tradeIdx + ".stock", MathUtil.SafeAdd(stockOld, tradeAmount));
}
- // 커맨드 실행
+ // 커맨드 실행 (執行指令)
RunSellCommand(data, player, shopName, itemStack, tradeAmount, priceSum, calcResult[1]);
- // 더티
+ // 더티 (Dirty)
ShopUtil.shopDirty.put(shopName, true);
- // 이벤트 호출
+ // 이벤트 호출 (呼叫事件)
ShopBuySellEvent event = new ShopBuySellEvent(false, priceBuyOld, Calc.getCurrentPrice(shopName, tradeIdx, true), priceSellOld, DynaShopAPI.getSellPrice(shopName, itemStack), stockOld, DynaShopAPI.getStock(shopName, itemStack), DynaShopAPI.getMedian(shopName, itemStack), shopName, itemStack, player);
Bukkit.getPluginManager().callEvent(event);
- // UI 갱신
+ // UI 갱신 (UI更新)
DynaShopAPI.openItemTradeGui(player, shopName, tradeIdx);
}
diff --git a/src/main/java/me/sat7/dynamicshop/utilities/ConfigUtil.java b/src/main/java/me/sat7/dynamicshop/utilities/ConfigUtil.java
index 6cc6374..58a7865 100644
--- a/src/main/java/me/sat7/dynamicshop/utilities/ConfigUtil.java
+++ b/src/main/java/me/sat7/dynamicshop/utilities/ConfigUtil.java
@@ -281,6 +281,11 @@ public static boolean GetEnableInventoryClickSearch_Shop()
return config.getBoolean("UI.EnableInventoryClickSearch.Shop");
}
+ public static boolean GetDebugMode()
+ {
+ return config.getBoolean("DebugMode");
+ }
+
// [ Log ] ==========
public static boolean GetSaveLogs()
diff --git a/src/main/java/me/sat7/dynamicshop/utilities/ItemsUtil.java b/src/main/java/me/sat7/dynamicshop/utilities/ItemsUtil.java
index 0ffd079..9462d16 100644
--- a/src/main/java/me/sat7/dynamicshop/utilities/ItemsUtil.java
+++ b/src/main/java/me/sat7/dynamicshop/utilities/ItemsUtil.java
@@ -18,7 +18,7 @@ private ItemsUtil()
}
- // 지정된 이름,lore,수량의 아이탬 스택 생성및 반환
+ // 지정된 이름,lore,수량의 아이탬 스택 생성및 반환 (建立並傳回具有指定名稱、lore和數量的物品堆疊)
public static ItemStack createItemStack(Material material, ItemMeta _meta, String name, ArrayList lore, int amount)
{
ItemStack istack = new ItemStack(material, amount);
@@ -31,7 +31,7 @@ public static ItemStack createItemStack(Material material, ItemMeta _meta, Strin
return istack;
}
- // 아이탬 이름 정돈
+ // 아이탬 이름 정돈 (整理物品名稱)
public static String getBeautifiedName(Material mat)
{
return getBeautifiedName(mat.toString());
@@ -53,7 +53,7 @@ public static String getBeautifiedName(String matName)
return finalStr.toString();
}
- // 아이탬 정보 출력
+ // 아이탬 정보 출력 (輸出物品資訊)
public static void sendItemInfo(CommandSender sender, String shopName, int idx, String msgType)
{
if(sender instanceof Player)
diff --git a/src/main/java/me/sat7/dynamicshop/utilities/LangUtil.java b/src/main/java/me/sat7/dynamicshop/utilities/LangUtil.java
index 90cd64d..cbc0f5d 100644
--- a/src/main/java/me/sat7/dynamicshop/utilities/LangUtil.java
+++ b/src/main/java/me/sat7/dynamicshop/utilities/LangUtil.java
@@ -28,905 +28,17 @@ private LangUtil()
public static void setupLangFile(String lang)
{
// 한국어
- {
- ccLang.setup("Lang_V3_ko-KR", null);
-
- ccLang.get().addDefault("START_PAGE.EDITOR_TITLE", "§3아이콘 편집");
- ccLang.get().addDefault("START_PAGE.EDIT_NAME", "§f이름 바꾸기");
- ccLang.get().addDefault("START_PAGE.EDIT_LORE", "§f설명 바꾸기");
- ccLang.get().addDefault("START_PAGE.EDIT_ICON", "§f아이콘 바꾸기");
- ccLang.get().addDefault("START_PAGE.EDIT_ACTION", "§f실행 명령어 바꾸기");
- ccLang.get().addDefault("START_PAGE.SHOP_SHORTCUT", "§f상점으로 가는 버튼 만들기");
- ccLang.get().addDefault("START_PAGE.CREATE_DECO", "§f장식 버튼 만들기");
- ccLang.get().addDefault("START_PAGE.ENTER_SHOP_NAME", "상점 이름을 입력하세요.");
- ccLang.get().addDefault("START_PAGE.DEFAULT_SHOP_LORE", "§f§n클릭: 상점으로 가기");
- ccLang.get().addDefault("START_PAGE.ITEM_MOVE_LORE", "§e우클릭: 이동");
- ccLang.get().addDefault("START_PAGE.ITEM_COPY_LORE", "§e우클릭: 복사");
- ccLang.get().addDefault("START_PAGE.ITEM_REMOVE_LORE", "§eShift 좌클릭: 삭제");
- ccLang.get().addDefault("START_PAGE.ITEM_EDIT_LORE", "§eShift우클릭: 편집");
- ccLang.get().addDefault("START_PAGE.REMOVE", "§f제거");
- ccLang.get().addDefault("START_PAGE.REMOVE_LORE", "§f이 버튼을 시작페이지에서 제거합니다.");
- ccLang.get().addDefault("START_PAGE.ENTER_NAME", "버튼의 새 이름을 입력하세요.");
- ccLang.get().addDefault("START_PAGE.ENTER_LORE", "버튼의 새 설명을 입력하세요.");
- ccLang.get().addDefault("START_PAGE.ENTER_ICON", "버튼의 아이콘으로 사용할 아이탬 이름을 입력하세요. (영문. 대소문자 구분없음)");
- ccLang.get().addDefault("START_PAGE.ENTER_ACTION", "명령어를 '/' 제외하고 입력하세요. 버튼을 눌렀을때 이 명령어가 실행됩니다.");
- ccLang.get().addDefault("START_PAGE.ENTER_COLOR", "장식 버튼의 색상을 입력하세요. (영문)");
- ccLang.get().addDefault("START_PAGE.SHOP_LIST_TITLE", "§3상점 목록");
- ccLang.get().addDefault("START_PAGE.SHOP_LIST.PAGE_TITLE", "§f{curPage}/{maxPage} 페이지");
- ccLang.get().addDefault("START_PAGE.SHOP_LIST.PAGE_LORE", "§e좌클릭: 이전 페이지\n§e우클릭: 다음 페이지");
-
- ccLang.get().addDefault("COLOR_PICKER_TITLE", "§3색상 선택");
-
- ccLang.get().addDefault("SHOP.TRADE_LORE", "§f§n클릭: 거래");
- ccLang.get().addDefault("SHOP.BUY_PRICE", "§f구매: {num}");
- ccLang.get().addDefault("SHOP.SELL_PRICE", "§f판매: {num}");
- ccLang.get().addDefault("SHOP.BUY_PRICE_DISCOUNTED", "§f구매: §8§m{num}§r §a{num2}");
- ccLang.get().addDefault("SHOP.SELL_PRICE_DISCOUNTED", "§f판매: §8§m{num}§r §c{num2}");
- ccLang.get().addDefault("SHOP.BUY_PRICE_PP", "§f구매: {num}PP");
- ccLang.get().addDefault("SHOP.SELL_PRICE_PP", "§f판매: {num}PP");
- ccLang.get().addDefault("SHOP.BUY_PRICE_EXP", "§f구매: {num}Exp");
- ccLang.get().addDefault("SHOP.SELL_PRICE_EXP", "§f판매: {num}Exp");
- ccLang.get().addDefault("SHOP.BUY_PRICE_DISCOUNTED_EXP", "§f구매: §8§m{num}Exp§r §a{num2}Exp");
- ccLang.get().addDefault("SHOP.SELL_PRICE_DISCOUNTED_EXP", "§f판매: §8§m{num}Exp§r §c{num2}Exp");
- ccLang.get().addDefault("SHOP.BUY_PRICE_DISCOUNTED_PP", "§f구매: §8§m{num}PP§r §a{num2}PP");
- ccLang.get().addDefault("SHOP.SELL_PRICE_DISCOUNTED_PP", "§f판매: §8§m{num}PP§r §c{num2}PP");
- ccLang.get().addDefault("SHOP.BUY_PRICE_JP", "§f구매: {num}JP");
- ccLang.get().addDefault("SHOP.SELL_PRICE_JP", "§f판매: {num}JP");
- ccLang.get().addDefault("SHOP.BUY_PRICE_DISCOUNTED_JP", "§f구매: §8§m{num}JP§r §a{num2}JP");
- ccLang.get().addDefault("SHOP.SELL_PRICE_DISCOUNTED_JP", "§f판매: §8§m{num}JP§r §c{num2}JP");
- ccLang.get().addDefault("SHOP.STOCK", "§8재고: {num}");
- ccLang.get().addDefault("SHOP.STOCK_2", "§8재고: {stock}/{max_stock}");
- ccLang.get().addDefault("SHOP.INF_STOCK", "§8무한");
- ccLang.get().addDefault("SHOP.STATIC_PRICE", "§8[고정 가격]");
- ccLang.get().addDefault("SHOP.STACKS", "§8{num} 스택");
- ccLang.get().addDefault("SHOP.ITEM_MOVE_LORE", "§e우클릭: 이동");
- ccLang.get().addDefault("SHOP.ITEM_COPY_LORE", "§e우클릭: 복사");
- ccLang.get().addDefault("SHOP.ITEM_EDIT_LORE", "§eShift우클릭: 편집");
- ccLang.get().addDefault("SHOP.DECO_DELETE_LORE", "§eShift우클릭: 삭제");
- ccLang.get().addDefault("SHOP.PAGE_TITLE", "§f{curPage}/{maxPage} 페이지");
- ccLang.get().addDefault("SHOP.PAGE_LORE_V2", "§f§n좌클릭: 이전 페이지\n§f§n우클릭: 다음 페이지\n§7인벤토리에서 아이템을 클릭하면 \n§7그 아이템이 있는 페이지로 이동합니다.");
- ccLang.get().addDefault("SHOP.GO_TO_PAGE_EDITOR", "§eShift+우: 페이지 에디터");
- ccLang.get().addDefault("SHOP.ITEM_MOVE_SELECTED", "아이탬 선택됨. 비어있는 칸을 우클릭하면 이동합니다.");
- ccLang.get().addDefault("SHOP.PERMISSION", "§f퍼미션:");
- ccLang.get().addDefault("SHOP.PERMISSION_ITEM", "§7 - {permission}");
- ccLang.get().addDefault("SHOP.FLAGS", "§e플래그:");
- ccLang.get().addDefault("SHOP.FLAGS_ITEM", "§e - {flag}");
- ccLang.get().addDefault("SHOP.SHOP_BAL_INF", "§f상점 계좌 무제한");
- ccLang.get().addDefault("SHOP.SHOP_BAL", "§f상점 계좌 잔액");
- ccLang.get().addDefault("SHOP.SHOP_LOCATION", "§f상점 위치: x {x}, y {y}, z {z}");
- ccLang.get().addDefault("SHOP.SHOP_LOCATION_B", "§f상점 위치: ");
- ccLang.get().addDefault("SHOP.SHOP_INFO_DASH", "§7 - ");
- ccLang.get().addDefault("SHOP.DISABLED", "§c비활성§8|§f");
- ccLang.get().addDefault("SHOP.INCOMPLETE_DATA", "불완전한 데이터");
- ccLang.get().addDefault("SHOP.INCOMPLETE_DATA_Lore", "이 아이템은 어드민이 아닌\n유저에게는 보이지 않습니다.\nIndex: ");
- ccLang.get().addDefault("SHOP.TRADE_LIMIT_BUY", "§a구매량 제한 : {num} 남음");
- ccLang.get().addDefault("SHOP.TRADE_LIMIT_SELL", "§a판매량 제한 : {num} 남음");
- ccLang.get().addDefault("SHOP.TRADE_LIMIT_TIMER", "§a다음 리셋: {time}");
- ccLang.get().addDefault("SHOP.CLICK_TO_ADD", "§e클릭: 추가");
-
- ccLang.get().addDefault("SHOP_SETTING_TITLE", "§3상점 설정");
- ccLang.get().addDefault("SHOP_SETTING.LOG_TOGGLE_LORE", "§e우클릭: 로그 뷰어");
- ccLang.get().addDefault("SHOP_SETTING.LOG_PRINT_CONSOLE", "§f로그를 콘솔에 출력");
- ccLang.get().addDefault("SHOP_SETTING.LOG_PRINT_ADMIN", "§f로그를 어드민에게 출력");
- ccLang.get().addDefault("SHOP_SETTING.MAX_PAGE", "§f최대 페이지");
- ccLang.get().addDefault("SHOP_SETTING.MAX_PAGE_LORE", "§f상점의 최대 페이지를 설정합니다");
- ccLang.get().addDefault("SHOP_SETTING.BACKGROUND", "§f배경 색상");
- ccLang.get().addDefault("SHOP_SETTING.BACKGROUND_LORE", "§e클릭: 변경");
- ccLang.get().addDefault("SHOP_SETTING.L_R_SHIFT", "§e좌: -1 우: +1 Shift: x5");
- ccLang.get().addDefault("SHOP_SETTING.FLAG", "§f플래그");
- ccLang.get().addDefault("SHOP_SETTING.SHOP_SETTINGS_LORE", "§e우클릭: 상점 편집");
- ccLang.get().addDefault("SHOP_SETTING.SIGN_SHOP_LORE", "§f표지판을 통해서만 접근할 수 있습니다.");
- ccLang.get().addDefault("SHOP_SETTING.LOCAL_SHOP_LORE", "§f실제 상점 위치를 방문해야 합니다.\n§f상점의 위치를 설정해야만 합니다.");
- ccLang.get().addDefault("SHOP_SETTING.DELIVERY_CHARGE_LORE", "§f배달비를 지불하고 localshop에서 원격으로 거래합니다.");
- ccLang.get().addDefault("SHOP_SETTING.SELECTED", "§2선택됨");
- ccLang.get().addDefault("SHOP_SETTING.CURRENCY", "§f화폐 유형: ");
- ccLang.get().addDefault("SHOP_SETTING.VAULT_LORE", "§f기본값 입니다.");
- ccLang.get().addDefault("SHOP_SETTING.EXP_LORE", "§f플레이어의 경험치로 거래합니다.");
- ccLang.get().addDefault("SHOP_SETTING.JOB_POINT_LORE", "§fJobs 플러그인의 job point로 거래합니다.");
- ccLang.get().addDefault("SHOP_SETTING.PLAYER_POINT_LORE", "§fPlayerPoint 플러그인의 point로 거래합니다.");
- ccLang.get().addDefault("SHOP_SETTING.SHOW_VALUE_CHANGE_LORE", "§f가격 변화량을 표시합니다.");
- ccLang.get().addDefault("SHOP_SETTING.HIDE_STOCK", "§f재고 수량 표시를 숨깁니다.");
- ccLang.get().addDefault("SHOP_SETTING.HIDE_PRICING_TYPE", "§f가격 유형 표기를 숨깁니다.");
- ccLang.get().addDefault("SHOP_SETTING.HIDE_SHOP_BALANCE", "§f상점 계좌 잔액을 숨깁니다.");
- ccLang.get().addDefault("SHOP_SETTING.SHOW_MAX_STOCK", "§f재고 상한을 표시합니다.");
- ccLang.get().addDefault("SHOP_SETTING.HIDDEN_IN_COMMAND", "§f명령어 자동완성시 이 상점을 표시하지 않습니다.");
- ccLang.get().addDefault("SHOP_SETTING.INTEGER_ONLY", "§f구매 가격이 올림 처리됩니다.\n§f판매 가격은 내림 처리됩니다.");
- ccLang.get().addDefault("SHOP_SETTING.PERMISSION", "§f퍼미션");
- ccLang.get().addDefault("SHOP_SETTING.STATE", "§f상태");
- ccLang.get().addDefault("SHOP_SETTING.STATE_ENABLE", "§a활성");
- ccLang.get().addDefault("SHOP_SETTING.STATE_DISABLE", "§c비활성");
- ccLang.get().addDefault("SHOP_SETTING.ROTATION_EDITOR", "§f로테이션: ");
- ccLang.get().addDefault("SHOP_SETTING.ROTATION_EDITOR_LORE", "§e클릭: 로테이션 에디터");
- ccLang.get().addDefault("SHOP_SETTING.COMMAND_TOGGLE", "§f커맨드 실행");
- ccLang.get().addDefault("SHOP_SETTING.COMMAND_TOGGLE_LORE", "§f상점 거래 발생시 서버 명령어를 실행합니다.");
- ccLang.get().addDefault("SHOP_SETTING.COMMAND_SELL", "§f판매시 명령어");
- ccLang.get().addDefault("SHOP_SETTING.COMMAND_BUY", "§f구매시 명령어");
- ccLang.get().addDefault("SHOP_SETTING.COMMAND_LORE1", "§e좌클릭: 설정");
- ccLang.get().addDefault("SHOP_SETTING.COMMAND_LORE3", "§e씨프트 우클릭: 마지막 항목 삭제");
- ccLang.get().addDefault("SHOP_SETTING.TRADE_UI", "§f거래 UI 설정");
- ccLang.get().addDefault("SHOP_SETTING.TRADE_UI_LORE_2", "§e좌클릭: 편집\n§e우클릭: 초기화");
-
- ccLang.get().addDefault("ROTATION_EDITOR_TITLE", "§3로테이션 에디터");
- ccLang.get().addDefault("ROTATION_EDITOR.ENABLED", "§a로테이션 켜짐");
- ccLang.get().addDefault("ROTATION_EDITOR.DISABLED", "§c로테이션 꺼짐");
- ccLang.get().addDefault("ROTATION_EDITOR.CLICK_TO_ENABLE", "§e좌클릭: 로테이션 켜기");
- ccLang.get().addDefault("ROTATION_EDITOR.CLICK_TO_DISABLE", "§e좌클릭: 로테이션 끄기");
- ccLang.get().addDefault("ROTATION_EDITOR.CURRENT_TIME", "§f현재 시간: ");
- ccLang.get().addDefault("ROTATION_EDITOR.CURRENTLY_IN_USE", "§a[현재 적용중]");
- ccLang.get().addDefault("ROTATION_EDITOR.NEXT_ROTATION", "§f다음 로테이션: ");
- ccLang.get().addDefault("ROTATION_EDITOR.PERIOD", "§f로테이션 주기");
- ccLang.get().addDefault("ROTATION_EDITOR.PERIOD_LORE_V2", "§e좌클릭: -1시간, 우클릭: +1시간, 씨프트: x10");
- ccLang.get().addDefault("ROTATION_EDITOR.TIMER", "§f타이머 조정");
- ccLang.get().addDefault("ROTATION_EDITOR.TIMER_LORE_V2", "§e좌클릭: -10분, 우클릭: +10분, 씨프트: x6");
- ccLang.get().addDefault("ROTATION_EDITOR.HOUR", "§f{0}시간");
- ccLang.get().addDefault("ROTATION_EDITOR.UNSAVED_CHANGES", "§c§o저장되지 않은 변경사항 있음");
- ccLang.get().addDefault("ROTATION_EDITOR.APPLY_CHANGES", "§f변경사항 적용");
- ccLang.get().addDefault("ROTATION_EDITOR.APPLY_CHANGES_LORE", "§e좌클릭: 변경사항 적용\n§e우클릭: 변경사항 초기화");
- ccLang.get().addDefault("ROTATION_EDITOR.APPLY_ROTATION", "§e좌클릭: 지금 적용");
- ccLang.get().addDefault("ROTATION_EDITOR.OPEN", "§e좌클릭: 열기");
- ccLang.get().addDefault("ROTATION_EDITOR.CREATE", "§e좌클릭: 빈 로테이션 만들기");
- ccLang.get().addDefault("ROTATION_EDITOR.COPY_AS_NEW", "§e우클릭: 현재 상점 복사하여 만들기");
- ccLang.get().addDefault("ROTATION_EDITOR.DELETE", "§e씨프트 우클릭: §c삭제");
- ccLang.get().addDefault("ROTATION_EDITOR.REAPPLY", "§e씨프트 좌클릭: 재적용");
- ccLang.get().addDefault("ROTATION_EDITOR.MOVE", "§e우클릭: 이동");
-
- ccLang.get().addDefault("ITEM_SETTING_TITLE", "§3아이탬 셋팅");
- ccLang.get().addDefault("ITEM_SETTING.VALUE_BUY", "§f구매가치: ");
- ccLang.get().addDefault("ITEM_SETTING.VALUE_SELL", "§f판매가치: ");
- ccLang.get().addDefault("ITEM_SETTING.PRICE", "§f구매: ");
- ccLang.get().addDefault("ITEM_SETTING.SELL_PRICE", "§f판매: ");
- ccLang.get().addDefault("ITEM_SETTING.PRICE_MIN", "§f최소 가격: ");
- ccLang.get().addDefault("ITEM_SETTING.PRICE_MAX", "§f최대 가격: ");
- ccLang.get().addDefault("ITEM_SETTING.MEDIAN", "§f중앙값: ");
- ccLang.get().addDefault("ITEM_SETTING.STOCK", "§f재고: ");
- ccLang.get().addDefault("ITEM_SETTING.MAX_STOCK", "§f재고 상한: ");
- ccLang.get().addDefault("ITEM_SETTING.MAX_STOCK_LORE", "§f재고량이 이보다 많아지면\n§f더이상 상점에 판매할 수 없게됩니다.");
- ccLang.get().addDefault("ITEM_SETTING.INF_STOCK", "무한 재고");
- ccLang.get().addDefault("ITEM_SETTING.STATIC_PRICE", "고정 가격");
- ccLang.get().addDefault("ITEM_SETTING.UNLIMITED", "무제한");
- ccLang.get().addDefault("ITEM_SETTING.MEDIAN_HELP", "§f중앙값이 작을수록 가격이 급격이 변화합니다.");
- ccLang.get().addDefault("ITEM_SETTING.TAX_IGNORED", "판매세 설정이 무시됩니다.");
- ccLang.get().addDefault("ITEM_SETTING.RECOMMEND", "§f추천 값 적용");
- ccLang.get().addDefault("ITEM_SETTING.DISCOUNT", "§f할인");
- ccLang.get().addDefault("ITEM_SETTING.DISCOUNT_LORE", "§f할인율: {num}%\n§e좌클릭: +10, 우클릭: -10");
- ccLang.get().addDefault("ITEM_SETTING.DISCOUNT_LORE_2", "§f할인율: {num}%\n§e좌클릭: -10, 우클릭: +10");
- ccLang.get().addDefault("ITEM_SETTING.DONE", "§f완료");
- ccLang.get().addDefault("ITEM_SETTING.DONE_LORE", "§f완료!");
- ccLang.get().addDefault("ITEM_SETTING.ROUND_DOWN", "§f내림");
- ccLang.get().addDefault("ITEM_SETTING.SET_TO_MEDIAN", "§f중앙값에 맞춤");
- ccLang.get().addDefault("ITEM_SETTING.SET_TO_STOCK", "§f재고에 맞춤");
- ccLang.get().addDefault("ITEM_SETTING.SET_TO_VALUE", "§f가격에 맞춤");
- ccLang.get().addDefault("ITEM_SETTING.CLOSE", "§f닫기");
- ccLang.get().addDefault("ITEM_SETTING.CLOSE_LORE", "§f§n클릭: 닫기");
- ccLang.get().addDefault("ITEM_SETTING.REMOVE", "§c제거");
- ccLang.get().addDefault("ITEM_SETTING.REMOVE_LORE", "§f이 아이템을 상점에서 제거합니다.");
- ccLang.get().addDefault("ITEM_SETTING.BUY", "§3§l구매: {num}");
- ccLang.get().addDefault("ITEM_SETTING.SELL", "§3§l판매: {num}");
- ccLang.get().addDefault("ITEM_SETTING.TRADE_LIMIT_SELL", "§f플레이어 당 판매량 제한");
- ccLang.get().addDefault("ITEM_SETTING.TRADE_LIMIT_SELL_LORE", "§f{num}\n§eLMB: -1, RMB: +1, Shift = x10");
- ccLang.get().addDefault("ITEM_SETTING.TRADE_LIMIT_BUY", "§f플레이어 당 구매량 제한");
- ccLang.get().addDefault("ITEM_SETTING.TRADE_LIMIT_BUY_LORE", "§f{num}\n§eLMB: -1, RMB: +1, Shift = x10");
- ccLang.get().addDefault("ITEM_SETTING.TRADE_LIMIT_INTERVAL", "§f거래량 제한 리셋 주기");
- ccLang.get().addDefault("ITEM_SETTING.TRADE_LIMIT_INTERVAL_LORE", "§f주기: {interval}\n§f다음 리셋: {time}\n§e좌클릭: -1시간, 우클릭: +1시간, 씨프트 = x12");
- ccLang.get().addDefault("ITEM_SETTING.TRADE_LIMIT_TIMER", "§f타이머 조정");
- ccLang.get().addDefault("ITEM_SETTING.TRADE_LIMIT_TIMER_LORE", "§f{num}\n§f다음 리셋: {time}\n§e좌클릭: -1시간, 우클릭: +1시간, 씨프트 = x12");
-
- ccLang.get().addDefault("TRADE_TITLE", "§3아이템 거래");
- ccLang.get().addDefault("TRADE.TOGGLE_SELLABLE", "§e클릭: 판매전용 토글");
- ccLang.get().addDefault("TRADE.TOGGLE_BUYABLE", "§e클릭: 구매전용 토글");
- ccLang.get().addDefault("TRADE.BUY_ONLY_LORE", "§f구매만 가능한 아이템");
- ccLang.get().addDefault("TRADE.SELL_ONLY_LORE", "§f판매만 가능한 아이템");
- ccLang.get().addDefault("TRADE.BALANCE", "§3내 잔액");
- ccLang.get().addDefault("TRADE.PRICE", "§f구매: {num}");
- ccLang.get().addDefault("TRADE.SELL_PRICE", "§f판매: {num}");
- ccLang.get().addDefault("TRADE.PRICE_DISCOUNTED", "§f구매: §8§m{num}§r §a{num2}");
- ccLang.get().addDefault("TRADE.SELL_PRICE_DISCOUNTED", "§f판매: §8§m{num}§r §c{num2}");
- ccLang.get().addDefault("TRADE.PRICE_EXP", "§f구매: {num}EXP");
- ccLang.get().addDefault("TRADE.SELL_PRICE_EXP", "§f판매: {num}EXP");
- ccLang.get().addDefault("TRADE.PRICE_DISCOUNTED_EXP", "§f구매: §8§m{num}EXP§r §a{num2}EXP");
- ccLang.get().addDefault("TRADE.SELL_PRICE_DISCOUNTED_EXP", "§f판매: §8§m{num}EXP§r §c{num2}EXP");
- ccLang.get().addDefault("TRADE.PRICE_PP", "§f구매: {num}PP");
- ccLang.get().addDefault("TRADE.SELL_PRICE_PP", "§f판매: {num}PP");
- ccLang.get().addDefault("TRADE.PRICE_DISCOUNTED_PP", "§f구매: §8§m{num}PP§r §a{num2}PP");
- ccLang.get().addDefault("TRADE.SELL_PRICE_DISCOUNTED_PP", "§f판매: §8§m{num}PP§r §c{num2}PP");
- ccLang.get().addDefault("TRADE.PRICE_JP", "§f구매: {num}JP");
- ccLang.get().addDefault("TRADE.SELL_PRICE_JP", "§f판매: {num}JP");
- ccLang.get().addDefault("TRADE.PRICE_DISCOUNTED_JP", "§f구매: §8§m{num}JP§r §a{num2}JP");
- ccLang.get().addDefault("TRADE.SELL_PRICE_DISCOUNTED_JP", "§f판매: §8§m{num}JP§r §c{num2}JP");
- ccLang.get().addDefault("TRADE.BUY", "§c구매");
- ccLang.get().addDefault("TRADE.SELL", "§2판매");
- ccLang.get().addDefault("TRADE.STOCK", "§8재고: ");
- ccLang.get().addDefault("TRADE.STACKS", "§8{num} 스택");
- ccLang.get().addDefault("TRADE.INF_STOCK", "§8무한 재고");
- ccLang.get().addDefault("TRADE.SHOP_BAL_INF", "§f상점 계좌 무제한");
- ccLang.get().addDefault("TRADE.SHOP_BAL", "§3상점 계좌 잔액 \n§f{num}");
- ccLang.get().addDefault("TRADE.CLICK_TO_BUY", "§c§n클릭: {amount}개 구매");
- ccLang.get().addDefault("TRADE.CLICK_TO_SELL", "§2§n클릭: {amount}개 판매");
- ccLang.get().addDefault("TRADE.PURCHASE_LIMIT_PER_PLAYER", "§a구매량 제한 : {num} 남음\n§a다음 리셋: {time}");
- ccLang.get().addDefault("TRADE.SALES_LIMIT_PER_PLAYER", "§a판매량 제한 : {num} 남음\n§a다음 리셋: {time}");
-
- ccLang.get().addDefault("PAGE_EDITOR_TITLE", "§3페이지 편집");
- ccLang.get().addDefault("PAGE_EDITOR.PREV", "§f<<");
- ccLang.get().addDefault("PAGE_EDITOR.NEXT", "§f>>");
- ccLang.get().addDefault("PAGE_EDITOR.PAGE_SWAP_SUCCESS", "§f페이지가 교체 되었습니다.");
- ccLang.get().addDefault("PAGE_EDITOR.PAGE_SWAP_FAIL", "§f페이지 교체 실패.");
- ccLang.get().addDefault("PAGE_EDITOR.PAGE_SWAP_SELECTED", "§f페이지 선택되었습니다. 서로 교체 할 다른 페이지를 우클릭 하세요.");
- ccLang.get().addDefault("PAGE_EDITOR.PAGE_LORE_PREMIUM", "§e좌클릭: 페이지 이동\n§e우클릭: 페이지 교체(스왑)\n§eShift+좌: 페이지 삽입\n§eShift+우: 페이지 삭제");
- ccLang.get().addDefault("PAGE_EDITOR.PRICE", "§f구매: {num}");
- ccLang.get().addDefault("PAGE_EDITOR.SELL_PRICE", "§f판매: {num}");
- ccLang.get().addDefault("PAGE_EDITOR.STOCK", "§8재고: {num}");
- ccLang.get().addDefault("PAGE_EDITOR.STACKS", "§8{num} 스택");
- ccLang.get().addDefault("PAGE_EDITOR.STATIC_PRICE", "§8[고정 가격]");
- ccLang.get().addDefault("PAGE_EDITOR.EMPTY", "§8(비어있음)");
- ccLang.get().addDefault("PAGE_EDITOR.EMPTY_SLOT_LORE", "§e좌,우클릭: 밀기\n§e+씨프트: 당기기");
- ccLang.get().addDefault("TRADE.QUANTITY_LORE", "§eShift+우: 수량 편집");
- ccLang.get().addDefault("TRADE.WAIT_FOR_INPUT", "거래 UI에 표시 될 수량을 입력하세요.\n예시: 1,2,4,8,16,32,64");
-
- ccLang.get().addDefault("LOG_VIEWER_TITLE", "§3로그 뷰어");
- ccLang.get().addDefault("LOG_VIEWER.DATE", "§f날짜: ");
- ccLang.get().addDefault("LOG_VIEWER.TIME", "§f시간: ");
- ccLang.get().addDefault("LOG_VIEWER.CURRENCY", "§f화폐 유형: ");
- ccLang.get().addDefault("LOG_VIEWER.PRICE", "§f가격: ");
- ccLang.get().addDefault("LOG_VIEWER.EXPAND", "§f펼치기");
- ccLang.get().addDefault("LOG_VIEWER.COLLAPSE", "§f접기");
- ccLang.get().addDefault("LOG_VIEWER.PAGE_TITLE", "§f{curPage}/{maxPage} 페이지");
- ccLang.get().addDefault("LOG_VIEWER.PAGE_LORE", "§e좌클릭: 이전 페이지\n§e우클릭: 다음 페이지");
- ccLang.get().addDefault("LOG_VIEWER.FILE_LORE", "§e좌클릭: 열기\n§eShift+우: §c삭제");
-
-
- ccLang.get().addDefault("LOG.LOG", "§f로그");
- ccLang.get().addDefault("LOG.CLEAR", "§f로그 삭제됨");
- ccLang.get().addDefault("LOG.SAVE", "§f로그 저장됨");
- ccLang.get().addDefault("LOG.DELETE", "§4로그 삭제");
- ccLang.get().addDefault("LOG.SELL", "§f{player}(이)가 {shop}에 {item} {amount}개를 판매함");
- ccLang.get().addDefault("LOG.BUY", "§f{player}(이)가 {shop}에서 {item} {amount}개를 구매함");
-
- ccLang.get().addDefault("STOCK_SIMULATOR_TITLE", "§3재고 시뮬레이터");
- ccLang.get().addDefault("STOCK_SIMULATOR.CHANGE_SAMPLE_LORE", "§e좌, 우클릭: 아이템 변경");
- ccLang.get().addDefault("STOCK_SIMULATOR.SIMULATOR_BUTTON_LORE", "§e우클릭: 시뮬레이터");
- ccLang.get().addDefault("STOCK_SIMULATOR.RUN_TITLE", "§f실행");
- ccLang.get().addDefault("STOCK_SIMULATOR.RUN_LORE", "§e좌클릭: 시뮬레이션 실행\n§e우클릭: 설정값을 상점에 적용합니다\n§f아이템은 영향받지 않습니다.");
- ccLang.get().addDefault("STOCK_SIMULATOR.REAL_TIME", "§a(실제 시간)");
- ccLang.get().addDefault("STOCK_SIMULATOR.AFTER_S", "§a{0}초 후");
- ccLang.get().addDefault("STOCK_SIMULATOR.AFTER_M", "§a{0}분 후");
- ccLang.get().addDefault("STOCK_SIMULATOR.AFTER_H", "§a{0}시간 후");
- ccLang.get().addDefault("STOCK_SIMULATOR.AFTER_D", "§a{0}일 후");
- ccLang.get().addDefault("STOCK_SIMULATOR.L_R_SHIFT", "§e좌: -1 우: +1 Shift: x5");
- ccLang.get().addDefault("STOCK_SIMULATOR.PRICE", "§f구매: {num}");
- ccLang.get().addDefault("STOCK_SIMULATOR.MEDIAN", "§f중앙값: {num}");
- ccLang.get().addDefault("STOCK_SIMULATOR.STOCK", "§f재고: {num}");
-
- ccLang.get().addDefault("PALETTE_TITLE", "§3판매할 아이템 선택");
- ccLang.get().addDefault("PALETTE_TITLE2", "§3아이템 선택");
- ccLang.get().addDefault("PALETTE.LORE_PREMIUM", "§e좌클릭: 추가\n§e씨프트 좌클릭: 설정 후 추가\n§e우클릭: 장식으로 추가\n§e씨프트 우클릭: '{item}' 를 검색");
- ccLang.get().addDefault("PALETTE.LORE2", "§e좌클릭: 선택\n§e씨프트 우클릭: '{item}' 를 검색");
- ccLang.get().addDefault("PALETTE.SEARCH", "§f찾기");
- ccLang.get().addDefault("PALETTE.ADD_ALL", "§f모두 추가");
- ccLang.get().addDefault("PALETTE.ADD_ALL_LORE", "§e좌클릭: 모두 추가\n§e씨프트 좌클릭: 모두 추가하고 권장 값 적용");
- ccLang.get().addDefault("PALETTE.PAGE_TITLE", "§f{curPage}/{maxPage} 페이지");
- ccLang.get().addDefault("PALETTE.PAGE_LORE", "§f§n좌클릭: 이전 페이지\n§f§n우클릭: 다음 페이지");
- ccLang.get().addDefault("PALETTE.FILTER_APPLIED", "§f필터 적용됨 : ");
- ccLang.get().addDefault("PALETTE.FILTER_LORE", "§f좌클릭: 검색\n§f우클릭: 필터 초기화\n\n§7\"BLUE_WOOL\"을 찾으려는 경우:\n§7 b w\n§7 wool\n§7 blue wool");
-
- ccLang.get().addDefault("QUICK_SELL_TITLE", "§3빠른 판매");
- ccLang.get().addDefault("QUICK_SELL.GUIDE_TITLE", "§3§l빠른 판매 도움말");
- ccLang.get().addDefault("QUICK_SELL.GUIDE_LORE", "§a판매할 아이템을 좌클릭 하세요.\n§a씨프트 좌클릭으로 같은 유형의 아이템을 모두 팝니다.\n§a우클릭으로 해당 아이템 상점으로 이동합니다.");
-
- ccLang.get().addDefault("ARROW.UP", "§a⬆");
- ccLang.get().addDefault("ARROW.DOWN", "§c⬇");
- ccLang.get().addDefault("ARROW.UP_2", "§c⬆");
- ccLang.get().addDefault("ARROW.DOWN_2", "§a⬇");
-
- ccLang.get().addDefault("TIME.OPEN", "Open");
- ccLang.get().addDefault("TIME.CLOSE", "Close");
- ccLang.get().addDefault("TIME.OPEN_LORE", "§f문 여는 시간 설정");
- ccLang.get().addDefault("TIME.CLOSE_LORE", "§f문 닫는 시간 설정");
- ccLang.get().addDefault("TIME.SHOPHOURS", "§f영업시간");
- ccLang.get().addDefault("TIME.OPEN24", "24시간 오픈");
- ccLang.get().addDefault("TIME.SHOP_IS_CLOSED", "§f상점이 문을 닫았습니다. 개점: {time}시. 현재시간: {curTime}시");
- ccLang.get().addDefault("TIME.SET_SHOPHOURS", "영업시간 설정");
- ccLang.get().addDefault("TIME.CUR", "§f현재 시간: {time}시");
-
- ccLang.get().addDefault("STOCK_STABILIZING.SS", "§f재고 안정화");
- ccLang.get().addDefault("STOCK_STABILIZING.L_R_SHIFT", "§e좌클릭: -0.1 우클릭: +0.1 Shift: x5");
- ccLang.get().addDefault("STOCK_STABILIZING.STRENGTH_LORE_A", "§f중앙값(median)의 n%");
- ccLang.get().addDefault("STOCK_STABILIZING.STRENGTH_LORE_B", "§f중앙값(median)과의 격차의 n%");
-
- ccLang.get().addDefault("FLUCTUATION.FLUCTUATION", "§f무작위 재고 변동");
- ccLang.get().addDefault("FLUCTUATION.INTERVAL", "§f변화 간격");
- ccLang.get().addDefault("FLUCTUATION.INTERVAL_LORE", "§f1h = 1000틱 = 현실시간 50초");
- ccLang.get().addDefault("FLUCTUATION.STRENGTH", "§f변화 강도");
- ccLang.get().addDefault("FLUCTUATION.STRENGTH_LORE", "§f중앙값(median)의 n%");
-
- ccLang.get().addDefault("TAX.SALES_TAX", "§f판매세");
- ccLang.get().addDefault("TAX.USE_GLOBAL", "전역설정 사용 ({tax}%)");
- ccLang.get().addDefault("TAX.USE_LOCAL", "별도 설정");
-
- ccLang.get().addDefault("MESSAGE.SEARCH_ITEM", "§f찾으려는 아이템의 이름을 입력하세요.");
- ccLang.get().addDefault("MESSAGE.SEARCH_CANCELED", "§f검색 취소됨.");
- ccLang.get().addDefault("MESSAGE.INPUT_CANCELED", "§f입력 취소됨.");
- ccLang.get().addDefault("MESSAGE.DELETE_CONFIRM", "§f정말로 페이지를 삭제할까요? 'delete' 를 입력하면 삭제합니다.");
- ccLang.get().addDefault("MESSAGE.CANT_DELETE_LAST_PAGE", "§f마지막 남은 페이지를 삭제할 수 없습니다.");
- ccLang.get().addDefault("MESSAGE.SHOP_BAL_LOW", "§f상점이 돈을 충분히 가지고 있지 않습니다.");
- ccLang.get().addDefault("MESSAGE.SHOP_CREATED", "§f상점 생성됨!");
- ccLang.get().addDefault("MESSAGE.SHOP_DELETED", "§f상점 제거됨!");
- ccLang.get().addDefault("MESSAGE.OUT_OF_STOCK", "§f재고 없음!");
- ccLang.get().addDefault("MESSAGE.BUY_SUCCESS", "§f{item} {amount}개를 {price}에 구매함. 잔액: {bal}");
- ccLang.get().addDefault("MESSAGE.SELL_SUCCESS", "§f{item} {amount}개를 {price}에 판매함. 잔액: {bal}");
- ccLang.get().addDefault("MESSAGE.BUY_SUCCESS_EXP", "§f{item} {amount}개를 {price}경험치 포인트에 구매함. 잔액: {bal}");
- ccLang.get().addDefault("MESSAGE.SELL_SUCCESS_EXP", "§f{item} {amount}개를 {price}경험치 포인트에 판매함. 잔액: {bal}");
- ccLang.get().addDefault("MESSAGE.BUY_SUCCESS_JP", "§f{item} {amount}개를 {price}포인트에 구매함. 남은포인트: {bal}");
- ccLang.get().addDefault("MESSAGE.SELL_SUCCESS_JP", "§f{item} {amount}개를 {price}포인트에 판매함. 남은포인트: {bal}");
- ccLang.get().addDefault("MESSAGE.BUY_SUCCESS_PP", "§f{item} {amount}개를 {price}포인트에 구매함. 남은포인트: {bal}");
- ccLang.get().addDefault("MESSAGE.SELL_SUCCESS_PP", "§f{item} {amount}개를 {price}포인트에 판매함. 남은포인트: {bal}");
- ccLang.get().addDefault("MESSAGE.QSELL_NA", "§f해당 아이템을 취급하는 상점이 없습니다.");
- ccLang.get().addDefault("MESSAGE.DELIVERY_CHARGE", "§f배달비: {fee}");
- ccLang.get().addDefault("MESSAGE.DELIVERY_CHARGE_NA", "§f다른 월드로 배달할 수 없습니다.");
- ccLang.get().addDefault("MESSAGE.NOT_ENOUGH_MONEY", "§f돈이 부족합니다. 잔액: {bal}");
- ccLang.get().addDefault("MESSAGE.NOT_ENOUGH_POINT", "§f포인트가 부족합니다. 잔액: {bal}");
- ccLang.get().addDefault("MESSAGE.NOT_ENOUGH_PLAYER_POINT", "§f플레이어 포인트가 부족합니다. 잔액: {bal}");
- ccLang.get().addDefault("MESSAGE.NOT_ENOUGH_EXP_POINT", "§f경험치 포인트가 부족합니다. 잔액: {bal}");
- ccLang.get().addDefault("MESSAGE.NO_ITEM_TO_SELL", "§f판매 할 아이템이 없습니다.");
- ccLang.get().addDefault("MESSAGE.NO_ITEM_TO_SELL_2", "§f판매 가능 한 아이템이 없습니다.");
- ccLang.get().addDefault("MESSAGE.INVENTORY_FULL", "§4인벤토리에 빈 공간이 없습니다!");
- ccLang.get().addDefault("MESSAGE.IRREVERSIBLE", "§f이 행동은 되돌릴 수 없습니다!");
- ccLang.get().addDefault("MESSAGE.ITEM_ADDED", "아이템 추가됨!");
- ccLang.get().addDefault("MESSAGE.ITEM_UPDATED", "아이템 수정됨!");
- ccLang.get().addDefault("MESSAGE.ITEM_DELETED", "아이템 제거됨!");
- ccLang.get().addDefault("MESSAGE.CHANGES_APPLIED", "변경사항 적용됨. 새로운 값: ");
- ccLang.get().addDefault("MESSAGE.CHANGES_APPLIED_2", "변경사항 적용됨");
- ccLang.get().addDefault("MESSAGE.RECOMMEND_APPLIED", "추천 값 적용됨. {playerNum}명 기준입니다. config파일에서 이 값을 바꿀 수 있습니다.");
- ccLang.get().addDefault("MESSAGE.TRANSFER_SUCCESS", "송금 완료");
- ccLang.get().addDefault("MESSAGE.PURCHASE_REJECTED", "상점에 이 아이템이 너무 많습니다. 지금은 팔 수 없습니다.");
- ccLang.get().addDefault("MESSAGE.CLICK_YOUR_ITEM_START_PAGE", "인벤토리의 아이템을 클릭하면 가장 좋은 조건의 상점으로 이동합니다.\n좌클릭: 구매 우클릭: 판매");
- ccLang.get().addDefault("MESSAGE.MOVE_TO_BEST_SHOP_BUY", "{item}을 가장 저렴하게 살 수 있는 상점으로 이동했습니다.");
- ccLang.get().addDefault("MESSAGE.MOVE_TO_BEST_SHOP_SELL", "{item}을 가장 비싸게 팔 수 있는 상점으로 이동했습니다.");
- ccLang.get().addDefault("MESSAGE.SHOP_IS_CLOSED_BY_ADMIN", "이 상점은 서버 관리자에 의해 닫혔습니다.");
- ccLang.get().addDefault("MESSAGE.SHOP_DISABLED", "이 상점은 비황성화된 상태입니다. 어드민이 아닌 유저는 접근할 수 없습니다. 상점 설정에서 활성화 할 수 있습니다.");
- ccLang.get().addDefault("MESSAGE.ROTATION_SHARED_DATA_MISSING", "§e[ ! ]§f'{0}/SharedData.yml' 에서 {1} 개의 아이템에 대한 정보를 찾을 수 없었습니다. 이 아이템들은 장식으로 추가되었습니다.");
- ccLang.get().addDefault("MESSAGE.ENTER_COMMAND", "명령어를 '/' 제외하고 입력하세요.");
- ccLang.get().addDefault("MESSAGE.ENTER_COMMAND_2", "'인덱스/명령어' 형태로 입력하세요.");
- ccLang.get().addDefault("MESSAGE.SELL_COMMAND_CUR", "현재 적용중인 판매 명령어:");
- ccLang.get().addDefault("MESSAGE.BUY_COMMAND_CUR", "현재 적용중인 구매 명령어:");
- ccLang.get().addDefault("MESSAGE.Q_SEARCH_FAIL_CURRENCY", "해당 아이템은 여러 종류의 재화로 거래 중 입니다.");
-
- ccLang.get().addDefault("HELP.TITLE", "§f도움말: {command} --------------------");
- ccLang.get().addDefault("HELP.SHOP", "상점을 엽니다.");
- ccLang.get().addDefault("HELP.CMD", "명령어 도움말 표시 토글.");
- ccLang.get().addDefault("HELP.CREATE_SHOP", "상점을 새로 만듭니다.");
- ccLang.get().addDefault("HELP.CREATE_SHOP_2", "퍼미션(나중에 바꿀 수 있습니다.)\n true: dshop.user.shop.상점이름\n false: 아무나 접근가능(기본값)\n 임의 입력: 해당 퍼미션 필요");
- ccLang.get().addDefault("HELP.DELETE_SHOP", "기존의 상점을 제거합니다.");
- ccLang.get().addDefault("HELP.SHOP_ADD_HAND", "손에 들고 있는 아이템을 상점에 추가합니다.");
- ccLang.get().addDefault("HELP.SHOP_ADD_ITEM", "상점에 아이템을 추가합니다.");
- ccLang.get().addDefault("HELP.SHOP_EDIT", "상점에 있는 아이템을 수정합니다.");
- ccLang.get().addDefault("HELP.PRICE", "§7가격은 다음과 같이 계산됩니다: median*value/stock");
- ccLang.get().addDefault("HELP.INF_STATIC", "§7median<0 == 고정가격 stock<0 == 무한재고");
- ccLang.get().addDefault("HELP.EDIT_ALL", "상점의 모든 아이템을 한번에 수정합니다.");
- ccLang.get().addDefault("HELP.RELOAD", "플러그인을 재시작 합니다.");
- ccLang.get().addDefault("HELP.RELOADED", "플러그인 리로드됨!");
- ccLang.get().addDefault("HELP.USAGE", "사용법");
- ccLang.get().addDefault("HELP.ITEM_ALREADY_EXIST", "§7§o{item}(은)는 이미 판매중임.\n {info}\n 명령어를 입력하면 값이 수정됩니다.");
- ccLang.get().addDefault("HELP.ITEM_INFO", "§7§o{item}의 현재 설정:\n {info}");
- ccLang.get().addDefault("HELP.REMOVE_ITEM", "§f인자를 0으로 입력하면 이 아이템을 상점에서 §4제거§f합니다.");
- ccLang.get().addDefault("HELP.QSELL", "§f빠르게 아이템을 판매합니다.");
- ccLang.get().addDefault("HELP.DELETE_OLD_USER", "장기간 접속하지 않은 유저의 데이터를 삭제합니다.");
- ccLang.get().addDefault("HELP.ACCOUNT", "상점의 계좌 잔액을 설정합니다. -1 = 무제한");
- ccLang.get().addDefault("HELP.SET_TO_REC_ALL", "§e상점의 모든 아이템 설정값을 권장값으로 §c초기화§e합니다.");
- ccLang.get().addDefault("HELP.SHOP_ENABLE", "상점을 활성화 또는 비활성화 합니다.");
-
- ccLang.get().addDefault("ERR.NO_USER_ID", "§6플레이어 uuid를 찾을 수 없습니다. 상점 이용 불가능.");
- ccLang.get().addDefault("ERR.ITEM_NOT_EXIST", "상점에 해당 아이템이 존재하지 않습니다.");
- ccLang.get().addDefault("ERR.ITEM_FORBIDDEN", "사용할 수 없는 아이템 입니다.");
- ccLang.get().addDefault("ERR.NO_PERMISSION", "§e권한이 없습니다.");
- ccLang.get().addDefault("ERR.WRONG_USAGE", "잘못된 명령어 사용법. 도움말을 확인하세요.");
- ccLang.get().addDefault("ERR.NO_EMPTY_SLOT", "상점에 빈 공간이 없습니다.");
- ccLang.get().addDefault("ERR.WRONG_DATATYPE", "인자의 유형이 잘못 입력되었습니다.");
- ccLang.get().addDefault("ERR.VALUE_ZERO", "인자값이 0보다 커야 합니다.");
- ccLang.get().addDefault("ERR.WRONG_ITEM_NAME", "유효하지 않은 아이템 이름입니다.");
- ccLang.get().addDefault("ERR.HAND_EMPTY", "아이템을 손에 들고 있어야 합니다.");
- ccLang.get().addDefault("ERR.HAND_EMPTY2", "§c§o아이템을 손에 들고 있어야 합니다!");
- ccLang.get().addDefault("ERR.SHOP_NOT_FOUND", "§f해당 상점을 찾을 수 없습니다.");
- ccLang.get().addDefault("ERR.SHOP_EXIST", "해당 이름을 가진 상점이 이미 존재합니다.");
- ccLang.get().addDefault("ERR.SHOP_NOT_EXIST", "그런 이름을 가진 상점이 없습니다.");
- ccLang.get().addDefault("ERR.SIGN_SHOP_REMOTE_ACCESS", "해당 상점은 표지판을 통해서만 접근할 수 있습니다.");
- ccLang.get().addDefault("ERR.LOCAL_SHOP_REMOTE_ACCESS", "해당 상점은 직접 방문해야만 사용할 수 있습니다.");
- ccLang.get().addDefault("ERR.MAX_LOWER_THAN_MIN", "최대 가격은 최소 가격보다 커야합니다.");
- ccLang.get().addDefault("ERR.DEFAULT_VALUE_OUT_OF_RANGE", "기본 가격은 최소 가격과 최대 가격 사이의 값이어야 합니다.");
- ccLang.get().addDefault("ERR.NO_RECOMMEND_DATA", "Worth.yml 파일에 이 아이템의 정보가 없습니다.");
- ccLang.get().addDefault("ERR.JOBS_REBORN_NOT_FOUND", "Jobs reborn 플러그인을 찾을 수 없습니다.");
- ccLang.get().addDefault("ERR.PLAYER_POINTS_NOT_FOUND", "Player points 플러그인을 찾을 수 없습니다.");
- ccLang.get().addDefault("ERR.SHOP_HAS_INF_BAL", "{shop} 상점은 무한계좌 상점입니다.");
- ccLang.get().addDefault("ERR.SHOP_DIFF_CURRENCY", "두 상점이 서로 다른 통화를 사용합니다.");
- ccLang.get().addDefault("ERR.PLAYER_NOT_EXIST", "해당 플레이어를 찾을 수 없습니다.");
- ccLang.get().addDefault("ERR.SHOP_LINK_FAIL", "상점 둘 중 하나는 실제 계좌이어야 합니다.");
- ccLang.get().addDefault("ERR.SHOP_LINK_TARGET_ERR", "목표 상점은 실제 계좌를 가지고 있어야 합니다.");
- ccLang.get().addDefault("ERR.NESTED_STRUCTURE", "계층 구조를 이루는것은 금지되어 있습니다. (ex. aa-bb, bb-cc)");
- ccLang.get().addDefault("ERR.CREATIVE", "§eCreative mode 에서 이 명령어를 사용할 수 없습니다. 권한이 없습니다.");
- ccLang.get().addDefault("ERR.FILE_CREATE_FAIL", "§e파일 생성에 실패했습니다.");
- ccLang.get().addDefault("ERR.INVALID_TRANSACTION", "이 거래는 더이상 유효하지 않습니다. 문제가 반복되면 서버 관리자에게 문의하세요.");
- ccLang.get().addDefault("ERR.SIGN_WALL", "상점 표지판이 벽에 설치되야 합니다.");
-
- ccLang.get().addDefault("ERR.SHOP_NULL", "§e상점 이름이 지정되지 않았습니다.");
- ccLang.get().addDefault("ERR.ITEMINFO_HAND_EMPTY", "아이템을 들고 있어야 합니다.");
- ccLang.get().addDefault("HELP.ITEMINFO_USAGE", "§f아이템 정보를 보려면 손에 아이템을 들고 있어야 합니다.");
- ccLang.get().addDefault("HELP.ITEMINFO_REALNAME", "§7실제 이름: §3{item_realname}");
- ccLang.get().addDefault("HELP.ITEMINFO_SIGN_NAME", "§7표지판용 이름: §3{item_signname}");
- ccLang.get().addDefault("ERR.SIGN_ITEM_INVALID", "아이템 이름이 잘못되었습니다. /ds iteminfo 를 사용하여 아이템 이름을 확인해 보세요.");
- ccLang.get().addDefault("ERR.SIGN_ITEM_NOT_FOR_SALE", "상점에 없는 아이템 입니다.");
- ccLang.get().addDefault("MESSAGE.SIGN_SHOP_CREATED", "§a표지판 상점 생성!");
-
- ccLang.get().addDefault("ON", "켜짐");
- ccLang.get().addDefault("OFF", "꺼짐");
- ccLang.get().addDefault("SET", "설정");
- ccLang.get().addDefault("UNSET", "설정해제");
- ccLang.get().addDefault("NULL", "없음");
- ccLang.get().addDefault("NULL(OPEN)", "없음 (모두에게 열려있음)");
- ccLang.get().addDefault("CUR_STATE", "현재상태");
- ccLang.get().addDefault("CLICK", "클릭");
- ccLang.get().addDefault("LMB", "좌클릭");
- ccLang.get().addDefault("RMB", "우클릭");
- ccLang.get().addDefault("CLOSE", "§f닫기");
- ccLang.get().addDefault("CLOSE_LORE", "§f§n클릭: 닫기");
-
- ccLang.get().addDefault("EXP_POINTS", "Exp");
- ccLang.get().addDefault("JOB_POINTS", "Job Points");
- ccLang.get().addDefault("PLAYER_POINTS", "Player Points");
-
- ccLang.get().options().copyDefaults(true);
- ccLang.save();
- }
+ ko_KR();
// 영어
- {
- ccLang.setup("Lang_V3_en-US", null);
-
- ccLang.get().addDefault("START_PAGE.EDITOR_TITLE", "§3Edit icon");
- ccLang.get().addDefault("START_PAGE.EDIT_NAME", "§fRename");
- ccLang.get().addDefault("START_PAGE.EDIT_LORE", "§fChange lore");
- ccLang.get().addDefault("START_PAGE.EDIT_ICON", "§fChange icon");
- ccLang.get().addDefault("START_PAGE.EDIT_ACTION", "§fChange command");
- ccLang.get().addDefault("START_PAGE.SHOP_SHORTCUT", "§fCreate shop button");
- ccLang.get().addDefault("START_PAGE.CREATE_DECO", "§fCreate decorative button");
- ccLang.get().addDefault("START_PAGE.ENTER_SHOP_NAME", "Please enter shop name");
- ccLang.get().addDefault("START_PAGE.DEFAULT_SHOP_LORE", "§f§nClick: go to shop");
- ccLang.get().addDefault("START_PAGE.ITEM_MOVE_LORE", "§eRMB: Move");
- ccLang.get().addDefault("START_PAGE.ITEM_COPY_LORE", "§eRMB: Copy");
- ccLang.get().addDefault("START_PAGE.ITEM_REMOVE_LORE", "§eShift LMB: Remove");
- ccLang.get().addDefault("START_PAGE.ITEM_EDIT_LORE", "§eShift RMB: Edit");
- ccLang.get().addDefault("START_PAGE.REMOVE", "§fRemove");
- ccLang.get().addDefault("START_PAGE.REMOVE_LORE", "§fRemove this button from the start page.");
- ccLang.get().addDefault("START_PAGE.ENTER_NAME", "Enter a new name for the button.");
- ccLang.get().addDefault("START_PAGE.ENTER_LORE", "Enter a new description for the button.");
- ccLang.get().addDefault("START_PAGE.ENTER_ICON", "Enter the name of the item to be used as the icon for the button. (English, case insensitive)");
- ccLang.get().addDefault("START_PAGE.ENTER_ACTION", "Enter the command without '/'. This command is executed when the button is pressed.");
- ccLang.get().addDefault("START_PAGE.ENTER_COLOR", "Enter a color for the decorative button. (English)");
- ccLang.get().addDefault("START_PAGE.SHOP_LIST_TITLE", "§3Shop List");
- ccLang.get().addDefault("START_PAGE.SHOP_LIST.PAGE_TITLE", "§f{curPage}/{maxPage} Page");
- ccLang.get().addDefault("START_PAGE.SHOP_LIST.PAGE_LORE", "§eLMB: Previous page\n§eRMB: Next page");
-
- ccLang.get().addDefault("COLOR_PICKER_TITLE", "§3Color Picker");
-
- ccLang.get().addDefault("SHOP.TRADE_LORE", "§f§nClick: Trade");
- ccLang.get().addDefault("SHOP.BUY_PRICE", "§fBuy: {num}");
- ccLang.get().addDefault("SHOP.SELL_PRICE", "§fSell: {num}");
- ccLang.get().addDefault("SHOP.BUY_PRICE_DISCOUNTED", "§fBuy: §8§m{num}§r §a{num2}");
- ccLang.get().addDefault("SHOP.SELL_PRICE_DISCOUNTED", "§fSell: §8§m{num}§r §c{num2}");
- ccLang.get().addDefault("SHOP.BUY_PRICE_EXP", "§fBuy: {num}Exp");
- ccLang.get().addDefault("SHOP.SELL_PRICE_EXP", "§fSell: {num}Exp");
- ccLang.get().addDefault("SHOP.BUY_PRICE_DISCOUNTED_EXP", "§fBuy: §8§m{num}Exp§r §a{num2}Exp");
- ccLang.get().addDefault("SHOP.SELL_PRICE_DISCOUNTED_EXP", "§fSell: §8§m{num}Exp§r §c{num2}Exp");
- ccLang.get().addDefault("SHOP.BUY_PRICE_PP", "§fBuy: {num}PP");
- ccLang.get().addDefault("SHOP.SELL_PRICE_PP", "§fSell: {num}PP");
- ccLang.get().addDefault("SHOP.BUY_PRICE_DISCOUNTED_PP", "§fBuy: §8§m{num}PP§r §a{num2}PP");
- ccLang.get().addDefault("SHOP.SELL_PRICE_DISCOUNTED_PP", "§fSell: §8§m{num}PP§r §c{num2}PP");
- ccLang.get().addDefault("SHOP.BUY_PRICE_JP", "§fBuy: {num}JP");
- ccLang.get().addDefault("SHOP.SELL_PRICE_JP", "§fSell: {num}JP");
- ccLang.get().addDefault("SHOP.BUY_PRICE_DISCOUNTED_JP", "§fBuy: §8§m{num}JP§r §a{num2}JP");
- ccLang.get().addDefault("SHOP.SELL_PRICE_DISCOUNTED_JP", "§fSell: §8§m{num}JP§r §c{num2}JP");
- ccLang.get().addDefault("SHOP.STOCK", "§8Stock: {num}");
- ccLang.get().addDefault("SHOP.STOCK_2", "§8Stock: {stock}/{max_stock}");
- ccLang.get().addDefault("SHOP.INF_STOCK", "§8Infinite");
- ccLang.get().addDefault("SHOP.STATIC_PRICE", "§8[Fixed price]");
- ccLang.get().addDefault("SHOP.STACKS", "§8{num} Stacks");
- ccLang.get().addDefault("SHOP.ITEM_MOVE_LORE", "§eRMB: Move");
- ccLang.get().addDefault("SHOP.ITEM_COPY_LORE", "§eRMB: Copy");
- ccLang.get().addDefault("SHOP.ITEM_EDIT_LORE", "§eShiftRMB: Edit");
- ccLang.get().addDefault("SHOP.DECO_DELETE_LORE", "§eShiftRMB: Remove");
- ccLang.get().addDefault("SHOP.PAGE_TITLE", "§f{curPage}/{maxPage} Page");
- ccLang.get().addDefault("SHOP.PAGE_LORE_V2", "§f§nLMB: Previous page\n§f§nRMB: Next page\n§7Clicking on your item will\n§7take you to the page where\n§7that item is located.");
- ccLang.get().addDefault("SHOP.GO_TO_PAGE_EDITOR", "§eShift RMB: Page Editor");
- ccLang.get().addDefault("SHOP.ITEM_MOVE_SELECTED", "Item selected. Right-click on an empty field to move it.");
- ccLang.get().addDefault("SHOP.PERMISSION", "§fPermission:");
- ccLang.get().addDefault("SHOP.PERMISSION_ITEM", "§7 - {permission}");
- ccLang.get().addDefault("SHOP.FLAGS", "§eFlag:");
- ccLang.get().addDefault("SHOP.FLAGS_ITEM", "§e - {flag}");
- ccLang.get().addDefault("SHOP.SHOP_BAL_INF", "§fUnlimited");
- ccLang.get().addDefault("SHOP.SHOP_BAL", "§fShop account balance");
- ccLang.get().addDefault("SHOP.SHOP_LOCATION", "§fShop location: x {x}, y {y}, z {z}");
- ccLang.get().addDefault("SHOP.SHOP_LOCATION_B", "§fShop location: ");
- ccLang.get().addDefault("SHOP.SHOP_INFO_DASH", "§7 - ");
- ccLang.get().addDefault("SHOP.DISABLED", "§cDisabled§8|§f");
- ccLang.get().addDefault("SHOP.INCOMPLETE_DATA", "INCOMPLETE DATA");
- ccLang.get().addDefault("SHOP.INCOMPLETE_DATA_Lore", "This item is not visible\nto non-op users.\nIndex: ");
- ccLang.get().addDefault("SHOP.TRADE_LIMIT_BUY", "§aPurchase limit: {num}left");
- ccLang.get().addDefault("SHOP.TRADE_LIMIT_SELL", "§aSales limit: {num}left");
- ccLang.get().addDefault("SHOP.TRADE_LIMIT_TIMER", "§aNext reset: {time}");
- ccLang.get().addDefault("SHOP.CLICK_TO_ADD", "§eClick: Add");
-
- ccLang.get().addDefault("SHOP_SETTING_TITLE", "§3Shop Settings");
- ccLang.get().addDefault("SHOP_SETTING.LOG_TOGGLE_LORE", "§eRMB: Log Viewer");
- ccLang.get().addDefault("SHOP_SETTING.LOG_PRINT_CONSOLE", "§fPrint log to console");
- ccLang.get().addDefault("SHOP_SETTING.LOG_PRINT_ADMIN", "§fPrint log to admin");
- ccLang.get().addDefault("SHOP_SETTING.MAX_PAGE", "§fMax page");
- ccLang.get().addDefault("SHOP_SETTING.MAX_PAGE_LORE", "§fSets the maximum page for the shop.");
- ccLang.get().addDefault("SHOP_SETTING.BACKGROUND", "§fBackground color");
- ccLang.get().addDefault("SHOP_SETTING.BACKGROUND_LORE", "§eClick: Change color");
- ccLang.get().addDefault("SHOP_SETTING.L_R_SHIFT", "§eLMB: -1 RMB: +1 Shift: x5");
- ccLang.get().addDefault("SHOP_SETTING.FLAG", "§fFlag");
- ccLang.get().addDefault("SHOP_SETTING.SHOP_SETTINGS_LORE", "§eRMB: Shop Settings");
- ccLang.get().addDefault("SHOP_SETTING.SIGN_SHOP_LORE", "§fOnly accessible via sign.");
- ccLang.get().addDefault("SHOP_SETTING.LOCAL_SHOP_LORE", "§fMust visit actual store locations.");
- ccLang.get().addDefault("SHOP_SETTING.DELIVERY_CHARGE_LORE", "§fYou can pay for delivery without \n§fhaving to go to the shop location to transact.");
- ccLang.get().addDefault("SHOP_SETTING.SELECTED", "§2Selected");
- ccLang.get().addDefault("SHOP_SETTING.CURRENCY", "§fCurrency Type: ");
- ccLang.get().addDefault("SHOP_SETTING.VAULT_LORE", "§fThis is the default.");
- ccLang.get().addDefault("SHOP_SETTING.EXP_LORE", "§fTrade with the player's experience points.");
- ccLang.get().addDefault("SHOP_SETTING.JOB_POINT_LORE", "§fTrade with job points. \n§fRequires 'Jobs Reborn' plugin");
- ccLang.get().addDefault("SHOP_SETTING.PLAYER_POINT_LORE", "§fTrade with player points. \n§fRequires 'Player point' plugin");
- ccLang.get().addDefault("SHOP_SETTING.SHOW_VALUE_CHANGE_LORE", "§fShows the amount of change in price.");
- ccLang.get().addDefault("SHOP_SETTING.HIDE_STOCK", "§fHide stock.");
- ccLang.get().addDefault("SHOP_SETTING.HIDE_PRICING_TYPE", "§fHide price type.");
- ccLang.get().addDefault("SHOP_SETTING.HIDE_SHOP_BALANCE", "§fHide shop account balance.");
- ccLang.get().addDefault("SHOP_SETTING.SHOW_MAX_STOCK", "§fShow max stock.");
- ccLang.get().addDefault("SHOP_SETTING.HIDDEN_IN_COMMAND", "§fDon't show this store\n§fin command autocomplete.");
- ccLang.get().addDefault("SHOP_SETTING.INTEGER_ONLY", "§fThe purchase price will be rounded up.\n§fThe sale price will be rounded down.");
- ccLang.get().addDefault("SHOP_SETTING.PERMISSION", "§fPermission");
- ccLang.get().addDefault("SHOP_SETTING.STATE", "§fState");
- ccLang.get().addDefault("SHOP_SETTING.STATE_ENABLE", "§aEnable");
- ccLang.get().addDefault("SHOP_SETTING.STATE_DISABLE", "§cDisable");
- ccLang.get().addDefault("SHOP_SETTING.ROTATION_EDITOR", "§fRotation: ");
- ccLang.get().addDefault("SHOP_SETTING.ROTATION_EDITOR_LORE", "§eClick: Rotation editor");
- ccLang.get().addDefault("SHOP_SETTING.COMMAND_TOGGLE", "§fCommand");
- ccLang.get().addDefault("SHOP_SETTING.COMMAND_TOGGLE_LORE", "§fExecutes server commands\n§fwhen a store transaction occurs.");
- ccLang.get().addDefault("SHOP_SETTING.COMMAND_SELL", "§fSell Command");
- ccLang.get().addDefault("SHOP_SETTING.COMMAND_BUY", "§fBuy Command");
- ccLang.get().addDefault("SHOP_SETTING.COMMAND_LORE1", "§eLMB: Set");
- ccLang.get().addDefault("SHOP_SETTING.COMMAND_LORE3", "§eShift RMB: Delete last item");
- ccLang.get().addDefault("SHOP_SETTING.TRADE_UI", "§fEdit Trade UI");
- ccLang.get().addDefault("SHOP_SETTING.TRADE_UI_LORE_2", "§eLMB: Edit\n§eRMB: Reset");
-
- ccLang.get().addDefault("ROTATION_EDITOR_TITLE", "§3Rotation Editor");
- ccLang.get().addDefault("ROTATION_EDITOR.ENABLED", "§aEnabled");
- ccLang.get().addDefault("ROTATION_EDITOR.DISABLED", "§cDisabled");
- ccLang.get().addDefault("ROTATION_EDITOR.CLICK_TO_ENABLE", "§eLMB: Enable");
- ccLang.get().addDefault("ROTATION_EDITOR.CLICK_TO_DISABLE", "§eLMB: Disable");
- ccLang.get().addDefault("ROTATION_EDITOR.CURRENT_TIME", "§fCurrent time: ");
- ccLang.get().addDefault("ROTATION_EDITOR.CURRENTLY_IN_USE", "§a[Currently in use]");
- ccLang.get().addDefault("ROTATION_EDITOR.NEXT_ROTATION", "§fNext rotation: ");
- ccLang.get().addDefault("ROTATION_EDITOR.PERIOD", "§fPeriod");
- ccLang.get().addDefault("ROTATION_EDITOR.PERIOD_LORE_V2", "§eLMB: -1h, RMB: +1h, Shift: x10");
- ccLang.get().addDefault("ROTATION_EDITOR.TIMER", "§fTimer adjustment");
- ccLang.get().addDefault("ROTATION_EDITOR.TIMER_LORE_V2", "§eLMB: -10m, RMB: +10m, Shift: x6");
- ccLang.get().addDefault("ROTATION_EDITOR.HOUR", "§f{0}hours");
- ccLang.get().addDefault("ROTATION_EDITOR.UNSAVED_CHANGES", "§c§oUnsaved changes");
- ccLang.get().addDefault("ROTATION_EDITOR.APPLY_CHANGES", "§fApply changes");
- ccLang.get().addDefault("ROTATION_EDITOR.APPLY_CHANGES_LORE", "§eLMB: Save changes\n§eRMB: Reset Changes");
- ccLang.get().addDefault("ROTATION_EDITOR.APPLY_ROTATION", "§eLMB: Apply now");
- ccLang.get().addDefault("ROTATION_EDITOR.OPEN", "§eLMB: Open");
- ccLang.get().addDefault("ROTATION_EDITOR.CREATE", "§eLMB: Create empty");
- ccLang.get().addDefault("ROTATION_EDITOR.COPY_AS_NEW", "§eRMB: Copy as new");
- ccLang.get().addDefault("ROTATION_EDITOR.DELETE", "§eShift RMB: §cDelete");
- ccLang.get().addDefault("ROTATION_EDITOR.REAPPLY", "§eShift LMB: Reapply");
- ccLang.get().addDefault("ROTATION_EDITOR.MOVE", "§eRMB: Move");
-
- ccLang.get().addDefault("ITEM_SETTING_TITLE", "§3Item Settings");
- ccLang.get().addDefault("ITEM_SETTING.VALUE_BUY", "§fPurchase value: ");
- ccLang.get().addDefault("ITEM_SETTING.VALUE_SELL", "§fSales value: ");
- ccLang.get().addDefault("ITEM_SETTING.PRICE", "§fBuy: ");
- ccLang.get().addDefault("ITEM_SETTING.SELL_PRICE", "§fSell: ");
- ccLang.get().addDefault("ITEM_SETTING.PRICE_MIN", "§fMinimum price: ");
- ccLang.get().addDefault("ITEM_SETTING.PRICE_MAX", "§fMaximum price: ");
- ccLang.get().addDefault("ITEM_SETTING.MEDIAN", "§fMedian: ");
- ccLang.get().addDefault("ITEM_SETTING.STOCK", "§fStock: ");
- ccLang.get().addDefault("ITEM_SETTING.MAX_STOCK", "§fMax stock: ");
- ccLang.get().addDefault("ITEM_SETTING.MAX_STOCK_LORE", "§fIf the stock exceeds this,\n§fthe shop will refuse to purchase.");
- ccLang.get().addDefault("ITEM_SETTING.INF_STOCK", "Infinite stock");
- ccLang.get().addDefault("ITEM_SETTING.STATIC_PRICE", "Fixed price");
- ccLang.get().addDefault("ITEM_SETTING.UNLIMITED", "Unlimited");
- ccLang.get().addDefault("ITEM_SETTING.MEDIAN_HELP", "§fThe smaller the median,\n§fthe steeper the price change.");
- ccLang.get().addDefault("ITEM_SETTING.TAX_IGNORED", "Sales tax settings are ignored.");
- ccLang.get().addDefault("ITEM_SETTING.RECOMMEND", "§fApply recommended values");
- ccLang.get().addDefault("ITEM_SETTING.DISCOUNT", "§fDiscount");
- ccLang.get().addDefault("ITEM_SETTING.DISCOUNT_LORE", "§fDiscount rate: {num}%\n§eLMB: +10, RMB: -10");
- ccLang.get().addDefault("ITEM_SETTING.DISCOUNT_LORE_2", "§fDiscount rate: {num}%\n§eLMB: -10, RMB: +10");
- ccLang.get().addDefault("ITEM_SETTING.DONE", "§fDone");
- ccLang.get().addDefault("ITEM_SETTING.DONE_LORE", "§fDone!");
- ccLang.get().addDefault("ITEM_SETTING.ROUND_DOWN", "§fRound down");
- ccLang.get().addDefault("ITEM_SETTING.SET_TO_MEDIAN", "§fSet to median");
- ccLang.get().addDefault("ITEM_SETTING.SET_TO_STOCK", "§fSet to stock");
- ccLang.get().addDefault("ITEM_SETTING.SET_TO_VALUE", "§fSet to value");
- ccLang.get().addDefault("ITEM_SETTING.CLOSE", "§fClose");
- ccLang.get().addDefault("ITEM_SETTING.CLOSE_LORE", "§f§nClick: Close");
- ccLang.get().addDefault("ITEM_SETTING.REMOVE", "§cRemove");
- ccLang.get().addDefault("ITEM_SETTING.REMOVE_LORE", "§fRemove this item from the shop.");
- ccLang.get().addDefault("ITEM_SETTING.BUY", "§3§lBuy: {num}");
- ccLang.get().addDefault("ITEM_SETTING.SELL", "§3§lSell: {num}");
- ccLang.get().addDefault("ITEM_SETTING.TRADE_LIMIT_SELL", "§fSales limit per player");
- ccLang.get().addDefault("ITEM_SETTING.TRADE_LIMIT_SELL_LORE", "§f{num}\n§eLMB: -1, RMB: +1, Shift = x10");
- ccLang.get().addDefault("ITEM_SETTING.TRADE_LIMIT_BUY", "§fPurchase limit per player");
- ccLang.get().addDefault("ITEM_SETTING.TRADE_LIMIT_BUY_LORE", "§f{num}\n§eLMB: -1, RMB: +1, Shift = x10");
- ccLang.get().addDefault("ITEM_SETTING.TRADE_LIMIT_INTERVAL", "§fTrading volume limit reset cycle");
- ccLang.get().addDefault("ITEM_SETTING.TRADE_LIMIT_INTERVAL_LORE", "§fInterval: {interval}\n§fNext reset: {time}\n§eLMB: -1h, RMB: +1h, Shift = x12");
- ccLang.get().addDefault("ITEM_SETTING.TRADE_LIMIT_TIMER", "§fAdjust Timer");
- ccLang.get().addDefault("ITEM_SETTING.TRADE_LIMIT_TIMER_LORE", "§f{num}\n§fNext reset: {time}\n§eLMB: -1h, RMB: +1h, Shift = x12");
-
- ccLang.get().addDefault("TRADE_TITLE", "§3Trade");
- ccLang.get().addDefault("TRADE.TOGGLE_SELLABLE", "§eClick: Sale only toggle");
- ccLang.get().addDefault("TRADE.TOGGLE_BUYABLE", "§eClick: Purchase Only Toggle");
- ccLang.get().addDefault("TRADE.BUY_ONLY_LORE", "§fThis item cannot be sold.");
- ccLang.get().addDefault("TRADE.SELL_ONLY_LORE", "§fThis item cannot be purchased.");
- ccLang.get().addDefault("TRADE.BALANCE", "§3My balance");
- ccLang.get().addDefault("TRADE.PRICE", "§fBuy: {num}");
- ccLang.get().addDefault("TRADE.SELL_PRICE", "§fSell: {num}");
- ccLang.get().addDefault("TRADE.PRICE_DISCOUNTED", "§fBuy: §8§m{num}§r §a{num2}");
- ccLang.get().addDefault("TRADE.SELL_PRICE_DISCOUNTED", "§fSell: §8§m{num}§r §c{num2}");
- ccLang.get().addDefault("TRADE.PRICE_EXP", "§fBuy: {num}EXP");
- ccLang.get().addDefault("TRADE.SELL_PRICE_EXP", "§fSell: {num}EXP");
- ccLang.get().addDefault("TRADE.PRICE_DISCOUNTED_EXP", "§fBuy: §8§m{num}EXP§r §a{num2}EXP");
- ccLang.get().addDefault("TRADE.SELL_PRICE_DISCOUNTED_EXP", "§fSell: §8§m{num}EXP§r §c{num2}EXP");
- ccLang.get().addDefault("TRADE.PRICE_PP", "§fBuy: {num}PP");
- ccLang.get().addDefault("TRADE.SELL_PRICE_PP", "§fSell: {num}PP");
- ccLang.get().addDefault("TRADE.PRICE_DISCOUNTED_PP", "§fBuy: §8§m{num}PP§r §a{num2}PP");
- ccLang.get().addDefault("TRADE.SELL_PRICE_DISCOUNTED_PP", "§fSell: §8§m{num}PP§r §c{num2}PP");
- ccLang.get().addDefault("TRADE.PRICE_JP", "§fBuy: {num}JP");
- ccLang.get().addDefault("TRADE.SELL_PRICE_JP", "§fSell: {num}JP");
- ccLang.get().addDefault("TRADE.PRICE_DISCOUNTED_JP", "§fBuy: §8§m{num}JP§r §a{num2}JP");
- ccLang.get().addDefault("TRADE.SELL_PRICE_DISCOUNTED_JP", "§fSell: §8§m{num}JP§r §c{num2}JP");
- ccLang.get().addDefault("TRADE.BUY", "§cBuy");
- ccLang.get().addDefault("TRADE.SELL", "§2Sell");
- ccLang.get().addDefault("TRADE.STOCK", "§8Stock: ");
- ccLang.get().addDefault("TRADE.STACKS", "§8{num} Stacks");
- ccLang.get().addDefault("TRADE.INF_STOCK", "§8Infinite");
- ccLang.get().addDefault("TRADE.SHOP_BAL_INF", "§fUnlimited");
- ccLang.get().addDefault("TRADE.SHOP_BAL", "§3Shop account balance \n§f{num}");
- ccLang.get().addDefault("TRADE.CLICK_TO_BUY", "§c§nClick: Buy {amount}");
- ccLang.get().addDefault("TRADE.CLICK_TO_SELL", "§2§nClick: Sell {amount}");
- ccLang.get().addDefault("TRADE.PURCHASE_LIMIT_PER_PLAYER", "§aPurchase limit: {num}left\n§aNext reset: {time}");
- ccLang.get().addDefault("TRADE.SALES_LIMIT_PER_PLAYER", "§aSales limit: {num}left\n§aNext reset: {time}");
- ccLang.get().addDefault("TRADE.QUANTITY_LORE", "§eShift RMB: Edit Quantity");
- ccLang.get().addDefault("TRADE.WAIT_FOR_INPUT", "Enter the quantity that will be displayed in the Trade UI.\nExample: 1,2,4,8,16,32,64");
-
- ccLang.get().addDefault("PAGE_EDITOR_TITLE", "§3Page Editor");
- ccLang.get().addDefault("PAGE_EDITOR.PREV", "§f<<");
- ccLang.get().addDefault("PAGE_EDITOR.NEXT", "§f>>");
- ccLang.get().addDefault("PAGE_EDITOR.PAGE_SWAP_SUCCESS", "§fThe page has been replaced.");
- ccLang.get().addDefault("PAGE_EDITOR.PAGE_SWAP_FAIL", "§fPage replacement failed.");
- ccLang.get().addDefault("PAGE_EDITOR.PAGE_SWAP_SELECTED", "§fPage has been selected. Right-click on the other pages to be replaced.");
- ccLang.get().addDefault("PAGE_EDITOR.PAGE_LORE_PREMIUM", "§eLMB: Open page\n§eRMB: Swap\n§eShift LMB: Insert\n§eShift RMB: Delete");
- ccLang.get().addDefault("PAGE_EDITOR.PRICE", "§fBuy: {num}");
- ccLang.get().addDefault("PAGE_EDITOR.SELL_PRICE", "§fSell: {num}");
- ccLang.get().addDefault("PAGE_EDITOR.STOCK", "§8Stock: {num}");
- ccLang.get().addDefault("PAGE_EDITOR.STACKS", "§8{num} Stakcs");
- ccLang.get().addDefault("PAGE_EDITOR.STATIC_PRICE", "§8[Fixed price]");
- ccLang.get().addDefault("PAGE_EDITOR.EMPTY", "§8(empty)");
- ccLang.get().addDefault("PAGE_EDITOR.EMPTY_SLOT_LORE", "§eLMB,RMB: Push\n§e+Shift: Pull");
-
- ccLang.get().addDefault("LOG_VIEWER_TITLE", "§3Log Viewer");
- ccLang.get().addDefault("LOG_VIEWER.DATE", "§fDate: ");
- ccLang.get().addDefault("LOG_VIEWER.TIME", "§fTime: ");
- ccLang.get().addDefault("LOG_VIEWER.CURRENCY", "§fCurrency: ");
- ccLang.get().addDefault("LOG_VIEWER.PRICE", "§fPrice: ");
- ccLang.get().addDefault("LOG_VIEWER.EXPAND", "§fExpand");
- ccLang.get().addDefault("LOG_VIEWER.COLLAPSE", "§fCollapse");
- ccLang.get().addDefault("LOG_VIEWER.PAGE_TITLE", "§f{curPage}/{maxPage} Page");
- ccLang.get().addDefault("LOG_VIEWER.PAGE_LORE", "§eLMB: Prev\n§eRMB: Next");
- ccLang.get().addDefault("LOG_VIEWER.FILE_LORE", "§eLMB: Open\n§eShift RMB: §cDelete");
-
- ccLang.get().addDefault("LOG.LOG", "§fLog");
- ccLang.get().addDefault("LOG.CLEAR", "§fLog deleted");
- ccLang.get().addDefault("LOG.SAVE", "§fLog saved");
- ccLang.get().addDefault("LOG.DELETE", "§4Delete log");
- ccLang.get().addDefault("LOG.SELL", "§f{player} sells {amount} {item} to {shop}");
- ccLang.get().addDefault("LOG.BUY", "§f{player} buys {amount} {item} from {shop}");
-
- ccLang.get().addDefault("STOCK_SIMULATOR_TITLE", "§3Stock Simulator");
- ccLang.get().addDefault("STOCK_SIMULATOR.CHANGE_SAMPLE_LORE", "§eLMB, RMB: Change Item");
- ccLang.get().addDefault("STOCK_SIMULATOR.SIMULATOR_BUTTON_LORE", "§eRMB: Simulator");
- ccLang.get().addDefault("STOCK_SIMULATOR.RUN_TITLE", "§fRun");
- ccLang.get().addDefault("STOCK_SIMULATOR.RUN_LORE", "§eLMB: Run simulation\n§eRMB: Apply the settings to the shop\n§fItems are not affected.");
- ccLang.get().addDefault("STOCK_SIMULATOR.REAL_TIME", "§a(real time)");
- ccLang.get().addDefault("STOCK_SIMULATOR.AFTER_S", "§aAfter {0} seconds");
- ccLang.get().addDefault("STOCK_SIMULATOR.AFTER_M", "§aAfter {0} minutes");
- ccLang.get().addDefault("STOCK_SIMULATOR.AFTER_H", "§aAfter {0} hours");
- ccLang.get().addDefault("STOCK_SIMULATOR.AFTER_D", "§aAfter {0} days");
- ccLang.get().addDefault("STOCK_SIMULATOR.L_R_SHIFT", "§eLMB: -1 RMB: +1 Shift: x5");
- ccLang.get().addDefault("STOCK_SIMULATOR.PRICE", "§fPurchase price: {num}");
- ccLang.get().addDefault("STOCK_SIMULATOR.MEDIAN", "§fMedian: {num}");
- ccLang.get().addDefault("STOCK_SIMULATOR.STOCK", "§fStock: {num}");
-
- ccLang.get().addDefault("PALETTE_TITLE", "§3Select item to sell");
- ccLang.get().addDefault("PALETTE_TITLE2", "§3Select item");
- ccLang.get().addDefault("PALETTE.LORE_PREMIUM", "§eLMB: Add\n§eShift LMB: Add after setting\n§eRMB: Add as decoration\n§eShift RMB: Search '{item}'");
- ccLang.get().addDefault("PALETTE.LORE2", "§eLMB: Select\n§eShift RMB: Search '{item}'");
- ccLang.get().addDefault("PALETTE.SEARCH", "§fSearch");
- ccLang.get().addDefault("PALETTE.ADD_ALL", "§fAdd all");
- ccLang.get().addDefault("PALETTE.ADD_ALL_LORE", "§eLMB: Add all\n§eShift LMB: Add all and apply recommended values");
- ccLang.get().addDefault("PALETTE.PAGE_TITLE", "§f{curPage}/{maxPage} page");
- ccLang.get().addDefault("PALETTE.PAGE_LORE", "§f§nLMB: Prev\n§f§nRMB: Next");
- ccLang.get().addDefault("PALETTE.FILTER_APPLIED", "§fFilter Applied : ");
- ccLang.get().addDefault("PALETTE.FILTER_LORE", "§eLMB: Search\n§eRMB: Clear filter\n\n§7Example for finding \"BLUE_WOOL\":\n§7 b w\n§7 wool\n§7 blue wool");
-
- ccLang.get().addDefault("QUICK_SELL_TITLE", "§3Quick Sell");
- ccLang.get().addDefault("QUICK_SELL.GUIDE_TITLE", "§3§lQuick Sell Guide");
- ccLang.get().addDefault("QUICK_SELL.GUIDE_LORE", "§aLeft-click the item you want to sell.\n§aShift left click to sell all items of the same type.\n§aRight-click to go to the item shop.");
-
- ccLang.get().addDefault("ARROW.UP", "§a⬆");
- ccLang.get().addDefault("ARROW.DOWN", "§c⬇");
- ccLang.get().addDefault("ARROW.UP_2", "§c⬆");
- ccLang.get().addDefault("ARROW.DOWN_2", "§a⬇");
-
- ccLang.get().addDefault("TIME.OPEN", "Open");
- ccLang.get().addDefault("TIME.CLOSE", "Close");
- ccLang.get().addDefault("TIME.OPEN_LORE", "§fSet opening time");
- ccLang.get().addDefault("TIME.CLOSE_LORE", "§fSet closing time");
- ccLang.get().addDefault("TIME.SHOPHOURS", "§fOpening hours");
- ccLang.get().addDefault("TIME.OPEN24", "Open 24 hours");
- ccLang.get().addDefault("TIME.SHOP_IS_CLOSED", "§fThe shop is closed. It opens at {time} o'clock. {curTime} o'clock now.");
- ccLang.get().addDefault("TIME.SET_SHOPHOURS", "Set business hours");
- ccLang.get().addDefault("TIME.CUR", "§fCurrent time: {time}h");
-
- ccLang.get().addDefault("STOCK_STABILIZING.SS", "§fStock stabilization");
- ccLang.get().addDefault("STOCK_STABILIZING.L_R_SHIFT", "§eLMB: -0.1 RMB: +0.1 Shift: x5");
- ccLang.get().addDefault("STOCK_STABILIZING.STRENGTH_LORE_A", "§fn% of median");
- ccLang.get().addDefault("STOCK_STABILIZING.STRENGTH_LORE_B", "§fn% of the gap with median");
-
- ccLang.get().addDefault("FLUCTUATION.FLUCTUATION", "§fStock fluctuation");
- ccLang.get().addDefault("FLUCTUATION.INTERVAL", "§fInterval");
- ccLang.get().addDefault("FLUCTUATION.INTERVAL_LORE", "§f1h = 1000ticks = real time 50s");
- ccLang.get().addDefault("FLUCTUATION.STRENGTH", "§fStrength");
- ccLang.get().addDefault("FLUCTUATION.STRENGTH_LORE", "§fn% of median");
-
- ccLang.get().addDefault("TAX.SALES_TAX", "§fSales tax");
- ccLang.get().addDefault("TAX.USE_GLOBAL", "Use global settings ({tax}%)");
- ccLang.get().addDefault("TAX.USE_LOCAL", "Set separately");
-
- ccLang.get().addDefault("MESSAGE.SEARCH_ITEM", "§fEnter the name of the item you are looking for.");
- ccLang.get().addDefault("MESSAGE.SEARCH_CANCELED", "§fSearch Canceled.");
- ccLang.get().addDefault("MESSAGE.INPUT_CANCELED", "§fInput canceled.");
- ccLang.get().addDefault("MESSAGE.DELETE_CONFIRM", "§fAre you sure you want to delete the page? Enter 'delete' to delete.");
- ccLang.get().addDefault("MESSAGE.CANT_DELETE_LAST_PAGE", "§fThe last remaining page cannot be deleted.");
- ccLang.get().addDefault("MESSAGE.SHOP_BAL_LOW", "§fThe shop doesn't have enough money.");
- ccLang.get().addDefault("MESSAGE.SHOP_CREATED", "§fShop created!");
- ccLang.get().addDefault("MESSAGE.SHOP_DELETED", "§fShop deleted!");
- ccLang.get().addDefault("MESSAGE.OUT_OF_STOCK", "§fOut of stock!");
- ccLang.get().addDefault("MESSAGE.BUY_SUCCESS", "§fBought {item} x{amount} for {price}. Balance: {bal}");
- ccLang.get().addDefault("MESSAGE.SELL_SUCCESS", "§fSold {item} x{amount} for {price}. Balance: {bal}");
- ccLang.get().addDefault("MESSAGE.BUY_SUCCESS_EXP", "§fBought {item} x{amount} for {price}Exp Points. Balance: {bal}");
- ccLang.get().addDefault("MESSAGE.SELL_SUCCESS_EXP", "§fSold {item} x{amount} for {price}Exp Points. Balance: {bal}");
- ccLang.get().addDefault("MESSAGE.BUY_SUCCESS_JP", "§fBought {item} x{amount} for {price}points. Remaining points: {bal}");
- ccLang.get().addDefault("MESSAGE.SELL_SUCCESS_JP", "§fSold {item} x{amount} for {price}points. Remaining points: {bal}");
- ccLang.get().addDefault("MESSAGE.BUY_SUCCESS_PP", "§fBought {item} x{amount} for {price}points. Remaining points: {bal}");
- ccLang.get().addDefault("MESSAGE.SELL_SUCCESS_PP", "§fSold {item} x{amount} for {price}points. Remaining points: {bal}");
- ccLang.get().addDefault("MESSAGE.QSELL_NA", "§fThere is no shop that handles this item.");
- ccLang.get().addDefault("MESSAGE.DELIVERY_CHARGE", "§fDelivery fee: {fee}");
- ccLang.get().addDefault("MESSAGE.DELIVERY_CHARGE_NA", "§fIt cannot be delivered to another world.");
- ccLang.get().addDefault("MESSAGE.NOT_ENOUGH_MONEY", "§fNot enough money. balance: {bal}");
- ccLang.get().addDefault("MESSAGE.NOT_ENOUGH_POINT", "§fNot enough points. balance: {bal}");
- ccLang.get().addDefault("MESSAGE.NOT_ENOUGH_PLAYER_POINT", "§fNot enough player points. balance: {bal}");
- ccLang.get().addDefault("MESSAGE.NOT_ENOUGH_EXP_POINT", "§fNot enough Exp points. balance: {bal}");
- ccLang.get().addDefault("MESSAGE.NO_ITEM_TO_SELL", "§fThere are no items for sale.");
- ccLang.get().addDefault("MESSAGE.NO_ITEM_TO_SELL_2", "§fThere are no items available for sale.");
- ccLang.get().addDefault("MESSAGE.INVENTORY_FULL", "§4There are no empty spaces in your inventory!");
- ccLang.get().addDefault("MESSAGE.IRREVERSIBLE", "§fThis action is irreversible!");
- ccLang.get().addDefault("MESSAGE.ITEM_ADDED", "Item added!");
- ccLang.get().addDefault("MESSAGE.ITEM_UPDATED", "Item updated!");
- ccLang.get().addDefault("MESSAGE.ITEM_DELETED", "Item deleted!");
- ccLang.get().addDefault("MESSAGE.CHANGES_APPLIED", "Changes applied. New values:");
- ccLang.get().addDefault("MESSAGE.CHANGES_APPLIED_2", "Changes applied");
- ccLang.get().addDefault("MESSAGE.RECOMMEND_APPLIED", "Recommended value applied. It is based on {playerNum}players. You can change this value in the config file.");
- ccLang.get().addDefault("MESSAGE.TRANSFER_SUCCESS", "Remittance completed");
- ccLang.get().addDefault("MESSAGE.PURCHASE_REJECTED", "There are too many of these items in the shop. Can't sell it now.");
- ccLang.get().addDefault("MESSAGE.CLICK_YOUR_ITEM_START_PAGE", "Click on an item in your inventory to find the shop with the best deal.\nLMB: Buy RMB: Sell");
- ccLang.get().addDefault("MESSAGE.MOVE_TO_BEST_SHOP_BUY", "Moved to the shop where you can buy {item} at the lowest price.");
- ccLang.get().addDefault("MESSAGE.MOVE_TO_BEST_SHOP_SELL", "Moved to the shop where you can sell {item} at the highest price.");
- ccLang.get().addDefault("MESSAGE.SHOP_IS_CLOSED_BY_ADMIN", "This shop is currently closed by the server administrator.");
- ccLang.get().addDefault("MESSAGE.SHOP_DISABLED", "This shop is currently disabled. Non-admin users cannot use it. You can enable it in the shop settings.");
- ccLang.get().addDefault("MESSAGE.ROTATION_SHARED_DATA_MISSING", "§e[ ! ]§fThe required data could not be found in '{0}/SharedData.yml' for {1} items. These items have been added as decoration.");
- ccLang.get().addDefault("MESSAGE.ENTER_COMMAND", "Enter the command without '/'.");
- ccLang.get().addDefault("MESSAGE.ENTER_COMMAND_2", "Enter in the form of 'index/command'.");
- ccLang.get().addDefault("MESSAGE.SELL_COMMAND_CUR", "Sell commands currently in effect:");
- ccLang.get().addDefault("MESSAGE.BUY_COMMAND_CUR", "Buy commands currently in effect:");
- ccLang.get().addDefault("MESSAGE.Q_SEARCH_FAIL_CURRENCY", "This item is being traded in several currencies.");
-
- ccLang.get().addDefault("HELP.TITLE", "§fHelp: {command} --------------------");
- ccLang.get().addDefault("HELP.SHOP", "Open shop");
- ccLang.get().addDefault("HELP.CMD", "Toggle display of command help.");
- ccLang.get().addDefault("HELP.CREATE_SHOP", "Create a new shop.");
- ccLang.get().addDefault("HELP.CREATE_SHOP_2", "Permissions (can be changed later)\n true: dshop.user.shop.shopName\n false: Anyone can access (default)\n Arbitrary value: Requires permission");
- ccLang.get().addDefault("HELP.DELETE_SHOP", "Remove existing stores.");
- ccLang.get().addDefault("HELP.SHOP_ADD_HAND", "Adds the item in hand to the shop.");
- ccLang.get().addDefault("HELP.SHOP_ADD_ITEM", "Add item to the shop.");
- ccLang.get().addDefault("HELP.SHOP_EDIT", "Edit item in the store.");
- ccLang.get().addDefault("HELP.PRICE", "§7Price calculation formula: median*value/stock");
- ccLang.get().addDefault("HELP.INF_STATIC", "§7median<0 == Fixed price stock<0 == Infinite stock");
- ccLang.get().addDefault("HELP.EDIT_ALL", "Modify all items in the shop at once.");
- ccLang.get().addDefault("HELP.RELOAD", "Reload the plugin.");
- ccLang.get().addDefault("HELP.RELOADED", "Plugin reloaded");
- ccLang.get().addDefault("HELP.USAGE", "Usage");
- ccLang.get().addDefault("HELP.ITEM_ALREADY_EXIST", "§7§o{item} is already on sale.\n {info}\n Entering a command modifies the value.");
- ccLang.get().addDefault("HELP.ITEM_INFO", "§7§o{item}'s current settings:\n {info}");
- ccLang.get().addDefault("HELP.REMOVE_ITEM", "§fEntering an argument of 0 will §4remove§f this item from the store.");
- ccLang.get().addDefault("HELP.QSELL", "§fSell items quickly.");
- ccLang.get().addDefault("HELP.DELETE_OLD_USER", "Delete long-term inactive user data");
- ccLang.get().addDefault("HELP.ACCOUNT", "Sets the account balance of the shop. -1 = unlimited");
- ccLang.get().addDefault("HELP.SET_TO_REC_ALL", "§cResets§e all item settings in the store to the recommended values.");
- ccLang.get().addDefault("HELP.SHOP_ENABLE", "Enables or disables the shop.");
-
- ccLang.get().addDefault("ERR.NO_USER_ID", "§6Player uuid not found. Shop unavailable.");
- ccLang.get().addDefault("ERR.ITEM_NOT_EXIST", "The item does not exist in the store.");
- ccLang.get().addDefault("ERR.ITEM_FORBIDDEN", "This is a prohibited item.");
- ccLang.get().addDefault("ERR.NO_PERMISSION", "§eYou do not have permission.");
- ccLang.get().addDefault("ERR.WRONG_USAGE", "Incorrect command usage.");
- ccLang.get().addDefault("ERR.NO_EMPTY_SLOT", "There is no empty space in the shop.");
- ccLang.get().addDefault("ERR.WRONG_DATATYPE", "Invalid argument type");
- ccLang.get().addDefault("ERR.VALUE_ZERO", "The argument value must be greater than 0.");
- ccLang.get().addDefault("ERR.WRONG_ITEM_NAME", "Invalid item name.");
- ccLang.get().addDefault("ERR.HAND_EMPTY", "You must hold the item in your hand.");
- ccLang.get().addDefault("ERR.HAND_EMPTY2", "§c§oYou must have the item in your hand!");
- ccLang.get().addDefault("ERR.SHOP_NOT_FOUND", "§fThe shop could not be found.");
- ccLang.get().addDefault("ERR.SHOP_EXIST", "A store with that name already exists.");
- ccLang.get().addDefault("ERR.SHOP_NOT_EXIST", "No shop with that name.");
- ccLang.get().addDefault("ERR.SIGN_SHOP_REMOTE_ACCESS", "The shop is only accessible via sign.");
- ccLang.get().addDefault("ERR.LOCAL_SHOP_REMOTE_ACCESS", "The shop can only be used by visiting it in person.");
- ccLang.get().addDefault("ERR.MAX_LOWER_THAN_MIN", "The maximum price must be greater than the minimum price.");
- ccLang.get().addDefault("ERR.DEFAULT_VALUE_OUT_OF_RANGE", "The base price must be between the minimum price and the maximum price.");
- ccLang.get().addDefault("ERR.NO_RECOMMEND_DATA", "There is no information for this item in the Worth.yml file.");
- ccLang.get().addDefault("ERR.JOBS_REBORN_NOT_FOUND", "Could not find 'Jobs reborn'.");
- ccLang.get().addDefault("ERR.PLAYER_POINTS_NOT_FOUND", "Could not find 'Player points'.");
- ccLang.get().addDefault("ERR.SHOP_HAS_INF_BAL", "{shop} is an infinite account store.");
- ccLang.get().addDefault("ERR.SHOP_DIFF_CURRENCY", "The two stores use different currencies.");
- ccLang.get().addDefault("ERR.PLAYER_NOT_EXIST", "The player could not be found.");
- ccLang.get().addDefault("ERR.SHOP_LINK_FAIL", "Either store must be a real account.");
- ccLang.get().addDefault("ERR.SHOP_LINK_TARGET_ERR", "The target store must have a real account.");
- ccLang.get().addDefault("ERR.NESTED_STRUCTURE", "It is forbidden to build hierarchies. (ex. aa-bb, bb-cc)");
- ccLang.get().addDefault("ERR.CREATIVE", "§eYou cannot use this command in Creative mode. You do not have permission.");
- ccLang.get().addDefault("ERR.FILE_CREATE_FAIL", "§eFile creation failed");
- ccLang.get().addDefault("ERR.INVALID_TRANSACTION", "This transaction is no longer valid. If this problem recurs, contact your server administrator");
- ccLang.get().addDefault("ERR.SIGN_WALL", "Sign must be placed on wall.");
-
- ccLang.get().addDefault("ERR.SHOP_NULL", "§eShop name cannot be null.");
- ccLang.get().addDefault("ERR.ITEMINFO_HAND_EMPTY", "You need to hold an item.");
- ccLang.get().addDefault("HELP.ITEMINFO_USAGE", "§fHold an item in your hand to learn about it.");
- ccLang.get().addDefault("HELP.ITEMINFO_REALNAME", "§7Real name: §3{item_realname}");
- ccLang.get().addDefault("HELP.ITEMINFO_SIGN_NAME", "§7Sign name: §3{item_signname}");
- ccLang.get().addDefault("ERR.SIGN_ITEM_INVALID", "Invalid item. Use /ds iteminfo to find the name of the item on the sign.");
- ccLang.get().addDefault("ERR.SIGN_ITEM_NOT_FOR_SALE", "First you must add the item in the shop and then use it on the sign.");
- ccLang.get().addDefault("MESSAGE.SIGN_SHOP_CREATED", "§aSign Shop created!");
-
- ccLang.get().addDefault("ON", "ON");
- ccLang.get().addDefault("OFF", "OFF");
- ccLang.get().addDefault("SET", "SET");
- ccLang.get().addDefault("UNSET", "UNSET");
- ccLang.get().addDefault("NULL", "Null");
- ccLang.get().addDefault("NULL(OPEN)", "None (open to all)");
- ccLang.get().addDefault("CUR_STATE", "Current Status");
- ccLang.get().addDefault("CLICK", "Click");
- ccLang.get().addDefault("LMB", "LMB");
- ccLang.get().addDefault("RMB", "RMB");
- ccLang.get().addDefault("CLOSE", "§fClose");
- ccLang.get().addDefault("CLOSE_LORE", "§f§nClick: Close");
-
- ccLang.get().addDefault("EXP_POINTS", "Exp Points");
- ccLang.get().addDefault("JOB_POINTS", "Job Points");
- ccLang.get().addDefault("PLAYER_POINTS", "Player Points");
-
- ccLang.get().options().copyDefaults(true);
- ccLang.save();
- }
+ en_US();
+
+ // 繁體中文
+ zh_TW();
if (lang == null) lang = "en-US";
- if (!lang.equals("en-US") && !lang.equals("ko-KR"))
+ if (!lang.equals("en-US") && !lang.equals("ko-KR") && !lang.equalsIgnoreCase("zh-TW"))
{
ConfigurationSection conf = ccLang.get().getConfigurationSection("");
@@ -951,6 +63,1350 @@ public static void setupLangFile(String lang)
ReloadNumberFormat();
}
+ private static void ko_KR()
+ {
+ ccLang.setup("Lang_V3_ko-KR", null);
+
+ ccLang.get().addDefault("START_PAGE.EDITOR_TITLE", "§3아이콘 편집");
+ ccLang.get().addDefault("START_PAGE.EDIT_NAME", "§f이름 바꾸기");
+ ccLang.get().addDefault("START_PAGE.EDIT_LORE", "§f설명 바꾸기");
+ ccLang.get().addDefault("START_PAGE.EDIT_ICON", "§f아이콘 바꾸기");
+ ccLang.get().addDefault("START_PAGE.EDIT_ACTION", "§f실행 명령어 바꾸기");
+ ccLang.get().addDefault("START_PAGE.SHOP_SHORTCUT", "§f상점으로 가는 버튼 만들기");
+ ccLang.get().addDefault("START_PAGE.CREATE_DECO", "§f장식 버튼 만들기");
+ ccLang.get().addDefault("START_PAGE.ENTER_SHOP_NAME", "상점 이름을 입력하세요.");
+ ccLang.get().addDefault("START_PAGE.DEFAULT_SHOP_LORE", "§f§n클릭: 상점으로 가기");
+ ccLang.get().addDefault("START_PAGE.ITEM_MOVE_LORE", "§e우클릭: 이동");
+ ccLang.get().addDefault("START_PAGE.ITEM_COPY_LORE", "§e우클릭: 복사");
+ ccLang.get().addDefault("START_PAGE.ITEM_REMOVE_LORE", "§eShift 좌클릭: 삭제");
+ ccLang.get().addDefault("START_PAGE.ITEM_EDIT_LORE", "§eShift우클릭: 편집");
+ ccLang.get().addDefault("START_PAGE.REMOVE", "§f제거");
+ ccLang.get().addDefault("START_PAGE.REMOVE_LORE", "§f이 버튼을 시작페이지에서 제거합니다.");
+ ccLang.get().addDefault("START_PAGE.ENTER_NAME", "버튼의 새 이름을 입력하세요.");
+ ccLang.get().addDefault("START_PAGE.ENTER_LORE", "버튼의 새 설명을 입력하세요.");
+ ccLang.get().addDefault("START_PAGE.ENTER_ICON", "버튼의 아이콘으로 사용할 아이탬 이름을 입력하세요. (영문. 대소문자 구분없음)");
+ ccLang.get().addDefault("START_PAGE.ENTER_ACTION", "명령어를 '/' 제외하고 입력하세요. 버튼을 눌렀을때 이 명령어가 실행됩니다.");
+ ccLang.get().addDefault("START_PAGE.ENTER_COLOR", "장식 버튼의 색상을 입력하세요. (영문)");
+ ccLang.get().addDefault("START_PAGE.SHOP_LIST_TITLE", "§3상점 목록");
+ ccLang.get().addDefault("START_PAGE.SHOP_LIST.PAGE_TITLE", "§f{curPage}/{maxPage} 페이지");
+ ccLang.get().addDefault("START_PAGE.SHOP_LIST.PAGE_LORE", "§e좌클릭: 이전 페이지\n§e우클릭: 다음 페이지");
+
+ ccLang.get().addDefault("COLOR_PICKER_TITLE", "§3색상 선택");
+
+ ccLang.get().addDefault("SHOP.TRADE_LORE", "§f§n클릭: 거래");
+ ccLang.get().addDefault("SHOP.BUY_PRICE", "§f구매: {num}");
+ ccLang.get().addDefault("SHOP.SELL_PRICE", "§f판매: {num}");
+ ccLang.get().addDefault("SHOP.BUY_PRICE_DISCOUNTED", "§f구매: §8§m{num}§r §a{num2}");
+ ccLang.get().addDefault("SHOP.SELL_PRICE_DISCOUNTED", "§f판매: §8§m{num}§r §c{num2}");
+ ccLang.get().addDefault("SHOP.BUY_PRICE_PP", "§f구매: {num}PP");
+ ccLang.get().addDefault("SHOP.SELL_PRICE_PP", "§f판매: {num}PP");
+ ccLang.get().addDefault("SHOP.BUY_PRICE_EXP", "§f구매: {num}Exp");
+ ccLang.get().addDefault("SHOP.SELL_PRICE_EXP", "§f판매: {num}Exp");
+ ccLang.get().addDefault("SHOP.BUY_PRICE_DISCOUNTED_EXP", "§f구매: §8§m{num}Exp§r §a{num2}Exp");
+ ccLang.get().addDefault("SHOP.SELL_PRICE_DISCOUNTED_EXP", "§f판매: §8§m{num}Exp§r §c{num2}Exp");
+ ccLang.get().addDefault("SHOP.BUY_PRICE_DISCOUNTED_PP", "§f구매: §8§m{num}PP§r §a{num2}PP");
+ ccLang.get().addDefault("SHOP.SELL_PRICE_DISCOUNTED_PP", "§f판매: §8§m{num}PP§r §c{num2}PP");
+ ccLang.get().addDefault("SHOP.BUY_PRICE_JP", "§f구매: {num}JP");
+ ccLang.get().addDefault("SHOP.SELL_PRICE_JP", "§f판매: {num}JP");
+ ccLang.get().addDefault("SHOP.BUY_PRICE_DISCOUNTED_JP", "§f구매: §8§m{num}JP§r §a{num2}JP");
+ ccLang.get().addDefault("SHOP.SELL_PRICE_DISCOUNTED_JP", "§f판매: §8§m{num}JP§r §c{num2}JP");
+ ccLang.get().addDefault("SHOP.STOCK", "§8재고: {num}");
+ ccLang.get().addDefault("SHOP.STOCK_2", "§8재고: {stock}/{max_stock}");
+ ccLang.get().addDefault("SHOP.INF_STOCK", "§8무한");
+ ccLang.get().addDefault("SHOP.STATIC_PRICE", "§8[고정 가격]");
+ ccLang.get().addDefault("SHOP.STACKS", "§8{num} 스택");
+ ccLang.get().addDefault("SHOP.ITEM_MOVE_LORE", "§e우클릭: 이동");
+ ccLang.get().addDefault("SHOP.ITEM_COPY_LORE", "§e우클릭: 복사");
+ ccLang.get().addDefault("SHOP.ITEM_EDIT_LORE", "§eShift우클릭: 편집");
+ ccLang.get().addDefault("SHOP.DECO_DELETE_LORE", "§eShift우클릭: 삭제");
+ ccLang.get().addDefault("SHOP.PAGE_TITLE", "§f{curPage}/{maxPage} 페이지");
+ ccLang.get().addDefault("SHOP.PAGE_LORE_V2", "§f§n좌클릭: 이전 페이지\n§f§n우클릭: 다음 페이지\n§7인벤토리에서 아이템을 클릭하면 \n§7그 아이템이 있는 페이지로 이동합니다.");
+ ccLang.get().addDefault("SHOP.GO_TO_PAGE_EDITOR", "§eShift+우: 페이지 에디터");
+ ccLang.get().addDefault("SHOP.ITEM_MOVE_SELECTED", "아이탬 선택됨. 비어있는 칸을 우클릭하면 이동합니다.");
+ ccLang.get().addDefault("SHOP.PERMISSION", "§f퍼미션:");
+ ccLang.get().addDefault("SHOP.PERMISSION_ITEM", "§7 - {permission}");
+ ccLang.get().addDefault("SHOP.FLAGS", "§e플래그:");
+ ccLang.get().addDefault("SHOP.FLAGS_ITEM", "§e - {flag}");
+ ccLang.get().addDefault("SHOP.SHOP_BAL_INF", "§f상점 계좌 무제한");
+ ccLang.get().addDefault("SHOP.SHOP_BAL", "§f상점 계좌 잔액");
+ ccLang.get().addDefault("SHOP.SHOP_LOCATION", "§f상점 위치: x {x}, y {y}, z {z}");
+ ccLang.get().addDefault("SHOP.SHOP_LOCATION_B", "§f상점 위치: ");
+ ccLang.get().addDefault("SHOP.SHOP_INFO_DASH", "§7 - ");
+ ccLang.get().addDefault("SHOP.DISABLED", "§c비활성§8|§f");
+ ccLang.get().addDefault("SHOP.INCOMPLETE_DATA", "불완전한 데이터");
+ ccLang.get().addDefault("SHOP.INCOMPLETE_DATA_Lore", "이 아이템은 어드민이 아닌\n유저에게는 보이지 않습니다.\nIndex: ");
+ ccLang.get().addDefault("SHOP.TRADE_LIMIT_BUY", "§a구매량 제한 : {num} 남음");
+ ccLang.get().addDefault("SHOP.TRADE_LIMIT_SELL", "§a판매량 제한 : {num} 남음");
+ ccLang.get().addDefault("SHOP.TRADE_LIMIT_TIMER", "§a다음 리셋: {time}");
+ ccLang.get().addDefault("SHOP.CLICK_TO_ADD", "§e클릭: 추가");
+
+ ccLang.get().addDefault("SHOP_SETTING_TITLE", "§3상점 설정");
+ ccLang.get().addDefault("SHOP_SETTING.LOG_TOGGLE_LORE", "§e우클릭: 로그 뷰어");
+ ccLang.get().addDefault("SHOP_SETTING.LOG_PRINT_CONSOLE", "§f로그를 콘솔에 출력");
+ ccLang.get().addDefault("SHOP_SETTING.LOG_PRINT_ADMIN", "§f로그를 어드민에게 출력");
+ ccLang.get().addDefault("SHOP_SETTING.MAX_PAGE", "§f최대 페이지");
+ ccLang.get().addDefault("SHOP_SETTING.MAX_PAGE_LORE", "§f상점의 최대 페이지를 설정합니다");
+ ccLang.get().addDefault("SHOP_SETTING.BACKGROUND", "§f배경 색상");
+ ccLang.get().addDefault("SHOP_SETTING.BACKGROUND_LORE", "§e클릭: 변경");
+ ccLang.get().addDefault("SHOP_SETTING.L_R_SHIFT", "§e좌: -1 우: +1 Shift: x5");
+ ccLang.get().addDefault("SHOP_SETTING.FLAG", "§f플래그");
+ ccLang.get().addDefault("SHOP_SETTING.SHOP_SETTINGS_LORE", "§e우클릭: 상점 편집");
+ ccLang.get().addDefault("SHOP_SETTING.SIGN_SHOP_LORE", "§f표지판을 통해서만 접근할 수 있습니다.");
+ ccLang.get().addDefault("SHOP_SETTING.LOCAL_SHOP_LORE", "§f실제 상점 위치를 방문해야 합니다.\n§f상점의 위치를 설정해야만 합니다.");
+ ccLang.get().addDefault("SHOP_SETTING.DELIVERY_CHARGE_LORE", "§f배달비를 지불하고 localshop에서 원격으로 거래합니다.");
+ ccLang.get().addDefault("SHOP_SETTING.SELECTED", "§2선택됨");
+ ccLang.get().addDefault("SHOP_SETTING.CURRENCY", "§f화폐 유형: ");
+ ccLang.get().addDefault("SHOP_SETTING.VAULT_LORE", "§f기본값 입니다.");
+ ccLang.get().addDefault("SHOP_SETTING.EXP_LORE", "§f플레이어의 경험치로 거래합니다.");
+ ccLang.get().addDefault("SHOP_SETTING.JOB_POINT_LORE", "§fJobs 플러그인의 job point로 거래합니다.");
+ ccLang.get().addDefault("SHOP_SETTING.PLAYER_POINT_LORE", "§fPlayerPoint 플러그인의 point로 거래합니다.");
+ ccLang.get().addDefault("SHOP_SETTING.SHOW_VALUE_CHANGE_LORE", "§f가격 변화량을 표시합니다.");
+ ccLang.get().addDefault("SHOP_SETTING.HIDE_STOCK", "§f재고 수량 표시를 숨깁니다.");
+ ccLang.get().addDefault("SHOP_SETTING.HIDE_PRICING_TYPE", "§f가격 유형 표기를 숨깁니다.");
+ ccLang.get().addDefault("SHOP_SETTING.HIDE_SHOP_BALANCE", "§f상점 계좌 잔액을 숨깁니다.");
+ ccLang.get().addDefault("SHOP_SETTING.SHOW_MAX_STOCK", "§f재고 상한을 표시합니다.");
+ ccLang.get().addDefault("SHOP_SETTING.HIDDEN_IN_COMMAND", "§f명령어 자동완성시 이 상점을 표시하지 않습니다.");
+ ccLang.get().addDefault("SHOP_SETTING.INTEGER_ONLY", "§f구매 가격이 올림 처리됩니다.\n§f판매 가격은 내림 처리됩니다.");
+ ccLang.get().addDefault("SHOP_SETTING.PERMISSION", "§f퍼미션");
+ ccLang.get().addDefault("SHOP_SETTING.STATE", "§f상태");
+ ccLang.get().addDefault("SHOP_SETTING.STATE_ENABLE", "§a활성");
+ ccLang.get().addDefault("SHOP_SETTING.STATE_DISABLE", "§c비활성");
+ ccLang.get().addDefault("SHOP_SETTING.ROTATION_EDITOR", "§f로테이션: ");
+ ccLang.get().addDefault("SHOP_SETTING.ROTATION_EDITOR_LORE", "§e클릭: 로테이션 에디터");
+ ccLang.get().addDefault("SHOP_SETTING.COMMAND_TOGGLE", "§f커맨드 실행");
+ ccLang.get().addDefault("SHOP_SETTING.COMMAND_TOGGLE_LORE", "§f상점 거래 발생시 서버 명령어를 실행합니다.");
+ ccLang.get().addDefault("SHOP_SETTING.COMMAND_SELL", "§f판매시 명령어");
+ ccLang.get().addDefault("SHOP_SETTING.COMMAND_BUY", "§f구매시 명령어");
+ ccLang.get().addDefault("SHOP_SETTING.COMMAND_LORE1", "§e좌클릭: 설정");
+ ccLang.get().addDefault("SHOP_SETTING.COMMAND_LORE3", "§e씨프트 우클릭: 마지막 항목 삭제");
+ ccLang.get().addDefault("SHOP_SETTING.TRADE_UI", "§f거래 UI 설정");
+ ccLang.get().addDefault("SHOP_SETTING.TRADE_UI_LORE_2", "§e좌클릭: 편집\n§e우클릭: 초기화");
+
+ ccLang.get().addDefault("ROTATION_EDITOR_TITLE", "§3로테이션 에디터");
+ ccLang.get().addDefault("ROTATION_EDITOR.ENABLED", "§a로테이션 켜짐");
+ ccLang.get().addDefault("ROTATION_EDITOR.DISABLED", "§c로테이션 꺼짐");
+ ccLang.get().addDefault("ROTATION_EDITOR.CLICK_TO_ENABLE", "§e좌클릭: 로테이션 켜기");
+ ccLang.get().addDefault("ROTATION_EDITOR.CLICK_TO_DISABLE", "§e좌클릭: 로테이션 끄기");
+ ccLang.get().addDefault("ROTATION_EDITOR.CURRENT_TIME", "§f현재 시간: ");
+ ccLang.get().addDefault("ROTATION_EDITOR.CURRENTLY_IN_USE", "§a[현재 적용중]");
+ ccLang.get().addDefault("ROTATION_EDITOR.NEXT_ROTATION", "§f다음 로테이션: ");
+ ccLang.get().addDefault("ROTATION_EDITOR.PERIOD", "§f로테이션 주기");
+ ccLang.get().addDefault("ROTATION_EDITOR.PERIOD_LORE_V2", "§e좌클릭: -1시간, 우클릭: +1시간, 씨프트: x10");
+ ccLang.get().addDefault("ROTATION_EDITOR.TIMER", "§f타이머 조정");
+ ccLang.get().addDefault("ROTATION_EDITOR.TIMER_LORE_V2", "§e좌클릭: -10분, 우클릭: +10분, 씨프트: x6");
+ ccLang.get().addDefault("ROTATION_EDITOR.HOUR", "§f{0}시간");
+ ccLang.get().addDefault("ROTATION_EDITOR.UNSAVED_CHANGES", "§c§o저장되지 않은 변경사항 있음");
+ ccLang.get().addDefault("ROTATION_EDITOR.APPLY_CHANGES", "§f변경사항 적용");
+ ccLang.get().addDefault("ROTATION_EDITOR.APPLY_CHANGES_LORE", "§e좌클릭: 변경사항 적용\n§e우클릭: 변경사항 초기화");
+ ccLang.get().addDefault("ROTATION_EDITOR.APPLY_ROTATION", "§e좌클릭: 지금 적용");
+ ccLang.get().addDefault("ROTATION_EDITOR.OPEN", "§e좌클릭: 열기");
+ ccLang.get().addDefault("ROTATION_EDITOR.CREATE", "§e좌클릭: 빈 로테이션 만들기");
+ ccLang.get().addDefault("ROTATION_EDITOR.COPY_AS_NEW", "§e우클릭: 현재 상점 복사하여 만들기");
+ ccLang.get().addDefault("ROTATION_EDITOR.DELETE", "§e씨프트 우클릭: §c삭제");
+ ccLang.get().addDefault("ROTATION_EDITOR.REAPPLY", "§e씨프트 좌클릭: 재적용");
+ ccLang.get().addDefault("ROTATION_EDITOR.MOVE", "§e우클릭: 이동");
+
+ ccLang.get().addDefault("ITEM_SETTING_TITLE", "§3아이탬 셋팅");
+ ccLang.get().addDefault("ITEM_SETTING.VALUE_BUY", "§f구매가치: ");
+ ccLang.get().addDefault("ITEM_SETTING.VALUE_SELL", "§f판매가치: ");
+ ccLang.get().addDefault("ITEM_SETTING.PRICE", "§f구매: ");
+ ccLang.get().addDefault("ITEM_SETTING.SELL_PRICE", "§f판매: ");
+ ccLang.get().addDefault("ITEM_SETTING.PRICE_MIN", "§f최소 가격: ");
+ ccLang.get().addDefault("ITEM_SETTING.PRICE_MAX", "§f최대 가격: ");
+ ccLang.get().addDefault("ITEM_SETTING.MEDIAN", "§f중앙값: ");
+ ccLang.get().addDefault("ITEM_SETTING.STOCK", "§f재고: ");
+ ccLang.get().addDefault("ITEM_SETTING.MAX_STOCK", "§f재고 상한: ");
+ ccLang.get().addDefault("ITEM_SETTING.MAX_STOCK_LORE", "§f재고량이 이보다 많아지면\n§f더이상 상점에 판매할 수 없게됩니다.");
+ ccLang.get().addDefault("ITEM_SETTING.INF_STOCK", "무한 재고");
+ ccLang.get().addDefault("ITEM_SETTING.STATIC_PRICE", "고정 가격");
+ ccLang.get().addDefault("ITEM_SETTING.UNLIMITED", "무제한");
+ ccLang.get().addDefault("ITEM_SETTING.MEDIAN_HELP", "§f중앙값이 작을수록 가격이 급격이 변화합니다.");
+ ccLang.get().addDefault("ITEM_SETTING.TAX_IGNORED", "판매세 설정이 무시됩니다.");
+ ccLang.get().addDefault("ITEM_SETTING.RECOMMEND", "§f추천 값 적용");
+ ccLang.get().addDefault("ITEM_SETTING.DISCOUNT", "§f할인");
+ ccLang.get().addDefault("ITEM_SETTING.DISCOUNT_LORE", "§f할인율: {num}%\n§e좌클릭: +10, 우클릭: -10");
+ ccLang.get().addDefault("ITEM_SETTING.DISCOUNT_LORE_2", "§f할인율: {num}%\n§e좌클릭: -10, 우클릭: +10");
+ ccLang.get().addDefault("ITEM_SETTING.DONE", "§f완료");
+ ccLang.get().addDefault("ITEM_SETTING.DONE_LORE", "§f완료!");
+ ccLang.get().addDefault("ITEM_SETTING.ROUND_DOWN", "§f내림");
+ ccLang.get().addDefault("ITEM_SETTING.SET_TO_MEDIAN", "§f중앙값에 맞춤");
+ ccLang.get().addDefault("ITEM_SETTING.SET_TO_STOCK", "§f재고에 맞춤");
+ ccLang.get().addDefault("ITEM_SETTING.SET_TO_VALUE", "§f가격에 맞춤");
+ ccLang.get().addDefault("ITEM_SETTING.CLOSE", "§f닫기");
+ ccLang.get().addDefault("ITEM_SETTING.CLOSE_LORE", "§f§n클릭: 닫기");
+ ccLang.get().addDefault("ITEM_SETTING.REMOVE", "§c제거");
+ ccLang.get().addDefault("ITEM_SETTING.REMOVE_LORE", "§f이 아이템을 상점에서 제거합니다.");
+ ccLang.get().addDefault("ITEM_SETTING.BUY", "§3§l구매: {num}");
+ ccLang.get().addDefault("ITEM_SETTING.SELL", "§3§l판매: {num}");
+ ccLang.get().addDefault("ITEM_SETTING.TRADE_LIMIT_SELL", "§f플레이어 당 판매량 제한");
+ ccLang.get().addDefault("ITEM_SETTING.TRADE_LIMIT_SELL_LORE", "§f{num}\n§eLMB: -1, RMB: +1, Shift = x10");
+ ccLang.get().addDefault("ITEM_SETTING.TRADE_LIMIT_BUY", "§f플레이어 당 구매량 제한");
+ ccLang.get().addDefault("ITEM_SETTING.TRADE_LIMIT_BUY_LORE", "§f{num}\n§eLMB: -1, RMB: +1, Shift = x10");
+ ccLang.get().addDefault("ITEM_SETTING.TRADE_LIMIT_INTERVAL", "§f거래량 제한 리셋 주기");
+ ccLang.get().addDefault("ITEM_SETTING.TRADE_LIMIT_INTERVAL_LORE", "§f주기: {interval}\n§f다음 리셋: {time}\n§e좌클릭: -1시간, 우클릭: +1시간, 씨프트 = x12");
+ ccLang.get().addDefault("ITEM_SETTING.TRADE_LIMIT_TIMER", "§f타이머 조정");
+ ccLang.get().addDefault("ITEM_SETTING.TRADE_LIMIT_TIMER_LORE", "§f{num}\n§f다음 리셋: {time}\n§e좌클릭: -1시간, 우클릭: +1시간, 씨프트 = x12");
+
+ ccLang.get().addDefault("TRADE_TITLE", "§3아이템 거래");
+ ccLang.get().addDefault("TRADE.TOGGLE_SELLABLE", "§e클릭: 판매전용 토글");
+ ccLang.get().addDefault("TRADE.TOGGLE_BUYABLE", "§e클릭: 구매전용 토글");
+ ccLang.get().addDefault("TRADE.BUY_ONLY_LORE", "§f구매만 가능한 아이템");
+ ccLang.get().addDefault("TRADE.SELL_ONLY_LORE", "§f판매만 가능한 아이템");
+ ccLang.get().addDefault("TRADE.BALANCE", "§3내 잔액");
+ ccLang.get().addDefault("TRADE.PRICE", "§f구매: {num}");
+ ccLang.get().addDefault("TRADE.SELL_PRICE", "§f판매: {num}");
+ ccLang.get().addDefault("TRADE.PRICE_DISCOUNTED", "§f구매: §8§m{num}§r §a{num2}");
+ ccLang.get().addDefault("TRADE.SELL_PRICE_DISCOUNTED", "§f판매: §8§m{num}§r §c{num2}");
+ ccLang.get().addDefault("TRADE.PRICE_EXP", "§f구매: {num}EXP");
+ ccLang.get().addDefault("TRADE.SELL_PRICE_EXP", "§f판매: {num}EXP");
+ ccLang.get().addDefault("TRADE.PRICE_DISCOUNTED_EXP", "§f구매: §8§m{num}EXP§r §a{num2}EXP");
+ ccLang.get().addDefault("TRADE.SELL_PRICE_DISCOUNTED_EXP", "§f판매: §8§m{num}EXP§r §c{num2}EXP");
+ ccLang.get().addDefault("TRADE.PRICE_PP", "§f구매: {num}PP");
+ ccLang.get().addDefault("TRADE.SELL_PRICE_PP", "§f판매: {num}PP");
+ ccLang.get().addDefault("TRADE.PRICE_DISCOUNTED_PP", "§f구매: §8§m{num}PP§r §a{num2}PP");
+ ccLang.get().addDefault("TRADE.SELL_PRICE_DISCOUNTED_PP", "§f판매: §8§m{num}PP§r §c{num2}PP");
+ ccLang.get().addDefault("TRADE.PRICE_JP", "§f구매: {num}JP");
+ ccLang.get().addDefault("TRADE.SELL_PRICE_JP", "§f판매: {num}JP");
+ ccLang.get().addDefault("TRADE.PRICE_DISCOUNTED_JP", "§f구매: §8§m{num}JP§r §a{num2}JP");
+ ccLang.get().addDefault("TRADE.SELL_PRICE_DISCOUNTED_JP", "§f판매: §8§m{num}JP§r §c{num2}JP");
+ ccLang.get().addDefault("TRADE.BUY", "§c구매");
+ ccLang.get().addDefault("TRADE.SELL", "§2판매");
+ ccLang.get().addDefault("TRADE.STOCK", "§8재고: ");
+ ccLang.get().addDefault("TRADE.STACKS", "§8{num} 스택");
+ ccLang.get().addDefault("TRADE.INF_STOCK", "§8무한 재고");
+ ccLang.get().addDefault("TRADE.SHOP_BAL_INF", "§f상점 계좌 무제한");
+ ccLang.get().addDefault("TRADE.SHOP_BAL", "§3상점 계좌 잔액 \n§f{num}");
+ ccLang.get().addDefault("TRADE.CLICK_TO_BUY", "§c§n클릭: {amount}개 구매");
+ ccLang.get().addDefault("TRADE.CLICK_TO_SELL", "§2§n클릭: {amount}개 판매");
+ ccLang.get().addDefault("TRADE.PURCHASE_LIMIT_PER_PLAYER", "§a구매량 제한 : {num} 남음\n§a다음 리셋: {time}");
+ ccLang.get().addDefault("TRADE.SALES_LIMIT_PER_PLAYER", "§a판매량 제한 : {num} 남음\n§a다음 리셋: {time}");
+
+ ccLang.get().addDefault("PAGE_EDITOR_TITLE", "§3페이지 편집");
+ ccLang.get().addDefault("PAGE_EDITOR.PREV", "§f<<");
+ ccLang.get().addDefault("PAGE_EDITOR.NEXT", "§f>>");
+ ccLang.get().addDefault("PAGE_EDITOR.PAGE_SWAP_SUCCESS", "§f페이지가 교체 되었습니다.");
+ ccLang.get().addDefault("PAGE_EDITOR.PAGE_SWAP_FAIL", "§f페이지 교체 실패.");
+ ccLang.get().addDefault("PAGE_EDITOR.PAGE_SWAP_SELECTED", "§f페이지 선택되었습니다. 서로 교체 할 다른 페이지를 우클릭 하세요.");
+ ccLang.get().addDefault("PAGE_EDITOR.PAGE_LORE_PREMIUM", "§e좌클릭: 페이지 이동\n§e우클릭: 페이지 교체(스왑)\n§eShift+좌: 페이지 삽입\n§eShift+우: 페이지 삭제");
+ ccLang.get().addDefault("PAGE_EDITOR.PRICE", "§f구매: {num}");
+ ccLang.get().addDefault("PAGE_EDITOR.SELL_PRICE", "§f판매: {num}");
+ ccLang.get().addDefault("PAGE_EDITOR.STOCK", "§8재고: {num}");
+ ccLang.get().addDefault("PAGE_EDITOR.STACKS", "§8{num} 스택");
+ ccLang.get().addDefault("PAGE_EDITOR.STATIC_PRICE", "§8[고정 가격]");
+ ccLang.get().addDefault("PAGE_EDITOR.EMPTY", "§8(비어있음)");
+ ccLang.get().addDefault("PAGE_EDITOR.EMPTY_SLOT_LORE", "§e좌,우클릭: 밀기\n§e+씨프트: 당기기");
+ ccLang.get().addDefault("TRADE.QUANTITY_LORE", "§eShift+우: 수량 편집");
+ ccLang.get().addDefault("TRADE.WAIT_FOR_INPUT", "거래 UI에 표시 될 수량을 입력하세요.\n예시: 1,2,4,8,16,32,64");
+
+ ccLang.get().addDefault("LOG_VIEWER_TITLE", "§3로그 뷰어");
+ ccLang.get().addDefault("LOG_VIEWER.DATE", "§f날짜: ");
+ ccLang.get().addDefault("LOG_VIEWER.TIME", "§f시간: ");
+ ccLang.get().addDefault("LOG_VIEWER.CURRENCY", "§f화폐 유형: ");
+ ccLang.get().addDefault("LOG_VIEWER.PRICE", "§f가격: ");
+ ccLang.get().addDefault("LOG_VIEWER.EXPAND", "§f펼치기");
+ ccLang.get().addDefault("LOG_VIEWER.COLLAPSE", "§f접기");
+ ccLang.get().addDefault("LOG_VIEWER.PAGE_TITLE", "§f{curPage}/{maxPage} 페이지");
+ ccLang.get().addDefault("LOG_VIEWER.PAGE_LORE", "§e좌클릭: 이전 페이지\n§e우클릭: 다음 페이지");
+ ccLang.get().addDefault("LOG_VIEWER.FILE_LORE", "§e좌클릭: 열기\n§eShift+우: §c삭제");
+
+
+ ccLang.get().addDefault("LOG.LOG", "§f로그");
+ ccLang.get().addDefault("LOG.CLEAR", "§f로그 삭제됨");
+ ccLang.get().addDefault("LOG.SAVE", "§f로그 저장됨");
+ ccLang.get().addDefault("LOG.DELETE", "§4로그 삭제");
+ ccLang.get().addDefault("LOG.SELL", "§f{player}(이)가 {shop}에 {item} {amount}개를 판매함");
+ ccLang.get().addDefault("LOG.BUY", "§f{player}(이)가 {shop}에서 {item} {amount}개를 구매함");
+
+ ccLang.get().addDefault("STOCK_SIMULATOR_TITLE", "§3재고 시뮬레이터");
+ ccLang.get().addDefault("STOCK_SIMULATOR.CHANGE_SAMPLE_LORE", "§e좌, 우클릭: 아이템 변경");
+ ccLang.get().addDefault("STOCK_SIMULATOR.SIMULATOR_BUTTON_LORE", "§e우클릭: 시뮬레이터");
+ ccLang.get().addDefault("STOCK_SIMULATOR.RUN_TITLE", "§f실행");
+ ccLang.get().addDefault("STOCK_SIMULATOR.RUN_LORE", "§e좌클릭: 시뮬레이션 실행\n§e우클릭: 설정값을 상점에 적용합니다\n§f아이템은 영향받지 않습니다.");
+ ccLang.get().addDefault("STOCK_SIMULATOR.REAL_TIME", "§a(실제 시간)");
+ ccLang.get().addDefault("STOCK_SIMULATOR.AFTER_S", "§a{0}초 후");
+ ccLang.get().addDefault("STOCK_SIMULATOR.AFTER_M", "§a{0}분 후");
+ ccLang.get().addDefault("STOCK_SIMULATOR.AFTER_H", "§a{0}시간 후");
+ ccLang.get().addDefault("STOCK_SIMULATOR.AFTER_D", "§a{0}일 후");
+ ccLang.get().addDefault("STOCK_SIMULATOR.L_R_SHIFT", "§e좌: -1 우: +1 Shift: x5");
+ ccLang.get().addDefault("STOCK_SIMULATOR.PRICE", "§f구매: {num}");
+ ccLang.get().addDefault("STOCK_SIMULATOR.MEDIAN", "§f중앙값: {num}");
+ ccLang.get().addDefault("STOCK_SIMULATOR.STOCK", "§f재고: {num}");
+
+ ccLang.get().addDefault("PALETTE_TITLE", "§3판매할 아이템 선택");
+ ccLang.get().addDefault("PALETTE_TITLE2", "§3아이템 선택");
+ ccLang.get().addDefault("PALETTE.LORE_PREMIUM", "§e좌클릭: 추가\n§e씨프트 좌클릭: 설정 후 추가\n§e우클릭: 장식으로 추가\n§e씨프트 우클릭: '{item}' 를 검색");
+ ccLang.get().addDefault("PALETTE.LORE2", "§e좌클릭: 선택\n§e씨프트 우클릭: '{item}' 를 검색");
+ ccLang.get().addDefault("PALETTE.SEARCH", "§f찾기");
+ ccLang.get().addDefault("PALETTE.ADD_ALL", "§f모두 추가");
+ ccLang.get().addDefault("PALETTE.ADD_ALL_LORE", "§e좌클릭: 모두 추가\n§e씨프트 좌클릭: 모두 추가하고 권장 값 적용");
+ ccLang.get().addDefault("PALETTE.PAGE_TITLE", "§f{curPage}/{maxPage} 페이지");
+ ccLang.get().addDefault("PALETTE.PAGE_LORE", "§f§n좌클릭: 이전 페이지\n§f§n우클릭: 다음 페이지");
+ ccLang.get().addDefault("PALETTE.FILTER_APPLIED", "§f필터 적용됨 : ");
+ ccLang.get().addDefault("PALETTE.FILTER_LORE", "§f좌클릭: 검색\n§f우클릭: 필터 초기화\n\n§7\"BLUE_WOOL\"을 찾으려는 경우:\n§7 b w\n§7 wool\n§7 blue wool");
+
+ ccLang.get().addDefault("QUICK_SELL_TITLE", "§3빠른 판매");
+ ccLang.get().addDefault("QUICK_SELL.GUIDE_TITLE", "§3§l빠른 판매 도움말");
+ ccLang.get().addDefault("QUICK_SELL.GUIDE_LORE", "§a판매할 아이템을 좌클릭 하세요.\n§a씨프트 좌클릭으로 같은 유형의 아이템을 모두 팝니다.\n§a우클릭으로 해당 아이템 상점으로 이동합니다.");
+
+ ccLang.get().addDefault("ARROW.UP", "§a⬆");
+ ccLang.get().addDefault("ARROW.DOWN", "§c⬇");
+ ccLang.get().addDefault("ARROW.UP_2", "§c⬆");
+ ccLang.get().addDefault("ARROW.DOWN_2", "§a⬇");
+
+ ccLang.get().addDefault("TIME.OPEN", "Open");
+ ccLang.get().addDefault("TIME.CLOSE", "Close");
+ ccLang.get().addDefault("TIME.OPEN_LORE", "§f문 여는 시간 설정");
+ ccLang.get().addDefault("TIME.CLOSE_LORE", "§f문 닫는 시간 설정");
+ ccLang.get().addDefault("TIME.SHOPHOURS", "§f영업시간");
+ ccLang.get().addDefault("TIME.OPEN24", "24시간 오픈");
+ ccLang.get().addDefault("TIME.SHOP_IS_CLOSED", "§f상점이 문을 닫았습니다. 개점: {time}시. 현재시간: {curTime}시");
+ ccLang.get().addDefault("TIME.SET_SHOPHOURS", "영업시간 설정");
+ ccLang.get().addDefault("TIME.CUR", "§f현재 시간: {time}시");
+
+ ccLang.get().addDefault("STOCK_STABILIZING.SS", "§f재고 안정화");
+ ccLang.get().addDefault("STOCK_STABILIZING.L_R_SHIFT", "§e좌클릭: -0.1 우클릭: +0.1 Shift: x5");
+ ccLang.get().addDefault("STOCK_STABILIZING.STRENGTH_LORE_A", "§f중앙값(median)의 n%");
+ ccLang.get().addDefault("STOCK_STABILIZING.STRENGTH_LORE_B", "§f중앙값(median)과의 격차의 n%");
+
+ ccLang.get().addDefault("FLUCTUATION.FLUCTUATION", "§f무작위 재고 변동");
+ ccLang.get().addDefault("FLUCTUATION.INTERVAL", "§f변화 간격");
+ ccLang.get().addDefault("FLUCTUATION.INTERVAL_LORE", "§f1h = 1000틱 = 현실시간 50초");
+ ccLang.get().addDefault("FLUCTUATION.STRENGTH", "§f변화 강도");
+ ccLang.get().addDefault("FLUCTUATION.STRENGTH_LORE", "§f중앙값(median)의 n%");
+
+ ccLang.get().addDefault("TAX.SALES_TAX", "§f판매세");
+ ccLang.get().addDefault("TAX.USE_GLOBAL", "전역설정 사용 ({tax}%)");
+ ccLang.get().addDefault("TAX.USE_LOCAL", "별도 설정");
+
+ ccLang.get().addDefault("MESSAGE.SEARCH_ITEM", "§f찾으려는 아이템의 이름을 입력하세요.");
+ ccLang.get().addDefault("MESSAGE.SEARCH_CANCELED", "§f검색 취소됨.");
+ ccLang.get().addDefault("MESSAGE.INPUT_CANCELED", "§f입력 취소됨.");
+ ccLang.get().addDefault("MESSAGE.DELETE_CONFIRM", "§f정말로 페이지를 삭제할까요? 'delete' 를 입력하면 삭제합니다.");
+ ccLang.get().addDefault("MESSAGE.CANT_DELETE_LAST_PAGE", "§f마지막 남은 페이지를 삭제할 수 없습니다.");
+ ccLang.get().addDefault("MESSAGE.SHOP_BAL_LOW", "§f상점이 돈을 충분히 가지고 있지 않습니다.");
+ ccLang.get().addDefault("MESSAGE.SHOP_CREATED", "§f상점 생성됨!");
+ ccLang.get().addDefault("MESSAGE.SHOP_DELETED", "§f상점 제거됨!");
+ ccLang.get().addDefault("MESSAGE.OUT_OF_STOCK", "§f재고 없음!");
+ ccLang.get().addDefault("MESSAGE.BUY_SUCCESS", "§f{item} {amount}개를 {price}에 구매함. 잔액: {bal}");
+ ccLang.get().addDefault("MESSAGE.SELL_SUCCESS", "§f{item} {amount}개를 {price}에 판매함. 잔액: {bal}");
+ ccLang.get().addDefault("MESSAGE.BUY_SUCCESS_EXP", "§f{item} {amount}개를 {price}경험치 포인트에 구매함. 잔액: {bal}");
+ ccLang.get().addDefault("MESSAGE.SELL_SUCCESS_EXP", "§f{item} {amount}개를 {price}경험치 포인트에 판매함. 잔액: {bal}");
+ ccLang.get().addDefault("MESSAGE.BUY_SUCCESS_JP", "§f{item} {amount}개를 {price}포인트에 구매함. 남은포인트: {bal}");
+ ccLang.get().addDefault("MESSAGE.SELL_SUCCESS_JP", "§f{item} {amount}개를 {price}포인트에 판매함. 남은포인트: {bal}");
+ ccLang.get().addDefault("MESSAGE.BUY_SUCCESS_PP", "§f{item} {amount}개를 {price}포인트에 구매함. 남은포인트: {bal}");
+ ccLang.get().addDefault("MESSAGE.SELL_SUCCESS_PP", "§f{item} {amount}개를 {price}포인트에 판매함. 남은포인트: {bal}");
+ ccLang.get().addDefault("MESSAGE.QSELL_NA", "§f해당 아이템을 취급하는 상점이 없습니다.");
+ ccLang.get().addDefault("MESSAGE.DELIVERY_CHARGE", "§f배달비: {fee}");
+ ccLang.get().addDefault("MESSAGE.DELIVERY_CHARGE_NA", "§f다른 월드로 배달할 수 없습니다.");
+ ccLang.get().addDefault("MESSAGE.NOT_ENOUGH_MONEY", "§f돈이 부족합니다. 잔액: {bal}");
+ ccLang.get().addDefault("MESSAGE.NOT_ENOUGH_POINT", "§f포인트가 부족합니다. 잔액: {bal}");
+ ccLang.get().addDefault("MESSAGE.NOT_ENOUGH_PLAYER_POINT", "§f플레이어 포인트가 부족합니다. 잔액: {bal}");
+ ccLang.get().addDefault("MESSAGE.NOT_ENOUGH_EXP_POINT", "§f경험치 포인트가 부족합니다. 잔액: {bal}");
+ ccLang.get().addDefault("MESSAGE.NO_ITEM_TO_SELL", "§f판매 할 아이템이 없습니다.");
+ ccLang.get().addDefault("MESSAGE.NO_ITEM_TO_SELL_2", "§f판매 가능 한 아이템이 없습니다.");
+ ccLang.get().addDefault("MESSAGE.INVENTORY_FULL", "§4인벤토리에 빈 공간이 없습니다!");
+ ccLang.get().addDefault("MESSAGE.IRREVERSIBLE", "§f이 행동은 되돌릴 수 없습니다!");
+ ccLang.get().addDefault("MESSAGE.ITEM_ADDED", "아이템 추가됨!");
+ ccLang.get().addDefault("MESSAGE.ITEM_UPDATED", "아이템 수정됨!");
+ ccLang.get().addDefault("MESSAGE.ITEM_DELETED", "아이템 제거됨!");
+ ccLang.get().addDefault("MESSAGE.CHANGES_APPLIED", "변경사항 적용됨. 새로운 값: ");
+ ccLang.get().addDefault("MESSAGE.CHANGES_APPLIED_2", "변경사항 적용됨");
+ ccLang.get().addDefault("MESSAGE.RECOMMEND_APPLIED", "추천 값 적용됨. {playerNum}명 기준입니다. config파일에서 이 값을 바꿀 수 있습니다.");
+ ccLang.get().addDefault("MESSAGE.TRANSFER_SUCCESS", "송금 완료");
+ ccLang.get().addDefault("MESSAGE.PURCHASE_REJECTED", "상점에 이 아이템이 너무 많습니다. 지금은 팔 수 없습니다.");
+ ccLang.get().addDefault("MESSAGE.CLICK_YOUR_ITEM_START_PAGE", "인벤토리의 아이템을 클릭하면 가장 좋은 조건의 상점으로 이동합니다.\n좌클릭: 구매 우클릭: 판매");
+ ccLang.get().addDefault("MESSAGE.MOVE_TO_BEST_SHOP_BUY", "{item}을 가장 저렴하게 살 수 있는 상점으로 이동했습니다.");
+ ccLang.get().addDefault("MESSAGE.MOVE_TO_BEST_SHOP_SELL", "{item}을 가장 비싸게 팔 수 있는 상점으로 이동했습니다.");
+ ccLang.get().addDefault("MESSAGE.SHOP_IS_CLOSED_BY_ADMIN", "이 상점은 서버 관리자에 의해 닫혔습니다.");
+ ccLang.get().addDefault("MESSAGE.SHOP_DISABLED", "이 상점은 비황성화된 상태입니다. 어드민이 아닌 유저는 접근할 수 없습니다. 상점 설정에서 활성화 할 수 있습니다.");
+ ccLang.get().addDefault("MESSAGE.ROTATION_SHARED_DATA_MISSING", "§e[ ! ]§f'{0}/SharedData.yml' 에서 {1} 개의 아이템에 대한 정보를 찾을 수 없었습니다. 이 아이템들은 장식으로 추가되었습니다.");
+ ccLang.get().addDefault("MESSAGE.ENTER_COMMAND", "명령어를 '/' 제외하고 입력하세요.");
+ ccLang.get().addDefault("MESSAGE.ENTER_COMMAND_2", "'인덱스/명령어' 형태로 입력하세요.");
+ ccLang.get().addDefault("MESSAGE.SELL_COMMAND_CUR", "현재 적용중인 판매 명령어:");
+ ccLang.get().addDefault("MESSAGE.BUY_COMMAND_CUR", "현재 적용중인 구매 명령어:");
+ ccLang.get().addDefault("MESSAGE.Q_SEARCH_FAIL_CURRENCY", "해당 아이템은 여러 종류의 재화로 거래 중 입니다.");
+
+ ccLang.get().addDefault("HELP.TITLE", "§f도움말: {command} --------------------");
+ ccLang.get().addDefault("HELP.SHOP", "상점을 엽니다.");
+ ccLang.get().addDefault("HELP.CMD", "명령어 도움말 표시 토글.");
+ ccLang.get().addDefault("HELP.CREATE_SHOP", "상점을 새로 만듭니다.");
+ ccLang.get().addDefault("HELP.CREATE_SHOP_2", "퍼미션(나중에 바꿀 수 있습니다.)\n true: dshop.user.shop.상점이름\n false: 아무나 접근가능(기본값)\n 임의 입력: 해당 퍼미션 필요");
+ ccLang.get().addDefault("HELP.DELETE_SHOP", "기존의 상점을 제거합니다.");
+ ccLang.get().addDefault("HELP.SHOP_ADD_HAND", "손에 들고 있는 아이템을 상점에 추가합니다.");
+ ccLang.get().addDefault("HELP.SHOP_ADD_ITEM", "상점에 아이템을 추가합니다.");
+ ccLang.get().addDefault("HELP.SHOP_EDIT", "상점에 있는 아이템을 수정합니다.");
+ ccLang.get().addDefault("HELP.PRICE", "§7가격은 다음과 같이 계산됩니다: median*value/stock");
+ ccLang.get().addDefault("HELP.INF_STATIC", "§7median<0 == 고정가격 stock<0 == 무한재고");
+ ccLang.get().addDefault("HELP.EDIT_ALL", "상점의 모든 아이템을 한번에 수정합니다.");
+ ccLang.get().addDefault("HELP.RELOAD", "플러그인을 재시작 합니다.");
+ ccLang.get().addDefault("HELP.RELOADED", "플러그인 리로드됨!");
+ ccLang.get().addDefault("HELP.USAGE", "사용법");
+ ccLang.get().addDefault("HELP.ITEM_ALREADY_EXIST", "§7§o{item}(은)는 이미 판매중임.\n {info}\n 명령어를 입력하면 값이 수정됩니다.");
+ ccLang.get().addDefault("HELP.ITEM_INFO", "§7§o{item}의 현재 설정:\n {info}");
+ ccLang.get().addDefault("HELP.REMOVE_ITEM", "§f인자를 0으로 입력하면 이 아이템을 상점에서 §4제거§f합니다.");
+ ccLang.get().addDefault("HELP.QSELL", "§f빠르게 아이템을 판매합니다.");
+ ccLang.get().addDefault("HELP.DELETE_OLD_USER", "장기간 접속하지 않은 유저의 데이터를 삭제합니다.");
+ ccLang.get().addDefault("HELP.ACCOUNT", "상점의 계좌 잔액을 설정합니다. -1 = 무제한");
+ ccLang.get().addDefault("HELP.SET_TO_REC_ALL", "§e상점의 모든 아이템 설정값을 권장값으로 §c초기화§e합니다.");
+ ccLang.get().addDefault("HELP.SHOP_ENABLE", "상점을 활성화 또는 비활성화 합니다.");
+
+ ccLang.get().addDefault("ERR.NO_USER_ID", "§6플레이어 uuid를 찾을 수 없습니다. 상점 이용 불가능.");
+ ccLang.get().addDefault("ERR.ITEM_NOT_EXIST", "상점에 해당 아이템이 존재하지 않습니다.");
+ ccLang.get().addDefault("ERR.ITEM_FORBIDDEN", "사용할 수 없는 아이템 입니다.");
+ ccLang.get().addDefault("ERR.NO_PERMISSION", "§e권한이 없습니다.");
+ ccLang.get().addDefault("ERR.WRONG_USAGE", "잘못된 명령어 사용법. 도움말을 확인하세요.");
+ ccLang.get().addDefault("ERR.NO_EMPTY_SLOT", "상점에 빈 공간이 없습니다.");
+ ccLang.get().addDefault("ERR.WRONG_DATATYPE", "인자의 유형이 잘못 입력되었습니다.");
+ ccLang.get().addDefault("ERR.VALUE_ZERO", "인자값이 0보다 커야 합니다.");
+ ccLang.get().addDefault("ERR.WRONG_ITEM_NAME", "유효하지 않은 아이템 이름입니다.");
+ ccLang.get().addDefault("ERR.HAND_EMPTY", "아이템을 손에 들고 있어야 합니다.");
+ ccLang.get().addDefault("ERR.HAND_EMPTY2", "§c§o아이템을 손에 들고 있어야 합니다!");
+ ccLang.get().addDefault("ERR.SHOP_NOT_FOUND", "§f해당 상점을 찾을 수 없습니다.");
+ ccLang.get().addDefault("ERR.SHOP_EXIST", "해당 이름을 가진 상점이 이미 존재합니다.");
+ ccLang.get().addDefault("ERR.SHOP_NOT_EXIST", "그런 이름을 가진 상점이 없습니다.");
+ ccLang.get().addDefault("ERR.SIGN_SHOP_REMOTE_ACCESS", "해당 상점은 표지판을 통해서만 접근할 수 있습니다.");
+ ccLang.get().addDefault("ERR.LOCAL_SHOP_REMOTE_ACCESS", "해당 상점은 직접 방문해야만 사용할 수 있습니다.");
+ ccLang.get().addDefault("ERR.MAX_LOWER_THAN_MIN", "최대 가격은 최소 가격보다 커야합니다.");
+ ccLang.get().addDefault("ERR.DEFAULT_VALUE_OUT_OF_RANGE", "기본 가격은 최소 가격과 최대 가격 사이의 값이어야 합니다.");
+ ccLang.get().addDefault("ERR.NO_RECOMMEND_DATA", "Worth.yml 파일에 이 아이템의 정보가 없습니다.");
+ ccLang.get().addDefault("ERR.JOBS_REBORN_NOT_FOUND", "Jobs reborn 플러그인을 찾을 수 없습니다.");
+ ccLang.get().addDefault("ERR.PLAYER_POINTS_NOT_FOUND", "Player points 플러그인을 찾을 수 없습니다.");
+ ccLang.get().addDefault("ERR.SHOP_HAS_INF_BAL", "{shop} 상점은 무한계좌 상점입니다.");
+ ccLang.get().addDefault("ERR.SHOP_DIFF_CURRENCY", "두 상점이 서로 다른 통화를 사용합니다.");
+ ccLang.get().addDefault("ERR.PLAYER_NOT_EXIST", "해당 플레이어를 찾을 수 없습니다.");
+ ccLang.get().addDefault("ERR.SHOP_LINK_FAIL", "상점 둘 중 하나는 실제 계좌이어야 합니다.");
+ ccLang.get().addDefault("ERR.SHOP_LINK_TARGET_ERR", "목표 상점은 실제 계좌를 가지고 있어야 합니다.");
+ ccLang.get().addDefault("ERR.NESTED_STRUCTURE", "계층 구조를 이루는것은 금지되어 있습니다. (ex. aa-bb, bb-cc)");
+ ccLang.get().addDefault("ERR.CREATIVE", "§eCreative mode 에서 이 명령어를 사용할 수 없습니다. 권한이 없습니다.");
+ ccLang.get().addDefault("ERR.FILE_CREATE_FAIL", "§e파일 생성에 실패했습니다.");
+ ccLang.get().addDefault("ERR.INVALID_TRANSACTION", "이 거래는 더이상 유효하지 않습니다. 문제가 반복되면 서버 관리자에게 문의하세요.");
+ ccLang.get().addDefault("ERR.SIGN_WALL", "상점 표지판이 벽에 설치되야 합니다.");
+
+ ccLang.get().addDefault("ERR.SHOP_NULL", "§e상점 이름이 지정되지 않았습니다.");
+ ccLang.get().addDefault("ERR.ITEMINFO_HAND_EMPTY", "아이템을 들고 있어야 합니다.");
+ ccLang.get().addDefault("HELP.ITEMINFO_USAGE", "§f아이템 정보를 보려면 손에 아이템을 들고 있어야 합니다.");
+ ccLang.get().addDefault("HELP.ITEMINFO_REALNAME", "§7실제 이름: §3{item_realname}");
+ ccLang.get().addDefault("HELP.ITEMINFO_SIGN_NAME", "§7표지판용 이름: §3{item_signname}");
+ ccLang.get().addDefault("ERR.SIGN_ITEM_INVALID", "아이템 이름이 잘못되었습니다. /ds iteminfo 를 사용하여 아이템 이름을 확인해 보세요.");
+ ccLang.get().addDefault("ERR.SIGN_ITEM_NOT_FOR_SALE", "상점에 없는 아이템 입니다.");
+ ccLang.get().addDefault("MESSAGE.SIGN_SHOP_CREATED", "§a표지판 상점 생성!");
+
+ ccLang.get().addDefault("ON", "켜짐");
+ ccLang.get().addDefault("OFF", "꺼짐");
+ ccLang.get().addDefault("SET", "설정");
+ ccLang.get().addDefault("UNSET", "설정해제");
+ ccLang.get().addDefault("NULL", "없음");
+ ccLang.get().addDefault("NULL(OPEN)", "없음 (모두에게 열려있음)");
+ ccLang.get().addDefault("CUR_STATE", "현재상태");
+ ccLang.get().addDefault("CLICK", "클릭");
+ ccLang.get().addDefault("LMB", "좌클릭");
+ ccLang.get().addDefault("RMB", "우클릭");
+ ccLang.get().addDefault("CLOSE", "§f닫기");
+ ccLang.get().addDefault("CLOSE_LORE", "§f§n클릭: 닫기");
+
+ ccLang.get().addDefault("EXP_POINTS", "Exp");
+ ccLang.get().addDefault("JOB_POINTS", "Job Points");
+ ccLang.get().addDefault("PLAYER_POINTS", "Player Points");
+
+ ccLang.get().options().copyDefaults(true);
+ ccLang.save();
+ }
+
+ private static void zh_TW()
+ {
+ ccLang.setup("Lang_V3_zh-TW", null);
+
+ ccLang.get().addDefault("START_PAGE.EDITOR_TITLE", "§3編輯圖示");
+ ccLang.get().addDefault("START_PAGE.EDIT_NAME", "§f重新命名");
+ ccLang.get().addDefault("START_PAGE.EDIT_LORE", "§f修改描述");
+ ccLang.get().addDefault("START_PAGE.EDIT_ICON", "§f更換圖示");
+ ccLang.get().addDefault("START_PAGE.EDIT_ACTION", "§f更改指令");
+ ccLang.get().addDefault("START_PAGE.SHOP_SHORTCUT", "§f建立商店按鈕");
+ ccLang.get().addDefault("START_PAGE.CREATE_DECO", "§f建立裝飾按鈕");
+ ccLang.get().addDefault("START_PAGE.ENTER_SHOP_NAME", "請輸入商店名稱");
+ ccLang.get().addDefault("START_PAGE.DEFAULT_SHOP_LORE", "§f§n點擊:前往商店");
+ ccLang.get().addDefault("START_PAGE.ITEM_MOVE_LORE", "§e右鍵:移動");
+ ccLang.get().addDefault("START_PAGE.ITEM_COPY_LORE", "§e右鍵:複製");
+ ccLang.get().addDefault("START_PAGE.ITEM_REMOVE_LORE", "§eShift 左鍵:移除");
+ ccLang.get().addDefault("START_PAGE.ITEM_EDIT_LORE", "§eShift 右鍵:編輯");
+ ccLang.get().addDefault("START_PAGE.REMOVE", "§f移除");
+ ccLang.get().addDefault("START_PAGE.REMOVE_LORE", "§f從開始頁面移除此按鈕。");
+ ccLang.get().addDefault("START_PAGE.ENTER_NAME", "請輸入此按鈕的新名稱。");
+ ccLang.get().addDefault("START_PAGE.ENTER_LORE", "請輸入此按鈕的新描述。");
+ ccLang.get().addDefault("START_PAGE.ENTER_ICON", "請輸入要用作按鈕圖示的物品名稱。(英文,不區分大小寫)");
+ ccLang.get().addDefault("START_PAGE.ENTER_ACTION", "請輸入指令(不含 /)。當按下按鈕時會執行此指令。");
+ ccLang.get().addDefault("START_PAGE.ENTER_COLOR", "請輸入裝飾按鈕的顏色。(英文)");
+ ccLang.get().addDefault("START_PAGE.SHOP_LIST_TITLE", "§3商店清單");
+ ccLang.get().addDefault("START_PAGE.SHOP_LIST.PAGE_TITLE", "§f{curPage}/{maxPage} 頁");
+ ccLang.get().addDefault("START_PAGE.SHOP_LIST.PAGE_LORE", "§e左鍵:上一頁\n§e右鍵:下一頁");
+
+ ccLang.get().addDefault("COLOR_PICKER_TITLE", "§3顏色選擇器");
+
+ ccLang.get().addDefault("SHOP.TRADE_LORE", "§f§n點擊:交易");
+ ccLang.get().addDefault("SHOP.BUY_PRICE", "§f購買:{num}");
+ ccLang.get().addDefault("SHOP.SELL_PRICE", "§f出售:{num}");
+ ccLang.get().addDefault("SHOP.BUY_PRICE_DISCOUNTED", "§f購買:§8§m{num}§r §a{num2}");
+ ccLang.get().addDefault("SHOP.SELL_PRICE_DISCOUNTED", "§f出售:§8§m{num}§r §c{num2}");
+ ccLang.get().addDefault("SHOP.BUY_PRICE_EXP", "§f購買:{num} 經驗值");
+ ccLang.get().addDefault("SHOP.SELL_PRICE_EXP", "§f出售:{num} 經驗值");
+ ccLang.get().addDefault("SHOP.BUY_PRICE_DISCOUNTED_EXP", "§f購買:§8§m{num} 經驗值§r §a{num2} 經驗值");
+ ccLang.get().addDefault("SHOP.SELL_PRICE_DISCOUNTED_EXP", "§f出售:§8§m{num} 經驗值§r §c{num2} 經驗值");
+ ccLang.get().addDefault("SHOP.BUY_PRICE_PP", "§f購買:{num} 積分");
+ ccLang.get().addDefault("SHOP.SELL_PRICE_PP", "§f出售:{num} 積分");
+ ccLang.get().addDefault("SHOP.BUY_PRICE_DISCOUNTED_PP", "§f購買:§8§m{num} 積分§r §a{num2} 積分");
+ ccLang.get().addDefault("SHOP.SELL_PRICE_DISCOUNTED_PP", "§f出售:§8§m{num} 積分§r §c{num2} 積分");
+ ccLang.get().addDefault("SHOP.BUY_PRICE_JP", "§f購買:{num} 職業點數");
+ ccLang.get().addDefault("SHOP.SELL_PRICE_JP", "§f出售:{num} 職業點數");
+ ccLang.get().addDefault("SHOP.BUY_PRICE_DISCOUNTED_JP", "§f購買:§8§m{num} 職業點數§r §a{num2} 職業點數");
+ ccLang.get().addDefault("SHOP.SELL_PRICE_DISCOUNTED_JP", "§f出售:§8§m{num} 職業點數§r §c{num2} 職業點數");
+ ccLang.get().addDefault("SHOP.STOCK", "§8庫存:{num}");
+ ccLang.get().addDefault("SHOP.STOCK_2", "§8庫存:{stock}/{max_stock}");
+ ccLang.get().addDefault("SHOP.INF_STOCK", "§8無限");
+ ccLang.get().addDefault("SHOP.STATIC_PRICE", "§8【固定價格】");
+ ccLang.get().addDefault("SHOP.STACKS", "§8{num} 組");
+ ccLang.get().addDefault("SHOP.ITEM_MOVE_LORE", "§e右鍵:移動");
+ ccLang.get().addDefault("SHOP.ITEM_COPY_LORE", "§e右鍵:複製");
+ ccLang.get().addDefault("SHOP.ITEM_EDIT_LORE", "§eShift右鍵:編輯");
+ ccLang.get().addDefault("SHOP.DECO_DELETE_LORE", "§eShift右鍵:移除");
+ ccLang.get().addDefault("SHOP.PAGE_TITLE", "§f{curPage}/{maxPage} 頁");
+ ccLang.get().addDefault("SHOP.PAGE_LORE_V2", "§f§n左鍵:上一頁\n§f§n右鍵:下一頁\n§7點擊你的物品會\n§7跳轉到該物品所在頁面。");
+ ccLang.get().addDefault("SHOP.GO_TO_PAGE_EDITOR", "§eShift 右鍵:頁面編輯器");
+ ccLang.get().addDefault("SHOP.ITEM_MOVE_SELECTED", "已選擇物品。右鍵點擊空欄位以移動。");
+ ccLang.get().addDefault("SHOP.PERMISSION", "§f權限:");
+ ccLang.get().addDefault("SHOP.PERMISSION_ITEM", "§7 - {permission}");
+ ccLang.get().addDefault("SHOP.FLAGS", "§e標記:");
+ ccLang.get().addDefault("SHOP.FLAGS_ITEM", "§e - {flag}");
+ ccLang.get().addDefault("SHOP.SHOP_BAL_INF", "§f無限");
+ ccLang.get().addDefault("SHOP.SHOP_BAL", "§f商店帳戶餘額");
+ ccLang.get().addDefault("SHOP.SHOP_LOCATION", "§f商店位置:x {x}, y {y}, z {z}");
+ ccLang.get().addDefault("SHOP.SHOP_LOCATION_B", "§f商店位置:");
+ ccLang.get().addDefault("SHOP.SHOP_INFO_DASH", "§7 - ");
+ ccLang.get().addDefault("SHOP.DISABLED", "§c已停用§8|§f");
+ ccLang.get().addDefault("SHOP.INCOMPLETE_DATA", "資料不完整");
+ ccLang.get().addDefault("SHOP.INCOMPLETE_DATA_Lore", "此物品對非 OP 玩家不可見\n索引:");
+ ccLang.get().addDefault("SHOP.TRADE_LIMIT_BUY", "§a購買上限:剩餘 {num}");
+ ccLang.get().addDefault("SHOP.TRADE_LIMIT_SELL", "§a販售上限:剩餘 {num}");
+ ccLang.get().addDefault("SHOP.TRADE_LIMIT_TIMER", "§a下次重置:{time}");
+ ccLang.get().addDefault("SHOP.CLICK_TO_ADD", "§e點擊:新增");
+
+ ccLang.get().addDefault("SHOP_SETTING_TITLE", "§3商店設定");
+ ccLang.get().addDefault("SHOP_SETTING.LOG_TOGGLE_LORE", "§e右鍵:查看紀錄");
+ ccLang.get().addDefault("SHOP_SETTING.LOG_PRINT_CONSOLE", "§f將紀錄輸出至主控台");
+ ccLang.get().addDefault("SHOP_SETTING.LOG_PRINT_ADMIN", "§f將紀錄發送給管理員");
+ ccLang.get().addDefault("SHOP_SETTING.MAX_PAGE", "§f最大頁數");
+ ccLang.get().addDefault("SHOP_SETTING.MAX_PAGE_LORE", "§f設定商店最大頁數。");
+ ccLang.get().addDefault("SHOP_SETTING.BACKGROUND", "§f背景顏色");
+ ccLang.get().addDefault("SHOP_SETTING.BACKGROUND_LORE", "§e點擊:變更顏色");
+ ccLang.get().addDefault("SHOP_SETTING.L_R_SHIFT", "§e左鍵:-1 右鍵:+1 Shift:x5");
+ ccLang.get().addDefault("SHOP_SETTING.FLAG", "§f標記");
+ ccLang.get().addDefault("SHOP_SETTING.SHOP_SETTINGS_LORE", "§e右鍵:商店設定");
+ ccLang.get().addDefault("SHOP_SETTING.SIGN_SHOP_LORE", "§f僅可透過告示牌進入。");
+ ccLang.get().addDefault("SHOP_SETTING.LOCAL_SHOP_LORE", "§f必須親訪實體商店位置。");
+ ccLang.get().addDefault("SHOP_SETTING.DELIVERY_CHARGE_LORE", "§f您可以付費配送,\n§f無需親訪商店交易。");
+ ccLang.get().addDefault("SHOP_SETTING.SELECTED", "§2已選擇");
+ ccLang.get().addDefault("SHOP_SETTING.CURRENCY", "§f貨幣類型:");
+ ccLang.get().addDefault("SHOP_SETTING.VAULT_LORE", "§f預設貨幣。");
+ ccLang.get().addDefault("SHOP_SETTING.EXP_LORE", "§f以玩家經驗值交易。");
+ ccLang.get().addDefault("SHOP_SETTING.JOB_POINT_LORE", "§f使用職業點數交易。\n§f需安裝 Jobs Reborn 插件");
+ ccLang.get().addDefault("SHOP_SETTING.PLAYER_POINT_LORE", "§f使用玩家積分交易。\n§f需安裝 PlayerPoints 插件");
+ ccLang.get().addDefault("SHOP_SETTING.SHOW_VALUE_CHANGE_LORE", "§f顯示價格變動幅度。");
+ ccLang.get().addDefault("SHOP_SETTING.HIDE_STOCK", "§f隱藏庫存。");
+ ccLang.get().addDefault("SHOP_SETTING.HIDE_PRICING_TYPE", "§f隱藏價格類型。");
+ ccLang.get().addDefault("SHOP_SETTING.HIDE_SHOP_BALANCE", "§f隱藏商店帳戶餘額。");
+ ccLang.get().addDefault("SHOP_SETTING.SHOW_MAX_STOCK", "§f顯示最大庫存。");
+ ccLang.get().addDefault("SHOP_SETTING.HIDDEN_IN_COMMAND", "§f此商店不會\n§f出現在指令補全中。");
+ ccLang.get().addDefault("SHOP_SETTING.INTEGER_ONLY", "§f購買價格將向上取整。\n§f販售價格將向下取整。");
+ ccLang.get().addDefault("SHOP_SETTING.PERMISSION", "§f權限");
+ ccLang.get().addDefault("SHOP_SETTING.STATE", "§f狀態");
+ ccLang.get().addDefault("SHOP_SETTING.STATE_ENABLE", "§a啟用");
+ ccLang.get().addDefault("SHOP_SETTING.STATE_DISABLE", "§c停用");
+ ccLang.get().addDefault("SHOP_SETTING.ROTATION_EDITOR", "§f輪換:");
+ ccLang.get().addDefault("SHOP_SETTING.ROTATION_EDITOR_LORE", "§e點擊:編輯輪換");
+ ccLang.get().addDefault("SHOP_SETTING.COMMAND_TOGGLE", "§f伺服器指令");
+ ccLang.get().addDefault("SHOP_SETTING.COMMAND_TOGGLE_LORE", "§f在商店交易時執行伺服器指令。");
+ ccLang.get().addDefault("SHOP_SETTING.COMMAND_SELL", "§f販售時執行");
+ ccLang.get().addDefault("SHOP_SETTING.COMMAND_BUY", "§f購買時執行");
+ ccLang.get().addDefault("SHOP_SETTING.COMMAND_LORE1", "§e左鍵:設定");
+ ccLang.get().addDefault("SHOP_SETTING.COMMAND_LORE3", "§eShift 右鍵:刪除最後一項");
+ ccLang.get().addDefault("SHOP_SETTING.TRADE_UI", "§f編輯交易介面");
+ ccLang.get().addDefault("SHOP_SETTING.TRADE_UI_LORE_2", "§e左鍵:編輯\n§e右鍵:重設");
+
+ ccLang.get().addDefault("ROTATION_EDITOR_TITLE", "§3輪換編輯器");
+ ccLang.get().addDefault("ROTATION_EDITOR.ENABLED", "§a已啟用");
+ ccLang.get().addDefault("ROTATION_EDITOR.DISABLED", "§c已停用");
+ ccLang.get().addDefault("ROTATION_EDITOR.CLICK_TO_ENABLE", "§e左鍵:啟用");
+ ccLang.get().addDefault("ROTATION_EDITOR.CLICK_TO_DISABLE", "§e左鍵:停用");
+ ccLang.get().addDefault("ROTATION_EDITOR.CURRENT_TIME", "§f當前時間:");
+ ccLang.get().addDefault("ROTATION_EDITOR.CURRENTLY_IN_USE", "§a【使用中】");
+ ccLang.get().addDefault("ROTATION_EDITOR.NEXT_ROTATION", "§f下次輪換:");
+ ccLang.get().addDefault("ROTATION_EDITOR.PERIOD", "§f週期");
+ ccLang.get().addDefault("ROTATION_EDITOR.PERIOD_LORE_V2", "§e左鍵:-1小時,右鍵:+1小時,Shift:x10");
+ ccLang.get().addDefault("ROTATION_EDITOR.TIMER", "§f計時器調整");
+ ccLang.get().addDefault("ROTATION_EDITOR.TIMER_LORE_V2", "§e左鍵:-10分鐘,右鍵:+10分鐘,Shift:x6");
+ ccLang.get().addDefault("ROTATION_EDITOR.HOUR", "§f{0} 小時");
+ ccLang.get().addDefault("ROTATION_EDITOR.UNSAVED_CHANGES", "§c§o尚未儲存的變更");
+ ccLang.get().addDefault("ROTATION_EDITOR.APPLY_CHANGES", "§f套用變更");
+ ccLang.get().addDefault("ROTATION_EDITOR.APPLY_CHANGES_LORE", "§e左鍵:儲存變更\n§e右鍵:重設變更");
+ ccLang.get().addDefault("ROTATION_EDITOR.APPLY_ROTATION", "§e左鍵:立即套用");
+ ccLang.get().addDefault("ROTATION_EDITOR.OPEN", "§e左鍵:開啟");
+ ccLang.get().addDefault("ROTATION_EDITOR.CREATE", "§e左鍵:建立空白");
+ ccLang.get().addDefault("ROTATION_EDITOR.COPY_AS_NEW", "§e右鍵:複製為新項目");
+ ccLang.get().addDefault("ROTATION_EDITOR.DELETE", "§eShift 右鍵:§c刪除");
+ ccLang.get().addDefault("ROTATION_EDITOR.REAPPLY", "§eShift 左鍵:重新套用");
+ ccLang.get().addDefault("ROTATION_EDITOR.MOVE", "§e右鍵:移動");
+
+ ccLang.get().addDefault("ITEM_SETTING_TITLE", "§3物品設定");
+ ccLang.get().addDefault("ITEM_SETTING.VALUE_BUY", "§f購買價值:");
+ ccLang.get().addDefault("ITEM_SETTING.VALUE_SELL", "§f販售價值:");
+ ccLang.get().addDefault("ITEM_SETTING.PRICE", "§f購買價格:");
+ ccLang.get().addDefault("ITEM_SETTING.SELL_PRICE", "§f販售價格:");
+ ccLang.get().addDefault("ITEM_SETTING.PRICE_MIN", "§f最低價格:");
+ ccLang.get().addDefault("ITEM_SETTING.PRICE_MAX", "§f最高價格:");
+ ccLang.get().addDefault("ITEM_SETTING.MEDIAN", "§f中位數:");
+ ccLang.get().addDefault("ITEM_SETTING.STOCK", "§f庫存:");
+ ccLang.get().addDefault("ITEM_SETTING.MAX_STOCK", "§f最大庫存:");
+ ccLang.get().addDefault("ITEM_SETTING.MAX_STOCK_LORE", "§f若庫存超過此上限,\n§f商店將拒絕收購。");
+ ccLang.get().addDefault("ITEM_SETTING.INF_STOCK", "無限庫存");
+ ccLang.get().addDefault("ITEM_SETTING.STATIC_PRICE", "固定價格");
+ ccLang.get().addDefault("ITEM_SETTING.UNLIMITED", "無限制");
+ ccLang.get().addDefault("ITEM_SETTING.MEDIAN_HELP", "§f中位數越小,\n§f價格變化越劇烈。");
+ ccLang.get().addDefault("ITEM_SETTING.TAX_IGNORED", "已忽略銷售稅設定。");
+ ccLang.get().addDefault("ITEM_SETTING.RECOMMEND", "§f套用建議數值");
+ ccLang.get().addDefault("ITEM_SETTING.DISCOUNT", "§f折扣");
+ ccLang.get().addDefault("ITEM_SETTING.DISCOUNT_LORE", "§f折扣率:{num}%\n§e左鍵:+10,右鍵:-10");
+ ccLang.get().addDefault("ITEM_SETTING.DISCOUNT_LORE_2", "§f折扣率:{num}%\n§e左鍵:-10,右鍵:+10");
+ ccLang.get().addDefault("ITEM_SETTING.DONE", "§f完成");
+ ccLang.get().addDefault("ITEM_SETTING.DONE_LORE", "§f設定完成!");
+ ccLang.get().addDefault("ITEM_SETTING.ROUND_DOWN", "§f向下取整");
+ ccLang.get().addDefault("ITEM_SETTING.SET_TO_MEDIAN", "§f設為中位數");
+ ccLang.get().addDefault("ITEM_SETTING.SET_TO_STOCK", "§f設為庫存數");
+ ccLang.get().addDefault("ITEM_SETTING.SET_TO_VALUE", "§f設為數值");
+ ccLang.get().addDefault("ITEM_SETTING.CLOSE", "§f關閉");
+ ccLang.get().addDefault("ITEM_SETTING.CLOSE_LORE", "§f§n點擊:關閉");
+ ccLang.get().addDefault("ITEM_SETTING.REMOVE", "§c移除");
+ ccLang.get().addDefault("ITEM_SETTING.REMOVE_LORE", "§f從商店中移除此物品。");
+ ccLang.get().addDefault("ITEM_SETTING.BUY", "§3§l購買:{num}");
+ ccLang.get().addDefault("ITEM_SETTING.SELL", "§3§l販售:{num}");
+ ccLang.get().addDefault("ITEM_SETTING.TRADE_LIMIT_SELL", "§f每位玩家販售上限");
+ ccLang.get().addDefault("ITEM_SETTING.TRADE_LIMIT_SELL_LORE", "§f{num}\n§e左鍵:-1,右鍵:+1,Shift = x10");
+ ccLang.get().addDefault("ITEM_SETTING.TRADE_LIMIT_BUY", "§f每位玩家購買上限");
+ ccLang.get().addDefault("ITEM_SETTING.TRADE_LIMIT_BUY_LORE", "§f{num}\n§e左鍵:-1,右鍵:+1,Shift = x10");
+ ccLang.get().addDefault("ITEM_SETTING.TRADE_LIMIT_INTERVAL", "§f交易量限制重設週期");
+ ccLang.get().addDefault("ITEM_SETTING.TRADE_LIMIT_INTERVAL_LORE", "§f間隔時間:{interval}\n§f下次重置:{time}\n§e左鍵:-1 小時,右鍵:+1 小時,Shift = x12");
+ ccLang.get().addDefault("ITEM_SETTING.TRADE_LIMIT_TIMER", "§f調整計時器");
+ ccLang.get().addDefault("ITEM_SETTING.TRADE_LIMIT_TIMER_LORE", "§f{num}\n§f下次重置:{time}\n§e左鍵:-1 小時,右鍵:+1 小時,Shift = x12");
+
+ ccLang.get().addDefault("TRADE_TITLE", "§3交易");
+ ccLang.get().addDefault("TRADE.TOGGLE_SELLABLE", "§e點擊:僅限販售切換");
+ ccLang.get().addDefault("TRADE.TOGGLE_BUYABLE", "§e點擊:僅限購買切換");
+ ccLang.get().addDefault("TRADE.BUY_ONLY_LORE", "§f此物品無法販售。");
+ ccLang.get().addDefault("TRADE.SELL_ONLY_LORE", "§f此物品無法購買。");
+ ccLang.get().addDefault("TRADE.BALANCE", "§3我的餘額");
+ ccLang.get().addDefault("TRADE.PRICE", "§f購買:{num}");
+ ccLang.get().addDefault("TRADE.SELL_PRICE", "§f販售:{num}");
+ ccLang.get().addDefault("TRADE.PRICE_DISCOUNTED", "§f購買:§8§m{num}§r §a{num2}");
+ ccLang.get().addDefault("TRADE.SELL_PRICE_DISCOUNTED", "§f販售:§8§m{num}§r §c{num2}");
+ ccLang.get().addDefault("TRADE.PRICE_EXP", "§f購買:{num} 經驗值");
+ ccLang.get().addDefault("TRADE.SELL_PRICE_EXP", "§f販售:{num} 經驗值");
+ ccLang.get().addDefault("TRADE.PRICE_DISCOUNTED_EXP", "§f購買:§8§m{num} 經驗值§r §a{num2} 經驗值");
+ ccLang.get().addDefault("TRADE.SELL_PRICE_DISCOUNTED_EXP", "§f販售:§8§m{num} 經驗值§r §c{num2} 經驗值");
+ ccLang.get().addDefault("TRADE.PRICE_PP", "§f購買:{num} 積分");
+ ccLang.get().addDefault("TRADE.SELL_PRICE_PP", "§f販售:{num} 積分");
+ ccLang.get().addDefault("TRADE.PRICE_DISCOUNTED_PP", "§f購買:§8§m{num} 積分§r §a{num2} 積分");
+ ccLang.get().addDefault("TRADE.SELL_PRICE_DISCOUNTED_PP", "§f販售:§8§m{num} 積分§r §c{num2} 積分");
+ ccLang.get().addDefault("TRADE.PRICE_JP", "§f購買:{num} 職業點數");
+ ccLang.get().addDefault("TRADE.SELL_PRICE_JP", "§f販售:{num} 職業點數");
+ ccLang.get().addDefault("TRADE.PRICE_DISCOUNTED_JP", "§f購買:§8§m{num} 職業點數§r §a{num2} 職業點數");
+ ccLang.get().addDefault("TRADE.SELL_PRICE_DISCOUNTED_JP", "§f販售:§8§m{num} 職業點數§r §c{num2} 職業點數");
+ ccLang.get().addDefault("TRADE.BUY", "§c購買");
+ ccLang.get().addDefault("TRADE.SELL", "§2販售");
+ ccLang.get().addDefault("TRADE.STOCK", "§8庫存:");
+ ccLang.get().addDefault("TRADE.STACKS", "§8{num} 組");
+ ccLang.get().addDefault("TRADE.INF_STOCK", "§8無限");
+ ccLang.get().addDefault("TRADE.SHOP_BAL_INF", "§f無限");
+ ccLang.get().addDefault("TRADE.SHOP_BAL", "§3商店帳戶餘額 \n§f{num}");
+ ccLang.get().addDefault("TRADE.CLICK_TO_BUY", "§c§n點擊:購買 {amount}");
+ ccLang.get().addDefault("TRADE.CLICK_TO_SELL", "§2§n點擊:販售 {amount}");
+ ccLang.get().addDefault("TRADE.PURCHASE_LIMIT_PER_PLAYER", "§a購買上限:剩餘 {num}\n§a下次重置:{time}");
+ ccLang.get().addDefault("TRADE.SALES_LIMIT_PER_PLAYER", "§a販售上限:剩餘 {num}\n§a下次重置:{time}");
+ ccLang.get().addDefault("TRADE.QUANTITY_LORE", "§eShift 右鍵:編輯數量");
+ ccLang.get().addDefault("TRADE.WAIT_FOR_INPUT", "輸入要在交易介面中顯示的數量。\n範例:1,2,4,8,16,32,64");
+
+ ccLang.get().addDefault("PAGE_EDITOR_TITLE", "§3頁面編輯器");
+ ccLang.get().addDefault("PAGE_EDITOR.PREV", "§f<<");
+ ccLang.get().addDefault("PAGE_EDITOR.NEXT", "§f>>");
+ ccLang.get().addDefault("PAGE_EDITOR.PAGE_SWAP_SUCCESS", "§f頁面已成功替換。");
+ ccLang.get().addDefault("PAGE_EDITOR.PAGE_SWAP_FAIL", "§f頁面替換失敗。");
+ ccLang.get().addDefault("PAGE_EDITOR.PAGE_SWAP_SELECTED", "§f頁面已選取。請右鍵點擊要替換的其他頁面。");
+ ccLang.get().addDefault("PAGE_EDITOR.PAGE_LORE_PREMIUM", "§e左鍵:開啟頁面\n§e右鍵:替換\n§eShift 左鍵:插入\n§eShift 右鍵:刪除");
+ ccLang.get().addDefault("PAGE_EDITOR.PRICE", "§f購買:{num}");
+ ccLang.get().addDefault("PAGE_EDITOR.SELL_PRICE", "§f販售:{num}");
+ ccLang.get().addDefault("PAGE_EDITOR.STOCK", "§8庫存:{num}");
+ ccLang.get().addDefault("PAGE_EDITOR.STACKS", "§8{num} 組");
+ ccLang.get().addDefault("PAGE_EDITOR.STATIC_PRICE", "§8【固定價格】");
+ ccLang.get().addDefault("PAGE_EDITOR.EMPTY", "§8(空)");
+ ccLang.get().addDefault("PAGE_EDITOR.EMPTY_SLOT_LORE", "§e左鍵/右鍵:推送\n§e+Shift:拉取");
+
+ ccLang.get().addDefault("LOG_VIEWER_TITLE", "§3紀錄檢視器");
+ ccLang.get().addDefault("LOG_VIEWER.DATE", "§f日期:");
+ ccLang.get().addDefault("LOG_VIEWER.TIME", "§f時間:");
+ ccLang.get().addDefault("LOG_VIEWER.CURRENCY", "§f貨幣:");
+ ccLang.get().addDefault("LOG_VIEWER.PRICE", "§f價格:");
+ ccLang.get().addDefault("LOG_VIEWER.EXPAND", "§f展開");
+ ccLang.get().addDefault("LOG_VIEWER.COLLAPSE", "§f收合");
+ ccLang.get().addDefault("LOG_VIEWER.PAGE_TITLE", "§f{curPage}/{maxPage} 頁");
+ ccLang.get().addDefault("LOG_VIEWER.PAGE_LORE", "§e左鍵:上一頁\n§e右鍵:下一頁");
+ ccLang.get().addDefault("LOG_VIEWER.FILE_LORE", "§e左鍵:開啟\n§eShift 右鍵:§c刪除");
+
+ ccLang.get().addDefault("LOG.LOG", "§f紀錄");
+ ccLang.get().addDefault("LOG.CLEAR", "§f紀錄已刪除");
+ ccLang.get().addDefault("LOG.SAVE", "§f紀錄已儲存");
+ ccLang.get().addDefault("LOG.DELETE", "§4刪除紀錄");
+ ccLang.get().addDefault("LOG.SELL", "§f{player} 將 {amount} 個 {item} 販售給 {shop}");
+ ccLang.get().addDefault("LOG.BUY", "§f{player} 從 {shop} 購買了 {amount} 個 {item}");
+
+ ccLang.get().addDefault("STOCK_SIMULATOR_TITLE", "§3庫存模擬器");
+ ccLang.get().addDefault("STOCK_SIMULATOR.CHANGE_SAMPLE_LORE", "§e左鍵/右鍵:變更物品");
+ ccLang.get().addDefault("STOCK_SIMULATOR.SIMULATOR_BUTTON_LORE", "§e右鍵:模擬器");
+ ccLang.get().addDefault("STOCK_SIMULATOR.RUN_TITLE", "§f執行");
+ ccLang.get().addDefault("STOCK_SIMULATOR.RUN_LORE", "§e左鍵:執行模擬\n§e右鍵:將設定套用至商店\n§f物品本身不受影響。");
+ ccLang.get().addDefault("STOCK_SIMULATOR.REAL_TIME", "§a(即時)");
+ ccLang.get().addDefault("STOCK_SIMULATOR.AFTER_S", "§a{0} 秒後");
+ ccLang.get().addDefault("STOCK_SIMULATOR.AFTER_M", "§a{0} 分鐘後");
+ ccLang.get().addDefault("STOCK_SIMULATOR.AFTER_H", "§a{0} 小時後");
+ ccLang.get().addDefault("STOCK_SIMULATOR.AFTER_D", "§a{0} 天後");
+ ccLang.get().addDefault("STOCK_SIMULATOR.L_R_SHIFT", "§e左鍵:-1 右鍵:+1 Shift:x5");
+ ccLang.get().addDefault("STOCK_SIMULATOR.PRICE", "§f購買價格:{num}");
+ ccLang.get().addDefault("STOCK_SIMULATOR.MEDIAN", "§f中位數:{num}");
+ ccLang.get().addDefault("STOCK_SIMULATOR.STOCK", "§f庫存:{num}");
+
+ ccLang.get().addDefault("PALETTE_TITLE", "§3選擇要販售的物品");
+ ccLang.get().addDefault("PALETTE_TITLE2", "§3選擇物品");
+ ccLang.get().addDefault("PALETTE.LORE_PREMIUM", "§e左鍵:新增\n§eShift 左鍵:設定後新增\n§e右鍵:新增為裝飾物\n§eShift 右鍵:搜尋「{item}」");
+ ccLang.get().addDefault("PALETTE.LORE2", "§e左鍵:選擇\n§eShift 右鍵:搜尋「{item}」");
+ ccLang.get().addDefault("PALETTE.SEARCH", "§f搜尋");
+ ccLang.get().addDefault("PALETTE.ADD_ALL", "§f全部新增");
+ ccLang.get().addDefault("PALETTE.ADD_ALL_LORE", "§e左鍵:新增全部\n§eShift 左鍵:新增全部並套用建議數值");
+ ccLang.get().addDefault("PALETTE.PAGE_TITLE", "§f{curPage}/{maxPage} 頁");
+ ccLang.get().addDefault("PALETTE.PAGE_LORE", "§f§n左鍵:上一頁\n§f§n右鍵:下一頁");
+ ccLang.get().addDefault("PALETTE.FILTER_APPLIED", "§f篩選器已套用:");
+ ccLang.get().addDefault("PALETTE.FILTER_LORE", "§e左鍵:搜尋\n§e右鍵:清除篩選\n\n§7搜尋「BLUE_WOOL」範例:\n§7 b w\n§7 wool\n§7 blue wool");
+
+ ccLang.get().addDefault("QUICK_SELL_TITLE", "§3快速販售");
+ ccLang.get().addDefault("QUICK_SELL.GUIDE_TITLE", "§3§l快速販售指南");
+ ccLang.get().addDefault("QUICK_SELL.GUIDE_LORE", "§a左鍵點擊要販售的物品。\n§aShift 左鍵可販售所有相同類型的物品。\n§a右鍵可前往該物品的商店。");
+
+ ccLang.get().addDefault("ARROW.UP", "§a⬆");
+ ccLang.get().addDefault("ARROW.DOWN", "§c⬇");
+ ccLang.get().addDefault("ARROW.UP_2", "§c⬆");
+ ccLang.get().addDefault("ARROW.DOWN_2", "§a⬇");
+
+ ccLang.get().addDefault("TIME.OPEN", "開門");
+ ccLang.get().addDefault("TIME.CLOSE", "關門");
+ ccLang.get().addDefault("TIME.OPEN_LORE", "§f設定開店時間");
+ ccLang.get().addDefault("TIME.CLOSE_LORE", "§f設定關店時間");
+ ccLang.get().addDefault("TIME.SHOPHOURS", "§f營業時間");
+ ccLang.get().addDefault("TIME.OPEN24", "24 小時營業");
+ ccLang.get().addDefault("TIME.SHOP_IS_CLOSED", "§f商店目前關閉,將於 {time} 點開啟。現在時間 {curTime} 點。");
+ ccLang.get().addDefault("TIME.SET_SHOPHOURS", "設定營業時間");
+ ccLang.get().addDefault("TIME.CUR", "§f目前時間:{time} 點");
+
+ ccLang.get().addDefault("STOCK_STABILIZING.SS", "§f庫存穩定化");
+ ccLang.get().addDefault("STOCK_STABILIZING.L_R_SHIFT", "§e左鍵:-0.1 右鍵:+0.1 Shift:x5");
+ ccLang.get().addDefault("STOCK_STABILIZING.STRENGTH_LORE_A", "§f中位數的 n%");
+ ccLang.get().addDefault("STOCK_STABILIZING.STRENGTH_LORE_B", "§f與中位數差距的 n%");
+
+ ccLang.get().addDefault("FLUCTUATION.FLUCTUATION", "§f庫存波動");
+ ccLang.get().addDefault("FLUCTUATION.INTERVAL", "§f間隔時間");
+ ccLang.get().addDefault("FLUCTUATION.INTERVAL_LORE", "§f1 小時 = 1000 ticks = 實際時間 50 秒");
+ ccLang.get().addDefault("FLUCTUATION.STRENGTH", "§f波動強度");
+ ccLang.get().addDefault("FLUCTUATION.STRENGTH_LORE", "§f中位數的 n%");
+
+ ccLang.get().addDefault("TAX.SALES_TAX", "§f銷售稅");
+ ccLang.get().addDefault("TAX.USE_GLOBAL", "使用全域設定({tax}%)");
+ ccLang.get().addDefault("TAX.USE_LOCAL", "單獨設定");
+
+ ccLang.get().addDefault("MESSAGE.SEARCH_ITEM", "§f請輸入要搜尋的物品名稱。");
+ ccLang.get().addDefault("MESSAGE.SEARCH_CANCELED", "§f搜尋已取消。");
+ ccLang.get().addDefault("MESSAGE.INPUT_CANCELED", "§f輸入已取消。");
+ ccLang.get().addDefault("MESSAGE.DELETE_CONFIRM", "§f確定要刪除此頁面嗎?請輸入 'delete' 以確認。");
+ ccLang.get().addDefault("MESSAGE.CANT_DELETE_LAST_PAGE", "§f無法刪除僅剩的最後一頁。");
+ ccLang.get().addDefault("MESSAGE.SHOP_BAL_LOW", "§f商店資金不足。");
+ ccLang.get().addDefault("MESSAGE.SHOP_CREATED", "§f商店已建立!");
+ ccLang.get().addDefault("MESSAGE.SHOP_DELETED", "§f商店已刪除!");
+ ccLang.get().addDefault("MESSAGE.OUT_OF_STOCK", "§f缺貨!");
+ ccLang.get().addDefault("MESSAGE.BUY_SUCCESS", "§f已購買 {item} x{amount},花費 {price}。餘額:{bal}");
+ ccLang.get().addDefault("MESSAGE.SELL_SUCCESS", "§f已販售 {item} x{amount},收入 {price}。餘額:{bal}");
+ ccLang.get().addDefault("MESSAGE.BUY_SUCCESS_EXP", "§f已購買 {item} x{amount},花費 {price} 經驗值。餘額:{bal}");
+ ccLang.get().addDefault("MESSAGE.SELL_SUCCESS_EXP", "§f已販售 {item} x{amount},收入 {price} 經驗值。餘額:{bal}");
+ ccLang.get().addDefault("MESSAGE.BUY_SUCCESS_JP", "§f已購買 {item} x{amount},花費 {price} 點數。剩餘:{bal}");
+ ccLang.get().addDefault("MESSAGE.SELL_SUCCESS_JP", "§f已販售 {item} x{amount},收入 {price} 點數。剩餘:{bal}");
+ ccLang.get().addDefault("MESSAGE.BUY_SUCCESS_PP", "§f已購買 {item} x{amount},花費 {price} 積分。剩餘:{bal}");
+ ccLang.get().addDefault("MESSAGE.SELL_SUCCESS_PP", "§f已販售 {item} x{amount},收入 {price} 積分。剩餘:{bal}");
+ ccLang.get().addDefault("MESSAGE.QSELL_NA", "§f沒有任何商店販售此物品。");
+ ccLang.get().addDefault("MESSAGE.DELIVERY_CHARGE", "§f運費:{fee}");
+ ccLang.get().addDefault("MESSAGE.DELIVERY_CHARGE_NA", "§f無法配送至其他世界。");
+ ccLang.get().addDefault("MESSAGE.NOT_ENOUGH_MONEY", "§f金錢不足。餘額:{bal}");
+ ccLang.get().addDefault("MESSAGE.NOT_ENOUGH_POINT", "§f點數不足。餘額:{bal}");
+ ccLang.get().addDefault("MESSAGE.NOT_ENOUGH_PLAYER_POINT", "§f玩家積分不足。餘額:{bal}");
+ ccLang.get().addDefault("MESSAGE.NOT_ENOUGH_EXP_POINT", "§f經驗值不足。餘額:{bal}");
+ ccLang.get().addDefault("MESSAGE.NO_ITEM_TO_SELL", "§f目前沒有可販售的物品。");
+ ccLang.get().addDefault("MESSAGE.NO_ITEM_TO_SELL_2", "§f無可販售的物品。");
+ ccLang.get().addDefault("MESSAGE.INVENTORY_FULL", "§4你的物品欄已滿!");
+ ccLang.get().addDefault("MESSAGE.IRREVERSIBLE", "§f此操作無法復原!");
+ ccLang.get().addDefault("MESSAGE.ITEM_ADDED", "物品已新增!");
+ ccLang.get().addDefault("MESSAGE.ITEM_UPDATED", "物品已更新!");
+ ccLang.get().addDefault("MESSAGE.ITEM_DELETED", "物品已刪除!");
+ ccLang.get().addDefault("MESSAGE.CHANGES_APPLIED", "變更已套用。新數值:");
+ ccLang.get().addDefault("MESSAGE.CHANGES_APPLIED_2", "變更已套用");
+ ccLang.get().addDefault("MESSAGE.RECOMMEND_APPLIED", "已套用建議值。此值基於 {playerNum} 名玩家,可於設定檔中更改。");
+ ccLang.get().addDefault("MESSAGE.TRANSFER_SUCCESS", "匯款成功");
+ ccLang.get().addDefault("MESSAGE.PURCHASE_REJECTED", "商店已擁有太多此物品,暫時無法販售。");
+ ccLang.get().addDefault("MESSAGE.CLICK_YOUR_ITEM_START_PAGE", "點擊物品查看哪間商店提供最優惠的交易。\n左鍵:購買 右鍵:販售");
+ ccLang.get().addDefault("MESSAGE.MOVE_TO_BEST_SHOP_BUY", "已跳轉至 {item} 最低購買價的商店。");
+ ccLang.get().addDefault("MESSAGE.MOVE_TO_BEST_SHOP_SELL", "已跳轉至 {item} 最高販售價的商店。");
+ ccLang.get().addDefault("MESSAGE.SHOP_IS_CLOSED_BY_ADMIN", "此商店已由伺服器管理員關閉。");
+ ccLang.get().addDefault("MESSAGE.SHOP_DISABLED", "此商店目前已停用,非管理員無法使用。可於商店設定中重新啟用。");
+ ccLang.get().addDefault("MESSAGE.ROTATION_SHARED_DATA_MISSING", "§e[ ! ]§f'{0}/SharedData.yml' 中找不到所需資料,共 {1} 個物品。這些物品已作為裝飾項新增。");
+ ccLang.get().addDefault("MESSAGE.ENTER_COMMAND", "請輸入不含 '/' 的指令。");
+ ccLang.get().addDefault("MESSAGE.ENTER_COMMAND_2", "請輸入格式為「索引/指令」。");
+ ccLang.get().addDefault("MESSAGE.SELL_COMMAND_CUR", "目前作用中的販售指令:");
+ ccLang.get().addDefault("MESSAGE.BUY_COMMAND_CUR", "目前作用中的購買指令:");
+ ccLang.get().addDefault("MESSAGE.Q_SEARCH_FAIL_CURRENCY", "此物品正在使用多種貨幣進行交易。");
+
+ ccLang.get().addDefault("HELP.TITLE", "§f說明:{command} --------------------");
+ ccLang.get().addDefault("HELP.SHOP", "開啟商店");
+ ccLang.get().addDefault("HELP.CMD", "切換是否顯示指令說明");
+ ccLang.get().addDefault("HELP.CREATE_SHOP", "建立新商店。");
+ ccLang.get().addDefault("HELP.CREATE_SHOP_2", "權限設定(可日後更改):\n true:需 dshop.user.shop.shopName 權限\n false:所有人可存取(預設)\n 自訂值:需指定權限");
+ ccLang.get().addDefault("HELP.DELETE_SHOP", "刪除現有商店。");
+ ccLang.get().addDefault("HELP.SHOP_ADD_HAND", "將手上物品新增至商店。");
+ ccLang.get().addDefault("HELP.SHOP_ADD_ITEM", "新增物品至商店。");
+ ccLang.get().addDefault("HELP.SHOP_EDIT", "編輯商店內的物品。");
+ ccLang.get().addDefault("HELP.PRICE", "§7價格計算公式:中位數 * 價值 ÷ 庫存");
+ ccLang.get().addDefault("HELP.INF_STATIC", "§7中位數 < 0 為固定價格,庫存 < 0 為無限庫存");
+ ccLang.get().addDefault("HELP.EDIT_ALL", "一次修改商店內所有物品。");
+ ccLang.get().addDefault("HELP.RELOAD", "重新載入插件。");
+ ccLang.get().addDefault("HELP.RELOADED", "插件已重新載入");
+ ccLang.get().addDefault("HELP.USAGE", "使用方式");
+ ccLang.get().addDefault("HELP.ITEM_ALREADY_EXIST", "§7§o{item} 已在販售中。\n {info}\n 輸入指令可修改其數值。");
+ ccLang.get().addDefault("HELP.ITEM_INFO", "§7§o{item} 目前設定:\n {info}");
+ ccLang.get().addDefault("HELP.REMOVE_ITEM", "§f輸入參數為 0 即§4刪除§f該物品。");
+ ccLang.get().addDefault("HELP.QSELL", "§f快速販售物品。");
+ ccLang.get().addDefault("HELP.DELETE_OLD_USER", "刪除長期未登入的使用者資料");
+ ccLang.get().addDefault("HELP.ACCOUNT", "設定商店帳戶餘額,-1 為無上限");
+ ccLang.get().addDefault("HELP.SET_TO_REC_ALL", "§c重設§e 商店內所有物品為建議值");
+ ccLang.get().addDefault("HELP.SHOP_ENABLE", "啟用或停用商店");
+ ccLang.get().addDefault("HELP.ITEMINFO_USAGE", "§f拿著物品可查看詳細資訊。");
+ ccLang.get().addDefault("HELP.ITEMINFO_REALNAME", "§7實際名稱:§3{item_realname}");
+ ccLang.get().addDefault("HELP.ITEMINFO_SIGN_NAME", "§7告示牌名稱:§3{item_signname}");
+
+ ccLang.get().addDefault("ERR.NO_USER_ID", "§6找不到玩家 UUID。無法使用商店。");
+ ccLang.get().addDefault("ERR.ITEM_NOT_EXIST", "商店中沒有此物品。");
+ ccLang.get().addDefault("ERR.ITEM_FORBIDDEN", "此為禁用物品。");
+ ccLang.get().addDefault("ERR.NO_PERMISSION", "§e你沒有權限。");
+ ccLang.get().addDefault("ERR.WRONG_USAGE", "指令使用方式錯誤。");
+ ccLang.get().addDefault("ERR.NO_EMPTY_SLOT", "商店中沒有空位。");
+ ccLang.get().addDefault("ERR.WRONG_DATATYPE", "無效的參數類型");
+ ccLang.get().addDefault("ERR.VALUE_ZERO", "參數值必須大於 0。");
+ ccLang.get().addDefault("ERR.WRONG_ITEM_NAME", "無效的物品名稱。");
+ ccLang.get().addDefault("ERR.HAND_EMPTY", "請手持物品。");
+ ccLang.get().addDefault("ERR.HAND_EMPTY2", "§c§o你必須手持物品!");
+ ccLang.get().addDefault("ERR.SHOP_NOT_FOUND", "§f找不到該商店。");
+ ccLang.get().addDefault("ERR.SHOP_EXIST", "此商店名稱已存在。");
+ ccLang.get().addDefault("ERR.SHOP_NOT_EXIST", "找不到指定商店。");
+ ccLang.get().addDefault("ERR.SIGN_SHOP_REMOTE_ACCESS", "此商店僅能透過告示牌使用。");
+ ccLang.get().addDefault("ERR.LOCAL_SHOP_REMOTE_ACCESS", "此商店需親訪現場。");
+ ccLang.get().addDefault("ERR.MAX_LOWER_THAN_MIN", "最大價格必須高於最小價格。");
+ ccLang.get().addDefault("ERR.DEFAULT_VALUE_OUT_OF_RANGE", "預設價格必須介於最小與最大價格之間。");
+ ccLang.get().addDefault("ERR.NO_RECOMMEND_DATA", "Worth.yml 中沒有此物品的資訊。");
+ ccLang.get().addDefault("ERR.JOBS_REBORN_NOT_FOUND", "找不到 Jobs Reborn 插件。");
+ ccLang.get().addDefault("ERR.PLAYER_POINTS_NOT_FOUND", "找不到 PlayerPoints 插件。");
+ ccLang.get().addDefault("ERR.SHOP_HAS_INF_BAL", "{shop} 是無限餘額商店。");
+ ccLang.get().addDefault("ERR.SHOP_DIFF_CURRENCY", "兩間商店使用不同貨幣。");
+ ccLang.get().addDefault("ERR.PLAYER_NOT_EXIST", "找不到該玩家。");
+ ccLang.get().addDefault("ERR.SHOP_LINK_FAIL", "兩間商店必須有一間為實體帳戶。");
+ ccLang.get().addDefault("ERR.SHOP_LINK_TARGET_ERR", "目標商店必須是實體帳戶。");
+ ccLang.get().addDefault("ERR.NESTED_STRUCTURE", "禁止巢狀結構。(例如 aa-bb、bb-cc)");
+ ccLang.get().addDefault("ERR.CREATIVE", "§e創造模式中不可使用此指令。你沒有權限。");
+ ccLang.get().addDefault("ERR.FILE_CREATE_FAIL", "§e檔案建立失敗");
+ ccLang.get().addDefault("ERR.INVALID_TRANSACTION", "此交易已無效。若問題持續,請聯繫伺服器管理員。");
+ ccLang.get().addDefault("ERR.SIGN_WALL", "告示牌必須放置於牆上。");
+ ccLang.get().addDefault("ERR.SHOP_NULL", "§e商店名稱不能為空。");
+ ccLang.get().addDefault("ERR.ITEMINFO_HAND_EMPTY", "你必須手持物品。");
+ ccLang.get().addDefault("ERR.SIGN_ITEM_INVALID", "無效的物品。請使用 /ds iteminfo 查詢名稱。");
+ ccLang.get().addDefault("ERR.SIGN_ITEM_NOT_FOR_SALE", "請先將物品新增至商店,才能放置告示牌。");
+ ccLang.get().addDefault("MESSAGE.SIGN_SHOP_CREATED", "§a已建立告示牌商店!");
+
+ ccLang.get().addDefault("ON", "開啟");
+ ccLang.get().addDefault("OFF", "關閉");
+ ccLang.get().addDefault("SET", "設定");
+ ccLang.get().addDefault("UNSET", "取消設定");
+ ccLang.get().addDefault("NULL", "空值");
+ ccLang.get().addDefault("NULL(OPEN)", "無(對所有人開放)");
+ ccLang.get().addDefault("CUR_STATE", "當前狀態");
+ ccLang.get().addDefault("CLICK", "點擊");
+ ccLang.get().addDefault("LMB", "左鍵");
+ ccLang.get().addDefault("RMB", "右鍵");
+ ccLang.get().addDefault("CLOSE", "§f關閉");
+ ccLang.get().addDefault("CLOSE_LORE", "§f§n點擊:關閉");
+
+ ccLang.get().addDefault("EXP_POINTS", "經驗值 (EXP)");
+ ccLang.get().addDefault("JOB_POINTS", "職業點數 (Job Points)");
+ ccLang.get().addDefault("PLAYER_POINTS", "玩家點數 (Player Points)");
+
+ ccLang.get().options().copyDefaults(true);
+ ccLang.save();
+ }
+
+ private static void en_US()
+ {
+ ccLang.setup("Lang_V3_en-US", null);
+
+ ccLang.get().addDefault("START_PAGE.EDITOR_TITLE", "§3Edit icon");
+ ccLang.get().addDefault("START_PAGE.EDIT_NAME", "§fRename");
+ ccLang.get().addDefault("START_PAGE.EDIT_LORE", "§fChange lore");
+ ccLang.get().addDefault("START_PAGE.EDIT_ICON", "§fChange icon");
+ ccLang.get().addDefault("START_PAGE.EDIT_ACTION", "§fChange command");
+ ccLang.get().addDefault("START_PAGE.SHOP_SHORTCUT", "§fCreate shop button");
+ ccLang.get().addDefault("START_PAGE.CREATE_DECO", "§fCreate decorative button");
+ ccLang.get().addDefault("START_PAGE.ENTER_SHOP_NAME", "Please enter shop name");
+ ccLang.get().addDefault("START_PAGE.DEFAULT_SHOP_LORE", "§f§nClick: go to shop");
+ ccLang.get().addDefault("START_PAGE.ITEM_MOVE_LORE", "§eRMB: Move");
+ ccLang.get().addDefault("START_PAGE.ITEM_COPY_LORE", "§eRMB: Copy");
+ ccLang.get().addDefault("START_PAGE.ITEM_REMOVE_LORE", "§eShift LMB: Remove");
+ ccLang.get().addDefault("START_PAGE.ITEM_EDIT_LORE", "§eShift RMB: Edit");
+ ccLang.get().addDefault("START_PAGE.REMOVE", "§fRemove");
+ ccLang.get().addDefault("START_PAGE.REMOVE_LORE", "§fRemove this button from the start page.");
+ ccLang.get().addDefault("START_PAGE.ENTER_NAME", "Enter a new name for the button.");
+ ccLang.get().addDefault("START_PAGE.ENTER_LORE", "Enter a new description for the button.");
+ ccLang.get().addDefault("START_PAGE.ENTER_ICON", "Enter the name of the item to be used as the icon for the button. (English, case insensitive)");
+ ccLang.get().addDefault("START_PAGE.ENTER_ACTION", "Enter the command without '/'. This command is executed when the button is pressed.");
+ ccLang.get().addDefault("START_PAGE.ENTER_COLOR", "Enter a color for the decorative button. (English)");
+ ccLang.get().addDefault("START_PAGE.SHOP_LIST_TITLE", "§3Shop List");
+ ccLang.get().addDefault("START_PAGE.SHOP_LIST.PAGE_TITLE", "§f{curPage}/{maxPage} Page");
+ ccLang.get().addDefault("START_PAGE.SHOP_LIST.PAGE_LORE", "§eLMB: Previous page\n§eRMB: Next page");
+
+ ccLang.get().addDefault("COLOR_PICKER_TITLE", "§3Color Picker");
+
+ ccLang.get().addDefault("SHOP.TRADE_LORE", "§f§nClick: Trade");
+ ccLang.get().addDefault("SHOP.BUY_PRICE", "§fBuy: {num}");
+ ccLang.get().addDefault("SHOP.SELL_PRICE", "§fSell: {num}");
+ ccLang.get().addDefault("SHOP.BUY_PRICE_DISCOUNTED", "§fBuy: §8§m{num}§r §a{num2}");
+ ccLang.get().addDefault("SHOP.SELL_PRICE_DISCOUNTED", "§fSell: §8§m{num}§r §c{num2}");
+ ccLang.get().addDefault("SHOP.BUY_PRICE_EXP", "§fBuy: {num}Exp");
+ ccLang.get().addDefault("SHOP.SELL_PRICE_EXP", "§fSell: {num}Exp");
+ ccLang.get().addDefault("SHOP.BUY_PRICE_DISCOUNTED_EXP", "§fBuy: §8§m{num}Exp§r §a{num2}Exp");
+ ccLang.get().addDefault("SHOP.SELL_PRICE_DISCOUNTED_EXP", "§fSell: §8§m{num}Exp§r §c{num2}Exp");
+ ccLang.get().addDefault("SHOP.BUY_PRICE_PP", "§fBuy: {num}PP");
+ ccLang.get().addDefault("SHOP.SELL_PRICE_PP", "§fSell: {num}PP");
+ ccLang.get().addDefault("SHOP.BUY_PRICE_DISCOUNTED_PP", "§fBuy: §8§m{num}PP§r §a{num2}PP");
+ ccLang.get().addDefault("SHOP.SELL_PRICE_DISCOUNTED_PP", "§fSell: §8§m{num}PP§r §c{num2}PP");
+ ccLang.get().addDefault("SHOP.BUY_PRICE_JP", "§fBuy: {num}JP");
+ ccLang.get().addDefault("SHOP.SELL_PRICE_JP", "§fSell: {num}JP");
+ ccLang.get().addDefault("SHOP.BUY_PRICE_DISCOUNTED_JP", "§fBuy: §8§m{num}JP§r §a{num2}JP");
+ ccLang.get().addDefault("SHOP.SELL_PRICE_DISCOUNTED_JP", "§fSell: §8§m{num}JP§r §c{num2}JP");
+ ccLang.get().addDefault("SHOP.STOCK", "§8Stock: {num}");
+ ccLang.get().addDefault("SHOP.STOCK_2", "§8Stock: {stock}/{max_stock}");
+ ccLang.get().addDefault("SHOP.INF_STOCK", "§8Infinite");
+ ccLang.get().addDefault("SHOP.STATIC_PRICE", "§8[Fixed price]");
+ ccLang.get().addDefault("SHOP.STACKS", "§8{num} Stacks");
+ ccLang.get().addDefault("SHOP.ITEM_MOVE_LORE", "§eRMB: Move");
+ ccLang.get().addDefault("SHOP.ITEM_COPY_LORE", "§eRMB: Copy");
+ ccLang.get().addDefault("SHOP.ITEM_EDIT_LORE", "§eShiftRMB: Edit");
+ ccLang.get().addDefault("SHOP.DECO_DELETE_LORE", "§eShiftRMB: Remove");
+ ccLang.get().addDefault("SHOP.PAGE_TITLE", "§f{curPage}/{maxPage} Page");
+ ccLang.get().addDefault("SHOP.PAGE_LORE_V2", "§f§nLMB: Previous page\n§f§nRMB: Next page\n§7Clicking on your item will\n§7take you to the page where\n§7that item is located.");
+ ccLang.get().addDefault("SHOP.GO_TO_PAGE_EDITOR", "§eShift RMB: Page Editor");
+ ccLang.get().addDefault("SHOP.ITEM_MOVE_SELECTED", "Item selected. Right-click on an empty field to move it.");
+ ccLang.get().addDefault("SHOP.PERMISSION", "§fPermission:");
+ ccLang.get().addDefault("SHOP.PERMISSION_ITEM", "§7 - {permission}");
+ ccLang.get().addDefault("SHOP.FLAGS", "§eFlag:");
+ ccLang.get().addDefault("SHOP.FLAGS_ITEM", "§e - {flag}");
+ ccLang.get().addDefault("SHOP.SHOP_BAL_INF", "§fUnlimited");
+ ccLang.get().addDefault("SHOP.SHOP_BAL", "§fShop account balance");
+ ccLang.get().addDefault("SHOP.SHOP_LOCATION", "§fShop location: x {x}, y {y}, z {z}");
+ ccLang.get().addDefault("SHOP.SHOP_LOCATION_B", "§fShop location: ");
+ ccLang.get().addDefault("SHOP.SHOP_INFO_DASH", "§7 - ");
+ ccLang.get().addDefault("SHOP.DISABLED", "§cDisabled§8|§f");
+ ccLang.get().addDefault("SHOP.INCOMPLETE_DATA", "INCOMPLETE DATA");
+ ccLang.get().addDefault("SHOP.INCOMPLETE_DATA_Lore", "This item is not visible\nto non-op users.\nIndex: ");
+ ccLang.get().addDefault("SHOP.TRADE_LIMIT_BUY", "§aPurchase limit: {num}left");
+ ccLang.get().addDefault("SHOP.TRADE_LIMIT_SELL", "§aSales limit: {num}left");
+ ccLang.get().addDefault("SHOP.TRADE_LIMIT_TIMER", "§aNext reset: {time}");
+ ccLang.get().addDefault("SHOP.CLICK_TO_ADD", "§eClick: Add");
+
+ ccLang.get().addDefault("SHOP_SETTING_TITLE", "§3Shop Settings");
+ ccLang.get().addDefault("SHOP_SETTING.LOG_TOGGLE_LORE", "§eRMB: Log Viewer");
+ ccLang.get().addDefault("SHOP_SETTING.LOG_PRINT_CONSOLE", "§fPrint log to console");
+ ccLang.get().addDefault("SHOP_SETTING.LOG_PRINT_ADMIN", "§fPrint log to admin");
+ ccLang.get().addDefault("SHOP_SETTING.MAX_PAGE", "§fMax page");
+ ccLang.get().addDefault("SHOP_SETTING.MAX_PAGE_LORE", "§fSets the maximum page for the shop.");
+ ccLang.get().addDefault("SHOP_SETTING.BACKGROUND", "§fBackground color");
+ ccLang.get().addDefault("SHOP_SETTING.BACKGROUND_LORE", "§eClick: Change color");
+ ccLang.get().addDefault("SHOP_SETTING.L_R_SHIFT", "§eLMB: -1 RMB: +1 Shift: x5");
+ ccLang.get().addDefault("SHOP_SETTING.FLAG", "§fFlag");
+ ccLang.get().addDefault("SHOP_SETTING.SHOP_SETTINGS_LORE", "§eRMB: Shop Settings");
+ ccLang.get().addDefault("SHOP_SETTING.SIGN_SHOP_LORE", "§fOnly accessible via sign.");
+ ccLang.get().addDefault("SHOP_SETTING.LOCAL_SHOP_LORE", "§fMust visit actual store locations.");
+ ccLang.get().addDefault("SHOP_SETTING.DELIVERY_CHARGE_LORE", "§fYou can pay for delivery without \n§fhaving to go to the shop location to transact.");
+ ccLang.get().addDefault("SHOP_SETTING.SELECTED", "§2Selected");
+ ccLang.get().addDefault("SHOP_SETTING.CURRENCY", "§fCurrency Type: ");
+ ccLang.get().addDefault("SHOP_SETTING.VAULT_LORE", "§fThis is the default.");
+ ccLang.get().addDefault("SHOP_SETTING.EXP_LORE", "§fTrade with the player's experience points.");
+ ccLang.get().addDefault("SHOP_SETTING.JOB_POINT_LORE", "§fTrade with job points. \n§fRequires 'Jobs Reborn' plugin");
+ ccLang.get().addDefault("SHOP_SETTING.PLAYER_POINT_LORE", "§fTrade with player points. \n§fRequires 'Player point' plugin");
+ ccLang.get().addDefault("SHOP_SETTING.SHOW_VALUE_CHANGE_LORE", "§fShows the amount of change in price.");
+ ccLang.get().addDefault("SHOP_SETTING.HIDE_STOCK", "§fHide stock.");
+ ccLang.get().addDefault("SHOP_SETTING.HIDE_PRICING_TYPE", "§fHide price type.");
+ ccLang.get().addDefault("SHOP_SETTING.HIDE_SHOP_BALANCE", "§fHide shop account balance.");
+ ccLang.get().addDefault("SHOP_SETTING.SHOW_MAX_STOCK", "§fShow max stock.");
+ ccLang.get().addDefault("SHOP_SETTING.HIDDEN_IN_COMMAND", "§fDon't show this store\n§fin command autocomplete.");
+ ccLang.get().addDefault("SHOP_SETTING.INTEGER_ONLY", "§fThe purchase price will be rounded up.\n§fThe sale price will be rounded down.");
+ ccLang.get().addDefault("SHOP_SETTING.PERMISSION", "§fPermission");
+ ccLang.get().addDefault("SHOP_SETTING.STATE", "§fState");
+ ccLang.get().addDefault("SHOP_SETTING.STATE_ENABLE", "§aEnable");
+ ccLang.get().addDefault("SHOP_SETTING.STATE_DISABLE", "§cDisable");
+ ccLang.get().addDefault("SHOP_SETTING.ROTATION_EDITOR", "§fRotation: ");
+ ccLang.get().addDefault("SHOP_SETTING.ROTATION_EDITOR_LORE", "§eClick: Rotation editor");
+ ccLang.get().addDefault("SHOP_SETTING.COMMAND_TOGGLE", "§fCommand");
+ ccLang.get().addDefault("SHOP_SETTING.COMMAND_TOGGLE_LORE", "§fExecutes server commands\n§fwhen a store transaction occurs.");
+ ccLang.get().addDefault("SHOP_SETTING.COMMAND_SELL", "§fSell Command");
+ ccLang.get().addDefault("SHOP_SETTING.COMMAND_BUY", "§fBuy Command");
+ ccLang.get().addDefault("SHOP_SETTING.COMMAND_LORE1", "§eLMB: Set");
+ ccLang.get().addDefault("SHOP_SETTING.COMMAND_LORE3", "§eShift RMB: Delete last item");
+ ccLang.get().addDefault("SHOP_SETTING.TRADE_UI", "§fEdit Trade UI");
+ ccLang.get().addDefault("SHOP_SETTING.TRADE_UI_LORE_2", "§eLMB: Edit\n§eRMB: Reset");
+
+ ccLang.get().addDefault("ROTATION_EDITOR_TITLE", "§3Rotation Editor");
+ ccLang.get().addDefault("ROTATION_EDITOR.ENABLED", "§aEnabled");
+ ccLang.get().addDefault("ROTATION_EDITOR.DISABLED", "§cDisabled");
+ ccLang.get().addDefault("ROTATION_EDITOR.CLICK_TO_ENABLE", "§eLMB: Enable");
+ ccLang.get().addDefault("ROTATION_EDITOR.CLICK_TO_DISABLE", "§eLMB: Disable");
+ ccLang.get().addDefault("ROTATION_EDITOR.CURRENT_TIME", "§fCurrent time: ");
+ ccLang.get().addDefault("ROTATION_EDITOR.CURRENTLY_IN_USE", "§a[Currently in use]");
+ ccLang.get().addDefault("ROTATION_EDITOR.NEXT_ROTATION", "§fNext rotation: ");
+ ccLang.get().addDefault("ROTATION_EDITOR.PERIOD", "§fPeriod");
+ ccLang.get().addDefault("ROTATION_EDITOR.PERIOD_LORE_V2", "§eLMB: -1h, RMB: +1h, Shift: x10");
+ ccLang.get().addDefault("ROTATION_EDITOR.TIMER", "§fTimer adjustment");
+ ccLang.get().addDefault("ROTATION_EDITOR.TIMER_LORE_V2", "§eLMB: -10m, RMB: +10m, Shift: x6");
+ ccLang.get().addDefault("ROTATION_EDITOR.HOUR", "§f{0}hours");
+ ccLang.get().addDefault("ROTATION_EDITOR.UNSAVED_CHANGES", "§c§oUnsaved changes");
+ ccLang.get().addDefault("ROTATION_EDITOR.APPLY_CHANGES", "§fApply changes");
+ ccLang.get().addDefault("ROTATION_EDITOR.APPLY_CHANGES_LORE", "§eLMB: Save changes\n§eRMB: Reset Changes");
+ ccLang.get().addDefault("ROTATION_EDITOR.APPLY_ROTATION", "§eLMB: Apply now");
+ ccLang.get().addDefault("ROTATION_EDITOR.OPEN", "§eLMB: Open");
+ ccLang.get().addDefault("ROTATION_EDITOR.CREATE", "§eLMB: Create empty");
+ ccLang.get().addDefault("ROTATION_EDITOR.COPY_AS_NEW", "§eRMB: Copy as new");
+ ccLang.get().addDefault("ROTATION_EDITOR.DELETE", "§eShift RMB: §cDelete");
+ ccLang.get().addDefault("ROTATION_EDITOR.REAPPLY", "§eShift LMB: Reapply");
+ ccLang.get().addDefault("ROTATION_EDITOR.MOVE", "§eRMB: Move");
+
+ ccLang.get().addDefault("ITEM_SETTING_TITLE", "§3Item Settings");
+ ccLang.get().addDefault("ITEM_SETTING.VALUE_BUY", "§fPurchase value: ");
+ ccLang.get().addDefault("ITEM_SETTING.VALUE_SELL", "§fSales value: ");
+ ccLang.get().addDefault("ITEM_SETTING.PRICE", "§fBuy: ");
+ ccLang.get().addDefault("ITEM_SETTING.SELL_PRICE", "§fSell: ");
+ ccLang.get().addDefault("ITEM_SETTING.PRICE_MIN", "§fMinimum price: ");
+ ccLang.get().addDefault("ITEM_SETTING.PRICE_MAX", "§fMaximum price: ");
+ ccLang.get().addDefault("ITEM_SETTING.MEDIAN", "§fMedian: ");
+ ccLang.get().addDefault("ITEM_SETTING.STOCK", "§fStock: ");
+ ccLang.get().addDefault("ITEM_SETTING.MAX_STOCK", "§fMax stock: ");
+ ccLang.get().addDefault("ITEM_SETTING.MAX_STOCK_LORE", "§fIf the stock exceeds this,\n§fthe shop will refuse to purchase.");
+ ccLang.get().addDefault("ITEM_SETTING.INF_STOCK", "Infinite stock");
+ ccLang.get().addDefault("ITEM_SETTING.STATIC_PRICE", "Fixed price");
+ ccLang.get().addDefault("ITEM_SETTING.UNLIMITED", "Unlimited");
+ ccLang.get().addDefault("ITEM_SETTING.MEDIAN_HELP", "§fThe smaller the median,\n§fthe steeper the price change.");
+ ccLang.get().addDefault("ITEM_SETTING.TAX_IGNORED", "Sales tax settings are ignored.");
+ ccLang.get().addDefault("ITEM_SETTING.RECOMMEND", "§fApply recommended values");
+ ccLang.get().addDefault("ITEM_SETTING.DISCOUNT", "§fDiscount");
+ ccLang.get().addDefault("ITEM_SETTING.DISCOUNT_LORE", "§fDiscount rate: {num}%\n§eLMB: +10, RMB: -10");
+ ccLang.get().addDefault("ITEM_SETTING.DISCOUNT_LORE_2", "§fDiscount rate: {num}%\n§eLMB: -10, RMB: +10");
+ ccLang.get().addDefault("ITEM_SETTING.DONE", "§fDone");
+ ccLang.get().addDefault("ITEM_SETTING.DONE_LORE", "§fDone!");
+ ccLang.get().addDefault("ITEM_SETTING.ROUND_DOWN", "§fRound down");
+ ccLang.get().addDefault("ITEM_SETTING.SET_TO_MEDIAN", "§fSet to median");
+ ccLang.get().addDefault("ITEM_SETTING.SET_TO_STOCK", "§fSet to stock");
+ ccLang.get().addDefault("ITEM_SETTING.SET_TO_VALUE", "§fSet to value");
+ ccLang.get().addDefault("ITEM_SETTING.CLOSE", "§fClose");
+ ccLang.get().addDefault("ITEM_SETTING.CLOSE_LORE", "§f§nClick: Close");
+ ccLang.get().addDefault("ITEM_SETTING.REMOVE", "§cRemove");
+ ccLang.get().addDefault("ITEM_SETTING.REMOVE_LORE", "§fRemove this item from the shop.");
+ ccLang.get().addDefault("ITEM_SETTING.BUY", "§3§lBuy: {num}");
+ ccLang.get().addDefault("ITEM_SETTING.SELL", "§3§lSell: {num}");
+ ccLang.get().addDefault("ITEM_SETTING.TRADE_LIMIT_SELL", "§fSales limit per player");
+ ccLang.get().addDefault("ITEM_SETTING.TRADE_LIMIT_SELL_LORE", "§f{num}\n§eLMB: -1, RMB: +1, Shift = x10");
+ ccLang.get().addDefault("ITEM_SETTING.TRADE_LIMIT_BUY", "§fPurchase limit per player");
+ ccLang.get().addDefault("ITEM_SETTING.TRADE_LIMIT_BUY_LORE", "§f{num}\n§eLMB: -1, RMB: +1, Shift = x10");
+ ccLang.get().addDefault("ITEM_SETTING.TRADE_LIMIT_INTERVAL", "§fTrading volume limit reset cycle");
+ ccLang.get().addDefault("ITEM_SETTING.TRADE_LIMIT_INTERVAL_LORE", "§fInterval: {interval}\n§fNext reset: {time}\n§eLMB: -1h, RMB: +1h, Shift = x12");
+ ccLang.get().addDefault("ITEM_SETTING.TRADE_LIMIT_TIMER", "§fAdjust Timer");
+ ccLang.get().addDefault("ITEM_SETTING.TRADE_LIMIT_TIMER_LORE", "§f{num}\n§fNext reset: {time}\n§eLMB: -1h, RMB: +1h, Shift = x12");
+
+ ccLang.get().addDefault("TRADE_TITLE", "§3Trade");
+ ccLang.get().addDefault("TRADE.TOGGLE_SELLABLE", "§eClick: Sale only toggle");
+ ccLang.get().addDefault("TRADE.TOGGLE_BUYABLE", "§eClick: Purchase Only Toggle");
+ ccLang.get().addDefault("TRADE.BUY_ONLY_LORE", "§fThis item cannot be sold.");
+ ccLang.get().addDefault("TRADE.SELL_ONLY_LORE", "§fThis item cannot be purchased.");
+ ccLang.get().addDefault("TRADE.BALANCE", "§3My balance");
+ ccLang.get().addDefault("TRADE.PRICE", "§fBuy: {num}");
+ ccLang.get().addDefault("TRADE.SELL_PRICE", "§fSell: {num}");
+ ccLang.get().addDefault("TRADE.PRICE_DISCOUNTED", "§fBuy: §8§m{num}§r §a{num2}");
+ ccLang.get().addDefault("TRADE.SELL_PRICE_DISCOUNTED", "§fSell: §8§m{num}§r §c{num2}");
+ ccLang.get().addDefault("TRADE.PRICE_EXP", "§fBuy: {num}EXP");
+ ccLang.get().addDefault("TRADE.SELL_PRICE_EXP", "§fSell: {num}EXP");
+ ccLang.get().addDefault("TRADE.PRICE_DISCOUNTED_EXP", "§fBuy: §8§m{num}EXP§r §a{num2}EXP");
+ ccLang.get().addDefault("TRADE.SELL_PRICE_DISCOUNTED_EXP", "§fSell: §8§m{num}EXP§r §c{num2}EXP");
+ ccLang.get().addDefault("TRADE.PRICE_PP", "§fBuy: {num}PP");
+ ccLang.get().addDefault("TRADE.SELL_PRICE_PP", "§fSell: {num}PP");
+ ccLang.get().addDefault("TRADE.PRICE_DISCOUNTED_PP", "§fBuy: §8§m{num}PP§r §a{num2}PP");
+ ccLang.get().addDefault("TRADE.SELL_PRICE_DISCOUNTED_PP", "§fSell: §8§m{num}PP§r §c{num2}PP");
+ ccLang.get().addDefault("TRADE.PRICE_JP", "§fBuy: {num}JP");
+ ccLang.get().addDefault("TRADE.SELL_PRICE_JP", "§fSell: {num}JP");
+ ccLang.get().addDefault("TRADE.PRICE_DISCOUNTED_JP", "§fBuy: §8§m{num}JP§r §a{num2}JP");
+ ccLang.get().addDefault("TRADE.SELL_PRICE_DISCOUNTED_JP", "§fSell: §8§m{num}JP§r §c{num2}JP");
+ ccLang.get().addDefault("TRADE.BUY", "§cBuy");
+ ccLang.get().addDefault("TRADE.SELL", "§2Sell");
+ ccLang.get().addDefault("TRADE.STOCK", "§8Stock: ");
+ ccLang.get().addDefault("TRADE.STACKS", "§8{num} Stacks");
+ ccLang.get().addDefault("TRADE.INF_STOCK", "§8Infinite");
+ ccLang.get().addDefault("TRADE.SHOP_BAL_INF", "§fUnlimited");
+ ccLang.get().addDefault("TRADE.SHOP_BAL", "§3Shop account balance \n§f{num}");
+ ccLang.get().addDefault("TRADE.CLICK_TO_BUY", "§c§nClick: Buy {amount}");
+ ccLang.get().addDefault("TRADE.CLICK_TO_SELL", "§2§nClick: Sell {amount}");
+ ccLang.get().addDefault("TRADE.PURCHASE_LIMIT_PER_PLAYER", "§aPurchase limit: {num}left\n§aNext reset: {time}");
+ ccLang.get().addDefault("TRADE.SALES_LIMIT_PER_PLAYER", "§aSales limit: {num}left\n§aNext reset: {time}");
+ ccLang.get().addDefault("TRADE.QUANTITY_LORE", "§eShift RMB: Edit Quantity");
+ ccLang.get().addDefault("TRADE.WAIT_FOR_INPUT", "Enter the quantity that will be displayed in the Trade UI.\nExample: 1,2,4,8,16,32,64");
+
+ ccLang.get().addDefault("PAGE_EDITOR_TITLE", "§3Page Editor");
+ ccLang.get().addDefault("PAGE_EDITOR.PREV", "§f<<");
+ ccLang.get().addDefault("PAGE_EDITOR.NEXT", "§f>>");
+ ccLang.get().addDefault("PAGE_EDITOR.PAGE_SWAP_SUCCESS", "§fThe page has been replaced.");
+ ccLang.get().addDefault("PAGE_EDITOR.PAGE_SWAP_FAIL", "§fPage replacement failed.");
+ ccLang.get().addDefault("PAGE_EDITOR.PAGE_SWAP_SELECTED", "§fPage has been selected. Right-click on the other pages to be replaced.");
+ ccLang.get().addDefault("PAGE_EDITOR.PAGE_LORE_PREMIUM", "§eLMB: Open page\n§eRMB: Swap\n§eShift LMB: Insert\n§eShift RMB: Delete");
+ ccLang.get().addDefault("PAGE_EDITOR.PRICE", "§fBuy: {num}");
+ ccLang.get().addDefault("PAGE_EDITOR.SELL_PRICE", "§fSell: {num}");
+ ccLang.get().addDefault("PAGE_EDITOR.STOCK", "§8Stock: {num}");
+ ccLang.get().addDefault("PAGE_EDITOR.STACKS", "§8{num} Stakcs");
+ ccLang.get().addDefault("PAGE_EDITOR.STATIC_PRICE", "§8[Fixed price]");
+ ccLang.get().addDefault("PAGE_EDITOR.EMPTY", "§8(empty)");
+ ccLang.get().addDefault("PAGE_EDITOR.EMPTY_SLOT_LORE", "§eLMB,RMB: Push\n§e+Shift: Pull");
+
+ ccLang.get().addDefault("LOG_VIEWER_TITLE", "§3Log Viewer");
+ ccLang.get().addDefault("LOG_VIEWER.DATE", "§fDate: ");
+ ccLang.get().addDefault("LOG_VIEWER.TIME", "§fTime: ");
+ ccLang.get().addDefault("LOG_VIEWER.CURRENCY", "§fCurrency: ");
+ ccLang.get().addDefault("LOG_VIEWER.PRICE", "§fPrice: ");
+ ccLang.get().addDefault("LOG_VIEWER.EXPAND", "§fExpand");
+ ccLang.get().addDefault("LOG_VIEWER.COLLAPSE", "§fCollapse");
+ ccLang.get().addDefault("LOG_VIEWER.PAGE_TITLE", "§f{curPage}/{maxPage} Page");
+ ccLang.get().addDefault("LOG_VIEWER.PAGE_LORE", "§eLMB: Prev\n§eRMB: Next");
+ ccLang.get().addDefault("LOG_VIEWER.FILE_LORE", "§eLMB: Open\n§eShift RMB: §cDelete");
+
+ ccLang.get().addDefault("LOG.LOG", "§fLog");
+ ccLang.get().addDefault("LOG.CLEAR", "§fLog deleted");
+ ccLang.get().addDefault("LOG.SAVE", "§fLog saved");
+ ccLang.get().addDefault("LOG.DELETE", "§4Delete log");
+ ccLang.get().addDefault("LOG.SELL", "§f{player} sells {amount} {item} to {shop}");
+ ccLang.get().addDefault("LOG.BUY", "§f{player} buys {amount} {item} from {shop}");
+
+ ccLang.get().addDefault("STOCK_SIMULATOR_TITLE", "§3Stock Simulator");
+ ccLang.get().addDefault("STOCK_SIMULATOR.CHANGE_SAMPLE_LORE", "§eLMB, RMB: Change Item");
+ ccLang.get().addDefault("STOCK_SIMULATOR.SIMULATOR_BUTTON_LORE", "§eRMB: Simulator");
+ ccLang.get().addDefault("STOCK_SIMULATOR.RUN_TITLE", "§fRun");
+ ccLang.get().addDefault("STOCK_SIMULATOR.RUN_LORE", "§eLMB: Run simulation\n§eRMB: Apply the settings to the shop\n§fItems are not affected.");
+ ccLang.get().addDefault("STOCK_SIMULATOR.REAL_TIME", "§a(real time)");
+ ccLang.get().addDefault("STOCK_SIMULATOR.AFTER_S", "§aAfter {0} seconds");
+ ccLang.get().addDefault("STOCK_SIMULATOR.AFTER_M", "§aAfter {0} minutes");
+ ccLang.get().addDefault("STOCK_SIMULATOR.AFTER_H", "§aAfter {0} hours");
+ ccLang.get().addDefault("STOCK_SIMULATOR.AFTER_D", "§aAfter {0} days");
+ ccLang.get().addDefault("STOCK_SIMULATOR.L_R_SHIFT", "§eLMB: -1 RMB: +1 Shift: x5");
+ ccLang.get().addDefault("STOCK_SIMULATOR.PRICE", "§fPurchase price: {num}");
+ ccLang.get().addDefault("STOCK_SIMULATOR.MEDIAN", "§fMedian: {num}");
+ ccLang.get().addDefault("STOCK_SIMULATOR.STOCK", "§fStock: {num}");
+
+ ccLang.get().addDefault("PALETTE_TITLE", "§3Select item to sell");
+ ccLang.get().addDefault("PALETTE_TITLE2", "§3Select item");
+ ccLang.get().addDefault("PALETTE.LORE_PREMIUM", "§eLMB: Add\n§eShift LMB: Add after setting\n§eRMB: Add as decoration\n§eShift RMB: Search '{item}'");
+ ccLang.get().addDefault("PALETTE.LORE2", "§eLMB: Select\n§eShift RMB: Search '{item}'");
+ ccLang.get().addDefault("PALETTE.SEARCH", "§fSearch");
+ ccLang.get().addDefault("PALETTE.ADD_ALL", "§fAdd all");
+ ccLang.get().addDefault("PALETTE.ADD_ALL_LORE", "§eLMB: Add all\n§eShift LMB: Add all and apply recommended values");
+ ccLang.get().addDefault("PALETTE.PAGE_TITLE", "§f{curPage}/{maxPage} page");
+ ccLang.get().addDefault("PALETTE.PAGE_LORE", "§f§nLMB: Prev\n§f§nRMB: Next");
+ ccLang.get().addDefault("PALETTE.FILTER_APPLIED", "§fFilter Applied : ");
+ ccLang.get().addDefault("PALETTE.FILTER_LORE", "§eLMB: Search\n§eRMB: Clear filter\n\n§7Example for finding \"BLUE_WOOL\":\n§7 b w\n§7 wool\n§7 blue wool");
+
+ ccLang.get().addDefault("QUICK_SELL_TITLE", "§3Quick Sell");
+ ccLang.get().addDefault("QUICK_SELL.GUIDE_TITLE", "§3§lQuick Sell Guide");
+ ccLang.get().addDefault("QUICK_SELL.GUIDE_LORE", "§aLeft-click the item you want to sell.\n§aShift left click to sell all items of the same type.\n§aRight-click to go to the item shop.");
+
+ ccLang.get().addDefault("ARROW.UP", "§a⬆");
+ ccLang.get().addDefault("ARROW.DOWN", "§c⬇");
+ ccLang.get().addDefault("ARROW.UP_2", "§c⬆");
+ ccLang.get().addDefault("ARROW.DOWN_2", "§a⬇");
+
+ ccLang.get().addDefault("TIME.OPEN", "Open");
+ ccLang.get().addDefault("TIME.CLOSE", "Close");
+ ccLang.get().addDefault("TIME.OPEN_LORE", "§fSet opening time");
+ ccLang.get().addDefault("TIME.CLOSE_LORE", "§fSet closing time");
+ ccLang.get().addDefault("TIME.SHOPHOURS", "§fOpening hours");
+ ccLang.get().addDefault("TIME.OPEN24", "Open 24 hours");
+ ccLang.get().addDefault("TIME.SHOP_IS_CLOSED", "§fThe shop is closed. It opens at {time} o'clock. {curTime} o'clock now.");
+ ccLang.get().addDefault("TIME.SET_SHOPHOURS", "Set business hours");
+ ccLang.get().addDefault("TIME.CUR", "§fCurrent time: {time}h");
+
+ ccLang.get().addDefault("STOCK_STABILIZING.SS", "§fStock stabilization");
+ ccLang.get().addDefault("STOCK_STABILIZING.L_R_SHIFT", "§eLMB: -0.1 RMB: +0.1 Shift: x5");
+ ccLang.get().addDefault("STOCK_STABILIZING.STRENGTH_LORE_A", "§fn% of median");
+ ccLang.get().addDefault("STOCK_STABILIZING.STRENGTH_LORE_B", "§fn% of the gap with median");
+
+ ccLang.get().addDefault("FLUCTUATION.FLUCTUATION", "§fStock fluctuation");
+ ccLang.get().addDefault("FLUCTUATION.INTERVAL", "§fInterval");
+ ccLang.get().addDefault("FLUCTUATION.INTERVAL_LORE", "§f1h = 1000ticks = real time 50s");
+ ccLang.get().addDefault("FLUCTUATION.STRENGTH", "§fStrength");
+ ccLang.get().addDefault("FLUCTUATION.STRENGTH_LORE", "§fn% of median");
+
+ ccLang.get().addDefault("TAX.SALES_TAX", "§fSales tax");
+ ccLang.get().addDefault("TAX.USE_GLOBAL", "Use global settings ({tax}%)");
+ ccLang.get().addDefault("TAX.USE_LOCAL", "Set separately");
+
+ ccLang.get().addDefault("MESSAGE.SEARCH_ITEM", "§fEnter the name of the item you are looking for.");
+ ccLang.get().addDefault("MESSAGE.SEARCH_CANCELED", "§fSearch Canceled.");
+ ccLang.get().addDefault("MESSAGE.INPUT_CANCELED", "§fInput canceled.");
+ ccLang.get().addDefault("MESSAGE.DELETE_CONFIRM", "§fAre you sure you want to delete the page? Enter 'delete' to delete.");
+ ccLang.get().addDefault("MESSAGE.CANT_DELETE_LAST_PAGE", "§fThe last remaining page cannot be deleted.");
+ ccLang.get().addDefault("MESSAGE.SHOP_BAL_LOW", "§fThe shop doesn't have enough money.");
+ ccLang.get().addDefault("MESSAGE.SHOP_CREATED", "§fShop created!");
+ ccLang.get().addDefault("MESSAGE.SHOP_DELETED", "§fShop deleted!");
+ ccLang.get().addDefault("MESSAGE.OUT_OF_STOCK", "§fOut of stock!");
+ ccLang.get().addDefault("MESSAGE.BUY_SUCCESS", "§fBought {item} x{amount} for {price}. Balance: {bal}");
+ ccLang.get().addDefault("MESSAGE.SELL_SUCCESS", "§fSold {item} x{amount} for {price}. Balance: {bal}");
+ ccLang.get().addDefault("MESSAGE.BUY_SUCCESS_EXP", "§fBought {item} x{amount} for {price}Exp Points. Balance: {bal}");
+ ccLang.get().addDefault("MESSAGE.SELL_SUCCESS_EXP", "§fSold {item} x{amount} for {price}Exp Points. Balance: {bal}");
+ ccLang.get().addDefault("MESSAGE.BUY_SUCCESS_JP", "§fBought {item} x{amount} for {price}points. Remaining points: {bal}");
+ ccLang.get().addDefault("MESSAGE.SELL_SUCCESS_JP", "§fSold {item} x{amount} for {price}points. Remaining points: {bal}");
+ ccLang.get().addDefault("MESSAGE.BUY_SUCCESS_PP", "§fBought {item} x{amount} for {price}points. Remaining points: {bal}");
+ ccLang.get().addDefault("MESSAGE.SELL_SUCCESS_PP", "§fSold {item} x{amount} for {price}points. Remaining points: {bal}");
+ ccLang.get().addDefault("MESSAGE.QSELL_NA", "§fThere is no shop that handles this item.");
+ ccLang.get().addDefault("MESSAGE.DELIVERY_CHARGE", "§fDelivery fee: {fee}");
+ ccLang.get().addDefault("MESSAGE.DELIVERY_CHARGE_NA", "§fIt cannot be delivered to another world.");
+ ccLang.get().addDefault("MESSAGE.NOT_ENOUGH_MONEY", "§fNot enough money. balance: {bal}");
+ ccLang.get().addDefault("MESSAGE.NOT_ENOUGH_POINT", "§fNot enough points. balance: {bal}");
+ ccLang.get().addDefault("MESSAGE.NOT_ENOUGH_PLAYER_POINT", "§fNot enough player points. balance: {bal}");
+ ccLang.get().addDefault("MESSAGE.NOT_ENOUGH_EXP_POINT", "§fNot enough Exp points. balance: {bal}");
+ ccLang.get().addDefault("MESSAGE.NO_ITEM_TO_SELL", "§fThere are no items for sale.");
+ ccLang.get().addDefault("MESSAGE.NO_ITEM_TO_SELL_2", "§fThere are no items available for sale.");
+ ccLang.get().addDefault("MESSAGE.INVENTORY_FULL", "§4There are no empty spaces in your inventory!");
+ ccLang.get().addDefault("MESSAGE.IRREVERSIBLE", "§fThis action is irreversible!");
+ ccLang.get().addDefault("MESSAGE.ITEM_ADDED", "Item added!");
+ ccLang.get().addDefault("MESSAGE.ITEM_UPDATED", "Item updated!");
+ ccLang.get().addDefault("MESSAGE.ITEM_DELETED", "Item deleted!");
+ ccLang.get().addDefault("MESSAGE.CHANGES_APPLIED", "Changes applied. New values:");
+ ccLang.get().addDefault("MESSAGE.CHANGES_APPLIED_2", "Changes applied");
+ ccLang.get().addDefault("MESSAGE.RECOMMEND_APPLIED", "Recommended value applied. It is based on {playerNum}players. You can change this value in the config file.");
+ ccLang.get().addDefault("MESSAGE.TRANSFER_SUCCESS", "Remittance completed");
+ ccLang.get().addDefault("MESSAGE.PURCHASE_REJECTED", "There are too many of these items in the shop. Can't sell it now.");
+ ccLang.get().addDefault("MESSAGE.CLICK_YOUR_ITEM_START_PAGE", "Click on an item in your inventory to find the shop with the best deal.\nLMB: Buy RMB: Sell");
+ ccLang.get().addDefault("MESSAGE.MOVE_TO_BEST_SHOP_BUY", "Moved to the shop where you can buy {item} at the lowest price.");
+ ccLang.get().addDefault("MESSAGE.MOVE_TO_BEST_SHOP_SELL", "Moved to the shop where you can sell {item} at the highest price.");
+ ccLang.get().addDefault("MESSAGE.SHOP_IS_CLOSED_BY_ADMIN", "This shop is currently closed by the server administrator.");
+ ccLang.get().addDefault("MESSAGE.SHOP_DISABLED", "This shop is currently disabled. Non-admin users cannot use it. You can enable it in the shop settings.");
+ ccLang.get().addDefault("MESSAGE.ROTATION_SHARED_DATA_MISSING", "§e[ ! ]§fThe required data could not be found in '{0}/SharedData.yml' for {1} items. These items have been added as decoration.");
+ ccLang.get().addDefault("MESSAGE.ENTER_COMMAND", "Enter the command without '/'.");
+ ccLang.get().addDefault("MESSAGE.ENTER_COMMAND_2", "Enter in the form of 'index/command'.");
+ ccLang.get().addDefault("MESSAGE.SELL_COMMAND_CUR", "Sell commands currently in effect:");
+ ccLang.get().addDefault("MESSAGE.BUY_COMMAND_CUR", "Buy commands currently in effect:");
+ ccLang.get().addDefault("MESSAGE.Q_SEARCH_FAIL_CURRENCY", "This item is being traded in several currencies.");
+
+ ccLang.get().addDefault("HELP.TITLE", "§fHelp: {command} --------------------");
+ ccLang.get().addDefault("HELP.SHOP", "Open shop");
+ ccLang.get().addDefault("HELP.CMD", "Toggle display of command help.");
+ ccLang.get().addDefault("HELP.CREATE_SHOP", "Create a new shop.");
+ ccLang.get().addDefault("HELP.CREATE_SHOP_2", "Permissions (can be changed later)\n true: dshop.user.shop.shopName\n false: Anyone can access (default)\n Arbitrary value: Requires permission");
+ ccLang.get().addDefault("HELP.DELETE_SHOP", "Remove existing stores.");
+ ccLang.get().addDefault("HELP.SHOP_ADD_HAND", "Adds the item in hand to the shop.");
+ ccLang.get().addDefault("HELP.SHOP_ADD_ITEM", "Add item to the shop.");
+ ccLang.get().addDefault("HELP.SHOP_EDIT", "Edit item in the store.");
+ ccLang.get().addDefault("HELP.PRICE", "§7Price calculation formula: median*value/stock");
+ ccLang.get().addDefault("HELP.INF_STATIC", "§7median<0 == Fixed price stock<0 == Infinite stock");
+ ccLang.get().addDefault("HELP.EDIT_ALL", "Modify all items in the shop at once.");
+ ccLang.get().addDefault("HELP.RELOAD", "Reload the plugin.");
+ ccLang.get().addDefault("HELP.RELOADED", "Plugin reloaded");
+ ccLang.get().addDefault("HELP.USAGE", "Usage");
+ ccLang.get().addDefault("HELP.ITEM_ALREADY_EXIST", "§7§o{item} is already on sale.\n {info}\n Entering a command modifies the value.");
+ ccLang.get().addDefault("HELP.ITEM_INFO", "§7§o{item}'s current settings:\n {info}");
+ ccLang.get().addDefault("HELP.REMOVE_ITEM", "§fEntering an argument of 0 will §4remove§f this item from the store.");
+ ccLang.get().addDefault("HELP.QSELL", "§fSell items quickly.");
+ ccLang.get().addDefault("HELP.DELETE_OLD_USER", "Delete long-term inactive user data");
+ ccLang.get().addDefault("HELP.ACCOUNT", "Sets the account balance of the shop. -1 = unlimited");
+ ccLang.get().addDefault("HELP.SET_TO_REC_ALL", "§cResets§e all item settings in the store to the recommended values.");
+ ccLang.get().addDefault("HELP.SHOP_ENABLE", "Enables or disables the shop.");
+
+ ccLang.get().addDefault("ERR.NO_USER_ID", "§6Player uuid not found. Shop unavailable.");
+ ccLang.get().addDefault("ERR.ITEM_NOT_EXIST", "The item does not exist in the store.");
+ ccLang.get().addDefault("ERR.ITEM_FORBIDDEN", "This is a prohibited item.");
+ ccLang.get().addDefault("ERR.NO_PERMISSION", "§eYou do not have permission.");
+ ccLang.get().addDefault("ERR.WRONG_USAGE", "Incorrect command usage.");
+ ccLang.get().addDefault("ERR.NO_EMPTY_SLOT", "There is no empty space in the shop.");
+ ccLang.get().addDefault("ERR.WRONG_DATATYPE", "Invalid argument type");
+ ccLang.get().addDefault("ERR.VALUE_ZERO", "The argument value must be greater than 0.");
+ ccLang.get().addDefault("ERR.WRONG_ITEM_NAME", "Invalid item name.");
+ ccLang.get().addDefault("ERR.HAND_EMPTY", "You must hold the item in your hand.");
+ ccLang.get().addDefault("ERR.HAND_EMPTY2", "§c§oYou must have the item in your hand!");
+ ccLang.get().addDefault("ERR.SHOP_NOT_FOUND", "§fThe shop could not be found.");
+ ccLang.get().addDefault("ERR.SHOP_EXIST", "A store with that name already exists.");
+ ccLang.get().addDefault("ERR.SHOP_NOT_EXIST", "No shop with that name.");
+ ccLang.get().addDefault("ERR.SIGN_SHOP_REMOTE_ACCESS", "The shop is only accessible via sign.");
+ ccLang.get().addDefault("ERR.LOCAL_SHOP_REMOTE_ACCESS", "The shop can only be used by visiting it in person.");
+ ccLang.get().addDefault("ERR.MAX_LOWER_THAN_MIN", "The maximum price must be greater than the minimum price.");
+ ccLang.get().addDefault("ERR.DEFAULT_VALUE_OUT_OF_RANGE", "The base price must be between the minimum price and the maximum price.");
+ ccLang.get().addDefault("ERR.NO_RECOMMEND_DATA", "There is no information for this item in the Worth.yml file.");
+ ccLang.get().addDefault("ERR.JOBS_REBORN_NOT_FOUND", "Could not find 'Jobs reborn'.");
+ ccLang.get().addDefault("ERR.PLAYER_POINTS_NOT_FOUND", "Could not find 'Player points'.");
+ ccLang.get().addDefault("ERR.SHOP_HAS_INF_BAL", "{shop} is an infinite account store.");
+ ccLang.get().addDefault("ERR.SHOP_DIFF_CURRENCY", "The two stores use different currencies.");
+ ccLang.get().addDefault("ERR.PLAYER_NOT_EXIST", "The player could not be found.");
+ ccLang.get().addDefault("ERR.SHOP_LINK_FAIL", "Either store must be a real account.");
+ ccLang.get().addDefault("ERR.SHOP_LINK_TARGET_ERR", "The target store must have a real account.");
+ ccLang.get().addDefault("ERR.NESTED_STRUCTURE", "It is forbidden to build hierarchies. (ex. aa-bb, bb-cc)");
+ ccLang.get().addDefault("ERR.CREATIVE", "§eYou cannot use this command in Creative mode. You do not have permission.");
+ ccLang.get().addDefault("ERR.FILE_CREATE_FAIL", "§eFile creation failed");
+ ccLang.get().addDefault("ERR.INVALID_TRANSACTION", "This transaction is no longer valid. If this problem recurs, contact your server administrator");
+ ccLang.get().addDefault("ERR.SIGN_WALL", "Sign must be placed on wall.");
+
+ ccLang.get().addDefault("ERR.SHOP_NULL", "§eShop name cannot be null.");
+ ccLang.get().addDefault("ERR.ITEMINFO_HAND_EMPTY", "You need to hold an item.");
+ ccLang.get().addDefault("HELP.ITEMINFO_USAGE", "§fHold an item in your hand to learn about it.");
+ ccLang.get().addDefault("HELP.ITEMINFO_REALNAME", "§7Real name: §3{item_realname}");
+ ccLang.get().addDefault("HELP.ITEMINFO_SIGN_NAME", "§7Sign name: §3{item_signname}");
+ ccLang.get().addDefault("ERR.SIGN_ITEM_INVALID", "Invalid item. Use /ds iteminfo to find the name of the item on the sign.");
+ ccLang.get().addDefault("ERR.SIGN_ITEM_NOT_FOR_SALE", "First you must add the item in the shop and then use it on the sign.");
+ ccLang.get().addDefault("MESSAGE.SIGN_SHOP_CREATED", "§aSign Shop created!");
+
+ ccLang.get().addDefault("ON", "ON");
+ ccLang.get().addDefault("OFF", "OFF");
+ ccLang.get().addDefault("SET", "SET");
+ ccLang.get().addDefault("UNSET", "UNSET");
+ ccLang.get().addDefault("NULL", "Null");
+ ccLang.get().addDefault("NULL(OPEN)", "None (open to all)");
+ ccLang.get().addDefault("CUR_STATE", "Current Status");
+ ccLang.get().addDefault("CLICK", "Click");
+ ccLang.get().addDefault("LMB", "LMB");
+ ccLang.get().addDefault("RMB", "RMB");
+ ccLang.get().addDefault("CLOSE", "§fClose");
+ ccLang.get().addDefault("CLOSE_LORE", "§f§nClick: Close");
+
+ ccLang.get().addDefault("EXP_POINTS", "Exp Points");
+ ccLang.get().addDefault("JOB_POINTS", "Job Points");
+ ccLang.get().addDefault("PLAYER_POINTS", "Player Points");
+
+ ccLang.get().options().copyDefaults(true);
+ ccLang.save();
+ }
+
public static final Pattern HEX_PATTERN = Pattern.compile("(#[A-Fa-f0-9]{6})");
public static String t(Player player, String key)
diff --git a/src/main/java/me/sat7/dynamicshop/utilities/LogUtil.java b/src/main/java/me/sat7/dynamicshop/utilities/LogUtil.java
index 557878e..d747d64 100644
--- a/src/main/java/me/sat7/dynamicshop/utilities/LogUtil.java
+++ b/src/main/java/me/sat7/dynamicshop/utilities/LogUtil.java
@@ -26,17 +26,17 @@ private LogUtil()
}
- // <로그파일 경로 + 이름, 로그데이타>
- public static final ConcurrentHashMap> log = new ConcurrentHashMap<>(); // 아직 파일에 저장되지 않은 로그들 // todo 서버가 꺼질때 저장해야함.
+ // <로그파일 경로 + 이름, 로그데이타> (<日誌檔案路徑 + 名稱, 日誌資料>)
+ public static final ConcurrentHashMap> log = new ConcurrentHashMap<>(); // 아직 파일에 저장되지 않은 로그들 // todo 서버가 꺼질때 저장해야함. (尚未儲存到檔案的日誌 // todo 伺服器關閉時需要儲存)
- // 거래 로그 기록
+ // 거래 로그 기록 (交易日誌紀錄)
public static void addLog(String shopName, String itemName, int amount, double value, String curr, String player)
{
if (ConfigUtil.GetSaveLogs())
{
CustomConfig data = ShopUtil.shopConfigFiles.get(shopName);
- if (data.get().contains("Options.log") && data.get().getBoolean("Options.log")) // 옛날엔 이렇게 저장했음.
+ if (data.get().contains("Options.log") && data.get().getBoolean("Options.log")) // 옛날엔 이렇게 저장했음. (過去是這樣儲存的)
{
data.get().set("Options.log.active", true);
}
diff --git a/src/main/java/me/sat7/dynamicshop/utilities/SoundUtil.java b/src/main/java/me/sat7/dynamicshop/utilities/SoundUtil.java
index 600d4f1..df7b91c 100644
--- a/src/main/java/me/sat7/dynamicshop/utilities/SoundUtil.java
+++ b/src/main/java/me/sat7/dynamicshop/utilities/SoundUtil.java
@@ -16,7 +16,7 @@ private SoundUtil()
}
- // 소리 재생
+ // 소리 재생 (播放音效)
public static void playerSoundEffect(Player player, String key)
{
try
diff --git a/src/main/java/me/sat7/dynamicshop/utilities/TabCompleteUtil.java b/src/main/java/me/sat7/dynamicshop/utilities/TabCompleteUtil.java
index ee05100..2c999ef 100644
--- a/src/main/java/me/sat7/dynamicshop/utilities/TabCompleteUtil.java
+++ b/src/main/java/me/sat7/dynamicshop/utilities/TabCompleteUtil.java
@@ -211,7 +211,7 @@ else if (cmd.getName().equalsIgnoreCase("shop") && args.length == 1)
{
int i = Integer.parseInt(s);
if (!data.get().contains(s + ".value"))
- continue; // 장식용임
+ continue; // 장식용임 (裝飾用)
temp.add(s + "/" + data.get().getString(s + ".mat"));
} catch (Exception ignored)
{
@@ -574,11 +574,14 @@ else if (args.length == 5)
} else if (args[0].equalsIgnoreCase("deleteOldUser"))
{
Help.showHelp("delete_old_user", (Player) sender, args);
+ } else {
+ Help.showHelp("main", (Player) sender, args);
}
return autoCompleteList;
}
- } catch (Exception e)
+ }
+ catch (Exception e)
{
return null;
}
diff --git a/src/main/java/me/sat7/dynamicshop/utilities/UserUtil.java b/src/main/java/me/sat7/dynamicshop/utilities/UserUtil.java
index 0d56567..44f0754 100644
--- a/src/main/java/me/sat7/dynamicshop/utilities/UserUtil.java
+++ b/src/main/java/me/sat7/dynamicshop/utilities/UserUtil.java
@@ -12,7 +12,7 @@
public final class UserUtil
{
- public static CustomConfig ccUser = new CustomConfig(); // 가급적 save 호출 피할 것. onDisable 에서 처리함.
+ public static CustomConfig ccUser = new CustomConfig(); // 가급적 save 호출 피할 것. onDisable 에서 처리함. (盡量避免呼叫save。在onDisable中處理)
public static final HashMap userTempData = new HashMap<>();
public static final HashMap userInteractItem = new HashMap<>();
@@ -36,7 +36,7 @@ private static void BackwardCompatibility()
ConfigurationSection cs = ccUser.get().getConfigurationSection(s);
if (cs != null)
{
- // 구버전에 있던 데이터를 삭제함.
+ // 구버전에 있던 데이터를 삭제함. (刪除舊版本中的資料)
cs.set("tmpString", null);
cs.set("interactItem", null);
}
@@ -104,9 +104,9 @@ public static void OnPluginDisable()
// ----------------------------------------------------------------------
- // 구매 & 판매 수량 제한
- // - 상점의 데이터는 [상점+idx] 로 관리.
- // - 유저의 데이터는 [상점+hash] 로 관리.
+ // 구매 & 판매 수량 제한 (購買 & 販賣 數量限制)
+ // - 상점의 데이터는 [상점+idx] 로 관리. (- 商店的資料以 [商店+idx] 方式管理)
+ // - 유저의 데이터는 [상점+hash] 로 관리. (- 使用者的資料以 [商店+hash] 方式管理)
public static final HashMap>> tradingVolume = new HashMap<>();
public static void LoadTradeLimitDataFromYML()
diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml
index 2a4033d..c900131 100644
--- a/src/main/resources/config.yml
+++ b/src/main/resources/config.yml
@@ -32,4 +32,5 @@ Log.LogCullAgeMinutes: 7200
Log.LogCullTimeMinutes: 120
ShopYmlBackup.Enable: true
ShopYmlBackup.IntervalMinutes: 60
-ShopYmlBackup.CullAgeMinutes: 300
\ No newline at end of file
+ShopYmlBackup.CullAgeMinutes: 300
+DebugMode: false
\ No newline at end of file
diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml
index 7dd5050..0bc8bfd 100644
--- a/src/main/resources/plugin.yml
+++ b/src/main/resources/plugin.yml
@@ -4,7 +4,7 @@ main: me.sat7.dynamicshop.DynamicShop
depend: [Vault]
softdepend: [PlaceholderAPI, Jobs, LocaleLib, PlayerPoints]
api-version: 1.16
-authors: [sat7, jpenilla, Multitallented, Chris6ix, KevinDaGame, FlorianKoerner, Kapitowa, LincolnJota]
+authors: [sat7, jpenilla, Multitallented, Chris6ix, KevinDaGame, FlorianKoerner, Kapitowa, LincolnJota, CreamGod45]
description: Full GUI shop with dynamic prices
commands:
DynamicShop:
@@ -15,6 +15,57 @@ commands:
sell:
description: "Sell items"
permissions:
+ dshop.admin.creative:
+ description: Allows users to use creative mode commands.
+ default: op
+ dshop.admin.remoteaccess:
+ description: Allows remote access to the shop.
+ default: op
+ dshop.admin.deleteOldUser:
+ description: Allows deletion of old user data.
+ default: op
+ dshop.admin.setdefaultshop:
+ description: Allows setting the default shop.
+ default: op
+ dshop.admin.settax:
+ description: Allows setting taxes for the shop.
+ default: op
+ dshop.admin.reload:
+ description: Allows reloading the plugin.
+ default: op
+ dshop.admin.createsign:
+ description: Allows creating shop signs.
+ default: op
+ dshop.admin.destroysign:
+ description: Allows destroying shop signs.
+ default: op
+ dshop.admin.createshop:
+ description: Allows creating a new shop.
+ default: op
+ dshop.admin.deleteshop:
+ description: Allows deleting a shop.
+ default: op
+ dshop.admin.mergeshop:
+ description: Allows merging shops.
+ default: op
+ dshop.admin.renameshop:
+ description: Allows renaming a shop.
+ default: op
+ dshop.admin.copyshop:
+ description: Allows copying a shop.
+ default: op
+ dshop.admin.shopedit:
+ description: Allows editing a shop.
+ default: op
+ dshop.admin.openshop:
+ description: Allows opening a shop.
+ default: op
+ dshop.admin.editall:
+ description: Allows editing all shops.
+ default: op
+ dshop.admin.iteminfo:
+ description: Allows viewing item information.
+ default: op
dshop.use:
description: Allows use of the /ds command
default: true