Search in sources :

Example 51 with Guild

use of net.dzikoysk.funnyguilds.guild.Guild in project FunnyGuilds by FunnyGuilds.

the class WarSystem method attack.

public void attack(Player player, Guild guild) {
    FunnyGuilds plugin = FunnyGuilds.getInstance();
    UserManager userManager = plugin.getUserManager();
    PluginConfiguration config = plugin.getPluginConfiguration();
    Option<User> userOp = userManager.findByPlayer(player);
    if (userOp.isEmpty()) {
        return;
    }
    User user = userOp.get();
    if (!user.hasGuild()) {
        WarUtils.message(player, 0);
        return;
    }
    Guild attacker = user.getGuild().get();
    if (attacker.equals(guild)) {
        return;
    }
    if (attacker.getAllies().contains(guild)) {
        WarUtils.message(player, 1);
        return;
    }
    if (!config.warEnabled) {
        WarUtils.message(player, 5);
        return;
    }
    if (!guild.canBeAttacked()) {
        WarUtils.message(player, 2, guild.getProtection() - System.currentTimeMillis());
        return;
    }
    guild.setProtection(Instant.now().plus(config.warWait).toEpochMilli());
    if (SimpleEventHandler.handle(new GuildLivesChangeEvent(EventCause.SYSTEM, user, guild, guild.getLives() - 1))) {
        guild.updateLives(lives -> lives - 1);
    }
    if (guild.getLives() < 1) {
        conquer(attacker, guild, user);
    } else {
        for (User member : attacker.getMembers()) {
            member.getPlayer().peek(memberPlayer -> WarUtils.message(memberPlayer, 3, guild));
        }
        for (User member : guild.getMembers()) {
            member.getPlayer().peek(memberPlayer -> WarUtils.message(memberPlayer, 4, attacker));
        }
    }
}
Also used : User(net.dzikoysk.funnyguilds.user.User) FunnyGuilds(net.dzikoysk.funnyguilds.FunnyGuilds) UserManager(net.dzikoysk.funnyguilds.user.UserManager) GuildLivesChangeEvent(net.dzikoysk.funnyguilds.event.guild.GuildLivesChangeEvent) PluginConfiguration(net.dzikoysk.funnyguilds.config.PluginConfiguration) Guild(net.dzikoysk.funnyguilds.guild.Guild)

Example 52 with Guild

use of net.dzikoysk.funnyguilds.guild.Guild in project FunnyGuilds by FunnyGuilds.

the class IndividualPrefix method registerSoloTeam.

private void registerSoloTeam(User soloUser) {
    String teamName = soloUser.getName() + "_solo";
    Set<Guild> guilds = plugin.getGuildManager().getGuilds();
    if (teamName.length() > 16) {
        teamName = soloUser.getName();
    }
    for (Guild guild : guilds) {
        if (guild.getTag().equalsIgnoreCase(teamName)) {
            return;
        }
    }
    Team team = getScoreboard().getTeam(teamName);
    if (team == null) {
        team = getScoreboard().registerNewTeam(teamName);
    }
    if (!team.hasEntry(soloUser.getName())) {
        team.addEntry(soloUser.getName());
    }
}
Also used : Team(org.bukkit.scoreboard.Team) Guild(net.dzikoysk.funnyguilds.guild.Guild)

Example 53 with Guild

use of net.dzikoysk.funnyguilds.guild.Guild in project FunnyGuilds by FunnyGuilds.

the class IndividualPrefix method removeGuild.

