Search in sources :

Example 1 with Player

use of com.yuhtin.lauren.core.player.Player in project Lauren by Yuhtin.

the class LootGeneratorTask method startRunnable.

public void startRunnable() {
    logger.info("Registered LootGeneratorTask");
    val allowedChannels = Arrays.asList(700673056414367825L, 704342124732350645L);
    val embed = new EmbedBuilder();
    embed.setAuthor("Loot Radiante", null, "https://cdn.discordapp.com/emojis/724759930653114399.png?v=1");
    val guild = jda.getGuilds().get(0);
    embed.setFooter("© ^Aincrad™ servidor de jogos", guild.getIconUrl());
    embed.setThumbnail("https://www.pcguia.pt/wp-content/uploads/2019/11/lootbox.jpg");
    embed.setColor(Color.ORANGE);
    val arrow = "   <:seta:771540348157689886>";
    embed.setDescription("Você encontrou uma **lootbox**, seja o primeiro a reajir\n" + "no ícone abaixo para garantir prêmios aleatórios\n" + "\n" + " \uD83C\uDFC6 Prêmios:\n" + arrow + " Experiência **(Garantido)**\n" + arrow + " Pontos de Patente\n" + arrow + " Dinheiro\n" + arrow + " Boost de XP\n" + arrow + " Cargo Sortudo");
    TaskHelper.runTaskTimerAsync(new TimerTask() {

        @Override
        public void run() {
            logger.info("Running LootGeneratorTask");
            if (new Random().nextInt(100) > 10)
                return;
            val value = new Random().nextInt(allowedChannels.size());
            val channelID = allowedChannels.get(value);
            val channel = guild.getTextChannelById(channelID);
            if (channel == null) {
                logger.warning("Can't select a random channel to drop a loot");
                return;
            }
            logger.info("Dropped loot on channel " + channel.getName());
            val message = channel.sendMessageEmbeds(embed.build()).complete();
            message.addReaction(":radiante:771541052590915585").queue();
            eventWaiter.waitForEvent(MessageReactionAddEvent.class, event -> !event.getMember().getUser().isBot() && event.getMessageIdLong() == message.getIdLong(), event -> {
                message.clearReactions().queue();
                var nickname = event.getMember().getNickname();
                if (nickname == null)
                    nickname = event.getMember().getEffectiveName();
                message.delete().queue();
                val privateChannel = event.getUser().openPrivateChannel().complete();
                if (privateChannel != null) {
                    privateChannel.sendMessage("<:felizpakas:742373250037710918> " + "Parabéns **" + nickname + "**, você capturou uma lootbox, você pode abrir ela mais tarde " + "usando `/lootbox`").queue();
                }
                val player = playerController.get(event.getUserIdLong());
                player.setLootBoxes(player.getLootBoxes() + 1);
                logger.info("The player " + event.getUser().getAsTag() + " getted the drop");
            }, 90, TimeUnit.SECONDS, () -> {
                message.delete().queue();
                channel.sendMessage("<a:tchau:751941650728747140> " + "Infelizmente acabou o tempo e ninguém coletou o loot.").queue(m -> m.delete().queueAfter(5, TimeUnit.SECONDS));
            });
        }
    }, 25, 60, TimeUnit.MINUTES);
}
Also used : lombok.val(lombok.val) Message(net.dv8tion.jda.api.entities.Message) lombok.var(lombok.var) Arrays(java.util.Arrays) JDA(net.dv8tion.jda.api.JDA) TaskHelper(com.yuhtin.lauren.utils.TaskHelper) lombok.val(lombok.val) Random(java.util.Random) EmbedBuilder(net.dv8tion.jda.api.EmbedBuilder) TextChannel(net.dv8tion.jda.api.entities.TextChannel) MessageReactionAddEvent(net.dv8tion.jda.api.events.message.react.MessageReactionAddEvent) PrivateChannel(net.dv8tion.jda.api.entities.PrivateChannel) Player(com.yuhtin.lauren.core.player.Player) java.awt(java.awt) TimeUnit(java.util.concurrent.TimeUnit) UserUtil(com.yuhtin.lauren.utils.UserUtil) EventWaiter(com.yuhtin.lauren.models.objects.EventWaiter) Logger(com.yuhtin.lauren.core.logger.Logger) AllArgsConstructor(lombok.AllArgsConstructor) TimerTask(java.util.TimerTask) PlayerController(com.yuhtin.lauren.core.player.controller.PlayerController) EmbedBuilder(net.dv8tion.jda.api.EmbedBuilder) MessageReactionAddEvent(net.dv8tion.jda.api.events.message.react.MessageReactionAddEvent) TimerTask(java.util.TimerTask) Random(java.util.Random) lombok.var(lombok.var)

Example 2 with Player

use of com.yuhtin.lauren.core.player.Player in project Lauren by Yuhtin.

the class ShardLootTask method startRunnable.

