The Best Resource for Minecraft Bedrock Edition on Android

Real Ragdoll

Real Ragdoll

Real Ragdoll transforms Minecraft Bedrock's default death animations into physics-based ragdoll effects, where mob bodies realistically tumble and collide with the environment. This addon enhances combat immersion by simulating dynamic death reactions that reflect the force and direction of the killing blow.

Installation / How to Use

Install the Real Ragdoll addon by adding it to your Minecraft Bedrock world or behavior packs. Once enabled, supported mobs will automatically display ragdoll physics upon death instead of the standard animation. Use the provided commands to customize settings or manage ragdolls:

  • /realragdoll:settings — Opens the settings menu where you can adjust ragdoll behavior, despawn time, and quality presets.
  • /realragdoll:experimental — Accesses experimental features such as player ragdoll, lead dragging, and armor display.
  • /realragdoll:clearall — Removes all ragdoll bodies currently in the world.

Requirements / Compatibility

This addon is designed for Minecraft Bedrock Edition and is compatible with most vanilla worlds and resource packs that do not significantly alter mob models or textures. It supports a wide range of mobs, including humanoids, animals, aquatic creatures, hostile mobs, and golems. Note that bosses and utility entities are not supported at this time.

Key Features

  • Physics-driven death animations reacting to attack direction and force.
  • Realistic collisions with terrain, limbs, and surroundings.
  • Custom ragdoll rigs tailored to different mob types (humanoids, animals, spiders, etc.).
  • Player interaction: bodies can be pushed by nearby players.
  • Experimental options including dragging corpses with leads, ragdolling the player character, and displaying armor on ragdolls.
  • Configurable corpse lifespan with automatic cleanup (default 30 seconds) or option to keep bodies indefinitely.
  • Maintains vanilla loot drops and player kill rewards.
  • Support for a variety of hostile mobs including creepers, slimes, and new additions like Sulfur Cube.

Notes / Troubleshooting

Held items are not shown on ragdoll bodies. Armor display is experimental and may not perfectly reflect enchantments, trims, or dyes on mobs; player armor appearance is preserved accurately. Resource packs that alter mob models can cause mismatches with ragdoll geometry. Because Real Ragdoll is under active development, occasional bugs or visual glitches may occur.

Example of Real Ragdoll in action

Screenshots & Video
1 / 2Swipe to browse · tap to zoom
Download Real Ragdoll
Supported versions
26.40
2.42 MB2,699 downloads
Download
Supported versions
26.40
2.4 MB36 downloads
Download
Supported versions
26.40
1.73 MB158 downloads
Download
Supported versions
26.40
1.7 MB10 downloads
Download
Supported versions
26.40
1.72 MB15 downloads
Download
5.04 votes

Rate this content

5.00/5
9 Comments

package com.example.andymod;

import net.minecraft.world.item.CreativeModeTabs;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.SwordItem;
import net.minecraft.world.item.Tiers;
import net.minecraftforge.event.BuildCreativeModeTabContentsEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.ForgeRegistries;
import net.minecraftforge.registries.RegistryObject;

@Mod.EventBusSubscriber(modid = AndyMod.MOD_ID, bus = Mod.EventBusSubscriber.Bus.MOD)
public class RegistryHandler {
public static final DeferredRegister ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, AndyMod.MOD_ID);

// Creates the sword ‘Andy’ with 2 Trillion damage and a fast attack speed (4.0f)
public static final RegistryObject ANDY_SWORD = ITEMS.register(“andy_sword”,
() -> new SwordItem(Tiers.NETHERITE, 2000000000000F, 4.0F, new Item.Properties().fireResistant()));

// Adds the sword to the Combat tab in the Creative inventory
@SubscribeEvent
public static void addCreative(BuildCreativeModeTabContentsEvent event) {
if (event.getTabKey() == CreativeModeTabs.COMBAT) {
event.accept(ANDY_SWORD);
}
}
}

package com.example.realisticmod;

