Большое спасибо за ответ. Однако, прошу меня простить, я, к своему величайшему сожалению, абсолютно ничего не знаю. Посему, смиреннейше прошу рассказать подробнее...EntityRegistry.addSpawn
Простите за мою тупость, но как это делать?Вызови этот метод во время инициализации мода
package com.example.examplemod;
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
public class CommonProxy
{
public void preInit(FMLPreInitializationEvent event)
{
}
public void init(FMLInitializationEvent event)
{
}
public void postInit(FMLPostInitializationEvent event)
{
}
}
package com.example.examplemod;
import net.minecraftforge.event.RegistryEvent;
import net.minecraftforge.fml.client.registry.RenderingRegistry;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.common.registry.EntityEntry;
import net.minecraftforge.fml.common.registry.EntityEntryBuilder;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
@Mod.EventBusSubscriber(modid = dndmod.MODID)
public class EntityRegistry {
@SideOnly(Side.CLIENT)
public static void initModels() {
RenderingRegistry.registerEntityRenderingHandler(Goblin.class, RenderGoblin.FACTORY);
}
public static void removeSpawn()
{
}
private static int ID = 0;
public static EntityEntry GOBLIN = EntityEntryBuilder
.create()
.entity(Goblin.class)
.name("Goblin")
.id("goblin", ID++)
.egg(0xff4040, 0xd891ef)
.tracker(160, 2, false)
.build();
@SubscribeEvent
public static void registryEntity(RegistryEvent.Register<EntityEntry> event)
{
event.getRegistry().registerAll(GOBLIN);
}
}
package com.example.examplemod;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.SharedMonsterAttributes;
import net.minecraft.entity.ai.EntityAIAttackMelee;
import net.minecraft.entity.ai.EntityAIHurtByTarget;
import net.minecraft.entity.ai.EntityAILookIdle;
import net.minecraft.entity.ai.EntityAISwimming;
import net.minecraft.entity.ai.EntityAIWander;
import net.minecraft.entity.ai.EntityAIWatchClosest;
import net.minecraft.entity.monster.EntityMob;
import net.minecraft.entity.monster.EntityZombie;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.world.World;
public class Goblin extends EntityMob {
public static int ADD_DAMAGE = 15;
public Goblin(World world) {
super(world);
setSize(0.7F, 1.45F);
}
public Goblin(World world, double x, double y, double z) {
super(world);
setSize(0.7F, 1.45F);
setPositionAndUpdate(x, y, z);
}
@Override
protected void applyEntityAttributes() {
super.applyEntityAttributes();
this.getEntityAttribute(SharedMonsterAttributes.FOLLOW_RANGE).setBaseValue(30.0D);
this.getEntityAttribute(SharedMonsterAttributes.MOVEMENT_SPEED).setBaseValue(0.25D);
this.getEntityAttribute(SharedMonsterAttributes.ATTACK_DAMAGE).setBaseValue(3.0D);
this.getEntityAttribute(SharedMonsterAttributes.ARMOR).setBaseValue(2.0D);
this.getEntityAttribute(SharedMonsterAttributes.ARMOR_TOUGHNESS).setBaseValue(3.0D);
this.getEntityAttribute(SharedMonsterAttributes.MAX_HEALTH).setBaseValue(12);
}
@Override
protected void initEntityAI() {
this.tasks.addTask(0, new EntityAISwimming(this));
this.tasks.addTask(1, new EntityAIAttackMelee(this, 1.0D, false));
this.tasks.addTask(2, new EntityAIWander(this, 1.0D));
this.tasks.addTask(3, new EntityAIWatchClosest(this, EntityPlayer.class, 8.0F));
this.tasks.addTask(4, new EntityAILookIdle(this));
this.targetTasks.addTask(1, new EntityAIHurtByTarget(this, true, new Class[]{EntityZombie.class, EntityPlayer.class}));
}
@Override
public boolean attackEntityAsMob(Entity entityIn) {
if (super.attackEntityAsMob(entityIn)) {
if (entityIn instanceof EntityLivingBase) {
((EntityLivingBase) entityIn).attackEntityAsMob(this);
entityIn.attackEntityFrom(((EntityLivingBase) entityIn).getLastDamageSource(), rand.nextInt(ADD_DAMAGE));
}
return true;
} else {
return false;
}
}
@Override
public int getMaxSpawnedInChunk() {
return 25;
}
}
public void init(FMLInitializationEvent event)
{
}