Upload folder via GUI - src
This commit is contained in:
@@ -0,0 +1,104 @@
|
||||
package dev.viper.eventengine.command;
|
||||
|
||||
import dev.viper.eventengine.EventEngine;
|
||||
import dev.viper.eventengine.model.EventDefinition;
|
||||
import dev.viper.eventengine.model.EventRegion;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* Stellt Pos1/Pos2-Auswahl für Event-Regionen bereit.
|
||||
* Eingebaut in EventCommand via sub-commands:
|
||||
*
|
||||
* /event region pos1 <id> → Pos1 auf Spieler-Position setzen
|
||||
* /event region pos2 <id> → Pos2 setzen + Region speichern
|
||||
* /event region clear <id> → Region entfernen
|
||||
* /event region info <id> → Region anzeigen
|
||||
*/
|
||||
public class RegionSetupManager {
|
||||
|
||||
private final EventEngine plugin;
|
||||
// Temporäre Pos1-Speicher pro Spieler: UUID → [eventId, Location]
|
||||
private final Map<UUID, Object[]> pos1Selection = new HashMap<>();
|
||||
|
||||
public RegionSetupManager(EventEngine plugin) {
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
||||
public void handlePos1(Player player, String eventId) {
|
||||
EventDefinition def = plugin.getEventRegistry().get(eventId).orElse(null);
|
||||
if (def == null) { player.sendMessage(plugin.prefix() + "§cEvent nicht gefunden: §f" + eventId); return; }
|
||||
|
||||
pos1Selection.put(player.getUniqueId(), new Object[]{eventId, player.getLocation().clone()});
|
||||
player.sendMessage(plugin.prefix() + "§aPos1 gesetzt: §f" + formatLoc(player));
|
||||
player.sendMessage(plugin.prefix() + "§7Jetzt: §f/event region pos2 " + eventId);
|
||||
}
|
||||
|
||||
public void handlePos2(Player player, String eventId) {
|
||||
EventDefinition def = plugin.getEventRegistry().get(eventId).orElse(null);
|
||||
if (def == null) { player.sendMessage(plugin.prefix() + "§cEvent nicht gefunden: §f" + eventId); return; }
|
||||
|
||||
Object[] sel = pos1Selection.get(player.getUniqueId());
|
||||
if (sel == null || !sel[0].equals(eventId)) {
|
||||
player.sendMessage(plugin.prefix() + "§cZuerst Pos1 setzen: §f/event region pos1 " + eventId);
|
||||
return;
|
||||
}
|
||||
|
||||
org.bukkit.Location pos1 = (org.bukkit.Location) sel[1];
|
||||
org.bukkit.Location pos2 = player.getLocation().clone();
|
||||
|
||||
if (!pos1.getWorld().equals(pos2.getWorld())) {
|
||||
player.sendMessage(plugin.prefix() + "§cBeide Positionen müssen in der gleichen Welt sein!");
|
||||
return;
|
||||
}
|
||||
|
||||
EventRegion region = new EventRegion(pos1, pos2);
|
||||
def.setRegion(region);
|
||||
|
||||
// Custom Events direkt speichern; builtin: in memory (gilt bis Reload)
|
||||
if (def.isCustom()) plugin.getConfigManager().saveCustomEvent(def);
|
||||
|
||||
pos1Selection.remove(player.getUniqueId());
|
||||
|
||||
player.sendMessage(plugin.prefix() + "§a✔ Region gesetzt für §e" + def.getDisplayName() + "§a:");
|
||||
player.sendMessage("§7 Welt: §f" + region.getWorldName());
|
||||
player.sendMessage("§7 Von: §f" + region.getMinX() + ", " + region.getMinY() + ", " + region.getMinZ());
|
||||
player.sendMessage("§7 Bis: §f" + region.getMaxX() + ", " + region.getMaxY() + ", " + region.getMaxZ());
|
||||
player.sendMessage("§7 Größe: §f" + region.getSizeX() + "x" + region.getSizeY() + "x" + region.getSizeZ());
|
||||
}
|
||||
|
||||
public void handleClear(Player player, String eventId) {
|
||||
EventDefinition def = plugin.getEventRegistry().get(eventId).orElse(null);
|
||||
if (def == null) { player.sendMessage(plugin.prefix() + "§cEvent nicht gefunden: §f" + eventId); return; }
|
||||
def.setRegion(null);
|
||||
if (def.isCustom()) plugin.getConfigManager().saveCustomEvent(def);
|
||||
player.sendMessage(plugin.prefix() + "§7Region für §e" + def.getDisplayName() + " §7entfernt (gesamte Welt).");
|
||||
}
|
||||
|
||||
public void handleInfo(Player player, String eventId) {
|
||||
EventDefinition def = plugin.getEventRegistry().get(eventId).orElse(null);
|
||||
if (def == null) { player.sendMessage(plugin.prefix() + "§cEvent nicht gefunden: §f" + eventId); return; }
|
||||
if (!def.hasRegion()) {
|
||||
player.sendMessage(plugin.prefix() + "§e" + def.getDisplayName() + " §7hat keine Region (gesamte Welt).");
|
||||
return;
|
||||
}
|
||||
EventRegion r = def.getRegion();
|
||||
player.sendMessage("§8§m══════════════════════════════");
|
||||
player.sendMessage("§6 Region: §e" + def.getDisplayName());
|
||||
player.sendMessage("§7 Welt: §f" + r.getWorldName());
|
||||
player.sendMessage("§7 Von: §f" + r.getMinX() + ", " + r.getMinY() + ", " + r.getMinZ());
|
||||
player.sendMessage("§7 Bis: §f" + r.getMaxX() + ", " + r.getMaxY() + ", " + r.getMaxZ());
|
||||
player.sendMessage("§7 Größe: §f" + r.getSizeX() + "×" + r.getSizeY() + "×" + r.getSizeZ() + " Blöcke");
|
||||
player.sendMessage("§8§m══════════════════════════════");
|
||||
}
|
||||
|
||||
private String formatLoc(Player p) {
|
||||
return p.getWorld().getName() + " "
|
||||
+ p.getLocation().getBlockX() + ", "
|
||||
+ p.getLocation().getBlockY() + ", "
|
||||
+ p.getLocation().getBlockZ();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user