Search in sources :

Example 11 with Region

use of net.dzikoysk.funnyguilds.basic.Region in project FunnyGuilds by FunnyGuilds.

the class PlayerCommand method onCommand.

@EventHandler
public void onCommand(PlayerCommandPreprocessEvent event) {
    Player player = event.getPlayer();
    if (player.hasPermission("funnyguilds.admin")) {
        return;
    }
    String[] splited = event.getMessage().split("\\s+");
    if (splited.length == 0) {
        return;
    }
    String command = splited[0];
    for (String s : Settings.getConfig().regionCommands) {
        if (("/" + s).equalsIgnoreCase(command)) {
            command = null;
            break;
        }
    }
    if (command != null) {
        return;
    }
    Region region = RegionUtils.getAt(player.getLocation());
    if (region == null) {
        return;
    }
    Guild guild = region.getGuild();
    User user = User.get(player);
    if (guild.getMembers().contains(user)) {
        return;
    }
    event.setCancelled(true);
    player.sendMessage(Messages.getInstance().regionCommand);
}
Also used : Player(org.bukkit.entity.Player) User(net.dzikoysk.funnyguilds.basic.User) Region(net.dzikoysk.funnyguilds.basic.Region) Guild(net.dzikoysk.funnyguilds.basic.Guild) EventHandler(org.bukkit.event.EventHandler)

Example 12 with Region

use of net.dzikoysk.funnyguilds.basic.Region in project FunnyGuilds by FunnyGuilds.

the class ExcCreate method execute.

