From 418c9f315d602eb0e90d2d96b0d1e2644e714504 Mon Sep 17 00:00:00 2001 From: ItzKatze <136186750+ItzKatze@users.noreply.github.com> Date: Tue, 23 Dec 2025 19:40:28 +0100 Subject: [PATCH] some bestiary work --- .../data/datapoints/DatapointBestiary.java | 18 ++++++++++ ...raldSlime.java => MobEmeraldSlime_05.java} | 11 +++--- .../mobs/deepcaverns/MobEmeraldSlime_10.java | 31 ++++++++++++++++ ...Skeleton.java => MobMinerSkeleton_15.java} | 10 +++--- .../mobs/deepcaverns/MobMinerSkeleton_20.java | 31 ++++++++++++++++ ...inerZombie.java => MobMinerZombie_15.java} | 8 ++--- .../mobs/deepcaverns/MobMinerZombie_20.java | 31 ++++++++++++++++ .../mobs/deepcaverns/MobRedstonePigman.java | 2 +- .../mobs/deepcaverns/MobSneakyCreeper.java | 2 +- .../mob/mobs/hub/MobGraveyardZombie.java | 2 +- .../mobs/hub/MobGraveyardZombieVillager.java | 2 +- .../entity/mob/mobs/hub/MobRuinsOldWolf.java | 2 +- .../entity/mob/mobs/hub/MobRuinsWolf.java | 2 +- .../{MobZombie_1.java => MobZombie_01.java} | 6 ++-- .../{MobZombie_2.java => MobZombie_02.java} | 4 +-- .../sbmenu/bestiary/BestiaryCategories.java | 3 +- .../sbmenu/bestiary/BestiaryCategory.java | 35 +++++++++++++++++-- .../sbmenu/bestiary/GUIBestiary.java | 2 +- .../sbmenu/bestiary/GUIBestiaryMob.java | 25 ++++++++++++- 19 files changed, 195 insertions(+), 32 deletions(-) rename type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/deepcaverns/{MobEmeraldSlime.java => MobEmeraldSlime_05.java} (92%) create mode 100644 type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/deepcaverns/MobEmeraldSlime_10.java rename type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/deepcaverns/{MobMinerSkeleton.java => MobMinerSkeleton_15.java} (93%) create mode 100644 type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/deepcaverns/MobMinerSkeleton_20.java rename type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/deepcaverns/{MobMinerZombie.java => MobMinerZombie_15.java} (94%) create mode 100644 type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/deepcaverns/MobMinerZombie_20.java rename type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/island/{MobZombie_1.java => MobZombie_01.java} (96%) rename type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/island/{MobZombie_2.java => MobZombie_02.java} (71%) diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/data/datapoints/DatapointBestiary.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/data/datapoints/DatapointBestiary.java index 03e1cea97..ac96aab1e 100644 --- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/data/datapoints/DatapointBestiary.java +++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/data/datapoints/DatapointBestiary.java @@ -9,6 +9,7 @@ import net.swofty.type.skyblockgeneric.data.SkyBlockDatapoint; import net.swofty.type.skyblockgeneric.entity.mob.BestiaryMob; import net.swofty.type.generic.event.HypixelEventHandler; +import net.swofty.type.skyblockgeneric.entity.mob.MobType; import net.swofty.type.skyblockgeneric.event.custom.BestiaryUpdateEvent; import net.swofty.type.skyblockgeneric.gui.inventories.sbmenu.bestiary.BestiaryCategories; import net.swofty.type.skyblockgeneric.gui.inventories.sbmenu.bestiary.BestiaryEntry; @@ -119,6 +120,23 @@ public List getMobDisplay(List lore, int kills, BestiaryMob mob, int maxBarLength = baseLoadingBar.length(); int formattingCodeLength = 4; + List mobtypes = mob.getMobTypes(); + + if (mobtypes.size() == 1) { + lore.add("§7Mob Type: " + mobtypes.getFirst().getFullDisplayName()); + lore.add(""); + } else if (mobtypes.size() > 1) { + StringBuilder sb = new StringBuilder(); + for (MobType mobType : mobtypes) { + sb.append(mobType.getFullDisplayName()); + sb.append("§7, "); + } + sb.delete(sb.chars().sum() - 3, sb.chars().sum()); + + lore.add("§7Mob Types: " + sb); + lore.add(""); + } + lore.add("§7" + bestiaryEntry.getDescription()); lore.add(""); lore.add("§7Kills: §a" + kills); diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/deepcaverns/MobEmeraldSlime.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/deepcaverns/MobEmeraldSlime_05.java similarity index 92% rename from type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/deepcaverns/MobEmeraldSlime.java rename to type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/deepcaverns/MobEmeraldSlime_05.java index d322ee537..be2efd2c4 100644 --- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/deepcaverns/MobEmeraldSlime.java +++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/deepcaverns/MobEmeraldSlime_05.java @@ -5,7 +5,6 @@ import net.minestom.server.entity.ai.GoalSelector; import net.minestom.server.entity.ai.TargetSelector; import net.minestom.server.entity.ai.target.LastEntityDamagerTarget; -import net.minestom.server.item.Material; import net.minestom.server.utils.time.TimeUnit; import net.swofty.commons.item.ItemType; import net.swofty.commons.statistics.ItemStatistic; @@ -27,9 +26,9 @@ import java.util.List; -public class MobEmeraldSlime extends BestiaryMob implements RegionPopulator { +public class MobEmeraldSlime_05 extends BestiaryMob implements RegionPopulator { - public MobEmeraldSlime() { + public MobEmeraldSlime_05() { super(EntityType.SLIME); } @@ -110,7 +109,7 @@ public OtherLoot getOtherLoot() { @Override public List getMobTypes() { - return List.of(MobType.UNDEAD); + return List.of(MobType.CUBIC); } @Override @@ -125,12 +124,12 @@ public int getBestiaryBracket() { @Override public String getMobID() { - return "EMERALD_SLIME"; + return "EMERALD_SLIME_05"; } @Override public GUIMaterial getGuiMaterial() { - return new GUIMaterial(Material.SLIME_BLOCK); // todo: find real material + return new GUIMaterial("895aeec6b842ada8669f846d65bc49762597824ab944f22f45bf3bbb941abe6c"); } @Override diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/deepcaverns/MobEmeraldSlime_10.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/deepcaverns/MobEmeraldSlime_10.java new file mode 100644 index 000000000..6f55ecda1 --- /dev/null +++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/deepcaverns/MobEmeraldSlime_10.java @@ -0,0 +1,31 @@ +package net.swofty.type.skyblockgeneric.entity.mob.mobs.deepcaverns; + +import net.swofty.commons.statistics.ItemStatistic; +import net.swofty.commons.statistics.ItemStatistics; +import net.swofty.type.skyblockgeneric.loottable.OtherLoot; + +public class MobEmeraldSlime_10 extends MobEmeraldSlime_05 { + @Override + public Integer getLevel() { + return 10; + } + + @Override + public ItemStatistics getBaseStatistics() { + return ItemStatistics.builder() + .withBase(ItemStatistic.HEALTH, 150D) + .withBase(ItemStatistic.DAMAGE, 100D) + .withBase(ItemStatistic.SPEED, 100D) + .build(); + } + + @Override + public OtherLoot getOtherLoot() { + return new OtherLoot(15, 8, 30); + } + + @Override + public String getMobID() { + return "EMERALD_SLIME_10"; + } +} diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/deepcaverns/MobMinerSkeleton.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/deepcaverns/MobMinerSkeleton_15.java similarity index 93% rename from type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/deepcaverns/MobMinerSkeleton.java rename to type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/deepcaverns/MobMinerSkeleton_15.java index 981e163df..f5023fc99 100644 --- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/deepcaverns/MobMinerSkeleton.java +++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/deepcaverns/MobMinerSkeleton_15.java @@ -26,9 +26,9 @@ import java.util.List; -public class MobMinerSkeleton extends BestiaryMob implements RegionPopulator { +public class MobMinerSkeleton_15 extends BestiaryMob implements RegionPopulator { - public MobMinerSkeleton() { + public MobMinerSkeleton_15() { super(EntityType.SKELETON); } @@ -118,7 +118,7 @@ public OtherLoot getOtherLoot() { @Override public List getMobTypes() { - return List.of(MobType.UNDEAD); + return List.of(MobType.SKELETAL); } @Override @@ -133,12 +133,12 @@ public int getBestiaryBracket() { @Override public String getMobID() { - return "DIAMOND_SKELETON"; + return "DIAMOND_SKELETON_15"; } @Override public GUIMaterial getGuiMaterial() { - return new GUIMaterial(Material.SKELETON_SKULL); // todo: find real material + return new GUIMaterial("8de8bbd7f6d77a1614865ef6a1d31f53f797550d14ee21d107a8415c14b48ca6"); } @Override diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/deepcaverns/MobMinerSkeleton_20.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/deepcaverns/MobMinerSkeleton_20.java new file mode 100644 index 000000000..a3d1376c0 --- /dev/null +++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/deepcaverns/MobMinerSkeleton_20.java @@ -0,0 +1,31 @@ +package net.swofty.type.skyblockgeneric.entity.mob.mobs.deepcaverns; + +import net.swofty.commons.statistics.ItemStatistic; +import net.swofty.commons.statistics.ItemStatistics; +import net.swofty.type.skyblockgeneric.loottable.OtherLoot; + +public class MobMinerSkeleton_20 extends MobMinerSkeleton_15 { + @Override + public Integer getLevel() { + return 20; + } + + @Override + public ItemStatistics getBaseStatistics() { + return ItemStatistics.builder() + .withBase(ItemStatistic.HEALTH, 300D) + .withBase(ItemStatistic.DAMAGE, 200D) + .withBase(ItemStatistic.SPEED, 100D) + .build(); + } + + @Override + public OtherLoot getOtherLoot() { + return new OtherLoot(24, 15, 40); + } + + @Override + public String getMobID() { + return "DIAMOND_SKELETON_20"; + } +} diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/deepcaverns/MobMinerZombie.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/deepcaverns/MobMinerZombie_15.java similarity index 94% rename from type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/deepcaverns/MobMinerZombie.java rename to type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/deepcaverns/MobMinerZombie_15.java index b484a88c0..57709401e 100644 --- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/deepcaverns/MobMinerZombie.java +++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/deepcaverns/MobMinerZombie_15.java @@ -28,9 +28,9 @@ import java.util.List; -public class MobMinerZombie extends BestiaryMob implements RegionPopulator { +public class MobMinerZombie_15 extends BestiaryMob implements RegionPopulator { - public MobMinerZombie() { + public MobMinerZombie_15() { super(EntityType.ZOMBIE); } @@ -139,12 +139,12 @@ public int getBestiaryBracket() { @Override public String getMobID() { - return "DIAMOND_ZOMBIE"; + return "DIAMOND_ZOMBIE_15"; } @Override public GUIMaterial getGuiMaterial() { - return new GUIMaterial(Material.ZOMBIE_HEAD); // todo: find real material + return new GUIMaterial("1b8a707e8a58d2ffe297474d18daee86951b21994566358dc0b5d7dcc9e2ed9b"); } @Override diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/deepcaverns/MobMinerZombie_20.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/deepcaverns/MobMinerZombie_20.java new file mode 100644 index 000000000..c5a737cce --- /dev/null +++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/deepcaverns/MobMinerZombie_20.java @@ -0,0 +1,31 @@ +package net.swofty.type.skyblockgeneric.entity.mob.mobs.deepcaverns; + +import net.swofty.commons.statistics.ItemStatistic; +import net.swofty.commons.statistics.ItemStatistics; +import net.swofty.type.skyblockgeneric.loottable.OtherLoot; + +public class MobMinerZombie_20 extends MobMinerZombie_15 { + @Override + public Integer getLevel() { + return 20; + } + + @Override + public ItemStatistics getBaseStatistics() { + return ItemStatistics.builder() + .withBase(ItemStatistic.HEALTH, 300D) + .withBase(ItemStatistic.DAMAGE, 250D) + .withBase(ItemStatistic.SPEED, 100D) + .build(); + } + + @Override + public OtherLoot getOtherLoot() { + return new OtherLoot(24, 15, 40); + } + + @Override + public String getMobID() { + return "DIAMOND_ZOMBIE_20"; + } +} diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/deepcaverns/MobRedstonePigman.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/deepcaverns/MobRedstonePigman.java index 68f2ce2a3..2016d1f79 100644 --- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/deepcaverns/MobRedstonePigman.java +++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/deepcaverns/MobRedstonePigman.java @@ -132,7 +132,7 @@ public String getMobID() { @Override public GUIMaterial getGuiMaterial() { - return new GUIMaterial(Material.ZOMBIFIED_PIGLIN_SPAWN_EGG); // todo: find real material + return new GUIMaterial("74e9c6e98582ffd8ff8feb3322cd1849c43fb16b158abb11ca7b42eda7743eb"); } @Override diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/deepcaverns/MobSneakyCreeper.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/deepcaverns/MobSneakyCreeper.java index 9f7fd2811..c0bdc4eef 100644 --- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/deepcaverns/MobSneakyCreeper.java +++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/deepcaverns/MobSneakyCreeper.java @@ -109,7 +109,7 @@ public OtherLoot getOtherLoot() { @Override public List getMobTypes() { - return List.of(MobType.UNDEAD); + return List.of(MobType.CUBIC); } @Override diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/hub/MobGraveyardZombie.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/hub/MobGraveyardZombie.java index f20b9d21f..3b6533ab1 100644 --- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/hub/MobGraveyardZombie.java +++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/hub/MobGraveyardZombie.java @@ -124,7 +124,7 @@ public int getBestiaryBracket() { @Override public String getMobID() { - return "1_graveyard_zombie"; + return "GRAVEYARD_ZOMBIE"; } @Override diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/hub/MobGraveyardZombieVillager.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/hub/MobGraveyardZombieVillager.java index ae9dfc242..3fc8f1e26 100644 --- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/hub/MobGraveyardZombieVillager.java +++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/hub/MobGraveyardZombieVillager.java @@ -124,7 +124,7 @@ public int getBestiaryBracket() { @Override public String getMobID() { - return "1_graveyard_zombie_villager"; + return "ZOMBIE_VILLIGER"; } @Override diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/hub/MobRuinsOldWolf.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/hub/MobRuinsOldWolf.java index 70035b33f..f5e99d184 100644 --- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/hub/MobRuinsOldWolf.java +++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/hub/MobRuinsOldWolf.java @@ -131,7 +131,7 @@ public int getBestiaryBracket() { @Override public String getMobID() { - return "50_ruins_old_wolf"; + return "OLD_WOLF"; } @Override diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/hub/MobRuinsWolf.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/hub/MobRuinsWolf.java index e967f4ad6..e56557dce 100644 --- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/hub/MobRuinsWolf.java +++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/hub/MobRuinsWolf.java @@ -132,7 +132,7 @@ public int getBestiaryBracket() { @Override public String getMobID() { - return "15_ruins_wolf"; + return "RUIN_WOLF"; } @Override diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/island/MobZombie_1.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/island/MobZombie_01.java similarity index 96% rename from type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/island/MobZombie_1.java rename to type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/island/MobZombie_01.java index 8bd3db2cd..cf80b6abb 100644 --- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/island/MobZombie_1.java +++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/island/MobZombie_01.java @@ -26,9 +26,9 @@ import java.util.Arrays; import java.util.List; -public class MobZombie_1 extends BestiaryMob implements RegionPopulator { +public class MobZombie_01 extends BestiaryMob implements RegionPopulator { - public MobZombie_1() { + public MobZombie_01() { super(EntityType.ZOMBIE); } @@ -117,7 +117,7 @@ public int getBestiaryBracket() { @Override public String getMobID() { - return "1_zombie"; + return "ZOMBIE_01"; } @Override diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/island/MobZombie_2.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/island/MobZombie_02.java similarity index 71% rename from type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/island/MobZombie_2.java rename to type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/island/MobZombie_02.java index 51b58613d..2c9aa1c87 100644 --- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/island/MobZombie_2.java +++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/island/MobZombie_02.java @@ -1,6 +1,6 @@ package net.swofty.type.skyblockgeneric.entity.mob.mobs.island; -public class MobZombie_2 extends MobZombie_1 { +public class MobZombie_02 extends MobZombie_01 { @Override public Integer getLevel() { return 2; @@ -8,6 +8,6 @@ public Integer getLevel() { @Override public String getMobID() { - return "2_zombie"; + return "ZOMBIE_02"; } } diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/sbmenu/bestiary/BestiaryCategories.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/sbmenu/bestiary/BestiaryCategories.java index e73aa10e5..a02c3180b 100644 --- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/sbmenu/bestiary/BestiaryCategories.java +++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/sbmenu/bestiary/BestiaryCategories.java @@ -9,7 +9,8 @@ @Getter public enum BestiaryCategories { YOUR_ISLAND("§aYour island", BestiaryCategory.PRIVATE_ISLAND.values()), - HUB("§aHub", BestiaryCategory.HUB.values()) + HUB("§aHub", BestiaryCategory.HUB.values()), + DEEP_CAVERNS("§bDeep Caverns", BestiaryCategory.DEEP_CAVERNS.values()), ; private final String displayName; diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/sbmenu/bestiary/BestiaryCategory.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/sbmenu/bestiary/BestiaryCategory.java index e6df77efa..9f931a129 100644 --- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/sbmenu/bestiary/BestiaryCategory.java +++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/sbmenu/bestiary/BestiaryCategory.java @@ -4,12 +4,13 @@ import net.minestom.server.item.Material; import net.swofty.type.generic.gui.inventory.item.GUIMaterial; import net.swofty.type.skyblockgeneric.entity.mob.BestiaryMob; +import net.swofty.type.skyblockgeneric.entity.mob.mobs.deepcaverns.*; import net.swofty.type.skyblockgeneric.entity.mob.mobs.hub.MobGraveyardZombie; import net.swofty.type.skyblockgeneric.entity.mob.mobs.hub.MobGraveyardZombieVillager; import net.swofty.type.skyblockgeneric.entity.mob.mobs.hub.MobRuinsOldWolf; import net.swofty.type.skyblockgeneric.entity.mob.mobs.hub.MobRuinsWolf; -import net.swofty.type.skyblockgeneric.entity.mob.mobs.island.MobZombie_1; -import net.swofty.type.skyblockgeneric.entity.mob.mobs.island.MobZombie_2; +import net.swofty.type.skyblockgeneric.entity.mob.mobs.island.MobZombie_01; +import net.swofty.type.skyblockgeneric.entity.mob.mobs.island.MobZombie_02; import java.util.List; @@ -18,7 +19,7 @@ public enum BestiaryCategory { @Getter public enum PRIVATE_ISLAND implements BestiaryEntry { - ZOMBIE("§aZombie", "Brains.", new GUIMaterial(Material.ZOMBIE_HEAD), List.of(new MobZombie_1(), new MobZombie_2())), + ZOMBIE("§aZombie", "Brains.", new GUIMaterial(Material.ZOMBIE_HEAD), List.of(new MobZombie_01(), new MobZombie_02())), ; private final String name, description; @@ -52,4 +53,32 @@ public enum HUB implements BestiaryEntry { this.mobs = mobs; } } + + @Getter + public enum DEEP_CAVERNS implements BestiaryEntry { + EMERALD_SLIME("§aEmerald Slime", "It is said that these slimes absorb emeralds to grow larger.", + new GUIMaterial("895aeec6b842ada8669f846d65bc49762597824ab944f22f45bf3bbb941abe6c"), List.of(new MobEmeraldSlime_05(), new MobEmeraldSlime_10())), + LAPIS_ZOMBIE("§aLapis Zombie", "These zombies adapted to their environment, using the lapis around them as a defense mechanism.", + new GUIMaterial("e9f7979b25001087969d58c06e14d00b8dab57dab060b4c8b483c1b7f869940"), List.of(new MobLapisZombie())), + MINER_SKELETON("§aMiner Skeleton", "These skeletons have crafted gear from the diamonds around them - resulting in a look both fashionable and protective.", + new GUIMaterial("8de8bbd7f6d77a1614865ef6a1d31f53f797550d14ee21d107a8415c14b48ca6"), List.of(new MobMinerSkeleton_15(), new MobMinerSkeleton_20())), + MINER_ZOMBIE("§aMiner Zombie", "Like their skeleton counterparts, these zombies have bedazzled themselves throughout the years.", + new GUIMaterial("1b8a707e8a58d2ffe297474d18daee86951b21994566358dc0b5d7dcc9e2ed9b"), List.of(new MobMinerZombie_15(), new MobMinerZombie_20())), + REDSTONE_PIGMAN("§aRedstone Pigman", "These pigmen will defend their redstone to the death.", + new GUIMaterial("74e9c6e98582ffd8ff8feb3322cd1849c43fb16b158abb11ca7b42eda7743eb"), List.of(new MobRedstonePigman())), + SNEAKY_CREEPER("§aSneaky Creeper", "They be creepin'.", + new GUIMaterial("74e9c6e98582ffd8ff8feb3322cd1849c43fb16b158abb11ca7b42eda7743eb"), List.of(new MobSneakyCreeper())), + ; + + private final String name, description; + private final GUIMaterial guiMaterial; + private final List mobs; + + DEEP_CAVERNS(String name, String description, GUIMaterial guiMaterial, List mobs) { + this.name = name; + this.description = description; + this.guiMaterial = guiMaterial; + this.mobs = mobs; + } + } } diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/sbmenu/bestiary/GUIBestiary.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/sbmenu/bestiary/GUIBestiary.java index c71f5f450..99f6a7ab3 100644 --- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/sbmenu/bestiary/GUIBestiary.java +++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/sbmenu/bestiary/GUIBestiary.java @@ -39,7 +39,7 @@ private enum BestiaryRegions { SPIDERS_DEN("§cSpider's Den", new GUIMaterial("c754318a3376f470e481dfcd6c83a59aa690ad4b4dd7577fdad1c2ef08d8aee6"), null, "§7View all of the mobs that you've", "§7found and killed in the §cSpider's Den§7."), THE_END("§dThe End", new GUIMaterial("7840b87d52271d2a755dedc82877e0ed3df67dcc42ea479ec146176b02779a5"), null, "§7View all of the mobs that you've", "§7found and killed in §dThe End§7."), CRIMSON_ISLE("§cCrimson Isle", new GUIMaterial("c3687e25c632bce8aa61e0d64c24e694c3eea629ea944f4cf30dcfb4fbce071"), null, "§7View all of the mobs that you've", "§7found and killed in the §cCrimson Isle§7."), - DEEP_CAVERNS("§bDeep Caverns", new GUIMaterial("569a1f114151b4521373f34bc14c2963a5011cdc25a6554c48c708cd96ebfc"), null, "§7View all of the mobs that you've", "§7found and killed in the §bDeep Caverns§7."), + DEEP_CAVERNS("§bDeep Caverns", new GUIMaterial("569a1f114151b4521373f34bc14c2963a5011cdc25a6554c48c708cd96ebfc"), new GUIBestiaryIsland(BestiaryCategories.DEEP_CAVERNS), "§7View all of the mobs that you've", "§7found and killed in the §bDeep Caverns§7."), DWARVEN_MINES("§2Dwarven Mines", new GUIMaterial("6b20b23c1aa2be0270f016b4c90d6ee6b8330a17cfef87869d6ad60b2ffbf3b5"), null, "§7View all of the mobs that you've", "§7found and killed in the §2Dwarven Mines§7."), CRYSTAL_HALLOWS("§5Crystal Hallows", new GUIMaterial("21dbe30b027acbceb612563bd877cd7ebb719ea6ed1399027dcee58bb9049d4a"), null, "§7View all of the mobs that you've", "§7found and killed in the §5Crystal", "§5Hollows§7."), THE_PARK("§3The Park", new GUIMaterial("a221f813dacee0fef8c59f76894dbb26415478d9ddfc44c2e708a6d3b7549b"), null, "§7View all of the mobs that you've", "§7found and killed in §3The Park§7."), diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/sbmenu/bestiary/GUIBestiaryMob.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/sbmenu/bestiary/GUIBestiaryMob.java index 86ef7a10a..c4d497237 100644 --- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/sbmenu/bestiary/GUIBestiaryMob.java +++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/sbmenu/bestiary/GUIBestiaryMob.java @@ -8,6 +8,7 @@ import net.minestom.server.item.Material; import net.swofty.commons.StringUtility; import net.swofty.commons.item.Rarity; +import net.swofty.commons.statistics.ItemStatistic; 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; @@ -16,6 +17,7 @@ import net.swofty.type.generic.user.HypixelPlayer; import net.swofty.type.skyblockgeneric.bestiary.BestiaryData; import net.swofty.type.skyblockgeneric.entity.mob.BestiaryMob; +import net.swofty.type.skyblockgeneric.entity.mob.MobType; import net.swofty.type.skyblockgeneric.loottable.OtherLoot; import net.swofty.type.skyblockgeneric.loottable.SkyBlockLootTable; import net.swofty.type.skyblockgeneric.user.SkyBlockPlayer; @@ -118,9 +120,30 @@ public ItemStack.Builder getItem(HypixelPlayer p) { else commonLoot.add(lootRecord); } + List mobtypes = mob.getMobTypes(); + + if (mobtypes.size() == 1) { + lore.add("§7Mob Type: " + mobtypes.getFirst().getFullDisplayName()); + lore.add(""); + } else if (mobtypes.size() > 1) { + StringBuilder sb = new StringBuilder(); + for (MobType mobType : mobtypes) { + sb.append(mobType.getFullDisplayName()); + sb.append("§7, "); + } + sb.delete(sb.chars().sum() - 3, sb.chars().sum()); + + lore.add("§7Mob Types: " + sb); + lore.add(""); + } + + + lore.add("§7Mob Stats:"); + lore.add("§7Health: " + ItemStatistic.HEALTH.getDisplayColor() + Math.round(mob.getBaseStatistics().getOverall(ItemStatistic.HEALTH).floatValue()) + ItemStatistic.HEALTH.getSymbol()); + lore.add("§7Damage: " + ItemStatistic.DAMAGE.getDisplayColor() + Math.round(mob.getBaseStatistics().getOverall(ItemStatistic.DAMAGE).floatValue()) + ItemStatistic.DAMAGE.getSymbol()); lore.add("§7Coins per Kill: §6" + otherLoot.getCoinAmount()); lore.add("§7" + mob.getSkillCategory().asCategory().getName() + " Exp: §3" + otherLoot.getSkillXPAmount()); - lore.add("§7Xp Orbs: §3" + otherLoot.getXpOrbAmount()); + lore.add("§7XP Orbs: §3" + otherLoot.getXpOrbAmount()); lore.add(""); lore.add("§7Kills: §a" + kills); lore.add("§7Deaths: §a" + deaths);