Jump to content

Issues with Pathfinding Underwater


redw0lf

Recommended Posts

Hi there,

 

I'm currently fiddling a little bit with Minecraft modding, currently I'm working on some kind of a hostile squid. For this purpose I created the according classes (render entity ...) and coppied most of the behaviour from the Zombies AI.

 

The AI is modified in the way, that the Swimming behaviour is disabled, hence the mob sinks down to the ocean floor. On the floor it behaves exactly like a zombie, i.e. it tracks the player and moves towards the player and attacks when the player is within reach.

Now there comes the problem with the pathfinding: The mob doesn't recognize the water block as a sufficient block to kind of "walk" onto, hence it isn't used for pathfinding.

This problem can be come over while activating the swimming behaviour (which kinds of lets the mob jump to swim up). The problem with this solution nonetheless is, that the behaviour gets called to often and therefore somehow messes up the EntityAIAttackOnCollide behaviour which tracks the mob towards the player (but not on the y axxis.). What basically happens is that the swim behaviour is called to often and the mob swims to the water surface. In addition the mob cannot pathfind (because it has no solid ground beneath).

 

 

Another way to correct the pathfinding would also be to fizzle with the navigator. But when settings either canSwim or avoidsWater to the opposite of the default value the pathfinding is also messed up. With this option i'm guessing it consumes to much time to actually find one of the bests times and hence stops pathfinding (or something like this).

 

What I'm asking for is, if someone has found or is using a good way for mobs to pathfind under water? I'm out of guessing.

Hopefully someone will be able to help

Link to comment
Share on other sites

The basic problem is mainly that the water block is not recognized as a pathable block. Hence the pathfinding does not work. So the basic question would be: How do I change the Water Block/pathfinding algorithms in such a way that the water block is pathable.

Link to comment
Share on other sites

You'd probably have to write your own pathfinder and AI task class.

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Link to comment
Share on other sites

I was thinking you could perhaps look into the squid and see how it moves around, I guess it just moves at random but at least any water filled block is a valid pathing target :P

 

Squid pathfinding is "go down, that's it, down, yess....downwardssss...."

AFAIK it doesn't actually care if there's water there or not, it just tries to sink.

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Link to comment
Share on other sites

I'm not at my PC atm so I can't check but is it the same shit with bats?

Because if it isn't then that could give a clue on how to do it.

 

Edit:

The way we did sharks in the mod I'm working on now was simply by inheriting from

net.minecraft.entity.passive.EntityWaterMob;

and then writing our own attack logic into the update method.

If you guys dont get it.. then well ya.. try harder...

Link to comment
Share on other sites

I'm not at my PC atm so I can't check but is it the same shit with bats?

Because if it isn't then that could give a clue on how to do it.

 

Edit:

The way we did sharks in the mod I'm working on now was simply by inheriting from

net.minecraft.entity.passive.EntityWaterMob;

and then writing our own attack logic into the update method.

 

That sounds really interesting. I'll try to look into this one. (And: The basic squid movement it more or less random movement and tentacle swinging). But don't you have problems with this when you try to add other AI Tasks e.g. the Zombie swarming or so (this may be really interesting for sharks)

 

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.