3x java class

 avatar
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