protected void removeGuild(Guild guild) {
    if (guild == null) {
        return;
    }
    String tag = guild.getTag();
    if (tag.isEmpty()) {
        throw new IllegalStateException("Guild tag can't be empty!");
    }
    this.user.getCache().getScoreboard().map(scoreboard -> scoreboard.getTeam(tag)).peek(Team::unregister);
    for (User member : guild.getMembers()) {
        registerSoloTeam(member);
    }
}
Also used : FunnyGuilds(net.dzikoysk.funnyguilds.FunnyGuilds) Team(org.bukkit.scoreboard.Team) Guild(net.dzikoysk.funnyguilds.guild.Guild) PluginConfiguration(net.dzikoysk.funnyguilds.config.PluginConfiguration) Set(java.util.Set) User(net.dzikoysk.funnyguilds.user.User) NotNull(org.jetbrains.annotations.NotNull) Formatter(panda.utilities.text.Formatter) Placeholders(net.dzikoysk.funnyguilds.feature.placeholders.Placeholders) Scoreboard(org.bukkit.scoreboard.Scoreboard) User(net.dzikoysk.funnyguilds.user.User) Team(org.bukkit.scoreboard.Team)

Example 54 with Guild

use of net.dzikoysk.funnyguilds.guild.Guild in project FunnyGuilds by FunnyGuilds.

the class SecuritySystem method scan.

private static void scan(Player player, SecurityType securityType, Object... values) {
    PluginConfiguration config = FunnyGuilds.getInstance().getPluginConfiguration();
    if (!FunnyGuilds.getInstance().getPluginConfiguration().regionsEnabled) {
        return;
    }
    if (!config.systemSecurityEnable) {
        return;
    }
    Guild guild = null;
    for (Object value : values) {
        if (value instanceof Guild) {
            guild = (Guild) value;
        }
    }
    if (securityType == SecurityType.GUILD) {
        if (guild == null) {
            return;
        }
        if (!guild.hasRegion()) {
            return;
        }
        Region region = guild.getRegion().get();
        Location center = region.getCenter();
        double x = center.getX() + 0.5;
        double y = center.getY();
        double z = center.getZ() + 0.5;
        Location eye = player.getEyeLocation();
        Vector direction = eye.getDirection();
        Vector origin = (player.isSneaking() && !Reflections.USE_PRE_9_METHODS) ? eye.add(0.0, ADDITIONAL_SNEAKING_HEIGHT_CURSOR, 0.0).toVector() : eye.toVector();
        FunnyBox funnyBox = "ender_crystal".equalsIgnoreCase(config.heart.createType) ? new FunnyBox(x - 1.0, y - 1.0, z - 1.0, x + 1.0, y + 1.0, z + 1.0) : FunnyBox.of(player.getWorld().getBlockAt(center));
        FunnyBox.RayTraceResult rayTraceResult = funnyBox.rayTrace(origin, direction, 6);
        Vector hitPoint = rayTraceResult == null ? center.toVector() : rayTraceResult.getHitPosition();
        double distance = hitPoint.distance(origin);
        SecurityFreeCam.on(player, origin, hitPoint, distance);
        SecurityReach.on(player, distance);
        return;
    }
    throw new IllegalArgumentException("unknown securityType: " + securityType);
}
Also used : FunnyBox(net.dzikoysk.funnyguilds.shared.bukkit.FunnyBox) PluginConfiguration(net.dzikoysk.funnyguilds.config.PluginConfiguration) Region(net.dzikoysk.funnyguilds.guild.Region) Guild(net.dzikoysk.funnyguilds.guild.Guild) Vector(org.bukkit.util.Vector) Location(org.bukkit.Location)

Example 55 with Guild

use of net.dzikoysk.funnyguilds.guild.Guild in project FunnyGuilds by FunnyGuilds.

the class EntityDamage method onDamage.

