Posted October 28, 20196 yr 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 January 26, 20205 yr by MineModder2000
October 29, 20196 yr Author 13 hours ago, diesieben07 said: through DeferredWorkQueue Going to have to explain this one more.
October 31, 20196 yr 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.