Search in sources :

Example 61 with Region

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")));
                }
            }
        }
    }
}
Also used : DefineRegionBuilder(br.net.fabiozumbi12.RedProtect.Sponge.actions.DefineRegionBuilder) RedefineRegionBuilder(br.net.fabiozumbi12.RedProtect.Sponge.actions.RedefineRegionBuilder) Builder(org.spongepowered.api.text.Text.Builder) World(org.spongepowered.api.world.World)

Example 62 with Region

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);
        }
    }
}
Also used : Monster(org.spongepowered.api.entity.living.monster.Monster) BlockSnapshot(org.spongepowered.api.block.BlockSnapshot) Region(br.net.fabiozumbi12.RedProtect.Sponge.Region) Listener(org.spongepowered.api.event.Listener)

Example 63 with Region

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);
        }
    }
}
Also used : Entity(org.spongepowered.api.entity.Entity) Player(org.spongepowered.api.entity.living.player.Player) Explosion(org.spongepowered.api.world.explosion.Explosion) Living(org.spongepowered.api.entity.living.Living) ItemType(org.spongepowered.api.item.ItemType) Projectile(org.spongepowered.api.entity.projectile.Projectile) Golem(org.spongepowered.api.entity.living.golem.Golem) Ambient(org.spongepowered.api.entity.living.Ambient) Explosive(org.spongepowered.api.entity.explosive.Explosive) Hanging(org.spongepowered.api.entity.hanging.Hanging) Animal(org.spongepowered.api.entity.living.animal.Animal) Lightning(org.spongepowered.api.entity.weather.Lightning) Monster(org.spongepowered.api.entity.living.monster.Monster) Villager(org.spongepowered.api.entity.living.Villager) Region(br.net.fabiozumbi12.RedProtect.Sponge.Region) Listener(org.spongepowered.api.event.Listener)

Example 64 with Region

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);
            }
        }
    }
}
Also used : Entity(org.spongepowered.api.entity.Entity) Player(org.spongepowered.api.entity.living.player.Player) PotionEffect(org.spongepowered.api.effect.potion.PotionEffect) ThrownPotion(org.spongepowered.api.entity.projectile.ThrownPotion) Region(br.net.fabiozumbi12.RedProtect.Sponge.Region) ProjectileSource(org.spongepowered.api.entity.projectile.source.ProjectileSource) Listener(org.spongepowered.api.event.Listener)

Example 65 with Region

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);
        }
    }
}
Also used : Entity(org.spongepowered.api.entity.Entity) Region(br.net.fabiozumbi12.RedProtect.Sponge.Region) World(org.spongepowered.api.world.World) Listener(org.spongepowered.api.event.Listener)

Aggregations

Region (br.net.fabiozumbi12.RedProtect.Bukkit.Region)113 EventHandler (org.bukkit.event.EventHandler)92 Player (org.bukkit.entity.Player)69 Region (br.net.fabiozumbi12.RedProtect.Sponge.Region)47 Listener (org.spongepowered.api.event.Listener)46 Location (org.bukkit.Location)43 World (org.spongepowered.api.world.World)30 Block (org.bukkit.block.Block)26 MyPetPlayer (de.Keyle.MyPet.api.player.MyPetPlayer)20 PvPlayer (me.NoChance.PvPManager.PvPlayer)20 Entity (org.bukkit.entity.Entity)20 BlockSnapshot (org.spongepowered.api.block.BlockSnapshot)19 Entity (org.spongepowered.api.entity.Entity)19 LivingEntity (org.bukkit.entity.LivingEntity)16 Player (org.spongepowered.api.entity.living.player.Player)16 World (org.bukkit.World)10 Monster (org.bukkit.entity.Monster)10 Material (org.bukkit.Material)9 ClanPlayer (net.sacredlabyrinth.phaed.simpleclans.ClanPlayer)8 OfflinePlayer (org.bukkit.OfflinePlayer)8