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 @@ -99,10 +99,11 @@ public enum ToggleType {
HAS_SPOKEN_TO_JAX(false),
HAS_REALLY_SPOKEN_TO_JAX(false),
HAS_SPOKEN_TO_ALCHEMIST(false),
HAS_FOUND_LAZY_MINER_PICKAXE(false),
PAPER_ICONS(false),
LOBBY_SHOW_PLAYERS(true),
AUTO_ACCEPT_QUESTS(false)
AUTO_ACCEPT_QUESTS(false),
RUSTY_PURCHASE_CONFIRMATION(false),
RUSTY_SORT_BY_RARITY(false),
;

private final boolean defaultValue;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,23 +45,27 @@ public void spawn() {
super.spawn();
InteractionEntity interactionEntity = new InteractionEntity(width, height, (p, event) -> {
SkyBlockPlayer player = (SkyBlockPlayer) p;
boolean hasFound = player.getToggles().get(DatapointToggles.Toggles.ToggleType.HAS_FOUND_LAZY_MINER_PICKAXE);
MissionData data = player.getMissionData();

if (!data.isCurrentlyActive(MissionFindLazyMinerPickaxe.class)) return;

boolean hasFound = player.getMissionData().hasCompleted(MissionFindLazyMinerPickaxe.class);
if (hasFound) {
player.sendMessage("§cYou have already picked that up!");
return;
}

// Set the toggle for backwards compatibility and special case handling
player.getToggles().set(DatapointToggles.Toggles.ToggleType.HAS_FOUND_LAZY_MINER_PICKAXE, true);
player.sendMessage("§aYou have found the Lazy Miner's Pickaxe!");

// End mission if active (this will start MissionTalkToLazyMiner)
MissionData data = player.getMissionData();
if (data.isCurrentlyActive(MissionFindLazyMinerPickaxe.class)) {
data.endMission(MissionFindLazyMinerPickaxe.class);
}
data.endMission(MissionFindLazyMinerPickaxe.class);

SkyBlockItem pickaxe = new SkyBlockItem(ItemType.IRON_PICKAXE);
pickaxe.getAttributeHandler().addEnchantment(
new SkyBlockEnchantment(
EnchantmentType.EFFICIENCY,
1
)
);
pickaxe.getAttributeHandler().addEnchantment(
new SkyBlockEnchantment(
EnchantmentType.SMELTING_TOUCH,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package net.swofty.type.goldmine.gui;
package net.swofty.type.goldmine.gui.rusty;

import net.minestom.server.event.inventory.InventoryPreClickEvent;
import net.minestom.server.inventory.InventoryType;
Expand All @@ -23,7 +23,7 @@ public void onOpen(InventoryGUIOpenEvent event) {
set(new GUIClickableItem(10) {
@Override
public void run(InventoryPreClickEvent e, HypixelPlayer player) {

new GUIRustyWeaponsAndGear().open(player);
}

@Override
Expand All @@ -42,13 +42,13 @@ public ItemStack.Builder getItem(HypixelPlayer player) {
set(new GUIClickableItem(12) {
@Override
public void run(InventoryPreClickEvent e, HypixelPlayer player) {

new GUIRustyPetsAndPetItems().open(player);
}

@Override
public ItemStack.Builder getItem(HypixelPlayer player) {
return ItemStackCreator.getStack(
"§aPets", Material.PLAYER_HEAD, 1,
return ItemStackCreator.getStackHead(
"§aPets", "4e794274c1bb197ad306540286a7aa952974f5661bccf2b725424f6ed79c7884", 1,
"§7Contains pets, and some reobtainable",
"§7pet items from all around SkyBlock",
"§7",
Expand All @@ -60,13 +60,13 @@ public ItemStack.Builder getItem(HypixelPlayer player) {
set(new GUIClickableItem(14) {
@Override
public void run(InventoryPreClickEvent e, HypixelPlayer player) {

new GUIRustyAccessories().open(player);
}

@Override
public ItemStack.Builder getItem(HypixelPlayer player) {
return ItemStackCreator.getStack(
"§aAccessories", Material.PLAYER_HEAD, 1,
return ItemStackCreator.getStackHead(
"§aAccessories", "3ada666715bfd2aa9fbd81daef59b9fe1c96c4fa0d08dbc72eae5633177dbf88", 1,
"§7Contains accessories and talismans",
"§7from all around SkyBlock.",
"§7",
Expand All @@ -78,7 +78,7 @@ public ItemStack.Builder getItem(HypixelPlayer player) {
set(new GUIClickableItem(16) {
@Override
public void run(InventoryPreClickEvent e, HypixelPlayer player) {

new GUIRustyMiscellaneous().open(player);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,231 @@
package net.swofty.type.goldmine.gui.rusty;

import net.minestom.server.component.DataComponents;
import net.minestom.server.event.inventory.InventoryPreClickEvent;
import net.minestom.server.inventory.InventoryType;
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.HypixelPaginatedGUI;
import net.swofty.type.generic.gui.inventory.ItemStackCreator;
import net.swofty.type.generic.gui.inventory.item.GUIClickableItem;
import net.swofty.type.generic.gui.inventory.item.GUIItem;
import net.swofty.type.generic.user.HypixelPlayer;
import net.swofty.type.generic.utility.PaginationList;
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.user.SkyBlockPlayer;

import java.util.ArrayList;
import java.util.List;
import java.util.function.Function;

public class GUIRustyAccessories extends HypixelPaginatedGUI<GUIRustyAccessories.DisplayItem> {
public GUIRustyAccessories() {
super(InventoryType.CHEST_6_ROW);
}

@Override
public boolean allowHotkeying() {
return false;
}

@Override
public void onBottomClick(InventoryPreClickEvent e) {
e.setCancelled(true);
}

@Override
public int[] getPaginatedSlots() {
return new int[]{
10, 11, 12, 13, 14, 15, 16,
19, 20, 21, 22, 23, 24, 25,
28, 29, 30, 31, 32, 33, 34,
37, 38, 39, 40, 41, 42, 43
};
}

@Override
public PaginationList<DisplayItem> fillPaged(HypixelPlayer player, PaginationList<DisplayItem> paged) {
List<DisplayItem> items = new ArrayList<>();
SkyBlockPlayer skyblockPlayer = (SkyBlockPlayer) player;

for (MiscellaneousItems miscItem : MiscellaneousItems.values()) {
boolean unlocked = miscItem.hasUnlocked.apply(skyblockPlayer);
items.add(new DisplayItem(miscItem, unlocked));
}

if (player.getToggles().get(DatapointToggles.Toggles.ToggleType.RUSTY_SORT_BY_RARITY)) {
items.sort((item1, item2) -> {
if (item1.unlocked && !item2.unlocked) return -1;
if (!item1.unlocked && item2.unlocked) return 1;

int rarity1 = item1.miscItem.item.getAttributeHandler().getRarity().ordinal();
int rarity2 = item2.miscItem.item.getAttributeHandler().getRarity().ordinal();
return Integer.compare(rarity1, rarity2);
});
} else {
items.sort((item1, item2) -> {
if (item1.unlocked && !item2.unlocked) return -1;
if (!item1.unlocked && item2.unlocked) return 1;
return Integer.compare(item1.miscItem.ordinal(), item2.miscItem.ordinal());
});
}

paged.addAll(items);
return paged;
}

@Override
public boolean shouldFilterFromSearch(String query, DisplayItem item) {
return false;
}

@Override
public void performSearch(HypixelPlayer player, String query, int page, int maxPage) {
border(ItemStackCreator.createNamedItemStack(Material.BLACK_STAINED_GLASS_PANE, ""));
set(GUIClickableItem.getGoBackItem(49, new GUIRusty()));

set(new GUIClickableItem(48) {
@Override
public void run(InventoryPreClickEvent e, HypixelPlayer player) {
boolean purchaseConfirmation = player.getToggles().get(DatapointToggles.Toggles.ToggleType.RUSTY_PURCHASE_CONFIRMATION);
player.getToggles().set(DatapointToggles.Toggles.ToggleType.RUSTY_PURCHASE_CONFIRMATION, !purchaseConfirmation);

GUIRustyMiscellaneous newGui = new GUIRustyMiscellaneous();
newGui.open(player);
}

@Override
public ItemStack.Builder getItem(HypixelPlayer player) {
return ItemStackCreator.getStack("§aShop Confirmations",
player.getToggles().get(DatapointToggles.Toggles.ToggleType.RUSTY_PURCHASE_CONFIRMATION) ? Material.LIME_DYE : Material.LIGHT_GRAY_DYE,
1, "§7Confirm when purchasing item worth", "§7at least a million coins.", "",
"§eClick to " + (player.getToggles().get(DatapointToggles.Toggles.ToggleType.RUSTY_PURCHASE_CONFIRMATION) ? "disable" : "enable") + "!");
}
});

set(new GUIItem(50) {
@Override
public ItemStack.Builder getItem(HypixelPlayer player) {
return ItemStackCreator.getStack("§aThe Janitor", Material.REDSTONE_TORCH, 1,
"§7Rusty watches over the neatness of the §6Gold",
"§6Mines§7, but really he watches over the whole of",
"§aSkyBlock§7.",
"",
"§7If you misplace a §6one-time reward §7from a",
"§7quest, it may be offered here!");
}
});

set(new GUIClickableItem(51) {
@Override
public void run(InventoryPreClickEvent e, HypixelPlayer player) {
boolean sortByRarity = player.getToggles().get(DatapointToggles.Toggles.ToggleType.RUSTY_SORT_BY_RARITY);
player.getToggles().set(DatapointToggles.Toggles.ToggleType.RUSTY_SORT_BY_RARITY, !sortByRarity);

GUIRustyMiscellaneous newGui = new GUIRustyMiscellaneous();
newGui.open(player);
}

@Override
public ItemStack.Builder getItem(HypixelPlayer player) {
return ItemStackCreator.getStack("§aSort by Rarity",
Material.ENDER_EYE, 1,
"§7Enabled: " + (player.getToggles().get(DatapointToggles.Toggles.ToggleType.RUSTY_SORT_BY_RARITY) ? "§aYES" : "§cNO"),
"",
"§eClick to toggle!");
}
});

if (page > 1) {
set(createNavigationButton(this, 45, query, page, false));
}
if (page < maxPage) {
set(createNavigationButton(this, 53, query, page, true));
}
}

@Override
protected String getTitle(HypixelPlayer player, String query, int page, PaginationList paged) {
return "Rusty ➜ Accessories";
}

@Override
public GUIClickableItem createItemFor(DisplayItem displayItem, int slot, HypixelPlayer player) {
MiscellaneousItems miscItem = displayItem.miscItem;
boolean unlocked = displayItem.unlocked;

if (!unlocked) {
return new GUIClickableItem(slot) {
@Override
public void run(InventoryPreClickEvent e, HypixelPlayer player) {
}

@Override
public ItemStack.Builder getItem(HypixelPlayer player) {
return ItemStackCreator.getStackHead("§c???",
"5359d91277242fc01c309accb87b533f1929be176ecba2cde63bf635e05e699b",
1);
}
};
}

return new GUIClickableItem(slot) {
@Override
public void run(InventoryPreClickEvent e, HypixelPlayer player) {
SkyBlockPlayer skyblockPlayer = (SkyBlockPlayer) player;
SkyBlockItem item = miscItem.item;
int price = miscItem.price;

if (player.getToggles().get(DatapointToggles.Toggles.ToggleType.RUSTY_PURCHASE_CONFIRMATION) && price >= 1_000_000) {
new GUIConfirmBuy(item, price).open(player);
return;
}

if (skyblockPlayer.getCoins() >= price) {
skyblockPlayer.addAndUpdateItem(item);
skyblockPlayer.removeCoins(price);

skyblockPlayer.sendMessage("§aYou bought " + item.getDisplayName() + " §afor §6" + price + " Coins§a!");
} else {
skyblockPlayer.sendMessage("§4You don't have enough coins!");
}
}

@Override
public ItemStack.Builder getItem(HypixelPlayer player) {
ItemStack.Builder itemStack = new NonPlayerItemUpdater(miscItem.item).getUpdatedItem();
List<String> lore = new ArrayList<>(itemStack.build().get(DataComponents.LORE).stream().map(StringUtility::getTextFromComponent).toList());

lore.add("");
lore.add("§7Cost");
lore.add("§6" + StringUtility.commaify(miscItem.price) + " Coins");
lore.add("");
lore.add("§eClick to trade!");

return ItemStackCreator.updateLore(itemStack, lore);
}
};
}

public record DisplayItem(MiscellaneousItems miscItem, boolean unlocked) {
}

private enum MiscellaneousItems {

;

private final SkyBlockItem item;
private final int price;
private final Function<SkyBlockPlayer, Boolean> hasUnlocked;

MiscellaneousItems(SkyBlockItem item, int price, Function<SkyBlockPlayer, Boolean> hasUnlocked) {
this.item = item;
this.price = price;
this.hasUnlocked = hasUnlocked;
}
}
}
Loading