Jump to content

Entity Spawning question


GmaN98

Recommended Posts

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.

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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!

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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



×
×
  • Create New...

Important Information

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