Jump to content

How create a custom mob / entity in 1.14 and above


Recommended Posts

Posted

Hello there, I'm looking for resources to learn how to create a custom mob with custom model and so on in the latest forge version 1.14.4.
Haven't found anything yet, did create a model with blockbench but I don't know how to implement it.

  • Like 1
Posted (edited)

I just finished experimenting with this. Here's my repository if you want to have a look: https://github.com/TheMikeste1/Wabbits

 

You'll need to register an EntityType. Please note that the way I'm doing this is a little strangely because of the way I set up my spawn eggs. There's a lot of code you don't need in my repository. Once you've registered an EntityType, you'll need a probably need a custom entity class. For rendering, you'll need a renderer, renderer factory, and a model (unless you want to use one of the existing models. Once you've made those, you can register your renderer like so (note that this is client side only!):

RenderingRegistry.registerEntityRenderingHandler(WabbitEntity.class, RenderWabbitFactory.INSTANCE);

 

Edited by TheMikeste1
  • Thanks 2
  • 1 month later...
Posted (edited)

Just followed these steps and made a new mob, it renders and behaves corruptly AI-wise, however it cannot be hit for some reason. Anyway I try to attack it, the mob is simply unfazed. Please help. 

 

SOLVED. 

Edited by MineModder2000
  • Thanks 1
Posted

Having trouble spawning my new mob naturally (though I can through events and what not) 

 

Main Mod

Spoiler

   private static EntityType<Skeleton2> skeleton2;

   @Mod.EventBusSubscriber(bus=Mod.EventBusSubscriber.Bus.MOD)
    	
        @SubscribeEvent
        public static void registerEntities(final RegistryEvent.Register<EntityType<?>> event) {

            LOGGER.debug("Hello from Register Entities");
            
            event.getRegistry().registerAll(
            						
            	skeleton2 = register("skeleton2", EntityType.Builder.<Skeleton2>create(Skeleton2::new, EntityClassification.MISC)
            		.setCustomClientFactory((spawnEntity, world) -> new Skeleton2(skeleton2, world)))
            );
            
            setSpawnBiomes();
        }
        
        @SuppressWarnings("deprecation")
    	private static <T extends Entity> EntityType<T> register(String key, EntityType.Builder<T> builder) {
    	    	
    	    return Registry.register(Registry.ENTITY_TYPE, key, builder.build(key));
    	}     
    } 
    
    private static void setSpawnBiomes() {
    	
        EntitySpawnPlacementRegistry.register(skeleton2,
        	EntitySpawnPlacementRegistry.PlacementType.ON_GROUND,
            Heightmap.Type.MOTION_BLOCKING_NO_LEAVES,
            (entityType, world, spawnReason, pos, random) -> {
                		
                if (entityType != skeleton2) {
                	
                	throw new IllegalArgumentException(skeleton2.getRegistryName() + " only!");
                }
                    
                return true; 
             }
        );
        
        for (Biome biome : Biome.BIOMES) {

			biome.getSpawns(EntityClassification.MONSTER).add(new Biome.SpawnListEntry(skeleton2, 100, 1, 2));
		}
    }

 

 

EntityClass

Spoiler

package mymod;

import java.util.Random;

import net.minecraft.entity.EntityType;
import net.minecraft.entity.SharedMonsterAttributes;
import net.minecraft.entity.SpawnReason;
import net.minecraft.entity.monster.AbstractSkeletonEntity;
import net.minecraft.entity.projectile.AbstractArrowEntity;
import net.minecraft.entity.projectile.ArrowEntity;
import net.minecraft.inventory.EquipmentSlotType;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.potion.EffectInstance;
import net.minecraft.potion.Effects;
import net.minecraft.util.DamageSource;
import net.minecraft.util.SoundEvent;
import net.minecraft.util.SoundEvents;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.DifficultyInstance;
import net.minecraft.world.IWorld;
import net.minecraft.world.World;

public class Skeleton2 extends AbstractSkeletonEntity {

	protected Skeleton2(EntityType<? extends AbstractSkeletonEntity> type, World worldIn) {
		
		super(type, worldIn);
	}
	
	@Override
	protected void registerAttributes() {
		
	    super.registerAttributes();
	    this.getAttribute(SharedMonsterAttributes.MAX_HEALTH).setBaseValue(50); 
	}
	
