public void deleteLot(BytecraftPlayer player, String[] args) { ZoneWorld world = plugin.getWorld(player.getWorld()); if (world == null) { return; } if (args.length < 2) { player.sendMessage("syntax: /lot delete [name]"); return; } String name = args[1]; Lot lot = world.getLot(name); if (lot == null) { player.sendMessage(RED + "No lot named " + name + " found."); return; } Zone zone = plugin.getZone(lot.getZoneName()); Zone.Permission perm = zone.getUser(player); if (perm == Permission.OWNER) { // Zone owners can do this } else if (lot.isOwner(player)) { // Lot owners can always do it } else if (player.getRank().canEditZones()) { // Admins etc. } else { player.sendMessage(RED + "You are not an owner of lot " + lot.getName() + "."); return; } try (IContext ctx = plugin.createContext()) { IZoneDAO dao = ctx.getZoneDAO(); dao.deleteLot(lot.getId()); dao.deleteLotUsers(lot.getId()); world.deleteLot(lot.getName()); player.sendMessage(GREEN + lot.getName() + " has been deleted."); } catch (DAOException e) { throw new RuntimeException(e); } }
public void setLotOwner(BytecraftPlayer player, String[] args) { ZoneWorld world = plugin.getWorld(player.getWorld()); if (world == null) { return; } if (args.length < 3) { player.sendMessage("syntax: /lot addowner [name] [player]"); return; } String name = args[1]; Lot lot = world.getLot(name); if (lot == null) { player.sendMessage(RED + "No lot named " + name + " found."); return; } Zone zone = plugin.getZone(lot.getZoneName()); Permission perm = zone.getUser(player); if (perm == Zone.Permission.OWNER) { // Zone owners can do this in communist zones } else if (lot.isOwner(player)) { // Lot owners can always do it } else if (player.getRank().canEditZones()) { // Admins etc. } else { player.sendMessage(RED + "You are not an owner of lot " + lot.getName() + "."); return; } // try partial matching List<BytecraftPlayer> candidates = plugin.matchPlayer(args[2]); BytecraftPlayer candidate = null; if (candidates.size() != 1) { // try exact matching candidate = plugin.getPlayerOffline(args[2]); if (candidate == null) { // give up player.sendMessage(RED + "Player " + args[2] + " was not found."); return; } } else { candidate = candidates.get(0); } try (IContext ctx = plugin.createContext()) { IZoneDAO dao = ctx.getZoneDAO(); if ("addowner".equals(args[0])) { if (lot.isOwner(candidate)) { player.sendMessage( RED + candidate.getDisplayName() + RED + " is already an owner of lot " + name + "."); return; } else { lot.addOwner(candidate); dao.addLotUser(lot.getId(), candidate.getName()); player.sendMessage( GREEN + candidate.getDisplayName() + GREEN + " has been added as owner of " + lot.getName() + "."); } } else if ("delowner".equals(args[0])) { if (!lot.isOwner(candidate)) { player.sendMessage( RED + candidate.getDisplayName() + RED + " is not an owner of lot " + name + "."); return; } else { lot.deleteOwner(candidate); dao.deleteLotUser(lot.getId(), candidate.getName()); player.sendMessage( GREEN + candidate.getDisplayName() + GREEN + " is no longer an owner of " + lot.getName() + "."); } } } catch (DAOException e) { throw new RuntimeException(e); } }