PayCheck plugin

Discussion in 'Plugin Development' started by plisov, Jan 22, 2017.

Thread Status:
Not open for further replies.
  1. Offline

    plisov

    I'm trying to make a paycheck plugin and I've gotten the basics down. However I've noticed that the first time you get payed it's the correct time which is 15 minutes. However each time you get payed the countdown gets faster and faster making you get the paycheck quicker. Here is the code
    Code:
    package me.plisov.payday.listeners;
    
    import java.io.File;
    import java.io.IOException;
    
    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    import org.bukkit.configuration.file.FileConfiguration;
    import org.bukkit.configuration.file.YamlConfiguration;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.player.PlayerJoinEvent;
    import org.bukkit.plugin.Plugin;
    
    import me.plisov.payday.Enable;
    import ru.tehkode.permissions.bukkit.PermissionsEx;
    
    public class onJoin implements Listener {
    
        Enable plugin;
        public onJoin(Enable plugin){
            this.plugin = plugin;
        }
    
        int amount = 50;
    
        int minute = 20 * 60;
        int hour = minute * 60;
        int day = hour * 24;
        int week = day * 7;
        int month = week * 4;
        int year = month * 12;
    
        @SuppressWarnings("deprecation")
        @EventHandler
        public void onPlayerJoin(PlayerJoinEvent event) throws IOException {
    
            Player player = (Player) event.getPlayer();
    
            if(PermissionsEx.getUser(player).getGroups()[0].getName().equalsIgnoreCase("Peasant")) {
                amount = 50;
            } else if(PermissionsEx.getUser(player).getGroups()[0].getName().equalsIgnoreCase("Serf")) {
                amount = 75;
            } else if(PermissionsEx.getUser(player).getGroups()[0].getName().equalsIgnoreCase("Merchant")) {
                amount = 100;
            } else if(PermissionsEx.getUser(player).getGroups()[0].getName().equalsIgnoreCase("Knight")) {
                amount = 150;
            } else if(PermissionsEx.getUser(player).getGroups()[0].getName().equalsIgnoreCase("Noble")) {
                amount = 200;
            } else if(PermissionsEx.getUser(player).getGroups()[0].getName().equalsIgnoreCase("King")) {
                amount = 250;
            } else if(PermissionsEx.getUser(player).getGroups()[0].getName().equalsIgnoreCase("DemiGod")) {
                amount = 300;
            } else if(PermissionsEx.getUser(player).getGroups()[0].getName().equalsIgnoreCase("Immortal")) {
                amount = 400;
            }
    
            FileConfiguration config = null;
            File file = new File("plugins" + File.separator + "PayDay" + File.separator + "users" + File.separator + player.getUniqueId() + " (" + player.getName() + ")" + ".yml");
            if(!file.exists()) {
                System.out.println("File Created: " + event.getPlayer().getUniqueId()  + ".yml" + " (" + event.getPlayer().getName() + ")");
                try {
                    file.createNewFile();
                } catch (IOException e) {
                    //e.printStackTrace();
                }
                config = YamlConfiguration.loadConfiguration(file);
                config.set("Player.Name", event.getPlayer().getName());
                config.set("Player.Rank", PermissionsEx.getUser(player).getGroups()[0].getName());
                config.set("Player.Time-Left", 300);
                config.set("Player.Time-Max", 300);
                config.set("Player.Amount-Recieved", amount);
    
                try {
                    config.save(file);
                } catch (IOException e) {
                }
            }
            config = YamlConfiguration.loadConfiguration(file);
            if(PermissionsEx.getUser(player).getGroups()[0].getName().equalsIgnoreCase("Peasant")) {
               
                config.set("Player.Rank", PermissionsEx.getUser(player).getGroups()[0].getName());
                config.set("Player.Amount-Recieved", amount);
                config.save(file);
                Bukkit.getScheduler().scheduleSyncRepeatingTask(plugin, new Runnable() {
                    public void run() {
                       
                        FileConfiguration config = null;
                        File file = new File("plugins" + File.separator + "PayDay" + File.separator + "users" + File.separator + player.getUniqueId() + " (" + player.getName() + ")" + ".yml");
                        config = YamlConfiguration.loadConfiguration(file);
    
                        int timeLeft = config.getInt("Plater.Time-Left");
                        int timeMax = config.getInt("Plater.Time-Max");
                       
                        if(config.getInt("Player.Time-Left") <= 0) {
                            Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), "eco give " + player.getName() + " " + amount);
                            player.sendMessage("You have recieved your paycheck of $50");
                            config.set("Player.Time-Left", timeMax);
                            try {
                                config.save(file);
                            } catch (IOException e) {
                            }
                        } else {
                            if(player.isOnline()) {
                                timeLeft--;
                                config.set("Player.Time-Left", timeLeft);
                                try {
                                    config.save(file);
                                } catch (IOException e) {
                                }
                            } else {
                                return;
                            }
                        }
                    }
                }, 20L, 200L);
            } else if(PermissionsEx.getUser(player).getGroups()[0].getName().equalsIgnoreCase("Serf")) {
                config.set("Player.Rank", PermissionsEx.getUser(player).getGroups()[0].getName());
                config.set("Player.Amount-Recieved", amount);
                config.save(file);
                Bukkit.getScheduler().scheduleSyncRepeatingTask(plugin, new Runnable() {
                    public void run() {
                        FileConfiguration config = null;
                        File file = new File("plugins" + File.separator + "PayDay" + File.separator + "users" + File.separator + player.getUniqueId() + " (" + player.getName() + ")" + ".yml");
                        config = YamlConfiguration.loadConfiguration(file);
    
                        int timeLeft = config.getInt("Plater.Time-Left");
                        int timeMax = config.getInt("Plater.Time-Max");
                       
                        if(config.getInt("Player.Time-Left") <= 0) {
                            Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), "eco give " + player.getName() + " " + amount);
                            player.sendMessage("You have recieved your paycheck of $75");
                            timeLeft = timeMax;
                            config.set("Player.Time-Left", timeMax);
                            try {
                                config.save(file);
                            } catch (IOException e) {
                            }
                        } else {
                            if(player.isOnline()) {
                                timeLeft--;
                                config.set("Player.Time-Left", timeLeft);
                                try {
                                    config.save(file);
                                } catch (IOException e) {
                                }
                            } else {
                                return;
                            }
                        }
                    }
                }, 20L, 200L);
            } else if(PermissionsEx.getUser(player).getGroups()[0].getName().equalsIgnoreCase("Merchant")) {
                config.set("Player.Rank", PermissionsEx.getUser(player).getGroups()[0].getName());
                config.set("Player.Amount-Recieved", amount);
                config.save(file);
                Bukkit.getScheduler().scheduleSyncRepeatingTask(plugin, new Runnable() {
                    public void run() {
                        FileConfiguration config = null;
                        File file = new File("plugins" + File.separator + "PayDay" + File.separator + "users" + File.separator + player.getUniqueId() + " (" + player.getName() + ")" + ".yml");
                        config = YamlConfiguration.loadConfiguration(file);
    
                        int timeLeft = config.getInt("Plater.Time-Left");
                        int timeMax = config.getInt("Plater.Time-Max");
                       
                        if(config.getInt("Player.Time-Left") <= 0) {
                            Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), "eco give " + player.getName() + " " + amount);
                            player.sendMessage("You have recieved your paycheck of $100");
                            timeLeft = timeMax;
                            config.set("Player.Time-Left", timeMax);
                            try {
                                config.save(file);
                            } catch (IOException e) {
                            }
                        } else {
                            if(player.isOnline()) {
                                timeLeft--;
                                config.set("Player.Time-Left", timeLeft);
                                try {
                                    config.save(file);
                                } catch (IOException e) {
                                }
                            } else {
                                return;
                            }
                        }
                    }
                }, 20L, 200L);
            } else if(PermissionsEx.getUser(player).getGroups()[0].getName().equalsIgnoreCase("Knight")) {
                config.set("Player.Rank", PermissionsEx.getUser(player).getGroups()[0].getName());
                config.set("Player.Amount-Recieved", amount);
                config.save(file);
                Bukkit.getScheduler().scheduleSyncRepeatingTask(plugin, new Runnable() {
                    public void run() {
                        FileConfiguration config = null;
                        File file = new File("plugins" + File.separator + "PayDay" + File.separator + "users" + File.separator + player.getUniqueId() + " (" + player.getName() + ")" + ".yml");
                        config = YamlConfiguration.loadConfiguration(file);
    
                        int timeLeft = config.getInt("Plater.Time-Left");
                        int timeMax = config.getInt("Plater.Time-Max");
                       
                        if(config.getInt("Player.Time-Left") <= 0) {
                            Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), "eco give " + player.getName() + " " + amount);
                            player.sendMessage("You have recieved your paycheck of $150");
                            timeLeft = timeMax;
                            config.set("Player.Time-Left", timeMax);
                            try {
                                config.save(file);
                            } catch (IOException e) {
                            }
                        } else {
                            if(player.isOnline()) {
                                timeLeft--;
                                config.set("Player.Time-Left", timeLeft);
                                try {
                                    config.save(file);
                                } catch (IOException e) {
                                }
                            } else {
                                return;
                            }
                        }
                    }
                }, 20L, 200L);
            } else if(PermissionsEx.getUser(player).getGroups()[0].getName().equalsIgnoreCase("Noble")) {
                config.set("Player.Rank", PermissionsEx.getUser(player).getGroups()[0].getName());
                config.set("Player.Amount-Recieved", amount);
                config.save(file);
                Bukkit.getScheduler().scheduleSyncRepeatingTask(plugin, new Runnable() {
                    public void run() {
                        FileConfiguration config = null;
                        File file = new File("plugins" + File.separator + "PayDay" + File.separator + "users" + File.separator + player.getUniqueId() + " (" + player.getName() + ")" + ".yml");
                        config = YamlConfiguration.loadConfiguration(file);
    
                        int timeLeft = config.getInt("Plater.Time-Left");
                        int timeMax = config.getInt("Plater.Time-Max");
                       
                        if(config.getInt("Player.Time-Left") <= 0) {
                            Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), "eco give " + player.getName() + " " + amount);
                            player.sendMessage("You have recieved your paycheck of $200");
                            timeLeft = timeMax;
                            config.set("Player.Time-Left", timeMax);
                            try {
                                config.save(file);
                            } catch (IOException e) {
                            }
                        } else {
                            if(player.isOnline()) {
                                timeLeft--;
                                config.set("Player.Time-Left", timeLeft);
                                try {
                                    config.save(file);
                                } catch (IOException e) {
                                }
                            } else {
                                return;
                            }
                        }
                    }
                }, 20L, 200L);
            } else if(PermissionsEx.getUser(player).getGroups()[0].getName().equalsIgnoreCase("King")) {
                config.set("Player.Rank", PermissionsEx.getUser(player).getGroups()[0].getName());
                config.set("Player.Amount-Recieved", amount);
                config.save(file);
                Bukkit.getScheduler().scheduleSyncRepeatingTask(plugin, new Runnable() {
                    public void run() {
                        FileConfiguration config = null;
                        File file = new File("plugins" + File.separator + "PayDay" + File.separator + "users" + File.separator + player.getUniqueId() + " (" + player.getName() + ")" + ".yml");
                        config = YamlConfiguration.loadConfiguration(file);
    
                        int timeLeft = config.getInt("Plater.Time-Left");
                        int timeMax = config.getInt("Plater.Time-Max");
                       
                        if(config.getInt("Player.Time-Left") <= 0) {
                            Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), "eco give " + player.getName() + " " + amount);
                            player.sendMessage("You have recieved your paycheck of $250");
                            timeLeft = timeMax;
                            config.set("Player.Time-Left", timeMax);
                            try {
                                config.save(file);
                            } catch (IOException e) {
                            }
                        } else {
                            if(player.isOnline()) {
                                timeLeft--;
                                config.set("Player.Time-Left", timeLeft);
                                try {
                                    config.save(file);
                                } catch (IOException e) {
                                }
                            } else {
                                return;
                            }
                        }
                    }
                }, 20L, 200L);
            } else if(PermissionsEx.getUser(player).getGroups()[0].getName().equalsIgnoreCase("DemiGod")) {
                config.set("Player.Rank", PermissionsEx.getUser(player).getGroups()[0].getName());
                config.set("Player.Amount-Recieved", amount);
                config.save(file);
                Bukkit.getScheduler().scheduleSyncRepeatingTask(plugin, new Runnable() {
                    public void run() {
                        FileConfiguration config = null;
                        File file = new File("plugins" + File.separator + "PayDay" + File.separator + "users" + File.separator + player.getUniqueId() + " (" + player.getName() + ")" + ".yml");
                        config = YamlConfiguration.loadConfiguration(file);
    
                        int timeLeft = config.getInt("Plater.Time-Left");
                        int timeMax = config.getInt("Plater.Time-Max");
                       
                        if(config.getInt("Player.Time-Left") <= 0) {
                            Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), "eco give " + player.getName() + " " + amount);
                            player.sendMessage("You have recieved your paycheck of $300");
                            timeLeft = timeMax;
                            config.set("Player.Time-Left", timeMax);
                            try {
                                config.save(file);
                            } catch (IOException e) {
                            }
                        } else {
                            if(player.isOnline()) {
                                timeLeft--;
                                config.set("Player.Time-Left", timeLeft);
                                try {
                                    config.save(file);
                                } catch (IOException e) {
                                }
                            } else {
                                return;
                            }
                        }
                    }
                }, 20L, 200L);
            } else if(PermissionsEx.getUser(player).getGroups()[0].getName().equalsIgnoreCase("Immortal")) {
                config.set("Player.Rank", PermissionsEx.getUser(player).getGroups()[0].getName());
                config.set("Player.Amount-Recieved", amount);
                config.save(file);
                Bukkit.getScheduler().scheduleSyncRepeatingTask(plugin, new Runnable() {
                    public void run() {
                        FileConfiguration config = null;
                        File file = new File("plugins" + File.separator + "PayDay" + File.separator + "users" + File.separator + player.getUniqueId() + " (" + player.getName() + ")" + ".yml");
                        config = YamlConfiguration.loadConfiguration(file);
    
                        int timeLeft = config.getInt("Plater.Time-Left");
                        int timeMax = config.getInt("Plater.Time-Max");
                       
                        if(config.getInt("Player.Time-Left") <= 0) {
                            Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), "eco give " + player.getName() + " " + amount);
                            player.sendMessage("You have recieved your paycheck of $400");
                            timeLeft = timeMax;
                            config.set("Player.Time-Left", timeMax);
                            try {
                                config.save(file);
                            } catch (IOException e) {
                            }
                        } else {
                            if(player.isOnline()) {
                                timeLeft--;
                                config.set("Player.Time-Left", timeLeft);
                                try {
                                    config.save(file);
                                } catch (IOException e) {
                                }
                            } else {
                                return;
                            }
                        }
                    }
                }, 20L, 200L);
            }
        }
    }
    
     
  2. Online

    timtower Administrator Administrator Moderator

    @plisov May I suggest that you use 1 runnable that handles everything instead of making a new one every join? Will highly reduce the amount of code.
     
  3. Offline

    plisov

    Em. I don't really know how to do that given the circumstances I have currently. For each rank they get paid a different amount.
     
  4. Online

    timtower Administrator Administrator Moderator

    @plisov You check the permissions IN the runnable.
    Then you just change the amount that they get.
     
  5. Offline

    plisov

    Alright, I'll try that. Besides that however, do you have any idea as to why the countdown speeds up?
     
  6. Online

    timtower Administrator Administrator Moderator

    @plisov Multiple runnables changing the same counter
     
  7. Offline

    plisov

    Ah. Okay so I assume this is what you meant. However when I join the time-left is automatically set to 0 and it doesn't reset back to 300.
    Code:
    package me.plisov.payday.listeners;
    
    import java.io.File;
    import java.io.IOException;
    
    import org.bukkit.Bukkit;
    import org.bukkit.configuration.file.FileConfiguration;
    import org.bukkit.configuration.file.YamlConfiguration;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.player.PlayerJoinEvent;
    
    import me.plisov.payday.Enable;
    import ru.tehkode.permissions.bukkit.PermissionsEx;
    
    public class onPlayerJoin implements Listener {
    
        Enable plugin;
        public onPlayerJoin(Enable plugin){
            this.plugin = plugin;
        }
    
        int amount = 50;
    
        @SuppressWarnings("deprecation")
        @EventHandler
        public void onPlayerJoinEvent(PlayerJoinEvent event) throws IOException {
    
            Player player = (Player) event.getPlayer();
    
            if(PermissionsEx.getUser(player).getGroups()[0].getName().equalsIgnoreCase("Peasant")) {
                amount = 50;
            } else if(PermissionsEx.getUser(player).getGroups()[0].getName().equalsIgnoreCase("Serf")) {
                amount = 75;
            } else if(PermissionsEx.getUser(player).getGroups()[0].getName().equalsIgnoreCase("Merchant")) {
                amount = 100;
            } else if(PermissionsEx.getUser(player).getGroups()[0].getName().equalsIgnoreCase("Knight")) {
                amount = 150;
            } else if(PermissionsEx.getUser(player).getGroups()[0].getName().equalsIgnoreCase("Noble")) {
                amount = 200;
            } else if(PermissionsEx.getUser(player).getGroups()[0].getName().equalsIgnoreCase("King")) {
                amount = 250;
            } else if(PermissionsEx.getUser(player).getGroups()[0].getName().equalsIgnoreCase("DemiGod")) {
                amount = 300;
            } else if(PermissionsEx.getUser(player).getGroups()[0].getName().equalsIgnoreCase("Immortal")) {
                amount = 400;
            }
    
            FileConfiguration config = null;
            File file = new File("plugins" + File.separator + "PayDay" + File.separator + "users" + File.separator + player.getUniqueId() + " (" + player.getName() + ")" + ".yml");
            if(!file.exists()) {
                System.out.println("File Created: " + event.getPlayer().getUniqueId()  + ".yml" + " (" + event.getPlayer().getName() + ")");
                try {
                    file.createNewFile();
                } catch (IOException e) {
                    //e.printStackTrace();
                }
                config = YamlConfiguration.loadConfiguration(file);
                config.set("Player.Name", event.getPlayer().getName());
                config.set("Player.Rank", PermissionsEx.getUser(player).getGroups()[0].getName());
                config.set("Player.Time-Left", 300);
                config.set("Player.Time-Max", 300);
                config.set("Player.Amount-Recieved", amount);
    
                try {
                    config.save(file);
                } catch (IOException e) {
                }
            }
            config = YamlConfiguration.loadConfiguration(file);
    
            Bukkit.getScheduler().scheduleSyncRepeatingTask(plugin, new Runnable() { 
                public void run() {
                    FileConfiguration config = null;
                    File file = new File("plugins" + File.separator + "PayDay" + File.separator + "users" + File.separator + player.getUniqueId() + " (" + player.getName() + ")" + ".yml");
                    config = YamlConfiguration.loadConfiguration(file);
                    int timeLeft = config.getInt("Player.Time-Left");
                    int timeMax = config.getInt("Player.Time-Max");
                    timeLeft--;
                    try {
                        config.save(file);
                    } catch (IOException e1) {
                    }
                    if(config.getInt("Player.Time-Left") <= 0) {
                        if(PermissionsEx.getUser(player).getGroups()[0].getName().equalsIgnoreCase("Peasant")) {
                        Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), "eco give " + player.getName() + " " + amount);
                        player.sendMessage("You have recieved your paycheck of $" + amount);
                        }
                       
                        if(PermissionsEx.getUser(player).getGroups()[0].getName().equalsIgnoreCase("Serf")) {
                        Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), "eco give " + player.getName() + " " + amount);
                        player.sendMessage("You have recieved your paycheck of $" + amount);
                        }
                       
                        if(PermissionsEx.getUser(player).getGroups()[0].getName().equalsIgnoreCase("Merchant")) {
                        Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), "eco give " + player.getName() + " " + amount);
                        player.sendMessage("You have recieved your paycheck of $" + amount);
                        }
                       
                        if(PermissionsEx.getUser(player).getGroups()[0].getName().equalsIgnoreCase("Knight")) {
                        Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), "eco give " + player.getName() + " " + amount);
                        player.sendMessage("You have recieved your paycheck of $" + amount);
                        }
                       
                        if(PermissionsEx.getUser(player).getGroups()[0].getName().equalsIgnoreCase("Noble")) {
                        Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), "eco give " + player.getName() + " " + amount);
                        player.sendMessage("You have recieved your paycheck of $" + amount);
                        }
                       
                        if(PermissionsEx.getUser(player).getGroups()[0].getName().equalsIgnoreCase("King")) {
                        Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), "eco give " + player.getName() + " " + amount);
                        player.sendMessage("You have recieved your paycheck of $" + amount);
                        }
                       
                        if(PermissionsEx.getUser(player).getGroups()[0].getName().equalsIgnoreCase("DemiGod")) {
                        Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), "eco give " + player.getName() + " " + amount);
                        player.sendMessage("You have recieved your paycheck of $" + amount);
                        }
                       
                        if(PermissionsEx.getUser(player).getGroups()[0].getName().equalsIgnoreCase("Immortal")) {
                        Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), "eco give " + player.getName() + " " + amount);
                        player.sendMessage("You have recieved your paycheck of $" + amount);
                        }
                       
                        config.set("Player.Time-Left", timeMax);
                        try {
                            config.save(file);
                        } catch (IOException e) {
                        }
                    } else {
                        if(player.isOnline()) {
                            timeLeft--;
                            config.set("Player.Time-Left", timeLeft);
                            try {
                                config.save(file);
                            } catch (IOException e) {
                            }
                        } else {
                            return;
                        }
                    }
                }
            }, 20L, 200L);
    
        }
    }
    
    
     
    Last edited: Jan 22, 2017
  8. Offline

    mythbusterma

    @plisov

    Can you please make the changes he asked for.
     
  9. Offline

    plisov

    I did...
     
  10. Offline

    mythbusterma

    @plisov

    No. You're still making one for each player.
     
  11. Offline

    plisov

    That's correct. I don't want them getting paid at the same exact time. Each player will get paid when their time is up
     
  12. Online

    timtower Administrator Administrator Moderator

    @plisov Then you make a HashMap<UUID,Time>
    Then you can still use the same runnable AND everybody will get paid when it is their time.
     
  13. Offline

    plisov

    Wouldn't the time reset every time the server restarted?
     
  14. Online

    timtower Administrator Administrator Moderator

    Then you save it in the onDisable and load in the onEnable.
     
Thread Status:
Not open for further replies.

Share This Page