From 0386720eacda1fe0133e5fb8c53870a54547a2be Mon Sep 17 00:00:00 2001 From: M_Viper Date: Fri, 22 Aug 2025 11:59:38 +0000 Subject: [PATCH] Dateien nach "src/main/java/com/viper/PlaceholderSIGN/handler" hochladen --- .../PlaceholderSIGN/handler/SignListener.java | 97 +++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 src/main/java/com/viper/PlaceholderSIGN/handler/SignListener.java diff --git a/src/main/java/com/viper/PlaceholderSIGN/handler/SignListener.java b/src/main/java/com/viper/PlaceholderSIGN/handler/SignListener.java new file mode 100644 index 0000000..ca52c4b --- /dev/null +++ b/src/main/java/com/viper/PlaceholderSIGN/handler/SignListener.java @@ -0,0 +1,97 @@ +package com.viper.PlaceholderSIGN.handler; + +import com.viper.PlaceholderSIGN.Main; +import com.viper.PlaceholderSIGN.sign.PlaceholderSign; +import java.util.ArrayList; +import java.util.Arrays; +import org.bukkit.Bukkit; +import org.bukkit.block.Sign; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.Listener; +import org.bukkit.event.block.BlockBreakEvent; +import org.bukkit.event.block.SignChangeEvent; +import org.bukkit.event.entity.EntityDamageEvent; +import org.bukkit.event.player.PlayerGameModeChangeEvent; +import org.bukkit.event.player.PlayerLevelChangeEvent; +import org.bukkit.event.player.PlayerMoveEvent; +import org.bukkit.event.player.PlayerRespawnEvent; +import org.bukkit.event.player.PlayerTeleportEvent; +import org.bukkit.event.player.PlayerItemHeldEvent; +import org.bukkit.plugin.Plugin; + +public class SignListener implements Listener { + public SignListener() { + Bukkit.getPluginManager().registerEvents(this, (Plugin) Main.getInstance()); + } + + @EventHandler + public void onSignPlace(SignChangeEvent e) { + Sign s = (Sign) e.getBlock().getState(); + for (String r : e.getLines()) { + if (!Main.getPSManager().isPlaceholderSign(s) && e.getPlayer().hasPermission("papisign.createsign") && + (r.contains("%"))) { + Main.getPSManager().createSign(s, new ArrayList<>(Arrays.asList(e.getLines()))); + } + } + } + + @EventHandler + public void onBreak(BlockBreakEvent e) { + if (e.getBlock().getState() instanceof Sign) { + Sign s = (Sign) e.getBlock().getState(); + if (Main.getPSManager().isPlaceholderSign(s)) { + Main.getPSManager().removeSign(s); + } + } + } + + @EventHandler(priority = EventPriority.MONITOR) + public void onGameModeChange(PlayerGameModeChangeEvent e) { + if (e.isCancelled()) return; + Bukkit.getScheduler().runTaskLater((Plugin) Main.getInstance(), () -> { + Main.getPSManager().forceUpdate(e.getPlayer()); + }, 1L); + } + + @EventHandler(priority = EventPriority.LOW) + public void onMove(PlayerMoveEvent e) { + if (e.getFrom().getChunk() != e.getTo().getChunk()) { + Main.getPSManager().isInside(e.getPlayer()); + } + } + + @EventHandler(priority = EventPriority.LOW) + public void onTp(PlayerTeleportEvent e) { + Main.getPSManager().isInside(e.getPlayer()); + } + + @EventHandler(priority = EventPriority.LOW) + public void onRespawn(PlayerRespawnEvent e) { + Main.getPSManager().isInside(e.getPlayer()); + } + + @EventHandler(priority = EventPriority.LOW) + public void onDamage(EntityDamageEvent e) { + if (e.getEntity() instanceof Player) { + Bukkit.getScheduler().runTaskLater((Plugin) Main.getInstance(), () -> { + Main.getPSManager().forceUpdate((Player) e.getEntity()); + }, 1L); + } + } + + @EventHandler(priority = EventPriority.LOW) + public void onLevelChange(PlayerLevelChangeEvent e) { + Bukkit.getScheduler().runTaskLater((Plugin) Main.getInstance(), () -> { + Main.getPSManager().forceUpdate(e.getPlayer()); + }, 1L); + } + + @EventHandler(priority = EventPriority.LOW) + public void onItemHeld(PlayerItemHeldEvent e) { + Bukkit.getScheduler().runTaskLater((Plugin) Main.getInstance(), () -> { + Main.getPSManager().forceUpdate(e.getPlayer()); + }, 1L); + } +} \ No newline at end of file