package de.steamwar.bausystem.commands; import de.steamwar.bausystem.BauSystem; import de.steamwar.bausystem.Permission; import de.steamwar.bausystem.WorldeditWrapper; import de.steamwar.bausystem.world.Welt; import de.steamwar.bausystem.world.regions.*; import de.steamwar.command.SWCommand; import lombok.Getter; import org.bukkit.entity.Player; public class CommandSelect extends SWCommand { @Getter private static CommandSelect instance = null; public CommandSelect() { super("select"); } { instance = this; } @Register(help = true) public void genericHelp(Player p, String... args) { p.sendMessage("§8/§eselect §8[§7RegionsTyp§8] §8- §7Wähle einen RegionsTyp aus"); p.sendMessage("§8/§eselect §8[§7RegionsTyp§8] §8[§7Extension§8] §8- §7Wähle einen RegionsTyp aus mit oder ohne Extension"); } @Register public void baurahmenCommand(Player p, RegionType regionType) { if (!permissionCheck(p)) { return; } Region region = Region.getRegion(p.getLocation()); if (GlobalRegion.isGlobalRegion(region)) { p.sendMessage(BauSystem.PREFIX + "§cDie globale Region kannst du nicht auswählen"); return; } if (regionType == RegionType.TESTBLOCK) { if (!region.hasTestblock()) { p.sendMessage(BauSystem.PREFIX + "§cDiese Region hat keinen Testblock"); return; } setSelection(regionType, RegionExtensionType.NORMAL, region, p); return; } if (regionType == RegionType.BUILD) { if (!region.hasBuildRegion()) { p.sendMessage(BauSystem.PREFIX + "§cDiese Region hat keinen BuildArea"); return; } setSelection(regionType, RegionExtensionType.NORMAL, region, p); return; } setSelection(regionType, RegionExtensionType.NORMAL, region, p); } @Register public void baurahmenCommand(Player p, RegionType regionType, RegionExtensionType regionExtensionType) { if (!permissionCheck(p)) { return; } Region region = Region.getRegion(p.getLocation()); if (GlobalRegion.isGlobalRegion(region)) { p.sendMessage(BauSystem.PREFIX + "§cDie globale Region kannst du nicht auswählen"); return; } if (regionType == RegionType.TESTBLOCK) { if (!region.hasTestblock()) { p.sendMessage(BauSystem.PREFIX + "§cDiese Region hat keinen Testblock"); return; } if (regionExtensionType == RegionExtensionType.EXTENSION && !region.hasExtensionArea(regionType)) { p.sendMessage(BauSystem.PREFIX + "§cDiese Region hat keine Ausfahrmaße"); return; } setSelection(regionType, regionExtensionType, region, p); return; } if (regionType == RegionType.BUILD) { if (!region.hasBuildRegion()) { p.sendMessage(BauSystem.PREFIX + "§cDiese Region hat keinen BuildArea"); return; } if (regionExtensionType == RegionExtensionType.EXTENSION && !region.hasExtensionArea(regionType)) { p.sendMessage(BauSystem.PREFIX + "§cDiese Region hat keine Ausfahrmaße"); return; } setSelection(regionType, regionExtensionType, region, p); return; } setSelection(regionType, regionExtensionType, region, p); } private boolean permissionCheck(Player player) { if (Welt.noPermission(player, Permission.WORLDEDIT)) { player.sendMessage(BauSystem.PREFIX + "§cDu darfst hier nicht den Select verwenden"); return false; } return true; } private void setSelection(RegionType regionType, RegionExtensionType regionExtensionType, Region region, Player p) { Point minPoint = region.getMinPoint(regionType, regionExtensionType); Point maxPoint = region.getMaxPoint(regionType, regionExtensionType); WorldeditWrapper.impl.setSelection(p, minPoint, maxPoint); p.sendMessage(BauSystem.PREFIX + "WorldEdit auswahl auf " + minPoint.getX() + ", " + minPoint.getY() + ", " + minPoint.getZ() + " und " + maxPoint.getX() + ", " + maxPoint.getY() + ", " + maxPoint.getZ() + " gesetzt"); } }