From 935c8c25303fef5a36cea7bc22c6eee765c48f06 Mon Sep 17 00:00:00 2001 From: Big Pappa Date: Sat, 5 Sep 2026 10:17:03 -0500 Subject: [PATCH] 1.0.3 Added: - Axolotl Support --- build.gradle.kts | 2 +- docs/Supported-Mobs.md | 1 + .../descriptor/AxolotlDescriptor.java | 99 +++++++++++++++++++ .../descriptor/MobDescriptorRegistry.java | 1 + .../mobcage/listener/MobReleaseListener.java | 3 + 5 files changed, 105 insertions(+), 1 deletion(-) create mode 100644 src/main/java/com/rsscripting/mobcage/description/descriptor/AxolotlDescriptor.java diff --git a/build.gradle.kts b/build.gradle.kts index d2969c1..b57fa53 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -5,7 +5,7 @@ plugins { } group = "com.rsscripting" -version = "1.0.2" +version = "1.0.3" val pluginVersion = version.toString() repositories { diff --git a/docs/Supported-Mobs.md b/docs/Supported-Mobs.md index da7f0e9..5c3e273 100644 --- a/docs/Supported-Mobs.md +++ b/docs/Supported-Mobs.md @@ -12,6 +12,7 @@ Each supported mob may have its own handling for variants, appearance, or other RS-MobCages supports the following mobs: +- Axolotl - Bee - Cat - Cave Spider diff --git a/src/main/java/com/rsscripting/mobcage/description/descriptor/AxolotlDescriptor.java b/src/main/java/com/rsscripting/mobcage/description/descriptor/AxolotlDescriptor.java new file mode 100644 index 0000000..9d58b53 --- /dev/null +++ b/src/main/java/com/rsscripting/mobcage/description/descriptor/AxolotlDescriptor.java @@ -0,0 +1,99 @@ +package com.rsscripting.mobcage.description.descriptor; + +import com.rsscripting.mobcage.description.CaptureResult; +import com.rsscripting.mobcage.description.MobAttribute; +import com.rsscripting.mobcage.description.MobDescriptionFormatter; +import com.rsscripting.mobcage.util.MobAgeUtil; +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer; +import org.bukkit.Location; +import org.bukkit.entity.Axolotl; +import org.bukkit.entity.EntityType; +import org.bukkit.entity.LivingEntity; +import org.bukkit.entity.Player; + +import java.util.List; + +public class AxolotlDescriptor implements MobDescriptor { + + @Override + public boolean supports(LivingEntity entity) { + return entity instanceof Axolotl; + } + + @Override + public CaptureResult beforeCapture(LivingEntity entity, Player player) { + return CaptureResult.allowed(); + } + + @Override + public String getDisplayName(LivingEntity entity) { + return MobAgeUtil.getAgePrefix(entity) + "Axolotl"; + } + + @Override + public List getAttributes(LivingEntity entity) { + + Axolotl axolotl = (Axolotl) entity; + + return List.of( + new MobAttribute( + "Variant", + MobDescriptionFormatter.formatEnumName( + axolotl.getVariant().toString() + ) + ) + ); + } + + @Override + public void release(Location location, List lore) { + + PlainTextComponentSerializer plain = + PlainTextComponentSerializer.plainText(); + + boolean baby = false; + Axolotl.Variant variant = Axolotl.Variant.LUCY; + + for (int i = 0; i < lore.size(); i++) { + + String line = plain.serialize(lore.get(i)); + + if (line.equals("Contains:") && i + 1 < lore.size()) { + baby = plain.serialize(lore.get(i + 1)) + .equals("Baby Axolotl"); + } + + if (line.equals("Variant:") && i + 1 < lore.size()) { + variant = getVariant( + plain.serialize(lore.get(i + 1)) + ); + } + } + + Axolotl axolotl = (Axolotl) location.getWorld().spawnEntity( + location, + EntityType.AXOLOTL + ); + + if (baby) { + axolotl.setBaby(); + } else { + axolotl.setAdult(); + } + + axolotl.setVariant(variant); + } + + private Axolotl.Variant getVariant(String variant) { + + return switch (variant) { + case "Wild" -> Axolotl.Variant.WILD; + case "Gold" -> Axolotl.Variant.GOLD; + case "Cyan" -> Axolotl.Variant.CYAN; + case "Blue" -> Axolotl.Variant.BLUE; + case "Lucy" -> Axolotl.Variant.LUCY; + default -> Axolotl.Variant.LUCY; + }; + } +} \ No newline at end of file diff --git a/src/main/java/com/rsscripting/mobcage/description/descriptor/MobDescriptorRegistry.java b/src/main/java/com/rsscripting/mobcage/description/descriptor/MobDescriptorRegistry.java index 6974cb3..3eae7a1 100644 --- a/src/main/java/com/rsscripting/mobcage/description/descriptor/MobDescriptorRegistry.java +++ b/src/main/java/com/rsscripting/mobcage/description/descriptor/MobDescriptorRegistry.java @@ -7,6 +7,7 @@ import java.util.List; public final class MobDescriptorRegistry { private static final List DESCRIPTORS = List.of( + new AxolotlDescriptor(), new BeeDescriptor(), new CatDescriptor(), new CaveSpiderDescriptor(), diff --git a/src/main/java/com/rsscripting/mobcage/listener/MobReleaseListener.java b/src/main/java/com/rsscripting/mobcage/listener/MobReleaseListener.java index 9934fd2..f32c2b7 100644 --- a/src/main/java/com/rsscripting/mobcage/listener/MobReleaseListener.java +++ b/src/main/java/com/rsscripting/mobcage/listener/MobReleaseListener.java @@ -61,6 +61,9 @@ public class MobReleaseListener implements Listener { switch (contains) { + case "Axolotl", "Baby Axolotl" -> + new AxolotlDescriptor().release(location, lore); + case "Bee", "Baby Bee" -> new BeeDescriptor().release(location, lore);