Minecraft no es solo un juego, ¡es toda una plataforma para la creatividad y el aprendizaje de la programación! Hoy vamos a descubrir cómo crear tu propio mob desde cero. Es una excelente manera de familiarizarse con Java y comprender los conceptos básicos del desarrollo de juegos.

¿Qué necesitamos?
Antes de empezar, asegúrate de que tienes instalado:
Java Development Kit (JDK) versión 17 o superior
IntelliJ IDEA (Community Edition es adecuado)
Minecraft Forge MDK (Mod Development Kit)
Conocimientos básicos de Java (variables, clases, métodos)
Paso 1: Configuración del entorno
Primero descarga Forge MDK desde el sitio web oficial files.minecraftforge.net. Descomprime el archivo en una carpeta separada y abre el proyecto en IntelliJ IDEA.
Ejecute el comando en el terminal IDE:
./gradlew genIntellijRuns💡 Consejo: Esto configurará el proyecto para el desarrollo. Espere a que Gradle descargue todas las dependencias; esto puede tardar unos minutos.
Paso 2: Crear una clase de mob
Vamos a crear un mob sencillo: una luciérnaga amistosa que vuela y brilla por la noche.
En la carpeta src/main/java/com/yourname/yourmod/entity crea el archivo FireflyEntity.java:
package com.yourname.yourmod.entity;
import net.minecraft.world.entity.EntityType;
import net.minecraft.world.entity.PathfinderMob;
import net.minecraft.world.entity.ai.attributes.AttributeSupplier;
import net.minecraft.world.entity.ai.attributes.Attributes;
import net.minecraft.world.entity.ai.goal.FloatGoal;
import net.minecraft.world.entity.ai.goal.WaterAvoidingRandomStrollGoal;
import net.minecraft.world.level.Level;
public class FireflyEntity extends PathfinderMob {
public FireflyEntity(EntityType<? extends PathfinderMob> type, Level world) {
super(type, world);
}
// Registramos el comportamiento de la turba
@Override
protected void registerGoals() {
this.goalSelector.addGoal(0, new FloatGoal(this));
this.goalSelector.addGoal(1, new WaterAvoidingRandomStrollGoal(this, 1.0D));
}
// Configuramos los atributos (salud, velocidad)
public static AttributeSupplier.Builder createAttributes() {
return PathfinderMob.createMobAttributes()
.add(Attributes.MAX_HEALTH, 5.0D)
.add(Attributes.MOVEMENT_SPEED, 0.25D);
}
}¿Qué está pasando aquí?
PathfinderMob - clase básica para mobs que pueden caminar
registerGoals() — método en el que determinamos el comportamiento de la turba (nadar, caminar, atacar)
createAttributes() — aquí establecemos las características: salud, velocidad, daño
Paso 3: Registrar el móvil
Ahora tenemos que «contarle» al juego sobre nuestro mob. Crea una clase ModEntities.java:
package com.yourname.yourmod.entity;
import net.minecraft.world.entity.EntityType;
import net.minecraft.world.entity.MobCategory;
import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.ForgeRegistries;
import net.minecraftforge.registries.RegistryObject;
public class ModEntities {
public static final DeferredRegister<EntityType<?>> ENTITIES =
DeferredRegister.create(ForgeRegistries.ENTITY_TYPES, "yourmod");
public static final RegistryObject<EntityType<FireflyEntity>> FIREFLY =
ENTITIES.register("firefly", () -> EntityType.Builder
.of(FireflyEntity::new, MobCategory.CREATURE)
.sized(0.4F, 0.3F) // tamaño de la caja de hit
.build("firefly"));
}No olvides registrar ENTITIES en la clase principal de tu mod:
@Mod("yourmod")
public class YourMod {
public YourMod() {
IEventBus bus = FMLJavaModLoadingContext.get().getModEventBus();
ModEntities.ENTITIES.register(bus);
}
}Paso 4: Crear un modelo y una textura
¡Hay un mob, pero es invisible! Necesitas crear un modelo 3D. Puedes usar el programa Blockbench - editor gratuito para modelos de Minecraft.
Crea un modelo simple (un cubo para el cuerpo, cubos pequeños para las alas)
Exportar como archivo Java
Coloque el modelo en
src/main/java/com/yourname/yourmod/client/model/Crea una textura (16x16 píxeles) y guárdala en
src/main/resources/assets/yourmod/textures/entity/

