-
Notifications
You must be signed in to change notification settings - Fork 54
/
DynaShopAPI.java
265 lines (234 loc) · 9.81 KB
/
DynaShopAPI.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
package me.sat7.dynamicshop;
import lombok.NonNull;
import me.sat7.dynamicshop.guis.*;
import me.sat7.dynamicshop.models.DSItem;
import me.sat7.dynamicshop.transactions.Calc;
import me.sat7.dynamicshop.utilities.ConfigUtil;
import me.sat7.dynamicshop.utilities.ShopUtil;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import java.text.DecimalFormat;
import java.util.ArrayList;
public final class DynaShopAPI {
public static DecimalFormat df = new DecimalFormat("0.00");
private DynaShopAPI() {
}
//[ UI ]=========================================================
// 상점 UI생성 후 열기
public static void openShopGui(Player player, String shopName, int page) {
Inventory shopGui = new Shop().getGui(player, shopName, page);
if (shopGui != null) {
player.openInventory(shopGui);
}
}
// 상점 설정 화면
public static void openShopSettingGui(Player player, String shopName) {
player.openInventory(new ShopSettings().getGui(player, shopName));
}
// 거래화면 생성 및 열기
public static void openItemTradeGui(Player player, String shopName, String tradeIdx) {
player.openInventory(new ItemTrade().getGui(player, shopName, tradeIdx));
}
// 아이탬 파렛트 생성 및 열기
public static void openItemPalette(Player player, int page, String search) {
player.openInventory(new ItemPalette().getGui(player, page, search));
}
// 아이탬 셋팅창
public static void openItemSettingGui(Player player, ItemStack itemStack, int tab, double buyValue, double sellValue, double minPrice, double maxPrice, int median, int stock) {
DSItem dsItem = new DSItem(itemStack, buyValue, sellValue, minPrice, maxPrice, median, stock);
openItemSettingGui(player, tab, dsItem);
}
private static void openItemSettingGui(Player player, int tab, DSItem dsItem) {
player.openInventory(new ItemSettings().getGui(player, tab, dsItem));
}
// 스타트 페이지 생성 및 열기
public static void openStartPage(Player player) {
player.openInventory(new StartPage().getGui(player));
}
// 퀵셀 창
public static void openQuickSellGUI(Player player) {
player.openInventory(new QuickSell().getGui(player));
}
// 유저 데이터를 다시 만들고 만들어졌는지 확인함.
public static boolean recreateUserData(Player player) {
if (DynamicShop.ccUser.get().contains(player.getUniqueId().toString())) {
return true;
}
DynamicShop.ccUser.get().set(player.getUniqueId().toString() + ".tmpString", "");
DynamicShop.ccUser.get().set(player.getUniqueId().toString() + ".interactItem", "");
DynamicShop.ccUser.get().set(player.getUniqueId().toString() + ".cmdHelp", true);
DynamicShop.ccUser.get().set(player.getUniqueId().toString() + ".lastJoin", System.currentTimeMillis());
DynamicShop.ccUser.save();
return DynamicShop.ccUser.get().contains(player.getUniqueId().toString());
}
// 스타트페이지 셋팅창
public static void openStartPageSettingGui(Player player) {
player.openInventory(new StartPageSettings().getGui(player));
}
/**
* Get the tax rate for a shop or the global tax rate if none is set.
* Will return the global tax if shopName is null.
*
* @param shopName The shop name to check tax for or null
* @return The tax rate
* @throws IllegalArgumentException When the shop does not exist and is not null
*/
public static int getTaxRate(String shopName) {
if (shopName != null) {
if (validateShopName(shopName)) {
return Calc.getTaxRate(shopName);
} else {
throw new IllegalArgumentException("Shop: " + shopName + " does not exist");
}
} else {
return ConfigUtil.getCurrentTax();
}
}
/**
* Get the list of shops
*
* @return ArrayList of String containing the list of names of loaded shops
*/
public static ArrayList<String> getShops() {
return new ArrayList<>(ShopUtil.ccShop.get().getKeys(false));
}
/**
* Get the items in a shop
*
* @param shopName The name of the shop to get the items from
* @return ArrayList of ItemStack containing the items for sale in the shop
* @throws IllegalArgumentException When the shop does not exist
*/
public static ArrayList<ItemStack> getShopItems(@NonNull String shopName) {
if (validateShopName(shopName)) {
ArrayList<ItemStack> list = new ArrayList<>();
for (String s : ShopUtil.ccShop.get().getConfigurationSection(shopName).getKeys(false)) {
try {
int i = Integer.parseInt(s);
} catch (Exception e) {
continue;
}
if (!ShopUtil.ccShop.get().contains(shopName + "." + s + ".value")) {
continue; // 장식용임
}
Material m;
String itemName = ShopUtil.ccShop.get().getString(shopName + "." + s + ".mat"); // 메테리얼
try {
Material mat = Material.getMaterial(itemName);
list.add(new ItemStack(mat));
} catch (Exception e) {
continue;
}
}
return list;
} else {
throw new IllegalArgumentException("Shop: " + shopName + " does not exist");
}
}
/**
* Get the buy price of an item
*
* @param shopName The shop that has the item
* @param itemStack The item to check the price of
* @return The buy price of the item, -1 if the shop does not contain the item
* @throws IllegalArgumentException When the shop does not exist
*/
public static double getBuyPrice(@NonNull String shopName, @NonNull ItemStack itemStack) {
if (validateShopName(shopName)) {
int idx = ShopUtil.findItemFromShop(shopName, itemStack);
if (idx != -1) {
return Calc.getCurrentPrice(shopName, String.valueOf(idx), true);
} else {
return idx;
}
} else {
throw new IllegalArgumentException("Shop: " + shopName + " does not exist");
}
}
/**
* Get the sell price of an item
*
* @param shopName The shop that has the item
* @param itemStack The item to check the price of
* @return The sell price of the item, -1 if the shop does not contain the item
* @throws IllegalArgumentException When the shop does not exist
*/
public static double getSellPrice(@NonNull String shopName, @NonNull ItemStack itemStack) {
if (validateShopName(shopName)) {
int idx = ShopUtil.findItemFromShop(shopName, itemStack);
if (idx != -1) {
double price = Calc.getCurrentPrice(shopName, String.valueOf(idx), false);
return price - ((price/100) * getTaxRate(shopName));
} else {
return idx;
}
} else {
throw new IllegalArgumentException("Shop: " + shopName + " does not exist");
}
}
/**
* Get the current stock of an item
*
* @param shopName The shop that has the item
* @param itemStack The item to check the stock of
* @return The stock of the item, -1 if the shop does not contain the item
* @throws IllegalArgumentException When the shop does not exist
*/
public static int getStock(@NonNull String shopName, @NonNull ItemStack itemStack) {
if (validateShopName(shopName)) {
int idx = ShopUtil.findItemFromShop(shopName, itemStack);
if (idx != -1) {
return ShopUtil.ccShop.get().getInt(shopName + "." + idx + ".stock");
} else {
return idx;
}
} else {
throw new IllegalArgumentException("Shop: " + shopName + " does not exist");
}
}
/**
* Get the median stock of an item
*
* @param shopName The shop that has the item
* @param itemStack The item to check the median stock of
* @return The median stock of the item, -1 if the shop does not contain the item
* @throws IllegalArgumentException When the shop does not exist
*/
public static int getMedian(@NonNull String shopName, @NonNull ItemStack itemStack) throws IllegalArgumentException {
if (validateShopName(shopName)) {
int idx = ShopUtil.findItemFromShop(shopName, itemStack);
if (idx != -1) {
return ShopUtil.ccShop.get().getInt(shopName + "." + idx + ".median");
} else {
return idx;
}
} else {
throw new IllegalArgumentException("Shop: " + shopName + " does not exist");
}
}
/**
* Get whether a shop is for Vault money or Jobs points
*
* @param shopName The shop to check the type of
* @return True if it is a Job Point shop, False if it is a Vault economy money shop
* @throws IllegalArgumentException When the shop does not exist
*/
public static boolean isJobsPointShop(@NonNull String shopName) throws IllegalArgumentException {
if (validateShopName(shopName)) {
return ShopUtil.ccShop.get().contains(shopName + ".Options.flag.jobpoint");
} else {
throw new IllegalArgumentException("Shop: " + shopName + " does not exist");
}
}
/**
* Check if a shop exists
*
* @param shopName The shop name to check for
* @return True if it exists
*/
public static boolean validateShopName(@NonNull String shopName) {
return getShops().contains(shopName);
}
}