Untitled
unknown
plain_text
2 years ago
2.4 kB
9
Indexable
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)
}
}
Editor is loading...
Leave a Comment