Search in sources :

Example 1 with District

use of gg.projecteden.nexus.features.events.y2020.pugmas20.models.AdventChest.District in project Nexus by ProjectEdenGG.

the class AdventChests method onAdventChestOpen.

// Advent Methods & Listeners
@EventHandler
public void onAdventChestOpen(PlayerInteractEvent event) {
    if (event.getHand() != EquipmentSlot.HAND)
        return;
    if (!event.getAction().equals(Action.RIGHT_CLICK_BLOCK))
        return;
    if (isNullOrAir(event.getClickedBlock()))
        return;
    Player player = event.getPlayer();
    if (!Pugmas20.isAtPugmas(player))
        return;
    Block block = event.getClickedBlock();
    if (!block.getType().equals(Material.CHEST))
        return;
    AdventChest adventChest = getAdventChest(block.getLocation());
    if (adventChest == null)
        return;
    event.setCancelled(true);
    if (!Quests.hasRoomFor(player, 1)) {
        PlayerUtils.send(player, Quests.fullInvError_open);
        return;
    }
    Pugmas20UserService service = new Pugmas20UserService();
    Pugmas20User user = service.get(player);
    int chestDay = adventChest.getDay();
    LocalDate now = LocalDate.now();
    int today = LocalDate.now().getDayOfMonth();
    if (isBeforePugmas(now))
        return;
    if (isPastPugmas(now))
        return;
    boolean waypoint = !user.getLocatedDays().contains(chestDay);
    user.getLocatedDays().add(chestDay);
    service.save(user);
    boolean openChest = false;
    String reason = "";
    if (user.getFoundDays().contains(chestDay))
        reason = alreadyFound;
    else {
        if (isSecondChance(now))
            if (chestDay != 25 || user.getFoundDays().size() == 24)
                openChest = true;
            else
                reason = openPrevious;
        else if (chestDay == today)
            openChest = true;
        else {
            reason = wrongDay + " (" + AdventChests.getAdventChest(today).getDistrict().getName() + " District)";
        }
    }
    if (!openChest) {
        reason = reason.replaceAll("<day>", String.valueOf(today));
        user.sendMessage(reason);
        if (waypoint)
            user.sendMessage(PREFIX + "Chest &e#" + chestDay + " &3saved as a waypoint");
        return;
    }
    user.getFoundDays().add(chestDay);
    service.save(user);
    giveAdventHead(player, chestDay);
}
Also used : Pugmas20User(gg.projecteden.nexus.models.pugmas20.Pugmas20User) Player(org.bukkit.entity.Player) Pugmas20UserService(gg.projecteden.nexus.models.pugmas20.Pugmas20UserService) Block(org.bukkit.block.Block) AdventChest(gg.projecteden.nexus.features.events.y2020.pugmas20.models.AdventChest) LocalDate(java.time.LocalDate) EventHandler(org.bukkit.event.EventHandler)

Example 2 with District

use of gg.projecteden.nexus.features.events.y2020.pugmas20.models.AdventChest.District in project Nexus by ProjectEdenGG.

the class AdventChests method onDistrictEnter.

@EventHandler
public void onDistrictEnter(PlayerEnteredRegionEvent event) {
    Player player = event.getPlayer();
    if (!Pugmas20.isAtPugmas(player))
        return;
    Location loc = player.getLocation();
    if (!event.getRegion().getId().matches(District.getRegion() + ".*"))
        return;
    District district = District.of(loc);
    if (district != District.UNKNOWN)
        ActionBarUtils.sendActionBar(player, "&a&lEntering " + district.getName() + " District");
}
Also used : Player(org.bukkit.entity.Player) District(gg.projecteden.nexus.features.events.y2020.pugmas20.models.AdventChest.District) Location(org.bukkit.Location) EventHandler(org.bukkit.event.EventHandler)

Example 3 with District

use of gg.projecteden.nexus.features.events.y2020.pugmas20.models.AdventChest.District in project Nexus by ProjectEdenGG.