Paso 5: Renderizador de mobs
Crea una clase FireflyRenderer.java:
package com.yourname.yourmod.client.renderer;
import com.yourname.yourmod.entity.FireflyEntity;
import net.minecraft.client.renderer.entity.EntityRendererProvider;
import net.minecraft.client.renderer.entity.MobRenderer;
import net.minecraft.resources.ResourceLocation;
public class FireflyRenderer extends MobRenderer<FireflyEntity, FireflyModel> {
private static final ResourceLocation TEXTURE =
new ResourceLocation("yourmod", "textures/entity/firefly.png");
public FireflyRenderer(EntityRendererProvider.Context context) {
super(context, new FireflyModel(context.bakeLayer(FireflyModel.LAYER)), 0.3F);
}
@Override
public ResourceLocation getTextureLocation(FireflyEntity entity) {
return TEXTURE;
}
}Paso 6: Spawn mob en el mundo
Añadiremos un mob al spawn natural del juego. En la clase principal del mod, añade un controlador de eventos:
@SubscribeEvent
public static void onBiomeLoading(BiomeLoadingEvent event) {
if (event.getCategory() == Biome.BiomeCategory.FOREST) {
event.getSpawns().getSpawner(MobCategory.CREATURE)
.add(new MobSpawnSettings.SpawnerData(
ModEntities.FIREFLY.get(), 15, 2, 4));
}
}✅ ¡Perfecto! ¡Ahora las luciérnagas aparecerán en los biomas del bosque!
Paso 7: Prueba
Inicia el juego a través de IntelliJ IDEA (usa la configuración runClient). Crea un nuevo mundo y comprueba:
¿Aparece el mob en el bosque?
¿Se muestra correctamente el modelo?
¿Funciona el comportamiento (caminar, nadar)?
💡 Consejo: Si algo no funciona, comprueba los registros en la consola. Forge describe todos los errores en detalle.
Características adicionales
Puedes añadir el mob:
Sonidos propios (pasos, ataque, muerte)
Animaciones (aleteo, resplandor)
Comportamiento único (ataque, huida, búsqueda de comida)
Drop de objetos en caso de fallecimiento
Spawn a través del huevo de invocación
@Override
protected void dropCustomDeathLoot(DamageSource source, int looting, boolean recentlyHit) {
super.dropCustomDeathLoot(source, looting, recentlyHit);
this.spawnAtLocation(Items.GLOWSTONE_DUST, 1);
}Errores frecuentes de los principiantes
Olvidó registrar el móvil — comprueba que
ENTITIES.register(bus)se llamaRuta de textura incorrecta — asegúrese de que las rutas en el código y el sistema de archivos coincidan
No se ha generado un entorno de trabajo — vuelva a ejecutar
gradlew genIntellijRunsVersión obsoleta de Forge - utiliza la última versión estable para tu versión de Minecraft
¿Quieres profundizar en este tema y crear un mob realmente genial con una mecánica única?
En Codice analizamos en detalle muchos otros temas de programación, desde los conceptos básicos de Java hasta la creación de proyectos complejos. Cada tema se acompaña de tareas prácticas que ayudarán a consolidar el material.
Aquí aprenderás:
Trabajar con Java en ejemplos reales
Crear mods, plugins y juegos
Comprender la arquitectura del código y escribir código limpio
Resolver problemas como un verdadero desarrollador
Y si tienes alguna pregunta o necesitas ayuda, te damos la bienvenida a nuestro activo Canal de Telegram, ¡donde ya se ha reunido un gran equipo de personas de ideas afines! Siempre te ayudaremos a resolver el problema, te sugeriremos la mejor solución y te apoyaremos en el camino del aprendizaje.
Únete a Kodik: ¡la programación puede ser clara y emocionante! 🚀