@SuppressWarnings("deprecation")
@Override
public void execute(CommandSender sender, String[] args) {
    MessagesConfig messages = Messages.getInstance();
    PluginConfig config = Settings.getConfig();
    Player player = (Player) sender;
    User user = User.get(player);
    if (!config.guildsEnabled) {
        player.sendMessage(messages.adminGuildsDisabled);
        return;
    }
    boolean isBlockedWorld = this.checkWorld(player);
    if (isBlockedWorld) {
        player.sendMessage(messages.blockedWorld);
        return;
    }
    if (user.hasGuild()) {
        player.sendMessage(messages.generalHasGuild);
        return;
    }
    if (args.length != 2) {
        switch(args.length) {
            case 0:
                player.sendMessage(messages.generalNoTagGiven);
                return;
            case 1:
                player.sendMessage(messages.generalNoNameGiven);
                return;
            default:
                player.sendMessage(messages.createMore);
                return;
        }
    }
    String tag = args[0];
    if (!config.guildTagKeepCase) {
        tag = config.guildTagUppercase ? tag.toUpperCase() : tag.toLowerCase();
    }
    String name = args[1];
    if (tag.length() > config.createTagLength) {
        player.sendMessage(messages.createTagLength.replace("{LENGTH}", Integer.toString(config.createTagLength)));
        return;
    }
    if (tag.length() < config.createTagMinLength) {
        player.sendMessage(messages.createTagMinLength.replace("{LENGTH}", Integer.toString(config.createTagMinLength)));
        return;
    }
    if (name.length() > config.createNameLength) {
        player.sendMessage(messages.createNameLength.replace("{LENGTH}", Integer.toString(config.createNameLength)));
        return;
    }
    if (name.length() < config.createNameMinLength) {
        player.sendMessage(messages.createNameMinLength.replace("{LENGTH}", Integer.toString(config.createNameMinLength)));
        return;
    }
    if (!tag.matches(config.tagRegex.getPattern())) {
        player.sendMessage(messages.createOLTag);
        return;
    }
    if (!name.matches(config.nameRegex.getPattern())) {
        player.sendMessage(messages.createOLName);
        return;
    }
    if (GuildUtils.nameExists(name)) {
        player.sendMessage(messages.createNameExists);
        return;
    }
    if (GuildUtils.tagExists(tag)) {
        player.sendMessage(messages.createTagExists);
        return;
    }
    if (config.checkForRestrictedGuildNames) {
        if (!GuildUtils.isNameValid(name)) {
            player.sendMessage(messages.restrictedGuildName);
            return;
        } else if (!GuildUtils.isTagValid(tag)) {
            player.sendMessage(messages.restrictedGuildTag);
            return;
        }
    }
    Location guildLocation = player.getLocation().getBlock().getLocation();
    if (config.regionsEnabled) {
        if (config.createCenterY != 0) {
            guildLocation.setY(config.createCenterY);
        }
        int d = config.regionSize + config.createDistance;
        if (config.enlargeItems != null) {
            d += config.enlargeItems.size() * config.enlargeSize;
        }
        if (d > player.getWorld().getSpawnLocation().distance(guildLocation)) {
            player.sendMessage(messages.createSpawn.replace("{DISTANCE}", Integer.toString(d)));
            return;
        }
    }
    if (config.rankCreateEnable) {
        int requiredRank = player.hasPermission("funnyguilds.vip.rank") ? config.rankCreateVip : config.rankCreate;
        int points = user.getRank().getPoints();
        if (points < requiredRank) {
            String msg = messages.createRank;
            msg = StringUtils.replace(msg, "{REQUIRED-FORMAT}", IntegerRange.inRange(requiredRank, config.pointsFormat).replace("{POINTS}", "{REQUIRED}"));
            msg = StringUtils.replace(msg, "{REQUIRED}", String.valueOf(requiredRank));
            msg = StringUtils.replace(msg, "{POINTS-FORMAT}", IntegerRange.inRange(points, config.pointsFormat));
            msg = StringUtils.replace(msg, "{POINTS}", String.valueOf(points));
            player.sendMessage(msg);
            return;
        }
    }
    List<ItemStack> requiredItems = player.hasPermission("funnyguilds.vip.items") ? config.createItemsVip : config.createItems;
    int requiredExperience = player.hasPermission("funnyguilds.vip.items") ? config.requiredExperienceVip : config.requiredExperience;
    double requiredMoney = player.hasPermission("funnyguilds.vip.items") ? config.requiredMoneyVip : config.requiredMoney;
    if (!user.getBypass()) {
        if (player.getTotalExperience() < requiredExperience) {
            String msg = messages.createExperience;
            msg = StringUtils.replace(msg, "{EXP}", String.valueOf(requiredExperience));
            player.sendMessage(msg);
            return;
        }
        if (VaultHook.isHooked() && !VaultHook.canAfford(player, requiredMoney)) {
            String notEnoughMoneyMessage = messages.createMoney;
            notEnoughMoneyMessage = StringUtils.replace(notEnoughMoneyMessage, "{MONEY}", Double.toString(requiredMoney));
            player.sendMessage(notEnoughMoneyMessage);
            return;
        }
        for (ItemStack requiredItem : requiredItems) {
            if (player.getInventory().containsAtLeast(requiredItem, requiredItem.getAmount())) {
                continue;
            }
            String msg = ItemUtils.translatePlaceholder(messages.createItems, requiredItems, requiredItem);
            player.sendMessage(msg);
            return;
        }
    }
    if (config.regionsEnabled) {
        if (RegionUtils.isIn(guildLocation)) {
            player.sendMessage(messages.createIsNear);
            return;
        }
        if (RegionUtils.isNear(guildLocation)) {
            player.sendMessage(messages.createIsNear);
            return;
        }
        if (config.createMinDistanceFromBorder != -1) {
            WorldBorder border = player.getWorld().getWorldBorder();
            double borderSize = border.getSize() / 2;
            double borderX = border.getCenter().getX() + borderSize;
            double borderZ = border.getCenter().getZ() + borderSize;
            double distanceX = Math.abs(borderX) - Math.abs(player.getLocation().getX());
            double distanceZ = Math.abs(borderZ) - Math.abs(player.getLocation().getZ());
            if ((distanceX < config.createMinDistanceFromBorder) || (distanceZ < config.createMinDistanceFromBorder)) {
                String notEnoughDistanceMessage = messages.createNotEnoughDistanceFromBorder;
                notEnoughDistanceMessage = StringUtils.replace(notEnoughDistanceMessage, "{BORDER-MIN-DISTANCE}", Double.toString(config.createMinDistanceFromBorder));
                player.sendMessage(notEnoughDistanceMessage);
                return;
            }
        }
    }
    if (!SimpleEventHandler.handle(new GuildCreateEvent(EventCause.USER, user, name, tag, guildLocation))) {
        return;
    }
    if (user.getBypass()) {
        user.setBypass(false);
    } else {
        player.getInventory().removeItem(ItemUtils.toArray(requiredItems));
        player.setTotalExperience(player.getTotalExperience() - requiredExperience);
        if (VaultHook.isHooked()) {
            VaultHook.withdrawFromPlayerBank(player, requiredMoney);
        }
    }
    Manager.getInstance().stop();
    Guild guild = new Guild(name);
    guild.setTag(tag);
    guild.setOwner(user);
    guild.setLives(config.warLives);
    guild.setBorn(System.currentTimeMillis());
    guild.setValidity(System.currentTimeMillis() + config.validityStart);
    guild.setAttacked(System.currentTimeMillis() - config.warWait + config.warProtection);
    guild.setPvP(config.damageGuild);
    user.setGuild(guild);
    if (config.regionsEnabled) {
        Region region = new Region(guild, guildLocation, config.regionSize);
        guild.setRegion(region.getName());
        guild.addRegion(region.getName());
        if (config.pasteSchematicOnCreation) {
            if (!SchematicHelper.pasteSchematic(config.guildSchematicFile, guildLocation, config.pasteSchematicWithAir)) {
                player.sendMessage(messages.createGuildCouldNotPasteSchematic);
            }
        } else if (config.createCenterSphere) {
            for (Location l : SpaceUtils.sphere(guildLocation, 4, 4, false, true, 0)) {
                if (l.getBlock().getType() != Material.BEDROCK) {
                    l.getBlock().setType(Material.AIR);
                }
            }
            for (Location l : SpaceUtils.sphere(guildLocation, 4, 4, true, true, 0)) {
                if (l.getBlock().getType() != Material.BEDROCK) {
                    l.getBlock().setType(Material.OBSIDIAN);
                }
            }
        }
        if (config.createMaterialData != null && config.createMaterialData.getItemType() != Material.AIR) {
            Block heart = guildLocation.getBlock().getRelative(BlockFace.DOWN);
            heart.setType(config.createMaterialData.getItemType());
            heart.setData(config.createMaterialData.getData());
        } else if (config.createEntityType != null) {
            EntityUtil.spawn(guild);
        }
        player.teleport(guildLocation);
    }
    Manager.getInstance().start();
    /*
        IndependentThread.actions(ActionType.RANK_UPDATE_GUILD, guild);
        IndependentThread.actions(ActionType.PREFIX_GLOBAL_ADD_GUILD, guild);
        IndependentThread.action(ActionType.PREFIX_GLOBAL_ADD_PLAYER, user.getName());
        */
    ConcurrencyManager concurrencyManager = FunnyGuilds.getInstance().getConcurrencyManager();
    concurrencyManager.postRequests(new RankUpdateGuildRequest(guild), new PrefixGlobalAddGuildRequest(guild), new PrefixGlobalAddPlayerRequest(user.getName()));
    MessageTranslator translator = new MessageTranslator().register("{GUILD}", name).register("{TAG}", tag).register("{PLAYER}", player.getName());
    player.sendMessage(translator.translate(messages.createGuild));
    Bukkit.broadcastMessage(translator.translate(messages.broadcastCreate));
}
Also used : Player(org.bukkit.entity.Player) User(net.dzikoysk.funnyguilds.basic.User) GuildCreateEvent(net.dzikoysk.funnyguilds.event.guild.GuildCreateEvent) ConcurrencyManager(net.dzikoysk.funnyguilds.concurrency.ConcurrencyManager) Guild(net.dzikoysk.funnyguilds.basic.Guild) PluginConfig(net.dzikoysk.funnyguilds.data.configs.PluginConfig) RankUpdateGuildRequest(net.dzikoysk.funnyguilds.concurrency.requests.rank.RankUpdateGuildRequest) PrefixGlobalAddPlayerRequest(net.dzikoysk.funnyguilds.concurrency.requests.prefix.PrefixGlobalAddPlayerRequest) WorldBorder(org.bukkit.WorldBorder) PrefixGlobalAddGuildRequest(net.dzikoysk.funnyguilds.concurrency.requests.prefix.PrefixGlobalAddGuildRequest) Region(net.dzikoysk.funnyguilds.basic.Region) Block(org.bukkit.block.Block) MessagesConfig(net.dzikoysk.funnyguilds.data.configs.MessagesConfig) ItemStack(org.bukkit.inventory.ItemStack) MessageTranslator(net.dzikoysk.funnyguilds.data.util.MessageTranslator) Location(org.bukkit.Location)