the class AdventChests method onDistrictExit.

@EventHandler
public void onDistrictExit(PlayerLeavingRegionEvent event) {
    Player player = event.getPlayer();
    if (!Pugmas20.isAtPugmas(player))
        return;
    Location loc = player.getLocation();
    if (!event.getRegion().getId().matches(District.getRegion() + ".*"))
        return;
    District district = District.of(loc);
    if (district != District.UNKNOWN)
        ActionBarUtils.sendActionBar(player, "&c&lExiting " + district.getName() + " District");
}
Also used : Player(org.bukkit.entity.Player) District(gg.projecteden.nexus.features.events.y2020.pugmas20.models.AdventChest.District) Location(org.bukkit.Location) EventHandler(org.bukkit.event.EventHandler)

Example 4 with District

use of gg.projecteden.nexus.features.events.y2020.pugmas20.models.AdventChest.District in project Nexus by ProjectEdenGG.

the class Pugmas20Command method district.

@Path("district")
@Description("View which district you are currently in")
void district() {
    District district = District.of(location());
    send(PREFIX + "You are " + (district == District.UNKNOWN ? "not in a district" : "in the &e" + district.getName() + " District"));
}
Also used : District(gg.projecteden.nexus.features.events.y2020.pugmas20.models.AdventChest.District) Path(gg.projecteden.nexus.framework.commands.models.annotations.Path) Description(gg.projecteden.nexus.framework.commands.models.annotations.Description)

Example 5 with District

use of gg.projecteden.nexus.features.events.y2020.pugmas20.models.AdventChest.District in project Nexus by ProjectEdenGG.

the class Pugmas20Command method progress.

