diff --git a/commons/src/main/java/net/swofty/commons/CustomWorlds.java b/commons/src/main/java/net/swofty/commons/CustomWorlds.java index 4570f32b7..a90f45c2d 100644 --- a/commons/src/main/java/net/swofty/commons/CustomWorlds.java +++ b/commons/src/main/java/net/swofty/commons/CustomWorlds.java @@ -12,6 +12,7 @@ public enum CustomWorlds { SKYBLOCK_THE_PARK("hypixel_skyblock_the_park"), SKYBLOCK_GALATEA("hypixel_skyblock_galatea"), SKYBLOCK_BACKWATER_BAYOU("hypixel_skyblock_backwater_bayou"), + SKYBLOCK_JERRYS_WORKSHOP("hypixel_skyblock_jerrys_workshop"), SKYBLOCK_DUNGEON_HUB("hypixel_skyblock_dungeon_hub"), PROTOTYPE_LOBBY("hypixel_prototype_lobby"), BEDWARS_LOBBY("hypixel_bedwars_lobby"), diff --git a/commons/src/main/java/net/swofty/commons/ServerType.java b/commons/src/main/java/net/swofty/commons/ServerType.java index 8ce903925..8044fe3c4 100644 --- a/commons/src/main/java/net/swofty/commons/ServerType.java +++ b/commons/src/main/java/net/swofty/commons/ServerType.java @@ -17,6 +17,7 @@ public enum ServerType { SKYBLOCK_THE_PARK(true), SKYBLOCK_GALATEA(true), SKYBLOCK_BACKWATER_BAYOU(true), + SKYBLOCK_JERRYS_WORKSHOP(true), PROTOTYPE_LOBBY(false), BEDWARS_LOBBY(false), BEDWARS_GAME(false), diff --git a/configuration/skyblock/Minestom.regions.csv b/configuration/skyblock/Minestom.regions.csv index 92a53720b..67fd59ac2 100644 --- a/configuration/skyblock/Minestom.regions.csv +++ b/configuration/skyblock/Minestom.regions.csv @@ -82,10 +82,22 @@ gb2,GOBLIN_BURROWS,-60,163,180,-192,131,110,DWARVEN_MINES mist1,THE_MIST,-60,83,2,200,63,160,DWARVEN_MINES cliffv,CLIFFSIDE_VEINS,6,154,23,92,114,56,DWARVEN_MINES wilderness_1,WILDERNESS,58,71,118,123,76,123,HUB -barn_1,THE_BARN,82,26,-177,250,120,-334,THE_FARMING_ISLANDS, +barn_1,THE_BARN,82,26,-177,250,120,-334,THE_FARMING_ISLANDS birch_forest,BIRCH_PARK,-255,114,26,-336,41,-90,THE_PARK spruce_forest,SPRUCE_WOODS,-387,151,-22,-309,59,107,THE_PARK dark_thicket,DARK_THICKET,-333,148,-24,-415,59,-122,THE_PARK trial_of_fire,TRIALS_OF_FIRE,-369,120,-100,-357,101,-88,THE_PARK jungle,JUNGLE_ISLAND,-417,149,-130,-507,68,-18,THE_PARK -savanna,SAVANNA_WOODLAND,-467,155,-20,-383,56,102,THE_PARK \ No newline at end of file +savanna,SAVANNA_WOODLAND,-467,155,-20,-383,56,102,THE_PARK +sherry,SHERRYS_SHOWROOM,21,98,86,7,76,108,JERRYS_WORKSHOP +jerry,JERRYS_WORKSHOP,139,183,200,-163,30,-167,JERRYS_WORKSHOP +terry,TERRYS_SHACK,-87,94,30,-95,76,21,JERRYS_WORKSHOP +pond,JERRY_POND,-82,110,-17,-35,68,63,JERRYS_WORKSHOP +sunken_pond,SUNKEN_JERRY_POND,-68,74,106,-118,56,32,JERRYS_WORKSHOP +mount,MOUNT_JERRY,-57,81,-40,51,158,-104,JERRYS_WORKSHOP +hotsprings,HOT_SPRINGS,-32,82,-32,60,46,-86,JERRYS_WORKSHOP +hotsprings2,HOT_SPRINGS,-1,74,-35,101,49,12,JERRYS_WORKSHOP +glacial,GLACIAL_CAVE,56,88,20,111,63,115,JERRYS_WORKSHOP +gary,GARYS_SHACK,56,102,52,49,118,63,JERRYS_WORKSHOP +einary,EINARYS_EMPORIUM,-12,75,60,-21,86,66,JERRYS_WORKSHOP +einary2,EINARYS_EMPORIUM,-21,75,66,-17,84,70,JERRYS_WORKSHOP \ No newline at end of file diff --git a/loader/build.gradle.kts b/loader/build.gradle.kts index e00edd477..46ae6b65c 100644 --- a/loader/build.gradle.kts +++ b/loader/build.gradle.kts @@ -36,6 +36,7 @@ dependencies { implementation(project(":type.thepark")) implementation(project(":type.galatea")) implementation(project(":type.backwaterbayou")) + implementation(project(":type.jerrysworkshop")) implementation(project(":type.dungeonhub")) implementation(project(":type.skyblockgeneric")) implementation(project(":type.prototypelobby")) diff --git a/settings.gradle.kts b/settings.gradle.kts index ed8b96c6f..f535f8069 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -25,6 +25,7 @@ include(":type.dwarvenmines") include(":type.thepark") include(":type.galatea") include(":type.backwaterbayou") +include(":type.jerrysworkshop") include(":type.island") include(":type.hub") include(":type.dungeonhub") 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 c037b7bb6..2278562fd 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 @@ -21,6 +21,8 @@ import net.swofty.commons.Configuration; import net.swofty.commons.CustomWorlds; import net.swofty.commons.ServerType; +import net.swofty.type.generic.block.PlayerHeadBlockHandler; +import net.swofty.type.generic.block.SignBlockHandler; import net.swofty.type.generic.command.HypixelCommand; import net.swofty.type.generic.data.GameDataHandlerRegistry; import net.swofty.type.generic.data.HypixelDataHandler; @@ -193,6 +195,10 @@ public void initialize(MinecraftServer server) { GameDataHandlerRegistry.register(new BedWarsDataHandler()); GameDataHandlerRegistry.register(new PrototypeLobbyDataHandler()); + // Register Block Handlers + MinecraftServer.getBlockManager().registerHandler(PlayerHeadBlockHandler.KEY, PlayerHeadBlockHandler::new); + MinecraftServer.getBlockManager().registerHandler(SignBlockHandler.KEY, SignBlockHandler::new); + // Register NPCs if (mainInstance != null) { loader.getNPCs().forEach(HypixelNPC::register); diff --git a/type.generic/src/main/java/net/swofty/type/generic/block/PlayerHeadBlockHandler.java b/type.generic/src/main/java/net/swofty/type/generic/block/PlayerHeadBlockHandler.java new file mode 100644 index 000000000..575046c69 --- /dev/null +++ b/type.generic/src/main/java/net/swofty/type/generic/block/PlayerHeadBlockHandler.java @@ -0,0 +1,23 @@ +package net.swofty.type.generic.block; + +import net.kyori.adventure.key.Key; +import net.minestom.server.instance.block.BlockHandler; +import net.minestom.server.tag.Tag; +import org.jspecify.annotations.NonNull; + +import java.util.Collection; +import java.util.Set; + +public class PlayerHeadBlockHandler implements BlockHandler { + public static final Key KEY = Key.key("minecraft:skull"); + + @Override + public @NonNull Key getKey() { + return KEY; + } + + @Override + public @NonNull Collection> getBlockEntityTags() { + return Set.of(Tag.NBT("profile")); + } +} diff --git a/type.generic/src/main/java/net/swofty/type/generic/block/SignBlockHandler.java b/type.generic/src/main/java/net/swofty/type/generic/block/SignBlockHandler.java new file mode 100644 index 000000000..fa711cafe --- /dev/null +++ b/type.generic/src/main/java/net/swofty/type/generic/block/SignBlockHandler.java @@ -0,0 +1,26 @@ +package net.swofty.type.generic.block; + +import net.kyori.adventure.key.Key; +import net.minestom.server.instance.block.BlockHandler; +import net.minestom.server.tag.Tag; +import org.jetbrains.annotations.NotNull; + +import java.util.Collection; +import java.util.Set; + +public final class SignBlockHandler implements BlockHandler { + public static final Key KEY = Key.key("minecraft:sign"); + + @Override + public @NotNull Key getKey() { + return KEY; + } + + @Override + public @NotNull Collection> getBlockEntityTags() { + return Set.of( + Tag.Byte("is_waxed"), + Tag.NBT("front_text"), + Tag.NBT("back_text")); + } +} \ No newline at end of file diff --git a/type.generic/src/main/java/net/swofty/type/generic/data/datapoints/DatapointMapLongInteger.java b/type.generic/src/main/java/net/swofty/type/generic/data/datapoints/DatapointMapLongInteger.java new file mode 100644 index 000000000..ecbed025e --- /dev/null +++ b/type.generic/src/main/java/net/swofty/type/generic/data/datapoints/DatapointMapLongInteger.java @@ -0,0 +1,25 @@ +package net.swofty.type.generic.data.datapoints; + +import net.swofty.commons.protocol.JacksonSerializer; +import net.swofty.type.generic.data.Datapoint; + +import java.util.HashMap; +import java.util.Map; + +public class DatapointMapLongInteger extends Datapoint> { + private static final JacksonSerializer> serializer = + new JacksonSerializer<>((Class) Map.class); + + public DatapointMapLongInteger(String key, Map value) { + super(key, value, serializer); + } + + // Required for deepClone() reflection which passes HashMap.class + public DatapointMapLongInteger(String key, HashMap value) { + super(key, value, serializer); + } + + public DatapointMapLongInteger(String key) { + super(key, new HashMap<>(), serializer); + } +} diff --git a/type.generic/src/main/java/net/swofty/type/generic/data/datapoints/DatapointPresentYear.java b/type.generic/src/main/java/net/swofty/type/generic/data/datapoints/DatapointPresentYear.java new file mode 100644 index 000000000..24d9e4b88 --- /dev/null +++ b/type.generic/src/main/java/net/swofty/type/generic/data/datapoints/DatapointPresentYear.java @@ -0,0 +1,26 @@ +package net.swofty.type.generic.data.datapoints; + +import net.swofty.commons.protocol.JacksonSerializer; +import net.swofty.type.generic.data.Datapoint; + +import java.time.Year; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class DatapointPresentYear extends Datapoint { + private static final JacksonSerializer serializer = + new JacksonSerializer<>((Class) DatapointPresentYear.YearData.class); + + public DatapointPresentYear(String key, YearData value) { + super(key, value, serializer); + } + + public DatapointPresentYear(String key) { + super(key, new YearData(0, List.of()), serializer); + } + + public record YearData(int year, List value) { + + } +} diff --git a/type.generic/src/main/java/net/swofty/type/generic/entity/BlockDisplayEntity.java b/type.generic/src/main/java/net/swofty/type/generic/entity/BlockDisplayEntity.java new file mode 100644 index 000000000..127012cf1 --- /dev/null +++ b/type.generic/src/main/java/net/swofty/type/generic/entity/BlockDisplayEntity.java @@ -0,0 +1,25 @@ +package net.swofty.type.generic.entity; + +import net.minestom.server.coordinate.Pos; +import net.minestom.server.entity.EntityType; +import net.minestom.server.entity.LivingEntity; +import net.minestom.server.entity.metadata.display.BlockDisplayMeta; +import net.minestom.server.entity.metadata.other.InteractionMeta; +import net.minestom.server.event.player.PlayerEntityInteractEvent; +import net.minestom.server.instance.block.Block; +import net.swofty.commons.bedwars.map.BedWarsMapsConfig; +import net.swofty.type.generic.user.HypixelPlayer; + +import java.util.function.BiConsumer; + +public class BlockDisplayEntity extends LivingEntity { + + public BlockDisplayEntity(Block block) { + super(EntityType.BLOCK_DISPLAY); + + editEntityMeta(BlockDisplayMeta.class, meta -> { + meta.setBlockState(block); + meta.setHasNoGravity(true); + }); + } +} diff --git a/type.jerrysworkshop/build.gradle.kts b/type.jerrysworkshop/build.gradle.kts new file mode 100644 index 000000000..ebbf60364 --- /dev/null +++ b/type.jerrysworkshop/build.gradle.kts @@ -0,0 +1,27 @@ +plugins { + java +} + +group = "net.swofty" +version = "3.0" + +java { + sourceCompatibility = JavaVersion.VERSION_25 + targetCompatibility = JavaVersion.VERSION_25 + toolchain { + languageVersion.set(JavaLanguageVersion.of(25)) + } +} + +dependencies { + implementation(project(":type.skyblockgeneric")) + implementation(project(":type.generic")) + implementation(project(":commons")) + implementation(project(":proxy.api")) + compileOnly("net.minestom:minestom:2025.12.20c-1.21.11") { + exclude(group = "org.jboss.shrinkwrap.resolver", module = "shrinkwrap-resolver-depchain") + } + implementation("org.tinylog:tinylog-api:2.7.0") + implementation("org.tinylog:tinylog-impl:2.7.0") + implementation("org.joml:joml:1.10.8") +} \ No newline at end of file diff --git a/type.jerrysworkshop/src/main/java/net/swofty/type/jerrysworkshop/TypeJerrysWorkshopLoader.java b/type.jerrysworkshop/src/main/java/net/swofty/type/jerrysworkshop/TypeJerrysWorkshopLoader.java new file mode 100644 index 000000000..00556ec3e --- /dev/null +++ b/type.jerrysworkshop/src/main/java/net/swofty/type/jerrysworkshop/TypeJerrysWorkshopLoader.java @@ -0,0 +1,138 @@ +package net.swofty.type.jerrysworkshop; + +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.event.ClickEvent; +import net.minestom.server.MinecraftServer; +import net.minestom.server.coordinate.Pos; +import net.swofty.commons.CustomWorlds; +import net.swofty.commons.ServerType; +import net.swofty.commons.ServiceType; +import net.swofty.commons.skyblock.item.ItemType; +import net.swofty.proxyapi.redis.ProxyToClient; +import net.swofty.proxyapi.redis.ServiceToClient; +import net.swofty.type.generic.HypixelConst; +import net.swofty.type.generic.SkyBlockTypeLoader; +import net.swofty.type.generic.entity.npc.HypixelNPC; +import net.swofty.type.generic.event.HypixelEventClass; +import net.swofty.type.generic.tab.TablistManager; +import net.swofty.type.generic.tab.TablistModule; +import net.swofty.type.jerrysworkshop.present.Present; +import net.swofty.type.skyblockgeneric.SkyBlockGenericLoader; +import net.swofty.type.skyblockgeneric.entity.GlassDisplay; +import net.swofty.type.skyblockgeneric.item.SkyBlockItem; +import net.swofty.type.skyblockgeneric.tabmodules.AccountInformationModule; +import net.swofty.type.skyblockgeneric.tabmodules.SkyBlockPlayersOnlineModule; +import net.swofty.type.jerrysworkshop.tab.JerrysWorkshopServerModule; +import org.jetbrains.annotations.Nullable; +import org.tinylog.Logger; + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +public class TypeJerrysWorkshopLoader implements SkyBlockTypeLoader { + @Override + public ServerType getType() { + return ServerType.SKYBLOCK_JERRYS_WORKSHOP; + } + + @Override + public void onInitialize(MinecraftServer server) { + Logger.info("TypeJerrysWorkshopLoader initialized!"); + } + + @Override + public void afterInitialize(MinecraftServer server) { + GlassDisplay.create(new SkyBlockItem(ItemType.DIRT), HypixelConst.getInstanceContainer(), new Pos(14, 77, 91), (player, event) -> { + 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"))); + }); + + GlassDisplay.create(new SkyBlockItem(ItemType.DIRT), HypixelConst.getInstanceContainer(), new Pos(16, 77, 91), (player, event) -> { + 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"))); + }); + + GlassDisplay.create(new SkyBlockItem(ItemType.DIRT), HypixelConst.getInstanceContainer(), new Pos(13, 77, 97), (player, event) -> { + 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"))); + }); + + GlassDisplay.create(new SkyBlockItem(ItemType.DIRT), HypixelConst.getInstanceContainer(), new Pos(13, 77, 99), (player, event) -> { + 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"))); + }); + + GlassDisplay.create(new SkyBlockItem(ItemType.DIRT), HypixelConst.getInstanceContainer(), new Pos(13, 77, 101), (player, event) -> { + 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"))); + }); + + Present.spawnAll(); + } + + @Override + public LoaderValues getLoaderValues() { + return new LoaderValues( + (type) -> switch (type) { + default -> new Pos(-4.5, 76, 100.5, -180, 0); + }, // Spawn position + true // Announce death messages + ); + } + + public TablistManager getTablistManager() { + return new TablistManager() { + @Override + public List getModules() { + return new ArrayList<>(List.of( + new SkyBlockPlayersOnlineModule(1), + new SkyBlockPlayersOnlineModule(2), + new JerrysWorkshopServerModule(), + new AccountInformationModule() + )); + } + }; + } + + @Override + public List getTraditionalEvents() { + return SkyBlockGenericLoader.loopThroughPackage( + "net.swofty.type.jerrysworkshop.events", + HypixelEventClass.class + ).collect(Collectors.toList()); + } + + @Override + public List getCustomEvents() { + return new ArrayList<>(); + } + + @Override + public List getNPCs() { + return new ArrayList<>(SkyBlockGenericLoader.loopThroughPackage( + "net.swofty.type.jerrysworkshop.npcs", + HypixelNPC.class + ).toList()); + } + + @Override + public List getServiceRedisListeners() { + return List.of(); + } + + @Override + public List getProxyRedisListeners() { + return List.of(); + } + + @Override + public List getRequiredServices() { + return new ArrayList<>(List.of(ServiceType.DATA_MUTEX)); + } + + @Override + public @Nullable CustomWorlds getMainInstance() { + return CustomWorlds.SKYBLOCK_JERRYS_WORKSHOP; + } +} diff --git a/type.jerrysworkshop/src/main/java/net/swofty/type/jerrysworkshop/events/ActionPlayerJoin.java b/type.jerrysworkshop/src/main/java/net/swofty/type/jerrysworkshop/events/ActionPlayerJoin.java new file mode 100644 index 000000000..59b201f03 --- /dev/null +++ b/type.jerrysworkshop/src/main/java/net/swofty/type/jerrysworkshop/events/ActionPlayerJoin.java @@ -0,0 +1,26 @@ +package net.swofty.type.jerrysworkshop.events; + +import lombok.SneakyThrows; +import net.minestom.server.event.player.AsyncPlayerConfigurationEvent; +import net.swofty.type.generic.HypixelConst; +import net.swofty.type.generic.event.EventNodes; +import net.swofty.type.generic.event.HypixelEvent; +import net.swofty.type.generic.event.HypixelEventClass; +import net.swofty.type.skyblockgeneric.user.SkyBlockPlayer; + +public class ActionPlayerJoin implements HypixelEventClass { + + @SneakyThrows + @HypixelEvent(node = EventNodes.PLAYER, requireDataLoaded = false) + public void run(AsyncPlayerConfigurationEvent event) { + + final SkyBlockPlayer player = (SkyBlockPlayer) event.getPlayer(); + + event.setSpawningInstance(HypixelConst.getInstanceContainer()); + player.setRespawnPoint(HypixelConst.getTypeLoader() + .getLoaderValues() + .spawnPosition() + .apply(player.getOriginServer()) + ); + } +} diff --git a/type.jerrysworkshop/src/main/java/net/swofty/type/jerrysworkshop/npcs/NPCBankerBarry.java b/type.jerrysworkshop/src/main/java/net/swofty/type/jerrysworkshop/npcs/NPCBankerBarry.java new file mode 100644 index 000000000..893324682 --- /dev/null +++ b/type.jerrysworkshop/src/main/java/net/swofty/type/jerrysworkshop/npcs/NPCBankerBarry.java @@ -0,0 +1,45 @@ +package net.swofty.type.jerrysworkshop.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.event.custom.NPCInteractEvent; +import net.swofty.type.generic.user.HypixelPlayer; +import net.swofty.type.skyblockgeneric.gui.inventories.banker.GUIBanker; + +public class NPCBankerBarry extends HypixelNPC { + + public NPCBankerBarry() { + super(new HumanConfiguration() { + @Override + public String[] holograms(HypixelPlayer player) { + return new String[]{"Banker Barry", "§e§lCLICK"}; + } + + @Override + public String signature(HypixelPlayer player) { + return "tXAjzb81VpXCdZ6grdon5HWP0dIJ2iSvROtbjaDdQ0kBjkxbVdj+ja12HDYm2FD9iYAHO6UxdvUmLwHVP+RwbKOW+ZAYg8Vv/PUoO4qxZnEiBQ4Ojii0zjLsUZIzus3Zy1nV3BPmJSDEa9tAbHGFf83aSxp+O2kpUakLkoTMXdNO0P63Lm5DhYNjObhBPZrkBOger6k99fT9GLCjmUqpfaIgKEYt+Hi/UoKjBJ6p3Sg/gTBqmn82WLsRhDNvdiMwNezm0l1BWBOTtkgJtwyW/RcHnGBUgsqoeVni6RAMCc/R0qZmeEcY1Hs35O2HUh1y+mWDc2CRkh86MHf/69R/kWR9qKOdqrMNeEot3V1eT+LfHxzQWVY1IoSMiOjZaCOOYA9+YU7oVwsROrA5/5Tha45qCuwrqs+EWcm60z6zuy8uanFvmdPSF13lrNY0jZ7jyHSzEvakxnG/0vuAwEKg9/kRwEy1SuWqy5Yue9PEfxnguweNOBF8zhua0rYDeleYgOeg+mA9ZokE/5KmEdyNdIi2jI8wkptI0P0zynXr1IEAG9f1MmXEn/ict2Yi/ySa5Y0fC+ffQb6L5DFQpIHT+vEptG2xlcbEsvT/2um8mlrvsSOz+cGX0rNk6e3Bs+98+gG0Ue678EF+IYxqpoet8uLzlNa4fAtq2mL8+sldSLY="; + } + + @Override + public String texture(HypixelPlayer player) { + return "eyJ0aW1lc3RhbXAiOjE1NzU1ODMyNjU0NTksInByb2ZpbGVJZCI6ImEyZjgzNDU5NWM4OTRhMjdhZGQzMDQ5NzE2Y2E5MTBjIiwicHJvZmlsZU5hbWUiOiJiUHVuY2giLCJzaWduYXR1cmVSZXF1aXJlZCI6dHJ1ZSwidGV4dHVyZXMiOnsiU0tJTiI6eyJ1cmwiOiJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlLzU5MzY0NzgxMjFmYjc0OTRkNGQwZTRkZmZmMWI1NGZhODg4N2Q1MWJiODk3MjNhODNlYjA5MmQ0ODZmOWViNCJ9fX0="; + } + + @Override + public Pos position(HypixelPlayer player) { + return new Pos(20.500, 77.000, 44.500, 0, 0); + } + + @Override + public boolean looking(HypixelPlayer player) { + return true; + } + }); + } + + @Override + public void onClick(NPCInteractEvent event) { + new GUIBanker().open(event.player()); + } +} diff --git a/type.jerrysworkshop/src/main/java/net/swofty/type/jerrysworkshop/npcs/NPCEinary.java b/type.jerrysworkshop/src/main/java/net/swofty/type/jerrysworkshop/npcs/NPCEinary.java new file mode 100644 index 000000000..41e9fd0f9 --- /dev/null +++ b/type.jerrysworkshop/src/main/java/net/swofty/type/jerrysworkshop/npcs/NPCEinary.java @@ -0,0 +1,44 @@ +package net.swofty.type.jerrysworkshop.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.event.custom.NPCInteractEvent; +import net.swofty.type.generic.user.HypixelPlayer; + +public class NPCEinary extends HypixelNPC { + + public NPCEinary() { + super(new HumanConfiguration() { + @Override + public String[] holograms(HypixelPlayer player) { + return new String[]{"§6Einary", "§e§lCLICK"}; + } + + @Override + public String signature(HypixelPlayer player) { + return "m68cXsTmpViTHFbRFhvaLw3SEGXzinrDZXz0GtssEB5ps7qmDr0Foo9X0d7ub+H1KYjkE3GvBbzjSaDGokiGnixlubEbWKhwMftbNzdKqFp32Ff7sqzpvgex/wI0eU9G2zl1ovkJjL/oQIHAWSCxoNb0uFILu/bxzEc1YEnuh4xrxlAsWD59D59ycIGvIX0rVyV/gR+TCPzn6HiTD42JfDk63IfwDjgcc2hWRt4ffM6dwW0R94yHsukN7s0IolEGnSCb8dlej/3rFh4Hrtz8jrFRW70ypIcZfKv7hLUnIpMndUWA8a+Jev96s3kH3xWd7dS9s03SHPxtDmuiq1Y74MG0gMrq6/NPjh36hDlrKabxlKR2KBWv6Od+GJq/7b/9oGLMGfrRO/Z+ozJ2hf4hQwK9rGVR5efQyD3q/3m5QYUGkLnwUiGqHDMsGoVQlCqtLATNwbUmCLX9/ykGY7WTMAEjokcFq6nWKZ9+dyHfYIJmWaniKMecpOCyFBaLGVtQBXZwRs1V9FmNKRiCZXTohc99562UH7142WOVyyf6xZvxJl7sGFbEOGM1IiprEAsQzXWickfALd2ZjvN3XYfGYKvcNgHvFk5cguNv0pE7nmLXYZO3k0oErJiDtE4+mHFvTFVjLsMqNiKhd07jV/HpRKXl4+SbnXh+aB0mDK5g0pM="; + } + + @Override + public String texture(HypixelPlayer player) { + return "ewogICJ0aW1lc3RhbXAiIDogMTYwNzY1ODkxMDIyMiwKICAicHJvZmlsZUlkIiA6ICI0ZmFkNjk2NTIxNGI0NGQ4YjAxYzlhZTVjZDQ0MDVjOCIsCiAgInByb2ZpbGVOYW1lIiA6ICJoaXBfYXNpYW4iLAogICJzaWduYXR1cmVSZXF1aXJlZCIgOiB0cnVlLAogICJ0ZXh0dXJlcyIgOiB7CiAgICAiU0tJTiIgOiB7CiAgICAgICJ1cmwiIDogImh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNGEwMmY0ZmQyZDY4YTc4YjhkYTNhNDZiM2QwMDRhZDk0NzI0NTNjODA4MjhiNzM1NGEyNTkwYTE3OTQ4YzE5OCIKICAgIH0KICB9Cn0="; + } + + @Override + public Pos position(HypixelPlayer player) { + return new Pos(-16.500, 76.000, 63.500, -90, 0); + } + + @Override + public boolean looking(HypixelPlayer player) { + return true; + } + }); + } + + @Override + public void onClick(NPCInteractEvent event) { + + } +} diff --git a/type.jerrysworkshop/src/main/java/net/swofty/type/jerrysworkshop/npcs/NPCFrosty.java b/type.jerrysworkshop/src/main/java/net/swofty/type/jerrysworkshop/npcs/NPCFrosty.java new file mode 100644 index 000000000..1ff95a353 --- /dev/null +++ b/type.jerrysworkshop/src/main/java/net/swofty/type/jerrysworkshop/npcs/NPCFrosty.java @@ -0,0 +1,44 @@ +package net.swofty.type.jerrysworkshop.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.event.custom.NPCInteractEvent; +import net.swofty.type.generic.user.HypixelPlayer; + +public class NPCFrosty extends HypixelNPC { + + public NPCFrosty() { + super(new HumanConfiguration() { + @Override + public String[] holograms(HypixelPlayer player) { + return new String[]{"Frosty"}; + } + + @Override + public String signature(HypixelPlayer player) { + return "pSocoChCCNb8dv3syEVm3kolZaVkf6qR70ngHQdDRw6/rA2tVIZbvBWS6n99Nx8MxfMpRi9mcSTGuKGuOq7lHradijwTrHIn8pcMD2k3JwzXyVQ+ipxqAxJChJTffASJFFL7v/o9SzY89ullKfVl5xIgJHmw00Z77qDDn9ZnWLaazwlfpMR443kOVge/3DlRp62ZFbLBvvyc5locPIUm6Fbl9kbKMBOeEJLFzw+1jvBlkiBbsSemzL7i4ro3Jvd0LUxtPoZ+GONTfdAYE3Go/6zSrBwtVloGYbbtdvyH8rijD9nbLUVWbZV3YeCO+0oNlrxpCVksAEAAHUpDhoakz/vJe+2QEtMsckv6ahjemDnZ3Mo2oewjvL0ENNqClBnp6g8pgu+8P4Cv3qJozs8+Ftk8Rwum9z51bSNxApvz5mnR9dyHbysRYeVrWqULHcWrBt1eeL7AyxNR1JwExF8/3hXpqXdABwgLf3vGCtjafVjcfeAlf3sjQ2voDnQQeULQhoOqVlSqz8s8tlNUJYmIGm9MhS5kBwGUvE6s/82if7dYLL9zGA0WqmmPs2PuOby4a3BBWG4dDgmd/jqkNLFhLDm28o1+SCIYscLwEdJ341BoJIXD20xJBtmRLTsC2HhIXXvmCNxSH9rQyPhmThbf2Hd3GB3zMY0c3my4sN9HJKI="; + } + + @Override + public String texture(HypixelPlayer player) { + return "eyJ0aW1lc3RhbXAiOjE1NzQ4NzQ2OTcyMzMsInByb2ZpbGVJZCI6ImEyZjgzNDU5NWM4OTRhMjdhZGQzMDQ5NzE2Y2E5MTBjIiwicHJvZmlsZU5hbWUiOiJiUHVuY2giLCJzaWduYXR1cmVSZXF1aXJlZCI6dHJ1ZSwidGV4dHVyZXMiOnsiU0tJTiI6eyJ1cmwiOiJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlL2UxNmY5NmM3NTZkZWZlZTYzOTA4OWI3MDI5MDE0MzEwNzI0ZGYwZWYzMGM3NTEwZjJkNzJhYzllMGRhY2Y3ZDMifX19"; + } + + @Override + public Pos position(HypixelPlayer player) { + return new Pos(-1.500, 76.000, 92.500, 124, 0); + } + + @Override + public boolean looking(HypixelPlayer player) { + return true; + } + }); + } + + @Override + public void onClick(NPCInteractEvent event) { + + } +} diff --git a/type.jerrysworkshop/src/main/java/net/swofty/type/jerrysworkshop/npcs/NPCGary.java b/type.jerrysworkshop/src/main/java/net/swofty/type/jerrysworkshop/npcs/NPCGary.java new file mode 100644 index 000000000..ca6121cad --- /dev/null +++ b/type.jerrysworkshop/src/main/java/net/swofty/type/jerrysworkshop/npcs/NPCGary.java @@ -0,0 +1,44 @@ +package net.swofty.type.jerrysworkshop.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.event.custom.NPCInteractEvent; +import net.swofty.type.generic.user.HypixelPlayer; + +public class NPCGary extends HypixelNPC { + + public NPCGary() { + super(new HumanConfiguration() { + @Override + public String[] holograms(HypixelPlayer player) { + return new String[]{"Gary", "§e§lCLICK"}; + } + + @Override + public String signature(HypixelPlayer player) { + return "A1FKKDfud3ailHVEb43/j2PxnsuVrSqPWPkfrTYCRnAHkhj/4lH93tX0Bgs+Hikgj8RrCblWs0PqnhiUTLjibfZiOT3d5wMJfqwjXAqdB+6GyP9GXeOprbkoU4rJ5bQ6zGzX7fY0XB87nrxdRrtfAQmFpdfOCF/3Ne1AvL4PKaH3U2tns/JaaaWyOZf8nGBWTRIha2BYXXoeei5+VJN616VNt8M6U17yUMn31BBZTfS43DwEFj/jPHaT6b94GWFVZGqS7bMriIIlkFct3/TK0moGxy6YMSGdvqnBEHyjTtSK14QwELa49L9lpO+D2ZxzSB6vwk6ZX/2WssgaLtz+mW5rRNzz2toNSToEQfgNxdV2yN/LXzYEApKQDYfZU76ruv+yCoV7OBlcUEFgHDzi/Xi+SbyvUdyp8VDroDcjbFchHk120LXVCtWe0BoEm43p3jZBp/wuLOcgHgF6u1wpgC78jnBjKYfvbTE38iq3NLriiT40RXDMAAj13vvZiMYDCRDtu3zHCByNRcDOsgDyeVrhdQ/io2MERXwpprA1pDbNwAOMaeM/ytHUiQxxXsgslgoQVrbrLjDXXHA8qjPhdR8LFKvLRbO8YCrlEa+vRXh844r9vdIMNqoyaTSUbNy60eN4FUGkSf4JbSVbVLhI3BLCf3B5F34MJIVGLP4nmYA="; + } + + @Override + public String texture(HypixelPlayer player) { + return "eyJ0aW1lc3RhbXAiOjE1NzU1MDExMjE1ODEsInByb2ZpbGVJZCI6ImEyZjgzNDU5NWM4OTRhMjdhZGQzMDQ5NzE2Y2E5MTBjIiwicHJvZmlsZU5hbWUiOiJiUHVuY2giLCJzaWduYXR1cmVSZXF1aXJlZCI6dHJ1ZSwidGV4dHVyZXMiOnsiU0tJTiI6eyJ1cmwiOiJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlL2IwZTJlZjhiNDdkNjNkYmEzNzU1ODgxMTgxOGQxY2I2MjkzYWQwZTMyODRjMDIwNTFjY2ZjNGQ5MTE4MzliYmYifX19"; + } + + @Override + public Pos position(HypixelPlayer player) { + return new Pos(53.500, 103.000, 56.500, -80, 0); + } + + @Override + public boolean looking(HypixelPlayer player) { + return true; + } + }); + } + + @Override + public void onClick(NPCInteractEvent event) { + + } +} diff --git a/type.jerrysworkshop/src/main/java/net/swofty/type/jerrysworkshop/npcs/NPCGenerow.java b/type.jerrysworkshop/src/main/java/net/swofty/type/jerrysworkshop/npcs/NPCGenerow.java new file mode 100644 index 000000000..44387dadd --- /dev/null +++ b/type.jerrysworkshop/src/main/java/net/swofty/type/jerrysworkshop/npcs/NPCGenerow.java @@ -0,0 +1,44 @@ +package net.swofty.type.jerrysworkshop.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.event.custom.NPCInteractEvent; +import net.swofty.type.generic.user.HypixelPlayer; + +public class NPCGenerow extends HypixelNPC { + + public NPCGenerow() { + super(new HumanConfiguration() { + @Override + public String[] holograms(HypixelPlayer player) { + return new String[]{"§6Generow", "§e§lCLICK"}; + } + + @Override + public String signature(HypixelPlayer player) { + return "mV3RUDym+XkUrs4w9k7/pIFSXMD/ZZ+8L/cDQv3Mn6nSGbk+F/6GcyWx3GDX3uPXGuXzlP3k+WKaF1bvHaJcyYNQbCpPaMxGnD6jnCA4sJN5OJgUZRgXgiU7YyjjCOwYgU5FIPWBlOTNDy5LOShF01YCA1C5QIO3RhbvG3XuGU6q8fRFtRpVNieBWGRcf+cmnJi6lS/z9UVR5I/0fxo8yKAkZLWk7Uf8+BfQslZAN5aavoAZ5UaIpQIGwnF00bHPr4CTjmPe491rRY8jKtmqdSlu1QflQm84vwpVP2B2ZiNqtTR3rtSCwfm9w2RFdKUTXa6G43TA+I8DVJrcvdz0OegON9VPgN+wrSj182oV5FAzMXivclviuS0yPrvv/Kz4/LgC3nBa49bv4riDCFMwKOII9G3Ghy81XrUQreRpzZxwyCr9n3xHu+mGB9Zl6tcOyoMgOlxzukV5T7bKesz+3lQmK3xbpVs6KinURCoV29k36ITiLhBrRQavLcnRetrXx+tBlS6YeVjYkVKDUIjqK98FKPMdAYQnVrBdsGaxGOrQKmAH7A8BHNiLM5dn87v0nCMwfixnzfUPNyJ0WSHGddvX/Mj1XLtZajTnucatfNDT+80/a/Gv4REpZ4qIrM7NSHfOYW7QgDR1rYfEN8QqucXC3ZErmYh8jDf2bpkTyN8="; + } + + @Override + public String texture(HypixelPlayer player) { + return "ewogICJ0aW1lc3RhbXAiIDogMTY5OTk5ODY0MzYwOSwKICAicHJvZmlsZUlkIiA6ICI3NzUwYzFhNTM5M2Q0ZWQ0Yjc2NmQ4ZGUwOWY4MjU0NiIsCiAgInByb2ZpbGVOYW1lIiA6ICJSZWVkcmVsIiwKICAic2lnbmF0dXJlUmVxdWlyZWQiIDogdHJ1ZSwKICAidGV4dHVyZXMiIDogewogICAgIlNLSU4iIDogewogICAgICAidXJsIiA6ICJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlL2RhMDBkZGE1N2U5YjI2NTMxYjQwOTlhMGE4ZmM1MjZlZThjYjg1OTFlNmY5NWFjOTE1MWZiODRkZTRjZTJmOTIiCiAgICB9CiAgfQp9"; + } + + @Override + public Pos position(HypixelPlayer player) { + return new Pos(-10.500, 76.000, 93.500, -45, 0); + } + + @Override + public boolean looking(HypixelPlayer player) { + return true; + } + }); + } + + @Override + public void onClick(NPCInteractEvent event) { + + } +} diff --git a/type.jerrysworkshop/src/main/java/net/swofty/type/jerrysworkshop/npcs/NPCGulliver.java b/type.jerrysworkshop/src/main/java/net/swofty/type/jerrysworkshop/npcs/NPCGulliver.java new file mode 100644 index 000000000..d3bd0372c --- /dev/null +++ b/type.jerrysworkshop/src/main/java/net/swofty/type/jerrysworkshop/npcs/NPCGulliver.java @@ -0,0 +1,44 @@ +package net.swofty.type.jerrysworkshop.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.event.custom.NPCInteractEvent; +import net.swofty.type.generic.user.HypixelPlayer; + +public class NPCGulliver extends HypixelNPC { + + public NPCGulliver() { + super(new HumanConfiguration() { + @Override + public String[] holograms(HypixelPlayer player) { + return new String[]{"Gulliver", "§e§lCLICK"}; + } + + @Override + public String signature(HypixelPlayer player) { + return "TUUGLCH9HGzfw3oC4LGEYYhCoPNa5YWAiW8XUjy5wIch9MVcMdwHYxnnphazo0OOnFutHjucI2/sv6Fq8w3VCPDYqo9yIw7RNizJK8Q9dG6H1NUOu87G9YiWygF3EutSrARXjPBuFieENVxPbkpcPvzfPGrCJUkUWSGyJVpO3pK/zzA2zy9QUg7l03lm1o0pd3baVhHZSS3OOrN9i6MfO0b6SwhsI/s4gCFoDddGYR7lMYfxUNiSI5NbhvLk3lQYYdv6YMolZx4XonJ+quB8Oq0SOcZv3Wt3dBpfMBXyDWqUjSME8KZ5D9H4u0Y1dRo9bHYjqAvLD7M+BljUqzlR9xlD8Q6TpaelqXIAUsG9CQk1Y+/sjv4SXetvWlJKL1Gqd/VL6EKHV5YUL5XZ8WeUVuY10+bPjXuWH81DvhZEGMe7ADntgbktG8CLwp1kDmXO0kyy6TgCbzkvROvhDFqRP0etYegNE/IdBDeph/2dZqkyL6dvQucoTEd+qXq5wFy/kvDC01oCB08/HIkqsm+xjFaImFvEW711s/6JD/qiBO1VECQ8xQnQ8UoH120bibH0XPS0AXqVamr/dwcUR0BdQKP1Txaq7rKtJIqPXkjRHJCv5s1QvPxGuM44629FpT6xCCoiqPwbMDZXQI7OWuq+RpZi56zxAvWKuPW//4D/dcE="; + } + + @Override + public String texture(HypixelPlayer player) { + return "ewogICJ0aW1lc3RhbXAiIDogMTYwMjcxNTY0MTU4MywKICAicHJvZmlsZUlkIiA6ICJhYmQyYTNjNDMwYmM0NWZhODY3NmViNzYyZTMwOTI0ZiIsCiAgInByb2ZpbGVOYW1lIiA6ICJYSVRzYWx2YSIsCiAgInNpZ25hdHVyZVJlcXVpcmVkIiA6IHRydWUsCiAgInRleHR1cmVzIiA6IHsKICAgICJTS0lOIiA6IHsKICAgICAgInVybCIgOiAiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS84Nzc5MWFjZDQ4NjhiNWYyYjJjMTc1NmFmOTNiNTNkZTEyMGJkZjczMmIwNTZiYWQ2MDI3MjY1ZGJiMTEzNWY1IiwKICAgICAgIm1ldGFkYXRhIiA6IHsKICAgICAgICAibW9kZWwiIDogInNsaW0iCiAgICAgIH0KICAgIH0KICB9Cn0="; + } + + @Override + public Pos position(HypixelPlayer player) { + return new Pos(68.500, 105.000, 33.500, 91, 6); + } + + @Override + public boolean looking(HypixelPlayer player) { + return true; + } + }); + } + + @Override + public void onClick(NPCInteractEvent event) { + + } +} diff --git a/type.jerrysworkshop/src/main/java/net/swofty/type/jerrysworkshop/npcs/NPCMaaike.java b/type.jerrysworkshop/src/main/java/net/swofty/type/jerrysworkshop/npcs/NPCMaaike.java new file mode 100644 index 000000000..7f9ff9422 --- /dev/null +++ b/type.jerrysworkshop/src/main/java/net/swofty/type/jerrysworkshop/npcs/NPCMaaike.java @@ -0,0 +1,44 @@ +package net.swofty.type.jerrysworkshop.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.event.custom.NPCInteractEvent; +import net.swofty.type.generic.user.HypixelPlayer; + +public class NPCMaaike extends HypixelNPC { + + public NPCMaaike() { + super(new HumanConfiguration() { + @Override + public String[] holograms(HypixelPlayer player) { + return new String[]{"Maaike"}; + } + + @Override + public String signature(HypixelPlayer player) { + return "U6xuqs9BTNXhwwoRSgDJcCkqcvgKu6w144PpGpx/4OQqq5WQZ3F8ytjofpE6YBqf1FWYQpIgFLaT+VX7N7rQD2O8JUnC2FJVko3glVWx0KDLudvbe4mo/0a7Air2rTIpNEMbcjRc3GO4eCQlf4pHudh6Cd88tFA2WQa9XRcSiU3pN8+nspS2tdFJByJFtcOKYyzNQQTM6eMSxrQeqcIlC7DZ4PKdLmYstHNWMKIcVLYdu3RErspp8VHOoIX6XdMV3UGVkoTjuuNjk3/356JbkebxYjZcgxtZTvUjNLAU8o86scBiHQ0crsDHo3kCkBfq4FSo4kD3Lh74D26MeC6I5gDL+rXNt/mH14UUbvfBE88x5Sd0pFLjAqQTM1DQBOCb36IWcqwRPWvmtsAj+jq05Foj3ztUf4dpozmgZU+kRwFGY1vcBUnud2VUkFaDeolXe1IAHhCfiBDEEbGB6wy4Ww8FMJ4fshaZWoH2vNUBEIlufZydW8c8O03Z02Bb60JpArBqCjF1/QKjTPJBQV3OyqE3o/0qdcXukj6aBHE2MJ3iY6Aqzbl5Xq5uwbd6vRDQ3dTG91N0/V+kM6lL+lqAGynjQEKATakIOYvMIscxPyZj3oozlgU4kPI1xqQ9xDXVOP2BoFnV2ZVRyL1Gs1H20BQ19KiWwUV/268Ot783B+E="; + } + + @Override + public String texture(HypixelPlayer player) { + return "eyJ0aW1lc3RhbXAiOjE1NzY4NjIzMzY4MjAsInByb2ZpbGVJZCI6IjQxZDNhYmMyZDc0OTQwMGM5MDkwZDU0MzRkMDM4MzFiIiwicHJvZmlsZU5hbWUiOiJNZWdha2xvb24iLCJzaWduYXR1cmVSZXF1aXJlZCI6dHJ1ZSwidGV4dHVyZXMiOnsiU0tJTiI6eyJ1cmwiOiJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlL2ZlYTg2NDdhNjFkYTI1MDkxZTcxNzdlYWQ4ODI5OWQ3ZDdiOTRiYjQzOTI0MDQwMWIyZTdhMmRlODNkNjkzODUifX19"; + } + + @Override + public Pos position(HypixelPlayer player) { + return new Pos(49.500, 81.000, 50.500, 24, 0); + } + + @Override + public boolean looking(HypixelPlayer player) { + return true; + } + }); + } + + @Override + public void onClick(NPCInteractEvent event) { + + } +} diff --git a/type.jerrysworkshop/src/main/java/net/swofty/type/jerrysworkshop/npcs/NPCSherry.java b/type.jerrysworkshop/src/main/java/net/swofty/type/jerrysworkshop/npcs/NPCSherry.java new file mode 100644 index 000000000..3f4aa086e --- /dev/null +++ b/type.jerrysworkshop/src/main/java/net/swofty/type/jerrysworkshop/npcs/NPCSherry.java @@ -0,0 +1,46 @@ +package net.swofty.type.jerrysworkshop.npcs; + +import net.minestom.server.coordinate.Pos; +import net.minestom.server.entity.EntityType; +import net.swofty.type.generic.entity.npc.HypixelNPC; +import net.swofty.type.generic.entity.npc.configuration.AnimalConfiguration; +import net.swofty.type.generic.entity.npc.configuration.HumanConfiguration; +import net.swofty.type.generic.event.custom.NPCInteractEvent; +import net.swofty.type.generic.user.HypixelPlayer; + +public class NPCSherry extends HypixelNPC { + + public NPCSherry() { + super(new AnimalConfiguration() { + @Override + public EntityType entityType() { + return EntityType.SNOW_GOLEM; + } + + @Override + public float hologramYOffset() { + return 0; + } + + @Override + public String[] holograms(HypixelPlayer player) { + return new String[]{"§cSherry", "§e§lCLICK"}; + } + + @Override + public Pos position(HypixelPlayer player) { + return new Pos(6.500, 76.000, 95.500, 100, 0); + } + + @Override + public boolean looking(HypixelPlayer player) { + return true; + } + }); + } + + @Override + public void onClick(NPCInteractEvent event) { + + } +} diff --git a/type.jerrysworkshop/src/main/java/net/swofty/type/jerrysworkshop/npcs/NPCStJerry.java b/type.jerrysworkshop/src/main/java/net/swofty/type/jerrysworkshop/npcs/NPCStJerry.java new file mode 100644 index 000000000..b80686488 --- /dev/null +++ b/type.jerrysworkshop/src/main/java/net/swofty/type/jerrysworkshop/npcs/NPCStJerry.java @@ -0,0 +1,44 @@ +package net.swofty.type.jerrysworkshop.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.event.custom.NPCInteractEvent; +import net.swofty.type.generic.user.HypixelPlayer; + +public class NPCStJerry extends HypixelNPC { + + public NPCStJerry() { + super(new HumanConfiguration() { + @Override + public String[] holograms(HypixelPlayer player) { + return new String[]{"§cSt. Jerry", "§e§lCLICK"}; + } + + @Override + public String signature(HypixelPlayer player) { + return "tPSYnpLBZNa+zP9AoAajEEmrtaram5+Y62FzmXKeocnEB9lrY1fvlak39zISUu1ismU4SmVj0JBTkamS7RrLYA3KxUp5QiKTSZKnOygvrw6PF8bZqMTHM32/q2CXfdFBYLuEbDCTOtN96x0j5qEKW2P5m27d+KuveriNX9M413h+Lsx8kY6mNzv6slDNLNn6rb2uXABb6eRy2Dzt/qjdEmRZ4ij7pv7IkFgJ65o9kB0f8WuOl7x77u5ejiuOso1IzHTPGcNAHutgaEj00LFDEjDSt0U/mSZQXLhSyDnivfVVrG+YZEzAUWn/gtBnCqD3XDGZ7z+9vrb+vJeWNwPSBmYPtcapVY6IFVRGxKCy+ONOI85HxQLO/h4C/4EjTxuGa+nrSgnrSw0Wapd+XdOy7ZlhHjmjWHwmEwzCkF9QABSY6y7NrBNbd9lfiwKMHvtVw6INCpNOnS7V8RepjoPX5gDJF8f6248c/yj3S+1IOf7vBvHoIGBftQ6M6s9y1ogbMzajBvgzckne09wsTFuUo/suHrrNl36A7U6pQkA9dwWOvdNg01nWAGNXsV8RIjC4gPvTYyTMKnH/wl1F/DcRkhWo3RC2jYTIz9ysxC998hkAKNbUQXama7oqb0W2NLv15aRn8IgHgDXXMsc9Q3Gpr9onw3Aoqc8PlCHugctDZDg="; + } + + @Override + public String texture(HypixelPlayer player) { + return "eyJ0aW1lc3RhbXAiOjE1NzYyNzA0NTU2ODUsInByb2ZpbGVJZCI6ImEyZjgzNDU5NWM4OTRhMjdhZGQzMDQ5NzE2Y2E5MTBjIiwicHJvZmlsZU5hbWUiOiJiUHVuY2giLCJzaWduYXR1cmVSZXF1aXJlZCI6dHJ1ZSwidGV4dHVyZXMiOnsiU0tJTiI6eyJ1cmwiOiJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlLzE2OTJlNjJiNDExMTRjNWIxYTVlOWUzNmMwNjc5ODI3OGViNmE1MTI2ZGMyNmRkYjE2NmQyMDIxZmUwZmEwMGUifX19"; + } + + @Override + public Pos position(HypixelPlayer player) { + return new Pos(-22.500, 76.000, 92.500, -60, 0); + } + + @Override + public boolean looking(HypixelPlayer player) { + return true; + } + }); + } + + @Override + public void onClick(NPCInteractEvent event) { + + } +} diff --git a/type.jerrysworkshop/src/main/java/net/swofty/type/jerrysworkshop/npcs/NPCTerry.java b/type.jerrysworkshop/src/main/java/net/swofty/type/jerrysworkshop/npcs/NPCTerry.java new file mode 100644 index 000000000..e22e7dde1 --- /dev/null +++ b/type.jerrysworkshop/src/main/java/net/swofty/type/jerrysworkshop/npcs/NPCTerry.java @@ -0,0 +1,45 @@ +package net.swofty.type.jerrysworkshop.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.entity.npc.configuration.NPCConfiguration; +import net.swofty.type.generic.event.custom.NPCInteractEvent; +import net.swofty.type.generic.user.HypixelPlayer; + +public class NPCTerry extends HypixelNPC { + + public NPCTerry() { + super(new HumanConfiguration() { + @Override + public String[] holograms(HypixelPlayer player) { + return new String[]{"Terry", "§e§lCLICK"}; + } + + @Override + public String signature(HypixelPlayer player) { + return "NrK1/1oig6wiHeu00G5K/FKHQ+sFOVTbhULXdInFHV0wKveGno7E8/p6X1gDyS1Kg6ucXyiQuv4ObybCyX1Jfr0IuhOfzevWfaS0r5MbHkRbnZZpgcBDwUsZBcQifuoeK3ARF5olPpoqNMOgKYrsjPsvYUky5sJh5Umou/e1GhQg+1fxufnd4J3JzlJ0McAipMXZOF3dzrxvXU4gQQFYbHmDWc+9yoceeVjrn9N+aXTEvN/sn64jwRQTKlaQzs7AMVzu29D/y5BatMAonD0dPcJxGJeb+U3OTtjdbXhYKX8tD3wMvDYrNtGgdTce9ImCliKgKBivjiIKSarF7Hz4fC74c/+3K2YjZLMnX37Nj5LBEDHPhtF369QHxTB1rJUEgFda6CjvUOwq5haJBRyHFDa/hXU103nuCodDi7rkF8R6eGTaAYmfYfBMNlK0q2gVApH1WP21ChsnunNFLQnAmdibYi0TsVCgeBKLdLpK3MNoWeN7J13fEfUxxUdqCMNemtjLKbfKkzUq6h16zDS4PVD12Qj0FeGCDflFAHsPUckHrblG11ksSZuC0BZw6HBROuJCMzxHo4MCfUNTtyxVuKIXZGqOnm18mhrHsjuTjWVbpFCAUqx5l8M55hPewNvoyjRcnc9ojH9pCATgmlEPb3rdn+ILFhttT+SjpQ+8rfU="; + } + + @Override + public String texture(HypixelPlayer player) { + return "eyJ0aW1lc3RhbXAiOjE1NzQ3ODY4NTg1MTEsInByb2ZpbGVJZCI6ImEyZjgzNDU5NWM4OTRhMjdhZGQzMDQ5NzE2Y2E5MTBjIiwicHJvZmlsZU5hbWUiOiJiUHVuY2giLCJzaWduYXR1cmVSZXF1aXJlZCI6dHJ1ZSwidGV4dHVyZXMiOnsiU0tJTiI6eyJ1cmwiOiJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlLzljM2I3MjI0MmYzOGIxNWMxMzEyZmFjODRlN2NjNzMzMjkyMzZkMjAyMThlMGFiNzhkMDhlMmFjNDc4MDZhNDgifX19"; + } + + @Override + public Pos position(HypixelPlayer player) { + return new Pos(-92.500, 78.000, 25.500, -66, 0); + } + + @Override + public boolean looking(HypixelPlayer player) { + return true; + } + }); + } + + @Override + public void onClick(NPCInteractEvent event) { + + } +} diff --git a/type.jerrysworkshop/src/main/java/net/swofty/type/jerrysworkshop/present/Present.java b/type.jerrysworkshop/src/main/java/net/swofty/type/jerrysworkshop/present/Present.java new file mode 100644 index 000000000..b70cbfa46 --- /dev/null +++ b/type.jerrysworkshop/src/main/java/net/swofty/type/jerrysworkshop/present/Present.java @@ -0,0 +1,95 @@ +package net.swofty.type.jerrysworkshop.present; + +import net.kyori.adventure.nbt.BinaryTagTypes; +import net.kyori.adventure.nbt.CompoundBinaryTag; +import net.kyori.adventure.nbt.ListBinaryTag; +import net.minestom.server.coordinate.BlockVec; +import net.minestom.server.coordinate.Point; +import net.minestom.server.coordinate.Pos; +import net.minestom.server.instance.Instance; +import net.minestom.server.instance.block.Block; +import net.minestom.server.tag.Tag; +import net.swofty.commons.skyblock.item.ItemType; +import net.swofty.type.generic.HypixelConst; +import net.swofty.type.generic.data.datapoints.DatapointPresentYear; +import net.swofty.type.generic.entity.BlockDisplayEntity; +import net.swofty.type.generic.entity.InteractionEntity; +import net.swofty.type.skyblockgeneric.calendar.SkyBlockCalendar; +import net.swofty.type.skyblockgeneric.data.SkyBlockDataHandler; +import net.swofty.type.skyblockgeneric.user.SkyBlockPlayer; +import org.tinylog.Logger; + +import java.util.ArrayList; +import java.util.List; + +public class Present { + + static List positions = List.of( + new BlockVec(-1, 76, 81), + new BlockVec(-9, 76, 104), + new BlockVec(-1, 79, 113), + new BlockVec(-34, 76, 81), + new BlockVec(-25, 76, 69), + new BlockVec(16, 95, 96), + new BlockVec(26, 86, 43), + new BlockVec(-17, 82, 30), + new BlockVec(-12, 76, 9), + new BlockVec(9, 77, 9) + ); + + public static void spawnAll() { + for (int i = 0; i < positions.size(); i++) { + spawn(i + 1, positions.get(i)); + } + } + + public static void spawn(int index, Point position) { + Instance instance = HypixelConst.getInstanceContainer(); + + Block playerHead = Block.PLAYER_HEAD.withTag( + Tag.NBT("profile"), + CompoundBinaryTag.builder().put( + "properties", + ListBinaryTag.builder(BinaryTagTypes.COMPOUND).add( + CompoundBinaryTag.builder() + .putString("name", "textures") + .putString("value", "eyJ0aW1lc3RhbXAiOjE1MTQzMjM1NTc0ODYsInByb2ZpbGVJZCI6IjcwOTU2NDU0NTJkOTRiYTI5YzcwZDFmYTY3YjhkYTQyIiwicHJvZmlsZU5hbWUiOiJIaWRkdXMiLCJzaWduYXR1cmVSZXF1aXJlZCI6dHJ1ZSwidGV4dHVyZXMiOnsiU0tJTiI6eyJ1cmwiOiJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlLzEwZjUzOTg1MTBiMWEwNWFmYzViMjAxZWFkOGJmYzU4M2U1N2Q3MjAyZjUxOTNiMGI3NjFmY2JkMGFlMiJ9fX0=") + .putString("signature", "biaiICm45OenpyzFGCo1Fn/jkrLGEXhfheW1Spi2NyQZddvnqtFmJPaPvVY0pPAkY5vrDDWxkCs2X+/Vt2wdVfctNg6jWDBLuElmk/nmzUwt18+dwKacPEv1K9BMqQ56AfdoRTvRps2F8OYdMJaUrBavjIc8f5Bc3cosGH+o/Ux4sFdoLX0EWWyyymb02SXFEebXZ3Mw0q343XJCzS0D/gb9xO92Zu+RtGAej/NFzvFT7T06dTAimOTM4lfGqYkVl0CjoBFi+8OpmtNWKrcbiNoLY8LOnmzI+cEPpnEVZCxSVeVg3GOKr43Qbf3bKrhFz5vPMONMeJIJkm9yoDq5OOd0Khkhz5Bg5Yope4bdNXMZvzS+r4OS6lxVuSxz+/F7RopW4ZwEzyFy+NOy4BCMT+HrGQbtxKJuJNAx4nqW5FBQkBS/FNdk1eY4IT8aTpWXfvCrWu0Qp1NBPNp2TgpSOuwPCBENGcpjUA+gR5jPKGWGAXsYqglRB0KwQaglWtqUZlw0BPIwiUWrzoYruxJ3B6Lo1KGFO6aJ0av1RXF8/HGJn8rSQUbNevvWUsXys/BykX6uCKbRELGcIJKkAe8xjYzD3CSa26eg1vYV/uHIX2jlcP24gaZhGdQowi4oEBOAn0n+t61yVm9Zoo9TgeHyNH/SJOppfkWKB6Z2TZ5D2fE=") + .build() + ).build() + ).build()); + + Logger.info(playerHead.getTag(Tag.NBT("profile")).toString()); + + BlockDisplayEntity displayEntity = new BlockDisplayEntity(playerHead); + displayEntity.setInstance(instance, position); + InteractionEntity entity = new InteractionEntity(0.5f, 0.5f, (player, interactEvent) -> { + SkyBlockDataHandler dataHandler = ((SkyBlockPlayer) player).getSkyblockDataHandler(); + DatapointPresentYear.YearData presents = dataHandler.get(SkyBlockDataHandler.Data.LATEST_YEAR_PRESENT_PICKUP, DatapointPresentYear.class).getValue(); + int year = presents.year(); + int currentYear = SkyBlockCalendar.getYear(); + if (year != currentYear) { + dataHandler.get(SkyBlockDataHandler.Data.LATEST_YEAR_PRESENT_PICKUP, + DatapointPresentYear.class + ).setValue(new DatapointPresentYear.YearData(currentYear, List.of(index))); + player.sendMessage("§2§lGIFT! §aYou found a §fWhite Gift§a! §7(§f1§7/§a20§7)"); + ((SkyBlockPlayer) player).addAndUpdateItem(ItemType.WHITE_GIFT); + return; + } + List value = new ArrayList<>(presents.value()); + + if (value.contains(index)) { + player.sendMessage("§cYou have already found this Gift this year!"); + } else { + value.add(index); + dataHandler.get(SkyBlockDataHandler.Data.LATEST_YEAR_PRESENT_PICKUP, + DatapointPresentYear.class + ).setValue(new DatapointPresentYear.YearData(currentYear, value)); + player.sendMessage("§2§lGIFT! §aYou found a §fWhite Gift§a! §7(§f" + value.size() + "§7/§a20§7)"); + ((SkyBlockPlayer) player).addAndUpdateItem(ItemType.WHITE_GIFT); + } + }); + entity.setInstance(instance, position.add(0.5, 0, 0.5)); + } + +} diff --git a/type.jerrysworkshop/src/main/java/net/swofty/type/jerrysworkshop/tab/JerrysWorkshopServerModule.java b/type.jerrysworkshop/src/main/java/net/swofty/type/jerrysworkshop/tab/JerrysWorkshopServerModule.java new file mode 100644 index 000000000..8c0d9628e --- /dev/null +++ b/type.jerrysworkshop/src/main/java/net/swofty/type/jerrysworkshop/tab/JerrysWorkshopServerModule.java @@ -0,0 +1,25 @@ +package net.swofty.type.jerrysworkshop.tab; + +import net.swofty.type.generic.HypixelConst; +import net.swofty.type.generic.tab.TablistModule; +import net.swofty.type.generic.tab.TablistSkinRegistry; +import net.swofty.type.generic.user.HypixelPlayer; + +import java.util.ArrayList; +import java.util.List; + +public class JerrysWorkshopServerModule extends TablistModule { + @Override + public List getEntries(HypixelPlayer player) { + ArrayList entries = new ArrayList<>(List.of( + new TablistEntry(getCentered("§3§lServer Info"), TablistSkinRegistry.CYAN) + )); + + entries.add(new TablistEntry("§b§lArea: §7Jerry's Workshop", TablistSkinRegistry.GRAY)); + entries.add(new TablistEntry(" Server: §8" + HypixelConst.getServerName(), TablistSkinRegistry.GRAY)); + + fillRestWithGray(entries); + + return entries; + } +} diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/data/SkyBlockDataHandler.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/data/SkyBlockDataHandler.java index 650b875fb..193be5e09 100644 --- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/data/SkyBlockDataHandler.java +++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/data/SkyBlockDataHandler.java @@ -431,6 +431,9 @@ DatapointInteger.class, new DatapointInteger("trial_of_fire_level", 0)), LATEST_NEW_YEAR_CAKE_YEAR("latest_new_year_cake_year", false, false, false, DatapointInteger.class, new DatapointInteger("latest_new_year_cake_year", 0)), + LATEST_YEAR_PRESENT_PICKUP("latest_year_pickup_present", false, false, false, + DatapointPresentYear.class, new DatapointPresentYear("latest_year_pickup_present")), + KAT("kat", false, false, false, DatapointKat.class, new DatapointKat("kat")), diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/banker/GUIBanker.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/banker/GUIBanker.java index fdb156cd7..03ed40bdd 100644 --- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/banker/GUIBanker.java +++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/banker/GUIBanker.java @@ -22,7 +22,7 @@ public class GUIBanker extends HypixelInventoryGUI implements RefreshingGUI { public GUIBanker() { - super("Bank Account", InventoryType.CHEST_4_ROW); + super("Bank", InventoryType.CHEST_4_ROW); } @Override diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/region/RegionType.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/region/RegionType.java index 26b08add8..677f2a0ec 100644 --- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/region/RegionType.java +++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/region/RegionType.java @@ -47,6 +47,17 @@ public enum RegionType { MELODY_PLATEAU("Melody's Plateau", "§5", null, SavannaWoodlandsBiome.class), JUNGLE_ISLAND("Jungle Island", "§a", null, JungleIslandBiome.class), + JERRYS_WORKSHOP("Jerry's Workshop", "§c"), + JERRY_POND("Jerry Pond", "§b"), + SUNKEN_JERRY_POND("Sunken Jerry Pond", "§b"), + TERRYS_SHACK("Terry's Shack", "§b"), + MOUNT_JERRY("Mount Jerry", "§c"), + HOT_SPRINGS("Hot Springs", "§4"), + GLACIAL_CAVE("Glacial Cave", "§3", GlacialCaveConfiguration.class), + GARYS_SHACK("Gary's Shack", "§b"), + SHERRYS_SHOWROOM("Sherry's Showroom", "§e"), + EINARYS_EMPORIUM("Einary's Emporium", "§6"), + THE_BARN("The Barn", "§b", BarnConfiguration.class), MUSHROOM_DESERT("Mushroom Desert"), DESERT_SETTLEMENT("Desert Settlement", "§e"), diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/region/mining/MineableBlock.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/region/mining/MineableBlock.java index a9d1705aa..5e44c51ed 100644 --- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/region/mining/MineableBlock.java +++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/region/mining/MineableBlock.java @@ -19,6 +19,9 @@ public enum MineableBlock { END_STONE(Material.END_STONE, MiningHandlers.pickaxe(30, 1), MiningBlockClassification.blockBlock()), OBSIDIAN(Material.END_STONE, MiningHandlers.pickaxe(500, 4), MiningBlockClassification.blockBlock()), + // Mineable blocks (same speed for all tools and hand) + ICE(Material.ICE, MiningHandlers.hand(10, 1), MiningBlockClassification.blockBlock()), + // Ores (pickaxe) ORE_IRON(Material.IRON_ORE, MiningHandlers.pickaxe(30, 2), MiningBlockClassification.oreBlock()), ORE_COAL(Material.COAL_ORE, MiningHandlers.pickaxe(30, 1), MiningBlockClassification.oreBlock()), diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/region/mining/configurations/GlacialCaveConfiguration.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/region/mining/configurations/GlacialCaveConfiguration.java new file mode 100644 index 000000000..eb96da787 --- /dev/null +++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/region/mining/configurations/GlacialCaveConfiguration.java @@ -0,0 +1,35 @@ +package net.swofty.type.skyblockgeneric.region.mining.configurations; + +import net.minestom.server.coordinate.Point; +import net.minestom.server.coordinate.Pos; +import net.minestom.server.instance.Instance; +import net.minestom.server.instance.block.Block; +import net.minestom.server.item.Material; +import net.swofty.type.skyblockgeneric.region.SkyBlockRegenConfiguration; + +import java.util.List; + +public class GlacialCaveConfiguration extends SkyBlockRegenConfiguration { + + @Override + public MiningTask handleStageOne(MiningTask task, Pos brokenBlock) { + task.setIntermediaryBlock(Block.PACKED_ICE); + task.setReviveBlock(task.getInitialMinedBlock()); + return task; + } + + @Override + public MiningTask handleStageTwo(MiningTask task, Pos brokenBlock) { + return task; + } + + @Override + public List getMineableBlocks(Instance instance, Point point) { + return List.of(Material.ICE); + } + + @Override + public long getRegenerationTime() { + return 3000; + } +} diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/region/mining/handler/MiningHandlers.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/region/mining/handler/MiningHandlers.java index 6f59303f5..8534aaea4 100644 --- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/region/mining/handler/MiningHandlers.java +++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/region/mining/handler/MiningHandlers.java @@ -16,6 +16,10 @@ public static SkyBlockMiningHandler pickaxe(double strength, int powerRequiremen return new PickaxeMiningHandler(strength, powerRequirement); } + public static SkyBlockMiningHandler hand(double strength, int powerRequirement) { + return new PickaxeMiningHandler(strength, powerRequirement); + } + /** * Create an axe mining handler. * Uses FORAGING_SPEED stat for axes, fixed time for bare hands. diff --git a/velocity.extension/src/main/java/net/swofty/velocity/gamemanager/BalanceConfigurations.java b/velocity.extension/src/main/java/net/swofty/velocity/gamemanager/BalanceConfigurations.java index 0c46d6998..d587fc800 100644 --- a/velocity.extension/src/main/java/net/swofty/velocity/gamemanager/BalanceConfigurations.java +++ b/velocity.extension/src/main/java/net/swofty/velocity/gamemanager/BalanceConfigurations.java @@ -54,6 +54,9 @@ public class BalanceConfigurations { Map.entry(ServerType.SKYBLOCK_BACKWATER_BAYOU, List.of( new LowestPlayerCount() )), + Map.entry(ServerType.SKYBLOCK_JERRYS_WORKSHOP, List.of( + new LowestPlayerCount() + )), Map.entry(ServerType.PROTOTYPE_LOBBY, List.of( new LowestPlayerCount() )), diff --git a/website/docs/reference/server-types.md b/website/docs/reference/server-types.md index 9b5aee576..46e35e389 100644 --- a/website/docs/reference/server-types.md +++ b/website/docs/reference/server-types.md @@ -6,22 +6,22 @@ ServerTypes define the different game modes and locations that can be run as sep These server types are part of the SkyBlock gamemode and share SkyBlock-specific functionality. -| ServerType | Description | World Required | -|--------------------------------|-----------------|------------------------------------| -| `SKYBLOCK_ISLAND` | Personal Island | `hypixel_skyblock_island_template` | -| `SKYBLOCK_HUB` | Hub | `hypixel_skyblock_hub` | -| `SKYBLOCK_SPIDERS_DEN` | Spider's Den | `hypixel_skyblock_spiders_den` | -| `SKYBLOCK_THE_END` | The End | `hypixel_skyblock_the_end` | -| `SKYBLOCK_CRIMSON_ISLE` | Crimson isle | `hypixel_skyblock_crimson_isle` | -| `SKYBLOCK_DUNGEON_HUB` | Dungeon hub | `hypixel_skyblock_dungeon_hub` | -| `SKYBLOCK_THE_FARMING_ISLANDS` | Farming Islands | `hypixel_skyblock_hub` | -| `SKYBLOCK_GOLD_MINE` | Gold Mine | `hypixel_skyblock_gold_mine` | -| `SKYBLOCK_DEEP_CAVERNS` | Deep Caverns | `hypixel_skyblock_deep_caverns` | -| `SKYBLOCK_DWARVEN_MINES` | Dwarven Mines | `hypixel_skyblock_dwarven_mines` | -| `SKYBLOCK_THE_PARK` | The Park | `hypixel_skyblock_the_park` | -| `SKYBLOCK_GALATEA` | Galatea | `hypixel_skyblock_galatea` | -| `SKYBLOCK_BACKWATER_BAYOU` | Backwater Bayou | `hypixel_skyblock_galatea` | - +| ServerType | Description | World Required | +|--------------------------------|------------------|------------------------------------| +| `SKYBLOCK_ISLAND` | Personal Island | `hypixel_skyblock_island_template` | +| `SKYBLOCK_HUB` | Hub | `hypixel_skyblock_hub` | +| `SKYBLOCK_SPIDERS_DEN` | Spider's Den | `hypixel_skyblock_spiders_den` | +| `SKYBLOCK_THE_END` | The End | `hypixel_skyblock_the_end` | +| `SKYBLOCK_CRIMSON_ISLE` | Crimson isle | `hypixel_skyblock_crimson_isle` | +| `SKYBLOCK_DUNGEON_HUB` | Dungeon hub | `hypixel_skyblock_dungeon_hub` | +| `SKYBLOCK_THE_FARMING_ISLANDS` | Farming Islands | `hypixel_skyblock_hub` | +| `SKYBLOCK_GOLD_MINE` | Gold Mine | `hypixel_skyblock_gold_mine` | +| `SKYBLOCK_DEEP_CAVERNS` | Deep Caverns | `hypixel_skyblock_deep_caverns` | +| `SKYBLOCK_DWARVEN_MINES` | Dwarven Mines | `hypixel_skyblock_dwarven_mines` | +| `SKYBLOCK_THE_PARK` | The Park | `hypixel_skyblock_the_park` | +| `SKYBLOCK_GALATEA` | Galatea | `hypixel_skyblock_galatea` | +| `SKYBLOCK_BACKWATER_BAYOU` | Backwater Bayou | `hypixel_skyblock_galatea` | +| `SKYBLOCK_JERRYS_WORKSHOP` | Jerry's Workshop | `hypixel_skyblock_jerrys_workshop` | ### Starting a SkyBlock Server ```bash