Untitled
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