Example 13 with Region

use of net.dzikoysk.funnyguilds.basic.Region in project FunnyGuilds by FunnyGuilds.

the class RegionUtils method isNear.

public static boolean isNear(Location center) {
    if (center == null) {
        return false;
    }
    PluginConfig s = Settings.getConfig();
    int i = s.regionSize;
    if (s.enlargeItems != null) {
        i += (s.enlargeItems.size() * s.enlargeSize);
    }
    int requiredDistance = (2 * i) + s.regionMinDistance;
    for (Region region : REGION_LIST) {
        if (region.getCenter() == null) {
            continue;
        }
        if (region.getCenter().equals(center)) {
            continue;
        }
        if (!center.getWorld().equals(region.getCenter().getWorld())) {
            continue;
        }
        if (center.distance(region.getCenter()) < requiredDistance) {
            return true;
        }
    }
    return false;
}
Also used : PluginConfig(net.dzikoysk.funnyguilds.data.configs.PluginConfig) DatabaseRegion(net.dzikoysk.funnyguilds.data.database.DatabaseRegion) Region(net.dzikoysk.funnyguilds.basic.Region)

Example 14 with Region

use of net.dzikoysk.funnyguilds.basic.Region in project FunnyGuilds by FunnyGuilds.

the class AxcName method execute.

