From f15ace5865ed10c26a5bcad8263b4d158d8de975 Mon Sep 17 00:00:00 2001 From: Big Pappa Date: Thu, 27 Aug 2026 23:56:00 -0500 Subject: [PATCH] 1.0.2 Documentation update --- README.md | 120 +++++++++++++++------- src/docs/Admin-Guide.md | 88 +++++++++++++++++ src/docs/Capturing-Mobs.md | 99 +++++++++++++++++++ src/docs/Commands-and-Permissions.md | 29 ++++++ src/docs/Configuration.md | 44 +++++++++ src/docs/Crafting.md | 49 +++++++++ src/docs/Getting-Started.md | 109 ++++++++++++++++++++ src/docs/Installation.md | 108 ++++++++++++++++++++ src/docs/Mob-Variants-and-Attributes.md | 99 +++++++++++++++++++ src/docs/Releasing-Mobs.md | 90 +++++++++++++++++ src/docs/Supported-Mobs.md | 102 +++++++++++++++++++ src/docs/Troubleshooting.md | 126 ++++++++++++++++++++++++ src/docs/images/MobCageRecipe.jpg | Bin 0 -> 24567 bytes 13 files changed, 1030 insertions(+), 33 deletions(-) create mode 100644 src/docs/Admin-Guide.md create mode 100644 src/docs/Capturing-Mobs.md create mode 100644 src/docs/Commands-and-Permissions.md create mode 100644 src/docs/Configuration.md create mode 100644 src/docs/Crafting.md create mode 100644 src/docs/Getting-Started.md create mode 100644 src/docs/Installation.md create mode 100644 src/docs/Mob-Variants-and-Attributes.md create mode 100644 src/docs/Releasing-Mobs.md create mode 100644 src/docs/Supported-Mobs.md create mode 100644 src/docs/Troubleshooting.md create mode 100644 src/docs/images/MobCageRecipe.jpg diff --git a/README.md b/README.md index d133901..f215823 100644 --- a/README.md +++ b/README.md @@ -1,48 +1,102 @@ -
+

+

RS-MobCages

+

+ Capture, transport, and release mobs with portable Mob Cages. +

-# RS-MobCage -### Mob Capture & Transport for Modern Minecraft Servers +