import net.fabricmc.api.ModInitializer;
import net.fabricmc.fabric.api.item.v1.ItemEntry;
import net.fabricmc.fabric.api.itemgroup.v1.ItemGroupEvents;
import net.minecraft.core.Registry;
import net.minecraft.core.registries.BuiltInRegistries;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.entity.ai.attributes.AttributeModifier;
import net.minecraft.world.entity.ai.attributes.Attributes;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemGroups;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class ExampleMod implements ModInitializer {
public static final String MOD_ID = “realisticmod”;
public static final Logger LOGGER = LoggerFactory.getLogger(MOD_ID);

// Create a realistic heavy boulder item
public static final Item HEAVY_BOULDER = Registry.register(
BuiltInRegistries.ITEM,
ResourceLocation.fromNamespaceAndPath(MOD_ID, “heavy_boulder”),
new Item(new Item.Properties().stacksTo(1))
);

@Override
public void onInitialize() {
LOGGER.info(“Realistic Mod Initialized!”);

// Add the item to the Combat or Building blocks creative tab
ItemGroupEvents.modifyEntriesEvent(ItemGroups.NATURAL).content(entries -> {
entries.accept(HEAVY_BOULDER);
});
}
}

local tool = script.Parent
local handle = tool:WaitForChild(“Handle”)

— Set the damage to 2 Trillion (2,000,000,000,000)
local DAMAGE_AMOUNT = 2000000000000

local function onTouch(otherPart)
— Look for a Humanoid parent to see if it touched another player or NPC
local character = otherPart.Parent
local humanoid = character:FindFirstChildOfClass(“Humanoid”)

— Get the player who is holding the microphone
local playerCharacter = tool.Parent

— Make sure we found a target, and ensure the player isn’t accidentally hitting themselves
if humanoid and character ~= playerCharacter then
— Apply the 2 Trillion damage
humanoid:TakeDamage(DAMAGE_AMOUNT)
end
end

— Connect the function to the handle’s Touch event
handle.Touched:Connect(onTouch)

package com.example.billionhearts;

import com.google.common.collect.ImmutableMultimap;
import com.google.common.collect.Multimap;
import net.minecraft.world.entity.EquipmentSlot;
import net.minecraft.world.entity.ai.attributes.Attribute;
import net.minecraft.world.entity.ai.attributes.AttributeModifier;
import net.minecraft.world.entity.ai.attributes.Attributes;
import net.minecraft.world.item.ArmorItem;
import net.minecraft.world.item.ArmorMaterial;
import net.minecraft.world.item.ItemStack;

import java.util.UUID;

public class GodArmorItem extends ArmorItem {
// Unique UUID for the max health modifier
private static final UUID HEALTH_MODIFIER_UUID = UUID.fromString(“12345678-1234-1234-1234-123456789012”);
private final Multimap defaultModifiers;

public GodArmorItem(ArmorMaterial material, Type type, Properties properties) {
super(material, type, properties);
ImmutableMultimap.Builder builder = ImmutableMultimap.builder();

// Add standard armor attributes (e.g., armor and toughness)
builder.putAll(super.getDefaultAttributeModifiers(type.getSlot()));

// 1 Heart = 2 Health Points. 1 Billion Hearts = 2,000,000,000 Health Points.
if (type == Type.CHESTPLATE) {
builder.put(Attributes.MAX_HEALTH, new AttributeModifier(
HEALTH_MODIFIER_UUID,
“God chestplate health boost”,
2_000_000_000.0, // Amount of health to add
AttributeModifier.Operation.ADDITION
));
}

this.defaultModifiers = builder.build();
}

@Override
public Multimap getDefaultAttributeModifiers(EquipmentSlot slot) {
if (slot == this.getType().getSlot()) {
return this.defaultModifiers;
}
return super.getDefaultAttributeModifiers(slot);
}
}

package com.example.billionhearts;

import net.minecraft.world.item.ArmorItem;
import net.minecraft.world.item.ArmorMaterials;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.Rarity;
import net.minecraft.core.registries.Registries;
import net.minecraftforge.eventbus.api.IEventBus;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.RegistryObject;

@Mod(BillionHeartsMod.MODID)
public class BillionHeartsMod {
public static final String MODID = “billionhearts”;

public static final DeferredRegister ITEMS = DeferredRegister.create(Registries.ITEM, MODID);

// Creates a chestplate that grants 1 billion hearts (2,000,000,000 health)
public static final RegistryObject GOD_CHESTPLATE = ITEMS.register(“god_chestplate”,
() -> new GodArmorItem(ArmorMaterials.DIAMOND, ArmorItem.Type.CHESTPLATE,
new Item.Properties().rarity(Rarity.EPIC).fireResistant()));

public BillionHeartsMod() {
IEventBus modEventBus = FMLJavaModLoadingContext.get().getModEventBus();
ITEMS.register(modEventBus);
}
}

Search MCPELIFE