· 6 years ago · Oct 13, 2019, 06:28 PM
1/**
2 * Dies ist ein Plugin von FrameDev
3 * @Copyright by FrameDev
4 */
5package de.framedev.frameapi.api;
6
7import com.mysql.jdbc.PreparedStatement;
8import de.framedev.frameapi.main.FrameMain;
9import de.framedev.frameapi.main.FrameMain.FrameMainGet;
10import de.framedev.frameapi.mysql.IsTableExist;
11import de.framedev.frameapi.mysql.MYSQL;
12import de.framedev.frameapi.mysql.SQL;
13import org.bukkit.Bukkit;
14import org.bukkit.OfflinePlayer;
15import org.bukkit.configuration.InvalidConfigurationException;
16import org.bukkit.configuration.file.FileConfiguration;
17import org.bukkit.configuration.file.YamlConfiguration;
18import org.bukkit.entity.Player;
19import org.bukkit.event.Listener;
20
21import java.io.File;
22import java.io.IOException;
23import java.sql.ResultSet;
24import java.sql.SQLException;
25import java.sql.Statement;
26
27/**
28 * @author Darryl
29 *this class is free to use
30 *
31 */
32public class Money implements Listener {
33
34 private static boolean registered;
35 /**
36 * This is the Constructor to use this Class
37 */
38 public Money() {
39
40 }
41 /**
42 * Create an Account it do it automatic if you use this class
43 * @param player Player
44 */
45 public void createAccount(OfflinePlayer player) {
46 setRegistered(false);
47 if(cfgMoney.getBoolean(player.getUniqueId() + "." + player.getName()+".registered")) {
48 saveMoneyFile();
49 loadFile();
50 } else {
51 cfgMoney.set(player.getUniqueId() + "." + player.getName() +".registered", true);
52 cfgMoney.set(player.getUniqueId() + "."+ player.getName() + ".Money", 0);
53 setRegistered(true);
54 saveMoneyFile();
55 loadFile();
56 }
57 }
58 /**
59 * Money File!!
60 */
61 private void saveMoneyFile() {
62 try {
63 cfgMoney.save(fileMoney);
64 } catch (IOException e) {
65 e.printStackTrace();
66 }
67 }
68 private void loadFile() {
69 try {
70 cfgMoney.load(fileMoney);
71 } catch (IOException | InvalidConfigurationException e) {
72 e.printStackTrace();
73 }
74 }
75 private File fileMoney = new File("plugins/FrameAPI/MoneyFile", "money.yml");
76 private FileConfiguration cfgMoney = YamlConfiguration.loadConfiguration(fileMoney);
77
78 /**
79 * Get the Money from the Config
80 * @param player Player
81 * @return Integer Money in Config
82 */
83 public Double getMoney(OfflinePlayer player) {
84 if(FrameMain.getInstance().getConfig().getBoolean("MYSQL.Boolean")) {
85 try {
86 if(cfgMoney.getBoolean(player.getUniqueId() + "." + player.getName()+".registered")) {
87 loadFile();
88 double money =getMoneyMySql(player);
89
90 return money;
91 } else {
92 createAccount(player);
93 saveMoneyFile();
94 loadFile();
95 double money = getMoneyMySql(player);
96 return money;
97 }
98 } catch (NullPointerException e) {
99 return cfgMoney.getDouble(player.getUniqueId() + "." + player.getName() + ".money");
100 }
101 } else {
102 return cfgMoney.getDouble(player.getUniqueId() + "." + player.getName() + ".money");
103 }
104
105 }
106 /**
107 * Add Money to Player and in Config
108 * @param player Player
109 * @param amount the amount from money
110 */
111 public void addMoney(OfflinePlayer player, double amount) {
112 if(FrameMain.getInstance().getConfig().getBoolean("MYSQL.Boolean")) {
113 if(cfgMoney.getBoolean(player.getUniqueId() + "." + player.getName() +".registered")) {
114 if(IsTableExist.isExist("money")) { //Look if the table is exists
115 double money = getMoneyMySql(player);
116 money = money + amount;
117 saveMoneyInSQL(player, money);
118 saveMoneyFile();
119 loadFile();
120 } else {
121 String sql2 = "CREATE TABLE IF NOT EXISTS money(PlayerName TEXT(11),balance_money INT);";
122 try {
123 PreparedStatement stmt = (PreparedStatement) MYSQL.getConnection().prepareStatement(sql2);
124 stmt.executeUpdate();
125 // Insert the Players when it is not Exists in MYSQL
126 stmt.executeUpdate("INSERT INTO money (PlayerName,balance_money) VALUES ('"+player.getName()+ "','" + 0 + "');");
127 stmt.executeUpdate();
128 } catch (SQLException e1) {
129 e1.printStackTrace();
130 }
131 }
132 } else {
133 createAccount(player);
134 if(IsTableExist.isExist("money")) { //Look if the table is exists
135 double money = getMoneyMySql(player);
136 money = money + amount;
137 saveMoneyInSQL(player, money);
138 saveMoneyFile();
139 loadFile();
140 } else {
141 String sql2 = "CREATE TABLE IF NOT EXISTS money(PlayerName TEXT(11),balance_money INT);"; // Creates The Table
142 try {
143 PreparedStatement stmt = (PreparedStatement) MYSQL.getConnection().prepareStatement(sql2);
144 stmt.executeUpdate();
145 // Insert the Players when it is not Exists in MYSQL
146 stmt.executeUpdate("INSERT INTO money (PlayerName,balance_money) VALUES ('"+player.getName()+ "','" + 0 + "');");
147 stmt.executeUpdate();
148
149 } catch (SQLException e1) {
150 e1.printStackTrace();
151 }
152 }
153 }
154 } else {
155 if(cfgMoney.getBoolean(player.getUniqueId() + "." + player.getName() +".registered")) {
156 double money = getMoney(player);
157 money = money + amount;
158 cfgMoney.set(player.getUniqueId() + "." + player.getName() + ".money", money);
159 saveMoneyFile();
160 loadFile();
161 } else {
162 createAccount(player);
163 double money = getMoney(player);
164 money = money + amount;
165 saveMoneyInSQL(player, money);
166 saveMoneyFile();
167 loadFile();
168 }
169 }
170 }
171 /**
172 * Remove Money
173 * @param player Player
174 * @param amount the amount from money
175 */
176 public void removeMoney(Player player,double amount) {
177 if(cfgMoney.getBoolean(player.getUniqueId() + "." + player.getName() +".registered")) {
178 if(FrameMain.getInstance().getConfig().getBoolean("MYSQL.Boolean")) {
179 double money = getMoneyMySql(player);
180
181 money = money - amount;
182 saveMoneyInSQL(player, money);
183 saveMoneyFile();
184 loadFile();
185 } else {
186 double money = getMoney(player);
187 money = money - amount;
188 cfgMoney.set(player.getUniqueId() + "." + player.getName() + ".money", money);
189 saveMoneyFile();
190 loadFile();
191 }
192 } else {
193 if(FrameMain.getInstance().getConfig().getBoolean("MYSQL.Boolean")) {
194 createAccount(player);
195 double money = getMoneyMySql(player);
196 money = money - amount;
197 saveMoneyInSQL(player, money);
198 saveMoneyFile();
199 loadFile();
200 player.sendMessage("§aYou are Successfully Registered and now you can show your Balance!");
201 } else {
202 createAccount(player);
203 double money = getMoney(player);
204 money = money - amount;
205 cfgMoney.set(player.getUniqueId() + "." + player.getName() + ".money", money);
206 saveMoneyFile();
207 loadFile();
208 }
209 }
210 }
211 /**
212 *Set amount for the Money
213 * @param offline Player
214 * @param amount the amount from money
215 */
216 public void setMoney(OfflinePlayer offline, double amount) {
217 if(FrameMain.getInstance().getConfig().getBoolean("MYSQL.Boolean")) {
218 saveMoneyInSQL(offline, amount);
219 } else {
220 cfgMoney.set(offline.getUniqueId() + "." + offline.getName() + ".money", amount);
221 saveMoneyFile();
222 loadFile();
223 }
224 }
225 /**
226 * @return the registered
227 */
228 public boolean isRegistered() {
229 return registered;
230 }
231 /**
232 * @param registered the registered to set
233 */
234 public void setRegistered(boolean registered) {
235 Money.registered = registered;
236 }
237 /**
238 * @param player Player
239 * @param amount Amount of the Money
240 */
241 private void saveMoneyInSQL(OfflinePlayer player, double amount) {
242
243 try {
244 MYSQL.connect();
245 if(IsTableExist.isExist("money")) {
246 Statement statement = MYSQL.getConnection().createStatement();
247 ResultSet res = statement.executeQuery("SELECT * FROM money WHERE PlayerName = '" + player.getName() + "';");
248 if(res.next()) {
249 if(res.getString("PlayerName") == null) {
250 statement.executeUpdate("INSERT INTO money (PlayerName,balance_money) VALUES ('"+player.getName()+ "','"+amount+"');");
251 } else {
252 String sql = "UPDATE money SET balance_money = '" + amount +"' WHERE PlayerName = '" + player.getName() + "'";
253 statement.executeUpdate(sql);
254 Bukkit.getConsoleSender().sendMessage(FrameMainGet.getPrefix() + "§b Updated info");
255 }
256 } else {
257 statement.executeUpdate("INSERT INTO money (PlayerName,balance_money) VALUES ('"+player.getName()+ "','"+amount+"');");
258 }
259 } else {
260 String sql2 = "CREATE TABLE IF NOT EXISTS money(PlayerName TEXT(11),balance_money INT);";
261 try {
262 PreparedStatement stmt = (PreparedStatement) MYSQL.getConnection().prepareStatement(sql2);
263 stmt.executeUpdate();
264 stmt.executeUpdate("INSERT INTO money (PlayerName,balance_money) VALUES ('"+player.getName()+ "','"+amount+"');");
265 stmt.executeUpdate();
266 } catch (SQLException e1) {
267 e1.printStackTrace();
268 }
269 }
270
271 } catch (SQLException e2) {
272 e2.printStackTrace();
273 }
274 }
275 /**
276 * @param player the Players how is in MYSQL
277 * @return Money of MYSQL
278 */
279 private Double getMoneyMySql(OfflinePlayer player) {
280
281 MYSQL.connect();
282 if(IsTableExist.isExist("money")) {
283 try {
284
285 Statement statement = MYSQL.getConnection().createStatement();
286 ResultSet res = statement.executeQuery("SELECT * FROM money WHERE PlayerName = '" + player.getName() + "';");
287 if(res.next()) {
288 int x = res.getInt("balance_money");
289 return Double.valueOf(x);
290 } else {
291 String sql2 = "CREATE TABLE IF NOT EXISTS money(PlayerName TEXT(11),balance_money INT);";
292 try {
293 PreparedStatement stmt = (PreparedStatement) MYSQL.getConnection().prepareStatement(sql2);
294 stmt.executeUpdate("INSERT INTO money (PlayerName,balance_money) VALUES ('"+player.getName()+ "','"+0+"');");
295 stmt.executeUpdate();
296 } catch (SQLException e1) {
297 e1.printStackTrace();
298 }
299 return 0.0;
300 }
301 } catch (SQLException e) {
302 e.printStackTrace();
303 }
304 } else {
305 String sql2 = "CREATE TABLE IF NOT EXISTS money(PlayerName TEXT(11),balance_money INT);";
306 try {
307 PreparedStatement stmt = (PreparedStatement) MYSQL.getConnection().prepareStatement(sql2);
308 stmt.executeUpdate("INSERT INTO money (PlayerName,balance_money) VALUES ('"+player.getName()+ "','"+0+"');");
309 stmt.executeUpdate();
310 } catch (SQLException e1) {
311 e1.printStackTrace();
312 }
313 }
314 return null;
315 }
316 /**
317 * @param player Player
318 * @param amount Amount of the Money how will save in MYSQL Table BankMoney
319 */
320 public void SaveMoneyInBank(OfflinePlayer player, double amount) {
321
322 try {
323 MYSQL.connect();
324 if(IsTableExist.isExist("BankMoney")) {
325 Statement statement = MYSQL.getConnection().createStatement();
326 ResultSet res = statement.executeQuery("SELECT * FROM BankMoney WHERE PlayerName = '" + player.getName() + "';");
327 if(res.next()) {
328 if(res.getString("PlayerName") == null) {
329 statement.executeUpdate("INSERT INTO BankMoney (PlayerName,balance_money) VALUES ('"+player.getName()+ "','" + amount + "');");
330 } else {
331 String sql = "UPDATE BankMoney SET balance_money = '" + amount +"' WHERE PlayerName = '" + player.getName() + "'";
332 statement.executeUpdate(sql);
333 Bukkit.getConsoleSender().sendMessage(FrameMainGet.getPrefix() + "§b Updated info");
334 }
335 } else {
336 statement.executeUpdate("INSERT INTO BankMoney (PlayerName,balance_money) VALUES ('"+player.getName()+ "','" + amount + "');");
337 }
338 } else {
339 String sql = "CREATE TABLE IF NOT EXISTS BankMoney(PlayerName TEXT(11),balance_money INT);";
340 // prepare the statement to be executed
341 try {
342 PreparedStatement stmt = (PreparedStatement) MYSQL.getConnection().createStatement();
343 SQL.CreateTable("BankMoney", "PlayerName,balance_money");
344 stmt.executeUpdate("INSERT INTO BankMoney (PlayerName,balance_money) VALUES ('"+player.getName()+ "','" + 0 + "');");
345 stmt.executeUpdate();
346 } catch (SQLException e3) {
347 e3.printStackTrace();
348 }
349 }
350
351 } catch (SQLException e2) {
352 e2.printStackTrace();
353 }
354 }
355 /**
356 * @param player Player
357 * @return Money of MYSQL from Player
358 */
359 public Double getMoneyFromBankMySQL(OfflinePlayer player) {
360
361 MYSQL.connect();
362 if(IsTableExist.isExist("BankMoney")) {
363 Statement statement = null;
364 try {
365 statement = MYSQL.getConnection().createStatement();
366 } catch (SQLException e1) {
367 e1.printStackTrace();
368 }
369 ResultSet res = null;
370 try {
371 res = statement.executeQuery("SELECT * FROM BankMoney WHERE PlayerName = '" + player.getName() + "';");
372 } catch (SQLException e1) {
373 e1.printStackTrace();
374 }
375 try {
376 if(!res.next()) {
377 statement.executeUpdate("INSERT INTO BankMoney (PlayerName,balance_money) VALUES ('"+player.getName()+ "','" + 0 + "');");
378 } else {
379 return res.getDouble("balance_money");
380 }
381 } catch (SQLException e) {
382 e.printStackTrace();
383 }
384 } else {
385 try {
386 PreparedStatement stmt = (PreparedStatement) MYSQL.getConnection().createStatement();
387 SQL.CreateTable("BankMoney", "PlayerName,balance_money");
388 stmt.executeUpdate("INSERT INTO BankMoney (PlayerName,balance_money) VALUES ('"+player.getName()+ "','" + 0 + "');");
389 stmt.executeUpdate();
390 } catch (SQLException e1) {
391 e1.printStackTrace();
392 }
393 }
394 return 0.0;
395 }
396 public void RemoveMoneyFromBank(OfflinePlayer player, double amount) {
397 double money = getMoneyFromBankMySQL(player);
398 money = money - amount;
399 SaveMoneyInBank(player, money);
400 }
401 public void AddMoneyFromBank(OfflinePlayer player, double amount) {
402 double money = getMoneyFromBankMySQL(player);
403 money = money + amount;
404 SaveMoneyInBank(player, money);
405 }
406}