Jump to content

[SOLVED] [1.12.2] Naturally spawning entity in multiple biome types


FlashHUN

Recommended Posts

How can I make an entity naturally spawn in multiple biome types? Like, for example, how could I make it spawn in plains biomes, forest biomes and desert biomes at the same time?
 

    @SubscribeEvent
    public void onEntityRegistry(RegistryEvent.Register<EntityEntry> event) {
    	event.getRegistry().register(EntityEntryBuilder.create().entity(EntityShinobi.class).id
    			(new ResourceLocation(References.mod_id, "mobs"), References.ENTITY_SHINOBI).name("RogueShinobi").tracker
    			(50, 1, true).spawn(EnumCreatureType.CREATURE, 45, 1, 6, BiomeDictionary.getBiomes(BiomeDictionary.Type.PLAINS)).egg
    			(16770207, 000000).build());
    	
    }

 

Edited by FlashHUN
marked as solved
Link to comment
Share on other sites

1 hour ago, diesieben07 said:

The spawn method asks for either an array of biomes or an Iterable of biomes. Just create a List and put all the biomes you want in there.

		List<Set<Biome>> biomes = new ArrayList<Set<Biome>>();
		biomes.add(BiomeDictionary.getBiomes(BiomeDictionary.Type.PLAINS));
		biomes.add(BiomeDictionary.getBiomes(BiomeDictionary.Type.FOREST));
		biomes.add(BiomeDictionary.getBiomes(BiomeDictionary.Type.SANDY));
		
    	event.getRegistry().register(EntityEntryBuilder.create().entity(EntityShinobi.class).id
    			(new ResourceLocation(References.mod_id, "mobs"), References.ENTITY_SHINOBI).name("RogueShinobi").tracker
    			(50, 1, true).spawn(EnumCreatureType.CREATURE, 45, 1, 6, biomes).egg
    			(16770207, 000000).build());

 

Alright, but how should I make that list? This gives me an error in the spawn method and I have no idea how to make that list

Link to comment
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • I tried to play a mod for forge 1.20.2 and the mod didn't work, fix this please.
    • EntityRenders requires an EntityRenderProvider. This is what I have: @Mod.EventBusSubscriber(modid = MODID, bus = Mod.EventBusSubscriber.Bus.MOD, value = Dist.CLIENT) public static class ClientModEvents { @SubscribeEvent public static void clientSetup(FMLClientSetupEvent event) { EntityRenderers.register(HOSE.get(), new HoseEntityRenderFactory()); } private static class HoseEntityRenderFactory implements EntityRendererProvider<HoseEntity> { @Override public EntityRenderer<HoseEntity> create(Context context) { return new HoseEntityRenderer<>(context); } } } Replace HoseEntity with your own entity. If you're doing multiple try doing generics (though untested).
    • First off, I know should probably be able to debug this on my own, but this is my first mod, and I couldn't figure it out for multiple days now. What I'm trying to do, is to modify the default minecart by replacing it with a slightly different version, but I'm stuck 1 step before that, that being "cloning" the minecart as a separate Entity/Item. Here you can see a GitHub gist of all relevant files: https://gist.github.com/Kipama/cd39127e8891715a3006fa990ca7ff14 If there are files missing or access isn't working as intended, please let me know! In the Gist you can find the following files: -CustomMinecartEntity.java:        This file extends AbstractMinecart and is a clone of the vanilla minecart entity. I know I should override the minecart entity directly, but as this should work rn, I didn't change it yet. -CustomMinecartRenderer.java:  Basically vanilla MinecartRenderer with a Custom slapped on it, extends MinecraftRenderer. -ModEntities.java:                         This is where the new Entity gets added to the deferred register ENTITY_TYPES. -ModernMinecarts.java:               The main mod file. Relevant part is at the bottom, where I try to use onClientSetup to register the new Entity using EntityRenderers.register(). That last part is where my problem begins. When I try to register the new entity using EntityRenderers.register(ModEntities.CUSTOM_MINECART_ENTITY.get(), CustomMinecartRenderer::new); I get a syntax Error saying the provided and required types don't match. These are the required and provided types: ModEntities.CUSTOM_MINECART_ENTITY.get(): Required: EntityType<? extends T> Provided:EntityType<CustomMinecartEntity> CustomMinecartRenderer::new: Required: EntityRendererProvider<T> Provided:<method reference   So far I looked at 2 different Git repositories implementing custom entities, but haven't been able to figure out what I'm doing wrong. Any answers, suggestions and ridicules appreciated.
    • Yes, it is. I found out how to do it. (for Forge 1.20.1) Add this to main class constructor: // ... MinecraftForge.EVENT_BUS.<PlayerInteractEvent.EntityInteract>addListener(e -> { Player playerWhoUsed = e.getEntity(); ItemStack usedItemStack = e.getItemStack(); Entity entityThatWasClicked = e.getTarget(); if (usedItemStack.getItem() instanceof YourItem item) { // your code... e.setCancelled(true); // you can remove this if you want to continue interaction } } // ...
    • Hi there, I'm hoping to create a block that renders a fake skybox, blocking anything behind it. There are a couple of mods that already do this, but they are very outdated. One example: https://github.com/Elix-x/Skyblocks/ https://www.curseforge.com/minecraft/mc-mods/skyblocks I'm not familiar enough with rendering to be able to port it. Is there anyone who can point me in the right direction? Any help would be appreciated.
  • Topics

×
×
  • Create New...

Important Information

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