[CODE HELP] - ArrayList

Status
This thread has been locked.

Joshua

Banned
Feedback score
1
Posts
116
Reactions
13
Resources
0
I have no clue what's happening and why it's doing this.. Am I in the arraylist or am I not?
Please follow the broadcasts numbers between 1-6

I am currently getting
1, 2, 4

So 1 = i have a bed so thats fine
So 2 = its teleporting me when means I am in teleporting arraylist? since it has to contain my name to broadcast 2
So 4 = Means the event is working and when i move it broadcasts, but its not doing 5 which means im NOT in the arraylist?


Main Class:

Code:
public class main extends JavaPlugin implements Listener{
    
    static main instance;
    
    public void onEnable() {
        instance = this;
        Bukkit.getServer().getPluginManager().registerEvents(new BedTeleport(), this);
        getCommand("Bed").setExecutor(new BedTeleport());
        getCommand("AdminBed").setExecutor(new BedTeleport());
    }
    
    public static main getInstance() {
        return instance;
    }
}

BedTeleport.class

Code:
public class BedTeleport implements Listener, CommandExecutor{

    public ArrayList<String> teleporting = new ArrayList<String>();
    int taskID;
    
    
@Override
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
        if(cmd.getName().equalsIgnoreCase("bed")) {
            Player player = (Player) sender;
            if(player.getBedSpawnLocation() != null) {
                Bukkit.broadcastMessage("1");
                teleporting.add(player.getName());
                player.sendMessage(ChatColor.translateAlternateColorCodes('&', "&7&l(&4&l!&7&l) &3Teleporting...."));
                taskID = Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(main.getInstance(), new Runnable() {
                    public void run() {
                        if(teleporting.contains(player.getName())) {
                            player.teleport(player.getBedSpawnLocation());
                            Bukkit.broadcastMessage("2");
                        } else {
                            Bukkit.broadcastMessage("3");
                        }
                    }
                }, 5 * 20);
            } else {
                player.sendMessage(ChatColor.translateAlternateColorCodes('&', "&7&l(&4&l!&7&l) &3You don't have a bed spawnpoint!"));
                return true;
            }
        }
        
    @EventHandler
    public void onPlayerMovement(PlayerMoveEvent event) {
        Player player = event.getPlayer();
        Bukkit.broadcastMessage("4");
        if(teleporting.contains(player.getName())) {
            Bukkit.broadcastMessage("5");
            if(event.getFrom().getBlockX() != event.getTo().getBlockX() || event.getFrom().getBlockZ() != event.getTo().getBlockZ()) {
                Bukkit.broadcastMessage("6");
                Bukkit.getServer().getScheduler().cancelTask(taskID);
                teleporting.remove(player.getName());
                player.sendMessage(ChatColor.translateAlternateColorCodes('&', "&7&l(&4&l!&7&l) &3Teleportation cancelled due to movement!"));
            }
        }
    }
}
 
Type
Requesting
Provided by
Individual
PebbleHost
High performance, consistent uptime and fast support. Minecraft hosting that just works.

Ambrosia

Premium
Feedback score
22
Posts
2,340
Reactions
1,384
Resources
0
I have no clue what's happening and why it's doing this.. Am I in the arraylist or am I not?
Please follow the broadcasts numbers between 1-6

I am currently getting
1, 2, 4

So 1 = i have a bed so thats fine
So 2 = its teleporting me when means I am in teleporting arraylist? since it has to contain my name to broadcast 2
So 4 = Means the event is working and when i move it broadcasts, but its not doing 5 which means im NOT in the arraylist?


Main Class:

Code:
public class main extends JavaPlugin implements Listener{
   
    static main instance;
   
    public void onEnable() {
        instance = this;
        Bukkit.getServer().getPluginManager().registerEvents(new BedTeleport(), this);
        getCommand("Bed").setExecutor(new BedTeleport());
        getCommand("AdminBed").setExecutor(new BedTeleport());
    }
   
    public static main getInstance() {
        return instance;
    }
}

BedTeleport.class

Code:
public class BedTeleport implements Listener, CommandExecutor{

    public ArrayList<String> teleporting = new ArrayList<String>();
    int taskID;
   
   
@Override
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
        if(cmd.getName().equalsIgnoreCase("bed")) {
            Player player = (Player) sender;
            if(player.getBedSpawnLocation() != null) {
                Bukkit.broadcastMessage("1");
                teleporting.add(player.getName());
                player.sendMessage(ChatColor.translateAlternateColorCodes('&', "&7&l(&4&l!&7&l) &3Teleporting...."));
                taskID = Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(main.getInstance(), new Runnable() {
                    public void run() {
                        if(teleporting.contains(player.getName())) {
                            player.teleport(player.getBedSpawnLocation());
                            Bukkit.broadcastMessage("2");
                        } else {
                            Bukkit.broadcastMessage("3");
                        }
                    }
                }, 5 * 20);
            } else {
                player.sendMessage(ChatColor.translateAlternateColorCodes('&', "&7&l(&4&l!&7&l) &3You don't have a bed spawnpoint!"));
                return true;
            }
        }
       
    @EventHandler
    public void onPlayerMovement(PlayerMoveEvent event) {
        Player player = event.getPlayer();
        Bukkit.broadcastMessage("4");
        if(teleporting.contains(player.getName())) {
            Bukkit.broadcastMessage("5");
            if(event.getFrom().getBlockX() != event.getTo().getBlockX() || event.getFrom().getBlockZ() != event.getTo().getBlockZ()) {
                Bukkit.broadcastMessage("6");
                Bukkit.getServer().getScheduler().cancelTask(taskID);
                teleporting.remove(player.getName());
                player.sendMessage(ChatColor.translateAlternateColorCodes('&', "&7&l(&4&l!&7&l) &3Teleportation cancelled due to movement!"));
            }
        }
    }
}
You're creating 2 objects of the same class, meaning you have 2 different lists. Separate the event in a listener class and the command in a command class, or just use 1 object.
 

Joshua

Banned
Feedback score
1
Posts
116
Reactions
13
Resources
0
Of course, I see now. Thanks so much I've separated the classes and fixed the issue
 
Banned forever. Reason: Scamming (https://builtbybit.com/threads/joshua-v-enegal-transaction-dispute.720897/)
Status
This thread has been locked.
Top