Posted August 26, 20169 yr I have searched through the site but I haven't really found a concrete answer as I am working a mod that relies heavily on NPCs spawning on their own in the world. I am pretty new to modding and I have spent all day building the NPC, adding its AI, but for the life of me I cant figure out how to go about making sure it spawns when the world generates. Any and all suggestions are super welcome.
August 26, 20169 yr How do you want them to spawn, normally, or at certain positions? If the first arenyou extending the vanilla villager classes? VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect. Forge and vanilla BlockState generator.
August 26, 20169 yr Author I pretty much want them to spawn naturally as the world loads like animals and villagers. Actually this class is extending EntityCreature at the moment.
August 26, 20169 yr I dont have a workspace, but you could search for where getCanSpawnHere and see where it is called. Look around and see what other stuff is checked. VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect. Forge and vanilla BlockState generator.
August 26, 20169 yr Author Like as in look around in Forge, or on this site. Also I did run into your Github from another forum earlier tonight and I just want to say thank you for the help it has given me tonight. You are awesome!
August 26, 20169 yr Like as in look around in Forge, or on this site. Also I did run into your Github from another forum earlier tonight and I just want to say thank you for the help it has given me tonight. You are awesome! Oh your welcome i made that because people have a lot of difficulty with those things. I meant use the search feature in your IDE. VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect. Forge and vanilla BlockState generator.
August 26, 20169 yr Author I use eclipse so Ill have to look that up too. And I love how you code, you made everything more clearer. If it wasn't for you, id still be back at the beginning.
August 26, 20169 yr I use eclipse so Ill have to look that up too. And I love how you code, you made everything more clearer. If it wasn't for you, id still be back at the beginning. I put the comments there for people looking at that code if what i code isnt open source i dont add those unless i need it for myself. VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect. Forge and vanilla BlockState generator.
August 26, 20169 yr Author ok so I found getCanSpawnHere in EntityLiving so would it be safe to say I can apply that code to the actual Npc class, or would I have to make a separate class just to get it to spawn
August 26, 20169 yr What you should do is look for where it is being called not where it is being made/overriden. This way you can check the other requirements for an entity to spawn. As i dont know what else is checked, but you should look at the super method of getCanSpawnHere and override it if one of those is a problem. VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect. Forge and vanilla BlockState generator.
August 26, 20169 yr You can simply add them to the spawnableCreatureList from the BiomeEvent#CreateDecorator event. Create the event-handler, subscribe to the event. The passed argument BiomeGenBase is the biome in question. Check if the biome is ok for your entity to spawn in, and then call biome.spawnableCreatureList.add(new Biome.SpawnListEntry(YourEntity.class, weight, min group count, max group count)); Also previously known as eAndPi. "Pi, is there a station coming up where we can board your train of thought?" -Kronnn Published Mods: Underworld Handy links: Vic_'s Forge events Own WIP Tutorials.
August 26, 20169 yr You can simply add them to the spawnableCreatureList from the BiomeEvent#CreateDecorator event. Create the event-handler, subscribe to the event. The passed argument BiomeGenBase is the biome in question. Check if the biome is ok for your entity to spawn in, and then call biome.spawnableCreatureList.add(new Biome.SpawnListEntry(YourEntity.class, weight, min group count, max group count)); I'd recommend using EntityRegistry.addSpawn instead of the event handler, this adds an entry for your mob to the appropriate spawn list of each Biome you specified. Please don't PM me to ask for help. Asking your question in a public thread preserves it for people who are having the same problem in the future.
August 26, 20169 yr I'd recommend using EntityRegistry.addSpawn instead of the event handler, this adds an entry for your mob to the appropriate spawn list of each Biome you specified. >_< Forgot about the EntityRegistry way. Thanks for reminding me. Also previously known as eAndPi. "Pi, is there a station coming up where we can board your train of thought?" -Kronnn Published Mods: Underworld Handy links: Vic_'s Forge events Own WIP Tutorials.
August 26, 20169 yr Author Can I add that to the Npc entity class or would I have to make that its own class like EntitySpawn?
August 26, 20169 yr Can I add that to the Npc entity class or would I have to make that its own class like EntitySpawn? You should have a class called something like ModEntities (the name doesn't really matter) that registers all of your entity classes, add the spawn from this class. Please don't PM me to ask for help. Asking your question in a public thread preserves it for people who are having the same problem in the future.
August 26, 20169 yr Author Ok I have created that, and I am looking at other examples on how to go about writing the code for this NPC. Most I have seen are for animals and items, BUT I am also using the EntityRegistry.class file in forge as reference as well....this is going to take a while just to spawn one NPC haha!
August 26, 20169 yr As chance would have it, I just finished (I hope) debugging a goat that will mow my tall grass for me. I chose to implement its spawning along with other registration calls by adding a static method to my mob's parent class (I have a parent-child class structure because I'm planning to add similar mobs that will share code). This gets called during my main class's preInit(): static protected void regEntityEtc (Class<? extends classEntityBrowser> clazz, String name, int[] egg, BiomeGenBase[] biomes) { int weight = 3; // TODO: Parameterize these when I add more mob species int min = 2; int max = 4; EntityRegistry.registerModEntity (clazz, name, mod.getNextEntityId (), mod, 80, 3, true); EntityRegistry.addSpawn (clazz, weight, min, max, EnumCreatureType.CREATURE, biomes); // TODO: Implement egg after upgrade from mc 1.8 } As you can see, "biomes" is an array of BiomeGenBase. I chose to declare one statically in each mob's child class: protected static final BiomeGenBase[] biomes = { BiomeGenBase.plains, BiomeGenBase.forest, BiomeGenBase.forestHills, BiomeGenBase.savanna }; If you have just one mob, you can collapse my parent-child class structure into something simpler. The debugger is a powerful and necessary tool in any IDE, so learn how to use it. You'll be able to tell us more and get better help here if you investigate your runtime problems in the debugger before posting.
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.