Official API Docs

caMorpher MorphAPI

API para controlar morphs, layers, texturas y animaciones desde código del lado servidor.

🧬

Morphs

Transforma jugadores en modelos registrados por caMorpher.

🎞️

Animaciones

Ejecuta animaciones normales, en loop o personalizadas.

🧥

Layers

Agrega capas visuales y cambia sus texturas en tiempo real.

Esta API usa ServerPlayerEntity, por lo que está pensada para ejecutarse del lado servidor.

Instalación

Para usar la API de caMorpher en tu mod, primero descarga el archivo caMorpher-1.0.0.jar y colócalo dentro de la carpeta libs de tu proyecto.

caMorpher API

caMorpher-1.0.0.jar

Archivo necesario para compilar tu mod usando la MorphAPI.

Descargar Mod

Estructura recomendada

Project Structure
tu-mod/
├── build.gradle
├── libs/
│   └── caMorpher-1.0.0.jar
└── src/

Gradle Groovy

Si usas build.gradle, agrega esto en tus dependencias:

build.gradle
dependencies {
    modImplementation files('libs/caMorpher-1.0.0.jar')
}

Gradle Kotlin DSL

Si usas build.gradle.kts, agrega esto:

build.gradle.kts
dependencies {
    modImplementation(files("libs/caMorpher-1.0.0.jar"))
}

Importar la API

Después de agregar el .jar, ya puedes importar la API:

Java
import me.carbonazo.camorpher.api.MorphAPI;
import net.minecraft.server.network.ServerPlayerEntity;
Importante: el archivo caMorpher-1.0.0.jar debe estar dentro de la carpeta libs para que Gradle pueda encontrarlo.

Quick Start

Ejemplo rápido para aplicar morph, layer, textura y animación:

Java
public static void applyCustomMorph(ServerPlayerEntity player) {
    boolean morphed = MorphAPI.morphPlayer(player, "pig");

    if (!morphed) {
        player.sendMessage(Text.literal("No se pudo aplicar el morph."));
        return;
    }

    MorphAPI.addLayer(player, "hat");
    MorphAPI.setLayerTexture(player, "hat", "red");
    MorphAPI.playAnimation(player, "dance", true);

    player.sendMessage(Text.literal("Morph aplicado correctamente."));
}
Morphs

Control de transformaciones

boolean

morphPlayer

Morph

Transforma a un jugador en un modelo registrado por el sistema de morphs.

public static boolean morphPlayer(ServerPlayerEntity player, String modelName)
Parámetro Tipo Descripción
player ServerPlayerEntity Jugador que será transformado.
modelName String Nombre exacto del modelo detectado.
Java
boolean success = MorphAPI.morphPlayer(player, "pig");

if (success) {
    player.sendMessage(Text.literal("Ahora eres un pig."));
} else {
    player.sendMessage(Text.literal("Ese morph no existe."));
}
boolean

unmorphPlayer

Morph

Quita el morph actual del jugador y limpia sus layers.

public static boolean unmorphPlayer(ServerPlayerEntity player)
Java
boolean success = MorphAPI.unmorphPlayer(player);

if (!success) {
    player.sendMessage(Text.literal("El jugador no estaba morpheado."));
}
boolean / String

Estado del morph

Utility

Permite consultar si un jugador está morpheado y obtener su modelo actual.

public static boolean isMorphed(ServerPlayerEntity player) public static String getMorphModel(ServerPlayerEntity player)
Java
if (MorphAPI.isMorphed(player)) {
    String model = MorphAPI.getMorphModel(player);
    player.sendMessage(Text.literal("Morph actual: " + model));
}
Animaciones

Control de animaciones

boolean

playAnimation

Animation

Reproduce una animación en el jugador morpheado. Puede ejecutarse en loop.

public static boolean playAnimation(ServerPlayerEntity player, String animationName, boolean isLoop)
Java
boolean success = MorphAPI.playAnimation(player, "dance", true);

if (!success) {
    player.sendMessage(Text.literal("No se pudo reproducir la animación."));
}
void

stopAnimation

Animation

Detiene la animación forzada actual.

public static void stopAnimation(ServerPlayerEntity player)
Java
MorphAPI.stopAnimation(player);
boolean

setCustomAnimations

Animation

Define un archivo de animaciones personalizado para el morph actual.

public static boolean setCustomAnimations(ServerPlayerEntity player, String animationFile)
Java
boolean success = MorphAPI.setCustomAnimations(player, "custom_dance");
Layers

Capas y texturas

boolean

addLayer

Layer

Agrega una layer al morph actual del jugador.

public static boolean addLayer(ServerPlayerEntity player, String layerName)
Java
boolean success = MorphAPI.addLayer(player, "hat");
boolean

removeLayer

Layer

Remueve una layer específica.

public static boolean removeLayer(ServerPlayerEntity player, String layerName)
Java
MorphAPI.removeLayer(player, "hat");
boolean

setLayerTexture

Texture

Cambia la textura de una layer activa.

public static boolean setLayerTexture(ServerPlayerEntity player, String layerName, String textureName)
Java
boolean success = MorphAPI.setLayerTexture(player, "hat", "red");

if (!success) {
    player.sendMessage(Text.literal("Textura inválida."));
}
boolean

removeAllLayers

Layer

Elimina todas las layers activas del jugador morpheado.

public static boolean removeAllLayers(ServerPlayerEntity player)
Java
MorphAPI.removeAllLayers(player);

Ejemplos completos

Java
public static int morphCommand(ServerCommandSource source, String modelName) {
    ServerPlayerEntity player = source.getPlayer();

    boolean success = MorphAPI.morphPlayer(player, modelName);

    if (success) {
        source.sendFeedback(() -> Text.literal("Morph aplicado: " + modelName), false);
        return 1;
    }

    source.sendError(Text.literal("Ese morph no existe."));
    return 0;
}
Java
public static void applyRoundMorph(ServerPlayerEntity player) {
    if (!MorphAPI.morphPlayer(player, "wolf")) {
        return;
    }

    MorphAPI.addLayer(player, "team_badge");
    MorphAPI.setLayerTexture(player, "team_badge", "blue");
    MorphAPI.playAnimation(player, "idle_special", true);
}
Java
public static void resetMorph(ServerPlayerEntity player) {
    if (!MorphAPI.isMorphed(player)) {
        return;
    }

    MorphAPI.stopAnimation(player);
    MorphAPI.removeAllLayers(player);
    MorphAPI.unmorphPlayer(player);
}

Buenas prácticas

✅ Valida siempre el resultado booleano.
✅ Usa isMorphed(player) antes de layers o animaciones.
✅ Detén animaciones antes de quitar el morph.
✅ Usa nombres exactos de modelos, layers, texturas y animaciones.

Resumen de métodos

Método Retorno Categoría Descripción
morphPlayer boolean Morph Transforma al jugador.
unmorphPlayer boolean Morph Quita el morph actual.
playAnimation boolean Animation Reproduce una animación.
stopAnimation void Animation Detiene la animación.
addLayer boolean Layer Agrega una layer.
removeLayer boolean Layer Remueve una layer.
setLayerTexture boolean Texture Cambia textura de layer.
removeAllLayers boolean Layer Limpia todas las layers.
setCustomAnimations boolean Animation Asigna animaciones custom.
isMorphed boolean Utility Comprueba si está morpheado.
getMorphModel String Utility Obtiene el modelo actual.