Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -626,6 +626,7 @@ public enum ItemType {
GOLDEN_SHOVEL(Material.GOLDEN_SHOVEL, Rarity.COMMON),
IRON_SHOVEL(Material.IRON_SHOVEL, Rarity.COMMON),
DIAMOND_SHOVEL(Material.DIAMOND_SHOVEL, Rarity.UNCOMMON),
PROMISING_SHOVEL(Material.IRON_SHOVEL, Rarity.UNCOMMON),

/**
* Bows
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,10 @@ public enum ToggleType {
HAS_SPOKEN_TO_JAX(false),
HAS_REALLY_SPOKEN_TO_JAX(false),
HAS_SPOKEN_TO_ALCHEMIST(false),
HAS_SPOKEN_TO_BRAMASS_BEASTSLAYER(false),
HAS_SPOKEN_TO_RICK(false),
HAS_SPOKEN_TO_MICHAEL(false),
HAS_SPOKEN_TO_IKE(false),
PAPER_ICONS(false),
LOBBY_SHOW_PLAYERS(true),
AUTO_ACCEPT_QUESTS(false),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,18 +16,39 @@

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

public static void sendOption(HypixelPlayer player, String id, List<Option> message) {
public static void sendOption(
HypixelPlayer player,
String id,
List<Option> message
) {
Component optionMessage = Component.empty();
for (Option option : message) {
optionMessage = optionMessage.append(Component.text("[" + option.name() + "]", Style.style().color(option.color()).decoration(TextDecoration.BOLD, true).build())
.clickEvent(ClickEvent.runCommand("/selectnpcoption " + id + " " + option.key())));
if (message.indexOf(option) != message.size() - 1) {

if (message.size() >= 2) {
optionMessage = optionMessage.append(selectAnOption).appendSpace();
}

for (int i = 0; i < message.size(); i++) {
Option option = message.get(i);

Component optionComponent = Component.text("[" + option.name() + "]")
.color(option.color())
.decoration(TextDecoration.BOLD, option.bold())
.clickEvent(
ClickEvent.runCommand("/selectnpcoption " + id + " " + option.key())
);

optionMessage = optionMessage.append(optionComponent);

if (i != message.size() - 1) {
optionMessage = optionMessage.appendSpace();
}
}

player.sendMessage(optionMessage);
options.put(player, new OptionData(id, message));

MathUtility.delay(
() -> options.remove(player),
20 * 60 * 5 // 5 minutes
Expand All @@ -41,8 +62,8 @@ public record OptionData(String npcId, List<Option> options) {
public record Option(
String key,
NamedTextColor color,
boolean bold,
String name,
Consumer<HypixelPlayer> action) {
}

Consumer<HypixelPlayer> action
){}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,12 @@
import net.minestom.server.item.ItemStack;
import net.minestom.server.item.Material;
import net.swofty.commons.skyblock.item.ItemType;
import net.swofty.type.generic.data.datapoints.DatapointToggles;
import net.swofty.type.generic.entity.InteractionEntity;
import net.swofty.type.skyblockgeneric.enchantment.EnchantmentType;
import net.swofty.type.skyblockgeneric.enchantment.SkyBlockEnchantment;
import net.swofty.type.skyblockgeneric.item.SkyBlockItem;
import net.swofty.type.skyblockgeneric.mission.MissionData;
import net.swofty.type.skyblockgeneric.mission.missions.lazyminer.MissionFindLazyMinerPickaxe;
import net.swofty.type.skyblockgeneric.mission.missions.goldmine.lazyminer.MissionFindLazyMinerPickaxe;
import net.swofty.type.skyblockgeneric.user.SkyBlockPlayer;
import org.joml.Quaternionf;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@
import net.swofty.type.generic.user.HypixelPlayer;
import net.swofty.type.skyblockgeneric.calendar.SkyBlockCalendar;
import net.swofty.type.skyblockgeneric.mission.MissionData;
import net.swofty.type.skyblockgeneric.mission.missions.lazyminer.MissionFindLazyMinerPickaxe;
import net.swofty.type.skyblockgeneric.mission.missions.lazyminer.MissionTalkToLazyMiner;
import net.swofty.type.skyblockgeneric.mission.missions.goldmine.lazyminer.MissionFindLazyMinerPickaxe;
import net.swofty.type.skyblockgeneric.mission.missions.goldmine.lazyminer.MissionTalkToLazyMiner;
import net.swofty.type.skyblockgeneric.skill.SkillCategories;
import net.swofty.type.skyblockgeneric.user.SkyBlockPlayer;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
import net.swofty.type.generic.entity.npc.configuration.VillagerConfiguration;
import net.swofty.type.generic.user.HypixelPlayer;
import net.swofty.type.skyblockgeneric.gui.inventories.rusty.GUIRusty;
import net.swofty.type.skyblockgeneric.mission.missions.lazyminer.MissionFindLazyMinerPickaxe;
import net.swofty.type.skyblockgeneric.mission.missions.goldmine.lazyminer.MissionFindLazyMinerPickaxe;
import net.swofty.type.skyblockgeneric.user.SkyBlockPlayer;

import java.util.stream.Stream;
Expand Down
4 changes: 2 additions & 2 deletions type.hub/src/main/java/net/swofty/type/hub/npcs/NPCBaker.java
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ public void onClick(NPCInteractEvent event) {
if (isInDialogue(player)) return;

if(!player.getToggles().get(DatapointToggles.Toggles.ToggleType.HAS_SPOKEN_TO_BAKER)) {
setDialogue(player, "idle").thenRun(() -> {
setDialogue(player, "initial-hello").thenRun(() -> {
player.getToggles().set(DatapointToggles.Toggles.ToggleType.HAS_SPOKEN_TO_BAKER, true);
});
return;
Expand All @@ -84,7 +84,7 @@ public void onClick(NPCInteractEvent event) {
protected DialogueSet[] dialogues(HypixelPlayer player) {
return Stream.of(
DialogueSet.builder()
.key("idle").lines(new String[]{
.key("initial-hello").lines(new String[]{
"At the end of each year I bake cakes for everyone in town to celebrate the year.",
"I made one especially for you, here you go.",
"I've recently added a §dNew Year Cake Bag §fto my inventory. Sadly, it's not free! Click me again to open my shop!",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ public void onAdd(SkyBlockPlayer player, int slot) {
NPCOption.sendOption(player, "builder", Collections.singletonList(new NPCOption.Option(
"pay",
NamedTextColor.GREEN,
true,
"GIVE ITEM",
(p) -> {
SkyBlockPlayer sp = (SkyBlockPlayer) p;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ public void onAdd(SkyBlockPlayer player, int slot) {
NPCOption.sendOption(player, "walter", Collections.singletonList(new NPCOption.Option(
"pay", // actual id from Hypixel
NamedTextColor.GREEN,
true,
"DONATE CUBE",
(p) -> {
// TODO: check requirements
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
import net.swofty.type.skyblockgeneric.gui.inventories.shop.GUIConfirmBuy;
import net.swofty.type.skyblockgeneric.item.SkyBlockItem;
import net.swofty.type.skyblockgeneric.item.updater.NonPlayerItemUpdater;
import net.swofty.type.skyblockgeneric.mission.missions.lazyminer.MissionFindLazyMinerPickaxe;
import net.swofty.type.skyblockgeneric.mission.missions.goldmine.lazyminer.MissionFindLazyMinerPickaxe;
import net.swofty.type.skyblockgeneric.user.SkyBlockPlayer;

import java.util.ArrayList;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import net.minestom.server.item.ItemStack;
import net.minestom.server.item.Material;
import net.swofty.commons.StringUtility;
import net.swofty.type.generic.data.datapoints.DatapointToggles;
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;
Expand Down Expand Up @@ -46,7 +47,7 @@ public void onOpen(InventoryGUIOpenEvent e) {
int level = skills.getCurrentLevel(category);
Integer nextLevel = skills.getNextLevel(category);

if (category == SkillCategories.COMBAT) {
if (category == SkillCategories.COMBAT && player.getToggles().get(DatapointToggles.Toggles.ToggleType.HAS_SPOKEN_TO_BRAMASS_BEASTSLAYER)) {
set(new GUIClickableItem(39) {
@Override
public void run(InventoryPreClickEvent e, HypixelPlayer p) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@
import net.swofty.type.skyblockgeneric.mission.missions.farmer.MissionCollectWheat;
import net.swofty.type.skyblockgeneric.mission.missions.farmer.MissionTalkToFarmer;
import net.swofty.type.skyblockgeneric.mission.missions.farmer.MissionTalkToFarmerAgain;
import net.swofty.type.skyblockgeneric.mission.missions.lazyminer.MissionFindLazyMinerPickaxe;
import net.swofty.type.skyblockgeneric.mission.missions.lazyminer.MissionTalkToLazyMiner;
import net.swofty.type.skyblockgeneric.mission.missions.goldmine.lazyminer.MissionFindLazyMinerPickaxe;
import net.swofty.type.skyblockgeneric.mission.missions.goldmine.lazyminer.MissionTalkToLazyMiner;
import net.swofty.type.skyblockgeneric.mission.missions.lumber.MissionBreakOaklog;
import net.swofty.type.skyblockgeneric.mission.missions.lumber.MissionTalkToLumberjack;
import net.swofty.type.skyblockgeneric.mission.missions.lumber.MissionTalkToLumberjackAgain;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package net.swofty.type.skyblockgeneric.mission.missions.lazyminer;
package net.swofty.type.skyblockgeneric.mission.missions.goldmine.lazyminer;

import net.swofty.type.skyblockgeneric.mission.MissionData;
import net.swofty.type.skyblockgeneric.mission.SkyBlockMission;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package net.swofty.type.skyblockgeneric.mission.missions.lazyminer;
package net.swofty.type.skyblockgeneric.mission.missions.goldmine.lazyminer;

import net.swofty.type.skyblockgeneric.mission.MissionData;
import net.swofty.type.skyblockgeneric.mission.SkyBlockMission;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package net.swofty.type.skyblockgeneric.mission.missions.spidersden;

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 MissionTheFlintBros extends SkyBlockMission {
@Override
public String getID() {
return "the-flint-bros";
}

@Override
public String getName() {
return "The Flint Bros";
}

@Override
public Map<String, Object> onStart(SkyBlockPlayer player, MissionData.ActiveMission mission) {
return Map.of();
}

@Override
public void onEnd(SkyBlockPlayer player, Map<String, Object> customData, MissionData.ActiveMission mission) {

}

@Override
public Set<RegionType> getValidRegions() {
return Set.of();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -324,6 +324,25 @@ public int getAmountInInventory(ItemType type) {
return getAllOfTypeInInventory(type).values().stream().mapToInt(Integer::intValue).sum();
}

public boolean removeItemFromPlayer(ItemType type, int amount) {
int inventoryAmount = getAmountInInventory(type);
int sacksAmount = getSackItems().getAmount(type);
int leftToTakeFromSacks = amount - inventoryAmount;

if ((inventoryAmount + sacksAmount) < amount) return false;

if (inventoryAmount >= amount) {
takeItem(type, amount);
} else if (inventoryAmount >= 1) {
takeItem(type, inventoryAmount);
getSackItems().decrease(type, leftToTakeFromSacks);
} else {
getSackItems().decrease(type, sacksAmount);
}

return true;
}

public boolean isCoop() {
return getSkyblockDataHandler().get(SkyBlockDataHandler.Data.IS_COOP, DatapointBoolean.class).getValue();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,8 +56,6 @@ public void collect(SkyBlockPlayer player) {
}

player.sendMessage("§dYou have already found that Fairy Soul!");
if (!fairySouls.getExchangedFairySouls().contains(id))
player.sendMessage("§7Go to Tia the Fairy in the §eHub§7 to exchange it for rewards!");
}

public static List<FairySoul> getFairySouls() {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
package net.swofty.type.spidersden.npcs;

import net.minestom.server.coordinate.Pos;
import net.swofty.commons.ChatColor;
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 NPCArchaelogist extends HypixelNPC {
public NPCArchaelogist() {
super(new HumanConfiguration() {
@Override
public String[] holograms(HypixelPlayer player) {
return new String[]{
ChatColor.AQUA + "Archaeologist",
ChatColor.YELLOW + "" + ChatColor.BOLD + "CLICK"
};
}

@Override
public String signature(HypixelPlayer player) {
return "T7z9Er9geL6Y9+z7o0u7BUc5kTlbrWw+w6jNDYecdJeTX+u7XfB7C0bgYD4e2MQawQxvI8otTTA8GWrvlgjtfP/xiQD70baSd1u4/bVRKDcquG6Knn7ALmLz34WDlIjZT7N3yVPVuAnauFeYKySCe77pphoaBJCySOfDjr78zeYvTsoWNmq+AJ2BlpsMfErhzKgiuZbRFNEIrjVyUcm/OxWFiqi8nODA85St4Ka4dG9q7cUAjZbI9mfz0cUWPyGe9k1S6Zv2MXiWh/9jNGXXPzjAIPK+uXynm5ihhxJPUJfvB0HE/UX2y3clHwqLlSiG93ju/TE8EBwCXxbPkzlFny2K1aAYlTfhxoTu4J5S6vDleFBhIBTxslneEyALgsYarpS37e0cta6cNx4dwvENaZfR/vekqLfAR6G5FV4P+6q9FbfSsI5rhfpnbgsluY9hkt1J5GCzPVyH1+Lfxse8310yhQBQ0HCDvX7SG5cioXxzFs1Sr/25/bC3/BpfG1Z6PjrdKuTymz5DPbu/pkjXkbti+1yGYmBDbSFz+zurgKxerkzWSumtApuIGGX7nc43XyKBoklfq/5sEZ4IuIijlIlD1pDWtxrpxkSdhFRFibY71PAV/18bez+ABFpr1lbydPCvo8O8yiq0NTAAc8hw66kL3z6cpagvq7SiQOWdPf0=";
}

@Override
public String texture(HypixelPlayer player) {
return "ewogICJ0aW1lc3RhbXAiIDogMTYxMjgwOTU0ODAzMCwKICAicHJvZmlsZUlkIiA6ICIzOTg5OGFiODFmMjU0NmQxOGIyY2ExMTE1MDRkZGU1MCIsCiAgInByb2ZpbGVOYW1lIiA6ICJNeVV1aWRJcyIsCiAgInNpZ25hdHVyZVJlcXVpcmVkIiA6IHRydWUsCiAgInRleHR1cmVzIiA6IHsKICAgICJTS0lOIiA6IHsKICAgICAgInVybCIgOiAiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS82ODVlODNhMDk5NTFhMmMyZGI3ODM2MGJjOTU0NmJiMGQ0NTQ5NzViNWU1YTM0NGNhMWRhZmY0MDhhNjdlOWYxIgogICAgfQogIH0KfQ==";
}

@Override
public Pos position(HypixelPlayer player) {
return new Pos(-360.5, 111, -290, -41, 0);
}

@Override
public boolean looking() {
return true;
}
});
}

@Override
public void onClick(NPCInteractEvent event) {

}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
package net.swofty.type.spidersden.npcs;

import net.minestom.server.coordinate.Pos;
import net.swofty.commons.ChatColor;
import net.swofty.type.generic.data.datapoints.DatapointToggles;
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.gui.inventories.GUIReforge;
import net.swofty.type.skyblockgeneric.user.SkyBlockPlayer;

public class NPCBramassBeastslayer extends HypixelNPC {

public NPCBramassBeastslayer() {
super(new HumanConfiguration() {
@Override
public String[] holograms(HypixelPlayer player) {
return new String[]{
ChatColor.DARK_AQUA + "Bestiary",
ChatColor.RED + "Bramass Beastslayer",
ChatColor.YELLOW + "" + ChatColor.BOLD + "CLICK"};
}

@Override
public String signature(HypixelPlayer player) {
return "rXqHJm9SDJV3cxXim1J6MDT0WUfVa7nacz70F8ARcxUg91unuKr7CO/gdwngzQNy6Qa45GfG0VZmCkNB/DXBcMv3fAOOXzvbtN1HyBWGLZ5STXL/g8JaIideD0NNRB2HHJriokpnROInuy+FYdFKtclVXcRpbV0dhtbD6k4VXnsVg1fUbrfojwfazTKAUTKT6E9rfJLPFTzS6y8yoWZvOHCiuMPO7YVblhH/T3c+4HaijHXTkYKo8k97Y/BKuTs54adEmInItbfldwqUDqc+yQ/AdSW4Qr319M8FL4SnSC42CuJiFvnZ/lhSvx2tlm/PU8E36iSi0GYc7qfJuI/xoz0aT4ZKG9GYvBrCAG34LeYVcgqZGS77IBk9637ghLRr7t+9wn8JRWrvYByWdCjFOi2Ia3yXx3be6zGjBIAwWwSXnneKEgDXIt7lEJ2bA1HT04EO/ja5JIDoFVJbK4LAnZZwRczDJt4UeS3iP9/tRcMRIm4tLIOGP0Ygnh86Jb9o1nZ72kodwC5z3aI1BGYbkSaH88eIhrxhbhU7PexqATzgFoNYhSEpuBoyO9kbQ7sBAFnH0d2TORro7bnlC6B3r84vOMJ69P9/KfjNkKcSq2epB4I//kD4+BQC5HeMmPszckwqfFGUbTHC7MZbpJMO+OWwhP5C10gK/gy4F3+hSJM=";
}

@Override
public String texture(HypixelPlayer player) {
return "ewogICJ0aW1lc3RhbXAiIDogMTYxMzQ4Nzk3NTIzMywKICAicHJvZmlsZUlkIiA6ICJhMjk1ODZmYmU1ZDk0Nzk2OWZjOGQ4ZGE0NzlhNDNlZSIsCiAgInByb2ZpbGVOYW1lIiA6ICJWaWVydGVsdG9hc3RpaWUiLAogICJzaWduYXR1cmVSZXF1aXJlZCIgOiB0cnVlLAogICJ0ZXh0dXJlcyIgOiB7CiAgICAiU0tJTiIgOiB7CiAgICAgICJ1cmwiIDogImh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYWFlZjUxNzk5OGI5ZDkzZjYyZDAwNTY3Y2Y2YmM2ODg1MWEzNGJkOTlmMzcwNjk4ZjhiNmQ2MmQ5ZGU0YzNlNCIKICAgIH0KICB9Cn0=";
}

@Override
public Pos position(HypixelPlayer player) {
return new Pos(-271.5, 113, -196.5, -87, 0);
}

@Override
public boolean looking() {
return true;
}
});
}

@Override
public void onClick(NPCInteractEvent event) {
SkyBlockPlayer player = (SkyBlockPlayer) event.player();
if (!player.getToggles().get(DatapointToggles.Toggles.ToggleType.HAS_SPOKEN_TO_BRAMASS_BEASTSLAYER)) {
setDialogue(player, "initial-hello").thenRun(() -> {
player.getToggles().set(DatapointToggles.Toggles.ToggleType.HAS_SPOKEN_TO_BRAMASS_BEASTSLAYER, true);
});
}
}

@Override
public DialogueSet[] dialogues(HypixelPlayer player) {
return new DialogueSet[] {
DialogueSet.builder()
.key("initial-hello").lines(new String[] {
"Hello, adventurer! I am " + ChatColor.RED + "Bramass Beastslayer" + ChatColor.WHITE + "! I've slain beasts of all sorts across SkyBlock!",
"I sure wish there was a record of all of my accomplishments in one place!",
"Oh wait...there is!",
"Your " + ChatColor.DARK_AQUA + "Bestiary" + ChatColor.WHITE + " is a compendium of all of the mobs in SkyBlock!",
"View your mob stats, unlock rewards, and more!",
"You can find the Bestiary in your " + ChatColor.GREEN + "Combat Skill" + ChatColor.WHITE + " menu!"
}).build(),
};
}
}
Loading