	@Override
    protected SoundEvent getAmbientSound() {
    	
	    return SoundEvents.ENTITY_SKELETON_AMBIENT;
	}

    @Override
	protected SoundEvent getHurtSound(DamageSource damageSourceIn) {
		
		return SoundEvents.ENTITY_SKELETON_HURT;
	}

	@Override
	protected SoundEvent getDeathSound() {
		
		return SoundEvents.ENTITY_SKELETON_DEATH;
	}

	@Override
	protected SoundEvent getStepSound() {

		return SoundEvents.ENTITY_SKELETON_STEP;
	}

	@Override
	protected AbstractArrowEntity func_213624_b(ItemStack p_213624_1_, float p_213624_2_) {
		
        AbstractArrowEntity abstractarrowentity = super.func_213624_b(p_213624_1_, p_213624_2_);
        
        if (abstractarrowentity instanceof ArrowEntity) {
        	
        	((ArrowEntity)abstractarrowentity).addEffect(new EffectInstance(Effects.POISON, 60));
        }

        return abstractarrowentity;
	}
}

 

 

  • Like 1
  • 1 month later...
Posted
On 9/3/2019 at 6:26 PM, TheMikeste1 said:

I just finished experimenting with this. Here's my repository if you want to have a look: https://github.com/TheMikeste1/Wabbits

 

You'll need to register an EntityType. Please note that the way I'm doing this is a little strangely because of the way I set up my spawn eggs. There's a lot of code you don't need in my repository. Once you've registered an EntityType, you'll need a probably need a custom entity class. For rendering, you'll need a renderer, renderer factory, and a model (unless you want to use one of the existing models. Once you've made those, you can register your renderer like so (note that this is client side only!):


RenderingRegistry.registerEntityRenderingHandler(WabbitEntity.class, RenderWabbitFactory.INSTANCE);

 

Have you make the model with blockbench or with tabula? I am interessed 

New in Modding? == Still learning!

Posted
On 10/28/2019 at 12:18 AM, MineModder2000 said:

Just followed these steps and made a new mob, it renders and behaves corruptly AI-wise, however it cannot be hit for some reason. Anyway I try to attack it, the mob is simply unfazed. Please help. 

 

SOLVED. 

Why you resolved it.

New in Modding? == Still learning!

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • I tried do download the essential mod to my mod pack but i didnt work. I paly on 1.21 and it should work. I use neoforge for my modding. The weird things is my friend somehow added the mod to his modpack and many others that I somehow can´t. Is there anything i can do? 
    • Thanks, I've now installed a slightly newer version and the server is at least starting up now.
    • i have the same issue. Found 1 Create mod class dependency(ies) in createdeco-1.3.3-1.19.2.jar, which are missing from the current create-1.19.2-0.5.1.i.jar Found 11 Create mod class dependency(ies) in createaddition-fabric+1.19.2-20230723a.jar, which are missing from the current create-1.19.2-0.5.1.i.jar Detailed walkthrough of mods which rely on missing Create mod classes: Mod: createaddition-fabric+1.19.2-20230723a.jar Missing classes of create: com/simibubi/create/compat/jei/category/sequencedAssembly/JeiSequencedAssemblySubCategory com/simibubi/create/compat/recipeViewerCommon/SequencedAssemblySubCategoryType com/simibubi/create/compat/rei/CreateREI com/simibubi/create/compat/rei/EmptyBackground com/simibubi/create/compat/rei/ItemIcon com/simibubi/create/compat/rei/category/CreateRecipeCategory com/simibubi/create/compat/rei/category/WidgetUtil com/simibubi/create/compat/rei/category/animations/AnimatedBlazeBurner com/simibubi/create/compat/rei/category/animations/AnimatedKinetics com/simibubi/create/compat/rei/category/sequencedAssembly/ReiSequencedAssemblySubCategory com/simibubi/create/compat/rei/display/CreateDisplay Mod: createdeco-1.3.3-1.19.2.jar Missing classes of create: com/simibubi/create/content/kinetics/fan/SplashingRecipe
    • The crash points to moonlight lib - try other builds or make a test without this mod and the mods requiring it
    • Do you have shaders enabled? There is an issue with the mod simpleclouds - remove this mod or disable shaders, if enabled  
  • Topics

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.