public void editRemoveFromPermRemoveCache(Region r, String message) { YamlConfiguration c = r.getConfigFile(); Map<String, Object> all = c.getValues(true); String current = (String) all.get("Region.Permissions.PermanentCache.RemoveNodes"); current = current.replaceAll(" ", ""); current = current.replaceAll(message + ",", ""); current = current.replaceAll(",,", ","); all.remove("Region.Permissions.PermanentCache.RemoveNodes"); for (Entry<String, Object> entry : all.entrySet()) { c.set(entry.getKey(), entry.getValue()); } c.set("Region.Permissions.PermanentCache.RemoveNodes", current.trim()); r.setPermanentNodesCacheRemove((current.trim()).split(",")); }
public void editResetTempAddCache(Region r) { YamlConfiguration c = r.getConfigFile(); Map<String, Object> all = c.getValues(true); all.remove("Region.Permissions.TemporaryCache.AddNodes"); for (Entry<String, Object> entry : all.entrySet()) { c.set(entry.getKey(), entry.getValue()); } c.set("Region.Permissions.TemporaryCache.AddNodes", ""); r.setTemporaryNodesCacheAdd(("").split(",")); try { c.save(r.getRawConfigFile()); } catch (IOException e) { } }
public void editAddToPermAddCache(Region r, String message) { YamlConfiguration c = r.getConfigFile(); Map<String, Object> all = c.getValues(true); String current = (String) all.get("Region.Permissions.PermanentCache.AddNodes"); all.remove("Region.Permissions.PermanentCache.AddNodes"); for (Entry<String, Object> entry : all.entrySet()) { c.set(entry.getKey(), entry.getValue()); } c.set("Region.Permissions.PermanentCache.AddNodes", current.trim() + message.trim() + ","); r.setPermanentNodesCacheAdd((current.trim() + "," + message.trim()).split(",")); try { c.save(r.getRawConfigFile()); } catch (IOException e) { } }
public void listRegionBackups(Region r, String region, Player p) { if (r == null) { p.sendMessage( ChatColor.RED + "[Regios] The region to inherit : " + ChatColor.BLUE + region + ChatColor.RED + " does not exist!"); return; } File f = r.getBackupsDirectory(); if (f.listFiles().length < 1) { p.sendMessage( ChatColor.RED + "[Regios] The region " + ChatColor.BLUE + region + ChatColor.RED + " has no backups!"); } else { StringBuilder sb = new StringBuilder(); for (File backup : f.listFiles()) { sb.append(ChatColor.WHITE) .append(backup.getName().substring(0, backup.getName().lastIndexOf("."))) .append(ChatColor.BLUE) .append(", "); } p.sendMessage(sb.toString()); return; } }
public void setOwner(Region r, String name, String owner, Player p) { if (r == null) { p.sendMessage( ChatColor.RED + "[Regios] The region to inherit : " + ChatColor.BLUE + name + ChatColor.RED + " does not exist!"); return; } if (!r.canModify(p)) { p.sendMessage(ChatColor.RED + "[Regios] You are not permitted to modify this region!"); return; } mutable.setOwner(r, owner); p.sendMessage( ChatColor.GREEN + "[Regios] Owner for region " + ChatColor.BLUE + name + ChatColor.GREEN + " changed to " + ChatColor.BLUE + owner); }
public boolean checkPermRemove(Region r, String match) { for (String s : r.getPermanentNodesCacheRemove()) { if (s.trim().equalsIgnoreCase(match.trim())) { return true; } } return false; }
public boolean checkTempCache(Region r, String match) { for (String s : r.getTempCacheNodes()) { if (s.trim().equalsIgnoreCase(match.trim())) { return true; } } return false; }
public void editRemoveFromTempAddCache(Region r, String message) { YamlConfiguration c = r.getConfigFile(); Map<String, Object> all = c.getValues(true); String current = (String) all.get("Region.Permissions.TemporaryCache.AddNodes"); current = current.replaceAll(" ", ""); current = current.replaceAll(message + ",", ""); current = current.replaceAll(",,", ","); all.remove("Region.Permissions.TemporaryCache.AddNodes"); for (Entry<String, Object> entry : all.entrySet()) { c.set(entry.getKey(), entry.getValue()); } c.set("Region.Permissions.TemporaryCache.AddNodes", current.trim()); r.setTemporaryNodesCacheAdd((current.trim()).split(",")); try { c.save(r.getRawConfigFile()); } catch (IOException e) { } }
public void setModifyPoints(Location l1, Location l2, Player p) { if (l1 == null || l2 == null) { p.sendMessage(ChatColor.RED + "[Regios] You have not set 2 points!"); return; } Region r = CreationCommands.modRegion.get(p); if (!super.canModifyMain(r, p)) { p.sendMessage(ChatColor.RED + "[Regios] You are not permitted to modify this region!"); return; } p.sendMessage( ChatColor.GREEN + "[Regios] Region " + ChatColor.BLUE + r.getName() + ChatColor.GREEN + ", points modified successfully"); mutable.editModifyPoints(r, l1, l2); }
public void inherit(Region tin, Region inf, String tinName, String infName, Player p) { if (tin == null) { p.sendMessage( ChatColor.RED + "[Regios] The region to inherit : " + ChatColor.BLUE + tinName + ChatColor.RED + " does not exist!"); return; } if (inf == null) { p.sendMessage( ChatColor.RED + "[Regios] The region to inherit from : " + ChatColor.BLUE + infName + ChatColor.RED + " does not exist!"); return; } if (!tin.canModify(p)) { p.sendMessage(ChatColor.RED + "[Regios] You are not permitted to modify this region!"); return; } mutable.inherit(tin, inf); p.sendMessage( ChatColor.GREEN + "[Regios] Region " + ChatColor.BLUE + tinName + ChatColor.GREEN + " inherited properties from region " + ChatColor.BLUE + infName); return; }
public String listPermRemCache(Region r) { YamlConfiguration c = r.getConfigFile(); String s = c.getString("Region.Permissions.PermanentCache.RemoveNodes", ""); return s; }
public String listTempAddCache(Region r) { YamlConfiguration c = r.getConfigFile(); String s = c.getString("Region.Permissions.TemporaryCache.AddNodes", ""); return s; }
@EventHandler(priority = EventPriority.HIGHEST) public void onEntityDamage(EntityDamageEvent evt) { if (!(evt.getEntity() instanceof Player)) { return; } Location l = evt.getEntity().getLocation(); World w = l.getWorld(); Chunk c = w.getChunkAt(l); Player p = (Player) evt.getEntity(); GlobalWorldSetting gws = GlobalRegionManager.getGlobalWorldSetting(w); Region r; ArrayList<Region> regionSet = new ArrayList<Region>(); for (Region region : GlobalRegionManager.getRegions()) { for (Chunk chunk : region.getChunkGrid().getChunks()) { if (chunk.getWorld() == w) { if (areChunksEqual(chunk, c)) { if (!regionSet.contains(region)) { regionSet.add(region); } } } } } if (regionSet.isEmpty()) { return; } ArrayList<Region> currentRegionSet = new ArrayList<Region>(); for (Region reg : regionSet) { Location rl1 = reg.getL1().toBukkitLocation(), rl2 = reg.getL2().toBukkitLocation(); if (extReg.isInsideCuboid(l, rl1, rl2)) { currentRegionSet.add(reg); } } if (currentRegionSet.isEmpty()) { // If player is in chunk range but not // inside region then cancel the // check. if (gws != null) { if (!gws.invert_pvp && gws.overridingPvp) { evt.setCancelled(true); return; } } return; } if (currentRegionSet.size() > 1) { r = srm.getCurrentRegion(p, currentRegionSet); } else { r = currentRegionSet.get(0); } if (!r.isHealthEnabled()) { evt.setCancelled(true); evt.setDamage(0); return; } if (!r.isPvpEnabled()) { if (evt instanceof EntityDamageByEntityEvent) { EntityDamageByEntityEvent edevt = (EntityDamageByEntityEvent) evt; if (edevt.getDamager() instanceof Player && edevt.getEntity() instanceof Player) { Player damager = (Player) edevt.getDamager(); LogRunner.addLogMessage( r, LogRunner.getPrefix(r) + (" Player '" + damager.getName() + "' tried to attack '" + ((Player) evt.getEntity()).getName() + " but was prevented.")); damager.sendMessage( ChatColor.RED + "[Regios] You cannot fight within regions in this world!"); evt.setCancelled(true); evt.setDamage(0); return; } } } }
@EventHandler(priority = EventPriority.HIGHEST) public void onCreatureSpawn(CreatureSpawnEvent evt) { Location l = evt.getEntity().getLocation(); World w = l.getWorld(); Chunk c = w.getChunkAt(l); Region r; ArrayList<Region> regionSet = new ArrayList<Region>(); for (Region region : GlobalRegionManager.getRegions()) { for (Chunk chunk : region.getChunkGrid().getChunks()) { if (chunk.getWorld() == w) { if (areChunksEqual(chunk, c)) { if (!regionSet.contains(region)) { regionSet.add(region); } } } } } if (regionSet.isEmpty()) { if (GlobalRegionManager.getGlobalWorldSetting(w) != null) { if (!GlobalRegionManager.getGlobalWorldSetting(w).canCreatureSpawn(evt.getEntityType())) { evt.setCancelled(true); } return; } } ArrayList<Region> currentRegionSet = new ArrayList<Region>(); for (Region reg : regionSet) { if (extReg.isInsideCuboid( l, reg.getL1().toBukkitLocation(), reg.getL2().toBukkitLocation())) { currentRegionSet.add(reg); } } if (currentRegionSet.isEmpty()) { // If player is in chunk range but not // inside region then cancel the // check. if (GlobalRegionManager.getGlobalWorldSetting(w) != null) { if (!GlobalRegionManager.getGlobalWorldSetting(w).canCreatureSpawn(evt.getEntityType())) { evt.setCancelled(true); } } return; } if (currentRegionSet.size() > 1) { r = srm.getCurrentRegion(null, currentRegionSet); } else { r = currentRegionSet.get(0); } if (!r.canMobsSpawn()) { EntityType ce = evt.getEntityType(); if (ce == EntityType.CHICKEN || ce == EntityType.COW || ce == EntityType.PIG || ce == EntityType.SHEEP || ce == EntityType.SQUID) { LogRunner.addLogMessage( r, LogRunner.getPrefix(r) + (" Mob '" + ce.getName() + "' tried to spawn but was prevented.")); evt.setCancelled(true); return; } } if (!r.canMonstersSpawn()) { EntityType ce = evt.getEntityType(); if (ce != EntityType.CHICKEN && ce != EntityType.COW && ce != EntityType.PIG && ce != EntityType.SHEEP && ce != EntityType.SQUID) { LogRunner.addLogMessage( r, LogRunner.getPrefix(r) + (" Monster '" + ce.getName() + "' tried to spawn but was prevented.")); evt.setCancelled(true); return; } } }
@EventHandler(priority = EventPriority.HIGHEST) public void onExplosionPrime(ExplosionPrimeEvent evt) { Location l = evt.getEntity().getLocation(); World w = l.getWorld(); Chunk c = w.getChunkAt(l); if (evt.getEntity() instanceof Creeper) { if (GlobalRegionManager.getGlobalWorldSetting(w) != null) { if (!GlobalRegionManager.getGlobalWorldSetting(w).creeperExplodes) { evt.setCancelled(true); evt.setRadius(0); return; } } } ArrayList<Region> regionSet = new ArrayList<Region>(); for (Region region : GlobalRegionManager.getRegions()) { for (Chunk chunk : region.getChunkGrid().getChunks()) { if (chunk.getWorld() == w) { if (areChunksEqual(chunk, c)) { if (!regionSet.contains(region)) { regionSet.add(region); } } } } } if (regionSet.isEmpty()) { return; } ArrayList<Region> currentRegionSet = new ArrayList<Region>(); for (Region reg : regionSet) { Location rl1 = reg.getL1().toBukkitLocation(), rl2 = reg.getL2().toBukkitLocation(); if (rl1.getX() > rl2.getX()) { rl2.subtract(6, 0, 0); rl1.add(6, 0, 0); } else { rl2.add(6, 0, 0); rl1.subtract(6, 0, 0); } if (rl1.getZ() > rl2.getZ()) { rl2.subtract(0, 0, 6); rl1.add(0, 0, 6); } else { rl2.add(0, 0, 6); rl1.subtract(0, 0, 6); } if (rl1.getY() > rl2.getY()) { rl2.subtract(0, 10, 0); rl1.add(0, 10, 0); } else { rl2.add(0, 10, 0); rl1.subtract(0, 10, 0); } if (extReg.isInsideCuboid(l, rl1, rl2)) { currentRegionSet.add(reg); } } if (currentRegionSet.isEmpty()) { // If player is in chunk range but not // inside region then cancel the // check. return; } else { for (Region r : currentRegionSet) { if (r.is_protection()) { LogRunner.addLogMessage(r, LogRunner.getPrefix(r) + (" Entity explosion was prevented.")); evt.setCancelled(true); evt.setRadius(0); return; } } } }
@EventHandler(priority = EventPriority.HIGHEST) public void onPaintingPlace(PaintingPlaceEvent evt) { Player cause = evt.getPlayer(); Location l = evt.getPainting().getLocation(); World w = l.getWorld(); Chunk c = w.getChunkAt(l); GlobalWorldSetting gws = GlobalRegionManager.getGlobalWorldSetting(w); Region r; ArrayList<Region> regionSet = new ArrayList<Region>(); for (Region region : GlobalRegionManager.getRegions()) { for (Chunk chunk : region.getChunkGrid().getChunks()) { if (chunk.getWorld() == w) { if (areChunksEqual(chunk, c)) { if (!regionSet.contains(region)) { regionSet.add(region); } } } } } if (regionSet.isEmpty()) { if (gws != null) { if (gws.invert_protection) { evt.setCancelled(true); return; } } return; } ArrayList<Region> currentRegionSet = new ArrayList<Region>(); for (Region reg : regionSet) { if (extReg.isInsideCuboid( l, reg.getL1().toBukkitLocation(), reg.getL2().toBukkitLocation())) { currentRegionSet.add(reg); } } if (currentRegionSet.isEmpty()) { // If player is in chunk range but not // inside region then cancel the // check. if (gws != null) { if (gws.invert_protection) { evt.setCancelled(true); return; } } return; } if (currentRegionSet.size() > 1) { r = srm.getCurrentRegion(null, currentRegionSet); } else { r = currentRegionSet.get(0); } if (r.is_protectionPlace()) { if (!r.canBuild(cause)) { LogRunner.addLogMessage(r, LogRunner.getPrefix(r) + (" Painting place was prevented.")); r.sendBuildMessage(cause); evt.setCancelled(true); return; } } }