@EventHandler
public void onDamage(EntityDamageByEntityEvent event) {
    EntityUtils.getAttacker(event.getDamager()).peek(attacker -> {
        Option<User> attackerUserOption = this.userManager.findByPlayer(attacker);
        if (attackerUserOption.isEmpty()) {
            return;
        }
        User attackerUser = attackerUserOption.get();
        Entity victim = event.getEntity();
        if (config.animalsProtection && (victim instanceof Animals || victim instanceof Villager)) {
            this.regionManager.findRegionAtLocation(victim.getLocation()).map(Region::getGuild).filterNot(guild -> attackerUser.getGuild().map(it -> it.equals(guild)).orElseGet(false)).peek(guild -> event.setCancelled(true));
            return;
        }
        Option<User> victimOption = Option.of(victim).is(Player.class).flatMap(this.userManager::findByPlayer);
        if (victimOption.isEmpty()) {
            return;
        }
        User victimUser = victimOption.get();
        if (victimUser.hasGuild() && attackerUser.hasGuild()) {
            if (victimUser.getUUID().equals(attackerUser.getUUID())) {
                return;
            }
            Guild victimGuild = victimUser.getGuild().get();
            Guild attackerGuild = attackerUser.getGuild().get();
            if (victimGuild.equals(attackerGuild)) {
                if (!victimGuild.getPvP()) {
                    event.setCancelled(true);
                    return;
                }
            }
            if (victimGuild.getAllies().contains(attackerGuild)) {
                if (!config.damageAlly) {
                    event.setCancelled(true);
                    return;
                }
                if (!(attackerGuild.getPvP(victimGuild) && victimGuild.getPvP(attackerGuild))) {
                    event.setCancelled(true);
                    return;
                }
            }
        }
        if (attacker.equals(victim)) {
            return;
        }
        if (!config.assistEnable || event.isCancelled()) {
            return;
        }
        if (HookManager.WORLD_GUARD.map(worldGuard -> worldGuard.isInIgnoredRegion(victim.getLocation())).orElseGet(false)) {
            return;
        }
        victimUser.getCache().addDamage(attackerUser, event.getDamage(), System.currentTimeMillis());
    });
}
Also used : Villager(org.bukkit.entity.Villager) EventHandler(org.bukkit.event.EventHandler) Entity(org.bukkit.entity.Entity) Guild(net.dzikoysk.funnyguilds.guild.Guild) Animals(org.bukkit.entity.Animals) EntityUtils(net.dzikoysk.funnyguilds.shared.bukkit.EntityUtils) Player(org.bukkit.entity.Player) Region(net.dzikoysk.funnyguilds.guild.Region) User(net.dzikoysk.funnyguilds.user.User) HookManager(net.dzikoysk.funnyguilds.feature.hooks.HookManager) EntityDamageByEntityEvent(org.bukkit.event.entity.EntityDamageByEntityEvent) Option(panda.std.Option) Entity(org.bukkit.entity.Entity) Player(org.bukkit.entity.Player) User(net.dzikoysk.funnyguilds.user.User) Animals(org.bukkit.entity.Animals) Villager(org.bukkit.entity.Villager) Region(net.dzikoysk.funnyguilds.guild.Region) Guild(net.dzikoysk.funnyguilds.guild.Guild) EventHandler(org.bukkit.event.EventHandler)

Aggregations

Guild (net.dzikoysk.funnyguilds.guild.Guild)58 User (net.dzikoysk.funnyguilds.user.User)34 FunnyCommand (net.dzikoysk.funnycommands.stereotypes.FunnyCommand)23 AbstractFunnyCommand (net.dzikoysk.funnyguilds.feature.command.AbstractFunnyCommand)23 Formatter (panda.utilities.text.Formatter)16 Region (net.dzikoysk.funnyguilds.guild.Region)12 Player (org.bukkit.entity.Player)11 PluginConfiguration (net.dzikoysk.funnyguilds.config.PluginConfiguration)9 FunnyGuilds (net.dzikoysk.funnyguilds.FunnyGuilds)8 Option (panda.std.Option)8 Location (org.bukkit.Location)7 Material (org.bukkit.Material)6 EventHandler (org.bukkit.event.EventHandler)6 List (java.util.List)5 ValidationException (net.dzikoysk.funnycommands.resources.ValidationException)5 Team (org.bukkit.scoreboard.Team)5 TimeUnit (java.util.concurrent.TimeUnit)4 HookManager (net.dzikoysk.funnyguilds.feature.hooks.HookManager)4 GuildManager (net.dzikoysk.funnyguilds.guild.GuildManager)4 ChatUtils (net.dzikoysk.funnyguilds.shared.bukkit.ChatUtils)4