Jump to content
View in the app

A better way to browse. Learn more.

Forge Forums

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Featured Replies

Posted

Having trouble spawning my new mob naturally (though I can through events and what not). I am able to spawn vanilla mobs in over-world using this code, such as ZombiePigman, but it won't work for one I made.

 

Entity Class

Spoiler

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;
	}
}

 

 

Main Class

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));
		}
    }

 

Edited by MineModder2000

  • Author
On 10/29/2019 at 2:47 PM, diesieben07 said:

Did you read the provided JavaDocs?

I'll go through it more carefully later, for now though I figured out a different way to get my mob to spawn (it replaces regular skeletons with a certain chance in checkSpawn Event), and this is a more desirable way for me. In the future though I'll probably have to learn this approach. 

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...

Important Information

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

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.