use of br.net.fabiozumbi12.RedProtect.Sponge.Region in project RedProtect by FabioZumbi12.
the class RPCommands method getRegionforList.
private static void getRegionforList(CommandSource p, String uuid, int Page) {
Set<Region> regions = RedProtect.get().rm.getRegions(uuid);
String pname = RPUtil.UUIDtoPlayer(uuid);
int length = regions.size();
if (pname == null || length == 0) {
RPLang.sendMessage(p, "cmdmanager.player.noregions");
} else {
p.sendMessage(RPUtil.toText(RPLang.get("general.color") + "-------------------------------------------------"));
RPLang.sendMessage(p, RPLang.get("cmdmanager.region.created.list") + " " + pname);
p.sendMessage(RPUtil.toText("-----"));
if (RedProtect.get().cfgs.getBool("region-settings.region-list.simple-listing")) {
for (World w : Sponge.getServer().getWorlds()) {
String colorChar = RedProtect.get().cfgs.getString("region-settings.world-colors." + w.getName());
Set<Region> wregions = RedProtect.get().rm.getRegions(uuid, w);
if (wregions.size() > 0) {
Iterator<Region> it = wregions.iterator();
Builder worldregions = Text.builder();
if (RedProtect.get().ph.hasRegionPermAdmin(p, "teleport", null)) {
boolean first = true;
while (it.hasNext()) {
Region r = it.next();
if (first) {
first = false;
worldregions.append(Text.builder().append(RPUtil.toText("&8" + r.getName())).onHover(TextActions.showText(RPUtil.toText(RPLang.get("cmdmanager.list.hover").replace("{region}", r.getName())))).onClick(TextActions.runCommand("/rp " + getCmd("teleport") + " " + r.getName() + " " + r.getWorld())).build());
} else {
worldregions.append(Text.builder().append(RPUtil.toText(RPLang.get("general.color") + ", &8" + r.getName())).onHover(TextActions.showText(RPUtil.toText(RPLang.get("cmdmanager.list.hover").replace("{region}", r.getName())))).onClick(TextActions.runCommand("/rp " + getCmd("teleport") + " " + r.getName() + " " + r.getWorld())).build());
}
}
} else {
boolean first = true;
while (it.hasNext()) {
Region r = it.next();
if (first) {
first = false;
worldregions.append(Text.builder().append(RPUtil.toText("&8" + r.getName())).build());
} else {
worldregions.append(Text.builder().append(RPUtil.toText(RPLang.get("general.color") + ", &8" + r.getName())).build());
}
}
}
p.sendMessage(RPUtil.toText(RPLang.get("general.color") + RPLang.get("region.world").replace(":", "") + " " + colorChar + w.getName() + "[" + wregions.size() + "]&r: "));
p.sendMessages(worldregions.build());
p.sendMessage(RPUtil.toText("-----"));
}
}
} else {
Iterator<Region> i = regions.iterator();
if (Page == 0) {
Page = 1;
}
int max = (10 * Page);
int min = max - 10;
int count = 0;
int last = 0;
while (i.hasNext()) {
String info = i.next().info().toPlain();
if (count >= min && count <= max) {
p.sendMessage(RPUtil.toText(RPLang.get("general.color") + "-------------------------------------------------"));
p.sendMessage(RPUtil.toText(RPLang.get("general.color") + "[" + (count + 1) + "] " + info));
last = count;
}
count++;
}
if (max > count) {
min = 0;
}
p.sendMessage(RPUtil.toText(RPLang.get("general.color") + "------------- " + (min + 1) + "-" + (last + 1) + "/" + count + " --------------"));
if (count > max) {
p.sendMessage(RPUtil.toText(RPLang.get("cmdmanager.region.listpage.more").replace("{player}", pname + " " + (Page + 1))));
} else {
if (Page != 1) {
p.sendMessage(RPUtil.toText(RPLang.get("cmdmanager.region.listpage.nomore")));
}
}
}
}
}
use of br.net.fabiozumbi12.RedProtect.Sponge.Region in project RedProtect by FabioZumbi12.
the class RPEntityListener method WitherBlockBreak.
@Listener(order = Order.FIRST, beforeModifications = true)
public void WitherBlockBreak(ChangeBlockEvent.Break event, @First Entity e) {
if (e instanceof Monster) {
BlockSnapshot b = event.getTransactions().get(0).getOriginal();
RedProtect.get().logger.debug("entity", "RPEntityListener - Is EntityChangeBlockEvent event! Block " + b.getState().getType().getName());
Region r = RedProtect.get().rm.getTopRegion(b.getLocation().get());
if (!cont.canWorldBreak(b)) {
event.setCancelled(true);
return;
}
if (r != null && !r.canMobLoot()) {
event.setCancelled(true);
}
}
}
use of br.net.fabiozumbi12.RedProtect.Sponge.Region in project RedProtect by FabioZumbi12.
the class RPEntityListener method onEntityDamage.
@Listener(order = Order.FIRST, beforeModifications = true)
public void onEntityDamage(DamageEntityEvent e) {
// victim
Entity e1 = e.getTargetEntity();
RedProtect.get().logger.debug("entity", "RPEntityListener - DamageEntityEvent entity target " + e1.getType().getName());
Region r = RedProtect.get().rm.getTopRegion(e1.getLocation());
if (e1 instanceof Living && !(e1 instanceof Monster)) {
if (r != null && r.flagExists("invincible")) {
if (r.getFlagBool("invincible")) {
e.setCancelled(true);
}
}
}
if (e1 instanceof Animal || e1 instanceof Villager || e1 instanceof Golem || e1 instanceof Ambient) {
if (r != null && r.flagExists("invincible")) {
if (r.getFlagBool("invincible")) {
if (e1 instanceof Animal) {
((Animal) e1).setTarget(null);
}
e.setCancelled(true);
}
}
}
// damager
if (!e.getCause().first(Living.class).isPresent()) {
return;
}
Entity e2 = e.getCause().first(Living.class).get();
RedProtect.get().logger.debug("entity", "RPEntityListener - DamageEntityEvent damager " + e2.getType().getName());
if (e2 instanceof Projectile) {
Projectile a = (Projectile) e2;
if (a.getShooter() instanceof Entity) {
e2 = (Entity) a.getShooter();
}
}
Region r1 = RedProtect.get().rm.getTopRegion(e1.getLocation());
Region r2 = RedProtect.get().rm.getTopRegion(e2.getLocation());
if (e.getCause().containsType(Lightning.class) || e.getCause().containsType(Explosive.class) || e.getCause().containsType(Fireball.class) || e.getCause().containsType(Explosion.class)) {
if (r1 != null && !r1.canFire() && !(e2 instanceof Player)) {
e.setCancelled(true);
return;
}
}
if (e1 instanceof Player) {
if (e2 instanceof Player) {
Player p2 = (Player) e2;
if (r1 != null) {
ItemType itemInHand = ItemTypes.NONE;
if (p2.getItemInHand(HandTypes.MAIN_HAND).isPresent()) {
itemInHand = p2.getItemInHand(HandTypes.MAIN_HAND).get().getItem();
} else if (p2.getItemInHand(HandTypes.OFF_HAND).isPresent()) {
itemInHand = p2.getItemInHand(HandTypes.OFF_HAND).get().getItem();
}
if (itemInHand.getType().equals(ItemTypes.EGG) && !r1.canProtectiles(p2)) {
e.setCancelled(true);
RPLang.sendMessage(p2, "playerlistener.region.cantuse");
return;
}
if (r2 != null) {
if (itemInHand.getType().equals(ItemTypes.EGG) && !r2.canProtectiles(p2)) {
e.setCancelled(true);
RPLang.sendMessage(p2, "playerlistener.region.cantuse");
return;
}
if ((r1.flagExists("pvp") && !r1.canPVP(p2)) || (r1.flagExists("pvp") && !r2.canPVP(p2))) {
e.setCancelled(true);
RPLang.sendMessage(p2, "entitylistener.region.cantpvp");
}
} else if (r1.flagExists("pvp") && !r1.canPVP(p2)) {
e.setCancelled(true);
RPLang.sendMessage(p2, "entitylistener.region.cantpvp");
}
} else if (r2 != null && r2.flagExists("pvp") && !r2.canPVP(p2)) {
e.setCancelled(true);
RPLang.sendMessage(p2, "entitylistener.region.cantpvp");
}
}
} else if (e1 instanceof Animal || e1 instanceof Villager || e1 instanceof Golem || e instanceof Ambient) {
if (r1 != null && e2 instanceof Player) {
Player p2 = (Player) e2;
if (!r1.canInteractPassives(p2)) {
e.setCancelled(true);
RPLang.sendMessage(p2, "entitylistener.region.cantpassive");
}
}
} else if ((e1 instanceof Hanging) && e2 instanceof Player) {
Player p2 = (Player) e2;
if (r1 != null && !r1.canBuild(p2)) {
e.setCancelled(true);
RPLang.sendMessage(p2, "playerlistener.region.cantuse");
return;
}
if (r2 != null && !r2.canBuild(p2)) {
e.setCancelled(true);
RPLang.sendMessage(p2, "playerlistener.region.cantuse");
}
} else if ((e1 instanceof Hanging) && e2 instanceof Monster) {
if (r1 != null || r2 != null) {
RedProtect.get().logger.debug("entity", "Cancelled ItemFrame drop Item");
e.setCancelled(true);
}
} else if ((e1 instanceof Explosive)) {
if ((r1 != null && !r1.canFire()) || (r2 != null && !r2.canFire())) {
e.setCancelled(true);
}
}
}
use of br.net.fabiozumbi12.RedProtect.Sponge.Region in project RedProtect by FabioZumbi12.
the class RPEntityListener method onPotionSplash.
@Listener(order = Order.FIRST, beforeModifications = true)
public void onPotionSplash(LaunchProjectileEvent event) {
if (event.getTargetEntity() instanceof ThrownPotion) {
ThrownPotion potion = (ThrownPotion) event.getTargetEntity();
ProjectileSource thrower = potion.getShooter();
RedProtect.get().logger.debug("entity", "RPEntityListener - LaunchProjectileEvent entity " + event.getTargetEntity().getType().getName());
List<PotionEffect> pottypes = potion.get(Keys.POTION_EFFECTS).get();
for (PotionEffect t : pottypes) {
if (!t.getType().equals(PotionEffectTypes.BLINDNESS) && !t.equals(PotionEffectTypes.WEAKNESS) && !t.equals(PotionEffectTypes.NAUSEA) && !t.equals(PotionEffectTypes.HUNGER) && !t.equals(PotionEffectTypes.POISON) && !t.equals(PotionEffectTypes.MINING_FATIGUE) && !t.equals(PotionEffectTypes.HASTE) && !t.equals(PotionEffectTypes.SLOWNESS) && !t.equals(PotionEffectTypes.WITHER)) {
return;
}
}
Player shooter;
if (thrower instanceof Player) {
shooter = (Player) thrower;
} else {
return;
}
RedProtect.get().logger.debug("entity", "RPEntityListener - LaunchProjectileEvent shooter " + shooter.getName());
Entity e2 = event.getTargetEntity();
Region r = RedProtect.get().rm.getTopRegion(e2.getLocation());
if (e2 instanceof Player) {
if (r != null && r.flagExists("pvp") && !r.canPVP(shooter)) {
event.setCancelled(true);
}
} else {
if (r != null && !r.canInteractPassives(shooter)) {
event.setCancelled(true);
}
}
}
}
use of br.net.fabiozumbi12.RedProtect.Sponge.Region in project RedProtect by FabioZumbi12.
the class RPGlobalListener method PlayerDropItem.
@Listener(order = Order.FIRST, beforeModifications = true)
public void PlayerDropItem(DropItemEvent.Dispense e, @Root Player p) {
for (Entity ent : e.getEntities()) {
Location<World> l = ent.getLocation();
Region r = RedProtect.get().rm.getTopRegion(l);
if (r == null && !RedProtect.get().cfgs.getGlobalFlag(l.getExtent().getName(), "player-candrop") && !p.hasPermission("redprotect.world.bypass")) {
e.setCancelled(true);
}
}
}
Aggregations