![Minecraft](https://img.shields.io/badge/Minecraft-1.21%2B-green) ![Platform](https://img.shields.io/badge/Platform-Paper-orange) -![Status](https://img.shields.io/badge/Status-Stable-success) -![Development](https://img.shields.io/badge/Development-Active-brightgreen) +![Status](https://img.shields.io/badge/Status-Active-brightgreen) +![Development](https://img.shields.io/badge/Development-Active-green) ![RS Ecosystem](https://img.shields.io/badge/RS-Ecosystem-purple) -

+

-**RS-MobCage** is a Minecraft plugin that adds reusable Mob Cages for capturing, transporting, and releasing supported mobs. +--- -A Mob Cage stores the captured mob's relevant information directly on the item, allowing the mob to be safely moved and released somewhere else. +## Overview + +**RS-MobCages** allows players to capture supported mobs inside portable Mob Cages, carry them in their inventory, transport them wherever they are needed, and release them again. + +Mob Cages are designed to provide a simple and convenient way to move mobs without relying on leads, boats, minecarts, or other traditional transportation methods. +Capture a mob, take it with you, and release it at its new destination. + +--- ## Features -- Capture supported mobs using a reusable Mob Cage -- Release captured mobs by right-clicking the ground -- Preserves supported mob variants -- Preserves baby/adult state where supported -- Preserves supported mob attributes such as: - - Cow variants - - Chicken variants - - Pig variants - - Sheep color - - Horse color and markings -- Prevents named mobs from being captured -- Prevents players from being captured -- Requires mobs to be at full health before capture -- Prevents Mob Cages from being placed as blocks -- Handles mob equipment during capture -- Configurable equipment-drop behavior -- Custom Mob Cage recipe -- Uses persistent item data to identify and track cage state -- Supports adding additional mob types through the descriptor system +### 🐾 Capture Supported Mobs -## Mob Cage +Use an empty Mob Cage on a supported mob to capture it. +The cage stores the information needed to recreate the mob when it is released. -The Mob Cage is crafted using: +### 📦 Portable Mob Storage -```text -Iron Bars | Iron Bars | Iron Bars -Iron Bars | Iron Ingot | Iron Bars -Iron Bars | Iron Bars | Iron Bars \ No newline at end of file +Captured mobs can be carried as items in a player's inventory. +This makes it easy to transport mobs across your world. + +### 🔄 Release Mobs Anywhere + +Release a captured mob when you are ready to place it in its new location. +After release, the Mob Cage becomes empty and can be used again. + +### 🧬 Mob-Specific Data + +RS-MobCages uses mob descriptors to handle supported mobs and preserve mob-specific information when appropriate. +This allows different types of mobs to be handled according to their individual requirements. + +### 🚫 Protected Mobs + +Players and named mobs cannot be captured. +Named mobs are also protected from capture. + +### 🛡️ Safe Capture Handling + +If a creature is not supported by RS-MobCages, the plugin will safely prevent it from being captured. + +--- + +## How It Works + +Using a Mob Cage is simple: + +1. Obtain an empty Mob Cage. +2. Hold the empty cage in your main hand. +3. Right-click a supported mob to capture it. +4. Carry the filled Mob Cage to its new location. +5. Release the mob. +6. Reuse the empty Mob Cage. + +--- + +## Documentation + +Complete documentation is available in the [`docs`](docs/) folder. + +Planned documentation includes: + +- [Installation](./docs/Installation.md) +- [Getting Started](./docs/Getting-Started.md) +- [Crafting a Mob Cage](docs/Crafting.md) +- [Capturing Mobs](./docs/Capturing-Mobs.md) +- [Releasing Mobs](./docs/Releasing-Mobs.md) +- [Supported Mobs](./docs/Supported-Mobs.md) +- [Mob Variants and Attributes](./docs/Mob-Variants-and-Attributes.md) +- [Commands and Permissions](./docs/Commands-and-Permissions.md) +- [Configuration](./docs/Configuration.md) +- [Admin Guide](./docs/Admin-Guide.md) +- [Troubleshooting](./docs/Troubleshooting.md) +- [Changelog](./docs/Changelog.md) + +--- + +## Requirements + +- Paper +- A supported Minecraft server version +- Java version required by the server version + +--- \ No newline at end of file diff --git a/src/docs/Admin-Guide.md b/src/docs/Admin-Guide.md new file mode 100644 index 0000000..076a5a2 --- /dev/null +++ b/src/docs/Admin-Guide.md @@ -0,0 +1,88 @@ +# Administrator Guide + +This guide provides basic information for server administrators running RS-MobCages. + +RS-MobCages is designed to require minimal administration and works with its default behavior after installation. + +--- + +## Installation + +Install RS-MobCages by placing the plugin `.jar` file into your server's: + + plugins/ + +folder. + +Restart the server and verify that RS-MobCages loads successfully. + +For detailed installation instructions, see: + +➡️ [Installation](./docs/Installation.md) + +--- + +## Server Administration + +RS-MobCages currently does not require any special administrator setup. + +There are currently: + +- No required commands. +- No required permissions. +- No required configuration changes. + +Once the plugin is installed and enabled, players can use Mob Cages to capture and release supported mobs. + +--- + +## Supported Mobs + +RS-MobCages only allows supported mobs to be captured. + +The list of supported mobs may expand as additional mob descriptors are added to the plugin. + +For the current list, see: + +➡️ [Supported Mobs](./docs/Supported-Mobs.md) + +--- + +## Named Mob Protection + +Named mobs are protected from capture. + +This helps prevent players from accidentally capturing mobs that have been intentionally named. + +Server administrators should be aware of this behavior when testing or using Mob Cages. + +--- + +## Plugin Updates + +When updating RS-MobCages: + +1. Stop the server. +2. Back up your server. +3. Remove the previous RS-MobCages `.jar` file. +4. Place the new `.jar` file into the `plugins` folder. +5. Start the server. +6. Check the console to confirm that the plugin loaded successfully. + +Always review release notes when updating to a new version. + +--- + +## Troubleshooting + +If RS-MobCages does not appear to be working correctly: + +- Verify that the plugin loaded successfully. +- Check the server console for errors. +- Confirm that the mob being tested is supported. +- Make sure the player is using an appropriate Mob Cage. +- Check that the mob does not have a custom name. + +For additional troubleshooting information, see: + +➡️ [Troubleshooting](./docs/Troubleshooting.md) \ No newline at end of file diff --git a/src/docs/Capturing-Mobs.md b/src/docs/Capturing-Mobs.md new file mode 100644 index 0000000..a95f990 --- /dev/null +++ b/src/docs/Capturing-Mobs.md @@ -0,0 +1,99 @@ +# Capturing Mobs + +This guide explains how to capture mobs using RS-MobCages. + +Mob Cages allow supported mobs to be captured and stored inside a portable cage for transportation. + +--- + +## Before Capturing a Mob + +Before attempting to capture a mob, make sure you have: + +- An empty Mob Cage. +- The Mob Cage in your main hand. +- A supported mob to capture. + +Not every entity can be captured. + +Players cannot be captured, and named mobs are protected from accidental capture. + +For a complete list of supported mobs, see: + +➡️ [Supported Mobs](./docs/Supported-Mobs.md) + +--- + +## Capturing a Mob + +To capture a mob: + +1. Place an empty Mob Cage in your main hand. +2. Approach a supported mob. +3. Use the Mob Cage on the mob. + +If the mob can be captured, the capture will be processed. + +The mob will be removed from the world and the empty Mob Cage will become a filled Mob Cage containing that mob. + +--- + +## Successful Capture + +When a mob is successfully captured: + +- The original mob is removed from the world. +- The Mob Cage becomes associated with the captured mob. +- The filled cage can be carried in a player's inventory. +- Mob-specific information is stored when supported by the mob's descriptor. + +The filled Mob Cage can then be transported and released at another location. + +See: + +➡️ [Releasing Mobs](./docs/Releasing-Mobs.md) + +--- + +## Named Mobs + +RS-MobCages protects named mobs from being accidentally captured. + +If a mob has a custom name, it cannot be captured. + +This helps prevent players from accidentally placing important, decorative, or specially named mobs into a Mob Cage. + +--- + +## Players + +Players cannot be captured. + +Mob Cages are intended for supported mobs only. + +--- + +## Unsupported Mobs + +If you attempt to capture an unsupported entity, the capture will not be completed. + +RS-MobCages only captures mobs that are supported by the plugin. + +For the complete list, see: + +➡️ [Supported Mobs](./docs/Supported-Mobs.md) + +--- + +## After Capturing + +Once a mob has been captured, the filled Mob Cage can be: + +- Carried in your inventory. +- Moved to another location. +- Stored until needed. +- Released when you are ready to place the mob. + +To learn how to release a captured mob, continue to: + +➡️ [Releasing Mobs](./docs/Releasing-Mobs.md) \ No newline at end of file diff --git a/src/docs/Commands-and-Permissions.md b/src/docs/Commands-and-Permissions.md new file mode 100644 index 0000000..bcb6f4f --- /dev/null +++ b/src/docs/Commands-and-Permissions.md @@ -0,0 +1,29 @@ +# Commands and Permissions + +RS-MobCages does not currently require any commands or permissions for normal use. + +Players interact directly with Mob Cages to capture and release supported mobs. + +--- + +## Commands + +RS-MobCages currently does not provide any player or administrator commands. + +All normal interaction is performed directly in-game using Mob Cages. + +--- + +## Permissions + +RS-MobCages currently does not require any permissions. + +If the plugin is installed and enabled, players can use supported Mob Cages normally. + +--- + +## Future Commands and Permissions + +Commands and permissions may be added in a future version if they become necessary. + +Any new commands or permissions will be documented here. diff --git a/src/docs/Configuration.md b/src/docs/Configuration.md new file mode 100644 index 0000000..5f5039b --- /dev/null +++ b/src/docs/Configuration.md @@ -0,0 +1,44 @@ +# Configuration + +RS-MobCages currently requires little to no configuration. + +The plugin is designed to work immediately after installation without requiring players or server administrators to configure commands, permissions, or complex settings. + +--- + +## Default Configuration + +After RS-MobCages is installed and the server is started, the plugin will create any required plugin files and use its default settings. + +For most servers, no additional configuration is required. + +--- + +## Configuration File + +If RS-MobCages includes a configuration file, it can be found in: + + plugins/RS-MobCages/ + +Any available configuration options will be listed and explained in this documentation as they are added to the plugin. + +--- + +## Current Configuration Options + +RS-MobCages does not currently require any configuration changes for normal operation. + +The plugin is designed to work with its default behavior after installation. + +--- + +## Future Configuration Options + +Additional configuration options may be added in future versions as the plugin expands. + +If new options are introduced, this page will be updated to include: + +- The configuration option name. +- Its default value. +- What the option controls. +- Any valid values or limitations. \ No newline at end of file diff --git a/src/docs/Crafting.md b/src/docs/Crafting.md new file mode 100644 index 0000000..5864f8e --- /dev/null +++ b/src/docs/Crafting.md @@ -0,0 +1,49 @@ +# Crafting a Mob Cage + +Before you can capture and transport mobs using RS-MobCages, you must first craft an empty Mob Cage. + +The empty Mob Cage is used to capture supported mobs and can be reused after the captured mob has been released. + +--- + +## Crafting Recipe + +Place the required ingredients in a crafting table using the following recipe: + +**[INSERT CRAFTING RECIPE IMAGE HERE]** + +The recipe will produce an empty Mob Cage. + +--- + +## Using the Mob Cage + +Once crafted, the empty Mob Cage can be used to capture a supported mob. + +To capture a mob: + +1. Hold the empty Mob Cage in your main hand. +2. Right-click a supported mob. +3. The mob will be captured inside the cage. + +The filled Mob Cage can then be carried in your inventory and transported to another location. + +For detailed instructions, see: + +➡️ [Capturing Mobs](./docs/Capturing-Mobs.md) + +--- + +## Reusing the Cage + +Mob Cages are reusable. + +After releasing a captured mob, the cage becomes empty again and can be used to capture another supported mob. + +This means you do not need to craft a new cage every time you want to move a mob. + +```Note: There is a known issue where sometimes cages will not stack when emptied. We are working to isolate and fix the issue, however, since it is not a breaking issue, it is lower on the priority list.``` + +For more information, see: + +➡️ [Releasing Mobs](./docs/Releasing-Mobs.md) diff --git a/src/docs/Getting-Started.md b/src/docs/Getting-Started.md new file mode 100644 index 0000000..b7c918b --- /dev/null +++ b/src/docs/Getting-Started.md @@ -0,0 +1,109 @@ +# Getting Started + +This guide will walk you through the basic process of using RS-MobCages. + +With RS-MobCages, you can capture supported mobs, carry them in your inventory, transport them to another location, and release them when you are ready. + +--- + +## The Basic Process + +Using a Mob Cage follows a simple process: + +1. Obtain an empty Mob Cage. +2. Capture a supported mob. +3. Carry the filled cage to a new location. +4. Release the mob. +5. Reuse the empty cage. + +--- + +## Step 1 — Obtain an Empty Mob Cage + +Before you can capture a mob, you need an empty Mob Cage. + +Make sure you have the cage available in your inventory and place it in your main hand. + +--- + +## Step 2 — Find a Supported Mob + +Locate a mob supported by RS-MobCages. + +Not every entity can be captured. + +For example, players cannot be captured, and protected mobs such as named mobs may also be prevented from being captured. + +For a complete list of supported mobs, see: + +➡️ [Supported Mobs](./docs/Supported-Mobs.md) + +--- + +## Step 3 — Capture the Mob + +Hold an empty Mob Cage in your main hand. + +Use the cage on a supported mob to capture it. + +If the capture is successful: + +- The mob is removed from the world. +- The Mob Cage becomes a filled cage. +- The captured mob can now be transported in your inventory. + +The filled Mob Cage stores the information needed to release the mob later. + +--- + +## Step 4 — Transport the Mob + +Once captured, the Mob Cage can be carried in your inventory. + +Take the cage wherever you want to move the mob. + +This makes it easier to relocate mobs without using leads, boats, minecarts, or other traditional transportation methods. + +--- + +## Step 5 — Release the Mob + +When you reach the desired location, use the filled Mob Cage to release the captured mob. + +The mob will be recreated in the world. + +After the mob has been released, the cage becomes empty and can be used again. + +For more information, see: + +➡️ [Releasing Mobs](./docs/Releasing-Mobs.md) + +--- + +## Important Notes + +### Named Mobs + +RS-MobCages protects named mobs from being accidentally captured. + +If a mob has been given a custom name, the plugin may prevent it from being placed inside a Mob Cage. + +This helps protect important or decorative mobs from accidental removal. + +--- + +### Players Cannot Be Captured + +Mob Cages are intended for supported mobs only. + +Players cannot be captured. + +--- + +### Unsupported Mobs + +If a mob is not supported, RS-MobCages will not capture it. + +For a complete list of supported mobs, see: + +➡️ [Supported Mobs](./docs/Supported-Mobs.md) \ No newline at end of file diff --git a/src/docs/Installation.md b/src/docs/Installation.md new file mode 100644 index 0000000..57b9c4e --- /dev/null +++ b/src/docs/Installation.md @@ -0,0 +1,108 @@ +# Installation + +This guide explains how to install RS-MobCages on your Paper Minecraft server. + +--- + +## Requirements + +Before installing RS-MobCages, make sure your server meets the plugin requirements. + +- A supported version of Paper +- A compatible Java version for your Minecraft server +- Permission to install plugins on the server + +RS-MobCages is designed for Paper servers. + +--- + +## Installing RS-MobCages + +### Step 1 — Stop Your Server + +Before installing or updating any plugin, stop your Minecraft server completely. + +--- + +### Step 2 — Download RS-MobCages + +Download the latest release of RS-MobCages from one of the supported download locations. +Place the downloaded `.jar` file somewhere you can easily access. + +--- + +### Step 3 — Install the Plugin + +Move the RS-MobCages `.jar` file into your server's: + + plugins/ + +folder. + +Your server directory should look similar to: + + server/ + ├── plugins/ + │ ├── RS-MobCages.jar + │ └── ... + ├── world/ + ├── world_nether/ + └── world_the_end/ + +--- + +### Step 4 — Start Your Server + +Start the Minecraft server normally. +During startup, Paper will load RS-MobCages and create any required plugin files. +After the server has finished starting, check the console for the RS-MobCages startup message. + +--- + +## Verifying Installation + +Join the server and verify that RS-MobCages is loaded. +You can also check the server console or run: + + /plugins + +RS-MobCages should appear in the list of loaded plugins. + +--- + +## First-Time Setup + +Once RS-MobCages is installed, continue to: + +➡️ [Getting Started](./docs/Getting-Started.md) + +The Getting Started guide will walk through obtaining and using your first Mob Cage. + +--- + +## Updating RS-MobCages + +To update the plugin: + +1. Stop the server. +2. Remove the old RS-MobCages `.jar` file from the `plugins` folder. +3. Place the new `.jar` file into the `plugins` folder. +4. Start the server. + +Unless otherwise noted in the release notes, existing plugin data and configuration files should be preserved. +Always back up your server before performing updates. + +--- + +## Troubleshooting Installation + +If RS-MobCages does not appear in `/plugins`: + +- Make sure the `.jar` file is inside the correct `plugins` folder. +- Check that you are using a supported Paper server version. +- Check the server console for plugin loading errors. +- Verify that your Java version is compatible with your Minecraft server. + +For additional help, see: + +➡️ [Troubleshooting](./docs/Troubleshooting.md) \ No newline at end of file diff --git a/src/docs/Mob-Variants-and-Attributes.md b/src/docs/Mob-Variants-and-Attributes.md new file mode 100644 index 0000000..1285212 --- /dev/null +++ b/src/docs/Mob-Variants-and-Attributes.md @@ -0,0 +1,99 @@ +# Mob Variants and Attributes + +Some mobs have different appearances, variants, or attributes that make them different from the standard version of that mob. + +RS-MobCages can store mob-specific information so that supported mobs can be released with the appropriate appearance or variant. + +The exact information stored depends on the mob and its support within RS-MobCages. + +--- + +## Why Variants Matter + +Many Minecraft mobs are not visually identical. + +For example, two sheep may both be sheep, but they may have different wool colors. + +Other mobs may have different: + +- Colors +- Variants +- Types +- Patterns +- Appearances +- Mob-specific attributes + +When supported, RS-MobCages stores this information when the mob is captured and applies it again when the mob is released. + +--- + +## Examples + +Depending on the supported mob, this may include information such as: + +### Sheep + +Sheep may have different wool colors. + +A captured sheep can retain its supported wool color information when released. + +--- + +### Cats + +Cats can have different variants and appearances. + +When supported, the captured cat's variant information can be stored and restored. + +--- + +### Horses and Other Equines + +Horses and other equine mobs may have appearance or variant information that differs between individual mobs. + +Supported information can be stored as part of the captured mob's data. + +--- + +### Other Variant Mobs + +Other supported mobs may also have their own descriptors for handling mob-specific information. + +As RS-MobCages expands, additional mobs and their supported attributes may be added. + +--- + +## Attribute Support + +Not every property of a mob is necessarily stored. + +Support depends on the specific mob descriptor and the information currently implemented for that mob. + +For example, a supported mob may preserve: + +- Its variant +- Its color +- Its appearance +- Other supported mob-specific information + +Other properties may not currently be preserved. + +--- + +## Future Mob Support + +RS-MobCages is designed to allow additional mob types and mob-specific attributes to be added over time. + +As new mobs are added, their descriptors can define which information should be stored and restored. + +This allows the plugin to expand without requiring every mob to use the exact same capture and release logic. + +--- + +## Important Notes + +Mob-specific support may change as RS-MobCages develops. + +The [Supported Mobs](./docs/Supported-Mobs.md) page will be updated as additional mobs are added. + +If a particular mob has special handling or limitations, those details should be documented with that mob's supported behavior. diff --git a/src/docs/Releasing-Mobs.md b/src/docs/Releasing-Mobs.md new file mode 100644 index 0000000..ef879bf --- /dev/null +++ b/src/docs/Releasing-Mobs.md @@ -0,0 +1,90 @@ +# Releasing Mobs + +This guide explains how to release a mob that has been captured inside an RS-MobCage. + +Once a mob has been captured, the filled Mob Cage can be carried to another location and used to release the mob back into the world. + +--- + +## Before Releasing a Mob + +Before releasing a mob, make sure: + +- You have a filled Mob Cage. +- You are at the location where you want the mob to appear. +- There is enough space for the mob to spawn. + +The filled Mob Cage contains the information needed to recreate the captured mob. + +--- + +## Releasing the Mob + +To release a captured mob: + +1. Place the filled Mob Cage in your main hand. +2. Move to the location where you want to release the mob. +3. Use the Mob Cage to release the mob. + +If the release is successful, the captured mob will be recreated in the world. + +--- + +## After Release + +After the mob has been successfully released: + +- The mob will appear in the world. +- The filled Mob Cage becomes an empty Mob Cage. +- The empty cage can be used again to capture another supported mob. + +This allows the same Mob Cage to be reused multiple times. + +--- + +## Mob Information + +RS-MobCages uses mob descriptors to store and restore information about supported mobs. + +Depending on the type of mob, this may include information needed to preserve that mob's appearance or variant when it is released. + +For more information, see: + +➡️ [Mob Variants and Attributes](./docs/Mob-Variants-and-Attributes.md) + +--- + +## Choosing a Release Location + +Before releasing a mob, make sure the intended location is suitable for that mob. + +For example: + +- The mob should have enough physical space to spawn. +- The release location should not place the mob inside solid blocks. +- The area should be appropriate for the mob you are releasing. + +If a release cannot be completed, check the surrounding area and try again. + +--- + +## Reusing the Mob Cage + +One of the primary purposes of RS-MobCages is reusability. + +The same basic process can be repeated: + +1. Capture a mob. +2. Transport the filled Mob Cage. +3. Release the mob. +4. Reuse the empty Mob Cage. + +--- + +## Returning to Capture + +After releasing a mob, the empty Mob Cage is ready to be used again. + +To learn more about capturing mobs, see: + +➡️ [Capturing Mobs](./docs/Capturing-Mobs.md) \ No newline at end of file diff --git a/src/docs/Supported-Mobs.md b/src/docs/Supported-Mobs.md new file mode 100644 index 0000000..2c32773 --- /dev/null +++ b/src/docs/Supported-Mobs.md @@ -0,0 +1,102 @@ +# Supported Mobs + +This page lists the mobs that can be captured using RS-MobCages. + +RS-MobCages uses individual mob descriptors to determine how supported mobs are captured and released. + +Each supported mob may have its own handling for variants, appearance, or other mob-specific information. + +--- + +## Supported Mobs + +RS-MobCages supports the following mobs: + +### Passive Mobs + +- Cow +- Chicken +- Pig +- Sheep +- Rabbit +- Horse +- Donkey + +### Cats and Wolves + +- Cat + +### Other Passive Mobs + +- Bee +- Parrot + +### Villagers + +- Villager + +### Hostile Mobs + +- Zombie +- Spider +- Cave Spider + +--- + +## Mob Variants + +Some mobs have multiple possible appearances or variants. + +When supported by the mob's descriptor, RS-MobCages stores the information necessary to recreate that variant when the mob is released. + +Examples may include: + +- Sheep wool color +- Cat variants +- Wolf variants +- Horse appearance +- Rabbit variants +- Frog variants +- Parrot variants +- Axolotl variants +- Tropical fish appearance + +For more information, see: + +➡️ [Mob Variants and Attributes](./docs/Mob-Variants-and-Attributes.md) + +--- + +## Named Mobs + +Named mobs cannot be captured. + +If a mob has been given a custom name, RS-MobCages will prevent it from being captured. + +This helps protect: + +- Pets +- Decorative mobs +- Named villagers +- Important server mobs +- Other mobs that players have intentionally named + +--- + +## Unsupported Mobs + +If a mob is not supported by RS-MobCages, it cannot be captured. + +The plugin will safely ignore unsupported entities. + +Players cannot be captured. + +--- + +## Important Notes + +Support for a mob does not necessarily mean that every possible property of that mob is stored. + +Mob-specific information is handled individually by the mob's descriptor. + +Some mobs may preserve variants or appearance information, while others may only require their basic entity type to be stored. diff --git a/src/docs/Troubleshooting.md b/src/docs/Troubleshooting.md new file mode 100644 index 0000000..ce49e45 --- /dev/null +++ b/src/docs/Troubleshooting.md @@ -0,0 +1,126 @@ +# Troubleshooting + +This guide covers common issues you may encounter while using RS-MobCages. + +--- + +## The Plugin Does Not Appear in `/plugins` + +If RS-MobCages does not appear in the `/plugins` list: + +1. Verify that the RS-MobCages `.jar` file is located in your server's: + + plugins/ + + folder. + +2. Restart the server. + +3. Check the server console for errors related to RS-MobCages. + +4. Make sure you are using a supported Paper server version. + +If the plugin reports an error during startup, review the full error message in the server console. + +--- + +## I Cannot Capture a Mob + +If a mob cannot be captured, check the following: + +- Make sure you are holding an empty Mob Cage. +- Make sure the mob is supported by RS-MobCages. +- Make sure the mob does not have a custom name. +- Make sure you are interacting directly with the mob. + +Not every entity can be captured. + +For the current list of supported mobs, see: + +➡️ [Supported Mobs](./docs/Supported-Mobs.md) + +--- + +## I Cannot Capture a Named Mob + +This is expected behavior. + +RS-MobCages prevents named mobs from being captured. + +A mob with a custom name is protected from accidental capture. + +If the mob is intentionally named, remove the custom name before attempting to capture it. + +--- + +## I Cannot Capture a Player + +Players cannot be captured. + +Mob Cages are intended for supported mobs only. + +--- + +## The Mob I Am Trying to Capture Is Not Supported + +RS-MobCages only captures mobs that are currently supported by the plugin. + +If a mob is not listed on the [Supported Mobs](./docs/Supported-Mobs.md) page, it cannot currently be captured. + +Additional mob support may be added in future updates. + +--- + +## The Mob Will Not Release + +If a captured mob does not release as expected: + +- Make sure you are using a filled Mob Cage. +- Make sure there is enough open space for the mob to appear. +- Try moving to a different location. +- Make sure the area is not blocked by solid blocks. + +If the problem continues, check the server console for any errors. + +--- + +## The Mob Does Not Look the Same After Release + +Some mobs have variants, colors, or other unique attributes. + +RS-MobCages can preserve supported mob-specific information, but not every possible property is necessarily stored. + +For more information, see: + +➡️ [Mob Variants and Attributes](./docs/Mob-Variants-and-Attributes.md) + +--- + +## The Plugin Stops Working After an Update + +If RS-MobCages worked previously but stops working after an update: + +1. Stop the server. +2. Check that only one version of `RS-MobCages.jar` is installed. +3. Verify that you are using the correct version of the plugin for your server. +4. Check the server console for errors. +5. Review the release notes for the version you installed. + +Always back up your server before updating plugins. + +--- + +## Reporting a Bug + +If you believe you have found a bug, please include as much information as possible when reporting it. + +Helpful information includes: + +- Minecraft version +- Paper version +- RS-MobCages version +- What you were doing when the problem occurred +- Which mob was involved +- Any relevant server console errors + +Clear reproduction steps make bugs much easier to identify and fix. diff --git a/src/docs/images/MobCageRecipe.jpg b/src/docs/images/MobCageRecipe.jpg new file mode 100644 index 0000000000000000000000000000000000000000..df1da9c8478302d7fe170c55931c1ea3f3bf1b58 GIT binary patch literal 24567 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 literal 0 HcmV?d00001