caMorpher MorphAPI
API para controlar morphs, layers, texturas, animaciones y render en primera persona desde código del lado servidor.
Morphs
Transforma jugadores en modelos registrados por caMorpher.
Animaciones
Ejecuta animaciones normales, en loop o personalizadas.
Primera persona
Controla brazos, layers, equipment y modos especiales de item.
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.2.jar y colócalo dentro de la carpeta libs
de tu proyecto.
caMorpher-1.0.2.jar
Archivo necesario para compilar tu mod usando la MorphAPI.
Estructura recomendada
tu-mod/
├── build.gradle
├── libs/
│ └── caMorpher-1.0-SNAPSHOT.jar
└── src/
Gradle Groovy
Si usas build.gradle, agrega esto en tus dependencias:
dependencies {
modImplementation files('libs/caMorpher-1.0-SNAPSHOT.jar')
}
Gradle Kotlin DSL
Si usas build.gradle.kts, agrega esto:
dependencies {
modImplementation(files("libs/caMorpher-1.0-SNAPSHOT.jar"))
}
Importar la API
Después de agregar el .jar, ya puedes importar la API:
import me.carbonazo.camorpher.api.MorphAPI;
import me.carbonazo.camorpher.api.FirstPersonRenderOptions;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.server.network.ServerPlayerEntity;
caMorpher-1.0-SNAPSHOT.jar debe estar dentro de la carpeta
libs para que Gradle pueda encontrarlo.
Quick Start
Ejemplo rápido para aplicar morph, layer, textura, animación y brazos en primera persona:
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.setFirstPersonArmsVisible(player, true);
MorphAPI.setFirstPersonLayersVisible(player, true);
MorphAPI.setFirstPersonEquipmentVisible(player, false);
MorphAPI.playAnimation(player, "dance", true);
player.sendMessage(Text.literal("Morph aplicado correctamente."));
}
Control de transformaciones
morphPlayer
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. |
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."));
}
unmorphPlayer
Quita el morph actual del jugador y limpia sus layers.
public static boolean unmorphPlayer(ServerPlayerEntity player)
boolean success = MorphAPI.unmorphPlayer(player);
if (!success) {
player.sendMessage(Text.literal("El jugador no estaba morpheado."));
}
Estado del morph
Permite consultar si un jugador está morpheado y obtener su modelo actual.
public static boolean isMorphed(ServerPlayerEntity player)
public static String getMorphModel(ServerPlayerEntity player)
if (MorphAPI.isMorphed(player)) {
String model = MorphAPI.getMorphModel(player);
player.sendMessage(Text.literal("Morph actual: " + model));
}
Control de animaciones
playAnimation
Reproduce una animación en el jugador morpheado. Puede ejecutarse en loop.
public static boolean playAnimation(ServerPlayerEntity player, String animationName, boolean isLoop)
boolean success = MorphAPI.playAnimation(player, "dance", true);
if (!success) {
player.sendMessage(Text.literal("No se pudo reproducir la animación."));
}
stopAnimation
Detiene la animación forzada actual. Si estaba activo el modo especial de item, también lo desactiva automáticamente.
public static void stopAnimation(ServerPlayerEntity player)
MorphAPI.stopAnimation(player);
setCustomAnimations
Define un archivo de animaciones personalizado para el morph actual.
public static boolean setCustomAnimations(ServerPlayerEntity player, String animationFile)
boolean success = MorphAPI.setCustomAnimations(player, "custom_dance");
Render en primera persona
First Person Options
caMorpher permite controlar cómo se renderiza el morph en primera persona. Puedes modificar brazos custom, layers, equipamiento, ambas manos y modos especiales.
public static FirstPersonRenderOptions getFirstPersonOptions(PlayerEntity player)
public static boolean setFirstPersonOptions(ServerPlayerEntity player, FirstPersonRenderOptions options)
FirstPersonRenderOptions options = MorphAPI.getFirstPersonOptions(player);
FirstPersonRenderOptions updated = options
.withShowCustomArms(true)
.withShowLayers(true)
.withShowEquipment(false);
MorphAPI.setFirstPersonOptions(serverPlayer, updated);
Visibilidad en primera persona
Estos métodos permiten activar o desactivar partes visuales del morph en primera persona.
public static boolean setFirstPersonArmsVisible(ServerPlayerEntity player, boolean visible)
public static boolean setFirstPersonLayersVisible(ServerPlayerEntity player, boolean visible)
public static boolean setFirstPersonEquipmentVisible(ServerPlayerEntity player, boolean visible)
public static boolean setFirstPersonBothHandsVisible(ServerPlayerEntity player, boolean visible)
public static boolean setFirstPersonBothHandsAutoDetect(ServerPlayerEntity player, boolean enabled)
MorphAPI.setFirstPersonArmsVisible(player, true);
MorphAPI.setFirstPersonLayersVisible(player, true);
MorphAPI.setFirstPersonEquipmentVisible(player, false);
MorphAPI.setFirstPersonBothHandsVisible(player, true);
MorphAPI.setFirstPersonBothHandsAutoDetect(player, true);
First Person Item Animation
Reproduce una animación especial en primera persona y activa automáticamente el modo
specialItemMode. Al detenerla, la API desactiva ese modo.
public static boolean playFirstPersonItemAnimation(ServerPlayerEntity player, String animationName, boolean isLoop)
public static void stopFirstPersonItemAnimation(ServerPlayerEntity player)
public static boolean setFirstPersonSpecialItemMode(ServerPlayerEntity player, boolean enabled)
boolean success = MorphAPI.playFirstPersonItemAnimation(player, "item_use", false);
if (!success) {
player.sendMessage(Text.literal("No se pudo reproducir la animación de item."));
}
// Para detenerla:
MorphAPI.stopFirstPersonItemAnimation(player);
Capas y texturas
addLayer
Agrega una layer al morph actual del jugador.
public static boolean addLayer(ServerPlayerEntity player, String layerName)
boolean success = MorphAPI.addLayer(player, "hat");
removeLayer
Remueve una layer específica.
public static boolean removeLayer(ServerPlayerEntity player, String layerName)
MorphAPI.removeLayer(player, "hat");
setLayerTexture
Cambia la textura de una layer activa.
public static boolean setLayerTexture(ServerPlayerEntity player, String layerName, String textureName)
boolean success = MorphAPI.setLayerTexture(player, "hat", "red");
if (!success) {
player.sendMessage(Text.literal("Textura inválida."));
}
removeAllLayers
Elimina todas las layers activas del jugador morpheado.
public static boolean removeAllLayers(ServerPlayerEntity player)
MorphAPI.removeAllLayers(player);
Ejemplos completos
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;
}
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);
}
public static void resetMorph(ServerPlayerEntity player) {
if (!MorphAPI.isMorphed(player)) {
return;
}
MorphAPI.stopAnimation(player);
MorphAPI.removeAllLayers(player);
MorphAPI.setFirstPersonSpecialItemMode(player, false);
MorphAPI.unmorphPlayer(player);
}
public static void configureFirstPerson(ServerPlayerEntity player) {
MorphAPI.setFirstPersonArmsVisible(player, true);
MorphAPI.setFirstPersonLayersVisible(player, true);
MorphAPI.setFirstPersonEquipmentVisible(player, false);
MorphAPI.setFirstPersonBothHandsVisible(player, true);
MorphAPI.setFirstPersonBothHandsAutoDetect(player, true);
}
Buenas prácticas
isMorphed(player) antes de layers o animaciones.setFirstPersonSpecialItemMode(player, false) al resetear modos especiales.playFirstPersonItemAnimation cuando necesites animaciones de item en primera persona.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. |
playFirstPersonItemAnimation |
boolean |
First Person | Reproduce una animación especial de item en primera persona. |
stopAnimation |
void |
Animation | Detiene la animación actual. |
stopFirstPersonItemAnimation |
void |
First Person | Detiene la animación especial de item. |
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. |
getFirstPersonOptions |
FirstPersonRenderOptions |
First Person | Obtiene las opciones de render en primera persona. |
setFirstPersonOptions |
boolean |
First Person | Actualiza todas las opciones de primera persona. |
setFirstPersonArmsVisible |
boolean |
First Person | Activa o desactiva brazos custom. |
setFirstPersonLayersVisible |
boolean |
First Person | Activa o desactiva layers en primera persona. |
setFirstPersonEquipmentVisible |
boolean |
First Person | Activa o desactiva equipment. |
setFirstPersonBothHandsVisible |
boolean |
First Person | Activa o desactiva ambas manos. |
setFirstPersonBothHandsAutoDetect |
boolean |
First Person | Activa o desactiva auto-detect de ambas manos. |
setFirstPersonSpecialItemMode |
boolean |
First Person | Activa o desactiva el modo especial de item. |
isMorphed |
boolean |
Utility | Comprueba si está morpheado. |
getMorphModel |
String |
Utility | Obtiene el modelo actual. |