Solved Scheduler TPA-Plugin help please

Discussion in 'Plugin Development' started by Zettos, Sep 26, 2020.

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

    Zettos

    I wrote a Tpa plugin. When the player tip /tpaccept, than the "tpatimerscheduler" had to stop normally, but thats not the case. I hop you can help me out.

    Best regards Zettos

    Class:
    Code:
    package de.worldextras.tpa;
    
    import java.util.ArrayList;
    import java.util.UUID;
    
    import org.bukkit.Bukkit;
    import org.bukkit.Location;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandExecutor;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.Player;
    
    import de.worldextras.Main;
    import de.worldextras.cache.Cache;
    
    public class TPA_CMD implements CommandExecutor{
       
        private static ArrayList<UUID> tpas = new ArrayList<UUID>();
        public int times = 6;
        //public static HashMap<Player, Player> tpa = new HashMap<Player, Player>();
        public int timertimes = 21;
        int tpascheduler = 1;
        int tpatimerscheduler = 2;
       
       
        @SuppressWarnings("deprecation")
        @Override
        public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
            Player p = (Player) sender;
            if(!p.hasPermission("WorldExtras.tpa")) {
                p.sendMessage(Cache.np);
                return true;
            }
            if(command.getName().equalsIgnoreCase("tpa")) {
                if(args.length == 0) {
                    p.sendMessage(Cache.fm+"/tpa <Spieler>");
                    return true;
                }else if(args.length == 1){
                    try {
                        Player t = Bukkit.getPlayer(args[0]);
                        tpas.add(p.getUniqueId());
                        Cache.tpa.put(t, p);
               
                        t.sendMessage(Cache.pr+"§9"+p.getName()+" §bmöchte sich zu dir Teleportieren. §eBenutze /tpaccept §bzum Aktzeptiren!");
                        p.sendMessage(Cache.pr+"§bDu hast §9"+args[0]+" §beine TPA-Anfrage gesendet!");
                        t.sendMessage(Cache.pr+"§cDu hast 20 Sekunden Zeit bis die TPA-Anfrage abläuft!");
                        timertimes = 21;
                        tpatimerscheduler = Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(Main.getInstance(), new Runnable() {
                           
                            @Override
                            public void run() {
                               
                                if(timertimes == 1) {
                                   
                                       
                                        p.sendMessage(Cache.pr+"§cDie TPA-Anfrage für "+t.getName()+" ist abgelaufen!");
                                        t.sendMessage(Cache.pr+"§cDie TPA-Anfrage ist abgelaufen!");
                                        Cache.tpa.remove(t);
                                        tpas.remove(p.getUniqueId());
                                        Bukkit.getServer().getScheduler().cancelTask(tpatimerscheduler);
                                       
                                }else {
                                   
                                    timertimes--;
                                   
                                }
                               
                               
                            }
                        }, 0, 20);
                       
                       
                        return true;
                       
                    } catch (Exception e) {
                        p.sendMessage(Cache.no);
                        return true;
                    }
                }else {
                    p.sendMessage(Cache.fm+"/tpa <Spieler>");
                    return true;
                }
            }
            if(command.getName().equalsIgnoreCase("tpaccept")) {
               
                if(args.length == 0) {
                    Player t = Cache.tpa.get(p);
                    if(!Cache.tpa.containsKey(p)) {
                        p.sendMessage(Cache.pr+"§cDu hast keine TPA-Anfragen!");
                        return true;
                    }else {
                        Location ploc = t.getLocation();
                        int x = ploc.getBlockX();
                        int y = ploc.getBlockY();
                        int z = ploc.getBlockZ();
                        times = 6;
                        p.sendMessage(Cache.pr+"§bTPA-Anfrage von §9"+t.getName()+" §bwurde angenommen!");
                        t.sendMessage(Cache.pr+"§9"+p.getName()+" §bhat deine TPA-Anfrage angenommen!");
                        Bukkit.getServer().getScheduler().cancelTask(tpatimerscheduler);
                        tpascheduler = Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(Main.getInstance(), new Runnable() {
                           
                            @Override
                            public void run() {
                                if(times == 1) {
                                   
                                    t.teleport(p);
                                    p.sendMessage(Cache.pr+"§9"+t.getName()+" §bwurde zu dir Teleportiert!");
                                    Cache.tpa.remove(p);
                                    tpas.remove(t.getUniqueId());
                                    t.sendMessage(Cache.pr+"§bDu wurdest zur §9"+p.getName()+" §bteleportiert!");
    
                                   
                                    Bukkit.getServer().getScheduler().cancelTask(tpascheduler);
                                }else {
                                    int px = t.getLocation().getBlockX();
                                    int py = t.getLocation().getBlockY();
                                    int pz = t.getLocation().getBlockZ();
                                    if(x == px) {
                                        if(y == py) {
                                            if(z == pz) {
                                                times--;
                                                t.sendMessage(Cache.pr+"§bDu wirst in §c"+times+" Sekunden §bteleportiert! §cBewege dich nicht!");
                                            }else {
                                                t.sendMessage(Cache.pr+"§cTeleportation abgebochen, du hast dich Bewegt!");
                                                p.sendMessage(Cache.pr+"§cTeleportation von §9"+t.getName()+" §cwurde abgebrochen!");
                                                Bukkit.getServer().getScheduler().cancelTask(tpascheduler);
                                            }
                                        }else {
                                            t.sendMessage(Cache.pr+"§cTeleportation abgebochen, du hast dich Bewegt!");
                                            p.sendMessage(Cache.pr+"§cTeleportation von §9"+t.getName()+" §cwurde abgebrochen!");
                                            Bukkit.getServer().getScheduler().cancelTask(tpascheduler);
                                        }
                                    }else {
                                        t.sendMessage(Cache.pr+"§cTeleportation abgebochen, du hast dich Bewegt!");
                                        p.sendMessage(Cache.pr+"§cTeleportation von §9"+t.getName()+" §cwurde abgebrochen!");
                                        Bukkit.getServer().getScheduler().cancelTask(tpascheduler);
                                    }
                                }
                               
                            }
                        }, 0, 20);
                        return true;
                    }
                }else {
                    p.sendMessage(Cache.fm+"/tpaccept");
                    return true;
                }
               
            }
            return false;
        }
    
    }
    
    The Text is in German, Sorry
     
Thread Status:
Not open for further replies.

Share This Page