Search in sources :

Example 61 with User

use of com.iridium.iridiumskyblock.database.User in project IridiumSkyblock by Iridium-Development.

the class BlockPlaceListener method onBlockPlaceEvent.

@EventHandler(ignoreCancelled = true)
public void onBlockPlaceEvent(BlockPlaceEvent event) {
    Player player = event.getPlayer();
    User user = IridiumSkyblock.getInstance().getUserManager().getUser(player);
    Optional<Island> island = IridiumSkyblock.getInstance().getIslandManager().getIslandViaLocation(event.getBlock().getLocation());
    if (!island.isPresent()) {
        World world = event.getBlock().getLocation().getWorld();
        if (IridiumSkyblockAPI.getInstance().isIslandWorld(world)) {
            if (!user.isBypassing())
                event.setCancelled(true);
        }
        return;
    }
    XMaterial material = XMaterial.matchXMaterial(event.getBlock().getType());
    if (!IridiumSkyblock.getInstance().getIslandManager().getIslandPermission(island.get(), user, PermissionType.BLOCK_PLACE)) {
        event.setCancelled(true);
        player.sendMessage(StringUtils.color(IridiumSkyblock.getInstance().getMessages().cannotPlaceBlocks.replace("%prefix%", IridiumSkyblock.getInstance().getConfiguration().prefix)));
        return;
    }
    int limitUpgradeLevel = IridiumSkyblock.getInstance().getIslandManager().getIslandUpgrade(island.get(), "blocklimit").getLevel();
    int blockLimit = IridiumSkyblock.getInstance().getUpgrades().blockLimitUpgrade.upgrades.get(limitUpgradeLevel).limits.getOrDefault(material, 0);
    if (blockLimit > 0 && IridiumSkyblock.getInstance().getIslandManager().getIslandBlockAmount(island.get(), material) >= blockLimit) {
        player.sendMessage(StringUtils.color(IridiumSkyblock.getInstance().getMessages().blockLimitReached.replace("%prefix%", IridiumSkyblock.getInstance().getConfiguration().prefix).replace("%limit%", String.valueOf(blockLimit)).replace("%block%", WordUtils.capitalizeFully(material.name().toLowerCase().replace("_", " ")))));
        event.setCancelled(true);
    }
}
Also used : Player(org.bukkit.entity.Player) User(com.iridium.iridiumskyblock.database.User) World(org.bukkit.World) XMaterial(com.iridium.iridiumcore.dependencies.xseries.XMaterial) Island(com.iridium.iridiumskyblock.database.Island) EventHandler(org.bukkit.event.EventHandler)

Example 62 with User

use of com.iridium.iridiumskyblock.database.User in project IridiumSkyblock by Iridium-Development.

the class BucketListener method onClick.

@EventHandler(ignoreCancelled = true)
public void onClick(PlayerInteractEvent event) {
    if (!IridiumSkyblockAPI.getInstance().isIslandWorld(event.getPlayer().getWorld()))
        return;
    Player player = event.getPlayer();
    ItemStack itemInHand = player.getInventory().getItemInMainHand();
    if (!(IridiumSkyblock.getInstance().getConfiguration().obsidianBucket && event.getAction().equals(Action.RIGHT_CLICK_BLOCK) && event.getClickedBlock().getType().equals(Material.OBSIDIAN) && itemInHand.getType().equals(Material.BUCKET))) {
        return;
    }
    Location location = event.getClickedBlock().getLocation();
    Optional<Island> island = IridiumSkyblock.getInstance().getIslandManager().getIslandViaLocation(location);
    User user = IridiumSkyblock.getInstance().getUserManager().getUser(player);
    if (island.isPresent()) {
        if (IridiumSkyblock.getInstance().getIslandManager().getIslandPermission(island.get(), user, PermissionType.BUCKET)) {
            event.getClickedBlock().setType(Material.AIR);
            if (itemInHand.getAmount() > 1) {
                itemInHand.setAmount(itemInHand.getAmount() - 1);
                if (InventoryUtils.hasEmptySlot(player.getInventory())) {
                    event.getPlayer().getInventory().addItem(new ItemStack(Material.LAVA_BUCKET));
                } else {
                    player.sendMessage(StringUtils.color(IridiumSkyblock.getInstance().getMessages().inventoryFull));
                    player.getWorld().dropItem(player.getLocation(), new ItemStack(Material.LAVA_BUCKET));
                }
            } else {
                itemInHand.setType(Material.LAVA_BUCKET);
            }
        } else {
            player.sendMessage(StringUtils.color(IridiumSkyblock.getInstance().getMessages().noPermission.replace("%prefix%", IridiumSkyblock.getInstance().getConfiguration().prefix)));
        }
    }
}
Also used : Player(org.bukkit.entity.Player) User(com.iridium.iridiumskyblock.database.User) ItemStack(org.bukkit.inventory.ItemStack) Island(com.iridium.iridiumskyblock.database.Island) Location(org.bukkit.Location) EventHandler(org.bukkit.event.EventHandler)

