## Added
- Magma Cube (All Variants)
- Slime (All Variants)
- Console message indicating plugin enabled.
This commit is contained in:
BigPappa committed 2026-10-03 13:31:57 -05:00
1 parent 3b3f976a35
commit 59ba08c8dd
7 files changed
+171 -2

No files matched your search

+1 -1
View File
@@ -5,7 +5,7 @@ plugins {
} }
group = "com.rsscripting" group = "com.rsscripting"
version = "1.1.3" version = "1.1.5"
val pluginVersion = version.toString() val pluginVersion = version.toString()
repositories { repositories {
+6 -1
View File
@@ -16,17 +16,22 @@ RS-MobCages supports the following mobs:
- Bee - Bee
- Cat - Cat
- Cave Spider - Cave Spider
- Cow
- Chicken - Chicken
- Cow
- Donkey - Donkey
- Frog - Frog
- Goat
- Horse - Horse
- Magma Cube
- Parrot - Parrot
- Pig - Pig
- Rabbit - Rabbit
- Sheep - Sheep
- Skeleton
- Slime
- Spider - Spider
- Villager - Villager
- Wolf
- Zombie - Zombie
@@ -31,6 +31,10 @@ public final class MobCage extends JavaPlugin {
this this
); );
getLogger().info(
"RS-MobCage Enabled"
);
} }
@Override @Override
@@ -0,0 +1,76 @@
package com.rsscripting.mobcage.description.descriptor;
import com.rsscripting.mobcage.description.CaptureResult;
import com.rsscripting.mobcage.description.MobAttribute;
import com.rsscripting.mobcage.util.MobHealthUtil;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer;
import org.bukkit.Location;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.MagmaCube;
import org.bukkit.entity.Player;
import java.util.List;
public class MagmaCubeDescriptor implements MobDescriptor {
@Override
public boolean supports(LivingEntity entity) {
return entity instanceof MagmaCube;
}
@Override
public CaptureResult beforeCapture(LivingEntity entity, Player player) {
return MobHealthUtil.validateFullHealth(entity);
}
@Override
public String getDisplayName(LivingEntity entity) {
return "Magma Cube";
}
@Override
public List<MobAttribute> getAttributes(LivingEntity entity) {
MagmaCube magmaCube = (MagmaCube) entity;
return List.of(
new MobAttribute(
"Size",
String.valueOf(magmaCube.getSize())
)
);
}
@Override
public void release(Location location, List<Component> lore) {
PlainTextComponentSerializer plain =
PlainTextComponentSerializer.plainText();
int size = 1;
for (int i = 0; i < lore.size(); i++) {
String line = plain.serialize(lore.get(i));
if (line.equals("Size:") && i + 1 < lore.size()) {
String sizeText = plain.serialize(lore.get(i + 1));
try {
size = Integer.parseInt(sizeText);
} catch (NumberFormatException ignored) {
}
}
}
MagmaCube magmaCube = (MagmaCube) location.getWorld().spawnEntity(
location,
EntityType.MAGMA_CUBE
);
magmaCube.setSize(size);
}
}
@@ -17,11 +17,13 @@ public final class MobDescriptorRegistry {
new FrogDescriptor(), new FrogDescriptor(),
new GoatDescriptor(), new GoatDescriptor(),
new HorseDescriptor(), new HorseDescriptor(),
new MagmaCubeDescriptor(),
new ParrotDescriptor(), new ParrotDescriptor(),
new PigDescriptor(), new PigDescriptor(),
new RabbitDescriptor(), new RabbitDescriptor(),
new SheepDescriptor(), new SheepDescriptor(),
new SkeletonDescriptor(), new SkeletonDescriptor(),
new SlimeDescriptor(),
new SpiderDescriptor(), new SpiderDescriptor(),
new VillagerDescriptor(), new VillagerDescriptor(),
new WolfDescriptor(), new WolfDescriptor(),
@@ -0,0 +1,76 @@
package com.rsscripting.mobcage.description.descriptor;
import com.rsscripting.mobcage.description.CaptureResult;
import com.rsscripting.mobcage.description.MobAttribute;
import com.rsscripting.mobcage.util.MobHealthUtil;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer;
import org.bukkit.Location;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.entity.Slime;
import java.util.List;
public class SlimeDescriptor implements MobDescriptor {
@Override
public boolean supports(LivingEntity entity) {
return entity instanceof Slime;
}
@Override
public CaptureResult beforeCapture(LivingEntity entity, Player player) {
return MobHealthUtil.validateFullHealth(entity);
}
@Override
public String getDisplayName(LivingEntity entity) {
return "Slime";
}
@Override
public List<MobAttribute> getAttributes(LivingEntity entity) {
Slime slime = (Slime) entity;
return List.of(
new MobAttribute(
"Size",
String.valueOf(slime.getSize())
)
);
}
@Override
public void release(Location location, List<Component> lore) {
PlainTextComponentSerializer plain =
PlainTextComponentSerializer.plainText();
int size = 1;
for (int i = 0; i < lore.size(); i++) {
String line = plain.serialize(lore.get(i));
if (line.equals("Size:") && i + 1 < lore.size()) {
String sizeText = plain.serialize(lore.get(i + 1));
try {
size = Integer.parseInt(sizeText);
} catch (NumberFormatException ignored) {
}
}
}
Slime slime = (Slime) location.getWorld().spawnEntity(
location,
EntityType.SLIME
);
slime.setSize(size);
}
}
@@ -91,6 +91,9 @@ public class MobReleaseListener implements Listener {
case "Horse", "Baby Horse" -> case "Horse", "Baby Horse" ->
new HorseDescriptor().release(location, lore); new HorseDescriptor().release(location, lore);
case "Magma Cube" ->
new MagmaCubeDescriptor().release(location, lore);
case "Parrot", "Baby Parrot" -> case "Parrot", "Baby Parrot" ->
new ParrotDescriptor().release(location, lore); new ParrotDescriptor().release(location, lore);
@@ -106,6 +109,9 @@ public class MobReleaseListener implements Listener {
case "Skeleton", "Baby Skeleton" -> case "Skeleton", "Baby Skeleton" ->
new SkeletonDescriptor().release(location, lore); new SkeletonDescriptor().release(location, lore);
case "Slime", "Baby Slime" ->
new SlimeDescriptor().release(location, lore);
case "Spider" -> case "Spider" ->
new SpiderDescriptor().release(location, lore); new SpiderDescriptor().release(location, lore);