@Override
public void execute(CommandSender sender, String[] args) {
    MessagesConfig messages = Messages.getInstance();
    PluginConfig config = Settings.getConfig();
    if (args.length < 1) {
        sender.sendMessage(messages.generalNoTagGiven);
        return;
    } else if (args.length < 2) {
        sender.sendMessage(messages.adminNoNewNameGiven);
        return;
    }
    Guild guild = GuildUtils.getByTag(args[0]);
    if (guild == null) {
        sender.sendMessage(messages.generalNoGuildFound);
        return;
    }
    if (GuildUtils.nameExists(args[1])) {
        sender.sendMessage(messages.createNameExists);
        return;
    }
    User admin = (sender instanceof Player) ? User.get(sender.getName()) : null;
    if (!SimpleEventHandler.handle(new GuildRenameEvent(admin == null ? EventCause.CONSOLE : EventCause.ADMIN, admin, guild, args[1]))) {
        return;
    }
    Manager.getInstance().stop();
    PluginConfig.DataType dataType = Settings.getConfig().dataType;
    if (config.regionsEnabled) {
        Region region = RegionUtils.get(guild.getRegion());
        if (dataType.flat) {
            Flat.getRegionFile(region).delete();
        }
        if (dataType.mysql) {
            new DatabaseRegion(region).delete();
        }
        region.setName(args[1]);
    }
    if (dataType.flat) {
        Flat.getGuildFile(guild).delete();
    }
    if (dataType.mysql) {
        new DatabaseGuild(guild).delete();
    }
    guild.setName(args[1]);
    Manager.getInstance().start();
    sender.sendMessage(messages.adminNameChanged.replace("{GUILD}", guild.getName()));
}
Also used : PluginConfig(net.dzikoysk.funnyguilds.data.configs.PluginConfig) Player(org.bukkit.entity.Player) User(net.dzikoysk.funnyguilds.basic.User) DatabaseGuild(net.dzikoysk.funnyguilds.data.database.DatabaseGuild) DatabaseRegion(net.dzikoysk.funnyguilds.data.database.DatabaseRegion) DatabaseRegion(net.dzikoysk.funnyguilds.data.database.DatabaseRegion) Region(net.dzikoysk.funnyguilds.basic.Region) MessagesConfig(net.dzikoysk.funnyguilds.data.configs.MessagesConfig) DatabaseGuild(net.dzikoysk.funnyguilds.data.database.DatabaseGuild) Guild(net.dzikoysk.funnyguilds.basic.Guild) GuildRenameEvent(net.dzikoysk.funnyguilds.event.guild.GuildRenameEvent)

