Untitled

mail@pastecode.io avatar
unknown
plain_text
8 months ago
2.4 kB
2
Indexable
Never
package com.example.lonżowanie;

import org.bukkit.entity.Horse;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerInteractEntityEvent;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.scheduler.BukkitRunnable;

public class LonżowaniePlugin extends JavaPlugin implements Listener {

    @Override
    public void onEnable() {
        // Rejestrujemy Listener w pluginie
        getServer().getPluginManager().registerEvents(this, this);
    }

    @EventHandler
    public void onPlayerInteractEntity(PlayerInteractEntityEvent event) {
        if (!(event.getRightClicked() instanceof Horse)) return;
        Player player = event.getPlayer();
        Horse horse = (Horse) event.getRightClicked();

        // Anulowanie domyślnej interakcji, aby nie dosiadać konia
        event.setCancelled(true);

        // Sprawdzamy, czy koń jest już połączony z jakimś graczem
        if (horse.isLeashed() && horse.getLeashHolder() instanceof Player) {
            // Jeśli tak, to nie robimy nic
            return;
        }

        // Ustawiamy gracza jako trzymającego linę
        horse.setLeashHolder(player);

        // Tworzymy nowe zadanie, które będzie aktualizować pozycję konia względem gracza
        new BukkitRunnable() {
            public void run() {
                // Jeśli koń lub gracz nie są już dostępni (np. zginęli, rozłączyli się itp.), to zatrzymujemy zadanie
                if (!horse.isValid() || !player.isOnline()) {
                    this.cancel();
                    return;
                }

                // Tutaj możemy dodać logikę symulującą "ciągnięcie" konia za pomocą liny
                // Na przykład, możemy sprawdzić odległość między koniem a graczem
                // i jeśli jest większa niż określona wartość, to "ciągniemy" konia w stronę gracza

                // Poniższy kod to tylko przykład i może wymagać dostosowania
                if (horse.getLocation().distance(player.getLocation()) > 5) {
                    horse.teleport(player.getLocation().add(0, 0, 2)); // Teleportujemy konia blisko gracza, ale nie dokładnie na niego
                }
            }
        }.runTaskTimer(this, 0L, 20L); // Uruchamiamy zadanie co sekundę (20 ticków)
    }
}
Leave a Comment