SteamWar/BauSystem
Archiviert
13
0
Dieses Repository wurde am 2024-08-04 archiviert. Du kannst Dateien ansehen und es klonen, aber nicht pushen oder Issues/Pull-Requests öffnen.
BauSystem/src/de/steamwar/bausystem/commands/CommandBau.java

455 Zeilen
18 KiB
Java

package de.steamwar.bausystem.commands;
2019-03-27 13:27:05 +01:00
public class CommandBau {
//TODO: Move to BungeeCore
/*
@Command(name = "bau", aliases = {"bau.help", "gs", "gs.help"}, inGameOnly = true)
2019-03-27 13:27:05 +01:00
public void onHelp(CommandArgs args) {
Player p = args.getPlayer();
p.sendMessage(BauSystem.PREFIX + "Hilfeseite 1 von 2:");
p.sendMessage("§6/bau help §7- Zeigt dir diese Hilfe");
p.sendMessage("§6/bau help 2 §7- Zeigt dir die Hilfe zum Member-System");
p.sendMessage("§6/home §7- Teleportiert dich auf deine Welt");
p.sendMessage("§6/tnt §7- (de)aktiviert Explosionsschaden");
p.sendMessage("§6/fire §7- (de)aktiviert Feuerschaden");
p.sendMessage("§6/testblock §7- Erneuert den nächsten Testblock");
p.sendMessage("§6/reset §7- Setzt die derzeitige Region zurück");
2019-03-27 13:27:05 +01:00
p.sendMessage("§6/bau resetall §7- Setzt deine Welt zurück");
p.sendMessage("§6/speed §7- Ändert deine Fluggeschwindigkeit");
p.sendMessage("§6/nv §7- (de)aktiviert Nachtsicht");
p.sendMessage("§6/trace §7- Gibt einen Überblick über den TNT-Tracer");
2019-03-27 18:19:32 +01:00
//p.sendMessage("§6/bau gui §7- Öffnet eine GUI");
2019-03-27 13:27:05 +01:00
}
@Command(name = "bau.help.2", aliases = {"gs.help.2", "bau.2", "gs.2"}, inGameOnly = true)
2019-03-27 13:27:05 +01:00
public void onHelp2(CommandArgs args) {
Player p = args.getPlayer();
p.sendMessage(BauSystem.PREFIX + "Hilfeseite 2 von 2:");
p.sendMessage("§6/bau addmember §7- Fügt zu deiner Welt einen Spieler hinzu");
p.sendMessage("§6/bau delmember §7- Entfernt einen Spieler von deiner Welt");
p.sendMessage("§6/bau togglebuild §7- Berechtigung zum Bauen, Spielmodus wechseln, /tp");
p.sendMessage("§6/bau togglewe §7- Berechtigung für: WorldEdit, /bau replace, /bau testblock");
p.sendMessage("§6/bau toggleworld §7- Berechtigung für: /bau reset, /trace, /fire, /tnt");
2019-03-27 13:27:05 +01:00
}
@Command(name = "bau.home", aliases = {"gs.home", "home"}, inGameOnly = true)
2019-03-27 13:27:05 +01:00
public void onHome(CommandArgs args) {
Player p = args.getPlayer();
if (Bauwelt.getBauwelt(p.getUniqueId()) == null) {
new Bauwelt(p.getUniqueId(), false, false);
}
if (Bukkit.getWorld(p.getUniqueId().toString()) == null){
2019-03-27 13:27:05 +01:00
p.sendMessage(BauSystem.PREFIX + "§aEinen Moment bitte... Deine Welt wird vorbereitet");
try {
BauWorld.loadWorld(p.getUniqueId());
} catch (IOException e) {
p.sendMessage(BauSystem.PREFIX + "§cBeim Laden der Welt ist ein Fehler aufgetreten");
e.printStackTrace();
return;
}
}
2019-03-27 13:27:05 +01:00
p.teleport(Bukkit.getWorld(p.getUniqueId().toString()).getSpawnLocation());
Bukkit.getScheduler().scheduleSyncDelayedTask(BauSystem.getInstance(), () -> p.setGameMode(GameMode.CREATIVE),20L);
}
@Command(name = "bau.tp", aliases = "gs.tp", inGameOnly = true)
public void onTp(CommandArgs args) {
Player p = args.getPlayer();
if (args.length() == 0) {
p.sendMessage(BauSystem.PREFIX + "/bau tp <Spieler>");
return;
}
UUID worldOwner = WarkingUser.get(args.getArgs(0)).getUUID();
if (!BauWorld.hasPermission(worldOwner, p, Permission.member)){
p.sendMessage(BauSystem.PREFIX + "§cDu darfst dich nicht auf diese Welt teleportieren");
2019-03-27 13:27:05 +01:00
return;
}
if (Bukkit.getWorld(worldOwner.toString()) == null){
p.sendMessage(BauSystem.PREFIX + "§aEinen Moment bitte... Die Welt wird vorbereitet");
2019-03-27 13:27:05 +01:00
try {
BauWorld.loadWorld(worldOwner);
2019-03-27 13:27:05 +01:00
} catch (IOException e) {
p.sendMessage(BauSystem.PREFIX + "§cBeim Laden der Welt ist ein Fehler aufgetreten");
e.printStackTrace();
return;
}
}
p.teleport(Bukkit.getWorld(worldOwner.toString()).getSpawnLocation());
2019-03-27 13:27:05 +01:00
Bukkit.getScheduler().scheduleSyncDelayedTask(BauSystem.getInstance(), () -> p.setGameMode(GameMode.CREATIVE), 20);
}
@Command(name = "bau.addmember", aliases = "gs.addmember", inGameOnly = true)
public void onAdd(CommandArgs args) {
2019-03-27 13:27:05 +01:00
Player p = args.getPlayer();
if (!hasWorld(p)){
2019-03-27 13:27:05 +01:00
return;
}else if (args.length() == 0) {
p.sendMessage(BauSystem.PREFIX + "/bau addmember <Spieler>");
2019-03-27 13:27:05 +01:00
return;
}
UUID id = WarkingUser.get(args.getArgs(0)).getUUID();
if (id == null) {
p.sendMessage(BauSystem.PREFIX + "§cUnbekannter Spieler");
return;
}else if (BauweltMember.getBauMember(p.getUniqueId(), id) != null) {
p.sendMessage(BauSystem.PREFIX + "§cDieser Spieler ist bereits Mitglied auf deiner Welt");
2019-03-27 13:27:05 +01:00
return;
}
new BauweltMember(p.getUniqueId(), id, true, false, false, false, false);
p.sendMessage(BauSystem.PREFIX + "§aDer Spieler wurde zu deiner Welt hinzugefügt");
Player z = Bukkit.getPlayer(id);
if(z != null)
z.sendMessage(BauSystem.PREFIX + "§aDu wurdest zu der Welt von §6" + p.getName() + " §ahinzugefügt");
2019-03-27 13:27:05 +01:00
}
@Command(name = "bau.delmember", aliases = "gs.delmember", inGameOnly = true)
public void onDel(CommandArgs args) {
2019-03-27 13:27:05 +01:00
Player p = args.getPlayer();
if (args.length() == 0) {
p.sendMessage(BauSystem.PREFIX + "/bau delmember <Spieler>");
2019-03-27 13:27:05 +01:00
return;
}
UUID id = WarkingUser.get(args.getArgs(0)).getUUID();
if(!toggleCheck(args, p, id)){
2019-03-27 13:27:05 +01:00
return;
}
BauweltMember target = BauweltMember.getBauMember(p.getUniqueId(), id);
BauWorld.removePlayer(p, target);
2019-03-27 13:27:05 +01:00
}
@Command(name = "bau.togglebuild", aliases = "gs.togglebuild", inGameOnly = true)
public void onToggleBD(CommandArgs args) {
Player p = args.getPlayer();
if (args.length() == 0) {
2019-03-27 13:27:05 +01:00
p.sendMessage(BauSystem.PREFIX + "/bau togglebuild <Spieler>");
return;
}
UUID id = WarkingUser.get(args.getArgs(0)).getUUID();
if(!toggleCheck(args, p, id)){
2019-03-27 13:27:05 +01:00
return;
}
BauweltMember target = BauweltMember.getBauMember(p.getUniqueId(), id);
BauWorld.toggleBuild(p, target);
}
@Command(name = "bau.togglewe", aliases = "gs.togglewe", inGameOnly = true)
public void onToggleWE(CommandArgs args) {
2019-03-27 13:27:05 +01:00
Player p = args.getPlayer();
if (args.length() == 0) {
p.sendMessage(BauSystem.PREFIX + "/bau togglewe <Spieler>");
2019-03-27 13:27:05 +01:00
return;
}
UUID id = WarkingUser.get(args.getArgs(0)).getUUID();
if(!toggleCheck(args, p, id)){
2019-03-27 13:27:05 +01:00
return;
}
BauweltMember target = BauweltMember.getBauMember(p.getUniqueId(), id);
BauWorld.toggleWE(p, target);
2019-03-27 13:27:05 +01:00
}
@Command(name = "bau.toggleworld", aliases = "gs.toggleworld", inGameOnly = true)
2019-03-27 13:27:05 +01:00
public void onToggleTestblock(CommandArgs args) {
Player p = args.getPlayer();
if (args.length() == 0) {
p.sendMessage(BauSystem.PREFIX + "/bau toggleworld <Spieler>");
2019-03-27 13:27:05 +01:00
return;
}
UUID id = WarkingUser.get(args.getArgs(0)).getUUID();
if(!toggleCheck(args, p, id)){
2019-03-27 13:27:05 +01:00
return;
}
BauweltMember target = BauweltMember.getBauMember(p.getUniqueId(), id);
BauWorld.toggleTestblock(p, target);
}
@Command(name = "bau.testblock", aliases = {"gs.testblock", "testblock"}, inGameOnly = true)
2019-03-27 13:27:05 +01:00
public void onTestblock(CommandArgs args) {
final Player p = args.getPlayer();
UUID worldOwner = BauWorld.getWorldUUID(p.getWorld());
if (!BauWorld.hasPermission(worldOwner, p, Permission.worldedit)){
p.sendMessage(BauSystem.PREFIX + "§cDu darfst hier nicht den Testblock erneuern");
2019-03-27 13:27:05 +01:00
return;
}
Location playerLocation = p.getLocation();
World playerWorld = p.getWorld();
for (ProtectedRegion rg : BauSystem.getWorldGuard().getRegionManager(playerWorld).getApplicableRegions(playerLocation)) {
String rgID = rg.getId();
if(rgID.equalsIgnoreCase("resetall"))
continue;
Vector position = new Vector(Integer.parseInt(BauSystem.getPlugin().getRegionData.getString("regions." + rgID + ".position.X")), Integer.parseInt(BauSystem.getPlugin().getRegionData.getString("regions." + rgID + ".position.Y")), Integer.parseInt(BauSystem.getPlugin().getRegionData.getString("regions." + rgID + ".position.Z")));
File file = new File(BauSystem.getPlugin().getRegionData.getString("regions." + rgID + ".schematic.testblock"));
pasteSchematic(p, file, position);
p.sendMessage(BauSystem.PREFIX + "§aTestblock erneuert");
}
}
@Command(name = "bau.reset", aliases = {"gs.reset", "reset"}, inGameOnly = true)
2019-03-27 13:27:05 +01:00
public void onReset(CommandArgs args) {
final Player p = args.getPlayer();
UUID worldOwner = BauWorld.getWorldUUID(p.getWorld());
if (!BauWorld.hasPermission(worldOwner, p, Permission.world)){
p.sendMessage(BauSystem.PREFIX + "§cDu darfst hier keine Regionen erneuern");
2019-03-27 13:27:05 +01:00
return;
}
Location playerLocation = p.getLocation();
World playerWorld = p.getWorld();
for (ProtectedRegion rg : BauSystem.getWorldGuard().getRegionManager(playerWorld).getApplicableRegions(playerLocation)) {
String rgID = rg.getId();
if(rgID.equalsIgnoreCase("resetall"))
continue;
Vector position = new Vector(Integer.parseInt(BauSystem.getPlugin().getRegionData.getString("regions." + rgID + ".position.X")), Integer.parseInt(BauSystem.getPlugin().getRegionData.getString("regions." + rgID + ".position.Y")), Integer.parseInt(BauSystem.getPlugin().getRegionData.getString("regions." + rgID + ".position.Z")));
File file = new File(BauSystem.getPlugin().getRegionData.getString("regions." + rgID + ".schematic.reset"));
pasteSchematic(p, file, position);
p.sendMessage(BauSystem.PREFIX + "§aRegion " + rgID + " wurde erneuert");
}
}
@Command(name = "bau.resetall", aliases = "gs.resetall", inGameOnly = true)
public void onResetAll(CommandArgs args) {
final Player p = args.getPlayer();
p.sendMessage(BauSystem.PREFIX + "§aDeine Welt wird zurückgesetzt. Einen Moment bitte");
BauWorld.unloadWorld(p.getUniqueId());
2019-03-27 18:19:32 +01:00
File directory = new File("plugins/BauSystem/worlds/" + p.getUniqueId().toString());
2019-03-27 13:27:05 +01:00
del(directory);
File directory1 = new File("plugins/WorldGuard/worlds/" + p.getUniqueId().toString());
del(directory1);
2019-03-27 18:19:32 +01:00
Bukkit.getScheduler().scheduleSyncDelayedTask(BauSystem.getInstance(), () -> onHome(args),20L);
2019-03-27 13:27:05 +01:00
}
@Command(name = "bau.replace", aliases = "gs.replace", inGameOnly = true)
public void onReplace(CommandArgs args) {
final Player p = args.getPlayer();
UUID worldOwner = BauWorld.getWorldUUID(p.getWorld());
if (!BauWorld.hasPermission(worldOwner, p, Permission.worldedit)){
p.sendMessage(BauSystem.PREFIX + "§cDu darfst hier nicht Obsidian und Grundgestein ersetzen");
2019-03-27 13:27:05 +01:00
return;
}
World world = p.getWorld();
for(ProtectedRegion rg : BauSystem.getWorldGuard().getRegionManager(world).getApplicableRegions(p.getLocation())) {
String rgID = rg.getId();
if(rgID.equalsIgnoreCase("resetall"))
continue;
EditSession editSession = BauSystem.getWorldEdit().getWorldEdit().getEditSessionFactory().getEditSession(new BukkitWorld(p.getWorld()), Integer.MAX_VALUE);
CuboidSelection selection = new CuboidSelection(p.getWorld(), new Location(p.getWorld(), rg.getMinimumPoint().getBlockX(), rg.getMinimumPoint().getBlockY(), rg.getMinimumPoint().getBlockZ()), new Location(p.getWorld(), rg.getMaximumPoint().getBlockX(), rg.getMaximumPoint().getBlockY(), rg.getMaximumPoint().getBlockZ()));
Set<BaseBlock> targetObsidian = new HashSet<>();
targetObsidian.add(new BaseBlock(49));
Set<BaseBlock> targetBedrock = new HashSet<>();
targetBedrock.add(new BaseBlock(7));
try {
int tnt = editSession.replaceBlocks(selection.getRegionSelector().getRegion(), targetObsidian, new BaseBlock(46));
int slime = editSession.replaceBlocks(selection.getRegionSelector().getRegion(), targetBedrock, new BaseBlock(165));
editSession.flushQueue();
p.sendMessage(BauSystem.PREFIX + "§aEs wurden " + (tnt + slime) + " Obsidian und Grundgestein ersetzt");
2019-03-27 13:27:05 +01:00
} catch(Exception ex) { ex.printStackTrace(); }
}
}
@Command(name = "bau.info", aliases = "gs.info", inGameOnly = true)
public void onInfo(CommandArgs args) {
final Player p = args.getPlayer();
UUID worldOwner = BauWorld.getWorldUUID(p.getWorld());
2019-03-27 13:27:05 +01:00
if(worldOwner == null){
2019-03-27 13:27:05 +01:00
p.sendMessage(BauSystem.PREFIX + "§cDu bist auf keiner Bauwelt");
return;
}
Bukkit.getScheduler().runTaskAsynchronously(BauSystem.getInstance(), () -> {
Bauwelt welt = Bauwelt.getBauwelt(worldOwner);
p.sendMessage("§6Besitzer§8: §6" + WarkingUser.get(welt.getUserID()).getUserName());
2019-03-27 13:27:05 +01:00
if(welt.isTNTDmg())
p.sendMessage("§6TNT-Schaden§8: §aerlaubt");
2019-03-27 13:27:05 +01:00
else
p.sendMessage("§6TNT-Schaden§8: §cverboten");
2019-03-27 13:27:05 +01:00
if(welt.isFireDmg())
p.sendMessage("§6Feuer-Schaden§8: §aerlaubt");
2019-03-27 13:27:05 +01:00
else
p.sendMessage("§6Feuer-Schaden§8: §cverboten");
2019-03-27 13:27:05 +01:00
List<BauweltMember> memberList = BauweltMember.getMembers(worldOwner);
if(!memberList.isEmpty()){
StringBuilder members = new StringBuilder();
members.append("Mitglieder§8: ");
for(BauweltMember member : memberList){
members.append("§6");
members.append(WarkingUser.get(member.getMemberID()).getUserName());
members.append("§8, ");
}
p.sendMessage(members.toString());
2019-03-27 13:27:05 +01:00
}
});
}
@Command(name = "bau.tntdmg", aliases = {"gs.tntdmg", "bau.tnt", "gs.tnt", "tnt"}, inGameOnly = true)
2019-03-27 13:27:05 +01:00
public void onTntdmg(CommandArgs args){
BauWorld.switchTNT(args.getPlayer());
}
@Command(name = "bau.firedmg", aliases = {"gs.firedmg", "bau.fire", "gs.fire", "fire"}, inGameOnly = true)
2019-03-27 13:27:05 +01:00
public void onFiredmg(CommandArgs args) {
BauWorld.switchFire(args.getPlayer());
}
@Command(name = "bau.speed", aliases = {"gs.speed", "speed"}, inGameOnly = true)
public void onSpeed(CommandArgs args){
final Player player = args.getPlayer();
if (args.length() == 0){
player.sendMessage(BauSystem.PREFIX + "/speed [Geschwindigkeit]");
return;
}
float speed;
try{
speed = Float.valueOf(args.getArgs(0));
}catch(NumberFormatException e){
player.sendMessage(BauSystem.PREFIX + "§cBitte gib eine Zahl zwischen 0 und 10 an");
return;
}
if (speed < 0 || speed > 10) {
player.sendMessage(BauSystem.PREFIX + "§cBitte gib eine Zahl zwischen 0 und 10 an");
return;
}
player.sendMessage("§aGeschwindigkeit wurde auf §6" + speed + " §agesetzt");
if(speed == 1.0f){
speed = 1.25f;
}
player.setFlySpeed(speed / 10);
player.setWalkSpeed(speed / 10);
}
@Command(name = "bau.time", inGameOnly = true)
public void onTime(CommandArgs args){
Player p = args.getPlayer();
if(args.length() == 0){
p.sendMessage(BauSystem.PREFIX + "/time <Zeit 0=Morgen, 6000=Mittag, 18000=Mitternacht>");
return;
}
UUID worldOwner = BauWorld.getWorldUUID(p.getWorld());
if (!BauWorld.hasPermission(worldOwner, p, Permission.world)){
p.sendMessage(BauSystem.PREFIX + "§cDu darfst hier nicht die Zeit ändern");
return;
}
int time;
try{
time = Integer.valueOf(args.getArgs(0));
}catch(NumberFormatException e){
p.sendMessage(BauSystem.PREFIX + "§cBitte gib eine Zahl zwischen 0 und 24000 an");
return;
}
if (time < 0 || time > 24000) {
p.sendMessage(BauSystem.PREFIX + "§cBitte gib eine Zahl zwischen 0 und 24000 an");
return;
}
p.getWorld().setTime(time);
}
2019-03-27 13:27:05 +01:00
private void pasteSchematic(Player player, File schematic, Vector position) {
int count = 0;
World world = player.getWorld();
for(ProtectedRegion rg: BauSystem.getWorldGuard().getRegionManager(world).getApplicableRegions(player.getLocation())) {
count++;
if(count != 0) {
EditSession session = BauSystem.getWorldEdit().getWorldEdit().getEditSessionFactory().getEditSession(new BukkitWorld(world), Integer.MAX_VALUE);
try {
CuboidClipboard format = MCEditSchematicFormat.getFormat(schematic).load(schematic);
format.paste(session, position, false);
} catch (Exception ex) {
player.sendMessage(ex.getMessage());
ex.printStackTrace();
}
}
}
}
private void del(File dir){
if (dir.isDirectory()){
String[] entries = dir.list();
for (String entry : entries) {
File aktFile = new File(dir.getPath(), entry);
del(aktFile);
}
dir.delete();
}
else{
dir.delete();
}
}
private boolean hasWorld(Player p){
if (Bauwelt.getBauwelt(p.getUniqueId()).getUUID() == null) {
p.sendMessage(BauSystem.PREFIX + "§cDu hast keine Bauwelt");
return false;
}
return true;
}
private boolean toggleCheck(CommandArgs args, Player p, UUID id){
if (!hasWorld(p)) {
//p.sendMessage(BauSystem.PREFIX + "§cDu hast noch keine Bauwelt");
return false;
}
if (id == null) {
p.sendMessage(BauSystem.PREFIX + "§cUnbekannter Spieler");
return false;
}
BauweltMember target = BauweltMember.getBauMember(p.getUniqueId(), id);
if (target == null) {
p.sendMessage(BauSystem.PREFIX + "§cDer Spieler ist kein Mitglied deiner Welt");
return false;
}
return true;
}*/
2019-03-27 13:27:05 +01:00
}