Example 63 with User

use of com.iridium.iridiumskyblock.database.User in project IridiumSkyblock by Iridium-Development.

the class EntityDamageListener method handleDamageBetweenPlayers.

public void handleDamageBetweenPlayers(EntityDamageByEntityEvent event, Player attacker, Player victim, Island island) {
    Configuration configuration = IridiumSkyblock.getInstance().getConfiguration();
    if (!configuration.pvpSettings.pvpOnIslands) {
        if (!messageIsOnCooldown(attacker)) {
            attacker.sendMessage(StringUtils.color(IridiumSkyblock.getInstance().getMessages().cannotHurtPlayer.replace("%prefix%", configuration.prefix)));
        }
        if (event.getCause().equals(EntityDamageEvent.DamageCause.PROJECTILE)) {
            event.getDamager().remove();
        }
        event.setCancelled(true);
        return;
    }
    User attackerUser = IridiumSkyblock.getInstance().getUserManager().getUser(attacker);
    User victimUser = IridiumSkyblock.getInstance().getUserManager().getUser(victim);
    Optional<IslandTrusted> attackerTrusted = IridiumSkyblock.getInstance().getIslandManager().getIslandTrusted(island, attackerUser);
    Optional<IslandTrusted> victimTrusted = IridiumSkyblock.getInstance().getIslandManager().getIslandTrusted(island, victimUser);
    boolean attackerIsMember = island.equals(attackerUser.getIsland().orElse(null)) || attackerTrusted.isPresent();
    boolean victimIsMember = island.equals(victimUser.getIsland().orElse(null)) || victimTrusted.isPresent();
    // If pvp between members is allowed or neither attacker or victim is a member, return
    if (configuration.pvpSettings.pvpBetweenMembers || !(attackerIsMember || victimIsMember))
        return;
    if (!messageIsOnCooldown(attacker)) {
        attacker.sendMessage(StringUtils.color(IridiumSkyblock.getInstance().getMessages().cannotHurtMember.replace("%prefix%", configuration.prefix)));
    }
    if (event.getCause().equals(EntityDamageEvent.DamageCause.PROJECTILE))
        event.getDamager().remove();
    event.setCancelled(true);
}
Also used : User(com.iridium.iridiumskyblock.database.User) IslandTrusted(com.iridium.iridiumskyblock.database.IslandTrusted) Configuration(com.iridium.iridiumskyblock.configs.Configuration)

Example 64 with User

use of com.iridium.iridiumskyblock.database.User in project IridiumSkyblock by Iridium-Development.

the class EntityDamageListener method handlePlayerDamage.

private void handlePlayerDamage(EntityDamageEvent event, Island island) {
    Configuration.IslandDamageSettings pvpSettings = IridiumSkyblock.getInstance().getConfiguration().pvpSettings;
    Player player = (Player) event.getEntity();
    User user = IridiumSkyblock.getInstance().getUserManager().getUser(player);
    Optional<IslandTrusted> trusted = IridiumSkyblock.getInstance().getIslandManager().getIslandTrusted(island, user);
    boolean isMember = island.equals(user.getIsland().orElse(null)) || trusted.isPresent();
    List<EntityDamageEvent.DamageCause> preventCauses = isMember ? pvpSettings.membersPreventedDamages : pvpSettings.visitorsPreventedDamages;
    if (preventCauses.contains(event.getCause())) {
        event.setCancelled(true);
    }
}
Also used : Player(org.bukkit.entity.Player) User(com.iridium.iridiumskyblock.database.User) IslandTrusted(com.iridium.iridiumskyblock.database.IslandTrusted) Configuration(com.iridium.iridiumskyblock.configs.Configuration)

