3x java class
unknown
java
5 months ago
7.2 kB
7
Indexable
package de.cozy.worldguardaddon.dungeons; import com.sk89q.worldedit.bukkit.BukkitAdapter; import com.sk89q.worldedit.util.Location; import com.sk89q.worldguard.LocalPlayer; import com.sk89q.worldguard.bukkit.WorldGuardPlugin; import com.sk89q.worldguard.protection.regions.RegionContainer; import com.sk89q.worldguard.protection.regions.RegionQuery; import de.cozy.worldguardaddon.Manager.FlagManager; import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.bukkit.event.Listener; import org.bukkit.plugin.java.JavaPlugin; import java.util.HashSet; import java.util.Set; import java.util.UUID; public class DungeonChecker implements Listener { private final JavaPlugin plugin; private final Set<UUID> inDungeonRegion = new HashSet<>(); private final DungeonScoreboardManager dungeonScoreboardManager; public DungeonChecker(JavaPlugin plugin, DungeonScoreboardManager dungeonScoreboardManager) { this.plugin = plugin; this.dungeonScoreboardManager = dungeonScoreboardManager; startDungeonCheckTask(); } private void startDungeonCheckTask() { Bukkit.getScheduler().runTaskTimer(plugin, () -> { for (Player player : Bukkit.getOnlinePlayers()) { checkPlayerInDungeonRegion(player); } }, 0L, 20L); } private void checkPlayerInDungeonRegion(Player player) { Location loc = BukkitAdapter.adapt(player.getLocation()); RegionContainer cont = FlagManager.GetWorldGuardAPI().getPlatform().getRegionContainer(); RegionQuery query = cont.createQuery(); LocalPlayer lpl = WorldGuardPlugin.inst().wrapPlayer(player); if (query.testState(loc, lpl, FlagManager.GetDungeonsFlag())) { if (!inDungeonRegion.contains(player.getUniqueId())) { dungeonScoreboardManager.sendDungeonScoreboard(player); inDungeonRegion.add(player.getUniqueId()); } } else { if (inDungeonRegion.contains(player.getUniqueId())) { dungeonScoreboardManager.removeDungeonScoreboard(player); inDungeonRegion.remove(player.getUniqueId()); } } } } ////// package de.cozy.worldguardaddon.dungeons; import de.cozy.worldguardaddon.Manager.FlagManager; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.entity.Player; import org.bukkit.scoreboard.*; import me.clip.placeholderapi.PlaceholderAPI; // Stelle sicher, dass du PlaceholderAPI als Abhängigkeit hast import java.util.List; public class DungeonScoreboardManager { private FileConfiguration config; public DungeonScoreboardManager(FileConfiguration config) { this.config = config; // Config wird hier geladen } public void sendDungeonScoreboard(Player player) { ScoreboardManager manager = Bukkit.getScoreboardManager(); Scoreboard board = manager.getNewScoreboard(); String title = ChatColor.translateAlternateColorCodes('&', config.getString("dungeon-board.title")); Objective objective = board.registerNewObjective("dungeonBoard", "dummy", title); objective.setDisplaySlot(DisplaySlot.SIDEBAR); List<String> lines = config.getStringList("dungeon-board.lines"); int scoreValue = lines.size(); for (String line : lines) { String parsedLine = PlaceholderAPI.setPlaceholders(player, line); Score score = objective.getScore(ChatColor.translateAlternateColorCodes('&', parsedLine)); score.setScore(scoreValue--); } player.setScoreboard(board); } public void removeDungeonScoreboard(Player player) { ScoreboardManager manager = Bukkit.getScoreboardManager(); Scoreboard emptyBoard = manager.getNewScoreboard(); player.setScoreboard(emptyBoard); } public static void updateDungeonScoreboard(Player player) { DungeonScoreboardManager scoreboardManager = new DungeonScoreboardManager(FlagManager.GetConfigReader()); scoreboardManager.sendDungeonScoreboard(player); } } //// package de.cozy.worldguardaddon.dungeons; import com.sk89q.worldedit.bukkit.BukkitAdapter; import com.sk89q.worldedit.util.Location; import com.sk89q.worldguard.LocalPlayer; import com.sk89q.worldguard.bukkit.WorldGuardPlugin; import com.sk89q.worldguard.protection.regions.RegionContainer; import com.sk89q.worldguard.protection.regions.RegionQuery; import de.cozy.worldguardaddon.Manager.FlagManager; import de.cozy.worldguardaddon.Manager.StatsManager; import org.bukkit.entity.Entity; import org.bukkit.entity.Monster; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.entity.EntityDamageByEntityEvent; import org.bukkit.event.entity.EntityDeathEvent; import org.bukkit.event.entity.PlayerDeathEvent; public class DungeonStatsListener implements Listener { private boolean isInDungeonRegion(Player player) { Location loc = BukkitAdapter.adapt(player.getLocation()); RegionContainer container = FlagManager.GetWorldGuardAPI().getPlatform().getRegionContainer(); RegionQuery query = container.createQuery(); LocalPlayer localPlayer = WorldGuardPlugin.inst().wrapPlayer(player); return query.testState(loc, localPlayer, FlagManager.GetDungeonsFlag()); } @EventHandler public void onPlayerDeath(PlayerDeathEvent event) { Player victim = event.getEntity(); if (isInDungeonRegion(victim)) { StatsManager.addDungeonDeath(victim); } } @EventHandler public void onPlayerDamage(EntityDamageByEntityEvent event) { if (event.getEntity() instanceof Player && event.getDamager() instanceof Monster) { Player victim = (Player) event.getEntity(); if (isInDungeonRegion(victim)) { StatsManager.addDungeonDamageTaken(victim, event.getDamage()); DungeonScoreboardManager.updateDungeonScoreboard(victim); } } } @EventHandler public void onPlayerDealDamage(EntityDamageByEntityEvent event) { if (event.getEntity() instanceof Monster && event.getDamager() instanceof Player) { Player attacker = (Player) event.getDamager(); if (isInDungeonRegion(attacker)) { StatsManager.addDungeonDamageDealt(attacker, event.getDamage()); DungeonScoreboardManager.updateDungeonScoreboard(attacker); } } } @EventHandler public void onMonsterKill(EntityDeathEvent event) { Entity entity = event.getEntity(); Player killer = event.getEntity().getKiller(); if (killer != null && entity instanceof Monster && isInDungeonRegion(killer)) { StatsManager.addDungeonKill(killer); DungeonScoreboardManager.updateDungeonScoreboard(killer); } } }
Editor is loading...
Leave a Comment