3x java class
unknown
java
a year ago
7.2 kB
11
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