Skip to content

Commit 92b24ac

Browse files
committed
feat: spiders den npcs
1 parent f0fa0dd commit 92b24ac

25 files changed

Lines changed: 663 additions & 23 deletions

File tree

type.generic/src/main/java/net/swofty/type/generic/data/datapoints/DatapointToggles.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,10 @@ public enum ToggleType {
103103
HAS_SPOKEN_TO_JAX(false),
104104
HAS_REALLY_SPOKEN_TO_JAX(false),
105105
HAS_SPOKEN_TO_ALCHEMIST(false),
106+
HAS_SPOKEN_TO_BRAMASS_BEASTSLAYER(false),
107+
HAS_SPOKEN_TO_RICK(false),
108+
HAS_SPOKEN_TO_MICHAEL(false),
109+
HAS_SPOKEN_TO_IKE(false),
106110
PAPER_ICONS(false),
107111
LOBBY_SHOW_PLAYERS(true),
108112
AUTO_ACCEPT_QUESTS(false),

type.generic/src/main/java/net/swofty/type/generic/entity/npc/NPCOption.java

Lines changed: 29 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,18 +16,39 @@
1616

1717
public class NPCOption {
1818
public static final Map<HypixelPlayer, OptionData> options = new HashMap<>();
19+
private static final Component selectAnOption = Component.text("Select an option:").color(NamedTextColor.YELLOW);
1920

20-
public static void sendOption(HypixelPlayer player, String id, List<Option> message) {
21+
public static void sendOption(
22+
HypixelPlayer player,
23+
String id,
24+
List<Option> message
25+
) {
2126
Component optionMessage = Component.empty();
22-
for (Option option : message) {
23-
optionMessage = optionMessage.append(Component.text("[" + option.name() + "]", Style.style().color(option.color()).decoration(TextDecoration.BOLD, true).build())
24-
.clickEvent(ClickEvent.runCommand("/selectnpcoption " + id + " " + option.key())));
25-
if (message.indexOf(option) != message.size() - 1) {
27+
28+
if (message.size() >= 2) {
29+
optionMessage = optionMessage.append(selectAnOption).appendSpace();
30+
}
31+
32+
for (int i = 0; i < message.size(); i++) {
33+
Option option = message.get(i);
34+
35+
Component optionComponent = Component.text("[" + option.name() + "]")
36+
.color(option.color())
37+
.decoration(TextDecoration.BOLD, option.bold())
38+
.clickEvent(
39+
ClickEvent.runCommand("/selectnpcoption " + id + " " + option.key())
40+
);
41+
42+
optionMessage = optionMessage.append(optionComponent);
43+
44+
if (i != message.size() - 1) {
2645
optionMessage = optionMessage.appendSpace();
2746
}
2847
}
48+
2949
player.sendMessage(optionMessage);
3050
options.put(player, new OptionData(id, message));
51+
3152
MathUtility.delay(
3253
() -> options.remove(player),
3354
20 * 60 * 5 // 5 minutes
@@ -41,8 +62,8 @@ public record OptionData(String npcId, List<Option> options) {
4162
public record Option(
4263
String key,
4364
NamedTextColor color,
65+
boolean bold,
4466
String name,
45-
Consumer<HypixelPlayer> action) {
46-
}
47-
67+
Consumer<HypixelPlayer> action
68+
){}
4869
}

type.goldmine/src/main/java/net/swofty/type/goldmine/entity/EntityLostPickaxe.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,12 @@
88
import net.minestom.server.item.ItemStack;
99
import net.minestom.server.item.Material;
1010
import net.swofty.commons.skyblock.item.ItemType;
11-
import net.swofty.type.generic.data.datapoints.DatapointToggles;
1211
import net.swofty.type.generic.entity.InteractionEntity;
1312
import net.swofty.type.skyblockgeneric.enchantment.EnchantmentType;
1413
import net.swofty.type.skyblockgeneric.enchantment.SkyBlockEnchantment;
1514
import net.swofty.type.skyblockgeneric.item.SkyBlockItem;
1615
import net.swofty.type.skyblockgeneric.mission.MissionData;
17-
import net.swofty.type.skyblockgeneric.mission.missions.lazyminer.MissionFindLazyMinerPickaxe;
16+
import net.swofty.type.skyblockgeneric.mission.missions.goldmine.lazyminer.MissionFindLazyMinerPickaxe;
1817
import net.swofty.type.skyblockgeneric.user.SkyBlockPlayer;
1918
import org.joml.Quaternionf;
2019

type.goldmine/src/main/java/net/swofty/type/goldmine/npcs/NPCLazyMiner.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77
import net.swofty.type.generic.user.HypixelPlayer;
88
import net.swofty.type.skyblockgeneric.calendar.SkyBlockCalendar;
99
import net.swofty.type.skyblockgeneric.mission.MissionData;
10-
import net.swofty.type.skyblockgeneric.mission.missions.lazyminer.MissionFindLazyMinerPickaxe;
11-
import net.swofty.type.skyblockgeneric.mission.missions.lazyminer.MissionTalkToLazyMiner;
10+
import net.swofty.type.skyblockgeneric.mission.missions.goldmine.lazyminer.MissionFindLazyMinerPickaxe;
11+
import net.swofty.type.skyblockgeneric.mission.missions.goldmine.lazyminer.MissionTalkToLazyMiner;
1212
import net.swofty.type.skyblockgeneric.skill.SkillCategories;
1313
import net.swofty.type.skyblockgeneric.user.SkyBlockPlayer;
1414

type.goldmine/src/main/java/net/swofty/type/goldmine/npcs/villagers/VillagerRusty.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import net.swofty.type.generic.entity.npc.configuration.VillagerConfiguration;
99
import net.swofty.type.generic.user.HypixelPlayer;
1010
import net.swofty.type.skyblockgeneric.gui.inventories.rusty.GUIRusty;
11-
import net.swofty.type.skyblockgeneric.mission.missions.lazyminer.MissionFindLazyMinerPickaxe;
11+
import net.swofty.type.skyblockgeneric.mission.missions.goldmine.lazyminer.MissionFindLazyMinerPickaxe;
1212
import net.swofty.type.skyblockgeneric.user.SkyBlockPlayer;
1313

1414
import java.util.stream.Stream;

type.hub/src/main/java/net/swofty/type/hub/npcs/NPCBaker.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ public void onClick(NPCInteractEvent event) {
6666
if (isInDialogue(player)) return;
6767

6868
if(!player.getToggles().get(DatapointToggles.Toggles.ToggleType.HAS_SPOKEN_TO_BAKER)) {
69-
setDialogue(player, "idle").thenRun(() -> {
69+
setDialogue(player, "initial-hello").thenRun(() -> {
7070
player.getToggles().set(DatapointToggles.Toggles.ToggleType.HAS_SPOKEN_TO_BAKER, true);
7171
});
7272
return;
@@ -84,7 +84,7 @@ public void onClick(NPCInteractEvent event) {
8484
protected DialogueSet[] dialogues(HypixelPlayer player) {
8585
return Stream.of(
8686
DialogueSet.builder()
87-
.key("idle").lines(new String[]{
87+
.key("initial-hello").lines(new String[]{
8888
"At the end of each year I bake cakes for everyone in town to celebrate the year.",
8989
"I made one especially for you, here you go.",
9090
"I've recently added a §dNew Year Cake Bag §fto my inventory. Sadly, it's not free! Click me again to open my shop!",

type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/abiphone/impl/AbiphoneBuilder.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ public void onAdd(SkyBlockPlayer player, int slot) {
3434
NPCOption.sendOption(player, "builder", Collections.singletonList(new NPCOption.Option(
3535
"pay",
3636
NamedTextColor.GREEN,
37+
true,
3738
"GIVE ITEM",
3839
(p) -> {
3940
SkyBlockPlayer sp = (SkyBlockPlayer) p;

type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/abiphone/impl/AbiphoneWalter.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ public void onAdd(SkyBlockPlayer player, int slot) {
3030
NPCOption.sendOption(player, "walter", Collections.singletonList(new NPCOption.Option(
3131
"pay", // actual id from Hypixel
3232
NamedTextColor.GREEN,
33+
true,
3334
"DONATE CUBE",
3435
(p) -> {
3536
// TODO: check requirements

type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/rusty/GUIRustyMiscellaneous.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
import net.swofty.type.skyblockgeneric.gui.inventories.shop.GUIConfirmBuy;
2020
import net.swofty.type.skyblockgeneric.item.SkyBlockItem;
2121
import net.swofty.type.skyblockgeneric.item.updater.NonPlayerItemUpdater;
22-
import net.swofty.type.skyblockgeneric.mission.missions.lazyminer.MissionFindLazyMinerPickaxe;
22+
import net.swofty.type.skyblockgeneric.mission.missions.goldmine.lazyminer.MissionFindLazyMinerPickaxe;
2323
import net.swofty.type.skyblockgeneric.user.SkyBlockPlayer;
2424

2525
import java.util.ArrayList;

type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/sbmenu/skills/GUISkillCategory.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import net.minestom.server.item.ItemStack;
88
import net.minestom.server.item.Material;
99
import net.swofty.commons.StringUtility;
10+
import net.swofty.type.generic.data.datapoints.DatapointToggles;
1011
import net.swofty.type.generic.gui.inventory.HypixelInventoryGUI;
1112
import net.swofty.type.generic.gui.inventory.ItemStackCreator;
1213
import net.swofty.type.generic.gui.inventory.item.GUIClickableItem;
@@ -46,7 +47,7 @@ public void onOpen(InventoryGUIOpenEvent e) {
4647
int level = skills.getCurrentLevel(category);
4748
Integer nextLevel = skills.getNextLevel(category);
4849

49-
if (category == SkillCategories.COMBAT) {
50+
if (category == SkillCategories.COMBAT && player.getToggles().get(DatapointToggles.Toggles.ToggleType.HAS_SPOKEN_TO_BRAMASS_BEASTSLAYER)) {
5051
set(new GUIClickableItem(39) {
5152
@Override
5253
public void run(InventoryPreClickEvent e, HypixelPlayer p) {

0 commit comments

Comments
 (0)