Как добавить нового моба в Minecraft
Узнайте, как работать с Forge API, писать код на Java, создавать 3D-модели и добавлять уникальное поведение существам. Идеально для тех, кто хочет начать свой путь в геймдеве и изучить ООП на реальном проекте.
Minecraft — это не просто игра, это целая платформа для творчества и обучения программированию! Сегодня мы разберёмся, как создать своего собственного моба с нуля. Это отличный способ познакомиться с Java и понять основы игровой разработки.

Что нам понадобится?
Перед началом работы убедитесь, что у вас установлено:
Java Development Kit (JDK) версии 17 или выше
IntelliJ IDEA (Community Edition подойдёт)
Minecraft Forge MDK (Mod Development Kit)
Базовые знания Java (переменные, классы, методы)
Шаг 1: Настройка окружения
Сначала скачайте Forge MDK с официального сайта files.minecraftforge.net. Распакуйте архив в отдельную папку и откройте проект в IntelliJ IDEA.
Выполните команду в терминале IDE:
./gradlew genIntellijRuns💡 Совет: Это настроит проект для разработки. Подождите, пока Gradle скачает все зависимости — это может занять несколько минут.
Шаг 2: Создаём класс моба
Создадим простого моба — дружелюбного светлячка, который будет летать и светиться ночью.
В папке src/main/java/com/yourname/yourmod/entity создайте файл 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);
}
// Регистрируем поведение моба
@Override
protected void registerGoals() {
this.goalSelector.addGoal(0, new FloatGoal(this));
this.goalSelector.addGoal(1, new WaterAvoidingRandomStrollGoal(this, 1.0D));
}
// Настраиваем атрибуты (здоровье, скорость)
public static AttributeSupplier.Builder createAttributes() {
return PathfinderMob.createMobAttributes()
.add(Attributes.MAX_HEALTH, 5.0D)
.add(Attributes.MOVEMENT_SPEED, 0.25D);
}
}Что здесь происходит?
PathfinderMob — базовый класс для мобов, которые умеют ходить
registerGoals() — метод, где мы определяем поведение моба (плавать, ходить, атаковать)
createAttributes() — здесь задаём характеристики: здоровье, скорость, урон
Шаг 3: Регистрируем моба
Теперь нужно "рассказать" игре о нашем мобе. Создайте класс 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) // размер хитбокса
.build("firefly"));
}Не забудьте зарегистрировать ENTITIES в главном классе вашего мода:
@Mod("yourmod")
public class YourMod {
public YourMod() {
IEventBus bus = FMLJavaModLoadingContext.get().getModEventBus();
ModEntities.ENTITIES.register(bus);
}
}Шаг 4: Создаём модель и текстуру
Моб есть, но он невидимый! Нужно создать 3D-модель. Можно использовать программу Blockbench — бесплатный редактор для Minecraft моделей.
Создайте простую модель (куб для тела, маленькие кубики для крыльев)
Экспортируйте как Java файл
Поместите модель в
src/main/java/com/yourname/yourmod/client/model/Создайте текстуру (16x16 пикселей) и сохраните в
src/main/resources/assets/yourmod/textures/entity/

Шаг 5: Рендерер моба
Создайте класс 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;
}
}Шаг 6: Спаун моба в мире
Добавим моба в естественный спаун игры. В главном классе мода добавьте обработчик события:
@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));
}
}✅ Отлично! Теперь светлячки будут появляться в лесных биомах!
Шаг 7: Тестирование
Запустите игру через IntelliJ IDEA (используйте конфигурацию runClient). Создайте новый мир и проверьте:
Появляется ли моб в лесу?
Корректно ли отображается модель?
Работает ли поведение (ходьба, плавание)?
💡 Совет: Если что-то не работает — проверьте логи в консоли. Forge подробно описывает все ошибки.
Дополнительные возможности
Вы можете добавить мобу:
Собственные звуки (шаги, атака, смерть)
Анимации (взмах крыльев, свечение)
Уникальное поведение (атака, побег, поиск еды)
Дроп предметов при смерти
Спавн через яйцо призыва
@Override
protected void dropCustomDeathLoot(DamageSource source, int looting, boolean recentlyHit) {
super.dropCustomDeathLoot(source, looting, recentlyHit);
this.spawnAtLocation(Items.GLOWSTONE_DUST, 1);
}Частые ошибки новичков
Забыли зарегистрировать моба — проверьте, что
ENTITIES.register(bus)вызываетсяНеправильный путь к текстуре — убедитесь, что пути в коде и файловой системе совпадают
Не сгенерировали рабочее окружение — выполните
gradlew genIntellijRunsзановоУстаревшая версия Forge — используйте последнюю стабильную версию для вашей версии Minecraft
Хотите разобрать эту тему глубже и создать по-настоящему крутого моба с уникальной механикой?
В Кодике мы подробно разбираем множество других тем программирования — от основ Java до создания сложных проектов. Каждая тема сопровождается практическими заданиями, которые помогут закрепить материал.
У нас вы научитесь:
Работать с Java на реальных примерах
Создавать моды, плагины и игры
Понимать архитектуру кода и писать чистый код
Решать задачи как настоящий разработчик
А если возникнут вопросы или нужна поддержка — добро пожаловать в наш активный Telegram-канал, где уже собралась большая команда единомышленников! Мы всегда поможем разобраться с проблемой, подскажем лучшее решение и поддержим на пути обучения.
Присоединяйся к Кодику — программирование может быть понятным и увлекательным! 🚀