Example 65 with User

use of com.iridium.iridiumskyblock.database.User in project IridiumSkyblock by Iridium-Development.

the class IslandSettingsGUI method onInventoryClick.

/**
 * Called when there is a click in this GUI.
 * Cancelled automatically.
 *
 * @param event The InventoryClickEvent provided by Bukkit
 */
@Override
public void onInventoryClick(InventoryClickEvent event) {
    Player player = (Player) event.getWhoClicked();
    User user = IridiumSkyblock.getInstance().getUserManager().getUser(player);
    if (!IridiumSkyblock.getInstance().getIslandManager().getIslandPermission(getIsland(), user, PermissionType.ISLAND_SETTINGS)) {
        event.getWhoClicked().sendMessage(StringUtils.color(IridiumSkyblock.getInstance().getMessages().cannotChangeSettings.replace("%prefix%", IridiumSkyblock.getInstance().getConfiguration().prefix)));
        return;
    }
    for (Map.Entry<String, Setting> setting : IridiumSkyblock.getInstance().getSettingsList().entrySet()) {
        if (event.getSlot() != setting.getValue().getItem().slot)
            continue;
        if (!setting.getValue().isModifiable())
            continue;
        SettingType settingType = SettingType.getByName(setting.getKey());
        IslandSetting islandSetting = IridiumSkyblock.getInstance().getIslandManager().getIslandSetting(getIsland(), settingType);
        String newValue = (event.getClick() == ClickType.RIGHT ? settingType.getNext() : settingType.getPrevious()).getNew(islandSetting.getValue());
        IslandSettingChangeEvent islandSettingChangeEvent = new IslandSettingChangeEvent(player, getIsland(), settingType, newValue);
        Bukkit.getPluginManager().callEvent(islandSettingChangeEvent);
        if (islandSettingChangeEvent.isCancelled())
            return;
        newValue = islandSettingChangeEvent.getNewValue();
        islandSetting.setValue(newValue);
        settingType.getOnChange().run(getIsland(), newValue);
        addContent(event.getInventory());
    }
}
Also used : Player(org.bukkit.entity.Player) User(com.iridium.iridiumskyblock.database.User) IslandSetting(com.iridium.iridiumskyblock.database.IslandSetting) IslandSetting(com.iridium.iridiumskyblock.database.IslandSetting) Setting(com.iridium.iridiumskyblock.Setting) SettingType(com.iridium.iridiumskyblock.SettingType) IslandSettingChangeEvent(com.iridium.iridiumskyblock.api.IslandSettingChangeEvent) Map(java.util.Map)

Aggregations

User (com.iridium.iridiumskyblock.database.User)94 Island (com.iridium.iridiumskyblock.database.Island)73 Player (org.bukkit.entity.Player)66 OfflinePlayer (org.bukkit.OfflinePlayer)16 EventHandler (org.bukkit.event.EventHandler)16 IslandLog (com.iridium.iridiumskyblock.database.IslandLog)13 IridiumSkyblock (com.iridium.iridiumskyblock.IridiumSkyblock)12 List (java.util.List)12 Optional (java.util.Optional)11 Collectors (java.util.stream.Collectors)11 IslandBank (com.iridium.iridiumskyblock.database.IslandBank)10 Duration (java.time.Duration)10 StringUtils (com.iridium.iridiumcore.utils.StringUtils)9 Collections (java.util.Collections)9 CommandSender (org.bukkit.command.CommandSender)9 XMaterial (com.iridium.iridiumcore.dependencies.xseries.XMaterial)6 BankItem (com.iridium.iridiumskyblock.bank.BankItem)5 IslandBooster (com.iridium.iridiumskyblock.database.IslandBooster)5 IslandTrusted (com.iridium.iridiumskyblock.database.IslandTrusted)5 IslandWarp (com.iridium.iridiumskyblock.database.IslandWarp)5