diff --git a/Lobby/src/main/java/de/fanta/lobby/listeners/PlayerListener.java b/Lobby/src/main/java/de/fanta/lobby/listeners/PlayerListener.java index f0ffc81..a54c38f 100644 --- a/Lobby/src/main/java/de/fanta/lobby/listeners/PlayerListener.java +++ b/Lobby/src/main/java/de/fanta/lobby/listeners/PlayerListener.java @@ -1,12 +1,14 @@ package de.fanta.lobby.listeners; +import de.fanta.challengeutils.Color; +import de.fanta.challengeutils.ItemUtils; import de.fanta.lobby.Lobby; -import de.fanta.lobby.ChatUtil; import de.iani.cubesideutils.bukkit.plugin.CubesideUtilsBukkit; import de.iani.cubesideutils.bukkit.plugin.api.UtilsApiBukkit; import de.iani.cubesideutils.plugin.api.PlayerData; import de.speedy64.globalport.GlobalApi; import de.speedy64.globalport.data.GPLocation; +import net.kyori.adventure.text.Component; import org.bukkit.GameMode; import org.bukkit.Location; import org.bukkit.Material; @@ -30,15 +32,19 @@ import org.spigotmc.event.player.PlayerSpawnLocationEvent; import java.util.Collection; +import java.util.HashMap; +import java.util.UUID; public class PlayerListener implements Listener { private final Lobby plugin; private final NamespacedKey namespacedKey; + private final HashMap lastPlayerStepLocation; public PlayerListener(Lobby plugin) { this.plugin = plugin; this.namespacedKey = new NamespacedKey(plugin, "backitem"); + this.lastPlayerStepLocation = new HashMap<>(); } @EventHandler @@ -52,13 +58,21 @@ player.setVelocity(direction.multiply(-0.75).setY(0.5)); } } + + if (player.isOnGround()) { + lastPlayerStepLocation.put(player.getUniqueId(), player.getLocation()); + } + + if (player.getY() < 0) { + Location lastStepLocation = lastPlayerStepLocation.getOrDefault(player.getUniqueId(), player.getWorld().getSpawnLocation()); + player.teleport(lastStepLocation); + } } @EventHandler public void onPlayerJoin(PlayerJoinEvent e) { - ItemStack itemStack = new ItemStack(Material.LIME_BED, 1); + ItemStack itemStack = ItemUtils.createGuiItem(Material.LIME_BED, Component.text("Zurück zum Spawn", Color.GREEN)); ItemMeta meta = itemStack.getItemMeta(); - meta.setDisplayName(ChatUtil.GREEN + "Zurück zum Spawn"); meta.getPersistentDataContainer().set(namespacedKey, PersistentDataType.STRING, "backitem"); itemStack.setItemMeta(meta); e.getPlayer().getInventory().setItem(8, itemStack); @@ -66,7 +80,7 @@ @EventHandler public void onPlayerSpawn(PlayerSpawnLocationEvent e) { - plugin.getScheduler().runDelayedOnEntity(e.getPlayer(), () -> { + plugin.getServer().getScheduler().runTaskLater(plugin, () -> { PlayerData data = UtilsApiBukkit.getInstance().getPlayerData(e.getPlayer()); if (data.getLastJoin() + (10 * 1000) > System.currentTimeMillis()) { String hosteName = CubesideUtilsBukkit.getInstance().getPlayerData(e.getPlayer()).getHostName().toLowerCase(); @@ -119,11 +133,9 @@ @EventHandler public void onItemSwitchHand(PlayerSwapHandItemsEvent e) { ItemStack stack = e.getOffHandItem(); - if (stack != null) { - ItemMeta meta = stack.getItemMeta(); - if (meta != null && meta.getPersistentDataContainer().has(namespacedKey) && e.getPlayer().getGameMode() != GameMode.CREATIVE) { - e.setCancelled(true); - } + ItemMeta meta = stack.getItemMeta(); + if (meta != null && meta.getPersistentDataContainer().has(namespacedKey) && e.getPlayer().getGameMode() != GameMode.CREATIVE) { + e.setCancelled(true); } }