diff --git a/type.dwarvenmines/src/main/java/net/swofty/type/dwarvenmines/TypeDwarvenMinesLoader.java b/type.dwarvenmines/src/main/java/net/swofty/type/dwarvenmines/TypeDwarvenMinesLoader.java index 92fd124f4..381dfc4f5 100644 --- a/type.dwarvenmines/src/main/java/net/swofty/type/dwarvenmines/TypeDwarvenMinesLoader.java +++ b/type.dwarvenmines/src/main/java/net/swofty/type/dwarvenmines/TypeDwarvenMinesLoader.java @@ -1,7 +1,10 @@ package net.swofty.type.dwarvenmines; +import net.kyori.adventure.key.Key; import net.minestom.server.MinecraftServer; import net.minestom.server.coordinate.Pos; +import net.minestom.server.registry.RegistryKey; +import net.minestom.server.world.DimensionType; import net.swofty.commons.CustomWorlds; import net.swofty.commons.ServerType; import net.swofty.commons.ServiceType; @@ -39,15 +42,13 @@ public void afterInitialize(MinecraftServer server) { } - @Override - public LoaderValues getLoaderValues() { - return new LoaderValues( - (type) -> switch (type) { - default -> new Pos(-85, 200, -123, -90, 0); - }, // Spawn position - true // Announce death messages - ); - } + @Override + public LoaderValues getLoaderValues() { + return new LoaderValues( + (_) -> new Pos(-85, 200, -123, -90, 0), + true + ); + } public TablistManager getTablistManager() { return new TablistManager() { @@ -103,4 +104,13 @@ public List getRequiredServices() { public @Nullable CustomWorlds getMainInstance() { return CustomWorlds.SKYBLOCK_DWARVEN_MINES; } + + @Override + public @Nullable RegistryKey getDimensionType() { + return MinecraftServer.getDimensionTypeRegistry().register( + Key.key("skyblock:dwarven_mines"), + DimensionType.builder() + .ambientLight(0.4f) + .build()); + } } diff --git a/type.dwarvenmines/src/main/java/net/swofty/type/dwarvenmines/gui/GUIGuide.java b/type.dwarvenmines/src/main/java/net/swofty/type/dwarvenmines/gui/GUIGuide.java new file mode 100644 index 000000000..53cd10e24 --- /dev/null +++ b/type.dwarvenmines/src/main/java/net/swofty/type/dwarvenmines/gui/GUIGuide.java @@ -0,0 +1,191 @@ +package net.swofty.type.dwarvenmines.gui; + +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.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.gui.inventory.item.GUIItem; +import net.swofty.type.generic.user.HypixelPlayer; + +public class GUIGuide extends HypixelInventoryGUI { + + public GUIGuide() { + super("Guide", InventoryType.CHEST_6_ROW); + } + + @Override + public void onOpen(InventoryGUIOpenEvent e) { + fill(FILLER_ITEM); + set(new GUIItem(11) { + @Override + public ItemStack.Builder getItem(HypixelPlayer player) { + return ItemStackCreator.getStack( + "§aMithril §8and §9᠅ Powder", + Material.PRISMARINE_CRYSTALS, + 1, + "§8 ■ §7All of the veins on this island are", + " §7mineable.", + "§8 ■ §7The center of §fMithril §7veins are more", + " §7pure and thus drop more Mithril,", + " §7while the outer edges of the vein", + " §7drop the least!", + "§8 ■ §7Mining Mithril is the main source of", + " §7gaining §2Mithril Powder§7, which is useful", + " §7in the §5Heart of the Mountain§7." + ); + } + }); + set(new GUIItem(13) { + @Override + public ItemStack.Builder getItem(HypixelPlayer player) { + return ItemStackCreator.getStack( + "§6Commissions", + Material.WRITABLE_BOOK, + 1, + "§8 ■ §7The §6§lKing §7can be found in the §bRoyal", + " §bPalace§7. He's pretty famous around", + " §7here.", + "§8 ■ §7If you do §9Commissions §7for the King", + " §7you will be rewarded with §5HOTM Exp§7!", + "§8 ■ §7You can always see your active", + " §7Commissions in the §atab list§7.", + "§8 ■ §7When you are done with a Commission,", + " §7talk to the King to get new ones!", + "§8 ■ §7Your first §a4 §7Commissions of the day", + " §7reward a lot more HOTM Exp!" + ); + } + }); + set(new GUIItem(15) { + @Override + public ItemStack.Builder getItem(HypixelPlayer player) { + return ItemStackCreator.getStackHead( + "§5Heart of the Mountain", + "86f06eaa3004aeed09b3d5b45d976de584e691c0e9cade133635de93d23b9edb", + 1, + "§8 ■ §7You can level up your §5Heart of the", + " §5Mountain §7by doing §9Commissions§7.", + "§8 ■ §7Spend your §5Token of the Mountain", + " §7wisely to unlock §aPerks §7and §aPickaxe", + " §aAbilities§7!", + "§8 ■ §7Most of these Perks can be", + " §7upgraded using §9Powder§7! Some are", + " §7only one-time unlocks.", + "§8 ■ §7If you are not happy with your", + " §7setup, you can reset your HOTM for", + " §7a price." + ); + } + }); + set(new GUIItem(28) { + @Override + public ItemStack.Builder getItem(HypixelPlayer player) { + return ItemStackCreator.getStack( + "§aMining", + Material.DIAMOND_PICKAXE, + 1, + "§8 ■ §7Your §6⸕ Mining Speed §7stat increases", + " §7the speed at which you can mine.", + " §7Increase your §6⸕ Mining Speed §7by", + " §7using better pickaxes or §aDrills§7.", + "§8 ■ §7Certain ores are tougher, requiring", + " §7pickaxes with a higher §aBreaking", + " §aPower §7to mine!", + "§8 ■ §7Talk to §5Bubu §7at the nearby shop to", + " §7buy your first §aMithril Pickaxe§7!", + "§8 ■ §7If you want better pickaxes with", + " §7higher §6⸕ Mining Speed§7, you will need", + " §7to unlock the §6Forge §7down the road." + ); + } + }); + set(new GUIItem(30) { + @Override + public ItemStack.Builder getItem(HypixelPlayer player) { + return ItemStackCreator.getStack( + "§6The Forge", + Material.FURNACE, + 1, + "§8 ■ §7The §6Forge §7allows you to §asmelt §7and", + " §acast §7higher quality items.", + "§8 ■ §7You start with §a2 §7Forge slots and can", + " §7currently unlock up to §a7§7!", + "§8 ■ §7Forging takes time. You'll need to", + " §7plan things out to get the most", + " §7efficiency out of it.", + "§8 ■ §7You can unlock new Forging options", + " §7- including more slots and faster", + " §7speeds - by leveling up your §5HOTM." + ); + } + }); + set(new GUIItem(32) { + @Override + public ItemStack.Builder getItem(HypixelPlayer player) { + return ItemStackCreator.getStack( + "§bDwarven Rail Co.", + Material.MINECART, + 1, + "§8 ■ §7The brand new fast travel system", + " §7that spans the whole of the §6Dwarven", + " §6Mines§7.", + "§8 ■ §7Many §bTicket Masters §7now dot the", + " §7cave and will offer to take you to", + " §7different §astations §7in return for", + " §6coins§7.", + "§8 ■ §7The cost of a §2journey §7will vary", + " §7depending on how far away you are", + " §7from the §astation§7.", + "§8 ■ §7Once you have paid a §8Minecart §7will", + " §7appear on the tracks to take you to", + " §7your destination's §astation§7.", + "§8 ■ §7But be careful, the §6Dwarves §7run a", + " §7tight schedule and if you miss your", + " §8Minecart §7it will leave without you. Oh", + " §7and §cno refunds§7!" + ); + } + }); + set(new GUIItem(34) { + @Override + public ItemStack.Builder getItem(HypixelPlayer player) { + return ItemStackCreator.getStackHead( + "§5Crystal Hollows", + "d159b03243be18a14f3eae763c4565c78f1f339a8742d26fde541be59b7de07", + 1, + "§8 ■ §7The entrance to the §5Crystal Hollows", + " §7is a newly excavated area at the", + " §7back of the §bDwarven Village", + " §7accessible only via §8Minecart§7.", + "§8 ■ §7Speak to §5Gwendolyn §7next to the", + " §7entrance to gain access to the cave", + " §7system!", + "§8 ■ §dGemstones §7are a precious resource", + " §7in the §5Crystal Hollows §7so be sure to", + " §7be on the lookout for them whilst", + " §7visiting to §bupgrade §7your gear at", + " §aGeo's Shop§7!", + "§8 ■ §7Make sure to take lots of §6Torches", + " §7and watch out for §9cave-ins §7- they", + " §7are incredibly §cdangerous §7and tend", + " §7to happen every few hours." + ); + } + }); + set(GUIClickableItem.getCloseItem(49)); + updateItemStacks(getInventory(), getPlayer()); + } + + @Override + public boolean allowHotkeying() { + return false; + } + + @Override + public void onBottomClick(InventoryPreClickEvent e) { + e.setCancelled(true); + } +} diff --git a/type.dwarvenmines/src/main/java/net/swofty/type/dwarvenmines/gui/fragilis/GUIBlocks.java b/type.dwarvenmines/src/main/java/net/swofty/type/dwarvenmines/gui/fragilis/GUIBlocks.java new file mode 100644 index 000000000..629506164 --- /dev/null +++ b/type.dwarvenmines/src/main/java/net/swofty/type/dwarvenmines/gui/fragilis/GUIBlocks.java @@ -0,0 +1,189 @@ +package net.swofty.type.dwarvenmines.gui.fragilis; + +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.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.gui.inventory.item.GUIItem; +import net.swofty.type.generic.user.HypixelPlayer; + +// TODO: hardcoded +public class GUIBlocks extends HypixelInventoryGUI { + + public GUIBlocks() { + super("Blocks", InventoryType.CHEST_6_ROW); + } + + @Override + public void onOpen(InventoryGUIOpenEvent e) { + border(FILLER_ITEM); + set(new GUIItem(4) { + @Override + public ItemStack.Builder getItem(HypixelPlayer player) { + return ItemStackCreator.getStack( + "§9Blocks", + Material.BOOK, + 1, + "§8Block Classification", + "", + "§7These blocks are affected by: ", + "§8 - §6☘ Block Fortune", + "§8 - §6☘ Mining Fortune", + "§8 - §e▚ Mining Spread" + ); + } + }); + set(new GUIItem(10) { + @Override + public ItemStack.Builder getItem(HypixelPlayer player) { + return ItemStackCreator.getStack( + "§9Cobblestone", + Material.COBBLESTONE, + 1, + "§8Block" + ); + } + }); + set(new GUIItem(11) { + @Override + public ItemStack.Builder getItem(HypixelPlayer player) { + return ItemStackCreator.getStack( + "§9Stone", + Material.STONE, + 1, + "§8Block" + ); + } + }); + set(new GUIItem(12) { + @Override + public ItemStack.Builder getItem(HypixelPlayer player) { + return ItemStackCreator.getStack( + "§9Sand", + Material.SAND, + 1, + "§8Block" + ); + } + }); + set(new GUIItem(13) { + @Override + public ItemStack.Builder getItem(HypixelPlayer player) { + return ItemStackCreator.getStack( + "§9Gravel", + Material.GRAVEL, + 1, + "§8Block" + ); + } + }); + set(new GUIItem(14) { + @Override + public ItemStack.Builder getItem(HypixelPlayer player) { + return ItemStackCreator.getStack( + "§9Ice", + Material.ICE, + 1, + "§8Block" + ); + } + }); + set(new GUIItem(15) { + @Override + public ItemStack.Builder getItem(HypixelPlayer player) { + return ItemStackCreator.getStack( + "§9End Stone", + Material.END_STONE, + 1, + "§8Block" + ); + } + }); + set(new GUIItem(16) { + @Override + public ItemStack.Builder getItem(HypixelPlayer player) { + return ItemStackCreator.getStack( + "§9Obsidian", + Material.OBSIDIAN, + 1, + "§8Block" + ); + } + }); + set(new GUIItem(19) { + @Override + public ItemStack.Builder getItem(HypixelPlayer player) { + return ItemStackCreator.getStack( + "§9Netherrack", + Material.NETHERRACK, + 1, + "§8Block" + ); + } + }); + set(new GUIItem(20) { + @Override + public ItemStack.Builder getItem(HypixelPlayer player) { + return ItemStackCreator.getStack( + "§9Glowstone", + Material.GLOWSTONE, + 1, + "§8Block" + ); + } + }); + set(new GUIItem(21) { + @Override + public ItemStack.Builder getItem(HypixelPlayer player) { + return ItemStackCreator.getStack( + "§9Red Sand", + Material.RED_SAND, + 1, + "§8Block" + ); + } + }); + set(new GUIItem(22) { + @Override + public ItemStack.Builder getItem(HypixelPlayer player) { + return ItemStackCreator.getStack( + "§9Mycelium", + Material.MYCELIUM, + 1, + "§8Block" + ); + } + }); + set(new GUIItem(23) { + @Override + public ItemStack.Builder getItem(HypixelPlayer player) { + return ItemStackCreator.getStack( + "§9Hard Stone", + Material.STONE, + 1, + "§8Block", + "", + "§7Properties", + "§7 Breaking Power: §24", + "§7 Block Strength: §e50" + ); + } + }); + set(GUIClickableItem.getGoBackItem(48, new GUIHandyBlockGuide())); + set(GUIClickableItem.getCloseItem(49)); + updateItemStacks(getInventory(), getPlayer()); + } + + @Override + public boolean allowHotkeying() { + return false; + } + + @Override + public void onBottomClick(InventoryPreClickEvent e) { + e.setCancelled(true); + } +} diff --git a/type.dwarvenmines/src/main/java/net/swofty/type/dwarvenmines/gui/fragilis/GUIDwarvenMetals.java b/type.dwarvenmines/src/main/java/net/swofty/type/dwarvenmines/gui/fragilis/GUIDwarvenMetals.java new file mode 100644 index 000000000..d4315e98a --- /dev/null +++ b/type.dwarvenmines/src/main/java/net/swofty/type/dwarvenmines/gui/fragilis/GUIDwarvenMetals.java @@ -0,0 +1,128 @@ +package net.swofty.type.dwarvenmines.gui.fragilis; + +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.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.gui.inventory.item.GUIItem; +import net.swofty.type.generic.user.HypixelPlayer; + +// TODO: hardcoded +public class GUIDwarvenMetals extends HypixelInventoryGUI { + + public GUIDwarvenMetals() { + super("Dwarven Metals", InventoryType.CHEST_6_ROW); + } + + @Override + public void onOpen(InventoryGUIOpenEvent e) { + border(FILLER_ITEM); + set(new GUIItem(4) { + @Override + public ItemStack.Builder getItem(HypixelPlayer player) { + return ItemStackCreator.getStack( + "§aDwarven Metals", + Material.BOOK, + 1, + "§8Block Classification", + "", + "§7These blocks are affected by: ", + "§8 - §6☘ Dwarven Metal Fortune", + "§8 - §6☘ Mining Fortune", + "§8 - §e▚ Mining Spread" + ); + } + }); + set(new GUIItem(10) { + @Override + public ItemStack.Builder getItem(HypixelPlayer player) { + return ItemStackCreator.getStack( + "§aMithril Ore", + Material.PRISMARINE_BRICKS, + 1, + "§8Dwarven Metal", + "", + "§7Properties", + "§7 Breaking Power: §24", + "§7 Block Strength: §e800" + ); + } + }); + set(new GUIItem(11) { + @Override + public ItemStack.Builder getItem(HypixelPlayer player) { + return ItemStackCreator.getStack( + "§aTitanium Ore", + Material.POLISHED_DIORITE, + 1, + "§8Dwarven Metal", + "", + "§7Properties", + "§7 Breaking Power: §25", + "§7 Block Strength: §e2,000" + ); + } + }); + set(new GUIItem(12) { + @Override + public ItemStack.Builder getItem(HypixelPlayer player) { + return ItemStackCreator.getStack( + "§aUmber", + Material.RED_SANDSTONE, + 1, + "§8Dwarven Metal", + "", + "§7Properties", + "§7 Breaking Power: §29", + "§7 Block Strength: §e5,600" + ); + } + }); + set(new GUIItem(13) { + @Override + public ItemStack.Builder getItem(HypixelPlayer player) { + return ItemStackCreator.getStack( + "§aTungsten", + Material.CLAY, + 1, + "§8Dwarven Metal", + "", + "§7Properties", + "§7 Breaking Power: §29", + "§7 Block Strength: §e5,600" + ); + } + }); + set(new GUIItem(14) { + @Override + public ItemStack.Builder getItem(HypixelPlayer player) { + return ItemStackCreator.getStack( + "§aGlacite", + Material.PACKED_ICE, + 1, + "§8Dwarven Metal", + "", + "§7Properties", + "§7 Breaking Power: §29", + "§7 Block Strength: §e6,000" + ); + } + }); + set(GUIClickableItem.getGoBackItem(48, new GUIHandyBlockGuide())); + set(GUIClickableItem.getCloseItem(49)); + updateItemStacks(getInventory(), getPlayer()); + } + + @Override + public boolean allowHotkeying() { + return false; + } + + @Override + public void onBottomClick(InventoryPreClickEvent e) { + e.setCancelled(true); + } +} diff --git a/type.dwarvenmines/src/main/java/net/swofty/type/dwarvenmines/gui/fragilis/GUIGemstones.java b/type.dwarvenmines/src/main/java/net/swofty/type/dwarvenmines/gui/fragilis/GUIGemstones.java new file mode 100644 index 000000000..7d8d77ab0 --- /dev/null +++ b/type.dwarvenmines/src/main/java/net/swofty/type/dwarvenmines/gui/fragilis/GUIGemstones.java @@ -0,0 +1,219 @@ +package net.swofty.type.dwarvenmines.gui.fragilis; + +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.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.gui.inventory.item.GUIItem; +import net.swofty.type.generic.user.HypixelPlayer; + +// TODO: hardcoded +public class GUIGemstones extends HypixelInventoryGUI { + + public GUIGemstones() { + super("Gemstones", InventoryType.CHEST_6_ROW); + } + + @Override + public void onOpen(InventoryGUIOpenEvent e) { + border(FILLER_ITEM); + set(new GUIItem(4) { + @Override + public ItemStack.Builder getItem(HypixelPlayer player) { + return ItemStackCreator.getStack( + "§dGemstones", + Material.BOOK, + 1, + "§8Block Classification", + "", + "§7These blocks are affected by: ", + "§8 - §6☘ Gemstone Fortune", + "§8 - §6☘ Mining Fortune", + "§8 - §e▚ Gemstone Spread", + "§8 - §5✧ Pristine" + ); + } + }); + set(new GUIItem(10) { + @Override + public ItemStack.Builder getItem(HypixelPlayer player) { + return ItemStackCreator.getStack( + "§dRuby Gemstone", + Material.RED_STAINED_GLASS, + 1, + "§8Gemstone", + "", + "§7Properties", + "§7 Breaking Power: §26", + "§7 Block Strength: §e2,300" + ); + } + }); + set(new GUIItem(11) { + @Override + public ItemStack.Builder getItem(HypixelPlayer player) { + return ItemStackCreator.getStack( + "§dAmber Gemstone", + Material.ORANGE_STAINED_GLASS, + 1, + "§8Gemstone", + "", + "§7Properties", + "§7 Breaking Power: §27", + "§7 Block Strength: §e3,000" + ); + } + }); + set(new GUIItem(12) { + @Override + public ItemStack.Builder getItem(HypixelPlayer player) { + return ItemStackCreator.getStack( + "§dSapphire Gemstone", + Material.LIGHT_BLUE_STAINED_GLASS, + 1, + "§8Gemstone", + "", + "§7Properties", + "§7 Breaking Power: §27", + "§7 Block Strength: §e3,000" + ); + } + }); + set(new GUIItem(13) { + @Override + public ItemStack.Builder getItem(HypixelPlayer player) { + return ItemStackCreator.getStack( + "§dJade Gemstone", + Material.LIME_STAINED_GLASS, + 1, + "§8Gemstone", + "", + "§7Properties", + "§7 Breaking Power: §27", + "§7 Block Strength: §e3,000" + ); + } + }); + set(new GUIItem(14) { + @Override + public ItemStack.Builder getItem(HypixelPlayer player) { + return ItemStackCreator.getStack( + "§dAmethyst Gemstone", + Material.PURPLE_STAINED_GLASS, + 1, + "§8Gemstone", + "", + "§7Properties", + "§7 Breaking Power: §27", + "§7 Block Strength: §e3,000" + ); + } + }); + set(new GUIItem(15) { + @Override + public ItemStack.Builder getItem(HypixelPlayer player) { + return ItemStackCreator.getStack( + "§dOpal Gemstone", + Material.WHITE_STAINED_GLASS, + 1, + "§8Gemstone", + "", + "§7Properties", + "§7 Breaking Power: §27", + "§7 Block Strength: §e3,000" + ); + } + }); + set(new GUIItem(16) { + @Override + public ItemStack.Builder getItem(HypixelPlayer player) { + return ItemStackCreator.getStack( + "§dTopaz Gemstone", + Material.YELLOW_STAINED_GLASS, + 1, + "§8Gemstone", + "", + "§7Properties", + "§7 Breaking Power: §28", + "§7 Block Strength: §e3,800" + ); + } + }); + set(new GUIItem(19) { + @Override + public ItemStack.Builder getItem(HypixelPlayer player) { + return ItemStackCreator.getStack( + "§dJasper Gemstone", + Material.MAGENTA_STAINED_GLASS, + 1, + "§8Gemstone", + "", + "§7Properties", + "§7 Breaking Power: §29", + "§7 Block Strength: §e4,800" + ); + } + }); + set(new GUIItem(21) { + @Override + public ItemStack.Builder getItem(HypixelPlayer player) { + return ItemStackCreator.getStack( + "§dAquamarine Gemstone", + Material.BLUE_STAINED_GLASS, + 1, + "§8Gemstone", + "", + "§7Properties", + "§7 Breaking Power: §29", + "§7 Block Strength: §e5,200" + ); + } + }); + set(new GUIItem(22) { + @Override + public ItemStack.Builder getItem(HypixelPlayer player) { + return ItemStackCreator.getStack( + "§dCitrine Gemstone", + Material.BROWN_STAINED_GLASS, + 1, + "§8Gemstone", + "", + "§7Properties", + "§7 Breaking Power: §29", + "§7 Block Strength: §e5,200" + ); + } + }); + set(new GUIItem(23) { + @Override + public ItemStack.Builder getItem(HypixelPlayer player) { + return ItemStackCreator.getStack( + "§dPeridot Gemstone", + Material.GREEN_STAINED_GLASS, + 1, + "§8Gemstone", + "", + "§7Properties", + "§7 Breaking Power: §29", + "§7 Block Strength: §e5,200" + ); + } + }); + set(GUIClickableItem.getGoBackItem(48, new GUIHandyBlockGuide())); + set(GUIClickableItem.getCloseItem(49)); + updateItemStacks(getInventory(), getPlayer()); + } + + @Override + public boolean allowHotkeying() { + return false; + } + + @Override + public void onBottomClick(InventoryPreClickEvent e) { + e.setCancelled(true); + } +} diff --git a/type.dwarvenmines/src/main/java/net/swofty/type/dwarvenmines/gui/fragilis/GUIHandyBlockGuide.java b/type.dwarvenmines/src/main/java/net/swofty/type/dwarvenmines/gui/fragilis/GUIHandyBlockGuide.java new file mode 100644 index 000000000..5499a029e --- /dev/null +++ b/type.dwarvenmines/src/main/java/net/swofty/type/dwarvenmines/gui/fragilis/GUIHandyBlockGuide.java @@ -0,0 +1,143 @@ +package net.swofty.type.dwarvenmines.gui.fragilis; + +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.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.gui.inventory.item.GUIItem; +import net.swofty.type.generic.user.HypixelPlayer; + +public class GUIHandyBlockGuide extends HypixelInventoryGUI { + + public GUIHandyBlockGuide() { + super("Handy Block Guide", InventoryType.CHEST_5_ROW); + } + + @Override + public void onOpen(InventoryGUIOpenEvent e) { + fill(FILLER_ITEM); + set(new GUIItem(4) { + @Override + public ItemStack.Builder getItem(HypixelPlayer player) { + return ItemStackCreator.getStack( + "§2Handy Block Guide", + Material.BOOK, + 1, + "§7View a list of important mineable blocks:", + "§8 - §6Ores", + "§8 - §9Blocks", + "§8 - §aDwarven Metals", + "§8 - §dGemstones" + ); + } + }); + set(new GUIClickableItem(19) { + @Override + public void run(InventoryPreClickEvent e, HypixelPlayer player) { + new GUIOres().open(player); + } + + @Override + public ItemStack.Builder getItem(HypixelPlayer player) { + return ItemStackCreator.getStack( + "§6Ores", + Material.GOLD_ORE, + 1, + "§8Block Classification", + "", + "§7These blocks are affected by: ", + "§8 - §6☘ Ore Fortune", + "§8 - §6☘ Mining Fortune", + "§8 - §e▚ Mining Spread", + "", + "§eClick to view!" + ); + } + }); + set(new GUIClickableItem(21) { + @Override + public void run(InventoryPreClickEvent e, HypixelPlayer player) { + new GUIBlocks().open(player); + } + + @Override + public ItemStack.Builder getItem(HypixelPlayer player) { + return ItemStackCreator.getStack( + "§9Blocks", + Material.COBBLESTONE, + 1, + "§8Block Classification", + "", + "§7These blocks are affected by: ", + "§8 - §6☘ Block Fortune", + "§8 - §6☘ Mining Fortune", + "§8 - §e▚ Mining Spread", + "", + "§eClick to view!" + ); + } + }); + set(new GUIClickableItem(23) { + @Override + public void run(InventoryPreClickEvent e, HypixelPlayer player) { + new GUIDwarvenMetals().open(player); + } + + @Override + public ItemStack.Builder getItem(HypixelPlayer player) { + return ItemStackCreator.getStack( + "§aDwarven Metals", + Material.PRISMARINE, + 1, + "§8Block Classification", + "", + "§7These blocks are affected by: ", + "§8 - §6☘ Dwarven Metal Fortune", + "§8 - §6☘ Mining Fortune", + "§8 - §e▚ Mining Spread", + "", + "§eClick to view!" + ); + } + }); + set(new GUIClickableItem(25) { + @Override + public void run(InventoryPreClickEvent e, HypixelPlayer player) { + new GUIGemstones().open(player); + } + + @Override + public ItemStack.Builder getItem(HypixelPlayer player) { + return ItemStackCreator.getStack( + "§dGemstones", + Material.RED_STAINED_GLASS, + 1, + "§8Block Classification", + "", + "§7These blocks are affected by: ", + "§8 - §6☘ Gemstone Fortune", + "§8 - §6☘ Mining Fortune", + "§8 - §e▚ Gemstone Spread", + "§8 - §5✧ Pristine", + "", + "§eClick to view!" + ); + } + }); + set(GUIClickableItem.getCloseItem(40)); + updateItemStacks(getInventory(), getPlayer()); + } + + @Override + public boolean allowHotkeying() { + return false; + } + + @Override + public void onBottomClick(InventoryPreClickEvent e) { + e.setCancelled(true); + } +} diff --git a/type.dwarvenmines/src/main/java/net/swofty/type/dwarvenmines/gui/fragilis/GUIOres.java b/type.dwarvenmines/src/main/java/net/swofty/type/dwarvenmines/gui/fragilis/GUIOres.java new file mode 100644 index 000000000..3f8ede432 --- /dev/null +++ b/type.dwarvenmines/src/main/java/net/swofty/type/dwarvenmines/gui/fragilis/GUIOres.java @@ -0,0 +1,276 @@ +package net.swofty.type.dwarvenmines.gui.fragilis; + +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.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.gui.inventory.item.GUIItem; +import net.swofty.type.generic.user.HypixelPlayer; + +// TODO: hardcoded +public class GUIOres extends HypixelInventoryGUI { + + public GUIOres() { + super("Ores", InventoryType.CHEST_6_ROW); + } + + @Override + public void onOpen(InventoryGUIOpenEvent e) { + border(FILLER_ITEM); + set(new GUIItem(4) { + @Override + public ItemStack.Builder getItem(HypixelPlayer player) { + return ItemStackCreator.getStack( + "§6Ores", + Material.BOOK, + 1, + "§8Block Classification", + "", + "§7These blocks are affected by: ", + "§8 - §6☘ Ore Fortune", + "§8 - §6☘ Mining Fortune", + "§8 - §e▚ Mining Spread" + ); + } + }); + set(new GUIItem(10) { + @Override + public ItemStack.Builder getItem(HypixelPlayer player) { + return ItemStackCreator.getStack( + "§6Coal Ore", + Material.COAL_ORE, + 1, + "§8Ore" + ); + } + }); + set(new GUIItem(11) { + @Override + public ItemStack.Builder getItem(HypixelPlayer player) { + return ItemStackCreator.getStack( + "§6Iron Ore", + Material.IRON_ORE, + 1, + "§8Ore" + ); + } + }); + set(new GUIItem(12) { + @Override + public ItemStack.Builder getItem(HypixelPlayer player) { + return ItemStackCreator.getStack( + "§6Gold Ore", + Material.GOLD_ORE, + 1, + "§8Ore" + ); + } + }); + set(new GUIItem(13) { + @Override + public ItemStack.Builder getItem(HypixelPlayer player) { + return ItemStackCreator.getStack( + "§6Lapis Lazuli Ore", + Material.LAPIS_ORE, + 1, + "§8Ore" + ); + } + }); + set(new GUIItem(14) { + @Override + public ItemStack.Builder getItem(HypixelPlayer player) { + return ItemStackCreator.getStack( + "§6Redstone Ore", + Material.REDSTONE_ORE, + 1, + "§8Ore" + ); + } + }); + set(new GUIItem(15) { + @Override + public ItemStack.Builder getItem(HypixelPlayer player) { + return ItemStackCreator.getStack( + "§6Emerald Ore", + Material.EMERALD_ORE, + 1, + "§8Ore" + ); + } + }); + set(new GUIItem(16) { + @Override + public ItemStack.Builder getItem(HypixelPlayer player) { + return ItemStackCreator.getStack( + "§6Diamond Ore", + Material.DIAMOND_ORE, + 1, + "§8Ore" + ); + } + }); + set(new GUIItem(19) { + @Override + public ItemStack.Builder getItem(HypixelPlayer player) { + return ItemStackCreator.getStack( + "§6Pure Coal", + Material.COAL_BLOCK, + 1, + "§8Ore", + "", + "§7Properties", + "§7 Breaking Power: §23", + "§7 Block Strength: §e600" + ); + } + }); + set(new GUIItem(20) { + @Override + public ItemStack.Builder getItem(HypixelPlayer player) { + return ItemStackCreator.getStack( + "§6Pure Iron", + Material.IRON_BLOCK, + 1, + "§8Ore", + "", + "§7Properties", + "§7 Breaking Power: §23", + "§7 Block Strength: §e600" + ); + } + }); + set(new GUIItem(21) { + @Override + public ItemStack.Builder getItem(HypixelPlayer player) { + return ItemStackCreator.getStack( + "§6Pure Gold", + Material.GOLD_BLOCK, + 1, + "§8Ore", + "", + "§7Properties", + "§7 Breaking Power: §23", + "§7 Block Strength: §e600" + ); + } + }); + set(new GUIItem(22) { + @Override + public ItemStack.Builder getItem(HypixelPlayer player) { + return ItemStackCreator.getStack( + "§6Pure Lapis", + Material.LAPIS_BLOCK, + 1, + "§8Ore", + "", + "§7Properties", + "§7 Breaking Power: §23", + "§7 Block Strength: §e600" + ); + } + }); + set(new GUIItem(23) { + @Override + public ItemStack.Builder getItem(HypixelPlayer player) { + return ItemStackCreator.getStack( + "§6Pure Redstone", + Material.REDSTONE_BLOCK, + 1, + "§8Ore", + "", + "§7Properties", + "§7 Breaking Power: §23", + "§7 Block Strength: §e600" + ); + } + }); + set(new GUIItem(24) { + @Override + public ItemStack.Builder getItem(HypixelPlayer player) { + return ItemStackCreator.getStack( + "§6Pure Emerald", + Material.EMERALD_BLOCK, + 1, + "§8Ore", + "", + "§7Properties", + "§7 Breaking Power: §23", + "§7 Block Strength: §e600" + ); + } + }); + set(new GUIItem(25) { + @Override + public ItemStack.Builder getItem(HypixelPlayer player) { + return ItemStackCreator.getStack( + "§6Pure Diamond", + Material.DIAMOND_BLOCK, + 1, + "§8Ore", + "", + "§7Properties", + "§7 Breaking Power: §23", + "§7 Block Strength: §e600" + ); + } + }); + set(new GUIItem(28) { + @Override + public ItemStack.Builder getItem(HypixelPlayer player) { + return ItemStackCreator.getStack( + "§6Nether Quartz Ore", + Material.NETHER_QUARTZ_ORE, + 1, + "§8Ore" + ); + } + }); + set(new GUIItem(29) { + @Override + public ItemStack.Builder getItem(HypixelPlayer player) { + return ItemStackCreator.getStack( + "§6Pure Quartz", + Material.QUARTZ_BLOCK, + 1, + "§8Ore", + "", + "§7Properties", + "§7 Breaking Power: §23", + "§7 Block Strength: §e600" + ); + } + }); + set(new GUIItem(30) { + @Override + public ItemStack.Builder getItem(HypixelPlayer player) { + return ItemStackCreator.getStack( + "§6Sulphur Ore", + Material.SPONGE, + 1, + "§8Ore", + "", + "§7Properties", + "§7 Breaking Power: §28", + "§7 Block Strength: §e500" + ); + } + }); + set(GUIClickableItem.getGoBackItem(48, new GUIHandyBlockGuide())); + set(GUIClickableItem.getCloseItem(49)); + updateItemStacks(getInventory(), getPlayer()); + } + + @Override + public boolean allowHotkeying() { + return false; + } + + @Override + public void onBottomClick(InventoryPreClickEvent e) { + e.setCancelled(true); + } +} diff --git a/type.dwarvenmines/src/main/java/net/swofty/type/dwarvenmines/npcs/INPCRoyalGuard.java b/type.dwarvenmines/src/main/java/net/swofty/type/dwarvenmines/npcs/INPCRoyalGuard.java new file mode 100644 index 000000000..945fefeab --- /dev/null +++ b/type.dwarvenmines/src/main/java/net/swofty/type/dwarvenmines/npcs/INPCRoyalGuard.java @@ -0,0 +1,85 @@ +package net.swofty.type.dwarvenmines.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.user.HypixelPlayer; +import net.swofty.type.skyblockgeneric.user.SkyBlockPlayer; + +import java.util.function.Function; +import java.util.stream.Stream; + +public class INPCRoyalGuard extends HypixelNPC { + + public INPCRoyalGuard(Function signature, Function texture, Function position) { + super(new HumanConfiguration() { + @Override + public String[] holograms(HypixelPlayer player) { + return new String[]{"§6Royal Guard", "§e§lCLICK"}; + } + + @Override + public String signature(HypixelPlayer player) { + return signature.apply(player); + } + + @Override + public String texture(HypixelPlayer player) { + return texture.apply(player); + } + + @Override + public Pos position(HypixelPlayer player) { + return position.apply(player); + } + + @Override + public boolean looking() { + return true; + } + }); + } + + @Override + public void onClick(NPCInteractEvent event) { + SkyBlockPlayer player = (SkyBlockPlayer) event.player(); + if (isInDialogue(player)) return; + setDialogue(player, String.valueOf((int) (Math.random() * 5 + 1))); + } + + @Override + protected DialogueSet[] dialogues(HypixelPlayer player) { + return Stream.of( + DialogueSet.builder() + .key("1") + .lines(new String[]{ + "§fThere are no miners like the dwarves." + }) + .build(), + DialogueSet.builder() + .key("2") + .lines(new String[]{ + "§fSTAND BACK!", + }) + .build(), + DialogueSet.builder() + .key("3") + .lines(new String[]{ + "§fGreat treasures lie ahead, but at what cost?" + }) + .build(), + DialogueSet.builder() + .key("4") + .lines(new String[]{ + "§fBehold a fellow holder of Heart of the Mountain!" + }) + .build(), + DialogueSet.builder() + .key("5") + .lines(new String[]{ + "§fWatch yourself, traveller. There are creatures about." + }) + .build() + ).toArray(DialogueSet[]::new); + } +} \ No newline at end of file diff --git a/type.dwarvenmines/src/main/java/net/swofty/type/dwarvenmines/npcs/NPCCastleGuardEight.java b/type.dwarvenmines/src/main/java/net/swofty/type/dwarvenmines/npcs/NPCCastleGuardEight.java new file mode 100644 index 000000000..ddcd24c1c --- /dev/null +++ b/type.dwarvenmines/src/main/java/net/swofty/type/dwarvenmines/npcs/NPCCastleGuardEight.java @@ -0,0 +1,60 @@ +package net.swofty.type.dwarvenmines.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.user.HypixelPlayer; +import net.swofty.type.skyblockgeneric.user.SkyBlockPlayer; + +import java.util.stream.Stream; + +public class NPCCastleGuardEight extends HypixelNPC { + + public NPCCastleGuardEight() { + super(new HumanConfiguration() { + @Override + public String[] holograms(HypixelPlayer player) { + return new String[]{"§6Castle Guard", "§e§lCLICK"}; + } + + @Override + public String signature(HypixelPlayer player) { + return "TH8OMYtsYSNU/tXKaAYjcI5Uc0DbFJFQQjwBodV2B6G1YKfoIEq7zYXP1OYDo2XWEOVnAbFjxCNu402jsw366wQOaaWpi6S/WMXX5QwnG0CReeM5ss3xCiJWGKzpXVvlz87/k0qTMfNba1EpTlaNT+AnreDmTQKxqC2dkdk+7a/+x6wr3wQPZwQKJ1kRE6mcZ7eJGrUBaGVfpNf4050Vc6FFcG8K+IlbuGdQYB1ARZ+/mY95aGidnh+Z/Tl6BXPGl4UdF+e4LMwLThxJtJViM6/6h2t9cKnQ7udscegYSRKJ8cA+qLyMUDvez9zRZl9PvqBYFyOiXwKa2veACpWcwXWl8dMVPUmb9/i4ZvzjBisfOnqefBl8IYN78RL8cVerZ3ejIgylHD6vuQAKIo+or/TI0kHDYHNiDbOn7hrl6VZl5NgTk91Bkb5ANTOp/zr3bERS/KOsNNj1G2bP/P4UtTa48K5Bn/iwMKgV5suESM69L8J5q6cfxYHNPl2P7BgaN7LcJsbre8UrdDkeyFrCkqP0jXTAS4NhWwsFCau3Un2B8gyofPElPVW3Vcic93MSG9n/pRzbBaLdAjeRcQDp03wmWZaGB5FWm1WMItoIEXZwxC3O/F+AgbfukCJgjeZ6T9xVgscK0rmC51Q4fa9yrgms7CwOL9PMSQDYy/bNa9c="; + } + + @Override + public String texture(HypixelPlayer player) { + return "ewogICJ0aW1lc3RhbXAiIDogMTYxMDQ3NTQzMzc3NywKICAicHJvZmlsZUlkIiA6ICJkZjMxY2M2NTE4M2I0YmUzYmZmZmNjMDVhMDFkYjBmNyIsCiAgInByb2ZpbGVOYW1lIiA6ICJ3aWxsaWFtZ2J1cm5zIiwKICAic2lnbmF0dXJlUmVxdWlyZWQiIDogdHJ1ZSwKICAidGV4dHVyZXMiIDogewogICAgIlNLSU4iIDogewogICAgICAidXJsIiA6ICJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlLzY0NTI5ZWQyZmE1YmJkZjJjZjYyZTA2NWUwNGI4ODU2MTcwMGRhYjdiZmU5ZWNkNjBmMDIwODgyNzk1YWNhMzMiCiAgICB9CiAgfQp9"; + } + + @Override + public Pos position(HypixelPlayer player) { + return new Pos(108.500, 202.000, 253.000, -180, 0); + } + + @Override + public boolean looking() { + return false; + } + }); + } + + @Override + public void onClick(NPCInteractEvent event) { + SkyBlockPlayer player = (SkyBlockPlayer) event.player(); + if (isInDialogue(player)) return; + setDialogue(player, "idle"); + } + + @Override + protected DialogueSet[] dialogues(HypixelPlayer player) { + return Stream.of( + DialogueSet.builder() + .key("idle") + .lines(new String[]{ + "§fI am guarding nothing." + }) + .build() + ).toArray(DialogueSet[]::new); + } +} \ No newline at end of file diff --git a/type.dwarvenmines/src/main/java/net/swofty/type/dwarvenmines/npcs/NPCCastleGuardFive.java b/type.dwarvenmines/src/main/java/net/swofty/type/dwarvenmines/npcs/NPCCastleGuardFive.java new file mode 100644 index 000000000..8e6406e98 --- /dev/null +++ b/type.dwarvenmines/src/main/java/net/swofty/type/dwarvenmines/npcs/NPCCastleGuardFive.java @@ -0,0 +1,60 @@ +package net.swofty.type.dwarvenmines.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.user.HypixelPlayer; +import net.swofty.type.skyblockgeneric.user.SkyBlockPlayer; + +import java.util.stream.Stream; + +public class NPCCastleGuardFive extends HypixelNPC { + + public NPCCastleGuardFive() { + super(new HumanConfiguration() { + @Override + public String[] holograms(HypixelPlayer player) { + return new String[]{"§6Castle Guard", "§e§lCLICK"}; + } + + @Override + public String signature(HypixelPlayer player) { + return "seuXIllWZjXjqV2JnR3IcWgjYKWb1wm0gK69ENtKNZZCcP0QKbqjHme1u+K/aIs+JIH0nSkdkj+5PP6/kbsRm64V789hHeDSYJ2aE8lcqamptdez63Ap//Nvv8ykDRPHTddvOlJ/zpeEOj2x2E0u4LtsyLaRlY24Ku8kkiy7L+EKZQ4Pl0mB2o2AtzZNECF1BYhhSguEzFVhu2emweFCD5yYcTcpyecnvKfedXy4uxaeTAls46rqCfGHJSLll6PatUwJ7ZcBQyN95RCR8I0+kdkkkFZ3v2nYllTLd3oJPpRD6GBkOA32uVFYEYXp4HAjN2odDZfPmw663jdVJtLvYIEc9FckQfY6uXjSt3V7/yzOrxP8iV22IMhXY1gaTjQFnoBFa/yRcVrbcJ1GIT3tJMYrB3hS8BnmR7jPQ05crUQjZHCqVzZEa74bM44eus3Db8sL6OALpYznP+u9Ss855AkjpIlwQw533qxMRZEffvnQ1wT556TeczvZDEb9zTszYqzCKt4uLG97k9aTYKpeJHIBbzCo9+xvGD0zzzTXZ7xKe4ZfpzKnFFjUrJRdqjddGRi5iV3WdHFLQ4VVcZyCqIhVNjt5bkCbObuqIdmhmCZNDvf8xmis1p890mLoTeln+Mu6/2NwgVXwuTtKgHnCGff4X7vdzepdomo0pZrgObk="; + } + + @Override + public String texture(HypixelPlayer player) { + return "ewogICJ0aW1lc3RhbXAiIDogMTYwNzQ2NDk5NDA2MSwKICAicHJvZmlsZUlkIiA6ICJhMmY4MzQ1OTVjODk0YTI3YWRkMzA0OTcxNmNhOTEwYyIsCiAgInByb2ZpbGVOYW1lIiA6ICJiUHVuY2giLAogICJzaWduYXR1cmVSZXF1aXJlZCIgOiB0cnVlLAogICJ0ZXh0dXJlcyIgOiB7CiAgICAiU0tJTiIgOiB7CiAgICAgICJ1cmwiIDogImh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOGU3YTQ2YzI1ODI2OGY0MmM4NTlkZDVjODAwOGE5N2M3MmI4ZDM3MGU5ODFjZTJkY2MwYzNmZDQ1MTYzOGVkNyIKICAgIH0KICB9Cn0="; + } + + @Override + public Pos position(HypixelPlayer player) { + return new Pos(93.000, 196.000, 176.000, 49, 0); + } + + @Override + public boolean looking() { + return false; + } + }); + } + + @Override + public void onClick(NPCInteractEvent event) { + SkyBlockPlayer player = (SkyBlockPlayer) event.player(); + if (isInDialogue(player)) return; + setDialogue(player, "idle"); + } + + @Override + protected DialogueSet[] dialogues(HypixelPlayer player) { + return Stream.of( + DialogueSet.builder() + .key("idle") + .lines(new String[]{ + "§fI'm a guard." + }) + .build() + ).toArray(DialogueSet[]::new); + } +} \ No newline at end of file diff --git a/type.dwarvenmines/src/main/java/net/swofty/type/dwarvenmines/npcs/NPCCastleGuardFour.java b/type.dwarvenmines/src/main/java/net/swofty/type/dwarvenmines/npcs/NPCCastleGuardFour.java new file mode 100644 index 000000000..d82675a2f --- /dev/null +++ b/type.dwarvenmines/src/main/java/net/swofty/type/dwarvenmines/npcs/NPCCastleGuardFour.java @@ -0,0 +1,60 @@ +package net.swofty.type.dwarvenmines.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.user.HypixelPlayer; +import net.swofty.type.skyblockgeneric.user.SkyBlockPlayer; + +import java.util.stream.Stream; + +public class NPCCastleGuardFour extends HypixelNPC { + + public NPCCastleGuardFour() { + super(new HumanConfiguration() { + @Override + public String[] holograms(HypixelPlayer player) { + return new String[]{"§6Castle Guard", "§e§lCLICK"}; + } + + @Override + public String signature(HypixelPlayer player) { + return "VjQdC7UTHxhLZhbY+hLJ4z2JkQ7zajwlgn/JUqaIGRMGLUTUfx9DUzLTALl4D/L4EpQPwfaOJx/lXDy3U88oNhaTEG/62VEYidKmI//jw5uc8UDbR5soYqAuoINcnqNU2iuNLJ/5doCHDtV+oKqs/IQlXMy5jXy5I31yeNB2Ke6LOaDdKRYRetUA5eABmVFfAdU37bZbRXafNUSGS5XXzP38dpRwtdNFKUvsj5mFM4reIVR/zIIzWRpbXvXrQLS+71VdNngsV9YlexxPAqcDRjAN27FQiamim6KF7JQhtNROuI3Bwj4V4QnK0P8xFr2E+rG6P8ZFiQN33U8xEJ8x8fVQp4LXttw5aq4as/9vu5b2fY7npEMlDveYjDZ4U5qFI2Cnc6q3lWU5FHUblv+hxACZ7YmlwXpG8ZcaUi5dKbDa8IfXZft8eaoXO/Tm//qOC2yx4byNU5xhpRZ9SA81sFaQAZQfNbbWE+uuF1pS1wymQ3nU3mpqIXpyPJ1tzNNFgDMfDsSiTW2WXJmF2Bi8PNXsOyKD22ZKE4qumK6W4OMHPsKH/SGnvm8fjpVBIP+z8MCkvuUF3jkfHAFfIG3xUSLDkEB2Mx6uMru5hBzNa1lX4rdhz0z2va4WHwnLoav5TAXJo8mYg2I4fQOFOsoI7JLJGjxMoahcb4n34dxxgbM="; + } + + @Override + public String texture(HypixelPlayer player) { + return "ewogICJ0aW1lc3RhbXAiIDogMTYxMDQ3NTI2NzU1NywKICAicHJvZmlsZUlkIiA6ICJkZjMxY2M2NTE4M2I0YmUzYmZmZmNjMDVhMDFkYjBmNyIsCiAgInByb2ZpbGVOYW1lIiA6ICJ3aWxsaWFtZ2J1cm5zIiwKICAic2lnbmF0dXJlUmVxdWlyZWQiIDogdHJ1ZSwKICAidGV4dHVyZXMiIDogewogICAgIlNLSU4iIDogewogICAgICAidXJsIiA6ICJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlL2E3NjU5NmFhNjRlZWYwYzEzNTQzMzc1MWNkNzEyMzBjZmViMWE4ODFiYTNmMTEwYTAyYWE1OGM3MTYwYzBmYzgiCiAgICB9CiAgfQp9"; + } + + @Override + public Pos position(HypixelPlayer player) { + return new Pos(122.000, 192.000, 148.000, -180, 0); + } + + @Override + public boolean looking() { + return false; + } + }); + } + + @Override + public void onClick(NPCInteractEvent event) { + SkyBlockPlayer player = (SkyBlockPlayer) event.player(); + if (isInDialogue(player)) return; + setDialogue(player, "idle"); + } + + @Override + protected DialogueSet[] dialogues(HypixelPlayer player) { + return Stream.of( + DialogueSet.builder() + .key("idle") + .lines(new String[]{ + "§fI'm guarding the whole kingdom." + }) + .build() + ).toArray(DialogueSet[]::new); + } +} \ No newline at end of file diff --git a/type.dwarvenmines/src/main/java/net/swofty/type/dwarvenmines/npcs/NPCCastleGuardOne.java b/type.dwarvenmines/src/main/java/net/swofty/type/dwarvenmines/npcs/NPCCastleGuardOne.java new file mode 100644 index 000000000..51f1cff30 --- /dev/null +++ b/type.dwarvenmines/src/main/java/net/swofty/type/dwarvenmines/npcs/NPCCastleGuardOne.java @@ -0,0 +1,60 @@ +package net.swofty.type.dwarvenmines.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.user.HypixelPlayer; +import net.swofty.type.skyblockgeneric.user.SkyBlockPlayer; + +import java.util.stream.Stream; + +public class NPCCastleGuardOne extends HypixelNPC { + + public NPCCastleGuardOne() { + super(new HumanConfiguration() { + @Override + public String[] holograms(HypixelPlayer player) { + return new String[]{"§6Castle Guard", "§e§lCLICK"}; + } + + @Override + public String signature(HypixelPlayer player) { + return "jADrA04LTpE3LchH4opgU2WLmf3Tu33mXsrlUEJCei0xSRZY7/yb+yW/IQ5RlweTPGpluNDlS/tW+pgmBN7VBXzWcV61cHMT9ALquS8/LkRivSaSgsEVupp16ot9kne9Ecv2up7UcAJLn7Q7jnMWtF73YqFruTjpsO25xvIL7IBt1H8QxGdaUYiiws3kGuhubZqbCSGj2w4dTdWxJByNMXULoBt0U2tqjDd2rW3vHFLT3dKP+JL3czXHKCMxgvjhZ+GX7DnuiTlUoqO8A/0stbXy4d0IvQsc38PqMN5w103ixsjvAQ8wIvCAqQYX3gfUSPe+xh/JV2gtFZRa6n34VsmkRu8dj36aGjQQlEE7ronYcDFZoWi9lGXn4P5ZeUoX2h2FmGGJcSnTARlp114Ay5buB9hVOqrYCTzc6mbm1ytjIBUjJ2CN7vLgAJfXhpiGQsaP5UMoadmheVgRwY39QAg1LMRONmdP1mCfetr6osZZH8EDv4lJxguNxl3BYn+15OY1mCYEA0e/EqjM2mZKnHuti9AUizZgkWpRgnDnCMNeHd2wsI+vD4dANuBj/gRgZnaWU2qFZ22TTzBVWS5+3Gs0QKsaINNi0E7MzHEJT7Tp0zcE2eQrA28m1yBpLeBLcPZfKC3g7NDTznObeE/lu7brdTkzyIiS+nJ74sqz1B8="; + } + + @Override + public String texture(HypixelPlayer player) { + return "ewogICJ0aW1lc3RhbXAiIDogMTYxMDQ3NTE3NjUzNSwKICAicHJvZmlsZUlkIiA6ICJkZjMxY2M2NTE4M2I0YmUzYmZmZmNjMDVhMDFkYjBmNyIsCiAgInByb2ZpbGVOYW1lIiA6ICJ3aWxsaWFtZ2J1cm5zIiwKICAic2lnbmF0dXJlUmVxdWlyZWQiIDogdHJ1ZSwKICAidGV4dHVyZXMiIDogewogICAgIlNLSU4iIDogewogICAgICAidXJsIiA6ICJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlLzJlNTRlZjQzOGYyMWQyMGQwZjZjNjllNjYyZjE3NTM4ZjU3YzFjMTJkZjRmZTgyMmMwMmU4ODlhMTYxNDIxOTgiCiAgICB9CiAgfQp9"; + } + + @Override + public Pos position(HypixelPlayer player) { + return new Pos(125.000, 187.000, 106.000, -180, 0); + } + + @Override + public boolean looking() { + return false; + } + }); + } + + @Override + public void onClick(NPCInteractEvent event) { + SkyBlockPlayer player = (SkyBlockPlayer) event.player(); + if (isInDialogue(player)) return; + setDialogue(player, "idle"); + } + + @Override + protected DialogueSet[] dialogues(HypixelPlayer player) { + return Stream.of( + DialogueSet.builder() + .key("idle") + .lines(new String[]{ + "§fLast week they promoted me from guarding the exit to guarding the entrance! Still the same spot but I gladly take that promotion!" + }) + .build() + ).toArray(DialogueSet[]::new); + } +} \ No newline at end of file diff --git a/type.dwarvenmines/src/main/java/net/swofty/type/dwarvenmines/npcs/NPCCastleGuardSeven.java b/type.dwarvenmines/src/main/java/net/swofty/type/dwarvenmines/npcs/NPCCastleGuardSeven.java new file mode 100644 index 000000000..cef59d696 --- /dev/null +++ b/type.dwarvenmines/src/main/java/net/swofty/type/dwarvenmines/npcs/NPCCastleGuardSeven.java @@ -0,0 +1,60 @@ +package net.swofty.type.dwarvenmines.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.user.HypixelPlayer; +import net.swofty.type.skyblockgeneric.user.SkyBlockPlayer; + +import java.util.stream.Stream; + +public class NPCCastleGuardSeven extends HypixelNPC { + + public NPCCastleGuardSeven() { + super(new HumanConfiguration() { + @Override + public String[] holograms(HypixelPlayer player) { + return new String[]{"§6Castle Guard", "§e§lCLICK"}; + } + + @Override + public String signature(HypixelPlayer player) { + return "Ic93JjFO3ZL10gtcVoaGbsaHXjsUvq6dWirUPihZYzieAHVSyCSzrjMYDmMVvuIJGnVE8MCgcGQuYxh+J9TbmqdFugU9vVZvJ6urPTKJwyLrHtdz3tzUW4FF7+HkDn2nOBEm3lu3Pcszis49TFstpp4xfBUsvIpdivyzfeHH0KoWPTK/NE5IDdy7JqP3NS5IJg4L4Rt/zWuA17F/Pfm5+s5Ol9l7SAvSWhS/ed/lB7AzdHFGBx9SVSR1oGr1Sx9YxRKyFT4KRjc5czTUhiNUmiaZ/dwwn4cVYqjXbRG3sPQuMffuIO/QKo4ohWLU1My1SThC0qC4b52xMdzYQg8aV4rmJwe+zNkbpvylmpHNgIysTK9GO4clG3sBc+McdNM9NFKyLtxHdpGwu/ZHOPnPO5uu2vbCqnB+sxQ6I12esos+V1HPiFV4YZnCK2YxYB4MCkMjoWTJRkZhShAIcE8IgcQ/pHi5kwlqyy4kH/4Vfwd0YFK0oPFo7zfVOjj8wZaVnPmKdcAkMbO9kpOOUMPVt5/jfLyfiroRgJJQQJITVStXpmQFIieze6+aigsKhoiL5Mej4ggVrwniP8gc3iiK3p4HMeObKK0CfoiVPPP+sN9uEs443EGZmVrpuphD51xA0Qow4UtD6YhIRWPYiLzT1SV55dJ4gYy7Qr0rbDUbm+k="; + } + + @Override + public String texture(HypixelPlayer player) { + return "ewogICJ0aW1lc3RhbXAiIDogMTYxMDU3NzM3NDY3NCwKICAicHJvZmlsZUlkIiA6ICJiMGQ0YjI4YmMxZDc0ODg5YWYwZTg2NjFjZWU5NmFhYiIsCiAgInByb2ZpbGVOYW1lIiA6ICJNaW5lU2tpbl9vcmciLAogICJzaWduYXR1cmVSZXF1aXJlZCIgOiB0cnVlLAogICJ0ZXh0dXJlcyIgOiB7CiAgICAiU0tJTiIgOiB7CiAgICAgICJ1cmwiIDogImh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNzk0MWM5YzZhMzhiMjU0OWMyOTViMzQxOWI5MWMwM2YzMTAzNThmOTllMWViOWVkOGI5YjU5NGJlZWRlZjEwOCIKICAgIH0KICB9Cn0="; + } + + @Override + public Pos position(HypixelPlayer player) { + return new Pos(132.000, 202.000, 252.000, -141, 0); + } + + @Override + public boolean looking() { + return false; + } + }); + } + + @Override + public void onClick(NPCInteractEvent event) { + SkyBlockPlayer player = (SkyBlockPlayer) event.player(); + if (isInDialogue(player)) return; + setDialogue(player, "idle"); + } + + @Override + protected DialogueSet[] dialogues(HypixelPlayer player) { + return Stream.of( + DialogueSet.builder() + .key("idle") + .lines(new String[]{ + "§fI am guarding the lava." + }) + .build() + ).toArray(DialogueSet[]::new); + } +} \ No newline at end of file diff --git a/type.dwarvenmines/src/main/java/net/swofty/type/dwarvenmines/npcs/NPCCastleGuardSix.java b/type.dwarvenmines/src/main/java/net/swofty/type/dwarvenmines/npcs/NPCCastleGuardSix.java new file mode 100644 index 000000000..5fec3471a --- /dev/null +++ b/type.dwarvenmines/src/main/java/net/swofty/type/dwarvenmines/npcs/NPCCastleGuardSix.java @@ -0,0 +1,60 @@ +package net.swofty.type.dwarvenmines.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.user.HypixelPlayer; +import net.swofty.type.skyblockgeneric.user.SkyBlockPlayer; + +import java.util.stream.Stream; + +public class NPCCastleGuardSix extends HypixelNPC { + + public NPCCastleGuardSix() { + super(new HumanConfiguration() { + @Override + public String[] holograms(HypixelPlayer player) { + return new String[]{"§6Castle Guard", "§e§lCLICK"}; + } + + @Override + public String signature(HypixelPlayer player) { + return "Ic93JjFO3ZL10gtcVoaGbsaHXjsUvq6dWirUPihZYzieAHVSyCSzrjMYDmMVvuIJGnVE8MCgcGQuYxh+J9TbmqdFugU9vVZvJ6urPTKJwyLrHtdz3tzUW4FF7+HkDn2nOBEm3lu3Pcszis49TFstpp4xfBUsvIpdivyzfeHH0KoWPTK/NE5IDdy7JqP3NS5IJg4L4Rt/zWuA17F/Pfm5+s5Ol9l7SAvSWhS/ed/lB7AzdHFGBx9SVSR1oGr1Sx9YxRKyFT4KRjc5czTUhiNUmiaZ/dwwn4cVYqjXbRG3sPQuMffuIO/QKo4ohWLU1My1SThC0qC4b52xMdzYQg8aV4rmJwe+zNkbpvylmpHNgIysTK9GO4clG3sBc+McdNM9NFKyLtxHdpGwu/ZHOPnPO5uu2vbCqnB+sxQ6I12esos+V1HPiFV4YZnCK2YxYB4MCkMjoWTJRkZhShAIcE8IgcQ/pHi5kwlqyy4kH/4Vfwd0YFK0oPFo7zfVOjj8wZaVnPmKdcAkMbO9kpOOUMPVt5/jfLyfiroRgJJQQJITVStXpmQFIieze6+aigsKhoiL5Mej4ggVrwniP8gc3iiK3p4HMeObKK0CfoiVPPP+sN9uEs443EGZmVrpuphD51xA0Qow4UtD6YhIRWPYiLzT1SV55dJ4gYy7Qr0rbDUbm+k="; + } + + @Override + public String texture(HypixelPlayer player) { + return "ewogICJ0aW1lc3RhbXAiIDogMTYxMDU3NzM3NDY3NCwKICAicHJvZmlsZUlkIiA6ICJiMGQ0YjI4YmMxZDc0ODg5YWYwZTg2NjFjZWU5NmFhYiIsCiAgInByb2ZpbGVOYW1lIiA6ICJNaW5lU2tpbl9vcmciLAogICJzaWduYXR1cmVSZXF1aXJlZCIgOiB0cnVlLAogICJ0ZXh0dXJlcyIgOiB7CiAgICAiU0tJTiIgOiB7CiAgICAgICJ1cmwiIDogImh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNzk0MWM5YzZhMzhiMjU0OWMyOTViMzQxOWI5MWMwM2YzMTAzNThmOTllMWViOWVkOGI5YjU5NGJlZWRlZjEwOCIKICAgIH0KICB9Cn0="; + } + + @Override + public Pos position(HypixelPlayer player) { + return new Pos(196.000, 204.000, 181.000, 90, 0); + } + + @Override + public boolean looking() { + return false; + } + }); + } + + @Override + public void onClick(NPCInteractEvent event) { + SkyBlockPlayer player = (SkyBlockPlayer) event.player(); + if (isInDialogue(player)) return; + setDialogue(player, "idle"); + } + + @Override + protected DialogueSet[] dialogues(HypixelPlayer player) { + return Stream.of( + DialogueSet.builder() + .key("idle") + .lines(new String[]{ + "§fI, Murdohr, son of Murdohr the Third, Commander of the Phoenix Forge, and Warden of the Holy Pickaxe, am guarding this wall." + }) + .build() + ).toArray(DialogueSet[]::new); + } +} \ No newline at end of file diff --git a/type.dwarvenmines/src/main/java/net/swofty/type/dwarvenmines/npcs/NPCCastleGuardThree.java b/type.dwarvenmines/src/main/java/net/swofty/type/dwarvenmines/npcs/NPCCastleGuardThree.java new file mode 100644 index 000000000..c9ecaabe3 --- /dev/null +++ b/type.dwarvenmines/src/main/java/net/swofty/type/dwarvenmines/npcs/NPCCastleGuardThree.java @@ -0,0 +1,60 @@ +package net.swofty.type.dwarvenmines.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.user.HypixelPlayer; +import net.swofty.type.skyblockgeneric.user.SkyBlockPlayer; + +import java.util.stream.Stream; + +public class NPCCastleGuardThree extends HypixelNPC { + + public NPCCastleGuardThree() { + super(new HumanConfiguration() { + @Override + public String[] holograms(HypixelPlayer player) { + return new String[]{"§6Castle Guard", "§e§lCLICK"}; + } + + @Override + public String signature(HypixelPlayer player) { + return "a+pcnn8iWlcx5YYiy84rytjMnF5x6IukLezE8pXN03YqCozbLh84KX+fBION2VrPsr38GU92XlYaHQoeHhYVXrhB6WopJgnTxsw3Jl8QSbH5K63Z2pDJDu44qqsbeVhzTzT1UcHVi7blN7BYsb3kr/zwTj3KewbRUJDt+1An7+jjzqWHONVa9c/L5kZ+UYf4A6IgyOmnf8YtiPl9td4hqyxGGBYXDcMPqnjqlJEo2CfrLpRmho/2R9FgYB3I+a9ULAci8jP3Z5AsbAC6chQeb1Wawv8+Y9NAJ3M+k7JymHu1V06Cgc1BDxl2wwNVgOgDXPjsEM2HybPinZbdRzUjZWgseZOlQWcFLSKUZVLsowI9mqJOFJND7vYMvfcKeWFoxKhPND6ZKh8rm1ttxxdy0/yZ9gY2evXCiKVKoEW8M9KAQmQjNNejXAOYrBxtxXQ4cq+ZSvTRAo5v1n3PVQI3UYiMbIcpSNlx8k8v/Eyl3stY7f12NCuDJstPjna0zv5Ksp6NyPeUcymEsXWaMMvzUcvIQNsDLBXLiIPTGev9UYokiH+WQLrsnvvxycb4WwNrdXdW/xssC1pSPKHHJMtjfcCd2BNERQifhgzvZlXH3CuNt/7snlKyfV1olRun0OA3bI19sKQgzumMgsH5SLhLStTB+l4xbfqQfyc7OyMZSVg="; + } + + @Override + public String texture(HypixelPlayer player) { + return "ewogICJ0aW1lc3RhbXAiIDogMTYxMDQ3NTM3MjY1MCwKICAicHJvZmlsZUlkIiA6ICJkZjMxY2M2NTE4M2I0YmUzYmZmZmNjMDVhMDFkYjBmNyIsCiAgInByb2ZpbGVOYW1lIiA6ICJ3aWxsaWFtZ2J1cm5zIiwKICAic2lnbmF0dXJlUmVxdWlyZWQiIDogdHJ1ZSwKICAidGV4dHVyZXMiIDogewogICAgIlNLSU4iIDogewogICAgICAidXJsIiA6ICJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlLzdiMGFkMmU1ZTkxYzI3ZGI1NWQ1OTE5MWNjYzc2YjVhYmZkODg2YTMwMzViMWE4ODViODEwYzFkZjQ4NzcwMDEiCiAgICB9CiAgfQp9"; + } + + @Override + public Pos position(HypixelPlayer player) { + return new Pos(137.000, 192.0, 148.000, -180, 0); + } + + @Override + public boolean looking() { + return false; + } + }); + } + + @Override + public void onClick(NPCInteractEvent event) { + SkyBlockPlayer player = (SkyBlockPlayer) event.player(); + if (isInDialogue(player)) return; + setDialogue(player, "idle"); + } + + @Override + protected DialogueSet[] dialogues(HypixelPlayer player) { + return Stream.of( + DialogueSet.builder() + .key("idle") + .lines(new String[]{ + "§fI'm guarding the whole kingdom." + }) + .build() + ).toArray(DialogueSet[]::new); + } +} \ No newline at end of file diff --git a/type.dwarvenmines/src/main/java/net/swofty/type/dwarvenmines/npcs/NPCCastleGuardTwo.java b/type.dwarvenmines/src/main/java/net/swofty/type/dwarvenmines/npcs/NPCCastleGuardTwo.java new file mode 100644 index 000000000..495bb2fc2 --- /dev/null +++ b/type.dwarvenmines/src/main/java/net/swofty/type/dwarvenmines/npcs/NPCCastleGuardTwo.java @@ -0,0 +1,60 @@ +package net.swofty.type.dwarvenmines.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.user.HypixelPlayer; +import net.swofty.type.skyblockgeneric.user.SkyBlockPlayer; + +import java.util.stream.Stream; + +public class NPCCastleGuardTwo extends HypixelNPC { + + public NPCCastleGuardTwo() { + super(new HumanConfiguration() { + @Override + public String[] holograms(HypixelPlayer player) { + return new String[]{"§6Castle Guard", "§e§lCLICK"}; + } + + @Override + public String signature(HypixelPlayer player) { + return "seuXIllWZjXjqV2JnR3IcWgjYKWb1wm0gK69ENtKNZZCcP0QKbqjHme1u+K/aIs+JIH0nSkdkj+5PP6/kbsRm64V789hHeDSYJ2aE8lcqamptdez63Ap//Nvv8ykDRPHTddvOlJ/zpeEOj2x2E0u4LtsyLaRlY24Ku8kkiy7L+EKZQ4Pl0mB2o2AtzZNECF1BYhhSguEzFVhu2emweFCD5yYcTcpyecnvKfedXy4uxaeTAls46rqCfGHJSLll6PatUwJ7ZcBQyN95RCR8I0+kdkkkFZ3v2nYllTLd3oJPpRD6GBkOA32uVFYEYXp4HAjN2odDZfPmw663jdVJtLvYIEc9FckQfY6uXjSt3V7/yzOrxP8iV22IMhXY1gaTjQFnoBFa/yRcVrbcJ1GIT3tJMYrB3hS8BnmR7jPQ05crUQjZHCqVzZEa74bM44eus3Db8sL6OALpYznP+u9Ss855AkjpIlwQw533qxMRZEffvnQ1wT556TeczvZDEb9zTszYqzCKt4uLG97k9aTYKpeJHIBbzCo9+xvGD0zzzTXZ7xKe4ZfpzKnFFjUrJRdqjddGRi5iV3WdHFLQ4VVcZyCqIhVNjt5bkCbObuqIdmhmCZNDvf8xmis1p890mLoTeln+Mu6/2NwgVXwuTtKgHnCGff4X7vdzepdomo0pZrgObk="; + } + + @Override + public String texture(HypixelPlayer player) { + return "ewogICJ0aW1lc3RhbXAiIDogMTYwNzQ2NDk5NDA2MSwKICAicHJvZmlsZUlkIiA6ICJhMmY4MzQ1OTVjODk0YTI3YWRkMzA0OTcxNmNhOTEwYyIsCiAgInByb2ZpbGVOYW1lIiA6ICJiUHVuY2giLAogICJzaWduYXR1cmVSZXF1aXJlZCIgOiB0cnVlLAogICJ0ZXh0dXJlcyIgOiB7CiAgICAiU0tJTiIgOiB7CiAgICAgICJ1cmwiIDogImh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOGU3YTQ2YzI1ODI2OGY0MmM4NTlkZDVjODAwOGE5N2M3MmI4ZDM3MGU5ODFjZTJkY2MwYzNmZDQ1MTYzOGVkNyIKICAgIH0KICB9Cn0="; + } + + @Override + public Pos position(HypixelPlayer player) { + return new Pos(134.000, 187.0, 106.000, -180, 0); + } + + @Override + public boolean looking() { + return false; + } + }); + } + + @Override + public void onClick(NPCInteractEvent event) { + SkyBlockPlayer player = (SkyBlockPlayer) event.player(); + if (isInDialogue(player)) return; + setDialogue(player, "idle"); + } + + @Override + protected DialogueSet[] dialogues(HypixelPlayer player) { + return Stream.of( + DialogueSet.builder() + .key("idle") + .lines(new String[]{ + "§fThis guy isn't the sharpest hammer in the smithy!" + }) + .build() + ).toArray(DialogueSet[]::new); + } +} \ No newline at end of file diff --git a/type.dwarvenmines/src/main/java/net/swofty/type/dwarvenmines/npcs/NPCFragilis.java b/type.dwarvenmines/src/main/java/net/swofty/type/dwarvenmines/npcs/NPCFragilis.java new file mode 100644 index 000000000..222c45c96 --- /dev/null +++ b/type.dwarvenmines/src/main/java/net/swofty/type/dwarvenmines/npcs/NPCFragilis.java @@ -0,0 +1,44 @@ +package net.swofty.type.dwarvenmines.npcs; + +import net.minestom.server.coordinate.Pos; +import net.swofty.type.dwarvenmines.gui.fragilis.GUIHandyBlockGuide; +import net.swofty.type.generic.entity.npc.HypixelNPC; +import net.swofty.type.generic.entity.npc.configuration.HumanConfiguration; +import net.swofty.type.generic.user.HypixelPlayer; + +public class NPCFragilis extends HypixelNPC { + + public NPCFragilis() { + super(new HumanConfiguration() { + @Override + public String[] holograms(HypixelPlayer player) { + return new String[]{"§5Fragilis", "§e§lCLICK"}; + } + + @Override + public String signature(HypixelPlayer player) { + return "BcJCc3fjJe3eO7IxHJwWr+PiG1o71OUkqsxf9pdPiY/dOMb5eglmAfamNTVRJgp4ojRRmNdqArXdtT5/ZCiGI7LnmCa4LpPUVdHVU9xAcICE6R21NyG8VL8ARed8nKbUWNEhwBH3TwmoiMZYIA/SZitw8UXUJlvngq8qN5diunMzBJrxwy3KJ+irZCRaUMr4cGfqYBt0U0N0iq7+urCFcj2kEDX8oUIJkCUYXaqqe2Z83ivSMfm7hWthPJuWQEINnegJGEWhat74NwyRR+xr1NWbnfyxgImYBVgs7gL0IS1Fh4VzU/LGefzsYj9P3M7f2CYUiXKiKdtsd0ZQRDFFkJmY999qDcLRykxNLi0eatbEU88N5dqj0f10hwdf6e+h9JMlDQlsFTxbpk1Yb98VTBd+PzJUd6K3NlfXAhwGtPTdHlm/OZCuXqwMLrVVoW2m8V8nhaahc3R4ssBMVVBETXWB34LNC+8HKvCXYbK6sWNZfrtXkRegIXnZyj2i2res009GVJicJ6DCCSKzlMIk85piowdrlRhDYEnnwgUEFZUQg9uBueZ2UJfFDc7zPGfIhvTzpA8r3GbB0lY/qw4uPr3kIk+RF1jrg3mr8YY8/c9DNG3YNdewBTLSek8KSF2/i3wwX7J1d/TPw/VYE5rypBXX3bWro+t9e/++oVONSWg="; + } + + @Override + public String texture(HypixelPlayer player) { + return "ewogICJ0aW1lc3RhbXAiIDogMTYxNTI0Mjg3Njg0NiwKICAicHJvZmlsZUlkIiA6ICJmZDYwZjM2ZjU4NjE0ZjEyYjNjZDQ3YzJkODU1Mjk5YSIsCiAgInByb2ZpbGVOYW1lIiA6ICJSZWFkIiwKICAic2lnbmF0dXJlUmVxdWlyZWQiIDogdHJ1ZSwKICAidGV4dHVyZXMiIDogewogICAgIlNLSU4iIDogewogICAgICAidXJsIiA6ICJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlLzMwNzIyYzAwMGFlZTBiYmEzMDU4YjQyNWZlNWVlYWM3NjZlMGEwYzNjM2E3ZWRmNDI5YWQxNGUxNTI5N2RkMzMiCiAgICB9CiAgfQp9"; + } + + @Override + public Pos position(HypixelPlayer player) { + return new Pos(88.000, 199.000, -108.000, 0, 0); + } + + @Override + public boolean looking() { + return true; + } + }); + } + + @Override + public void onClick(NPCInteractEvent event) { + new GUIHandyBlockGuide().open(event.player()); + } +} \ No newline at end of file diff --git a/type.dwarvenmines/src/main/java/net/swofty/type/dwarvenmines/npcs/NPCPuzzler.java b/type.dwarvenmines/src/main/java/net/swofty/type/dwarvenmines/npcs/NPCPuzzler.java new file mode 100644 index 000000000..524bddd5f --- /dev/null +++ b/type.dwarvenmines/src/main/java/net/swofty/type/dwarvenmines/npcs/NPCPuzzler.java @@ -0,0 +1,49 @@ +package net.swofty.type.dwarvenmines.npcs; + +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.event.ClickEvent; +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.user.HypixelPlayer; +import net.swofty.type.skyblockgeneric.user.SkyBlockPlayer; + +public class NPCPuzzler extends HypixelNPC { + + public NPCPuzzler() { + super(new HumanConfiguration() { + @Override + public String[] holograms(HypixelPlayer player) { + return new String[]{"§dPuzzler", "§e§lCLICK"}; + } + + @Override + public String signature(HypixelPlayer player) { + return "BRTVu4zsbj0XqknzTreR1GnnGOuixTJAZVjdoSPAVI8LktsvT5Zh4nn8G6ziq4rWiHlltAU5GG3Z3TnXdlo0PV3iiyzjXmePHYg9qF95OLymNvGXoJXgmezKJiRjmJSpOiIzE0clEEqvHMh/p0h+4sxT6yJP9c2w+BBAiI8vVMzQeboTqcjkZzLb68GR1QeTsKWPMsQVpMeXyy9OMe2euSWt+oMQqtbujnzOQYLfvgLt05AKLl0Bl9c9w60eDIkyYEKmbF/tIDyaJ6yt8v8hmQ3xUOpjOO2foTkOCe161J60Au/o97/l0f0PEP5ZkdrnvPUm6wj+7uGuFpCJ3ibiOwUIUttnu6PCUozoFCl5SqdFtcQVjzwTm7PBwUHIN93oRYIkLXeglCJAa+Zkhi7kNz3zpYVxKxqHK2k4MKYATGRsxllCB4Jm+QgqN5U1R6x7y4+WaKpt6gpo7U3dO8ILtGmw/VTEJ5giUB4MH6eTxB0X6hLstxgt06Y5doUxSenk8UWIiCQ1ncbkEThxHtC+j9PEmK/MCQjm/LCWwHOgOg/m1U4P3RgrAd//PKI9CQ1RDGdVEWdBEeFEeCRvNE91xRj62gS226fnEYmEV1c3yqsl0N8s38q6O500xk81BqziQcfBV3MQAZE06VdRp+faiDJ5hL/aF59G5mhy/gVrkVo="; + } + + @Override + public String texture(HypixelPlayer player) { + return "ewogICJ0aW1lc3RhbXAiIDogMTYxMDU5MzY3MjkzNywKICAicHJvZmlsZUlkIiA6ICI5NGMzZGM3YTdiMmQ0NzQ1YmVlYjQzZDc2ZjRjNDVkYyIsCiAgInByb2ZpbGVOYW1lIiA6ICJUaGVRdWFzb24iLAogICJzaWduYXR1cmVSZXF1aXJlZCIgOiB0cnVlLAogICJ0ZXh0dXJlcyIgOiB7CiAgICAiU0tJTiIgOiB7CiAgICAgICJ1cmwiIDogImh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNmY1MTRkODAxNGRjNmFhNGM4MDRmZmRmNjA5MDkzZjdmZjFhNTI4OWYxM2M3MTg4MTQyMTgyZGI0M2M4OGIzZCIKICAgIH0KICB9Cn0="; + } + + @Override + public Pos position(HypixelPlayer player) { + return new Pos(181.500, 196.000, 135.500, 0, 0); + } + + @Override + public boolean looking() { + return false; + } + }); + } + + @Override + public void onClick(NPCInteractEvent event) { + SkyBlockPlayer player = (SkyBlockPlayer) event.player(); + player.sendMessage(Component.text("§cThis Feature is not there yet. §aOpen a Pull request HERE to get it added quickly!") + .clickEvent(ClickEvent.openUrl("https://github.com/Swofty-Developments/HypixelSkyBlock"))); + } + +} \ No newline at end of file diff --git a/type.dwarvenmines/src/main/java/net/swofty/type/dwarvenmines/npcs/NPCRhys.java b/type.dwarvenmines/src/main/java/net/swofty/type/dwarvenmines/npcs/NPCRhys.java new file mode 100644 index 000000000..e0073dcc4 --- /dev/null +++ b/type.dwarvenmines/src/main/java/net/swofty/type/dwarvenmines/npcs/NPCRhys.java @@ -0,0 +1,44 @@ +package net.swofty.type.dwarvenmines.npcs; + +import net.minestom.server.coordinate.Pos; +import net.swofty.type.dwarvenmines.gui.GUIGuide; +import net.swofty.type.generic.entity.npc.HypixelNPC; +import net.swofty.type.generic.entity.npc.configuration.HumanConfiguration; +import net.swofty.type.generic.user.HypixelPlayer; + +public class NPCRhys extends HypixelNPC { + + public NPCRhys() { + super(new HumanConfiguration() { + @Override + public String[] holograms(HypixelPlayer player) { + return new String[]{"§aGuide", "§fRhys", "§e§lCLICK"}; + } + + @Override + public String signature(HypixelPlayer player) { + return "cEhw4KPnjOLHodZV5sBF0cDMUcmzFklYNbv8zR3G1+IwdkEfLxnXeSOeZRu3OrGOvxn6WwZWl/P4cZbfAxYEoVXvTYFesNM8lI0VNwuqt0QGz5sjkKMlQlEbdQilnw2Ki77SAqFqd8XHknYuUku/XpMEFCvDaS96SwTkQRwitE8EhJb5/X9AS6m/Wslu/F/AuKcZKc5UIXFr6geGV0XhJUpW8rBnWPxf4so5XKdQLXPvM8aActwAecXV4MkIPTsP1N6nOywEOeV5qs56AgoNgx44u+38Xg+0RV0wr9hzYHENPos7ZSfdVwd/tqAMTbyrKj4AGppl7MnSynEdgiBBk22qiF3g8vYgGj4O9w3h5185U9Ow7f2DihIy3mDAiFSvc77Hx/BGYkIxZ4HXWrKRj3INTxVSalB1RG7tuCHs4J/xAaDu2yI5zSedAX+L6VXeudIzpUPym5JaRc3alL1TW94ZQZ4W7QKw5fViLVORr4lve2fdDaz9KRUVkGeQx9L7Q81LaCV84E/8j0juzyHMtVdm+fmDERr+TSoa7REk6KIg0bpTqvyWiqJyygL8/sw02SuhqAupFdf3QOTLbLrh4qU8LtMvykl9V7n36uSTRZi0EVJasODGEVF2Qyt+toFSRdIvc6YUY+C2UJf3jI1C7E9hAuz42ayleKdGoezAsds="; + } + + @Override + public String texture(HypixelPlayer player) { + return "ewogICJ0aW1lc3RhbXAiIDogMTYwODMxNDY5NDY2OSwKICAicHJvZmlsZUlkIiA6ICI0MWQzYWJjMmQ3NDk0MDBjOTA5MGQ1NDM0ZDAzODMxYiIsCiAgInByb2ZpbGVOYW1lIiA6ICJNZWdha2xvb24iLAogICJzaWduYXR1cmVSZXF1aXJlZCIgOiB0cnVlLAogICJ0ZXh0dXJlcyIgOiB7CiAgICAiU0tJTiIgOiB7CiAgICAgICJ1cmwiIDogImh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNmIyMGIyM2MxYWEyYmUwMjcwZjAxNmI0YzkwZDZlZTZiODMzMGExN2NmZWY4Nzg2OWQ2YWQ2MGIyZmZiZjNiNSIKICAgIH0KICB9Cn0="; + } + + @Override + public Pos position(HypixelPlayer player) { + return new Pos(-38.000, 200.000, -119.000, 280, -3); + } + + @Override + public boolean looking() { + return true; + } + }); + } + + @Override + public void onClick(NPCInteractEvent event) { + new GUIGuide().open(event.player()); + } +} \ No newline at end of file diff --git a/type.dwarvenmines/src/main/java/net/swofty/type/dwarvenmines/npcs/NPCRoyalGuardOne.java b/type.dwarvenmines/src/main/java/net/swofty/type/dwarvenmines/npcs/NPCRoyalGuardOne.java index 87fef247a..5ec497db4 100644 --- a/type.dwarvenmines/src/main/java/net/swofty/type/dwarvenmines/npcs/NPCRoyalGuardOne.java +++ b/type.dwarvenmines/src/main/java/net/swofty/type/dwarvenmines/npcs/NPCRoyalGuardOne.java @@ -1,48 +1,14 @@ package net.swofty.type.dwarvenmines.npcs; -import net.kyori.adventure.text.Component; -import net.kyori.adventure.text.event.ClickEvent; import net.minestom.server.coordinate.Pos; -import net.swofty.type.generic.user.HypixelPlayer; -import net.swofty.type.generic.entity.npc.HypixelNPC; -import net.swofty.type.generic.entity.npc.configuration.HumanConfiguration; -import net.swofty.type.skyblockgeneric.user.SkyBlockPlayer; -public class NPCRoyalGuardOne extends HypixelNPC { +public class NPCRoyalGuardOne extends INPCRoyalGuard { public NPCRoyalGuardOne() { - super(new HumanConfiguration() { - @Override - public String[] holograms(HypixelPlayer player) { - return new String[]{"§6Royal Guard", "§e§lCLICK"}; - } - - @Override - public String signature(HypixelPlayer player) { - return "seuXIllWZjXjqV2JnR3IcWgjYKWb1wm0gK69ENtKNZZCcP0QKbqjHme1u+K/aIs+JIH0nSkdkj+5PP6/kbsRm64V789hHeDSYJ2aE8lcqamptdez63Ap//Nvv8ykDRPHTddvOlJ/zpeEOj2x2E0u4LtsyLaRlY24Ku8kkiy7L+EKZQ4Pl0mB2o2AtzZNECF1BYhhSguEzFVhu2emweFCD5yYcTcpyecnvKfedXy4uxaeTAls46rqCfGHJSLll6PatUwJ7ZcBQyN95RCR8I0+kdkkkFZ3v2nYllTLd3oJPpRD6GBkOA32uVFYEYXp4HAjN2odDZfPmw663jdVJtLvYIEc9FckQfY6uXjSt3V7/yzOrxP8iV22IMhXY1gaTjQFnoBFa/yRcVrbcJ1GIT3tJMYrB3hS8BnmR7jPQ05crUQjZHCqVzZEa74bM44eus3Db8sL6OALpYznP+u9Ss855AkjpIlwQw533qxMRZEffvnQ1wT556TeczvZDEb9zTszYqzCKt4uLG97k9aTYKpeJHIBbzCo9+xvGD0zzzTXZ7xKe4ZfpzKnFFjUrJRdqjddGRi5iV3WdHFLQ4VVcZyCqIhVNjt5bkCbObuqIdmhmCZNDvf8xmis1p890mLoTeln+Mu6/2NwgVXwuTtKgHnCGff4X7vdzepdomo0pZrgObk="; - } - - @Override - public String texture(HypixelPlayer player) { - return "ewogICJ0aW1lc3RhbXAiIDogMTYwNzQ2NDk5NDA2MSwKICAicHJvZmlsZUlkIiA6ICJhMmY4MzQ1OTVjODk0YTI3YWRkMzA0OTcxNmNhOTEwYyIsCiAgInByb2ZpbGVOYW1lIiA6ICJiUHVuY2giLAogICJzaWduYXR1cmVSZXF1aXJlZCIgOiB0cnVlLAogICJ0ZXh0dXJlcyIgOiB7CiAgICAiU0tJTiIgOiB7CiAgICAgICJ1cmwiIDogImh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOGU3YTQ2YzI1ODI2OGY0MmM4NTlkZDVjODAwOGE5N2M3MmI4ZDM3MGU5ODFjZTJkY2MwYzNmZDQ1MTYzOGVkNyIKICAgIH0KICB9Cn0="; - } - - @Override - public Pos position(HypixelPlayer player) { - return new Pos(-45.500, 200.000, -124.500, 90, 0); - } - - @Override - public boolean looking() { - return true; - } - }); - } - - @Override - public void onClick(NPCInteractEvent event) { - SkyBlockPlayer player = (SkyBlockPlayer) event.player(); - player.sendMessage(Component.text("§cThis Feature is not there yet. §aOpen a Pull request HERE to get it added quickly!") - .clickEvent(ClickEvent.openUrl("https://github.com/Swofty-Developments/HypixelSkyBlock"))); + super( + _ -> "seuXIllWZjXjqV2JnR3IcWgjYKWb1wm0gK69ENtKNZZCcP0QKbqjHme1u+K/aIs+JIH0nSkdkj+5PP6/kbsRm64V789hHeDSYJ2aE8lcqamptdez63Ap//Nvv8ykDRPHTddvOlJ/zpeEOj2x2E0u4LtsyLaRlY24Ku8kkiy7L+EKZQ4Pl0mB2o2AtzZNECF1BYhhSguEzFVhu2emweFCD5yYcTcpyecnvKfedXy4uxaeTAls46rqCfGHJSLll6PatUwJ7ZcBQyN95RCR8I0+kdkkkFZ3v2nYllTLd3oJPpRD6GBkOA32uVFYEYXp4HAjN2odDZfPmw663jdVJtLvYIEc9FckQfY6uXjSt3V7/yzOrxP8iV22IMhXY1gaTjQFnoBFa/yRcVrbcJ1GIT3tJMYrB3hS8BnmR7jPQ05crUQjZHCqVzZEa74bM44eus3Db8sL6OALpYznP+u9Ss855AkjpIlwQw533qxMRZEffvnQ1wT556TeczvZDEb9zTszYqzCKt4uLG97k9aTYKpeJHIBbzCo9+xvGD0zzzTXZ7xKe4ZfpzKnFFjUrJRdqjddGRi5iV3WdHFLQ4VVcZyCqIhVNjt5bkCbObuqIdmhmCZNDvf8xmis1p890mLoTeln+Mu6/2NwgVXwuTtKgHnCGff4X7vdzepdomo0pZrgObk=", + _ -> "ewogICJ0aW1lc3RhbXAiIDogMTYwNzQ2NDk5NDA2MSwKICAicHJvZmlsZUlkIiA6ICJhMmY4MzQ1OTVjODk0YTI3YWRkMzA0OTcxNmNhOTEwYyIsCiAgInByb2ZpbGVOYW1lIiA6ICJiUHVuY2giLAogICJzaWduYXR1cmVSZXF1aXJlZCIgOiB0cnVlLAogICJ0ZXh0dXJlcyIgOiB7CiAgICAiU0tJTiIgOiB7CiAgICAgICJ1cmwiIDogImh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOGU3YTQ2YzI1ODI2OGY0MmM4NTlkZDVjODAwOGE5N2M3MmI4ZDM3MGU5ODFjZTJkY2MwYzNmZDQ1MTYzOGVkNyIKICAgIH0KICB9Cn0=", + _ -> new Pos(-45.500, 200.000, -124.500, 90, 0) + ); } } \ No newline at end of file diff --git a/type.dwarvenmines/src/main/java/net/swofty/type/dwarvenmines/npcs/NPCRoyalGuardTwo.java b/type.dwarvenmines/src/main/java/net/swofty/type/dwarvenmines/npcs/NPCRoyalGuardTwo.java index 94f805372..d68873d42 100644 --- a/type.dwarvenmines/src/main/java/net/swofty/type/dwarvenmines/npcs/NPCRoyalGuardTwo.java +++ b/type.dwarvenmines/src/main/java/net/swofty/type/dwarvenmines/npcs/NPCRoyalGuardTwo.java @@ -1,48 +1,15 @@ package net.swofty.type.dwarvenmines.npcs; -import net.kyori.adventure.text.Component; -import net.kyori.adventure.text.event.ClickEvent; import net.minestom.server.coordinate.Pos; -import net.swofty.type.generic.user.HypixelPlayer; -import net.swofty.type.generic.entity.npc.HypixelNPC; -import net.swofty.type.generic.entity.npc.configuration.HumanConfiguration; -import net.swofty.type.skyblockgeneric.user.SkyBlockPlayer; -public class NPCRoyalGuardTwo extends HypixelNPC { +public class NPCRoyalGuardTwo extends INPCRoyalGuard { public NPCRoyalGuardTwo() { - super(new HumanConfiguration() { - @Override - public String[] holograms(HypixelPlayer player) { - return new String[]{"§6Royal Guard", "§e§lCLICK"}; - } - - @Override - public String signature(HypixelPlayer player) { - return "Ic93JjFO3ZL10gtcVoaGbsaHXjsUvq6dWirUPihZYzieAHVSyCSzrjMYDmMVvuIJGnVE8MCgcGQuYxh+J9TbmqdFugU9vVZvJ6urPTKJwyLrHtdz3tzUW4FF7+HkDn2nOBEm3lu3Pcszis49TFstpp4xfBUsvIpdivyzfeHH0KoWPTK/NE5IDdy7JqP3NS5IJg4L4Rt/zWuA17F/Pfm5+s5Ol9l7SAvSWhS/ed/lB7AzdHFGBx9SVSR1oGr1Sx9YxRKyFT4KRjc5czTUhiNUmiaZ/dwwn4cVYqjXbRG3sPQuMffuIO/QKo4ohWLU1My1SThC0qC4b52xMdzYQg8aV4rmJwe+zNkbpvylmpHNgIysTK9GO4clG3sBc+McdNM9NFKyLtxHdpGwu/ZHOPnPO5uu2vbCqnB+sxQ6I12esos+V1HPiFV4YZnCK2YxYB4MCkMjoWTJRkZhShAIcE8IgcQ/pHi5kwlqyy4kH/4Vfwd0YFK0oPFo7zfVOjj8wZaVnPmKdcAkMbO9kpOOUMPVt5/jfLyfiroRgJJQQJITVStXpmQFIieze6+aigsKhoiL5Mej4ggVrwniP8gc3iiK3p4HMeObKK0CfoiVPPP+sN9uEs443EGZmVrpuphD51xA0Qow4UtD6YhIRWPYiLzT1SV55dJ4gYy7Qr0rbDUbm+k="; - } - - @Override - public String texture(HypixelPlayer player) { - return "ewogICJ0aW1lc3RhbXAiIDogMTYxMDU3NzM3NDY3NCwKICAicHJvZmlsZUlkIiA6ICJiMGQ0YjI4YmMxZDc0ODg5YWYwZTg2NjFjZWU5NmFhYiIsCiAgInByb2ZpbGVOYW1lIiA6ICJNaW5lU2tpbl9vcmciLAogICJzaWduYXR1cmVSZXF1aXJlZCIgOiB0cnVlLAogICJ0ZXh0dXJlcyIgOiB7CiAgICAiU0tJTiIgOiB7CiAgICAgICJ1cmwiIDogImh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNzk0MWM5YzZhMzhiMjU0OWMyOTViMzQxOWI5MWMwM2YzMTAzNThmOTllMWViOWVkOGI5YjU5NGJlZWRlZjEwOCIKICAgIH0KICB9Cn0="; - } - - @Override - public Pos position(HypixelPlayer player) { - return new Pos(-45.500, 200.000, -118.500, 90, 0); - } - - @Override - public boolean looking() { - return true; - } - }); + super( + _ -> "Ic93JjFO3ZL10gtcVoaGbsaHXjsUvq6dWirUPihZYzieAHVSyCSzrjMYDmMVvuIJGnVE8MCgcGQuYxh+J9TbmqdFugU9vVZvJ6urPTKJwyLrHtdz3tzUW4FF7+HkDn2nOBEm3lu3Pcszis49TFstpp4xfBUsvIpdivyzfeHH0KoWPTK/NE5IDdy7JqP3NS5IJg4L4Rt/zWuA17F/Pfm5+s5Ol9l7SAvSWhS/ed/lB7AzdHFGBx9SVSR1oGr1Sx9YxRKyFT4KRjc5czTUhiNUmiaZ/dwwn4cVYqjXbRG3sPQuMffuIO/QKo4ohWLU1My1SThC0qC4b52xMdzYQg8aV4rmJwe+zNkbpvylmpHNgIysTK9GO4clG3sBc+McdNM9NFKyLtxHdpGwu/ZHOPnPO5uu2vbCqnB+sxQ6I12esos+V1HPiFV4YZnCK2YxYB4MCkMjoWTJRkZhShAIcE8IgcQ/pHi5kwlqyy4kH/4Vfwd0YFK0oPFo7zfVOjj8wZaVnPmKdcAkMbO9kpOOUMPVt5/jfLyfiroRgJJQQJITVStXpmQFIieze6+aigsKhoiL5Mej4ggVrwniP8gc3iiK3p4HMeObKK0CfoiVPPP+sN9uEs443EGZmVrpuphD51xA0Qow4UtD6YhIRWPYiLzT1SV55dJ4gYy7Qr0rbDUbm+k=", + _ -> "ewogICJ0aW1lc3RhbXAiIDogMTYxMDU3NzM3NDY3NCwKICAicHJvZmlsZUlkIiA6ICJiMGQ0YjI4YmMxZDc0ODg5YWYwZTg2NjFjZWU5NmFhYiIsCiAgInByb2ZpbGVOYW1lIiA6ICJNaW5lU2tpbl9vcmciLAogICJzaWduYXR1cmVSZXF1aXJlZCIgOiB0cnVlLAogICJ0ZXh0dXJlcyIgOiB7CiAgICAiU0tJTiIgOiB7CiAgICAgICJ1cmwiIDogImh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNzk0MWM5YzZhMzhiMjU0OWMyOTViMzQxOWI5MWMwM2YzMTAzNThmOTllMWViOWVkOGI5YjU5NGJlZWRlZjEwOCIKICAgIH0KICB9Cn0=", + _ -> new Pos(-45.5, 200.0, -118.5, 90, 0) + ); } - @Override - public void onClick(NPCInteractEvent event) { - SkyBlockPlayer player = (SkyBlockPlayer) event.player(); - player.sendMessage(Component.text("§cThis Feature is not there yet. §aOpen a Pull request HERE to get it added quickly!") - .clickEvent(ClickEvent.openUrl("https://github.com/Swofty-Developments/HypixelSkyBlock"))); - } } \ No newline at end of file diff --git a/type.dwarvenmines/src/main/java/net/swofty/type/dwarvenmines/npcs/NPCSilnar.java b/type.dwarvenmines/src/main/java/net/swofty/type/dwarvenmines/npcs/NPCSilnar.java new file mode 100644 index 000000000..04a5555a5 --- /dev/null +++ b/type.dwarvenmines/src/main/java/net/swofty/type/dwarvenmines/npcs/NPCSilnar.java @@ -0,0 +1,80 @@ +package net.swofty.type.dwarvenmines.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.user.HypixelPlayer; +import net.swofty.type.skyblockgeneric.user.SkyBlockPlayer; + +import java.util.stream.Stream; + +public class NPCSilnar extends HypixelNPC { + + public NPCSilnar() { + super(new HumanConfiguration() { + @Override + public String[] holograms(HypixelPlayer player) { + return new String[]{"§fSilnar", "§e§lCLICK"}; + } + + @Override + public String signature(HypixelPlayer player) { + return "jJzThnQ6wdSSb2ETJ6emtJhXx5w2oLRXi0loH8BRtlxDQ4MsFfdB77srnHhniwBx0tuHDLVowIvtz+013I4MeM17ZavqNrmkvBAAnums31MadYreoEIzcdnqI/mgChZ3GVUzUTP/FIBNmRYqkfIMsk2yN5BTOFi7hzHGDcMoWoBw20kz6ph0sDG2RWigKxFX2YLQyJuay4Ufsp4p8GR6hmCx016csMI22F9s70knFmO1ZimwxF74EjgWy3eSdRWrUbGxiRWRBLqjYKW648YjYvsaFLx1OLG3+PEmlTT3rXxGdWnQxcm53fygWuPGXUsLCpf7QV8dXwZi2iqOaqIrRKhznwBBCCEjz4GZRLdgltTFhaMtTaIExB33ejJZ7vfaWmJNa49S3awco04xCEHTQyWZRWl44mjqYBcuBfCVVJRuHIL8nUD8xX5KcTrlQavL/I2FZzQwBboXo7vESQWBsCe/SoJESTGKu9Uo8cFWzLZ8DyI+iNDXgLcsdCibEkBhwdm/lpUKuWGBO8FNZYIRJ77bIVsDvF1nxrOuP6+COlNJj03ysSjrQIzkeo++OS3Ecqjmg14Q064doaj0tbjofkzQgKfjOpqb/WFo91fn41PuCMUkpRUkzqsNx0VEF1LlagrfmwSyyKgCk3E1hyIaV6lWl5iSwlO/UHd1qXAlD/I="; + } + + @Override + public String texture(HypixelPlayer player) { + return "ewogICJ0aW1lc3RhbXAiIDogMTYwODMxMzQwOTk1NSwKICAicHJvZmlsZUlkIiA6ICI0MWQzYWJjMmQ3NDk0MDBjOTA5MGQ1NDM0ZDAzODMxYiIsCiAgInByb2ZpbGVOYW1lIiA6ICJNZWdha2xvb24iLAogICJzaWduYXR1cmVSZXF1aXJlZCIgOiB0cnVlLAogICJ0ZXh0dXJlcyIgOiB7CiAgICAiU0tJTiIgOiB7CiAgICAgICJ1cmwiIDogImh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNTdiMzU1MmM1YWYyYWIyZGM0ZTFmODRkNzhjYTRjNGQ2NzZkZWMwNjgxNTcyMjVhM2MyNjc0ZTU1NzRkMjM0OCIKICAgIH0KICB9Cn0="; + } + + @Override + public Pos position(HypixelPlayer player) { + return new Pos(53.063, 141.500, 19.500, 45, 0); + } + + @Override + public boolean looking() { + return true; + } + }); + } + + @Override + public void onClick(NPCInteractEvent event) { + SkyBlockPlayer player = (SkyBlockPlayer) event.player(); + if (isInDialogue(player)) return; + setDialogue(player, "idle"); + } + + @Override + protected DialogueSet[] dialogues(HypixelPlayer player) { + return Stream.of( + DialogueSet.builder() + .key("idle") + .lines(new String[]{ + "§fSee that giant cliff with the §dgiant crystal§f?", + "§bAt night§f, my friends host a §5secret meeting §f in a nearby §5secret cave§f.", + "§fDrop by some time, our §5secret club §fis open!", + "§fIf my friends approve of you, they'll give you a special item.", + "§fCome back to me then and show it to me!" + }) + .build(), + DialogueSet.builder() + .key("wearing-fallen-star-helmet") + .lines(new String[]{ + "§fHurrah! A fellow member of the §5Cult of the Fallen Star§f!", + "§fHey, I've crafted new tech to let us locate §5Fallen Stars §feasily.", + "§fCheck it out!", + }) + .build(), + DialogueSet.builder() + .key("after-claiming-fallen-star-lozenge") + .lines(new String[]{ + "§fWith the §5Fallen Star Lozenge§f, you can find §5Fallen Stars §fmuch easier!", + "§fNow go find some stars, but don't forget about the next meeting of the §5Cult§f!", + "§fI expect to see you there!" + }) + .build() + ).toArray(DialogueSet[]::new); + } +} \ No newline at end of file diff --git a/type.dwarvenmines/src/main/java/net/swofty/type/dwarvenmines/npcs/VillagerBlacksmith.java b/type.dwarvenmines/src/main/java/net/swofty/type/dwarvenmines/npcs/VillagerBlacksmith.java new file mode 100644 index 000000000..97200e690 --- /dev/null +++ b/type.dwarvenmines/src/main/java/net/swofty/type/dwarvenmines/npcs/VillagerBlacksmith.java @@ -0,0 +1,42 @@ +package net.swofty.type.dwarvenmines.npcs; + +import net.minestom.server.coordinate.Pos; +import net.minestom.server.entity.VillagerProfession; +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.user.SkyBlockPlayer; + +public class VillagerBlacksmith extends HypixelNPC { + public VillagerBlacksmith() { + super(new VillagerConfiguration() { + @Override + public String[] holograms(HypixelPlayer player) { + return new String[]{"Blacksmith", "§e§lCLICK"}; + } + + @Override + public Pos position(HypixelPlayer player) { + return new Pos(-6.5, 201.00, -154.50, 0f, 0f); + } + + @Override + public boolean looking() { + return true; + } + + @Override + public VillagerProfession profession() { + return VillagerProfession.WEAPONSMITH; + } + }); + } + + @Override + public void onClick(NPCInteractEvent e) { + SkyBlockPlayer player = (SkyBlockPlayer) e.player(); + new GUIReforge().open(player); + } +} + diff --git a/type.generic/src/main/java/net/swofty/type/generic/HypixelGenericLoader.java b/type.generic/src/main/java/net/swofty/type/generic/HypixelGenericLoader.java index 06f05b64d..f246161a9 100644 --- a/type.generic/src/main/java/net/swofty/type/generic/HypixelGenericLoader.java +++ b/type.generic/src/main/java/net/swofty/type/generic/HypixelGenericLoader.java @@ -56,12 +56,16 @@ public void initialize(MinecraftServer server) { HypixelConst.setTypeLoader(loader); InstanceManager instanceManager = MinecraftServer.getInstanceManager(); - /** - * Handle instances - */ + // Handle instances CustomWorlds mainInstance = loader.getMainInstance(); if (mainInstance != null) { - InstanceContainer temporaryInstance = instanceManager.createInstanceContainer(); + InstanceContainer temporaryInstance; + // If a custom DimensionType is provided, use that + if (loader.getDimensionType() != null) { + temporaryInstance = instanceManager.createInstanceContainer(loader.getDimensionType()); + } else { + temporaryInstance = instanceManager.createInstanceContainer(); + } temporaryInstance.setChunkLoader(new AnvilLoader(loader.getMainInstance().getFolderName())); HypixelConst.setInstanceContainer(instanceManager.createSharedInstance(temporaryInstance)); @@ -70,9 +74,7 @@ public void initialize(MinecraftServer server) { HypixelConst.getEmptyInstance().setBlock(0, 99, 0, Block.BEDROCK); HypixelConst.setEventHandler(MinecraftServer.getGlobalEventHandler()); - /** - * Register commands - */ + // Register commands MinecraftServer.getCommandManager().setUnknownCommandCallback((sender, command) -> { // Large amount of Clients (such as Lunar) send a `/tip all` when joining // due to the scoreboard containing `hypixel.net` diff --git a/type.generic/src/main/java/net/swofty/type/generic/HypixelTypeLoader.java b/type.generic/src/main/java/net/swofty/type/generic/HypixelTypeLoader.java index 281ff2811..2f86b947d 100644 --- a/type.generic/src/main/java/net/swofty/type/generic/HypixelTypeLoader.java +++ b/type.generic/src/main/java/net/swofty/type/generic/HypixelTypeLoader.java @@ -2,6 +2,8 @@ import net.minestom.server.MinecraftServer; import net.minestom.server.coordinate.Pos; +import net.minestom.server.registry.RegistryKey; +import net.minestom.server.world.DimensionType; import net.swofty.commons.CustomWorlds; import net.swofty.commons.ServerType; import net.swofty.commons.ServiceType; @@ -41,4 +43,13 @@ public interface HypixelTypeLoader { record LoaderValues(Function spawnPosition, boolean announceDeathMessages) {} @Nullable CustomWorlds getMainInstance(); + + /** + * Gets the dimension type for this server type, or null if the default should be used. You should also register + * the DimensionType to the registry in the same method. + * @return The dimension type for this server type, or null if the default should be used. + */ + @Nullable default RegistryKey getDimensionType() { + return null; + } } diff --git a/type.generic/src/main/java/net/swofty/type/generic/gui/inventory/HypixelInventoryGUI.java b/type.generic/src/main/java/net/swofty/type/generic/gui/inventory/HypixelInventoryGUI.java index ffad4ca5a..aa6bba47b 100644 --- a/type.generic/src/main/java/net/swofty/type/generic/gui/inventory/HypixelInventoryGUI.java +++ b/type.generic/src/main/java/net/swofty/type/generic/gui/inventory/HypixelInventoryGUI.java @@ -23,6 +23,7 @@ public abstract class HypixelInventoryGUI { public static final Map GUI_MAP = new ConcurrentHashMap<>(); public static final ItemStack.Builder FILLER_ITEM = ItemStack.builder(Material.BLACK_STAINED_GLASS_PANE) + .set(DataComponents.CUSTOM_NAME, Component.space()) .set(DataComponents.TOOLTIP_DISPLAY, TooltipDisplay.EMPTY); protected String title; diff --git a/type.goldmine/src/main/java/net/swofty/type/goldmine/villagers/VillagerBlacksmith.java b/type.goldmine/src/main/java/net/swofty/type/goldmine/villagers/VillagerBlacksmith.java index 6d557d5f9..59a978c87 100644 --- a/type.goldmine/src/main/java/net/swofty/type/goldmine/villagers/VillagerBlacksmith.java +++ b/type.goldmine/src/main/java/net/swofty/type/goldmine/villagers/VillagerBlacksmith.java @@ -6,14 +6,8 @@ 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.MissionData; -import net.swofty.type.skyblockgeneric.mission.missions.blacksmith.MissionMineCoal; -import net.swofty.type.skyblockgeneric.mission.missions.blacksmith.MissionTalkToBlacksmith; -import net.swofty.type.skyblockgeneric.mission.missions.blacksmith.MissionTalkToBlacksmithAgain; import net.swofty.type.skyblockgeneric.user.SkyBlockPlayer; -import java.util.stream.Stream; - public class VillagerBlacksmith extends HypixelNPC { public VillagerBlacksmith() { super(new VillagerConfiguration() { @@ -42,45 +36,6 @@ public VillagerProfession profession() { @Override public void onClick(NPCInteractEvent e) { SkyBlockPlayer player = (SkyBlockPlayer) e.player(); - if (isInDialogue(player)) return; - MissionData data = player.getMissionData(); - - if (data.isCurrentlyActive(MissionTalkToBlacksmith.class)) { - setDialogue(player, "initial-hello").thenRun(() -> { - data.endMission(MissionTalkToBlacksmith.class); - }); - return; - } - if (!data.hasCompleted(MissionMineCoal.class)) { - player.sendMessage("§e[NPC] Blacksmith§f: Retrieve 10 coal from the Coal Mines!"); - return; - } - if (!data.hasCompleted(MissionTalkToBlacksmithAgain.class)) { - setDialogue(player, "spoke-again").thenRun(() -> { - data.endMission(MissionTalkToBlacksmithAgain.class); - }); - return; - } - new GUIReforge().open(player); } - - @Override - public DialogueSet[] dialogues(HypixelPlayer player) { - return Stream.of( - DialogueSet.builder() - .key("initial-hello").lines(new String[]{ - "I'm the town Blacksmith! I can §areforge §fitems for you, for a price.", - "Reforging usually costs Coins, but since I'm feeling friendly I can reforge your first item for Coal §8x10.", - "Go into the Mine to collect Coal, then come back to learn how to reforge items!" - }).build(), - DialogueSet.builder() - .key("spoke-again").lines(new String[]{ - "Ahh, excellent!", - "Reforging items allows you to get the most out of your weapons, armor, and other items by applying stat modifiers to them!", - "To reforge an item, place an item in my inventory. Reforging costs Coins - the more prestigious items cost more to reforge!", - "However, this time I will reforge any item for the low price of Coal §8x10!" - }).build() - ).toArray(DialogueSet[]::new); - } } diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/SkyBlockGenericLoader.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/SkyBlockGenericLoader.java index e2bfa69fc..cdc223ac8 100644 --- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/SkyBlockGenericLoader.java +++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/SkyBlockGenericLoader.java @@ -294,9 +294,7 @@ public void initialize(MinecraftServer server) { CustomGroups.registerAudiences(); PlayerStatistics.run(); - /** - * Start repeaters - */ + // Start repeaters SkyBlockScoreboard.start(); StashReminder.start(MinecraftServer.getSchedulerManager()); PlayerHolograms.updateAll(MinecraftServer.getSchedulerManager()); diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/commands/WarpCommand.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/commands/WarpCommand.java index f2f050d30..b353c229d 100644 --- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/commands/WarpCommand.java +++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/commands/WarpCommand.java @@ -1,15 +1,17 @@ package net.swofty.type.skyblockgeneric.commands; +import net.kyori.adventure.text.Component; import net.minestom.server.command.builder.arguments.ArgumentString; import net.minestom.server.command.builder.arguments.ArgumentType; +import net.minestom.server.command.builder.suggestion.SuggestionEntry; import net.swofty.commons.ServerType; import net.swofty.type.generic.HypixelConst; import net.swofty.type.generic.command.CommandParameters; import net.swofty.type.generic.command.HypixelCommand; import net.swofty.type.generic.data.datapoints.DatapointStringList; +import net.swofty.type.generic.user.categories.Rank; import net.swofty.type.skyblockgeneric.data.SkyBlockDataHandler; import net.swofty.type.skyblockgeneric.user.SkyBlockPlayer; -import net.swofty.type.generic.user.categories.Rank; import net.swofty.type.skyblockgeneric.warps.TravelScrollIslands; import net.swofty.type.skyblockgeneric.warps.TravelScrollType; @@ -24,6 +26,11 @@ public class WarpCommand extends HypixelCommand { @Override public void registerUsage(MinestomCommand command) { ArgumentString warpArgument = ArgumentType.String("warp"); + warpArgument.setSuggestionCallback(((sender, context, suggestion) -> { + for (TravelScrollIslands island : TravelScrollIslands.values()) { + suggestion.addEntry(new SuggestionEntry(island.getInternalName(), Component.text(island.getDescriptiveName()))); + } + })); command.addSyntax((sender, context) -> { if (!permissionCheck(sender)) return; diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/user/SkyBlockScoreboard.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/user/SkyBlockScoreboard.java index 338754c11..087b31412 100644 --- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/user/SkyBlockScoreboard.java +++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/user/SkyBlockScoreboard.java @@ -8,21 +8,21 @@ import net.minestom.server.timer.TaskSchedule; import net.swofty.commons.StringUtility; import net.swofty.commons.auctions.DarkAuctionPhase; +import net.swofty.commons.item.ItemType; import net.swofty.type.generic.HypixelConst; +import net.swofty.type.generic.data.datapoints.DatapointDouble; +import net.swofty.type.generic.data.datapoints.DatapointInteger; +import net.swofty.type.generic.utility.BlockUtility; import net.swofty.type.skyblockgeneric.SkyBlockGenericLoader; import net.swofty.type.skyblockgeneric.calendar.SkyBlockCalendar; import net.swofty.type.skyblockgeneric.darkauction.DarkAuctionHandler; -import net.swofty.type.generic.data.datapoints.DatapointDouble; -import net.swofty.type.generic.data.datapoints.DatapointInteger; import net.swofty.type.skyblockgeneric.data.SkyBlockDataHandler; import net.swofty.type.skyblockgeneric.item.SkyBlockItem; -import net.swofty.commons.item.ItemType; 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.mission.SkyBlockProgressMission; import net.swofty.type.skyblockgeneric.region.SkyBlockRegion; -import net.swofty.type.generic.utility.BlockUtility; import java.text.SimpleDateFormat; import java.util.Date; diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/warps/TravelScrollIslands.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/warps/TravelScrollIslands.java index bca81b79b..e480e75d2 100644 --- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/warps/TravelScrollIslands.java +++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/warps/TravelScrollIslands.java @@ -4,7 +4,6 @@ import lombok.NonNull; import net.swofty.commons.ServerType; import net.swofty.type.skyblockgeneric.skill.SkillCategories; -import net.swofty.type.skyblockgeneric.user.SkyBlockPlayer; import org.jetbrains.annotations.Nullable; import java.util.ArrayList; @@ -39,7 +38,7 @@ public enum TravelScrollIslands { private final SkillCategories associatedSkill; private final Integer islandTier; - TravelScrollIslands(String internalName, String descriptiveName, String texture, Function description, ServerType serverType, SkillCategories associatedSkill, Integer islandTier) { + TravelScrollIslands(String internalName, String descriptiveName, String texture, Function description, @NonNull ServerType serverType, SkillCategories associatedSkill, Integer islandTier) { this.internalName = internalName; this.descriptiveName = descriptiveName; this.texture = texture; @@ -49,7 +48,7 @@ public enum TravelScrollIslands { this.islandTier = islandTier; } - TravelScrollIslands(String internalName, String descriptiveName, String texture, Function description, ServerType serverType) { + TravelScrollIslands(String internalName, String descriptiveName, String texture, Function description, @NonNull ServerType serverType) { this.internalName = internalName; this.descriptiveName = descriptiveName; this.texture = texture; @@ -59,7 +58,7 @@ public enum TravelScrollIslands { this.islandTier = null; } - TravelScrollIslands(String internalName, String descriptiveName, String texture, Function description, ServerType serverType, List associatedScrolls) { + TravelScrollIslands(String internalName, String descriptiveName, String texture, Function description, @NonNull ServerType serverType, List associatedScrolls) { this.internalName = internalName; this.description = description; this.serverType = serverType; @@ -97,7 +96,4 @@ public enum TravelScrollIslands { return null; } - public void sendPlayer(SkyBlockPlayer player) { - - } }