public void startRunnable() {
    logger.info("Registered ShardLootTask");
    val allowedChannels = Arrays.asList(704342124732350645L, 700673056414367825L);
    val embed = new EmbedBuilder();
    embed.setAuthor("Shard Loot", null, "https://cdn.discordapp.com/emojis/772285522852839445.png?v=1");
    val guild = bot.getGuilds().get(0);
    embed.setFooter("© ^Aincrad™ servidor de jogos", guild.getIconUrl());
    embed.setThumbnail("https://www.pcguia.pt/wp-content/uploads/2019/11/lootbox.jpg");
    embed.setColor(Color.MAGENTA);
    embed.setDescription("Você encontrou um **shardloot**, seja o primeiro a reajir\n" + "no ícone abaixo para garantir seus **<:boost_emoji:772285522852839445> shards**\n");
    TaskHelper.runTaskTimerAsync(new TimerTask() {

        @Override
        public void run() {
            logger.info("Running ShardLootTask");
            if (new Random().nextInt(100) > 25)
                return;
            val value = new Random().nextInt(allowedChannels.size());
            val channelID = allowedChannels.get(value);
            val channel = guild.getTextChannelById(channelID);
            if (channel == null) {
                logger.warning("Can't select a random channel to drop a loot");
                return;
            }
            logger.info("Dropped shardloot on channel " + channel.getName());
            val message = channel.sendMessageEmbeds(embed.build()).complete();
            message.addReaction(":boost_emoji:772285522852839445").queue();
            eventWaiter.waitForEvent(MessageReactionAddEvent.class, event -> !event.getMember().getUser().isBot() && event.getMessageIdLong() == message.getIdLong(), event -> {
                message.delete().queue();
                val player = playerController.get(event.getUserIdLong());
                val shard = 30 + new Random().nextInt(50);
                player.addMoney(shard);
                val privateChannel = event.getUser().openPrivateChannel().complete();
                if (event.getUser().hasPrivateChannel()) {
                    var nickname = event.getMember().getNickname();
                    if (nickname == null)
                        nickname = event.getMember().getEffectiveName();
                    privateChannel.sendMessage("<:felizpakas:742373250037710918> " + "Parabéns **" + nickname + "**, você capturou um shardloot, " + "você recebeu <:boost_emoji:772285522852839445> **$" + shard + " shards**").queue();
                }
                logger.info("The player " + event.getUser().getAsTag() + " getted the sharddrop");
            }, 25, TimeUnit.SECONDS, () -> message.delete().queue());
        }
    }, 10, 55, TimeUnit.MINUTES);
}
Also used : lombok.val(lombok.val) Message(net.dv8tion.jda.api.entities.Message) lombok.var(lombok.var) Arrays(java.util.Arrays) JDA(net.dv8tion.jda.api.JDA) TaskHelper(com.yuhtin.lauren.utils.TaskHelper) lombok.val(lombok.val) Random(java.util.Random) EmbedBuilder(net.dv8tion.jda.api.EmbedBuilder) TextChannel(net.dv8tion.jda.api.entities.TextChannel) MessageReactionAddEvent(net.dv8tion.jda.api.events.message.react.MessageReactionAddEvent) PrivateChannel(net.dv8tion.jda.api.entities.PrivateChannel) Player(com.yuhtin.lauren.core.player.Player) java.awt(java.awt) TimeUnit(java.util.concurrent.TimeUnit) UserUtil(com.yuhtin.lauren.utils.UserUtil) EventWaiter(com.yuhtin.lauren.models.objects.EventWaiter) Logger(com.yuhtin.lauren.core.logger.Logger) AllArgsConstructor(lombok.AllArgsConstructor) TimerTask(java.util.TimerTask) PlayerController(com.yuhtin.lauren.core.player.controller.PlayerController) EmbedBuilder(net.dv8tion.jda.api.EmbedBuilder) MessageReactionAddEvent(net.dv8tion.jda.api.events.message.react.MessageReactionAddEvent) TimerTask(java.util.TimerTask) Random(java.util.Random) lombok.var(lombok.var)

Example 3 with Player

use of com.yuhtin.lauren.core.player.Player in project Lauren by Yuhtin.

the class PlayerController method get.

public Player get(long userID) {
    var player = cache.getOrDefault(userID, null);
    if (player == null) {
        val loadedPlayer = playerDAO.findById(userID);
        if (loadedPlayer == null) {
            player = new Player(userID);
            playerDAO.insertPlayer(player);
        } else {
            if (loadedPlayer.getRank() == null) {
                // execute conversion
                player = new Player(userID);
                player.setExperience(loadedPlayer.getExperience());
                player.setMoney(loadedPlayer.getMoney());
                player.setLevel(loadedPlayer.getLevel());
                logger.info("Converted data of player " + userID + " to new Player class");
            } else
                player = loadedPlayer;
            logger.info("Loading player " + userID);
            if (loadedPlayer.getPunishs() == null)
                loadedPlayer.setPunishs(new HashMap<>());
        }
        cache.put(userID, player);
    }
    return player;
}
Also used : lombok.val(lombok.val) Player(com.yuhtin.lauren.core.player.Player) HashMap(java.util.HashMap) lombok.var(lombok.var)

Aggregations

Player (com.yuhtin.lauren.core.player.Player)3 lombok.val (lombok.val)3 lombok.var (lombok.var)3 Logger (com.yuhtin.lauren.core.logger.Logger)2 PlayerController (com.yuhtin.lauren.core.player.controller.PlayerController)2 EventWaiter (com.yuhtin.lauren.models.objects.EventWaiter)2 TaskHelper (com.yuhtin.lauren.utils.TaskHelper)2 UserUtil (com.yuhtin.lauren.utils.UserUtil)2 java.awt (java.awt)2 Arrays (java.util.Arrays)2 Random (java.util.Random)2 TimerTask (java.util.TimerTask)2 TimeUnit (java.util.concurrent.TimeUnit)2 AllArgsConstructor (lombok.AllArgsConstructor)2 EmbedBuilder (net.dv8tion.jda.api.EmbedBuilder)2 JDA (net.dv8tion.jda.api.JDA)2 Message (net.dv8tion.jda.api.entities.Message)2 PrivateChannel (net.dv8tion.jda.api.entities.PrivateChannel)2 TextChannel (net.dv8tion.jda.api.entities.TextChannel)2 MessageReactionAddEvent (net.dv8tion.jda.api.events.message.react.MessageReactionAddEvent)2