/PerViamInvenire

Highspeed caching path finding for minecraft.

Primary LanguageJavaGNU General Public License v3.0GPL-3.0

PerViamInvenire
PerViamInvenire Source Code

Be sure to ⭐ this repo so you can keep up to date on any progress!



Base implementation:

This library is a derivative of the multi-threaded pathfinder that was originally designed for the Minecraft mod Minecolonies. This extraction replaces several of its Citizen specific features with flags which can be managed via callbacks and internal feature registries.

The default navigator creates a cache of the chunks between the source and possible target and then creates a calculation task on a thread pool. The calculation that is run is an adapted version of the A*-Pathfinding algorithm. Block weights can be adapted for each different entity type using the provided API.

Vanilla compatibility:

By default, the mod replaces any vanilla mobs GroundPathNavigator. In other words all entities that travel over or on the ground are currently supported. However, as of now no flying or climbing mobs are supported.

Notable supported entities:

  • Creeper
  • Drowned
  • Enderman
  • Evoker
  • Illusioner
  • Iron Golem
  • Mooshroom
  • Skeleton
  • Stray
  • Vex
  • Villager
  • Vindicator
  • Wandering Trader
  • Witch
  • Wither Skeleton
  • Zombie
  • Zombie Villager

See the following file for more details: Compatible Vanilla Entity List.

Vanilla compatibility (State):

State of the application: The current state of this mod is ALPHA. This is important, since even though we do our best to maintain the best compatibility and prevent bugs from appearing, we do not have the time or stamina to test every single feature/bugged-feature that minecraft holds when it comes to pathfinding. If you do find a bug or something that behaves differently from the vanilla minecraft please create an issue on the bug tracker Here.

Mod compatibility:

By default, any mob that uses a default GroundPathNavigator can be easily added, by adding it to the data pack tag: per-viam-invenire:replace_vanilla_navigator. This will cause PerViamInvenire to replace the navigator that is used by the mobs in that list and use best guess values when needed.

If a modder wants to support PerViamInvenire directly then they can depend directly on the PerViamInvenire API to make this a reality.

Installation:

The way to install PerViamInvenire differs if you are a player or a modder:

Installation of PerViamInvenire as a player:

To install PerViamInvenire as a player you need to perform the following steps:

  1. Download the correct version from CurseForge.
  2. Create a Forge based profile in your launcher of choice.
  3. Drop the PerViamInvenire jar into the mods folder of your profile.
  4. Enjoy!
  5. Report any bugs you found.

Installation of PerViamInvenire as a Modder:

To install PerViamInvenire as a modder you need to perform the following steps:

  1. Add the LDTTeam Maven repository to your project:
repositories {
    maven {
        name 'LDTTeam - Modding'
        url 'https://ldtteam.jfrog.io/ldtteam/modding/'
    }
}
  1. Determine which version of PerViamInvenire you want to depend on using CurseForge.
  2. Add the PerViamInvenire API-jar as a Compile-time and the PerViamInvenire Main-jar as a Run-time dependency:
dependencies {
    compileOnly fg.deobf("com.ldtteam:PerViamInvenire:${project.exactMinecraftVersion}-${project.perViamInvenireVersion}:api")
    runtimeOnly fg.deobf("com.ldtteam:PerViamInvenire:${project.exactMinecraftVersion}-${project.perViamInvenireVersion}:universal")
}

Proudly supported by:

BiSect Hosting LDTTeam link