Dateien nach "src/main/java/de/nexuslobby/utils" hochladen
This commit is contained in:
78
src/main/java/de/nexuslobby/utils/ConfigUpdater.java
Normal file
78
src/main/java/de/nexuslobby/utils/ConfigUpdater.java
Normal file
@@ -0,0 +1,78 @@
|
|||||||
|
package de.nexuslobby.utils;
|
||||||
|
|
||||||
|
import de.nexuslobby.NexusLobby;
|
||||||
|
import org.bukkit.configuration.file.FileConfiguration;
|
||||||
|
import org.bukkit.configuration.file.YamlConfiguration;
|
||||||
|
|
||||||
|
import java.io.*;
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class ConfigUpdater {
|
||||||
|
|
||||||
|
public static void updateConfig(String fileName) {
|
||||||
|
NexusLobby plugin = NexusLobby.getInstance();
|
||||||
|
File configFile = new File(plugin.getDataFolder(), fileName);
|
||||||
|
|
||||||
|
if (!configFile.exists()) {
|
||||||
|
plugin.saveResource(fileName, false);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
FileConfiguration serverConfig = YamlConfiguration.loadConfiguration(configFile);
|
||||||
|
List<String> newFileContent = new ArrayList<>();
|
||||||
|
|
||||||
|
try (BufferedReader reader = new BufferedReader(new InputStreamReader(plugin.getResource(fileName), StandardCharsets.UTF_8))) {
|
||||||
|
String line;
|
||||||
|
while ((line = reader.readLine()) != null) {
|
||||||
|
String trimmed = line.trim();
|
||||||
|
|
||||||
|
// 1. Kommentare, Leerzeilen und Listen-Elemente direkt übernehmen
|
||||||
|
if (trimmed.startsWith("#") || trimmed.isEmpty() || trimmed.startsWith("-")) {
|
||||||
|
newFileContent.add(line);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 2. Prüfen ob es ein Key ist
|
||||||
|
if (trimmed.contains(":") && !trimmed.startsWith("-")) {
|
||||||
|
String key = trimmed.split(":")[0];
|
||||||
|
|
||||||
|
// WICHTIG: Nur wenn der Key KEINE Sektion ist, darf er überschrieben werden
|
||||||
|
if (serverConfig.contains(key) && !serverConfig.isConfigurationSection(key)) {
|
||||||
|
String indentation = line.substring(0, line.indexOf(trimmed));
|
||||||
|
Object value = serverConfig.get(key);
|
||||||
|
newFileContent.add(indentation + key + ": " + formatValue(value));
|
||||||
|
} else {
|
||||||
|
// Es ist eine Sektion oder ein neuer Key -> Original aus JAR übernehmen
|
||||||
|
newFileContent.add(line);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
newFileContent.add(line);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
// 3. Datei sauber speichern
|
||||||
|
try (BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(configFile), StandardCharsets.UTF_8))) {
|
||||||
|
for (String outputLine : newFileContent) {
|
||||||
|
writer.write(outputLine);
|
||||||
|
writer.newLine();
|
||||||
|
}
|
||||||
|
} catch (IOException e) {
|
||||||
|
plugin.getLogger().severe("Konnte " + fileName + " nicht speichern!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String formatValue(Object value) {
|
||||||
|
if (value == null) return "";
|
||||||
|
if (value instanceof String) {
|
||||||
|
// Verhindert das "Zerschießen" der Config durch Sonderzeichen
|
||||||
|
String s = (String) value;
|
||||||
|
return "\"" + s.replace("\"", "\\\"") + "\"";
|
||||||
|
}
|
||||||
|
return value.toString();
|
||||||
|
}
|
||||||
|
}
|
||||||
50
src/main/java/de/nexuslobby/utils/DoubleJump.java
Normal file
50
src/main/java/de/nexuslobby/utils/DoubleJump.java
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
package de.nexuslobby.utils;
|
||||||
|
|
||||||
|
import de.nexuslobby.NexusLobby;
|
||||||
|
import org.bukkit.GameMode;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.Listener;
|
||||||
|
import org.bukkit.event.player.PlayerJoinEvent;
|
||||||
|
import org.bukkit.event.player.PlayerMoveEvent;
|
||||||
|
import org.bukkit.event.player.PlayerToggleFlightEvent;
|
||||||
|
import org.bukkit.util.Vector;
|
||||||
|
|
||||||
|
public class DoubleJump implements Listener {
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onJoin(PlayerJoinEvent event) {
|
||||||
|
if (NexusLobby.getInstance().getConfig().getBoolean("doublejump.enabled", true)) {
|
||||||
|
event.getPlayer().setAllowFlight(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onFly(PlayerToggleFlightEvent event) {
|
||||||
|
Player player = event.getPlayer();
|
||||||
|
if (player.getGameMode() == GameMode.CREATIVE || player.getGameMode() == GameMode.SPECTATOR) return;
|
||||||
|
|
||||||
|
if (NexusLobby.getInstance().getConfig().getBoolean("doublejump.enabled", true)) {
|
||||||
|
event.setCancelled(true);
|
||||||
|
player.setAllowFlight(false);
|
||||||
|
player.setFlying(false);
|
||||||
|
|
||||||
|
double velocity = NexusLobby.getInstance().getConfig().getDouble("doublejump.velocity", 1.0);
|
||||||
|
double horizontal = NexusLobby.getInstance().getConfig().getDouble("doublejump.horizontal", 0.2);
|
||||||
|
|
||||||
|
Vector v = player.getLocation().getDirection().multiply(horizontal).setY(velocity);
|
||||||
|
player.setVelocity(v);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onMove(PlayerMoveEvent event) {
|
||||||
|
Player player = event.getPlayer();
|
||||||
|
if (player.getGameMode() != GameMode.CREATIVE && player.getLocation().subtract(0, 0.1, 0).getBlock().getType() != Material.AIR) {
|
||||||
|
if (NexusLobby.getInstance().getConfig().getBoolean("doublejump.enabled", true)) {
|
||||||
|
player.setAllowFlight(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
8
src/main/java/de/nexuslobby/utils/ExampleUtils.java
Normal file
8
src/main/java/de/nexuslobby/utils/ExampleUtils.java
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
package de.nexuslobby.utils;
|
||||||
|
|
||||||
|
public class ExampleUtils {
|
||||||
|
|
||||||
|
public static String format(String text) {
|
||||||
|
return text.replace("&", "§");
|
||||||
|
}
|
||||||
|
}
|
||||||
32
src/main/java/de/nexuslobby/utils/MaintenanceListener.java
Normal file
32
src/main/java/de/nexuslobby/utils/MaintenanceListener.java
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
package de.nexuslobby.utils;
|
||||||
|
|
||||||
|
import de.nexuslobby.NexusLobby;
|
||||||
|
import org.bukkit.ChatColor;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.EventPriority;
|
||||||
|
import org.bukkit.event.Listener;
|
||||||
|
import org.bukkit.event.player.PlayerLoginEvent;
|
||||||
|
|
||||||
|
public class MaintenanceListener implements Listener {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gibt zurück, ob der Wartungsmodus in der Config aktiviert ist.
|
||||||
|
* Wird für den PlaceholderAPI-Platzhalter benötigt.
|
||||||
|
*/
|
||||||
|
public static boolean isMaintenance() {
|
||||||
|
return NexusLobby.getInstance().getConfig().getBoolean("maintenance.enabled", false);
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler(priority = EventPriority.HIGHEST)
|
||||||
|
public void onLogin(PlayerLoginEvent event) {
|
||||||
|
if (isMaintenance()) {
|
||||||
|
// Wenn der Spieler kein OP ist und keine Permission hat
|
||||||
|
if (!event.getPlayer().isOp() && !event.getPlayer().hasPermission("nexuslobby.join.maintenance")) {
|
||||||
|
String kickMsg = ChatColor.translateAlternateColorCodes('&',
|
||||||
|
NexusLobby.getInstance().getConfig().getString("maintenance.kick_message", "&cWartungsarbeiten!"));
|
||||||
|
|
||||||
|
event.disallow(PlayerLoginEvent.Result.KICK_OTHER, kickMsg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
70
src/main/java/de/nexuslobby/utils/PlayerHider.java
Normal file
70
src/main/java/de/nexuslobby/utils/PlayerHider.java
Normal file
@@ -0,0 +1,70 @@
|
|||||||
|
package de.nexuslobby.utils;
|
||||||
|
|
||||||
|
import de.nexuslobby.NexusLobby;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.Listener;
|
||||||
|
import org.bukkit.event.block.Action;
|
||||||
|
import org.bukkit.event.player.PlayerInteractEvent;
|
||||||
|
import org.bukkit.event.player.PlayerJoinEvent;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
import org.bukkit.inventory.meta.ItemMeta;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
public class PlayerHider implements Listener {
|
||||||
|
|
||||||
|
private final List<UUID> hidden = new ArrayList<>();
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onJoin(PlayerJoinEvent event) {
|
||||||
|
if (!NexusLobby.getInstance().getConfig().getBoolean("hider.enabled", true)) return;
|
||||||
|
|
||||||
|
Material material = Material.valueOf(NexusLobby.getInstance().getConfig().getString("hider.item", "REDSTONE"));
|
||||||
|
int slot = NexusLobby.getInstance().getConfig().getInt("hider.slot", 8);
|
||||||
|
|
||||||
|
ItemStack item = new ItemStack(material);
|
||||||
|
ItemMeta meta = item.getItemMeta();
|
||||||
|
meta.setDisplayName(NexusLobby.getInstance().getConfig().getString("hider.messages.all").replace("&", "§"));
|
||||||
|
item.setItemMeta(meta);
|
||||||
|
|
||||||
|
event.getPlayer().getInventory().setItem(slot, item);
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onInteract(PlayerInteractEvent event) {
|
||||||
|
if (event.getAction() != Action.RIGHT_CLICK_AIR && event.getAction() != Action.RIGHT_CLICK_BLOCK) return;
|
||||||
|
if (event.getItem() == null) return;
|
||||||
|
|
||||||
|
Player player = event.getPlayer();
|
||||||
|
String allMsg = NexusLobby.getInstance().getConfig().getString("hider.messages.all").replace("&", "§");
|
||||||
|
String noneMsg = NexusLobby.getInstance().getConfig().getString("hider.messages.none").replace("&", "§");
|
||||||
|
|
||||||
|
if (event.getItem().getItemMeta().getDisplayName().equals(allMsg)) {
|
||||||
|
// Verstecken
|
||||||
|
hidden.add(player.getUniqueId());
|
||||||
|
for (Player target : Bukkit.getOnlinePlayers()) player.hidePlayer(NexusLobby.getInstance(), target);
|
||||||
|
|
||||||
|
updateItem(player, noneMsg);
|
||||||
|
player.sendMessage(noneMsg);
|
||||||
|
} else if (event.getItem().getItemMeta().getDisplayName().equals(noneMsg)) {
|
||||||
|
// Zeigen
|
||||||
|
hidden.remove(player.getUniqueId());
|
||||||
|
for (Player target : Bukkit.getOnlinePlayers()) player.showPlayer(NexusLobby.getInstance(), target);
|
||||||
|
|
||||||
|
updateItem(player, allMsg);
|
||||||
|
player.sendMessage(allMsg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void updateItem(Player player, String name) {
|
||||||
|
ItemStack item = player.getInventory().getItemInHand();
|
||||||
|
ItemMeta meta = item.getItemMeta();
|
||||||
|
meta.setDisplayName(name);
|
||||||
|
item.setItemMeta(meta);
|
||||||
|
}
|
||||||
|
}
|
||||||
29
src/main/java/de/nexuslobby/utils/VoidProtection.java
Normal file
29
src/main/java/de/nexuslobby/utils/VoidProtection.java
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
package de.nexuslobby.utils;
|
||||||
|
|
||||||
|
import de.nexuslobby.NexusLobby;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.Listener;
|
||||||
|
import org.bukkit.event.player.PlayerMoveEvent;
|
||||||
|
|
||||||
|
public class VoidProtection implements Listener {
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onMove(PlayerMoveEvent event) {
|
||||||
|
if (!NexusLobby.getInstance().getConfig().getBoolean("void_protection.enabled", true)) return;
|
||||||
|
|
||||||
|
Player player = event.getPlayer();
|
||||||
|
if (player.getLocation().getY() < 0) {
|
||||||
|
if (NexusLobby.getInstance().getConfig().getBoolean("void_protection.teleport_to_spawn", true)) {
|
||||||
|
Location spawn = player.getWorld().getSpawnLocation();
|
||||||
|
player.teleport(spawn);
|
||||||
|
String msg = NexusLobby.getInstance().getConfig().getString("void_protection.message");
|
||||||
|
if (msg != null && !msg.isEmpty()) {
|
||||||
|
player.sendMessage(msg.replace("&", "§"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user