Example 15 with Region

use of net.dzikoysk.funnyguilds.basic.Region in project FunnyGuilds by FunnyGuilds.

the class MxcBase method execute.

@Override
public void execute(CommandSender sender, String[] args) {
    MessagesConfig messages = Messages.getInstance();
    Player player = (Player) sender;
    User user = User.get(player);
    if (!Settings.getConfig().regionsEnabled) {
        player.sendMessage(messages.regionsDisabled);
        return;
    }
    if (!user.hasGuild()) {
        player.sendMessage(messages.generalHasNoGuild);
        return;
    }
    if (!user.isOwner() && !user.isDeputy()) {
        player.sendMessage(messages.generalIsNotOwner);
        return;
    }
    Guild guild = user.getGuild();
    Region region = RegionUtils.get(guild.getName());
    Location loc = player.getLocation();
    if (!region.isIn(loc)) {
        player.sendMessage(messages.setbaseOutside);
        return;
    }
    if (!SimpleEventHandler.handle(new GuildBaseChangeEvent(EventCause.USER, user, guild, loc))) {
        return;
    }
    guild.setHome(loc);
    if (guild.getHome().getBlock().getRelative(BlockFace.DOWN).getType() == Material.AIR) {
        for (int i = guild.getHome().getBlockY(); i > 0; i--) {
            guild.getHome().setY(i);
            if (guild.getHome().getBlock().getType() != Material.AIR) {
                break;
            }
        }
    }
    player.sendMessage(messages.setbaseDone);
}
Also used : GuildBaseChangeEvent(net.dzikoysk.funnyguilds.event.guild.GuildBaseChangeEvent) Player(org.bukkit.entity.Player) User(net.dzikoysk.funnyguilds.basic.User) Region(net.dzikoysk.funnyguilds.basic.Region) MessagesConfig(net.dzikoysk.funnyguilds.data.configs.MessagesConfig) Guild(net.dzikoysk.funnyguilds.basic.Guild) Location(org.bukkit.Location)

Aggregations

Region (net.dzikoysk.funnyguilds.basic.Region)24 Guild (net.dzikoysk.funnyguilds.basic.Guild)16 User (net.dzikoysk.funnyguilds.basic.User)13 PluginConfig (net.dzikoysk.funnyguilds.data.configs.PluginConfig)13 Player (org.bukkit.entity.Player)13 MessagesConfig (net.dzikoysk.funnyguilds.data.configs.MessagesConfig)8 Location (org.bukkit.Location)8 EventHandler (org.bukkit.event.EventHandler)6 Block (org.bukkit.block.Block)5 ConcurrencyManager (net.dzikoysk.funnyguilds.concurrency.ConcurrencyManager)4 DatabaseGuild (net.dzikoysk.funnyguilds.data.database.DatabaseGuild)2 DatabaseRegion (net.dzikoysk.funnyguilds.data.database.DatabaseRegion)2 MessageTranslator (net.dzikoysk.funnyguilds.data.util.MessageTranslator)2 ItemStack (org.bukkit.inventory.ItemStack)2 MaterialData (org.bukkit.material.MaterialData)2 File (java.io.File)1 SQLException (java.sql.SQLException)1 LocalDateTime (java.time.LocalDateTime)1 ArrayList (java.util.ArrayList)1 UUID (java.util.UUID)1