Dateien nach "src/main/java/de/nexuslobby/modules" hochladen
This commit is contained in:
30
src/main/java/de/nexuslobby/modules/ItemsModule.java
Normal file
30
src/main/java/de/nexuslobby/modules/ItemsModule.java
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
package de.nexuslobby.modules;
|
||||||
|
|
||||||
|
import de.nexuslobby.api.Module;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.event.Listener;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.player.PlayerJoinEvent;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
|
public class ItemsModule implements Module, Listener {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getName() {
|
||||||
|
return "Items";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onEnable() {
|
||||||
|
Bukkit.getPluginManager().registerEvents(this, Bukkit.getPluginManager().getPlugin("NexusLobby"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onJoin(PlayerJoinEvent event) {
|
||||||
|
event.getPlayer().getInventory().addItem(new ItemStack(Material.COMPASS));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDisable() {}
|
||||||
|
}
|
||||||
94
src/main/java/de/nexuslobby/modules/ProtectionModule.java
Normal file
94
src/main/java/de/nexuslobby/modules/ProtectionModule.java
Normal file
@@ -0,0 +1,94 @@
|
|||||||
|
package de.nexuslobby.modules;
|
||||||
|
|
||||||
|
import de.nexuslobby.NexusLobby;
|
||||||
|
import de.nexuslobby.api.Module;
|
||||||
|
import de.nexuslobby.commands.BuildCommand;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.configuration.file.FileConfiguration;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.Listener;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.block.BlockBreakEvent;
|
||||||
|
import org.bukkit.event.block.BlockPlaceEvent;
|
||||||
|
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
||||||
|
import org.bukkit.event.entity.EntityPickupItemEvent;
|
||||||
|
import org.bukkit.event.player.PlayerDropItemEvent;
|
||||||
|
import org.bukkit.event.player.PlayerInteractEvent;
|
||||||
|
|
||||||
|
public class ProtectionModule implements Module, Listener {
|
||||||
|
|
||||||
|
private FileConfiguration getSettings() {
|
||||||
|
return NexusLobby.getInstance().getLobbySettingsModule().getSettingsConfig();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getName() { return "Protection"; }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onEnable() {
|
||||||
|
Bukkit.getPluginManager().registerEvents(this, NexusLobby.getInstance());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDisable() {}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onBlockBreak(BlockBreakEvent event) {
|
||||||
|
Player player = event.getPlayer();
|
||||||
|
if (BuildCommand.isInBuildMode(player)) return;
|
||||||
|
|
||||||
|
if (!getSettings().getBoolean("allowBlockBreaking", false)) {
|
||||||
|
event.setCancelled(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onBlockPlace(BlockPlaceEvent event) {
|
||||||
|
Player player = event.getPlayer();
|
||||||
|
if (BuildCommand.isInBuildMode(player)) return;
|
||||||
|
|
||||||
|
if (!getSettings().getBoolean("allowBlockPlacing", false)) {
|
||||||
|
event.setCancelled(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onInteract(PlayerInteractEvent event) {
|
||||||
|
Player player = event.getPlayer();
|
||||||
|
if (BuildCommand.isInBuildMode(player)) return;
|
||||||
|
|
||||||
|
if (!getSettings().getBoolean("allowBlockInteracting", true)) {
|
||||||
|
event.setCancelled(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onPvp(EntityDamageByEntityEvent event) {
|
||||||
|
if (event.getDamager() instanceof Player && event.getEntity() instanceof Player) {
|
||||||
|
if (!getSettings().getBoolean("allowPvp", false)) {
|
||||||
|
event.setCancelled(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onDrop(PlayerDropItemEvent event) {
|
||||||
|
if (BuildCommand.isInBuildMode(event.getPlayer())) return;
|
||||||
|
|
||||||
|
if (!getSettings().getBoolean("allowItemDropping", false)) {
|
||||||
|
event.setCancelled(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onPickup(EntityPickupItemEvent event) {
|
||||||
|
if (event.getEntity() instanceof Player) {
|
||||||
|
Player player = (Player) event.getEntity();
|
||||||
|
if (BuildCommand.isInBuildMode(player)) return;
|
||||||
|
|
||||||
|
if (!getSettings().getBoolean("allowItemPickup", false)) {
|
||||||
|
event.setCancelled(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
139
src/main/java/de/nexuslobby/modules/ScoreboardModule.java
Normal file
139
src/main/java/de/nexuslobby/modules/ScoreboardModule.java
Normal file
@@ -0,0 +1,139 @@
|
|||||||
|
package de.nexuslobby.modules;
|
||||||
|
|
||||||
|
import de.nexuslobby.NexusLobby;
|
||||||
|
import de.nexuslobby.api.Module;
|
||||||
|
import me.clip.placeholderapi.PlaceholderAPI;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.ChatColor;
|
||||||
|
import org.bukkit.configuration.file.FileConfiguration;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.scheduler.BukkitRunnable;
|
||||||
|
import org.bukkit.scoreboard.*;
|
||||||
|
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
public class ScoreboardModule implements Module {
|
||||||
|
|
||||||
|
private final NexusLobby plugin = NexusLobby.getInstance();
|
||||||
|
|
||||||
|
// Speicher für die aktuellen Spieler-Einstellungen (bis zum Restart/Reload)
|
||||||
|
private final Set<UUID> hiddenPlayers = new HashSet<>();
|
||||||
|
private final Set<UUID> adminModePlayers = new HashSet<>();
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getName() {
|
||||||
|
return "Scoreboard";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onEnable() {
|
||||||
|
FileConfiguration vConfig = plugin.getVisualsConfig();
|
||||||
|
if (!vConfig.getBoolean("scoreboard.enabled", true)) return;
|
||||||
|
|
||||||
|
new BukkitRunnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
for (Player player : Bukkit.getOnlinePlayers()) {
|
||||||
|
updateSidebar(player);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}.runTaskTimer(plugin, 0L, vConfig.getLong("scoreboard.update_ticks", 20L));
|
||||||
|
}
|
||||||
|
|
||||||
|
private void updateSidebar(Player player) {
|
||||||
|
// 1. Prüfen, ob der Spieler das Scoreboard ausgeblendet hat
|
||||||
|
if (hiddenPlayers.contains(player.getUniqueId())) {
|
||||||
|
if (player.getScoreboard() != Bukkit.getScoreboardManager().getMainScoreboard()) {
|
||||||
|
player.setScoreboard(Bukkit.getScoreboardManager().getMainScoreboard());
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
FileConfiguration vConfig = plugin.getVisualsConfig();
|
||||||
|
Scoreboard board = player.getScoreboard();
|
||||||
|
|
||||||
|
if (board == Bukkit.getScoreboardManager().getMainScoreboard()) {
|
||||||
|
board = Bukkit.getScoreboardManager().getNewScoreboard();
|
||||||
|
player.setScoreboard(board);
|
||||||
|
}
|
||||||
|
|
||||||
|
Objective obj = board.getObjective("lobby");
|
||||||
|
if (obj == null) {
|
||||||
|
obj = board.registerNewObjective("lobby", "dummy", "title");
|
||||||
|
obj.setDisplaySlot(DisplaySlot.SIDEBAR);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 2. Pfad-Logik basierend auf dem Modus (/nexus sb admin/spieler)
|
||||||
|
String configPath = "scoreboard.default";
|
||||||
|
|
||||||
|
// Wenn im Admin-Modus UND Rechte vorhanden -> owner Sektion
|
||||||
|
if (adminModePlayers.contains(player.getUniqueId()) && player.hasPermission("nexuslobby.scoreboard.admin")) {
|
||||||
|
configPath = "scoreboard.owner";
|
||||||
|
} else {
|
||||||
|
// Standardmäßig default nutzen
|
||||||
|
configPath = "scoreboard.default";
|
||||||
|
}
|
||||||
|
|
||||||
|
String title = vConfig.getString(configPath + ".title", "&6&lNexusLobby");
|
||||||
|
obj.setDisplayName(translate(player, title));
|
||||||
|
|
||||||
|
List<String> lines = vConfig.getStringList(configPath + ".lines");
|
||||||
|
|
||||||
|
// Scores zurücksetzen um Duplikate zu vermeiden
|
||||||
|
board.getEntries().forEach(board::resetScores);
|
||||||
|
|
||||||
|
for (int i = 0; i < lines.size(); i++) {
|
||||||
|
String line = translate(player, lines.get(i));
|
||||||
|
|
||||||
|
// Verhindert das Verschwinden leerer Zeilen
|
||||||
|
if (line.isEmpty() || line.trim().isEmpty()) {
|
||||||
|
line = "" + ChatColor.values()[i] + ChatColor.RESET;
|
||||||
|
}
|
||||||
|
|
||||||
|
Score score = obj.getScore(line);
|
||||||
|
score.setScore(lines.size() - i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// --- Methoden für den /nexus sb Befehl ---
|
||||||
|
|
||||||
|
public void setVisibility(Player player, boolean visible) {
|
||||||
|
if (visible) {
|
||||||
|
hiddenPlayers.remove(player.getUniqueId());
|
||||||
|
player.sendMessage("§7[§6Nexus§7] §aScoreboard eingeschaltet.");
|
||||||
|
} else {
|
||||||
|
hiddenPlayers.add(player.getUniqueId());
|
||||||
|
player.setScoreboard(Bukkit.getScoreboardManager().getMainScoreboard());
|
||||||
|
player.sendMessage("§7[§6Nexus§7] §cScoreboard ausgeschaltet.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAdminMode(Player player, boolean admin) {
|
||||||
|
if (admin) {
|
||||||
|
adminModePlayers.add(player.getUniqueId());
|
||||||
|
player.sendMessage("§7[§6Nexus§7] §eModus: §cAdmin-Scoreboard §7(Owner-Sektion)");
|
||||||
|
} else {
|
||||||
|
adminModePlayers.remove(player.getUniqueId());
|
||||||
|
player.sendMessage("§7[§6Nexus§7] §eModus: §6Spieler-Scoreboard §7(Default-Sektion)");
|
||||||
|
}
|
||||||
|
// Sofortiges Update erzwingen
|
||||||
|
updateSidebar(player);
|
||||||
|
}
|
||||||
|
|
||||||
|
private String translate(Player player, String text) {
|
||||||
|
String translated = PlaceholderAPI.setPlaceholders(player, text);
|
||||||
|
return ChatColor.translateAlternateColorCodes('&', translated);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDisable() {
|
||||||
|
for (Player player : Bukkit.getOnlinePlayers()) {
|
||||||
|
player.setScoreboard(Bukkit.getScoreboardManager().getMainScoreboard());
|
||||||
|
}
|
||||||
|
hiddenPlayers.clear();
|
||||||
|
adminModePlayers.clear();
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user