diff --git a/commons/src/main/java/net/swofty/commons/skyblock/item/ItemType.java b/commons/src/main/java/net/swofty/commons/skyblock/item/ItemType.java index 5738ed490..32b4adad0 100644 --- a/commons/src/main/java/net/swofty/commons/skyblock/item/ItemType.java +++ b/commons/src/main/java/net/swofty/commons/skyblock/item/ItemType.java @@ -582,6 +582,8 @@ public enum ItemType { MINER_ARMOR_LEGGINGS(Material.IRON_LEGGINGS, Rarity.RARE), MINER_ARMOR_BOOTS(Material.IRON_BOOTS, Rarity.RARE), + CHARLIE_TROUSERS(Material.LEATHER_LEGGINGS, Rarity.COMMON), + /** * Pickaxes */ @@ -743,6 +745,8 @@ public enum ItemType { HUB_DARK_AUCTION_TRAVEL_SCROLL(Material.MAP, Rarity.EPIC), HUB_CRYPTS_TRAVEL_SCROLL(Material.MAP, Rarity.EPIC), + FORAGING_1_TRAVEL_SCROLL(Material.MAP, Rarity.RARE), + /** * Crimson Isles */ diff --git a/configuration/skyblock/items/armor/thepark.yml b/configuration/skyblock/items/armor/thepark.yml new file mode 100644 index 000000000..63a933026 --- /dev/null +++ b/configuration/skyblock/items/armor/thepark.yml @@ -0,0 +1,19 @@ +items: + - id: CHARLIE_TROUSERS + rarity: COMMON + default_statistics: + defense: 15 + health: 45 + foraging_fortune: 6 + components: + - id: CUSTOM_DISPLAY_NAME + display_name: Charlie's Trousers + - id: STANDARD_ITEM + standard_item_type: HELMET + - id: LEATHER_COLOR + r: '20' + g: '121' + b: '100' + - id: TRACKED_UNIQUE + - id: MUSEUM + museum_category: ARMOR_SETS \ No newline at end of file diff --git a/configuration/skyblock/items/travelscroll.yml b/configuration/skyblock/items/travelscroll.yml index c23e4f76d..cc7149324 100644 --- a/configuration/skyblock/items/travelscroll.yml +++ b/configuration/skyblock/items/travelscroll.yml @@ -35,6 +35,12 @@ items: components: - id: TRAVEL_SCROLL scroll_type: HUB_DARK_AUCTION + - id: FORAGING_1_TRAVEL_SCROLL + material: PAPER + rarity: RARE + components: + - id: TRAVEL_SCROLL + scroll_type: THE_PARK - id: HUB_CRYPTS_TRAVEL_SCROLL material: PAPER rarity: UNCOMMON diff --git a/type.generic/src/main/java/net/swofty/type/generic/gui/inventory/ItemStackCreator.java b/type.generic/src/main/java/net/swofty/type/generic/gui/inventory/ItemStackCreator.java index 059d5e6dd..d1940ddae 100644 --- a/type.generic/src/main/java/net/swofty/type/generic/gui/inventory/ItemStackCreator.java +++ b/type.generic/src/main/java/net/swofty/type/generic/gui/inventory/ItemStackCreator.java @@ -129,6 +129,23 @@ public static ItemStack.Builder updateLore(ItemStack.Builder builder, List lore) { + List existingLore = builder.build().get(DataComponents.LORE); + for (String s : lore) { + existingLore.add(Component.text(color(s)).decoration(TextDecoration.ITALIC, false)); + } + + return clearAttributes(builder.set(DataComponents.LORE, existingLore) + .set(DataComponents.TOOLTIP_DISPLAY, DEFAULT_TOOLTIP_DISPLAY)); + } + /** * Marks the given {@link ItemStack.Builder} as not editable. * diff --git a/type.hub/src/main/java/net/swofty/type/hub/TypeHubLoader.java b/type.hub/src/main/java/net/swofty/type/hub/TypeHubLoader.java index c62d3779e..d86958676 100644 --- a/type.hub/src/main/java/net/swofty/type/hub/TypeHubLoader.java +++ b/type.hub/src/main/java/net/swofty/type/hub/TypeHubLoader.java @@ -139,7 +139,7 @@ public LoaderValues getLoaderValues() { case SKYBLOCK_SPIDERS_DEN -> new Pos(-159.5, 73, -158.5, -45, 0); case SKYBLOCK_GOLD_MINE -> new Pos(-9.5, 64, -228.5, 0, 0); case SKYBLOCK_DUNGEON_HUB -> new Pos(-44, 88, 11.5, 0, 0); - default -> new Pos(-2.5, 72.5, -69.5, 180, 0); + default -> new Pos(-2.5, 70, -69.5, 180, 0); }, // Spawn position true // Announce death messages ); diff --git a/type.hub/src/main/java/net/swofty/type/hub/npcs/NPCLumberJack.java b/type.hub/src/main/java/net/swofty/type/hub/npcs/NPCLumberJack.java index 0312c984b..db7049cbd 100644 --- a/type.hub/src/main/java/net/swofty/type/hub/npcs/NPCLumberJack.java +++ b/type.hub/src/main/java/net/swofty/type/hub/npcs/NPCLumberJack.java @@ -1,9 +1,13 @@ package net.swofty.type.hub.npcs; +import net.kyori.adventure.text.format.NamedTextColor; import net.minestom.server.coordinate.Pos; +import net.swofty.commons.skyblock.item.ItemType; import net.swofty.type.generic.entity.npc.HypixelNPC; +import net.swofty.type.generic.entity.npc.NPCOption; import net.swofty.type.generic.entity.npc.configuration.HumanConfiguration; import net.swofty.type.generic.user.HypixelPlayer; +import net.swofty.type.skyblockgeneric.gui.inventories.GUIClaimReward; import net.swofty.type.skyblockgeneric.mission.MissionData; import net.swofty.type.skyblockgeneric.mission.missions.lumber.MissionBreakOaklog; import net.swofty.type.skyblockgeneric.mission.missions.lumber.MissionTalkToLumberjack; @@ -20,17 +24,17 @@ public NPCLumberJack() { super(new HumanConfiguration() { @Override public String[] holograms(HypixelPlayer player) { - return new String[]{"Lumber Jack", "§e§lCLICK"}; + return new String[]{"§aLumber Jack", "§e§lCLICK"}; } @Override public String signature(HypixelPlayer player) { - return "kyxxya3FqBJo6onG3bC1BjsjrF4uWTDd7Qitz14iNFwvZOn6FsW1A7dkNiZmiR1nVBfex7b4XHYAb6f3jXx8wIEvoDzSjzVLkCkzbQ9aMTTlDSAvkZ/fqtgMJbbXnppUSETmbWm7fdPjr4P5J30+Mz5vb66kNYu8QXsWqQ36YxI6sS2P77+vLdq+n1l389Npw1uMBpMLPjXaTsjAMrq1U6bDbTj7YwYqtURh0hxJm6v3q9d+oXD989fvYu04DYtEiW6H3VDjtvoEAb+m3H9tlDt74SNVXlIJ0lGa6RNpidBhKgSS38F0P5nMo1XbHJ/FcrWP+UZ6D4rT5TuW0T1J7n+5q+/LMMOR2hofFHgdqmTD85tTOmTmKKtIBPW9yreEKNZg7Ah/s3jStnVosp6A9qkpTcmdneRJwL+ZvHcpCbZpJq9Ii/NV+cBNrL49ylVCDZnRN4I7xENYfAq/Xe241cs2bEErrpu9uDH7dXSnhwQn4PdtMN6ZZrr4IJS2sjAyPjcuN/A006gs3Cu+9Cb4MViRCdIgOZDsIV/C0yDqr3+/SgKa+GRp7qIiphIMgRXC03GDSd/btYea1g8qJhhnkAL5MStubm/rdPaEf8wBc3y8Kc4pdEemo5kHQ8SPGvrk+xI8sGWKmlf/bZkyXKw9Wdhg/npeptxjNb2rUuaIDvk="; + return "cxEDP/ZmKhHdhmmHUgbqSxSgoD8w/wQk3IysGKDggfZUR3tsd1BFqpwsE37pv1LUsUkHr+mF0R6aAC0ZWQzT5kMT1546s5JAyRPFNa4P9iScE+aWlPCK1iqw2tMDqD73hYRtlSKuDRlxjbKXbHBltAsZYF1KEHh7uy+WJn+kUTuZI9Z96AUDkZlx/zxNO7Biq4pxZyilU6f2UId58fAkJYbMOYzxwCCOP+4NsH4vZazZ5YRwjpBnxrgI6epBe4KczoEqQZOo5lCEYrDMeBBjtcO9ktRnR+ddhTkPwZFHMqJaONOaeUWPar4/G977gwDwOkC0y5yw1hCABU66OiY1OsmshE9s5r8MOHYVFdwacp8M1f6xMmydmkl/VB8tCDsUMQIFlXHfF1YyNJ6UZTOhxyqI2ntDfVxcN5EMEC4c0lsycp8k5wg41aTlksvzwSQ1H+QkRByo1xG7WIZNr90mkJzwUG7Ggr3q+DZZeo8gQKMRTYIa5EBtiSTugMPcv4pw3xqv23E2kB5PvmumHGg4jh0VwE7CgFPD3f3SIZsT6bCKxrQ1pq1XQlAKsJbu341l2j01UkPG1GThjTGBTwnwV+vZUA+hG/2c/wyfbfqquJBH5PqaM7ZvzvyGEVMmh8wU663dBNkXQHoW3/Y/yg1eLPxwm9aSDffWMJVaGfXFuq4="; } @Override public String texture(HypixelPlayer player) { - return "ewogICJ0aW1lc3RhbXAiIDogMTU5MTQ2MzM5MzU5MywKICAicHJvZmlsZUlkIiA6ICJmMjljOTIyMmVjNmY0NjExOTc3YWNkMmFjYzExNDAxOCIsCiAgInByb2ZpbGVOYW1lIiA6ICJJSVJleWRlbklJIiwKICAic2lnbmF0dXJlUmVxdWlyZWQiIDogdHJ1ZSwKICAidGV4dHVyZXMiIDogewogICAgIlNLSU4iIDogewogICAgICAidXJsIiA6ICJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlL2NkMGFiZGQ5ZjZlZTdkODM3MGQyNjIxMDljYjg1M2JhY2QzZjQzZjhjZTQyNDExNjRkMDhlM2QyYTU2ODNlMzIiCiAgICB9CiAgfQp9"; + return "eyJ0aW1lc3RhbXAiOjE1NTA2Nzg1MjAzNzMsInByb2ZpbGVJZCI6ImEyZjgzNDU5NWM4OTRhMjdhZGQzMDQ5NzE2Y2E5MTBjIiwicHJvZmlsZU5hbWUiOiJiUHVuY2giLCJzaWduYXR1cmVSZXF1aXJlZCI6dHJ1ZSwidGV4dHVyZXMiOnsiU0tJTiI6eyJ1cmwiOiJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlLzY4MjUwMzBlNzc1MmZhZjdmODE2YWMyYTIwYjExNDMyYWY0YjJjZGU0OTMyZGMwZTkyMDgzMWU2MjE4MDhlZTgifX19"; } @Override @@ -53,40 +57,73 @@ public void onClick(NPCInteractEvent e) { if (data.isCurrentlyActive(MissionTalkToLumberjack.class)) { setDialogue(player, "initial-hello").thenRun(() -> { - data.endMission(MissionTalkToLumberjack.class); + NPCOption.sendOption(player, "lumber_jack", List.of( + new NPCOption.Option( + "r_2_1", + NamedTextColor.GREEN, + false, + "Sure", + (p) -> { + setDialogue(p, "option-accept").thenRun(() -> { + data.endMission(MissionTalkToLumberjack.class); + }); + } + ), + new NPCOption.Option( + "r_2_2", + NamedTextColor.RED, + false, + "Nah, I'm good", + (p) -> { + setDialogue(player, "option-nah"); + } + ) + )); }); return; } if (!data.hasCompleted(MissionBreakOaklog.class)) { - player.sendMessage("Bring me some Logs. You can chop them down in this Forest!"); + sendNPCMessage(player, "Please collect and then bring to me §a20 Oak Logs§f! You can get 'em from the §bForest §fjust off the trail."); return; } if (!data.hasCompleted(MissionTalkToLumberjackAgain.class)) { setDialogue(player, "spoke-again").thenRun(() -> { - data.endMission(MissionTalkToLumberjackAgain.class); + new GUIClaimReward(ItemType.PROMISING_AXE, () -> { + data.endMission(MissionTalkToLumberjackAgain.class); + }).open(player); }); return; } - } @Override public DialogueSet[] dialogues(HypixelPlayer player) { return List.of( - DialogueSet.builder() - .key("initial-hello").lines(new String[]{ - "Timber!", - "My woodcutting assistant has fallen quite ill! Do you think you could take over for him?", - "I just need you to chop down some Logs. If you do, I'll even give you his old axe as a reward!", - "I just need you to chop down some Logs. If you do, I'll even give you his old axe as a reward!" - }).build(), - DialogueSet.builder() - .key("spoke-again").lines(new String[]{ - "Thank you! Take this §aSweet Axe§f, it's so sweet that it drops apples from logs sometimes!", - "You've got the knack for wood. Could you get some Birch Planks from §aBirch Park§f?", - "My associate will be there waiting for you. He will reward you in §6Coins if you're up to the task!", - "However, this time I will reforge any item for the low price of Coal §8x10!" - }).build() - ).stream().toArray(DialogueSet[]::new); + DialogueSet.builder() + .key("initial-hello").lines(new String[]{ + "Timber!", + "My woodcutting assistant has fallen quite ill! Do you think you could take over for him?", + "I just need you to chop down some Logs. If you do, I'll even give you his old axe as a reward!", + "Do you think you could take over for him?" + }).build(), + DialogueSet.builder().key("option-nah").lines(new String[]{ + "Oh okay... maybe come back later!" + }).build(), + DialogueSet.builder().key("option-accept").lines(new String[]{ + "Cheers!, Let me tell ya a little about what we're going to be doing.", + "We will be §aForaging§f! As one of SkyBlock's core skills, Foraging involves cutting down lots of different types of trees!", + "As you do this, you'll unlock various crafts and useful stat boots that will help in other areas of your adventure.", + "Here, let me unlock the §aForaging skill for you, and then you can get started!", + "To get you started, please bring me §a20 Oak Logs§f! You can break the trees just off the trail to get 'em", + "§fUse your fists for now - I'll give you my previous assistant's axe if you can prove your worth!" + }).build(), + DialogueSet.builder() + .key("spoke-again").lines(new String[]{ + "Nice job! In return for those logs, I'll give ya this §aPromising Axe§f.", + "It's far less painful than using your fists to punch trees, I'll tell ya that much!", + "If you feel like Foraging is the thin for you, continue down the path and head towards §aThe Park§f.", + "My friend §eCharlie §fcan be found there. I'm sure he'll have some work for you!", + }).build() + ).toArray(DialogueSet[]::new); } } diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/event/actions/custom/ActionNewZoneDisplay.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/event/actions/custom/ActionNewZoneDisplay.java index 33ea1d628..0d923910c 100644 --- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/event/actions/custom/ActionNewZoneDisplay.java +++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/event/actions/custom/ActionNewZoneDisplay.java @@ -111,13 +111,13 @@ public void run(PlayerRegionChangeEvent event) { "Talk to the farmer.", "Travel to The Barn."); case BIRCH_PARK -> onNewZone(player, RegionType.BIRCH_PARK, - "Chop down trees.", - "Collect all Log types."); + "Talk to Charlie.", + "Chop down Birch logs."); case FOREST -> onNewZone(player, RegionType.FOREST, - "Visit the Lumberjack.", + "Visit the §aLumber Jack.", "Chop down trees.", - "Travel to the Birch Park."); + "Travel to the §aBirch Park§f."); case GRAVEYARD -> onNewZone(player, RegionType.GRAVEYARD, "Fight Zombies.", diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/GUIClaimReward.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/GUIClaimReward.java new file mode 100644 index 000000000..b80573703 --- /dev/null +++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/GUIClaimReward.java @@ -0,0 +1,71 @@ +package net.swofty.type.skyblockgeneric.gui.inventories; + +import net.minestom.server.event.inventory.InventoryCloseEvent; +import net.minestom.server.event.inventory.InventoryPreClickEvent; +import net.minestom.server.inventory.InventoryType; +import net.minestom.server.item.ItemStack; +import net.swofty.commons.skyblock.item.ItemType; +import net.swofty.type.generic.gui.inventory.HypixelInventoryGUI; +import net.swofty.type.generic.gui.inventory.ItemStackCreator; +import net.swofty.type.generic.gui.inventory.item.GUIClickableItem; +import net.swofty.type.generic.user.HypixelPlayer; +import net.swofty.type.skyblockgeneric.item.SkyBlockItem; +import net.swofty.type.skyblockgeneric.user.SkyBlockPlayer; + +import java.util.List; + +public class GUIClaimReward extends HypixelInventoryGUI { + + private final ItemType rewardItem; + private final Runnable onClaim; + + public GUIClaimReward(ItemType rewardItem, Runnable onClaim) { + super("Claim Reward", InventoryType.CHEST_6_ROW); + this.rewardItem = rewardItem; + this.onClaim = onClaim; + } + + @Override + public void onOpen(InventoryGUIOpenEvent e) { + set(new GUIClickableItem(22) { + @Override + public void run(InventoryPreClickEvent e, HypixelPlayer p) { + SkyBlockPlayer player = (SkyBlockPlayer) p; + onClaim.run(); + SkyBlockItem item = new SkyBlockItem(rewardItem); + player.addAndUpdateItem(item); + player.sendMessage("§aYou claimed §f" + item.getDisplayName() + "§a!"); + } + + @Override + public ItemStack.Builder getItem(HypixelPlayer player) { + return ItemStackCreator.appendLore( + new SkyBlockItem(rewardItem).getDisplayItem(), + List.of( + "", + "§eClick to claim!" + ) + ); + } + }); + set(GUIClickableItem.getCloseItem(49)); + updateItemStacks(getInventory(), getPlayer()); + } + + @Override + public boolean allowHotkeying() { + return false; + } + + @Override + public void onClose(InventoryCloseEvent e, CloseReason reason) { + SkyBlockPlayer player = (SkyBlockPlayer) e.getPlayer(); + onClaim.run(); + player.addAndUpdateItem(rewardItem); + } + + @Override + public void onBottomClick(InventoryPreClickEvent e) { + e.setCancelled(true); + } +} diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/mission/missions/lumber/MissionBreakOaklog.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/mission/missions/lumber/MissionBreakOaklog.java index 43b8955e1..5b1b2b403 100644 --- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/mission/missions/lumber/MissionBreakOaklog.java +++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/mission/missions/lumber/MissionBreakOaklog.java @@ -63,6 +63,6 @@ public Double getAttachedSkyBlockXP() { @Override public int getMaxProgress() { - return 10; + return 20; } } diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/mission/missions/lumber/MissionTalkToLumberjackAgain.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/mission/missions/lumber/MissionTalkToLumberjackAgain.java index 5760bc737..a2bed4c60 100644 --- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/mission/missions/lumber/MissionTalkToLumberjackAgain.java +++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/mission/missions/lumber/MissionTalkToLumberjackAgain.java @@ -3,6 +3,7 @@ import net.swofty.commons.skyblock.item.ItemType; import net.swofty.type.skyblockgeneric.mission.MissionData; import net.swofty.type.skyblockgeneric.mission.SkyBlockMission; +import net.swofty.type.skyblockgeneric.mission.missions.thepark.MissionTravelToThePark; import net.swofty.type.skyblockgeneric.region.RegionType; import net.swofty.type.skyblockgeneric.user.SkyBlockPlayer; @@ -18,7 +19,7 @@ public String getID() { @Override public String getName() { - return "Talk to the Lumber Jack"; + return "Give Lumber Jack Oak Logs"; } @Override @@ -29,7 +30,8 @@ public Map onStart(SkyBlockPlayer player, MissionData.ActiveMiss @Override public void onEnd(SkyBlockPlayer player, Map customData, MissionData.ActiveMission mission) { - player.addAndUpdateItem(ItemType.SWEET_AXE); + player.addAndUpdateItem(ItemType.PROMISING_AXE); + player.getMissionData().startMission(MissionTravelToThePark.class); } @Override diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/mission/missions/thepark/MissionClaimTheTrousers.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/mission/missions/thepark/MissionClaimTheTrousers.java new file mode 100644 index 000000000..95784266f --- /dev/null +++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/mission/missions/thepark/MissionClaimTheTrousers.java @@ -0,0 +1,38 @@ +package net.swofty.type.skyblockgeneric.mission.missions.thepark; + +import net.swofty.type.skyblockgeneric.mission.MissionData; +import net.swofty.type.skyblockgeneric.mission.SkyBlockMission; +import net.swofty.type.skyblockgeneric.region.RegionType; +import net.swofty.type.skyblockgeneric.user.SkyBlockPlayer; + +import java.util.Map; +import java.util.Set; + +public class MissionClaimTheTrousers extends SkyBlockMission { + + @Override + public String getID() { + return "claim_charlie_trousers"; + } + + @Override + public String getName() { + return "Claim the trousers from Charlie!"; + } + + @Override + public Map onStart(SkyBlockPlayer player, MissionData.ActiveMission mission) { + mission.getNewObjectiveText().forEach(player::sendMessage); + return Map.of(); + } + + @Override + public void onEnd(SkyBlockPlayer player, Map customData, MissionData.ActiveMission mission) { + player.getMissionData().startMission(MissionTalkToCharlie.class); + } + + @Override + public Set getValidRegions() { + return Set.of(RegionType.BIRCH_PARK); + } +} diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/mission/missions/thepark/MissionCollectBirchLogs.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/mission/missions/thepark/MissionCollectBirchLogs.java new file mode 100644 index 000000000..d55b68661 --- /dev/null +++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/mission/missions/thepark/MissionCollectBirchLogs.java @@ -0,0 +1,65 @@ +package net.swofty.type.skyblockgeneric.mission.missions.thepark; + +import net.minestom.server.item.Material; +import net.swofty.type.generic.event.EventNodes; +import net.swofty.type.generic.event.HypixelEvent; +import net.swofty.type.skyblockgeneric.event.custom.CustomBlockBreakEvent; +import net.swofty.type.skyblockgeneric.mission.MissionData; +import net.swofty.type.skyblockgeneric.mission.SkyBlockMission; +import net.swofty.type.skyblockgeneric.mission.SkyBlockProgressMission; +import net.swofty.type.skyblockgeneric.region.RegionType; +import net.swofty.type.skyblockgeneric.user.SkyBlockPlayer; + +import java.util.Map; +import java.util.Set; + +public class MissionCollectBirchLogs extends SkyBlockProgressMission { + + // TODO: this is not exactly as how Hypixel does it. It's only counted when it's added to inventory or sacks. + // And the progress depletes when logs are removed from either inventory. + @HypixelEvent(node = EventNodes.CUSTOM, requireDataLoaded = false) + public void onBlockBreak(CustomBlockBreakEvent event) { + MissionData data = event.getPlayer().getMissionData(); + + if (!data.isCurrentlyActive(this.getClass()) || data.hasCompleted(this.getClass())) { + return; + } + + if (event.getMaterial().equals(Material.BIRCH_LOG)) { + MissionData.ActiveMission mission = data.getMission(this.getClass()).getKey(); + mission.setMissionProgress(mission.getMissionProgress() + 1); + mission.checkIfMissionEnded(event.getPlayer()); + } + } + + @Override + public String getID() { + return "collect_birch_logs"; + } + + @Override + public String getName() { + return "Collect Birch Logs"; + } + + @Override + public Map onStart(SkyBlockPlayer player, MissionData.ActiveMission mission) { + mission.getNewObjectiveText().forEach(player::sendMessage); + return Map.of(); + } + + @Override + public void onEnd(SkyBlockPlayer player, Map customData, MissionData.ActiveMission mission) { + player.getMissionData().startMission(MissionCollectBirchLogs.class); + } + + @Override + public Set getValidRegions() { + return Set.of(RegionType.BIRCH_PARK); + } + + @Override + public int getMaxProgress() { + return 64; + } +} diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/mission/missions/thepark/MissionGiveCharlieBirchLogs.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/mission/missions/thepark/MissionGiveCharlieBirchLogs.java new file mode 100644 index 000000000..6f94a96b7 --- /dev/null +++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/mission/missions/thepark/MissionGiveCharlieBirchLogs.java @@ -0,0 +1,43 @@ +package net.swofty.type.skyblockgeneric.mission.missions.thepark; + +import net.swofty.commons.skyblock.item.ItemType; +import net.swofty.type.skyblockgeneric.gui.inventories.GUIClaimReward; +import net.swofty.type.skyblockgeneric.mission.MissionData; +import net.swofty.type.skyblockgeneric.mission.SkyBlockMission; +import net.swofty.type.skyblockgeneric.region.RegionType; +import net.swofty.type.skyblockgeneric.user.SkyBlockPlayer; + +import java.util.Map; +import java.util.Set; + +public class MissionGiveCharlieBirchLogs extends SkyBlockMission { + + @Override + public String getID() { + return "give_charlie_birch_logs"; + } + + @Override + public String getName() { + return "Give Charlie Birch Logs"; + } + + @Override + public Map onStart(SkyBlockPlayer player, MissionData.ActiveMission mission) { + mission.getNewObjectiveText().forEach(player::sendMessage); + return Map.of(); + } + + @Override + public void onEnd(SkyBlockPlayer player, Map customData, MissionData.ActiveMission mission) { + player.getMissionData().startMission(MissionClaimTheTrousers.class); + new GUIClaimReward(ItemType.CHARLIE_TROUSERS, () -> { + player.getMissionData().endMission(MissionClaimTheTrousers.class); + }).open(player); + } + + @Override + public Set getValidRegions() { + return Set.of(RegionType.BIRCH_PARK); + } +} diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/mission/missions/thepark/MissionTalkToCharlie.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/mission/missions/thepark/MissionTalkToCharlie.java new file mode 100644 index 000000000..2328ac739 --- /dev/null +++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/mission/missions/thepark/MissionTalkToCharlie.java @@ -0,0 +1,45 @@ +package net.swofty.type.skyblockgeneric.mission.missions.thepark; + +import net.minestom.server.coordinate.Pos; +import net.swofty.type.skyblockgeneric.mission.LocationAssociatedMission; +import net.swofty.type.skyblockgeneric.mission.MissionData; +import net.swofty.type.skyblockgeneric.mission.SkyBlockMission; +import net.swofty.type.skyblockgeneric.region.RegionType; +import net.swofty.type.skyblockgeneric.user.SkyBlockPlayer; + +import java.util.Map; +import java.util.Set; + +public class MissionTalkToCharlie extends SkyBlockMission implements LocationAssociatedMission { + + @Override + public String getID() { + return "talk_to_charlie"; + } + + @Override + public String getName() { + return "Talk to Charlie"; + } + + @Override + public Map onStart(SkyBlockPlayer player, MissionData.ActiveMission mission) { + mission.getNewObjectiveText().forEach(player::sendMessage); + return Map.of(); + } + + @Override + public void onEnd(SkyBlockPlayer player, Map customData, MissionData.ActiveMission mission) { + player.getMissionData().startMission(MissionCollectBirchLogs.class); + } + + @Override + public Set getValidRegions() { + return Set.of(RegionType.BIRCH_PARK); + } + + @Override + public Pos getLocation() { + return new Pos(-277.500, 80.000, -17.500); + } +} diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/mission/missions/thepark/MissionTalkToCharlieAgain.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/mission/missions/thepark/MissionTalkToCharlieAgain.java new file mode 100644 index 000000000..571bf1c9f --- /dev/null +++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/mission/missions/thepark/MissionTalkToCharlieAgain.java @@ -0,0 +1,42 @@ +package net.swofty.type.skyblockgeneric.mission.missions.thepark; + +import net.swofty.commons.skyblock.item.ItemType; +import net.swofty.type.skyblockgeneric.gui.inventories.GUIClaimReward; +import net.swofty.type.skyblockgeneric.mission.MissionData; +import net.swofty.type.skyblockgeneric.mission.SkyBlockMission; +import net.swofty.type.skyblockgeneric.region.RegionType; +import net.swofty.type.skyblockgeneric.user.SkyBlockPlayer; + +import java.util.Map; +import java.util.Set; + +public class MissionTalkToCharlieAgain extends SkyBlockMission { + + @Override + public String getID() { + return "talk_to_charlie_2"; + } + + @Override + public String getName() { + return "Talk to Charlie"; + } + + @Override + public Map onStart(SkyBlockPlayer player, MissionData.ActiveMission mission) { + mission.getNewObjectiveText().forEach(player::sendMessage); + return Map.of(); + } + + @Override + public void onEnd(SkyBlockPlayer player, Map customData, MissionData.ActiveMission mission) { + new GUIClaimReward(ItemType.FORAGING_1_TRAVEL_SCROLL, () -> { + player.getMissionData().startMission(MissionTravelToTheSpruceWoods.class); + }); + } + + @Override + public Set getValidRegions() { + return Set.of(RegionType.BIRCH_PARK); + } +} diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/mission/missions/thepark/MissionTravelToThePark.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/mission/missions/thepark/MissionTravelToThePark.java new file mode 100644 index 000000000..65a878a47 --- /dev/null +++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/mission/missions/thepark/MissionTravelToThePark.java @@ -0,0 +1,37 @@ +package net.swofty.type.skyblockgeneric.mission.missions.thepark; + +import net.swofty.type.skyblockgeneric.mission.MissionData; +import net.swofty.type.skyblockgeneric.mission.SkyBlockMission; +import net.swofty.type.skyblockgeneric.region.RegionType; +import net.swofty.type.skyblockgeneric.user.SkyBlockPlayer; + +import java.util.Map; +import java.util.Set; + +public class MissionTravelToThePark extends SkyBlockMission { + + @Override + public String getID() { + return "travel_to_the_park"; + } + + @Override + public String getName() { + return "Travel to The Park behind the Forest."; + } + + @Override + public Map onStart(SkyBlockPlayer player, MissionData.ActiveMission mission) { + return Map.of(); + } + + @Override + public void onEnd(SkyBlockPlayer player, Map customData, MissionData.ActiveMission mission) { + player.getMissionData().startMission(MissionTalkToCharlie.class); + } + + @Override + public Set getValidRegions() { + return Set.of(RegionType.BIRCH_PARK); + } +} diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/mission/missions/thepark/MissionTravelToTheSpruceWoods.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/mission/missions/thepark/MissionTravelToTheSpruceWoods.java new file mode 100644 index 000000000..8681d60e8 --- /dev/null +++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/mission/missions/thepark/MissionTravelToTheSpruceWoods.java @@ -0,0 +1,38 @@ +package net.swofty.type.skyblockgeneric.mission.missions.thepark; + +import net.swofty.type.skyblockgeneric.mission.MissionData; +import net.swofty.type.skyblockgeneric.mission.SkyBlockMission; +import net.swofty.type.skyblockgeneric.region.RegionType; +import net.swofty.type.skyblockgeneric.user.SkyBlockPlayer; + +import java.util.Map; +import java.util.Set; + +public class MissionTravelToTheSpruceWoods extends SkyBlockMission { + + @Override + public String getID() { + return "travel_to_the_spruce_woods"; + } + + @Override + public String getName() { + return "Travel to the Spruce Woods"; + } + + @Override + public Map onStart(SkyBlockPlayer player, MissionData.ActiveMission mission) { + mission.getNewObjectiveText().forEach(player::sendMessage); + return Map.of(); + } + + @Override + public void onEnd(SkyBlockPlayer player, Map customData, MissionData.ActiveMission mission) { + + } + + @Override + public Set getValidRegions() { + return Set.of(RegionType.SPRUCE_WOODS); + } +} diff --git a/type.thepark/src/main/java/net/swofty/type/thepark/events/ActionStartHubMission.java b/type.thepark/src/main/java/net/swofty/type/thepark/events/ActionStartHubMission.java new file mode 100644 index 000000000..2844d7f80 --- /dev/null +++ b/type.thepark/src/main/java/net/swofty/type/thepark/events/ActionStartHubMission.java @@ -0,0 +1,23 @@ +package net.swofty.type.thepark.events; + +import net.swofty.type.generic.event.EventNodes; +import net.swofty.type.generic.event.HypixelEvent; +import net.swofty.type.generic.event.HypixelEventClass; +import net.swofty.type.skyblockgeneric.event.custom.PlayerRegionChangeEvent; +import net.swofty.type.skyblockgeneric.mission.MissionData; +import net.swofty.type.skyblockgeneric.mission.missions.thepark.MissionTravelToThePark; +import net.swofty.type.skyblockgeneric.region.RegionType; + +public class ActionStartHubMission implements HypixelEventClass { + + @HypixelEvent(node = EventNodes.CUSTOM, requireDataLoaded = false) + public void run(PlayerRegionChangeEvent event) { + if (event.getTo() == null) return; + if (event.getTo() != RegionType.BIRCH_PARK) return; + + MissionData data = event.getPlayer().getMissionData(); + if (data.isCurrentlyActive(MissionTravelToThePark.class)) { + data.endMission(MissionTravelToThePark.class); + } + } +} diff --git a/type.thepark/src/main/java/net/swofty/type/thepark/npcs/NPCCharlie.java b/type.thepark/src/main/java/net/swofty/type/thepark/npcs/NPCCharlie.java new file mode 100644 index 000000000..939c9deb7 --- /dev/null +++ b/type.thepark/src/main/java/net/swofty/type/thepark/npcs/NPCCharlie.java @@ -0,0 +1,106 @@ +package net.swofty.type.thepark.npcs; + +import net.minestom.server.coordinate.Pos; +import net.swofty.type.generic.entity.npc.HypixelNPC; +import net.swofty.type.generic.entity.npc.configuration.HumanConfiguration; +import net.swofty.type.generic.event.custom.NPCInteractEvent; +import net.swofty.type.generic.user.HypixelPlayer; +import net.swofty.type.skyblockgeneric.mission.MissionData; +import net.swofty.type.skyblockgeneric.mission.missions.lumber.MissionTalkToLumberjack; +import net.swofty.type.skyblockgeneric.mission.missions.thepark.MissionCollectBirchLogs; +import net.swofty.type.skyblockgeneric.mission.missions.thepark.MissionTalkToCharlie; +import net.swofty.type.skyblockgeneric.mission.missions.thepark.MissionTalkToCharlieAgain; +import net.swofty.type.skyblockgeneric.user.SkyBlockPlayer; + +import java.util.List; + +public class NPCCharlie extends HypixelNPC { + + public NPCCharlie() { + super(new HumanConfiguration() { + @Override + public String[] holograms(HypixelPlayer player) { + return new String[]{"Charlie", "§e§lCLICK"}; + } + + @Override + public String signature(HypixelPlayer player) { + return "K19XwXZoYOPTzVSDFP/MvfjqWQxjTEvpYba9cawDA1A3cZ5AbMDRhmuEnYTsje2Fht/sQa9KyO/woYgfOQ4lfIuTDYJYPtR4Nzr4KRH+FCgSY8bEWe/f4IhswiV1N8NV6+bd5tD/eqEl5TGgz84NtKNb/lRQN7UG6orAZ8KlndnzbgaM6jcA1rS0PUhavigLF42z0qu9E03jSVepIkqGAnUoo6tMKgYctV6d/WQv9U3yM3yXQX6wvCeP/M3vFbTJLkiGgXrlIfjSVBntDfbNXSGkb/0H/vR+9HuvQnmlJ2f68fLkWVZJ3D3Qaok8+j7xX5DcSVcTCut2Rm1Qa4Uvs7JlEKeEDCRs+ymy+qD7U/7x6yPbF+KFu/8NcXew/jLXPOpLjMywoNsvo4BT8t4qIhQDioJBC0YjY+NYLrk34loNBQ6q+EUW3QuX0HyixlI+A5Ug/vcrSlykhTql1+OyXiLTvIpoT3ezS/b0aT8mktilwBxmA46KVNIBaTIRiF5iZe4WMf+0kyndXM+WZ+AIADy/QCQZZVV0gr4gA/6tYRXWESeRJM5loqZgRcPRtQAGV8wUUE9qBfGPgmRxt9E+jxlJJ5Pfr17fzH2pmMZsVa7wfyJhW7C5AHmCze6qgCgs3l8XNDY4DJ3v1tRvurhpAWqC8Ejjd12eVZlytssS71E="; + } + + @Override + public String texture(HypixelPlayer player) { + return "eyJ0aW1lc3RhbXAiOjE1NjAxOTQxOTU3NzMsInByb2ZpbGVJZCI6ImEyZjgzNDU5NWM4OTRhMjdhZGQzMDQ5NzE2Y2E5MTBjIiwicHJvZmlsZU5hbWUiOiJiUHVuY2giLCJzaWduYXR1cmVSZXF1aXJlZCI6dHJ1ZSwidGV4dHVyZXMiOnsiU0tJTiI6eyJ1cmwiOiJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlLzU3NjZlYjA5N2JiNDg2YjNlYTcwN2FjMTMxM2ExYmZmZjg4NDZhMmY1NTQ2MDA4MmNlZjIxMmYxODkxMzBmMWMifX19"; + } + + @Override + public Pos position(HypixelPlayer player) { + return new Pos(-277.500, 80.000, -17.500, -90, 0); + } + + @Override + public boolean looking() { + return true; + } + }); + } + + @Override + public void onClick(NPCInteractEvent event) { + SkyBlockPlayer player = (SkyBlockPlayer) event.player(); + if (isInDialogue(player)) return; + + MissionData data = player.getMissionData(); + if (data.isCurrentlyActive(MissionTalkToCharlie.class)) { + setDialogue(player, "initial-hello").thenRun(() -> { + data.endMission(MissionTalkToCharlie.class); + }); + return; + } + + if (data.isCurrentlyActive(MissionCollectBirchLogs.class)) { + sendNPCMessage(player, "I don't see §a64 Birch Logs§f. Where are they?"); + return; + } + + if(data.isCurrentlyActive(MissionTalkToCharlieAgain.class)) { + setDialogue(player, "talk-again").thenRun(() -> { + data.endMission(MissionTalkToCharlieAgain.class); + }); + return; + } + + setDialogue(player, "idle-" + (1 + (int)(Math.random() * 3))); + } + + @Override + protected DialogueSet[] dialogues(HypixelPlayer player) { + return List.of( + DialogueSet.builder() + .key("initial-hello").lines(new String[]{ + "Howdy! Yer a friend of §aLumber Jack§f, are ya?", + "Well, works for me!", + "I need §a64 Birch Logs§f. Could you grab 'em for me?", + "Do that, and then wee can talk!" + }).build(), + DialogueSet.builder() + .key("talk-again").lines(new String[]{ + "§aThe Park is home to many different kinds of wood. Each kind has its own §ecollection§f.", + "Me and my mates each gather a specific type of wood, and then split it all evenly so we can all increase our different collections!", + "I wanted §eKelly §fto get some §aSpruce Logs §ffor us today, but I've not seen her in a while... Can you maybe look for her in the §aSpruce Woods§f?" + }).build(), + DialogueSet.builder() + .key("idle-1").lines(new String[]{ + "So much wood to chop, such little time...", + }).build(), + DialogueSet.builder() + .key("idle-2").lines(new String[]{ + "So you heard about that weird §cCult §fover in the §aDark Thicket§f? I'm considerin' joining them.", + }).build(), + DialogueSet.builder() + .key("idle-3").lines(new String[]{ + "What? §aLumber Jack §fsaid I have a §5Treecapitator§f? In my dreams...", + }).build() + ).toArray(DialogueSet[]::new); + } +} diff --git a/type.thepark/src/main/java/net/swofty/type/thepark/npcs/NPCGustave.java b/type.thepark/src/main/java/net/swofty/type/thepark/npcs/NPCGustave.java new file mode 100644 index 000000000..34a9ea3f7 --- /dev/null +++ b/type.thepark/src/main/java/net/swofty/type/thepark/npcs/NPCGustave.java @@ -0,0 +1,44 @@ +package net.swofty.type.thepark.npcs; + +import net.minestom.server.coordinate.Pos; +import net.swofty.type.generic.entity.npc.HypixelNPC; +import net.swofty.type.generic.entity.npc.configuration.HumanConfiguration; +import net.swofty.type.generic.event.custom.NPCInteractEvent; +import net.swofty.type.generic.user.HypixelPlayer; + +public class NPCGustave extends HypixelNPC { + + public NPCGustave() { + super(new HumanConfiguration() { + @Override + public String[] holograms(HypixelPlayer player) { + return new String[]{"§aGustave", "§e§lCLICK"}; + } + + @Override + public String signature(HypixelPlayer player) { + return "hYkAj4Ea+VVW3eHacfAWRGEKXTVRPntdfC97KP6awi61bNDTPMocvoODrstFPSZMBxueybB1GhX5Z3RVBpo08EQk2P7QXHyUuFUreq/19L0UFsIUYPdnS4sJ5SU+Vva8dUMT8zEt65W63ToejHlCocioe7Q8c+1FttkvEG/M+3CzrbDBjvGKvTRSTQPoQxMNbtRCxQ+Jd4ek6TJsjNns7eUp0r/vHQZXcARUIMeo0doaKsWhGYCw9MUvNYj9olIlDEUxuWi1o+zBk1s23LsOZ/ZOeJYsJD+4cHQpTfkdDzIw1l9ZynkFJmxetcBe+y6CAjMuRJk/rNrIQ3NbRayFZF8RzfjqxpGUAJipYigP8zj0+mgYRQ1pwC8s4egVoS9a82RR9EOsXi5nWeMGfio9qn6DRPJpsmkjdn2WLsTsTEVqJD4VfZ+mduPZF0ZO69SnoO9YkkvAKGp9RkIRIlR3mZpDc2gV+01v8sgOuDh7Nii/0V7yeGweSHYUy9Yd7wl9pEN4UIxoaQdOTQ4RrjeYX46gc11cSqqtipb9c/2PsiUT7fA12AhalC4n6+0enW7i/KO8J+UqDVjGJ4Ao+viAQHqee/7RtR5dIbVFjIPZrZbMDE8Uqluf9LWEPAC46PH9Z4EvGFd1827n99XLGltB2IE3lKEEQWbqTcMDZ/oH90M="; + } + + @Override + public String texture(HypixelPlayer player) { + return "eyJ0aW1lc3RhbXAiOjE1NjQxODQ0NjgzODUsInByb2ZpbGVJZCI6IjNmYzdmZGY5Mzk2MzRjNDE5MTE5OWJhM2Y3Y2MzZmVkIiwicHJvZmlsZU5hbWUiOiJZZWxlaGEiLCJzaWduYXR1cmVSZXF1aXJlZCI6dHJ1ZSwidGV4dHVyZXMiOnsiU0tJTiI6eyJ1cmwiOiJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlL2NmYWZlNmY1MDE0YzUyYzBlOTczNTkyOTg0OTA2YWUxZDE5ZTgxMDVlMmRjZmQ3ZWFjYmUwMWVmODdjZTMyMGMifX19"; + } + + @Override + public Pos position(HypixelPlayer player) { + return new Pos(-363.500, 89.000, 44.500, -135, 0); + } + + @Override + public boolean looking() { + return true; + } + }); + } + + @Override + public void onClick(NPCInteractEvent event) { + + } +} diff --git a/type.thepark/src/main/java/net/swofty/type/thepark/npcs/NPCJuliette.java b/type.thepark/src/main/java/net/swofty/type/thepark/npcs/NPCJuliette.java new file mode 100644 index 000000000..e81da540a --- /dev/null +++ b/type.thepark/src/main/java/net/swofty/type/thepark/npcs/NPCJuliette.java @@ -0,0 +1,44 @@ +package net.swofty.type.thepark.npcs; + +import net.minestom.server.coordinate.Pos; +import net.swofty.type.generic.entity.npc.HypixelNPC; +import net.swofty.type.generic.entity.npc.configuration.HumanConfiguration; +import net.swofty.type.generic.event.custom.NPCInteractEvent; +import net.swofty.type.generic.user.HypixelPlayer; + +public class NPCJuliette extends HypixelNPC { + + public NPCJuliette() { + super(new HumanConfiguration() { + @Override + public String[] holograms(HypixelPlayer player) { + return new String[]{"Juliette"}; + } + + @Override + public String signature(HypixelPlayer player) { + return "KfBsGKY8f6EkYsyjmC8Gcneb4/kmLK9Ui2imeRb43xlF1U+gatchbLsTfywMQlcD9hBxg/zU83oyfqtz1sQl9e/x2k9lU3ANl3zLfJ4sZrwmeKGnsBRdHRF2mC6skTIVYj1QF1AfAhHNdzuYKnx3A+oh559rXcPk8PAMYjo1FqOUA3nbYRzzG87w+oBVh5jP6h/p1o5b7viEab0ASfokEPFSCSCu/aq9vw7bxYYXzmCyHztDFaAHeVlwD8uK3zlrUYDiUsE1Ajw8w99Is1W8iWTWRV2iQ6YvJzsQH4LQ+eDjBoYHp5Nf8sgfaAlEf3Q3IvRCxfyt6PmFqCzBgHHvDWmw6xpF8rO00hHEB/Yda2i6zLwsyvsuXdYlQQp16Pq8EUSQAB41pK2fvr0vcdiieVkaGViQEkAYf3Ku2Wp6/iViq3HSVEPi7krPiZroaoVx05DIaZkuneRdXAtOGqJf6MGK2oLlIOgt/Pa/8BWGUTziNWvsdNkjfMZnyNDz/rN2Ky7LSeiXEr1YXBriRF0rYhArSS+VMVn2fH1rKilrwhfDW0GB+E483th1skxvqxHg4PdN1uW6FY90k9q49sPUYbOxqXIC8zO7XGyF9TMSpwzo67ZS2ux0sFXGJfe5Z4k/3YOhWaQTQ52ZfzJhJKN0G74Fj717JPeZdzATEt+sFrs="; + } + + @Override + public String texture(HypixelPlayer player) { + return "eyJ0aW1lc3RhbXAiOjE1NzI4NzgzNDY2MDIsInByb2ZpbGVJZCI6IjQxZDNhYmMyZDc0OTQwMGM5MDkwZDU0MzRkMDM4MzFiIiwicHJvZmlsZU5hbWUiOiJNZWdha2xvb24iLCJzaWduYXR1cmVSZXF1aXJlZCI6dHJ1ZSwidGV4dHVyZXMiOnsiU0tJTiI6eyJ1cmwiOiJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlLzYyMWFhYmVkM2JhOGI4OGI4ZGUzNDNiMjY3YmM0OWIyZGYwNDY4YzBiYTRmMjBmZWI5ODUyYjc0YzIyZjMwMjAifX19"; + } + + @Override + public Pos position(HypixelPlayer player) { + return new Pos(-415.500, 130.000, -121.500, 14, 0); + } + + @Override + public boolean looking() { + return true; + } + }); + } + + @Override + public void onClick(NPCInteractEvent event) { + + } +} diff --git a/type.thepark/src/main/java/net/swofty/type/thepark/npcs/NPCKelly.java b/type.thepark/src/main/java/net/swofty/type/thepark/npcs/NPCKelly.java new file mode 100644 index 000000000..24731b4b4 --- /dev/null +++ b/type.thepark/src/main/java/net/swofty/type/thepark/npcs/NPCKelly.java @@ -0,0 +1,44 @@ +package net.swofty.type.thepark.npcs; + +import net.minestom.server.coordinate.Pos; +import net.swofty.type.generic.entity.npc.HypixelNPC; +import net.swofty.type.generic.entity.npc.configuration.HumanConfiguration; +import net.swofty.type.generic.event.custom.NPCInteractEvent; +import net.swofty.type.generic.user.HypixelPlayer; + +public class NPCKelly extends HypixelNPC { + + public NPCKelly() { + super(new HumanConfiguration() { + @Override + public String[] holograms(HypixelPlayer player) { + return new String[]{"Kelly", "§e§lCLICK"}; + } + + @Override + public String signature(HypixelPlayer player) { + return "Pi7jmNymIAKdg4Z80WSEuhjifAL8q7GSXY131I/bb6Aec5NSUknOcSbCva6iXGn1Ke5AMDLBlyUsP45rgxwObRqjN04JxNvbp37dwXc9PeerOtbN+8pN4NXkMg0xFx1qcttxrSwdSmVgQ0W0wDqDvX5VxAhVNiC8zzv6Dj/8YjdkF6DKr7A+kH69CpgNrlPXChbyMXuHnx0AVFPfcMazb0K8nzRvuQy5RT5mBvgPee3nKvc8OvVHL6RQjXpAKnDv4Oo+yDE1ipAvl98eUmIczM2yeSqXX+JHGOJKEUAlbjED7SZSDbx2njzwTDYeiBRPnWki/wWGvsnYcLhiMrTQPb6ZMk7VNAqAmug3VfTsY+1tutJ6+C6oYnIvfoG1WHNbUHOLbfd2ijqwE/bihIE7PGL3W1PDuAqW8lyvACXHNCKy0Wp2iopixiDK2mXmMxaXIq7m4u6r/5GfP0AAd75BAx+mSk8pPb0rHlKqJuDVoxM4fBL2SBDU+mx0zDVLJE/pJsN97Bphs0XRs8W/Jf67notKp/iviiiJQA4owNe0G/ckpiFEFW4Qiob7AyOrY3ECjTgivZpM6hw0NOhYZ1Mh780Szgd7WrwxVAUrnPjKkkZZns/IiuRrzYLu49g22NhADNedMpaEW35V13tvvsDdEGkMehbA4UxszBIS9mMj7fA="; + } + + @Override + public String texture(HypixelPlayer player) { + return "ewogICJ0aW1lc3RhbXAiIDogMTcyOTAyNDE4ODkyMywKICAicHJvZmlsZUlkIiA6ICJjNmViMzdjNmE4YjM0MDI3OGJjN2FmZGE3ZjMxOWJmMyIsCiAgInByb2ZpbGVOYW1lIiA6ICJFbFJleUNhbGFiYXphbCIsCiAgInNpZ25hdHVyZVJlcXVpcmVkIiA6IHRydWUsCiAgInRleHR1cmVzIiA6IHsKICAgICJTS0lOIiA6IHsKICAgICAgInVybCIgOiAiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS82ZWIzZjllMmFjMGRkNWY5NzRlMGFlNzEwZWU3NGYxZDhlOTZlODY2YTUzMGIwZjRiNDE3N2I5ZTYzNWYzNGQ3IiwKICAgICAgIm1ldGFkYXRhIiA6IHsKICAgICAgICAibW9kZWwiIDogInNsaW0iCiAgICAgIH0KICAgIH0KICB9Cn0="; + } + + @Override + public Pos position(HypixelPlayer player) { + return new Pos(-350.500, 94.000, 33.500, -180, 0); + } + + @Override + public boolean looking() { + return true; + } + }); + } + + @Override + public void onClick(NPCInteractEvent event) { + + } +} diff --git a/type.thepark/src/main/java/net/swofty/type/thepark/npcs/NPCMasterTacticianFunk.java b/type.thepark/src/main/java/net/swofty/type/thepark/npcs/NPCMasterTacticianFunk.java new file mode 100644 index 000000000..0e9c1ff08 --- /dev/null +++ b/type.thepark/src/main/java/net/swofty/type/thepark/npcs/NPCMasterTacticianFunk.java @@ -0,0 +1,44 @@ +package net.swofty.type.thepark.npcs; + +import net.minestom.server.coordinate.Pos; +import net.swofty.type.generic.entity.npc.HypixelNPC; +import net.swofty.type.generic.entity.npc.configuration.HumanConfiguration; +import net.swofty.type.generic.event.custom.NPCInteractEvent; +import net.swofty.type.generic.user.HypixelPlayer; + +public class NPCMasterTacticianFunk extends HypixelNPC { + + public NPCMasterTacticianFunk() { + super(new HumanConfiguration() { + @Override + public String[] holograms(HypixelPlayer player) { + return new String[]{"Master Tactician Funk", "§e§lCLICK"}; + } + + @Override + public String signature(HypixelPlayer player) { + return "Bq0N2vw7ls4BI3wpkk9G8aAqrML70WWBC9baoeOqwOnfEQw29jzuHG5+YnnPR+zN9YT4FslLL6FqbMp5WHzt3SOKpJ9wjKhOFy0rucgBQaYH5P5j6ffeglb8on3iqcP0JwQ28F0FH3JzowA0LR2rBL0I6hvdq6Bvar2H8r0zUCxss7WDe9iYV+TakzIqfPstNJrehWZSMDFHM8BCuRbP+cxMW8PoGOsMDvyvWYk9aIySGT+81cKLnkeoyP2YBVDygctHJMoiSnUTE/Ecd3XU5cxGFhgFqiTxycGTK6yull0k/JR83+yStlIxfWpKN1Po6m5d2TtE9fMV1Y5GEmXUm2IHWz2uscfTPbYEoZSE0aDDEMw00L73xIdpHRHP04Fwv/JUhEyYsbUp9GA5nb/OC/w5ePWLMGC5k3FkdLFzLpmG5I2PpQRXbeGFsG+FyQOxMN0B9PoJI7BLRqwBKeHf6FxAdspl+6hNdB1iICYsCo7xJkFLS0IVKWVRiHZ3pTYD+g7fSfwplJMgU19ZlENdicD/liih3zEBVspkINA6FHXQZNFMVTU+5hvd20f/GrSAxsT1ypB/i2noY9FYL2jOIdvU2WG6nSHtrVkGc+KKFybqvjd8rjGiWeHzgzaxn4Uy8rAF83XMufNaTYKfJmYmvKecAFcGfRm9ZdoQShXVsv0="; + } + + @Override + public String texture(HypixelPlayer player) { + return "eyJ0aW1lc3RhbXAiOjE1NzI0MDk2NzY0OTIsInByb2ZpbGVJZCI6IjQxZDNhYmMyZDc0OTQwMGM5MDkwZDU0MzRkMDM4MzFiIiwicHJvZmlsZU5hbWUiOiJNZWdha2xvb24iLCJzaWduYXR1cmVSZXF1aXJlZCI6dHJ1ZSwidGV4dHVyZXMiOnsiU0tJTiI6eyJ1cmwiOiJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlLzkyYjdhY2JmYTkzMDhhMjJlNzUwNmEzNmJjY2FmZDAxNjBhZmEwZDUwMDgxOGVmZWU5ZmE5ODM1MjE0YzE0ZmEifX19"; + } + + @Override + public Pos position(HypixelPlayer player) { + return new Pos(-452.5, 110, 29.5, -105, 0); + } + + @Override + public boolean looking() { + return true; + } + }); + } + + @Override + public void onClick(NPCInteractEvent event) { + + } +} diff --git a/type.thepark/src/main/java/net/swofty/type/thepark/npcs/NPCMelancholicViking.java b/type.thepark/src/main/java/net/swofty/type/thepark/npcs/NPCMelancholicViking.java new file mode 100644 index 000000000..9974cc900 --- /dev/null +++ b/type.thepark/src/main/java/net/swofty/type/thepark/npcs/NPCMelancholicViking.java @@ -0,0 +1,44 @@ +package net.swofty.type.thepark.npcs; + +import net.minestom.server.coordinate.Pos; +import net.swofty.type.generic.entity.npc.HypixelNPC; +import net.swofty.type.generic.entity.npc.configuration.HumanConfiguration; +import net.swofty.type.generic.event.custom.NPCInteractEvent; +import net.swofty.type.generic.user.HypixelPlayer; + +public class NPCMelancholicViking extends HypixelNPC { + + public NPCMelancholicViking() { + super(new HumanConfiguration() { + @Override + public String[] holograms(HypixelPlayer player) { + return new String[]{"§aMelancholic Viking", "§e§lCLICK"}; + } + + @Override + public String signature(HypixelPlayer player) { + return "LNUoJj3H66O7noZiY2VAq/XAuD03DCaLMtu7K8ieIvHszL3iWoD8GSb3wmx0p5JHyC1IaTuuJncHi1ncHACzG64s5QlMPdtQxY7Cwy1DgE8l7v0eVRWPrLOgp1hEeakvU4pxsZEym62T56Z0TVHv+L4DD5B96JEaxvQBK9vFqSea5+N9Pe/4DoZb3jxjHpVicKkPi496C+IG9Av/0F33Oz74PdlyHnNiOnRwCrQQIrpC//2ZNlHq3RNLOqQS9h+VFAGmoUISMb5TO2xXHLnI4Db1IcD1GvsuZl7hOuKY6OA3QwlYyXxf/T34MVWeCEPGjS/MUsgS28XcWVpSPc4hCz9JUgAEqhR3nYxSSUlG63bYJCZLObP0xWSVjNEgPKp02qIRiJdC/0s1vC4beaohfhlePPTbEC9M6117p5fXL/xCvhIcv6FpXo4Vp53mKjXSooI/R+zro66jAMddhcNnj7C26q2jdjm69QjdN5/dpfRXSJsX0MOxlpasTYN/nr9uIx01JYnN8TQyrjqn9TWZr/UckfOp8MIHmUaOb71I33nG6U9+JHNTGDKcgN1CAv2Yzbai5WjdJRSSMWaGSZt8vJT+Q4sUdseS4sVNATaw+MqkcDX1YXwYs13FpoO0enbJHe/yZ04oSgmRcTUGjPy2QJ7cvTyzOTElYhXNAALBnns="; + } + + @Override + public String texture(HypixelPlayer player) { + return "eyJ0aW1lc3RhbXAiOjE1NzIzMTkwMDQ5OTQsInByb2ZpbGVJZCI6IjQxZDNhYmMyZDc0OTQwMGM5MDkwZDU0MzRkMDM4MzFiIiwicHJvZmlsZU5hbWUiOiJNZWdha2xvb24iLCJzaWduYXR1cmVSZXF1aXJlZCI6dHJ1ZSwidGV4dHVyZXMiOnsiU0tJTiI6eyJ1cmwiOiJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlL2NkNTEwNDNkNmExOGZjMDE0ZjI2NGIxZTdkN2ZjMTgzM2FmYThjZjZjYTI5ZjJiOGY2OTFmZGY1NGRhZmVmZGEifX19"; + } + + @Override + public Pos position(HypixelPlayer player) { + return new Pos(-335.500, 92.500, 73.500, -180, 0); + } + + @Override + public boolean looking() { + return true; + } + }); + } + + @Override + public void onClick(NPCInteractEvent event) { + + } +} diff --git a/type.thepark/src/main/java/net/swofty/type/thepark/npcs/NPCMelody.java b/type.thepark/src/main/java/net/swofty/type/thepark/npcs/NPCMelody.java new file mode 100644 index 000000000..2b2f3dcb4 --- /dev/null +++ b/type.thepark/src/main/java/net/swofty/type/thepark/npcs/NPCMelody.java @@ -0,0 +1,44 @@ +package net.swofty.type.thepark.npcs; + +import net.minestom.server.coordinate.Pos; +import net.swofty.type.generic.entity.npc.HypixelNPC; +import net.swofty.type.generic.entity.npc.configuration.HumanConfiguration; +import net.swofty.type.generic.event.custom.NPCInteractEvent; +import net.swofty.type.generic.user.HypixelPlayer; + +public class NPCMelody extends HypixelNPC { + + public NPCMelody() { + super(new HumanConfiguration() { + @Override + public String[] holograms(HypixelPlayer player) { + return new String[]{"Melody §d♫", "§e§lCLICK"}; + } + + @Override + public String signature(HypixelPlayer player) { + return "l3+nGUvRiH//fkK8SwTwQFjXyqt+kNd5n4MCXSmtxoQTeUGZpa4dR5wwxpyYue5TacFcSVEXZaAq4Y2Uu8KMb9JYlVrL4W8O7Sl//jik9hd3DyOHhHd9oLyt1x1GvU1hiUmcXX74ma6YERznSPXepDMiEX0lsx3+JTHbpQoIqpuuqcl0wgRT9hrKPYGE32s3DCV7MIpepD2z/hmnXCCSRBjjPfL8qflCB3eAFUBw767vfbt1J8f290Hvb5CgL4AgZehplAXmqQM4j8Rd/8DAv+nCny5OrC2f2Xj3dxsYXcJzxUcBvPmPBrYrT8/uF7jBia4rW7bU6kGzy5IzR6pqOJmQnU3Frrwi/3dJnCJ3iFVllPOiWqCYC4AVOy0+0cAVlZMSWtLIg+ZCXNc3Ah5/eoBxIBOtH2pA1iYO2P3FqW4g2jn0JH+4ck1GvuFywj6XgHvkmnGo5pZsudnGdHt0a4RECWA+lrbPfoFmQND0Q4B2pqLcCXufF3k0Q8471XNJVzMPgnWpTJ5p3wS16xZZ0ETm9kEnETs6506hcig/JyVgZsPxMVctsu5LfNp8jhXVhlWRfuC+X6MNURmqVBGv14Erc29952dhf1LwYna5+Tq8LdIWMZ7KHgpg2L8P503HvsY34O/TOdGZ855ZEgrj5FTgBdJYY+oJXCMmtALPeJA="; + } + + @Override + public String texture(HypixelPlayer player) { + return "eyJ0aW1lc3RhbXAiOjE1NzI0OTg3MzU2MjMsInByb2ZpbGVJZCI6IjQxZDNhYmMyZDc0OTQwMGM5MDkwZDU0MzRkMDM4MzFiIiwicHJvZmlsZU5hbWUiOiJNZWdha2xvb24iLCJzaWduYXR1cmVSZXF1aXJlZCI6dHJ1ZSwidGV4dHVyZXMiOnsiU0tJTiI6eyJ1cmwiOiJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlLzRkMjM4Y2NjODE4YWIwYzBmZGViZDA3ZDRhNTZjMzUzZmY1ZWI1NDFjODVkMzg2MzYyMTYxNzgxZDFkZDc0Y2MiLCJtZXRhZGF0YSI6eyJtb2RlbCI6InNsaW0ifX19fQ=="; + } + + @Override + public Pos position(HypixelPlayer player) { + return new Pos(-411.500, 109.000, 71.500, 169, 0); + } + + @Override + public boolean looking() { + return true; + } + }); + } + + @Override + public void onClick(NPCInteractEvent event) { + + } +} diff --git a/type.thepark/src/main/java/net/swofty/type/thepark/npcs/NPCMolbert.java b/type.thepark/src/main/java/net/swofty/type/thepark/npcs/NPCMolbert.java new file mode 100644 index 000000000..92a19b9de --- /dev/null +++ b/type.thepark/src/main/java/net/swofty/type/thepark/npcs/NPCMolbert.java @@ -0,0 +1,44 @@ +package net.swofty.type.thepark.npcs; + +import net.minestom.server.coordinate.Pos; +import net.swofty.type.generic.entity.npc.HypixelNPC; +import net.swofty.type.generic.entity.npc.configuration.HumanConfiguration; +import net.swofty.type.generic.event.custom.NPCInteractEvent; +import net.swofty.type.generic.user.HypixelPlayer; + +public class NPCMolbert extends HypixelNPC { + + public NPCMolbert() { + super(new HumanConfiguration() { + @Override + public String[] holograms(HypixelPlayer player) { + return new String[]{"Molbert", "§e§lCLICK"}; + } + + @Override + public String signature(HypixelPlayer player) { + return "W0e+/EVqkTyw3gQZgRQbswV8EA1K/YE557v6VpVu/a0B7XzcMMtS8aUyzsljpBiXM3pjPo36D4Wjq45AB/Ij8GaCV2M491lTk0OLzZnRYvGOZ0HvT8K0TdWkOZQtFfh45IX97yvrnfSx1P5XYvJxXSBCKFn6lG9CpYT4Oy5RQG2ARiBkwq3NNGbgJFEfgMQl5KyszgyWCvyXsEQJo9UVYvlGLgrMML+/bORdDSzlnm3R8/tQtCbCfKfRNKlNiv03c02vDGrWDdCB6JYXd+58V5uRwP4NrzSer6GTd59sHLNx1lWMvvag/5m+1A+XFaBTs6wK9m6PB5AVEm9ROhIHjKRpuDjUBHnKnc/docuV+JKlqu3z1BQ/nUccznZmOvKJ8eewtawtfd4/HalVsIPrE5f4nUoH7C1t50xO20fZ3Z7B7hurdSwJEuP1vV1AxhM21Y8ux42yQOqQ5l0pYeIPJTIs99MUaYJYqdWJll1Mp3AHuNelDbTVBvqzt0wtFvN5I5ULoeJrbV7t1PmCUJIP6pcyg9wGPRBW5ZauR2sp8TRNhrZOCRTiaWST+XbVnw7HkprqaoHqutxyascDQej38AknySBbMzcCZYS8CEwQYfMTbW7E/6SO5USapx0K29t+nh1ZOvfx2mI8hFW/qH5HFP2FhyZ1dSISfpWDCq7LWUg="; + } + + @Override + public String texture(HypixelPlayer player) { + return "ewogICJ0aW1lc3RhbXAiIDogMTU5MDQ1OTI1MTYwOCwKICAicHJvZmlsZUlkIiA6ICI3M2ZkNzU2NWJkZTY0MGQzYWE4MGUxMWUwMTMwMjc3OCIsCiAgInByb2ZpbGVOYW1lIiA6ICJHYUJySWVMVnR6IiwKICAic2lnbmF0dXJlUmVxdWlyZWQiIDogdHJ1ZSwKICAidGV4dHVyZXMiIDogewogICAgIlNLSU4iIDogewogICAgICAidXJsIiA6ICJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlL2YyMDc4M2UyNzQzYjg5NzZiMDBmODI3ZWUyODM2NzVkNzkxMTE0MGM5ODI4NDIzOWY2YmMxYzhkZDFkMjdjODEiCiAgICB9CiAgfQp9"; + } + + @Override + public Pos position(HypixelPlayer player) { + return new Pos(-447.500, 120.000, -63.500, 45, 0); + } + + @Override + public boolean looking() { + return true; + } + }); + } + + @Override + public void onClick(NPCInteractEvent event) { + + } +} diff --git a/type.thepark/src/main/java/net/swofty/type/thepark/npcs/NPCOldShamanNyko.java b/type.thepark/src/main/java/net/swofty/type/thepark/npcs/NPCOldShamanNyko.java new file mode 100644 index 000000000..1411fcced --- /dev/null +++ b/type.thepark/src/main/java/net/swofty/type/thepark/npcs/NPCOldShamanNyko.java @@ -0,0 +1,44 @@ +package net.swofty.type.thepark.npcs; + +import net.minestom.server.coordinate.Pos; +import net.swofty.type.generic.entity.npc.HypixelNPC; +import net.swofty.type.generic.entity.npc.configuration.HumanConfiguration; +import net.swofty.type.generic.event.custom.NPCInteractEvent; +import net.swofty.type.generic.user.HypixelPlayer; + +public class NPCOldShamanNyko extends HypixelNPC { + + public NPCOldShamanNyko() { + super(new HumanConfiguration() { + @Override + public String[] holograms(HypixelPlayer player) { + return new String[]{"Old Shaman Nyko"}; + } + + @Override + public String signature(HypixelPlayer player) { + return "mlkwH7j+wvVdC2zn62BDU1TaJLXHZLXvdCySROKTRdGXFBv5+OeXC3ekxqTPdhCIHI1CwPu3CQYeZT2JdZVLF69+s6nKvXmke1EvnqD4vfxoeh2ohhRvDan0cAUW+uXuIhxAblfCPpJVGaQEbM+PUSDJQ1lpgcGsGBYBX69w0nBCNsfhs+BEUbVPQFIFF+ceu1iY5rFBmZUa17OZV6fXv2COBJykjyA+ghAsaBPXGVpJmUbcbyk9p0eMDUX0p+Crdr4EFUQHlHYL7SlMykLZ2y4yZS7zuN2nBl2F9Inxdk1Odp84kp626L6odKF6veC+DL0Lo0DJj3R144Z9Npun+gZsX45h32Qm1xB88p9tto+kQsyPnGCwdsUQN2tg8YbhCwFDmUhNtY75xlLTy5eE+4fTK2DDRqd8GKNKF7Xoy7fR2sUtL4TpxkM71i0ddcMTO5UEE6NcTj2f7Sv1xPyVKMqkd5BuXJf3Wa81STM44/jtVq5BdTda3MghKj7EGVKMf9onOabw+ivnNFHODEgWphZueZ2M7J2Oo1jp2YNXGwpkSLkFV4Qjhm4Glu4CbFQdeyXMVTPSV1oui/1KYvVTPKMpVzXg3Ckcl8CyptyC4+HWTMqQh+eCtoyeIAasv8fg298IUdkURnOdeDqV5EZ6v6WXaN5Jn24fB+vSgrJLxvM="; + } + + @Override + public String texture(HypixelPlayer player) { + return "eyJ0aW1lc3RhbXAiOjE1NzMwODI0NjQ3MTYsInByb2ZpbGVJZCI6IjQxZDNhYmMyZDc0OTQwMGM5MDkwZDU0MzRkMDM4MzFiIiwicHJvZmlsZU5hbWUiOiJNZWdha2xvb24iLCJzaWduYXR1cmVSZXF1aXJlZCI6dHJ1ZSwidGV4dHVyZXMiOnsiU0tJTiI6eyJ1cmwiOiJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlLzU3YTUxNzg2NWI4MjBhNDQ1MWNkM2NjNjc2NWYzNzBmZDA1MjJiNjQ4OWM5Yzk0ZmIzNDVmZGVlMjY4OTQ1MWEifX19"; + } + + @Override + public Pos position(HypixelPlayer player) { + return new Pos(-370.500, 84.000, -64.500, 45, 0); + } + + @Override + public boolean looking() { + return true; + } + }); + } + + @Override + public void onClick(NPCInteractEvent event) { + + } +} diff --git a/type.thepark/src/main/java/net/swofty/type/thepark/npcs/NPCRyan.java b/type.thepark/src/main/java/net/swofty/type/thepark/npcs/NPCRyan.java new file mode 100644 index 000000000..dee4b3c09 --- /dev/null +++ b/type.thepark/src/main/java/net/swofty/type/thepark/npcs/NPCRyan.java @@ -0,0 +1,44 @@ +package net.swofty.type.thepark.npcs; + +import net.minestom.server.coordinate.Pos; +import net.swofty.type.generic.entity.npc.HypixelNPC; +import net.swofty.type.generic.entity.npc.configuration.HumanConfiguration; +import net.swofty.type.generic.event.custom.NPCInteractEvent; +import net.swofty.type.generic.user.HypixelPlayer; + +public class NPCRyan extends HypixelNPC { + + public NPCRyan() { + super(new HumanConfiguration() { + @Override + public String[] holograms(HypixelPlayer player) { + return new String[]{"Ryan"}; + } + + @Override + public String signature(HypixelPlayer player) { + return "cKGU6Ze2Y0I19H7/PrT/OdOjFADX9rg7dRgOMg95ugPfz4jSNmbIIan/i9C3+YaNN+QM3g2wAA/cFInXIK9CIisQ9C5ObDCT2h4ZhTueWSkygd7Vdm/34FyISNyu7maHRSJHg6HhcVaAVGZVyF9s9Tbmvgu3rX59kG1R+L65ArbPSDKlRLlyZYW0ut+F16WkjDjgT9qTiRvDGXWFBhFVaQ70Qr+68oWo3Q57+Ml2NGmY3AE9229uds17XuVD4O3ct09iwiXAtPUD9eHHdXW4oErtPCH/KoQ2mWG+JZwDf/bPvD2TZy0yKfVAJBxlmym4Ik5UOD88BpYATY+gPPm9k7xab3gVvVUY6YiRoev0NswOpYWwkowaY7sGlbDoFkNctTvUmKrO/o5RgT/N3M7tUX3PSaaupB/iqffV8b21d+V49YVQk1pOdNp6okIo/KNRSQImZZkGNzPEK6rJ6OQSgohHxcn/lDTW45ApKaD6gdkLsI/wtXeMR/9R3Nn3nJwMOvusit7m6zC2CRCOr4q4txin8sTOIgmZCCsrDhdAJOO4cYhYb/lREbjTe4FfYWMHq/WU0RFQzDk8eNVmYMEsVUQ7j7J977EfEy1vWJwbWTl++/IASPQiyrz9Cm1ys82H1NIPbguFKVcw61toiA0WdtwzMVqWYllj9O2TT9LXAck="; + } + + @Override + public String texture(HypixelPlayer player) { + return "eyJ0aW1lc3RhbXAiOjE1NzE4ODIwNjYxNzUsInByb2ZpbGVJZCI6IjQxZDNhYmMyZDc0OTQwMGM5MDkwZDU0MzRkMDM4MzFiIiwicHJvZmlsZU5hbWUiOiJNZWdha2xvb24iLCJzaWduYXR1cmVSZXF1aXJlZCI6dHJ1ZSwidGV4dHVyZXMiOnsiU0tJTiI6eyJ1cmwiOiJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlLzUxNzZjYjEzYTQ0MzYzMThhZTRjMmJjMzFkZjA5ZDU1NjE5MmRhZWJiNzBhM2IyODAyMGY3YWI5Y2ExNzA5YmIifX19"; + } + + @Override + public Pos position(HypixelPlayer player) { + return new Pos(-364.500, 102.500, -90.500, -146, 20); + } + + @Override + public boolean looking() { + return true; + } + }); + } + + @Override + public void onClick(NPCInteractEvent event) { + + } +} diff --git a/type.thepark/src/main/java/net/swofty/type/thepark/npcs/NPCVanessa.java b/type.thepark/src/main/java/net/swofty/type/thepark/npcs/NPCVanessa.java new file mode 100644 index 000000000..c283a8dd7 --- /dev/null +++ b/type.thepark/src/main/java/net/swofty/type/thepark/npcs/NPCVanessa.java @@ -0,0 +1,45 @@ +package net.swofty.type.thepark.npcs; + +import net.minestom.server.coordinate.Pos; +import net.swofty.type.generic.entity.npc.HypixelNPC; +import net.swofty.type.generic.entity.npc.configuration.HumanConfiguration; +import net.swofty.type.generic.entity.npc.configuration.NPCConfiguration; +import net.swofty.type.generic.event.custom.NPCInteractEvent; +import net.swofty.type.generic.user.HypixelPlayer; + +public class NPCVanessa extends HypixelNPC { + + public NPCVanessa() { + super(new HumanConfiguration() { + @Override + public String[] holograms(HypixelPlayer player) { + return new String[]{"Vanessa"}; + } + + @Override + public String signature(HypixelPlayer player) { + return "bWMvruKbW5+PPvFHcKTot9f0nvTjaoJAIcW5BZhO2BH/J8HoIWPU1BFNwqkYK9yBS/9KfB6dW8UEmAxEP/tCtb8uoZC9ePnNDXa3hMgGliEDOdXyUjIHBKg15tqa8qLMsEj3W0mVS7Oou0TKkczZayywuwbJKGEmpdhg+DIiDs4QC7pBNaoI5aM5HzKk6IKmqRtu6pEQ8b5MNm8+uwfNQCv28FMNSqx8FG92i2uNxRHcAtlPk0SIrgyXdWSkQjXdF1BOyWaNg86R+UFDbLUFQ0vstuNl5cwqwSzhQUerccSJve8Zs6y48JGp9GjFjxOMKBQYdiIXcUpeRt4mVYZMbrQPch4Hky0frJpKF+totgLXejyeqzPzZPcJcgRR4+An2fitp9sDY9p0ltIR7BReS7mBZNxzRL1KtKiUyZ+jkFRJFTSopPUmb2gh34dIc8QdpkGJT5/GS5KNghMSm8OI+ytcIQnNorBshCRJIViqlZ0yiG3RXCKrGFySrc98StpTQ2l9MWihqGmCzEPRRpH4UUZdjaXE5+0UMwwt42quchCfN8k7uhiiV2pTgx9Sb61vEnqBWVadcOs86I9wF1PksAz2PkDP5+ir1NBuZWq/Lupm3RJD7i4YsDiS5MWXPMFRN1EVFQV7ibYmLJrG724i5ddAvXdiDGYtSXsprGZ8nR4="; + } + + @Override + public String texture(HypixelPlayer player) { + return "ewogICJ0aW1lc3RhbXAiIDogMTcwNzE0MzE3MTA2NiwKICAicHJvZmlsZUlkIiA6ICIwOGQ4Nzg3ZDFiYzY0MWE2YWNlNzdjMzliNzVmODZiOCIsCiAgInByb2ZpbGVOYW1lIiA6ICJNYWdpa2xvb24iLAogICJzaWduYXR1cmVSZXF1aXJlZCIgOiB0cnVlLAogICJ0ZXh0dXJlcyIgOiB7CiAgICAiU0tJTiIgOiB7CiAgICAgICJ1cmwiIDogImh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNDllMjk3OWM4ZTJjNTg4OThjMjc3NGIzNjY5ZWE0YTFiMjk3NjdmY2RjMmRkNTkzN2VjMGNmMGRhM2E4ZmI2NyIsCiAgICAgICJtZXRhZGF0YSIgOiB7CiAgICAgICAgIm1vZGVsIiA6ICJzbGltIgogICAgICB9CiAgICB9CiAgfQp9"; + } + + @Override + public Pos position(HypixelPlayer player) { + return new Pos(-304.5, 76, -79.5, 0, 0); + } + + @Override + public boolean looking() { + return true; + } + }); + } + + @Override + public void onClick(NPCInteractEvent event) { + + } +}