listener y timer

 avatar
unknown
java
8 months ago
2.6 kB
6
Indexable
package com.tnttag;

import org.bukkit.entity.Player;
import org.bukkit.event.Listener;
import org.bukkit.event.EventHandler;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.event.player.PlayerTeleportEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.Material;
import org.bukkit.scheduler.BukkitRunnable;
import org.bukkit.plugin.java.JavaPlugin;

public class GameMechanics implements Listener {

    private TNTTagPlugin plugin;

    public GameMechanics(TNTTagPlugin plugin) {
        this.plugin = plugin;
    }

    @EventHandler
    public void onPlayerInteract(PlayerInteractEvent event) {
        Player player = event.getPlayer();
        if (player.getInventory().getItemInMainHand().getType() == Material.TNT) {
            // Lógica para pasar el TNT a otro jugador
            passTNT(player);
        }
    }

    private void passTNT(Player player) {
        // Lógica para encontrar a otro jugador y pasarle el TNT
        Player target = findTarget(player); // Implementa cómo buscar un jugador cercano
        if (target != null) {
            player.sendMessage("¡Le has pasado el TNT a " + target.getName() + "!");
            target.getInventory().addItem(new ItemStack(Material.TNT));
            startTNTTimer(target);
        }
    }

    private void startTNTTimer(final Player player) {
        new BukkitRunnable() {
            int timeLeft = 10; // El TNT explota después de 10 segundos

            @Override
            public void run() {
                if (timeLeft == 0) {
                    player.sendMessage("¡El TNT ha explotado!");
                    player.setHealth(0); // O eliminarlo de alguna forma
                    cancel();
                } else {
                    player.sendMessage("El TNT explotará en " + timeLeft + " segundos.");
                    timeLeft--;
                }
            }
        }.runTaskTimer(plugin, 0L, 20L); // Ejecuta cada segundo
    }

    private Player findTarget(Player player) {
        // Encuentra un jugador cercano al que pasarle el TNT (implementación simple)
        for (Player target : plugin.getServer().getOnlinePlayers()) {
            if (!target.equals(player)) {
                return target;
            }
        }
        return null;
    }

    @EventHandler
    public void onPlayerQuit(PlayerQuitEvent event) {
        Player player = event.getPlayer();
        // Elimina al jugador de la lista si se va
        playersInGame.remove(player);
    }
}
Editor is loading...
Leave a Comment