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));
}
}
}
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());
}
}
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);
}
}
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);
}
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());
});
}
Aggregations