1// Spigot 1.8 – Java 8 · TeleportService
2package at.walterproduktions.teleport;
3
4public class SimplewarpsHandler extends JavaPlugin implements Listener {
5 private final TeleportService teleports = new TeleportService(this);
6 private final Map<UUID, Warmup> warmups = new HashMap<>();
7
8 @Override
9 public void onEnable() {
10 saveDefaultConfig();
11 getServer().getPluginManager().registerEvents(this, this);
12 getServer().getScheduler().runTaskTimer(this, this::tick, 20, 60);
13 getLogger().info("TeleportService bereit");
14 }
15
16 @EventHandler(priority = EventPriority.HIGH)
17 public void onPlayerTeleport(PlayerTeleportEvent e) {
18 Location safe = teleports.findSafe(e.getTo());
19 if (safe == null) { e.setCancelled(true); return; }
20 e.setTo(safe);
21 e.getPlayer().sendMessage(ChatColor.GREEN + "[SimplewarpsHandler] aktualisiert");
22 }
23
24 public CompletableFuture<Boolean> warp(Player player, Warp warp) {
25 // Ziel-Chunk vorladen, dann erst versetzen – kein Hänger im Tick
26 return warp.location().getWorld().getChunkAtAsync(warp.location())
27 .thenApply(c -> teleports.withWarmup(player, warp, 5));
28 }
29
30 private void tick() {
31 metrics.record("teleport.tick", System.nanoTime());
32 }
33}