diff --git a/addons/mobs/README.md b/addons/mobs/README.md new file mode 100644 index 0000000..d5943b8 --- /dev/null +++ b/addons/mobs/README.md @@ -0,0 +1,63 @@ +# Mobs + +Display live mobs on your map. + +## Configuration + +### Global options + +* `update-interval` - How often (in seconds) to update mobs on the map (default: `5`) + +### Per-world options + +* `enabled` - Enable or disable mobs for this world (default: `true`) +* `layer.label` - Name of the layer shown in the UI (default: `"Mobs"`) +* `layer.controls.enabled` - Show layer toggle controls (default: `true`) +* `layer.controls.hide-by-default` - Hide the layer by default (default: `false`) +* `layer.priority` - Layer stacking order (default: `999`) +* `layer.z-index` - CSS z-index for the layer (default: `999`) +* `icon.size` - Size in pixels of mob icons (default: `16`) +* `icon.tooltip` - Tooltip text when hovering over a mob. Use `{name}` for the mob name (default: `'{name}'`) +* `allowed-mobs` - List of mob types to display. Use Minecraft entity type names (lowercase with underscores). Use `'*'` to show all supported mobs. By default, only passive and neutral mobs are displayed. + +### Allowed-mobs examples + +Show all mobs: + +```yaml +worlds: + world: + allowed-mobs: + - '*' +``` + +Show specific mobs (mix of passive and hostile): + +```yaml +worlds: + world: + allowed-mobs: + - cow + - pig + - sheep + - blaze + - creeper + - skeleton + - zombie +``` + +## Supported mobs + +### Passive/neutral + +allay, armadillo, axolotl, bat, bee, camel, cat, chicken, cod, cow, dolphin, donkey, fox, frog, glow_squid, goat, happy_ghast, horse, iron_golem, llama, mooshroom, mule, nautilus, ocelot, panda, parrot, pig, polar_bear, pufferfish, rabbit, salmon, sheep, sniffer, snow_golem, squid, strider, tadpole, trader_llama, tropical_fish, turtle, villager, wandering_trader, wolf + +#### Exceptions + +camel_husk, zombie_horse & zombie_nautilus are not added to the default passive/neutral mobs list, since they become passive/neutral once their hostile mob rider gets separated from them. + +--- + +### Hostile + +blaze, breeze, camel_husk, cave_spider, creaking, creeper, drowned, elder_guardian, ender_dragon, enderman, endermite, evoker, ghast, giant, guardian, hoglin, husk, illusioner, magma_cube, parched, phantom, piglin, piglin_brute, pillager, ravager, shulker, silverfish, skeleton, skeleton_horse, slime, spider, stray, vex, vindicator, warden, witch, wither, wither_skeleton, zoglin, zombie, zombie_horse, zombie_nautilus, zombie_villager, zombified_piglin diff --git a/addons/mobs/build.gradle.kts b/addons/mobs/build.gradle.kts index 7ef94cb..1c3d219 100644 --- a/addons/mobs/build.gradle.kts +++ b/addons/mobs/build.gradle.kts @@ -1,3 +1,5 @@ +version = "1.1.0-SNAPSHOT" + description = "Mobs addon for squaremap" bukkitPluginYaml { diff --git a/addons/mobs/src/main/java/xyz/jpenilla/squaremap/addon/mobs/config/MobsWorldConfig.java b/addons/mobs/src/main/java/xyz/jpenilla/squaremap/addon/mobs/config/MobsWorldConfig.java index 650070e..b04de7c 100644 --- a/addons/mobs/src/main/java/xyz/jpenilla/squaremap/addon/mobs/config/MobsWorldConfig.java +++ b/addons/mobs/src/main/java/xyz/jpenilla/squaremap/addon/mobs/config/MobsWorldConfig.java @@ -53,17 +53,29 @@ private void allowedTypes() { String.class, "allowed-mobs", List.of( + "allay", + "armadillo", + "axolotl", + "bat", + "bee", + "camel", "cat", "chicken", "cod", "cow", "dolphin", + "donkey", "fox", + "frog", + "glow_squid", + "goat", + "happy_ghast", "horse", "iron_golem", "llama", "mooshroom", "mule", + "nautilus", "ocelot", "panda", "parrot", @@ -73,9 +85,11 @@ private void allowedTypes() { "rabbit", "salmon", "sheep", + "sniffer", "snow_golem", "squid", "strider", + "tadpole", "trader_llama", "tropical_fish", "turtle", diff --git a/addons/mobs/src/main/java/xyz/jpenilla/squaremap/addon/mobs/data/Icons.java b/addons/mobs/src/main/java/xyz/jpenilla/squaremap/addon/mobs/data/Icons.java index 01ea32d..daaff94 100644 --- a/addons/mobs/src/main/java/xyz/jpenilla/squaremap/addon/mobs/data/Icons.java +++ b/addons/mobs/src/main/java/xyz/jpenilla/squaremap/addon/mobs/data/Icons.java @@ -15,14 +15,21 @@ public final class Icons { public static final Map BY_TYPE = new HashMap<>(); + public static final Key ALLAY = register("allay"); + public static final Key ARMADILLO = register("armadillo"); + public static final Key AXOLOTL = register("axolotl"); public static final Key BAT = register("bat"); public static final Key BEE = register("bee"); public static final Key BLAZE = register("blaze"); + public static final Key BREEZE = register("breeze"); + public static final Key CAMEL = register("camel"); + public static final Key CAMEL_HUSK = register("camel_husk"); public static final Key CAT = register("cat"); public static final Key CAVE_SPIDER = register("cave_spider"); public static final Key CHICKEN = register("chicken"); public static final Key COD = register("cod"); public static final Key COW = register("cow"); + public static final Key CREAKING = register("creaking"); public static final Key CREEPER = register("creeper"); public static final Key DOLPHIN = register("dolphin"); public static final Key DONKEY = register("donkey"); @@ -33,9 +40,13 @@ public final class Icons { public static final Key ENDERMITE = register("endermite"); public static final Key EVOKER = register("evoker"); public static final Key FOX = register("fox"); + public static final Key FROG = register("frog"); public static final Key GHAST = register("ghast"); public static final Key GIANT = register("giant"); + public static final Key GLOW_SQUID = register("glow_squid"); + public static final Key GOAT = register("goat"); public static final Key GUARDIAN = register("guardian"); + public static final Key HAPPY_GHAST = register("happy_ghast"); public static final Key HOGLIN = register("hoglin"); public static final Key HORSE = register("horse"); public static final Key HUSK = register("husk"); @@ -46,8 +57,10 @@ public final class Icons { public static final Key MAGMA_CUBE = register("magma_cube"); public static final Key MOOSHROOM = register("mooshroom"); public static final Key MULE = register("mule"); + public static final Key NAUTILUS = register("nautilus"); public static final Key OCELOT = register("ocelot"); public static final Key PANDA = register("panda"); + public static final Key PARCHED = register("parched"); public static final Key PARROT = register("parrot"); public static final Key PHANTOM = register("phantom"); public static final Key PIG = register("pig"); @@ -65,11 +78,13 @@ public final class Icons { public static final Key SKELETON = register("skeleton"); public static final Key SKELETON_HORSE = register("skeleton_horse"); public static final Key SLIME = register("slime"); + public static final Key SNIFFER = register("sniffer"); public static final Key SNOW_GOLEM = register("snow_golem"); public static final Key SPIDER = register("spider"); public static final Key SQUID = register("squid"); public static final Key STRAY = register("stray"); public static final Key STRIDER = register("strider"); + public static final Key TADPOLE = register("tadpole"); public static final Key TRADER_LLAMA = register("trader_llama"); public static final Key TROPICAL_FISH = register("tropical_fish"); public static final Key TURTLE = register("turtle"); @@ -77,6 +92,7 @@ public final class Icons { public static final Key VILLAGER = register("villager"); public static final Key VINDICATOR = register("vindicator"); public static final Key WANDERING_TRADER = register("wandering_trader"); + public static final Key WARDEN = register("warden"); public static final Key WITCH = register("witch"); public static final Key WITHER = register("wither"); public static final Key WITHER_SKELETON = register("wither_skeleton"); @@ -84,6 +100,7 @@ public final class Icons { public static final Key ZOGLIN = register("zoglin"); public static final Key ZOMBIE = register("zombie"); public static final Key ZOMBIE_HORSE = register("zombie_horse"); + public static final Key ZOMBIE_NAUTILUS = register("zombie_nautilus"); public static final Key ZOMBIE_VILLAGER = register("zombie_villager"); public static final Key ZOMBIFIED_PIGLIN = register("zombified_piglin"); @@ -107,7 +124,7 @@ private static Key register(String name) { BY_TYPE.put(type, key); } catch (final Exception e) { - SquaremapMobs.getInstance().getLogger().log(Level.WARNING, "Failed to register signs icon", e); + SquaremapMobs.getInstance().getLogger().log(Level.WARNING, "Failed to register mobs icon", e); } return key; } diff --git a/addons/mobs/src/main/java/xyz/jpenilla/squaremap/addon/mobs/task/SquaremapTask.java b/addons/mobs/src/main/java/xyz/jpenilla/squaremap/addon/mobs/task/SquaremapTask.java index 7779c77..ed5b1c9 100644 --- a/addons/mobs/src/main/java/xyz/jpenilla/squaremap/addon/mobs/task/SquaremapTask.java +++ b/addons/mobs/src/main/java/xyz/jpenilla/squaremap/addon/mobs/task/SquaremapTask.java @@ -47,14 +47,14 @@ public void run() { if (loc.getY() < this.worldConfig.minimumY) { continue; } - if (this.worldConfig.surfaceOnly && aboveSurface(loc)) { + if (this.worldConfig.surfaceOnly && belowSurface(loc)) { continue; } this.handleMob(type, mob.getEntityId(), loc); } } - private static boolean aboveSurface(final Location loc) { + private static boolean belowSurface(final Location loc) { return loc.getY() < loc.getWorld().getHighestBlockYAt(loc.getBlockX(), loc.getBlockZ(), HeightMap.WORLD_SURFACE); } diff --git a/addons/mobs/src/main/resources/icons/allay.png b/addons/mobs/src/main/resources/icons/allay.png new file mode 100644 index 0000000..32b2c94 Binary files /dev/null and b/addons/mobs/src/main/resources/icons/allay.png differ diff --git a/addons/mobs/src/main/resources/icons/armadillo.png b/addons/mobs/src/main/resources/icons/armadillo.png new file mode 100644 index 0000000..867d4e9 Binary files /dev/null and b/addons/mobs/src/main/resources/icons/armadillo.png differ diff --git a/addons/mobs/src/main/resources/icons/axolotl.png b/addons/mobs/src/main/resources/icons/axolotl.png new file mode 100644 index 0000000..e82b075 Binary files /dev/null and b/addons/mobs/src/main/resources/icons/axolotl.png differ diff --git a/addons/mobs/src/main/resources/icons/breeze.png b/addons/mobs/src/main/resources/icons/breeze.png new file mode 100644 index 0000000..1158798 Binary files /dev/null and b/addons/mobs/src/main/resources/icons/breeze.png differ diff --git a/addons/mobs/src/main/resources/icons/camel.png b/addons/mobs/src/main/resources/icons/camel.png new file mode 100644 index 0000000..1d34dc4 Binary files /dev/null and b/addons/mobs/src/main/resources/icons/camel.png differ diff --git a/addons/mobs/src/main/resources/icons/camel_husk.png b/addons/mobs/src/main/resources/icons/camel_husk.png new file mode 100644 index 0000000..9b7bbc3 Binary files /dev/null and b/addons/mobs/src/main/resources/icons/camel_husk.png differ diff --git a/addons/mobs/src/main/resources/icons/creaking.png b/addons/mobs/src/main/resources/icons/creaking.png new file mode 100644 index 0000000..a15530e Binary files /dev/null and b/addons/mobs/src/main/resources/icons/creaking.png differ diff --git a/addons/mobs/src/main/resources/icons/frog.png b/addons/mobs/src/main/resources/icons/frog.png new file mode 100644 index 0000000..f72eeaf Binary files /dev/null and b/addons/mobs/src/main/resources/icons/frog.png differ diff --git a/addons/mobs/src/main/resources/icons/glow_squid.png b/addons/mobs/src/main/resources/icons/glow_squid.png new file mode 100644 index 0000000..e55d6a5 Binary files /dev/null and b/addons/mobs/src/main/resources/icons/glow_squid.png differ diff --git a/addons/mobs/src/main/resources/icons/goat.png b/addons/mobs/src/main/resources/icons/goat.png new file mode 100644 index 0000000..8e5cf95 Binary files /dev/null and b/addons/mobs/src/main/resources/icons/goat.png differ diff --git a/addons/mobs/src/main/resources/icons/happy_ghast.png b/addons/mobs/src/main/resources/icons/happy_ghast.png new file mode 100644 index 0000000..c9b17c3 Binary files /dev/null and b/addons/mobs/src/main/resources/icons/happy_ghast.png differ diff --git a/addons/mobs/src/main/resources/icons/nautilus.png b/addons/mobs/src/main/resources/icons/nautilus.png new file mode 100644 index 0000000..59895a9 Binary files /dev/null and b/addons/mobs/src/main/resources/icons/nautilus.png differ diff --git a/addons/mobs/src/main/resources/icons/parched.png b/addons/mobs/src/main/resources/icons/parched.png new file mode 100644 index 0000000..d106b88 Binary files /dev/null and b/addons/mobs/src/main/resources/icons/parched.png differ diff --git a/addons/mobs/src/main/resources/icons/sniffer.png b/addons/mobs/src/main/resources/icons/sniffer.png new file mode 100644 index 0000000..f17b00f Binary files /dev/null and b/addons/mobs/src/main/resources/icons/sniffer.png differ diff --git a/addons/mobs/src/main/resources/icons/tadpole.png b/addons/mobs/src/main/resources/icons/tadpole.png new file mode 100644 index 0000000..b6a509d Binary files /dev/null and b/addons/mobs/src/main/resources/icons/tadpole.png differ diff --git a/addons/mobs/src/main/resources/icons/trader_llama.png:Zone.Identifier b/addons/mobs/src/main/resources/icons/trader_llama.png:Zone.Identifier deleted file mode 100644 index 1d4debf..0000000 --- a/addons/mobs/src/main/resources/icons/trader_llama.png:Zone.Identifier +++ /dev/null @@ -1,4 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=https://minecraft.gamepedia.com/ -HostUrl=https://static.wikia.nocookie.net/minecraft_gamepedia/images/d/d3/LlamaFace.png/revision/latest/scale-to-width-down/64?cb=20190823005427 diff --git a/addons/mobs/src/main/resources/icons/warden.png b/addons/mobs/src/main/resources/icons/warden.png new file mode 100644 index 0000000..f6496d4 Binary files /dev/null and b/addons/mobs/src/main/resources/icons/warden.png differ diff --git a/addons/mobs/src/main/resources/icons/zombie_nautilus.png b/addons/mobs/src/main/resources/icons/zombie_nautilus.png new file mode 100644 index 0000000..1006bcd Binary files /dev/null and b/addons/mobs/src/main/resources/icons/zombie_nautilus.png differ