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