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 @@ -2,39 +2,42 @@

import lombok.Getter;
import net.minestom.server.item.Material;
import net.swofty.type.generic.gui.inventory.item.GUIMaterial;

@Getter
public enum AchievementCategory {
BEDWARS("Bed Wars", "bedwars", Material.RED_BED),
VAMPIREZ("VampireZ", "vampirez", Material.WITHER_SKELETON_SKULL),
SKYWARS("SkyWars", "skywars", Material.ENDER_EYE),
BLITZ_SG("Blitz SG", "blitzsg", Material.DIAMOND_SWORD),
THE_WALLS("The Walls", "walls", Material.SAND),
PAINTBALL("Paintball Warfare", "paintball", Material.SNOWBALL),
ARCADE("Arcade Games", "arcade", Material.SLIME_BALL),
QUAKECRAFT("Quakecraft", "quakecraft", Material.FIREWORK_ROCKET),
MEGA_WALLS("Mega Walls", "megawalls", Material.SOUL_SAND),
TNT_GAMES("The TNT Games", "tntgames", Material.TNT),
ARENA_BRAWL("Arena Brawl", "arena", Material.BLAZE_POWDER),
UHC_CHAMPIONS("UHC Champions", "uhc", Material.GOLDEN_APPLE),
WARLORDS("Warlords", "warlords", Material.STONE_AXE),
TURBO_KART_RACERS("Turbo Kart Racers", "gingerbread", Material.MINECART),
SMASH_HEROES("Smash Heroes", "supersmash", Material.GOLDEN_APPLE),
SPEED_UHC("Speed UHC", "speeduhc", Material.GOLDEN_CARROT),
MURDER_MYSTERY("Murder Mystery", "murdermystery", Material.BOW),
BUILD_BATTLE("Build Battle", "buildbattle", Material.CRAFTING_TABLE),
DUELS("Duels", "duels", Material.FISHING_ROD),
PIT("Pit", "pit", Material.DIRT),
WOOL_GAMES("Wool Games", "woolgames", Material.WHITE_WOOL),
COPS_AND_CRIMS("Cops and Crims", "copsandcrims", Material.IRON_BARS),
GENERAL("General", "general", Material.NETHER_STAR),
SKYBLOCK("SkyBlock", "skyblock", Material.PLAYER_HEAD);
BEDWARS("Bed Wars", "bedwars", new GUIMaterial(Material.RED_BED)),
VAMPIREZ("VampireZ", "vampirez", new GUIMaterial(Material.WITHER_SKELETON_SKULL)),
SKYWARS("SkyWars", "skywars", new GUIMaterial(Material.ENDER_EYE)),
BLITZ_SG("Blitz SG", "blitzsg", new GUIMaterial(Material.DIAMOND_SWORD)),
THE_WALLS("The Walls", "walls", new GUIMaterial(Material.SAND)),
PAINTBALL("Paintball Warfare", "paintball", new GUIMaterial(Material.SNOWBALL)),
ARCADE("Arcade Games", "arcade", new GUIMaterial(Material.SLIME_BALL)),
QUAKECRAFT("Quakecraft", "quakecraft", new GUIMaterial(Material.FIREWORK_ROCKET)),
MEGA_WALLS("Mega Walls", "megawalls", new GUIMaterial(Material.SOUL_SAND)),
TNT_GAMES("The TNT Games", "tntgames", new GUIMaterial(Material.TNT)),
ARENA_BRAWL("Arena Brawl", "arena", new GUIMaterial(Material.BLAZE_POWDER)),
UHC_CHAMPIONS("UHC Champions", "uhc", new GUIMaterial(Material.GOLDEN_APPLE)),
WARLORDS("Warlords", "warlords", new GUIMaterial(Material.STONE_AXE)),
TURBO_KART_RACERS("Turbo Kart Racers", "gingerbread", new GUIMaterial(Material.MINECART)),
SMASH_HEROES("Smash Heroes", "supersmash", new GUIMaterial("d29a9f57267ed342a13e3ad3a240c4c5af5a1a36ab2de0d6c2a31af0e3cdde")),
SPEED_UHC("Speed UHC", "speeduhc", new GUIMaterial(Material.GOLDEN_CARROT)),
MURDER_MYSTERY("Murder Mystery", "murdermystery", new GUIMaterial(Material.BOW)),
BUILD_BATTLE("Build Battle", "buildbattle", new GUIMaterial(Material.CRAFTING_TABLE)),
DUELS("Duels", "duels", new GUIMaterial(Material.FISHING_ROD)),
PIT("Pit", "pit", new GUIMaterial(Material.DIRT)),
WOOL_GAMES("Wool Games", "woolgames", new GUIMaterial(Material.WHITE_WOOL)),
COPS_AND_CRIMS("Cops and Crims", "copsandcrims", new GUIMaterial(Material.IRON_BARS)),
GENERAL("General", "general", new GUIMaterial(Material.NETHER_STAR)),
SKYBLOCK("SkyBlock", "skyblock", new GUIMaterial("d7cc6687423d0570d556ac53e0676cb563bbdd9717cd8269bdebed6f6d4e7bf8")),
HOUSING("Housing", "housing", new GUIMaterial(Material.DARK_OAK_DOOR)),
;

private final String displayName;
private final String configKey;
private final Material material;
private final GUIMaterial material;

AchievementCategory(String displayName, String configKey, Material material) {
AchievementCategory(String displayName, String configKey, GUIMaterial material) {
this.displayName = displayName;
this.configKey = configKey;
this.material = material;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,7 @@ public enum ToggleType {
HAS_SPOKEN_TO_FISH_MERCHANT(false),
HAS_SPOKEN_TO_GOLD_FORGER(false),
HAS_SPOKEN_TO_IRON_FORGER(false),
HAS_SPOKEN_TO_GOLD_BLACKSMITH(false),
HAS_SPOKEN_TO_FARM_MERCHANT(false),
HAS_SPOKEN_TO_ADVENTURER(false),
HAS_SPOKEN_TO_LUMBER_MERCHANT(false),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import net.minestom.server.network.player.ResolvableProfile;
import net.minestom.server.tag.Tag;
import net.swofty.commons.StringUtility;
import net.swofty.type.generic.gui.inventory.item.GUIMaterial;
import org.json.JSONObject;

import java.util.*;
Expand Down Expand Up @@ -295,6 +296,18 @@ public static ItemStack.Builder getStackHead(String name, PlayerSkin skin, int a
.amount(amount));
}

public static ItemStack.Builder getUsingGUIMaterial(String name, GUIMaterial material, int amount, List<String> lore) {
if (material.hasTexture()) {
return ItemStackCreator.getStackHead(name, material.texture(), amount, lore);
} else {
return ItemStackCreator.getStack(name, material.material(), amount, lore);
}
}

public static ItemStack.Builder getUsingGUIMaterial(String name, GUIMaterial material, int amount, String... lore) {
return getUsingGUIMaterial(name, material, amount, Arrays.asList(lore));
}

/**
* Replaces color codes in the given string with Minecraft color codes.
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,16 @@

import net.minestom.server.coordinate.Pos;
import net.minestom.server.entity.VillagerProfession;
import net.swofty.type.generic.data.datapoints.DatapointToggles;
import net.swofty.type.generic.entity.npc.HypixelNPC;
import net.swofty.type.generic.entity.npc.configuration.VillagerConfiguration;
import net.swofty.type.generic.user.HypixelPlayer;
import net.swofty.type.skyblockgeneric.gui.inventories.GUIReforge;
import net.swofty.type.skyblockgeneric.mission.missions.blacksmith.MissionTalkToBlacksmith;
import net.swofty.type.skyblockgeneric.user.SkyBlockPlayer;

import java.util.stream.Stream;

public class VillagerBlacksmith extends HypixelNPC {
public VillagerBlacksmith() {
super(new VillagerConfiguration() {
Expand Down Expand Up @@ -36,6 +40,25 @@ public VillagerProfession profession() {
@Override
public void onClick(NPCInteractEvent e) {
SkyBlockPlayer player = (SkyBlockPlayer) e.player();
new GUIReforge().open(player);
if (!player.getToggles().get(DatapointToggles.Toggles.ToggleType.HAS_SPOKEN_TO_GOLD_BLACKSMITH)) {
setDialogue(player, "initial-hello").thenRun(() -> {
player.getToggles().set(DatapointToggles.Toggles.ToggleType.HAS_SPOKEN_TO_GOLD_BLACKSMITH, true);
new GUIReforge().open(player);
});
} else {
new GUIReforge().open(player);
}
}

@Override
public DialogueSet[] dialogues(HypixelPlayer player) {
return Stream.of(
DialogueSet.builder()
.key("initial-hello").lines(new String[]{
"I'm a friend of Blacksmith in the §bVillage",
"My name?",
"Blacksmith"
}).build()
).toArray(DialogueSet[]::new);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -24,32 +24,31 @@ public void onOpen(InventoryGUIOpenEvent e) {
HypixelPlayer player = e.player();
PlayerAchievementHandler handler = player.getAchievementHandler();

set(createCategoryItem(1, AchievementCategory.GENERAL, Material.BOOK, handler));
set(createCategoryItem(2, "Housing", Material.DARK_OAK_DOOR, handler, AchievementCategory.GENERAL));
set(createCategoryItem(4, AchievementCategory.ARCADE, Material.SLIME_BALL, handler));
set(createCategoryItem(1, AchievementCategory.GENERAL, handler));
set(createCategoryItem(2, AchievementCategory.HOUSING, handler));
set(createCategoryItem(3, AchievementCategory.SKYBLOCK, handler));
set(createCategoryItem(4, AchievementCategory.ARCADE, handler));
set(createClassicGamesItem(5, handler));
set(createSeasonalItem(6, handler));
set(createLegacyItem(7, handler));

set(createCategoryItem(3, AchievementCategory.SKYBLOCK, Material.PLAYER_HEAD, handler));
set(createCategoryItem(19, AchievementCategory.TNT_GAMES, handler));
set(createCategoryItem(20, AchievementCategory.BLITZ_SG, handler));
set(createCategoryItem(21, AchievementCategory.MEGA_WALLS, handler));
set(createCategoryItem(22, AchievementCategory.COPS_AND_CRIMS, handler));
set(createCategoryItem(23, AchievementCategory.UHC_CHAMPIONS, handler));
set(createCategoryItem(24, AchievementCategory.WARLORDS, handler));
set(createCategoryItem(25, AchievementCategory.SKYWARS, handler));

set(createCategoryItem(19, AchievementCategory.TNT_GAMES, Material.TNT, handler));
set(createCategoryItem(20, AchievementCategory.BLITZ_SG, Material.DIAMOND_SWORD, handler));
set(createCategoryItem(21, AchievementCategory.MEGA_WALLS, Material.SOUL_SAND, handler));
set(createCategoryItem(22, AchievementCategory.COPS_AND_CRIMS, Material.IRON_BARS, handler));
set(createCategoryItem(23, AchievementCategory.UHC_CHAMPIONS, Material.GOLDEN_APPLE, handler));
set(createCategoryItem(24, AchievementCategory.WARLORDS, Material.STONE_AXE, handler));
set(createCategoryItem(25, AchievementCategory.SKYWARS, Material.ENDER_EYE, handler));
set(createCategoryItem(28, AchievementCategory.SMASH_HEROES, handler));
set(createCategoryItem(29, AchievementCategory.SPEED_UHC, handler));
set(createCategoryItem(30, AchievementCategory.BEDWARS, handler));
set(createCategoryItem(31, AchievementCategory.MURDER_MYSTERY, handler));
set(createCategoryItem(32, AchievementCategory.BUILD_BATTLE, handler));
set(createCategoryItem(33, AchievementCategory.DUELS, handler));
set(createCategoryItem(34, AchievementCategory.PIT, handler));

set(createSmashHeroesItem(28, handler));
set(createCategoryItem(29, AchievementCategory.SPEED_UHC, Material.GOLDEN_CARROT, handler));
set(createCategoryItem(30, AchievementCategory.BEDWARS, Material.RED_BED, handler));
set(createCategoryItem(31, AchievementCategory.MURDER_MYSTERY, Material.BOW, handler));
set(createCategoryItem(32, AchievementCategory.BUILD_BATTLE, Material.CRAFTING_TABLE, handler));
set(createCategoryItem(33, AchievementCategory.DUELS, Material.FISHING_ROD, handler));
set(createCategoryItem(34, AchievementCategory.PIT, Material.DIRT, handler));

set(createCategoryItem(40, AchievementCategory.WOOL_GAMES, Material.WHITE_WOOL, handler));
set(createCategoryItem(40, AchievementCategory.WOOL_GAMES, handler));

set(new GUIItem(45) {
@Override
Expand Down Expand Up @@ -154,7 +153,7 @@ public ItemStack.Builder getItem(HypixelPlayer player) {
updateItemStacks(getInventory(), player);
}

private GUIClickableItem createCategoryItem(int slot, AchievementCategory category, Material material, PlayerAchievementHandler handler) {
private GUIClickableItem createCategoryItem(int slot, AchievementCategory category, PlayerAchievementHandler handler) {
return new GUIClickableItem(slot) {
@Override
public ItemStack.Builder getItem(HypixelPlayer player) {
Expand All @@ -165,9 +164,9 @@ public ItemStack.Builder getItem(HypixelPlayer player) {
double unlockedPercent = total > 0 ? (unlocked * 100.0 / total) : 0;
double pointsPercent = maxPoints > 0 ? (points * 100.0 / maxPoints) : 0;

return ItemStackCreator.getStack(
return ItemStackCreator.getUsingGUIMaterial(
"§a" + category.getDisplayName() + " Achievements",
material,
category.getMaterial(),
1,
"§7Unlocked: §b" + unlocked + "§7/§b" + total + " §8(" + (int) unlockedPercent + "%)",
"§7Points: §e" + points + "§7/§e" + maxPoints + " §8(" + (int) pointsPercent + "%)",
Expand All @@ -183,35 +182,6 @@ public void run(InventoryPreClickEvent e, HypixelPlayer player) {
};
}

private GUIClickableItem createCategoryItem(int slot, String name, Material material, PlayerAchievementHandler handler, AchievementCategory fallbackCategory) {
return new GUIClickableItem(slot) {
@Override
public ItemStack.Builder getItem(HypixelPlayer player) {
int unlocked = handler.getUnlockedCount(fallbackCategory);
int total = AchievementRegistry.getByCategory(fallbackCategory).size();
int points = handler.getTotalPoints(fallbackCategory);
int maxPoints = AchievementRegistry.getTotalPoints(fallbackCategory);
double unlockedPercent = total > 0 ? (unlocked * 100.0 / total) : 0;
double pointsPercent = maxPoints > 0 ? (points * 100.0 / maxPoints) : 0;

return ItemStackCreator.getStack(
"§a" + name + " Achievements",
material,
1,
"§7Unlocked: §b" + unlocked + "§7/§b" + total + " §8(" + (int) unlockedPercent + "%)",
"§7Points: §e" + points + "§7/§e" + maxPoints + " §8(" + (int) pointsPercent + "%)",
"",
"§eClick to view achievements!"
);
}

@Override
public void run(InventoryPreClickEvent e, HypixelPlayer player) {
new GUIGameAchievements(fallbackCategory).open(player);
}
};
}

private GUIItem createClassicGamesItem(int slot, PlayerAchievementHandler handler) {
return new GUIItem(slot) {
@Override
Expand Down Expand Up @@ -277,35 +247,6 @@ public ItemStack.Builder getItem(HypixelPlayer player) {
};
}

private GUIClickableItem createSmashHeroesItem(int slot, PlayerAchievementHandler handler) {
return new GUIClickableItem(slot) {
@Override
public ItemStack.Builder getItem(HypixelPlayer player) {
int unlocked = handler.getUnlockedCount(AchievementCategory.SMASH_HEROES);
int total = AchievementRegistry.getByCategory(AchievementCategory.SMASH_HEROES).size();
int points = handler.getTotalPoints(AchievementCategory.SMASH_HEROES);
int maxPoints = AchievementRegistry.getTotalPoints(AchievementCategory.SMASH_HEROES);
double unlockedPercent = total > 0 ? (unlocked * 100.0 / total) : 0;
double pointsPercent = maxPoints > 0 ? (points * 100.0 / maxPoints) : 0;

return ItemStackCreator.getStackHead(
"§aSmash Heroes Achievements",
"d29a9f57267ed342a13e3ad3a240c4c5af5a1a36ab2de0d6c2a31af0e3cdde",
1,
"§7Unlocked: §b" + unlocked + "§7/§b" + total + " §8(" + (int) unlockedPercent + "%)",
"§7Points: §e" + points + "§7/§e" + maxPoints + " §8(" + (int) pointsPercent + "%)",
"",
"§eClick to view achievements!"
);
}

@Override
public void run(InventoryPreClickEvent e, HypixelPlayer player) {
new GUIGameAchievements(AchievementCategory.SMASH_HEROES).open(player);
}
};
}

@Override
public boolean allowHotkeying() {
return false;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,7 @@ public void run(InventoryPreClickEvent e, HypixelPlayer player) {
set(new GUIItem(49) {
@Override
public ItemStack.Builder getItem(HypixelPlayer player) {
return ItemStackCreator.getStack(
return ItemStackCreator.getUsingGUIMaterial(
"§aChallenge Achievements",
category.getMaterial(),
1,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,7 @@ public void run(InventoryPreClickEvent e, HypixelPlayer player) {
set(new GUIItem(31) {
@Override
public ItemStack.Builder getItem(HypixelPlayer player) {
return ItemStackCreator.getStack(
return ItemStackCreator.getUsingGUIMaterial(
"§aTotal Completion",
category.getMaterial(),
1,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ public void onOpen(InventoryGUIOpenEvent e) {
set(new GUIItem(4) {
@Override
public ItemStack.Builder getItem(HypixelPlayer player) {
return ItemStackCreator.getStack(
return ItemStackCreator.getUsingGUIMaterial(
"§a" + category.getDisplayName() + " Quests & Challenges",
category.getMaterial(),
1,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@ public void run(InventoryPreClickEvent e, HypixelPlayer player) {
set(new GUIItem(49) {
@Override
public ItemStack.Builder getItem(HypixelPlayer player) {
return ItemStackCreator.getStack(
return ItemStackCreator.getUsingGUIMaterial(
"§aTotal Completion",
category.getMaterial(),
1,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ public void run(InventoryPreClickEvent e, HypixelPlayer player) {
set(new GUIItem(49) {
@Override
public ItemStack.Builder getItem(HypixelPlayer player) {
return ItemStackCreator.getStack(
return ItemStackCreator.getUsingGUIMaterial(
"§aTiered Achievements",
category.getMaterial(),
1,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -98,11 +98,8 @@ public void run(InventoryPreClickEvent e, HypixelPlayer p) {
public ItemStack.Builder getItem(HypixelPlayer p) {
SkyBlockPlayer player = (SkyBlockPlayer) p;
GUIMaterial guiMaterial = bestiaryRegion.guiMaterial;
if (guiMaterial.hasTexture()) {
return ItemStackCreator.getStackHead(bestiaryRegion.regionName, guiMaterial.texture(), 1, bestiaryRegion.lore);
} else {
return ItemStackCreator.getStack(bestiaryRegion.regionName, guiMaterial.material(), 1, bestiaryRegion.lore);
}

return ItemStackCreator.getUsingGUIMaterial(bestiaryRegion.regionName, guiMaterial, 1, bestiaryRegion.lore);
}
});
index++;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -131,13 +131,8 @@ public ItemStack.Builder getItem(HypixelPlayer p) {

lore.add("§eClick to view!");

if (guiMaterial.hasTexture()) {
return ItemStackCreator.getStackHead("§a" + bestiaryEntry.getName() + " " + StringUtility.getAsRomanNumeral(tier),
guiMaterial.texture(), 1, lore);
} else {
return ItemStackCreator.getStack("§a" + bestiaryEntry.getName() + " " + StringUtility.getAsRomanNumeral(tier),
guiMaterial.material(), 1, lore);
}
return ItemStackCreator.getUsingGUIMaterial("§a" + bestiaryEntry.getName() + " " + StringUtility.getAsRomanNumeral(tier),
guiMaterial, 1, lore);
}
});
} else {
Expand Down
Loading