123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354 |
- package modules.atm;
- import java.io.File;
- import java.io.IOException;
- import java.util.ArrayList;
- import java.util.List;
- import org.bukkit.Bukkit;
- import org.bukkit.Material;
- import org.bukkit.OfflinePlayer;
- import org.bukkit.block.Block;
- import org.bukkit.block.Sign;
- import org.bukkit.command.Command;
- import org.bukkit.command.CommandExecutor;
- import org.bukkit.command.CommandSender;
- import org.bukkit.configuration.file.YamlConfiguration;
- import org.bukkit.entity.Player;
- import org.bukkit.event.Event.Result;
- import org.bukkit.event.EventHandler;
- import org.bukkit.event.EventPriority;
- import org.bukkit.event.Listener;
- import org.bukkit.event.block.SignChangeEvent;
- import org.bukkit.event.inventory.InventoryClickEvent;
- import org.bukkit.event.inventory.InventoryDragEvent;
- import org.bukkit.event.inventory.InventoryMoveItemEvent;
- import org.bukkit.event.player.PlayerInteractEvent;
- import org.bukkit.inventory.Inventory;
- import org.bukkit.inventory.ItemStack;
- import org.bukkit.inventory.meta.ItemMeta;
- import org.bukkit.plugin.Plugin;
- import de.Linus122.TimeIsMoney.Main;
- public class ATM implements Listener, CommandExecutor {
- Plugin pl;
-
- public static YamlConfiguration cfg;
- public static File fileBankAccounts = new File("plugins/TimeIsMoney/data.dat");
-
- double[] worths = {10000, 1000, 100, 10};
-
- public ATM(Main pl){
- this.pl = pl;
- pl.getServer().getPluginManager().registerEvents(this, pl);
- pl.getCommand("atm").setExecutor(this);
- if(!fileBankAccounts.exists()){
- try {
- fileBankAccounts.createNewFile();
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- cfg = YamlConfiguration.loadConfiguration(fileBankAccounts);
- }
- public static void withdrawBank(Player p, double amount){
- String bankString = getBankString(p);
- if(!cfg.contains(bankString)) cfg.set(bankString, 0.0);
- cfg.set(bankString, getBankBalance(p) - amount);
- saveBanks();
- }
- public static void depositBank(Player p, double amount){
- String bankString = getBankString(p);
- if(!cfg.contains(bankString)) cfg.set(bankString, 0.0);
- cfg.set(bankString, getBankBalance(p) + amount);
- saveBanks();
- }
- public static boolean bankHas(Player p, double amount){
- String bankString = getBankString(p);
- if(!cfg.contains(bankString)) cfg.set(bankString, 0.0);
- if(getBankBalance(p) >= amount){
- return true;
- }else{
- return false;
- }
-
- }
- //Doesn't support groups
- public static double getBankBalance(OfflinePlayer p){
- String bankString = p.getName() + "_TimBANK";
- if(!cfg.contains(bankString)) cfg.set(bankString, 0.0);
- return cfg.getDouble(bankString);
- }
- public static double getBankBalance(Player p){
- String bankString = getBankString(p);
- if(!cfg.contains(bankString)) cfg.set(bankString, 0.0);
- return cfg.getDouble(bankString);
- }
- public static void saveBanks(){
- try {
- cfg.save(fileBankAccounts);
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- //Converts old tim bank
- public static void convertOldBank(Player p){
- String bankString = getBankString(p);
- if(Main.economy.hasAccount(bankString)){
- if(Main.economy.getBalance(bankString) > 0){
- p.sendMessage("§aSuccessfully converted your old TIM-Bank to new version!");
- depositBank(p, Main.economy.getBalance(bankString));
- Main.economy.withdrawPlayer(bankString, Main.economy.getBalance(bankString));
- }
- }
- }
- private static String getBankString(Player p){
- if(!Main.finalconfig.getBoolean("group-atms")){
- return p.getName() + "_TimBANK";
- }else{
- for(String key : Main.finalconfig.getConfigurationSection("atm_groups").getKeys(false)){
- List<String> list = Main.finalconfig.getStringList("atm_groups." + key);
- if(list.contains(p.getWorld().getName())){
- return p.getName() + "_TimBANK_" + key;
- }
- }
- }
- return p.getName() + "_TimBANK";
- /*if(!Main.finalconfig.getBoolean("group-atms")){
- return p.getName() + "_TimBANK";
- }else{
- for(String key : Main.finalconfig.getConfigurationSection("atm_groups").getKeys(false)){
- List<String> list = Main.finalconfig.getStringList("atm_groups." + key);
- if(list.contains(p.getWorld().getName())){
- return p.getName() + "_TimBANK_" + key;
- }
- }
- }
- return p.getName() + "_TimBANK";*/
- }
- @EventHandler(priority = EventPriority.HIGHEST)
- public void onInteract(PlayerInteractEvent e){
- if(e.getClickedBlock() != null){
- if(e.getClickedBlock().getType() == Material.WALL_SIGN || e.getClickedBlock().getType() == Material.SIGN || e.getClickedBlock().getType() == Material.SIGN_POST){
- Sign sign = (Sign) e.getClickedBlock().getState();
- if(sign.getLine(0).equalsIgnoreCase("§cATM")){
- if(!e.getPlayer().hasPermission("tim.atm.use")){
- e.getPlayer().sendMessage(Main.finalconfig.getString("message_atm_noperms").replace('&', '§'));
- }else{
- this.openGUI(e.getPlayer());
- }
- }
- }
- }
- }
- @EventHandler
- public void onMove(InventoryMoveItemEvent e){
- if(e.getSource() == null) return;
- if(e.getSource().getTitle() == null) return;
- if(e.getSource().getTitle().equals(Main.finalconfig.getString("atm_title").replace('&', '§'))){
- e.setCancelled(true);
- }
- }
- @SuppressWarnings("deprecation")
- @EventHandler
- public void onClick(InventoryClickEvent e){
- try{
- if(e == null) return;
- if(e.getInventory() == null) return;
- if(e.getInventory().getTitle() == null) return;
- if(e.getInventory().getTitle().equals(Main.finalconfig.getString("atm_title").replace('&', '§'))){
- e.setResult(Result.DENY);
- Player p = (Player) e.getWhoClicked();
- //e.setCancelled(true);
- if(e.getCurrentItem() != null){
- // left side
- if(e.getSlot() < 4){
-
- double amount = worths[e.getSlot()];
-
- if(ATM.bankHas(p, amount)){
- ATM.withdrawBank(p, amount);
- Main.economy.depositPlayer(p, amount);
- e.getWhoClicked().sendMessage(Main.finalconfig.getString("atm_withdraw").replace('&', '§') + " " + Main.economy.format(amount));
- }else{
- e.getWhoClicked().sendMessage(Main.finalconfig.getString("message_atm_nomoneyinbank").replace('&', '§'));
- }
- }else
- // right side
- if(e.getSlot() > 4){
-
- double amount = worths[worths.length - (e.getSlot() - 5) - 1];
-
- if(Main.economy.has((Player) e.getWhoClicked(), amount)){
- ATM.depositBank(p, amount);
- Main.economy.withdrawPlayer((Player) e.getWhoClicked(), amount);
- e.getWhoClicked().sendMessage(Main.finalconfig.getString("atm_deposit").replace('&', '§') + " " + Main.economy.format(amount));
- }else{
- e.getWhoClicked().sendMessage(Main.finalconfig.getString("message_atm_nomoney").replace('&', '§'));
- }
- }
- ItemStack is = new ItemStack(Material.GOLD_NUGGET, 1);
- ItemMeta im = is.getItemMeta();
- im.setDisplayName(Main.finalconfig.getString("atm_balance").replace('&', '§') + " " + Main.economy.format(ATM.getBankBalance(p)));
- is.setItemMeta(im);
- e.getInventory().setItem(4, is);
- }
- }
- }catch(Exception e2){
-
- }
- }
- private void openGUI(Player player) {
- convertOldBank(player);
- Inventory atm_gui = Bukkit.createInventory(null, 9, Main.finalconfig.getString("atm_title").replace('&', '§'));
-
- //
- ItemStack is = new ItemStack(Material.GOLD_NUGGET, 1);
- ItemMeta im = is.getItemMeta();
- im.setDisplayName(Main.finalconfig.getString("atm_balance").replace('&', '§') + " " + Main.economy.format(ATM.getBankBalance(player)));
- is.setItemMeta(im);
- atm_gui.setItem(4, is);
-
- //
- is = new ItemStack(Material.CLAY_BRICK, 1);
- im = is.getItemMeta();
- im.setDisplayName(Main.finalconfig.getString("atm_withdraw").replace('&', '§') + " §a" + Main.economy.format(10));
- is.setItemMeta(im);
- atm_gui.setItem(3, is);
-
- //
- is = new ItemStack(Material.IRON_INGOT, 1);
- im = is.getItemMeta();
- im.setDisplayName(Main.finalconfig.getString("atm_withdraw").replace('&', '§') + " §a" + Main.economy.format(100));
- is.setItemMeta(im);
- atm_gui.setItem(2, is);
-
- //
- is = new ItemStack(Material.GOLD_INGOT, 1);
- im = is.getItemMeta();
- im.setDisplayName(Main.finalconfig.getString("atm_withdraw").replace('&', '§') + " §a" + Main.economy.format(1000));
- is.setItemMeta(im);
- atm_gui.setItem(1, is);
-
- //
- is = new ItemStack(Material.DIAMOND, 1);
- im = is.getItemMeta();
- im.setDisplayName(Main.finalconfig.getString("atm_withdraw").replace('&', '§') + " §a" + Main.economy.format(10000));
- is.setItemMeta(im);
- atm_gui.setItem(0, is);
-
- //DEPOSITE
- //
- is = new ItemStack(Material.CLAY_BRICK, 1);
- im = is.getItemMeta();
- im.setDisplayName(Main.finalconfig.getString("atm_deposit").replace('&', '§') + " §4" + Main.economy.format(10));
- is.setItemMeta(im);
- atm_gui.setItem(5, is);
-
- //
- is = new ItemStack(Material.IRON_INGOT, 1);
- im = is.getItemMeta();
- im.setDisplayName(Main.finalconfig.getString("atm_deposit").replace('&', '§') + " §4" + Main.economy.format(100));
- is.setItemMeta(im);
- atm_gui.setItem(6, is);
-
- //
- is = new ItemStack(Material.GOLD_INGOT, 1);
- im = is.getItemMeta();
- im.setDisplayName(Main.finalconfig.getString("atm_deposit").replace('&', '§') + " §4" + Main.economy.format(1000));
- is.setItemMeta(im);
- atm_gui.setItem(7, is);
-
- //
- is = new ItemStack(Material.DIAMOND, 1);
- im = is.getItemMeta();
- im.setDisplayName(Main.finalconfig.getString("atm_deposit").replace('&', '§') + " §4" + Main.economy.format(10000));
- is.setItemMeta(im);
- atm_gui.setItem(8, is);
-
- player.openInventory(atm_gui);
-
- }
- public static void changeMoney(Player p, double amount){
-
- }
- @EventHandler
- public void onItem2(InventoryDragEvent e){
- if(e == null) return;
- if(e.getInventory() == null) return;
- if(e.getInventory().getTitle() == null) return;
- if(e.getInventory().getTitle().equals(Main.finalconfig.getString("atm_title").replace('&', '§'))){
- e.setResult(Result.DENY);
- }
- }
- @EventHandler
- public void onSign(final SignChangeEvent e){
- final Block b = e.getBlock();
- if(b.getType() == Material.WALL_SIGN || b.getType() == Material.SIGN || b.getType() == Material.SIGN_POST){
- pl.getServer().getScheduler().scheduleSyncDelayedTask(pl, new Runnable(){
- public void run(){
- if(b.getType() == Material.WALL_SIGN || b.getType() == Material.SIGN || b.getType() == Material.SIGN_POST){
- Sign sign = (Sign) e.getBlock().getState();
- if(sign.getLine(0).equalsIgnoreCase("[atm]")){
- if(!e.getPlayer().hasPermission("tim.atm.place")){
- e.getPlayer().sendMessage("§cYou dont have permissions to build ATM's!");
- sign.setLine(0, "");
- return;
- }else{
- sign.setLine(0, "§cATM");
- sign.update();
- e.getPlayer().sendMessage("§2ATM created! (You can also write something in the Lins 2-4)");
- }
- }
- }
- }
- }, 10L);
- }
- }
- @Override
- public boolean onCommand(CommandSender cs, Command arg1, String arg2, String[] args) {
- if(args.length == 0){
- if(cs.hasPermission("tim.use")){
- openGUI((Player) cs);
- return true;
- }
- }
- if(cs.hasPermission("tim.admin")){
- if(args.length > 0){
- switch(args[0]){
- case "balance":
- if(args.length > 1){
- cs.sendMessage("§2ATM-Balance of§c " + args[1] + "§2: §c" + this.getBankBalance(Bukkit.getOfflinePlayer(args[1])));
- }else{
- cs.sendMessage("/atm balance <player>");
- }
- break;
- default:
- @SuppressWarnings("deprecation")
- OfflinePlayer op = Bukkit.getOfflinePlayer(args[0]);
- if(op == null){
- cs.sendMessage("Player is offline");
- return true;
- }
- if(op.isOnline()){
- openGUI(op.getPlayer());
- cs.sendMessage("opened!");
- }
- break;
-
- }
-
- }else{
- cs.sendMessage("§c/atm <player> §a- opens atm for player");
- cs.sendMessage("§c/atm balance <player> §a- gets balance of player");
- return true;
- }
- }
- return true;
- }
- }
|