@Path("progress [player]")
@Description("View your event progress")
void progress(@Arg(value = "self", permission = Group.STAFF) Pugmas20User user) {
    LocalDate now = LocalDate.now();
    if (isBeforePugmas(now))
        now = now.withYear(2020).withMonth(12).withDayOfMonth(1);
    if (isPastPugmas(now))
        error("Next year!");
    if (isSecondChance(now))
        now = now.withYear(2020).withMonth(12).withDayOfMonth(25);
    int day = now.getDayOfMonth();
    line(2);
    send(PREFIX + "Event progress (Day &e#" + day + "&3):");
    line();
    String advent;
    AdventChest adventChest = AdventChests.getAdventChest(day);
    if (user.getFoundDays().size() == 25)
        advent = "&a☑ &3Complete";
    else if (user.getFoundDays().contains(day))
        advent = "&a☑ &3Found today's chest";
    else if (day == 25)
        if (user.getFoundDays().size() != 24)
            advent = "&7☐ &3Find all chests before #25";
        else
            advent = "&7☐ &3Find the last chest";
    else
        advent = "&7☐ &3Find today's chest (&e#" + day + " &3in the &e" + adventChest.getDistrict().getName() + " District&3)";
    send("&6&lAdvent Chests");
    send(json("&f  " + advent + " &7- Click for info").hover("Click to open the Advent menu").command("/pugmas advent"));
    line();
    send("&6&lQuests");
    for (Pugmas20QuestStageHelper quest : Pugmas20QuestStageHelper.values()) {
        QuestStage stage = quest.getter().apply(user);
        String instructions = Pugmas20Quest.valueOf(quest.name()).getInstructions(user, stage);
        JsonBuilder json = json();
        if (quest == Pugmas20QuestStageHelper.THE_MINES && stage == QuestStage.STARTED) {
            List<String> tradesLeft = getIngotTradesLeft(user);
            if (tradesLeft.isEmpty()) {
                json.next("&f  &a☑ &3" + camelCase(quest) + " &7- &aCompleted daily quest &7- Come back tomorrow for more");
            } else {
                json.next("&f  &7☐ &3" + camelCase(quest) + " &7- &eIn progress &7- " + instructions);
                tradesLeft.add(0, "&6Today's available trades:");
                json.next(" &7&o(Hover for info)").hover(String.join("\n", tradesLeft));
            }
        } else {
            if (stage == QuestStage.COMPLETE) {
                json.next("&f  &a☑ &3" + camelCase(quest) + " &7- &aComplete");
            } else if (stage == QuestStage.NOT_STARTED || stage == QuestStage.INELIGIBLE) {
                json.next("&f  &7☐ &3" + camelCase(quest) + " &7- &cNot started" + (instructions == null ? "" : " &7- " + instructions));
            } else {
                json.next("&f  &7☐ &3" + camelCase(quest) + " &7- &eIn progress &7- ");
                if (instructions == null)
                    json.next("&c???").hover(camelCase(stage));
                else
                    json.next("&7" + instructions);
            }
            if (quest == Pugmas20QuestStageHelper.TOY_TESTING && stage == QuestStage.STARTED) {
                List<String> toysLeft = getUnplayedToysList(user);
                toysLeft.add(0, "&6Toys left to test:");
                json.next(" &7&o(Hover for info)").hover(String.join("\n&f", toysLeft));
            }
            if (quest == Pugmas20QuestStageHelper.ORNAMENT_VENDOR && stage != QuestStage.NOT_STARTED) {
                List<String> lore = getOrnamentTradesLeft(user);
                if (!lore.isEmpty()) {
                    lore.add(0, "&6Available ornament trades:");
                    if (stage == QuestStage.COMPLETE)
                        json.next(" &7- More trades available");
                    lore.add("&f");
                    lore.add("&fYou get to keep any extra ornaments");
                    json.next(" &7&o(Hover for info)").hover(String.join("\n&f", lore));
                }
            }
        }
        send(json);
    }
    line();
    if (day < 25) {
        send("&3Next day begins in &e" + Timespan.of(now.plusDays(1)).format());
        line();
    }
}
Also used : JsonBuilder(gg.projecteden.nexus.utils.JsonBuilder) Pugmas20QuestStageHelper(gg.projecteden.nexus.features.events.y2020.pugmas20.quests.Quests.Pugmas20QuestStageHelper) QuestStage(gg.projecteden.nexus.features.events.models.QuestStage) LocalDate(java.time.LocalDate) AdventChest(gg.projecteden.nexus.features.events.y2020.pugmas20.models.AdventChest) Pugmas20.showWaypoint(gg.projecteden.nexus.features.events.y2020.pugmas20.Pugmas20.showWaypoint) Path(gg.projecteden.nexus.framework.commands.models.annotations.Path) Description(gg.projecteden.nexus.framework.commands.models.annotations.Description)

Aggregations

District (gg.projecteden.nexus.features.events.y2020.pugmas20.models.AdventChest.District)3 Player (org.bukkit.entity.Player)3 EventHandler (org.bukkit.event.EventHandler)3 AdventChest (gg.projecteden.nexus.features.events.y2020.pugmas20.models.AdventChest)2 Description (gg.projecteden.nexus.framework.commands.models.annotations.Description)2 Path (gg.projecteden.nexus.framework.commands.models.annotations.Path)2 LocalDate (java.time.LocalDate)2 Location (org.bukkit.Location)2 QuestStage (gg.projecteden.nexus.features.events.models.QuestStage)1 Pugmas20.showWaypoint (gg.projecteden.nexus.features.events.y2020.pugmas20.Pugmas20.showWaypoint)1 Pugmas20QuestStageHelper (gg.projecteden.nexus.features.events.y2020.pugmas20.quests.Quests.Pugmas20QuestStageHelper)1 Pugmas20User (gg.projecteden.nexus.models.pugmas20.Pugmas20User)1 Pugmas20UserService (gg.projecteden.nexus.models.pugmas20.Pugmas20UserService)1 JsonBuilder (gg.projecteden.nexus.utils.JsonBuilder)1 Block (org.bukkit.block.Block)1