Search in sources :

Example 1 with Quest

use of com.magmaguy.elitemobs.quests.Quest in project EliteMobs by MagmaGuy.

the class PlayerData method readExistingData.

private void readExistingData(Statement statement, UUID uuid, ResultSet resultSet) throws Exception {
    playerDataHashMap.put(uuid, this);
    currency = resultSet.getDouble("Currency");
    guildPrestigeLevel = resultSet.getInt("GuildPrestigeLevel");
    maxGuildLevel = resultSet.getInt("GuildMaxLevel");
    activeGuildLevel = resultSet.getInt("GuildActiveLevel");
    score = resultSet.getInt("Score");
    kills = resultSet.getInt("Kills");
    highestLevelKilled = resultSet.getInt("HighestLevelKilled");
    deaths = resultSet.getInt("Deaths");
    questsCompleted = resultSet.getInt("QuestsCompleted");
    backTeleportLocation = ConfigurationLocation.serialize(resultSet.getString("BackTeleportLocation"));
    if (resultSet.getBytes("QuestStatus") != null) {
        try {
            quests = (List<Quest>) ObjectSerializer.fromString(new String(resultSet.getBytes("QuestStatus"), "UTF-8"));
            // Serializes ItemStack which require specific handling, necessary recovering the rewards
            for (Quest quest : quests) if (quest instanceof CustomQuest)
                ((CustomQuest) quest).applyTemporaryPermissions(Bukkit.getPlayer(uuid));
        } catch (Exception ex) {
            new WarningMessage("Failed to serialize quest data for player " + Bukkit.getPlayer(uuid) + " ! This player's quest data will be wiped to prevent future errors.");
            try {
                resetQuests(uuid);
            } catch (Exception ex2) {
                new WarningMessage("Failed to reset quest data! Ironic.");
                ex2.printStackTrace();
            }
        }
    }
    if (resultSet.getBytes("PlayerQuestCooldowns") != null) {
        try {
            playerQuestCooldowns = (PlayerQuestCooldowns) ObjectSerializer.fromString(new String(resultSet.getBytes("PlayerQuestCooldowns"), "UTF-8"));
            playerQuestCooldowns.startCooldowns(uuid);
        } catch (Exception exception) {
            new WarningMessage("Failed to get player quest cooldowns!  ! This player's quest cooldowns will be wiped to prevent future errors.");
            try {
                resetPlayerQuestCooldowns(uuid);
            } catch (Exception ex2) {
                new WarningMessage("Failed to reset quest cooldowns! Ironic.");
                ex2.printStackTrace();
            }
        }
    }
    new InfoMessage("User " + uuid + " data successfully read!");
}
Also used : CustomQuest(com.magmaguy.elitemobs.quests.CustomQuest) WarningMessage(com.magmaguy.elitemobs.utils.WarningMessage) InfoMessage(com.magmaguy.elitemobs.utils.InfoMessage) CustomQuest(com.magmaguy.elitemobs.quests.CustomQuest) Quest(com.magmaguy.elitemobs.quests.Quest)

Example 2 with Quest

use of com.magmaguy.elitemobs.quests.Quest in project EliteMobs by MagmaGuy.

the class QuestInventoryMenu method generateInventoryQuestDirectory.

public static void generateInventoryQuestDirectory(List<? extends Quest> quests, Player player, NPCEntity npcEntity) {
    String menuTitle = "Quests";
    Inventory questInventory = Bukkit.createInventory(player, 27, menuTitle);
    List<Integer> questSlots = new ArrayList<>(Arrays.asList(13, 11, 15, 9, 17, 10, 16, 12, 14));
    Material acceptMaterial = Material.GREEN_STAINED_GLASS_PANE;
    Material inProgressMaterial = Material.RED_STAINED_GLASS_PANE;
    Material completeMaterial = Material.ORANGE_STAINED_GLASS_PANE;
    HashMap<Integer, Quest> questMap = new HashMap<>();
    for (int i = 0; i < quests.size(); i++) {
        questMap.put(questSlots.get(i), quests.get(i));
        QuestMenu.QuestText questText = new QuestMenu.QuestText(quests.get(i), npcEntity, player);
        if (!quests.get(i).isAccepted())
            questInventory.setItem(questSlots.get(i), ItemStackGenerator.generateItemStack(acceptMaterial, questText.getHeader().getText()));
        else if (!quests.get(i).getQuestObjectives().isOver())
            questInventory.setItem(questSlots.get(i), ItemStackGenerator.generateItemStack(inProgressMaterial, questText.getHeader().getText()));
        else
            questInventory.setItem(questSlots.get(i), ItemStackGenerator.generateItemStack(completeMaterial, questText.getHeader().getText()));
    }
    new QuestDirectory(player, questMap, questInventory, npcEntity);
    player.openInventory(questInventory);
}
Also used : Material(org.bukkit.Material) CustomQuest(com.magmaguy.elitemobs.quests.CustomQuest) Quest(com.magmaguy.elitemobs.quests.Quest) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) Inventory(org.bukkit.inventory.Inventory)

Example 3 with Quest

use of com.magmaguy.elitemobs.quests.Quest in project EliteMobs by MagmaGuy.

the class QuestMenu method generateBookQuestEntries.

public static void generateBookQuestEntries(List<? extends Quest> quests, Player player, NPCEntity npcEntity) {
    List<TextComponent[]> textComponents = new ArrayList<>();
    int counter = 0;
    for (Quest quest : quests) {
        TextComponent[] iteratedTextComponent = QuestBookMenu.generateQuestEntry(quest, player, npcEntity);
        counter += iteratedTextComponent.length;
        textComponents.add(iteratedTextComponent);
    }
    TextComponent[] allQuests = new TextComponent[counter];
    int counter2 = 0;
    for (TextComponent[] textComponentsArray : textComponents) for (TextComponent textComponent : textComponentsArray) {
        allQuests[counter2] = textComponent;
        counter2++;
    }
    BookMaker.generateBook(player, allQuests);
}
Also used : TextComponent(net.md_5.bungee.api.chat.TextComponent) ArrayList(java.util.ArrayList) CustomQuest(com.magmaguy.elitemobs.quests.CustomQuest) Quest(com.magmaguy.elitemobs.quests.Quest) DynamicQuest(com.magmaguy.elitemobs.quests.DynamicQuest)

Aggregations

CustomQuest (com.magmaguy.elitemobs.quests.CustomQuest)3 Quest (com.magmaguy.elitemobs.quests.Quest)3 DynamicQuest (com.magmaguy.elitemobs.quests.DynamicQuest)1 InfoMessage (com.magmaguy.elitemobs.utils.InfoMessage)1 WarningMessage (com.magmaguy.elitemobs.utils.WarningMessage)1 ArrayList (java.util.ArrayList)1 AtomicInteger (java.util.concurrent.atomic.AtomicInteger)1 TextComponent (net.md_5.bungee.api.chat.TextComponent)1 Material (org.bukkit.Material)1 Inventory (org.bukkit.inventory.Inventory)1