Перейти к содержимому
Mineforgian

SmartBrainLib

A brain library for Minecraft, making the brain system easier to use and manage

5.1M загрузок291 подписчиковMPL-2.0fabricforgeneoforgequilt

Обновлён 30 июня 2026 г. · опубликован 17 декабря 2022 г.

A brain library for Minecraft, making the brain system easier to use and manage.

What is this?

The brain system in Minecraft is an almost cryptic new entity AI system that Mojang introduced to handle more complex mobs, and allow for more advanced entity handling.

Unfortunately Mojang's implementation is lacking, and overly complex.

Additionally, it's also done in a rather inefficient way, which means that overall the system is not worth using in place of the existing goals system.

This library aims to overhaul the brain system, making it actually usable, and configurable.

Note however, that the existing goal system will still be simpler at face value - the brain system is intended for more complex interactions, but it can also be fun to experiment with.

So what does SmartBrainLib do?

SBL is a multi-facet approach to the brain system, and will continue to expand and improve as I use it.

Here are its main features:

Auto-handles memory types

Don't worry about having to work out which memory modules to register for your entity.

Dynamic sensors

Sensors can now be dynamically configured and handled. This allows for much more advanced and flexible sensors

Advanced behaviours

Utilise built-in, or create new behaviours based on an extensible behaviour class, which builds in callbacks, predication, cooldowns, and more.

Runtime-safe behaviour modification

Add, remove, and modify behaviours dynamically from an existing entity.

Optimisation

SBL replaces almost the entirety of the vanilla brain system's functions, using high-efficiency functions to remove the inefficiencies in as many areas as possible of the brain. Done right, an SBL entity could be even more efficient than one using goals!

Additional sensors, behaviours, and memory types

SBL builds in additional modules for use in any entity, with more to come over time.

Added utility functions

As well as the expected brain functionality, SBL additionally adds additional helpers, such as:

  • Optimised level entity-getter functions
  • Developer-friendly Random library
  • Brain interface utility for adding/removing brain content from non-SBL entities

How do I use it?

The library is documented on its Wiki Page




If you have issues or want to contribute, please jump on the Github Page and make your voice heard

Версии

ВерсияКаналИграЗагрузчикиДатаСкачать
2.0.0Релиз26.2neoforge30 июня 2026 г..jar (500 КБ)
2.0.0Релиз26.2forge30 июня 2026 г..jar (504 КБ)
2.0.0Релиз26.2fabric30 июня 2026 г..jar (503 КБ)
2.0.0Релиз26.1.2neoforge30 июня 2026 г..jar (500 КБ)
2.0.0Релиз26.1.2forge30 июня 2026 г..jar (504 КБ)
2.0.0Релиз26.1.2fabric30 июня 2026 г..jar (507 КБ)
1.17-alpha-1Альфа26.1.2neoforge12 мая 2026 г..jar (434 КБ)
1.17-alpha-1Альфа26.1.2forge12 мая 2026 г..jar (438 КБ)
1.17-alpha-1Альфа26.1.2fabric12 мая 2026 г..jar (441 КБ)
1.16.11Релиз1.21.11neoforge11 декабря 2025 г..jar (378 КБ)
1.16.11Релиз1.21.11fabric11 декабря 2025 г..jar (371 КБ)
1.16.11.1Релиз1.21.10forge19 октября 2025 г..jar (378 КБ)
1.16.11Релиз1.21.10neoforge7 октября 2025 г..jar (378 КБ)
1.16.11Релиз1.21.10fabric7 октября 2025 г..jar (371 КБ)
1.16.11Релиз1.21.10forge7 октября 2025 г..jar (378 КБ)

Показаны последние 15 из 167 версий. Все версии — на Modrinth.

Ченджлог

2.0.0Релиз26.2 · 30 июня 2026 г.

Changelog

Version

2.0.0

Changes

API

  • Performed a general cleanup across the entire mod, bringing it in line with modern modding practices
  • Added SmartBrainBuilder and extracted the various Brain-construction methods to it. SmartBrainOwner extends it by default, but extracting it now means you can have an external class contain your AI implementation if wanted with minimal additional effort
  • Added BehaviourUtil - a helper class for BehaviorControl related methods
  • Added ExtendedBehaviour#tryExpire - a method to allow for graceful expiration of behaviours when switching Activities
  • Added ExtendedSensor#onlyScanIf - an optional condition for sensors to only scan if the condition is met
  • Users no longer need to tick the brain, SBL ticks it automatically for you (unless you override customServerAIStep in your mob)
  • Users no longer need to return a SmartBrainProvider or SmartBrain instance in your entity class. SBL creates it automatically for you
  • Moved over to Jspecify's Nullability annotations per the new industry standard. See [here][https://jspecify.dev] for more information
  • Merged SetRandomFlyingTarget and SetRandomHoverTarget into SetRandomFlyTarget
  • Renamed ExtendedBehaviour#doStartCheck to canStart
  • Renamed SBLLoader to SBLPlatform
  • Renamed SBLConstants#LOADER to SBLConstants#PLATFORM
  • Removed EntityRetrievalUtil#streamEntities - Its benefits just weren't worth the confusion it caused
  • Removed EntityRetrievalUtil#findEntities - It only served to offer a 'max' entity short-circuit, which has now been built into the other methods
  • Removed BrainUtil#forEachBehaviour
  • Changed GroupBehaviour#getBehaviours from an Iterator to an Iterable
  • Added GroupBehaviour#add to allow for manually adding individual behaviours to a GroupBehaviour
  • Added BrainBehaviourPredicate#isChildOfBehaviour helper method
  • Renamed the net.tslat.smartbrainlib.object package to net.tslat.smartbrainlib.library.object
  • Moved BrainBehaviourConsumer, BrainBehaviourPredicate, ToFloatBiFunction, and TriPredicate to net.tslat.smartbrainlib.library.interfaces
  • Made ExtendedTargetingConditions extend BiPredicate
  • Renamed FreePositionTracker to ExactPositionTracker
  • Renamed MemoryTest#hasNoMemories to MemoryTest#noMemories
  • Renamed MemoryTest#builder(int) to MemoryTest#sized(int)
  • Renamed BrainActivityGroup to ActivityBuilder
  • Renamed EntityFilteringSensor to NearestVisibleEntityFilteredSensor
  • Renamed ExtendedBehaviour#runForBetween to #runFor
  • Renamed ExtendedBehaviour#cooldownForBetween to #cooldownFor
  • Renamed the generic T type across all of SBL's brain-related classes to BO for consistent and clear type understanding
  • Bubbled up polymorphic overloads of self-returning methods across behaviours and sensors
  • Ensured consistency of generic type ordering across all of SBL's brain-related classes
  • Added BreezeSpecificSensor
  • Updated ExtendedBehaviour#getMemoryRequirements to use the MemoryCondition interface that Mojang added
  • Renamed SBLShufflingList to WeightedShuffleableList
  • Removed SeekRandomNearbyPosition

Internal

  • Greatly improved the Javadocs in EntityRetrievalUtil
  • Converted all Javadocs to Markdown, per Java 25's new standard
  • Reorganised the boilerplate/example code
  • Added package-info declarations to each package for more consistent and cleaner API usage
  • Significantly overhauled the Javadocs across the entire mod
  • General code cleanup and improvements
  • Implemented pre-collapsed code sections for boilerplate code, to further improve code clarity
2.0.0Релиз26.2 · 30 июня 2026 г.

Changelog

Version

2.0.0

Changes

API

  • Performed a general cleanup across the entire mod, bringing it in line with modern modding practices
  • Added SmartBrainBuilder and extracted the various Brain-construction methods to it. SmartBrainOwner extends it by default, but extracting it now means you can have an external class contain your AI implementation if wanted with minimal additional effort
  • Added BehaviourUtil - a helper class for BehaviorControl related methods
  • Added ExtendedBehaviour#tryExpire - a method to allow for graceful expiration of behaviours when switching Activities
  • Added ExtendedSensor#onlyScanIf - an optional condition for sensors to only scan if the condition is met
  • Users no longer need to tick the brain, SBL ticks it automatically for you (unless you override customServerAIStep in your mob)
  • Users no longer need to return a SmartBrainProvider or SmartBrain instance in your entity class. SBL creates it automatically for you
  • Moved over to Jspecify's Nullability annotations per the new industry standard. See [here][https://jspecify.dev] for more information
  • Merged SetRandomFlyingTarget and SetRandomHoverTarget into SetRandomFlyTarget
  • Renamed ExtendedBehaviour#doStartCheck to canStart
  • Renamed SBLLoader to SBLPlatform
  • Renamed SBLConstants#LOADER to SBLConstants#PLATFORM
  • Removed EntityRetrievalUtil#streamEntities - Its benefits just weren't worth the confusion it caused
  • Removed EntityRetrievalUtil#findEntities - It only served to offer a 'max' entity short-circuit, which has now been built into the other methods
  • Removed BrainUtil#forEachBehaviour
  • Changed GroupBehaviour#getBehaviours from an Iterator to an Iterable
  • Added GroupBehaviour#add to allow for manually adding individual behaviours to a GroupBehaviour
  • Added BrainBehaviourPredicate#isChildOfBehaviour helper method
  • Renamed the net.tslat.smartbrainlib.object package to net.tslat.smartbrainlib.library.object
  • Moved BrainBehaviourConsumer, BrainBehaviourPredicate, ToFloatBiFunction, and TriPredicate to net.tslat.smartbrainlib.library.interfaces
  • Made ExtendedTargetingConditions extend BiPredicate
  • Renamed FreePositionTracker to ExactPositionTracker
  • Renamed MemoryTest#hasNoMemories to MemoryTest#noMemories
  • Renamed MemoryTest#builder(int) to MemoryTest#sized(int)
  • Renamed BrainActivityGroup to ActivityBuilder
  • Renamed EntityFilteringSensor to NearestVisibleEntityFilteredSensor
  • Renamed ExtendedBehaviour#runForBetween to #runFor
  • Renamed ExtendedBehaviour#cooldownForBetween to #cooldownFor
  • Renamed the generic T type across all of SBL's brain-related classes to BO for consistent and clear type understanding
  • Bubbled up polymorphic overloads of self-returning methods across behaviours and sensors
  • Ensured consistency of generic type ordering across all of SBL's brain-related classes
  • Added BreezeSpecificSensor
  • Updated ExtendedBehaviour#getMemoryRequirements to use the MemoryCondition interface that Mojang added
  • Renamed SBLShufflingList to WeightedShuffleableList
  • Removed SeekRandomNearbyPosition

Internal

  • Greatly improved the Javadocs in EntityRetrievalUtil
  • Converted all Javadocs to Markdown, per Java 25's new standard
  • Reorganised the boilerplate/example code
  • Added package-info declarations to each package for more consistent and cleaner API usage
  • Significantly overhauled the Javadocs across the entire mod
  • General code cleanup and improvements
  • Implemented pre-collapsed code sections for boilerplate code, to further improve code clarity
2.0.0Релиз26.2 · 30 июня 2026 г.

Changelog

Version

2.0.0

Changes

API

  • Performed a general cleanup across the entire mod, bringing it in line with modern modding practices
  • Added SmartBrainBuilder and extracted the various Brain-construction methods to it. SmartBrainOwner extends it by default, but extracting it now means you can have an external class contain your AI implementation if wanted with minimal additional effort
  • Added BehaviourUtil - a helper class for BehaviorControl related methods
  • Added ExtendedBehaviour#tryExpire - a method to allow for graceful expiration of behaviours when switching Activities
  • Added ExtendedSensor#onlyScanIf - an optional condition for sensors to only scan if the condition is met
  • Users no longer need to tick the brain, SBL ticks it automatically for you (unless you override customServerAIStep in your mob)
  • Users no longer need to return a SmartBrainProvider or SmartBrain instance in your entity class. SBL creates it automatically for you
  • Moved over to Jspecify's Nullability annotations per the new industry standard. See [here][https://jspecify.dev] for more information
  • Merged SetRandomFlyingTarget and SetRandomHoverTarget into SetRandomFlyTarget
  • Renamed ExtendedBehaviour#doStartCheck to canStart
  • Renamed SBLLoader to SBLPlatform
  • Renamed SBLConstants#LOADER to SBLConstants#PLATFORM
  • Removed EntityRetrievalUtil#streamEntities - Its benefits just weren't worth the confusion it caused
  • Removed EntityRetrievalUtil#findEntities - It only served to offer a 'max' entity short-circuit, which has now been built into the other methods
  • Removed BrainUtil#forEachBehaviour
  • Changed GroupBehaviour#getBehaviours from an Iterator to an Iterable
  • Added GroupBehaviour#add to allow for manually adding individual behaviours to a GroupBehaviour
  • Added BrainBehaviourPredicate#isChildOfBehaviour helper method
  • Renamed the net.tslat.smartbrainlib.object package to net.tslat.smartbrainlib.library.object
  • Moved BrainBehaviourConsumer, BrainBehaviourPredicate, ToFloatBiFunction, and TriPredicate to net.tslat.smartbrainlib.library.interfaces
  • Made ExtendedTargetingConditions extend BiPredicate
  • Renamed FreePositionTracker to ExactPositionTracker
  • Renamed MemoryTest#hasNoMemories to MemoryTest#noMemories
  • Renamed MemoryTest#builder(int) to MemoryTest#sized(int)
  • Renamed BrainActivityGroup to ActivityBuilder
  • Renamed EntityFilteringSensor to NearestVisibleEntityFilteredSensor
  • Renamed ExtendedBehaviour#runForBetween to #runFor
  • Renamed ExtendedBehaviour#cooldownForBetween to #cooldownFor
  • Renamed the generic T type across all of SBL's brain-related classes to BO for consistent and clear type understanding
  • Bubbled up polymorphic overloads of self-returning methods across behaviours and sensors
  • Ensured consistency of generic type ordering across all of SBL's brain-related classes
  • Added BreezeSpecificSensor
  • Updated ExtendedBehaviour#getMemoryRequirements to use the MemoryCondition interface that Mojang added
  • Renamed SBLShufflingList to WeightedShuffleableList
  • Removed SeekRandomNearbyPosition

Internal

  • Greatly improved the Javadocs in EntityRetrievalUtil
  • Converted all Javadocs to Markdown, per Java 25's new standard
  • Reorganised the boilerplate/example code
  • Added package-info declarations to each package for more consistent and cleaner API usage
  • Significantly overhauled the Javadocs across the entire mod
  • General code cleanup and improvements
  • Implemented pre-collapsed code sections for boilerplate code, to further improve code clarity
2.0.0Релиз26.1.2 · 30 июня 2026 г.

Changelog

Version

2.0.0

Changes

API

  • Performed a general cleanup across the entire mod, bringing it in line with modern modding practices
  • Added SmartBrainBuilder and extracted the various Brain-construction methods to it. SmartBrainOwner extends it by default, but extracting it now means you can have an external class contain your AI implementation if wanted with minimal additional effort
  • Added BehaviourUtil - a helper class for BehaviorControl related methods
  • Added ExtendedBehaviour#tryExpire - a method to allow for graceful expiration of behaviours when switching Activities
  • Added ExtendedSensor#onlyScanIf - an optional condition for sensors to only scan if the condition is met
  • Users no longer need to tick the brain, SBL ticks it automatically for you (unless you override customServerAIStep in your mob)
  • Users no longer need to return a SmartBrainProvider or SmartBrain instance in your entity class. SBL creates it automatically for you
  • Moved over to Jspecify's Nullability annotations per the new industry standard. See [here][https://jspecify.dev] for more information
  • Merged SetRandomFlyingTarget and SetRandomHoverTarget into SetRandomFlyTarget
  • Renamed ExtendedBehaviour#doStartCheck to canStart
  • Renamed SBLLoader to SBLPlatform
  • Renamed SBLConstants#LOADER to SBLConstants#PLATFORM
  • Removed EntityRetrievalUtil#streamEntities - Its benefits just weren't worth the confusion it caused
  • Removed EntityRetrievalUtil#findEntities - It only served to offer a 'max' entity short-circuit, which has now been built into the other methods
  • Removed BrainUtil#forEachBehaviour
  • Changed GroupBehaviour#getBehaviours from an Iterator to an Iterable
  • Added GroupBehaviour#add to allow for manually adding individual behaviours to a GroupBehaviour
  • Added BrainBehaviourPredicate#isChildOfBehaviour helper method
  • Renamed the net.tslat.smartbrainlib.object package to net.tslat.smartbrainlib.library.object
  • Moved BrainBehaviourConsumer, BrainBehaviourPredicate, ToFloatBiFunction, and TriPredicate to net.tslat.smartbrainlib.library.interfaces
  • Made ExtendedTargetingConditions extend BiPredicate
  • Renamed FreePositionTracker to ExactPositionTracker
  • Renamed MemoryTest#hasNoMemories to MemoryTest#noMemories
  • Renamed MemoryTest#builder(int) to MemoryTest#sized(int)
  • Renamed BrainActivityGroup to ActivityBuilder
  • Renamed EntityFilteringSensor to NearestVisibleEntityFilteredSensor
  • Renamed ExtendedBehaviour#runForBetween to #runFor
  • Renamed ExtendedBehaviour#cooldownForBetween to #cooldownFor
  • Renamed the generic T type across all of SBL's brain-related classes to BO for consistent and clear type understanding
  • Bubbled up polymorphic overloads of self-returning methods across behaviours and sensors
  • Ensured consistency of generic type ordering across all of SBL's brain-related classes
  • Added BreezeSpecificSensor
  • Updated ExtendedBehaviour#getMemoryRequirements to use the MemoryCondition interface that Mojang added
  • Renamed SBLShufflingList to WeightedShuffleableList
  • Removed SeekRandomNearbyPosition

Internal

  • Greatly improved the Javadocs in EntityRetrievalUtil
  • Converted all Javadocs to Markdown, per Java 25's new standard
  • Reorganised the boilerplate/example code
  • Added package-info declarations to each package for more consistent and cleaner API usage
  • Significantly overhauled the Javadocs across the entire mod
  • General code cleanup and improvements
  • Implemented pre-collapsed code sections for boilerplate code, to further improve code clarity
2.0.0Релиз26.1.2 · 30 июня 2026 г.

Changelog

Version

2.0.0

Changes

API

  • Performed a general cleanup across the entire mod, bringing it in line with modern modding practices
  • Added SmartBrainBuilder and extracted the various Brain-construction methods to it. SmartBrainOwner extends it by default, but extracting it now means you can have an external class contain your AI implementation if wanted with minimal additional effort
  • Added BehaviourUtil - a helper class for BehaviorControl related methods
  • Added ExtendedBehaviour#tryExpire - a method to allow for graceful expiration of behaviours when switching Activities
  • Added ExtendedSensor#onlyScanIf - an optional condition for sensors to only scan if the condition is met
  • Users no longer need to tick the brain, SBL ticks it automatically for you (unless you override customServerAIStep in your mob)
  • Users no longer need to return a SmartBrainProvider or SmartBrain instance in your entity class. SBL creates it automatically for you
  • Moved over to Jspecify's Nullability annotations per the new industry standard. See [here][https://jspecify.dev] for more information
  • Merged SetRandomFlyingTarget and SetRandomHoverTarget into SetRandomFlyTarget
  • Renamed ExtendedBehaviour#doStartCheck to canStart
  • Renamed SBLLoader to SBLPlatform
  • Renamed SBLConstants#LOADER to SBLConstants#PLATFORM
  • Removed EntityRetrievalUtil#streamEntities - Its benefits just weren't worth the confusion it caused
  • Removed EntityRetrievalUtil#findEntities - It only served to offer a 'max' entity short-circuit, which has now been built into the other methods
  • Removed BrainUtil#forEachBehaviour
  • Changed GroupBehaviour#getBehaviours from an Iterator to an Iterable
  • Added GroupBehaviour#add to allow for manually adding individual behaviours to a GroupBehaviour
  • Added BrainBehaviourPredicate#isChildOfBehaviour helper method
  • Renamed the net.tslat.smartbrainlib.object package to net.tslat.smartbrainlib.library.object
  • Moved BrainBehaviourConsumer, BrainBehaviourPredicate, ToFloatBiFunction, and TriPredicate to net.tslat.smartbrainlib.library.interfaces
  • Made ExtendedTargetingConditions extend BiPredicate
  • Renamed FreePositionTracker to ExactPositionTracker
  • Renamed MemoryTest#hasNoMemories to MemoryTest#noMemories
  • Renamed MemoryTest#builder(int) to MemoryTest#sized(int)
  • Renamed BrainActivityGroup to ActivityBuilder
  • Renamed EntityFilteringSensor to NearestVisibleEntityFilteredSensor
  • Renamed ExtendedBehaviour#runForBetween to #runFor
  • Renamed ExtendedBehaviour#cooldownForBetween to #cooldownFor
  • Renamed the generic T type across all of SBL's brain-related classes to BO for consistent and clear type understanding
  • Bubbled up polymorphic overloads of self-returning methods across behaviours and sensors
  • Ensured consistency of generic type ordering across all of SBL's brain-related classes
  • Added BreezeSpecificSensor
  • Updated ExtendedBehaviour#getMemoryRequirements to use the MemoryCondition interface that Mojang added
  • Renamed SBLShufflingList to WeightedShuffleableList
  • Removed SeekRandomNearbyPosition

Internal

  • Greatly improved the Javadocs in EntityRetrievalUtil
  • Converted all Javadocs to Markdown, per Java 25's new standard
  • Reorganised the boilerplate/example code
  • Added package-info declarations to each package for more consistent and cleaner API usage
  • Significantly overhauled the Javadocs across the entire mod
  • General code cleanup and improvements
  • Implemented pre-collapsed code sections for boilerplate code, to further improve code clarity
2.0.0Релиз26.1.2 · 30 июня 2026 г.

Changelog

Version

2.0.0

Changes

API

  • Performed a general cleanup across the entire mod, bringing it in line with modern modding practices
  • Added SmartBrainBuilder and extracted the various Brain-construction methods to it. SmartBrainOwner extends it by default, but extracting it now means you can have an external class contain your AI implementation if wanted with minimal additional effort
  • Added BehaviourUtil - a helper class for BehaviorControl related methods
  • Added ExtendedBehaviour#tryExpire - a method to allow for graceful expiration of behaviours when switching Activities
  • Added ExtendedSensor#onlyScanIf - an optional condition for sensors to only scan if the condition is met
  • Users no longer need to tick the brain, SBL ticks it automatically for you (unless you override customServerAIStep in your mob)
  • Users no longer need to return a SmartBrainProvider or SmartBrain instance in your entity class. SBL creates it automatically for you
  • Moved over to Jspecify's Nullability annotations per the new industry standard. See [here][https://jspecify.dev] for more information
  • Merged SetRandomFlyingTarget and SetRandomHoverTarget into SetRandomFlyTarget
  • Renamed ExtendedBehaviour#doStartCheck to canStart
  • Renamed SBLLoader to SBLPlatform
  • Renamed SBLConstants#LOADER to SBLConstants#PLATFORM
  • Removed EntityRetrievalUtil#streamEntities - Its benefits just weren't worth the confusion it caused
  • Removed EntityRetrievalUtil#findEntities - It only served to offer a 'max' entity short-circuit, which has now been built into the other methods
  • Removed BrainUtil#forEachBehaviour
  • Changed GroupBehaviour#getBehaviours from an Iterator to an Iterable
  • Added GroupBehaviour#add to allow for manually adding individual behaviours to a GroupBehaviour
  • Added BrainBehaviourPredicate#isChildOfBehaviour helper method
  • Renamed the net.tslat.smartbrainlib.object package to net.tslat.smartbrainlib.library.object
  • Moved BrainBehaviourConsumer, BrainBehaviourPredicate, ToFloatBiFunction, and TriPredicate to net.tslat.smartbrainlib.library.interfaces
  • Made ExtendedTargetingConditions extend BiPredicate
  • Renamed FreePositionTracker to ExactPositionTracker
  • Renamed MemoryTest#hasNoMemories to MemoryTest#noMemories
  • Renamed MemoryTest#builder(int) to MemoryTest#sized(int)
  • Renamed BrainActivityGroup to ActivityBuilder
  • Renamed EntityFilteringSensor to NearestVisibleEntityFilteredSensor
  • Renamed ExtendedBehaviour#runForBetween to #runFor
  • Renamed ExtendedBehaviour#cooldownForBetween to #cooldownFor
  • Renamed the generic T type across all of SBL's brain-related classes to BO for consistent and clear type understanding
  • Bubbled up polymorphic overloads of self-returning methods across behaviours and sensors
  • Ensured consistency of generic type ordering across all of SBL's brain-related classes
  • Added BreezeSpecificSensor
  • Updated ExtendedBehaviour#getMemoryRequirements to use the MemoryCondition interface that Mojang added
  • Renamed SBLShufflingList to WeightedShuffleableList
  • Removed SeekRandomNearbyPosition

Internal

  • Greatly improved the Javadocs in EntityRetrievalUtil
  • Converted all Javadocs to Markdown, per Java 25's new standard
  • Reorganised the boilerplate/example code
  • Added package-info declarations to each package for more consistent and cleaner API usage
  • Significantly overhauled the Javadocs across the entire mod
  • General code cleanup and improvements
  • Implemented pre-collapsed code sections for boilerplate code, to further improve code clarity
1.17-alpha-1Альфа26.1.2 · 12 мая 2026 г.

Changelog

Version

1.17

Changes

API

  • Performed a general cleanup across the entire mod, bringing it in line with modern modding practices
  • Added SmartBrainBuilder and extracted the various Brain-construction methods to it. SmartBrainOwner extends it by default, but extracting it now means you can have an external class contain your AI implementation if wanted with minimal additional effort
  • Added BehaviourUtil - a helper class for BehaviorControl related methods
  • Added ExtendedBehaviour#tryExpire - a method to allow for graceful expiration of behaviours when switching Activities
  • Added ExtendedSensor#onlyScanIf - an optional condition for sensors to only scan if the condition is met
  • Users no longer need to tick the brain, SBL ticks it automatically for you (unless you override customServerAIStep in your mob)
  • Users no longer need to return a SmartBrainProvider or SmartBrain instance in your entity class. SBL creates it automatically for you
  • Moved over to Jspecify's Nullability annotations per the new industry standard. See [here][https://jspecify.dev] for more information
  • Renamed SBLLoader to SBLPlatform
  • Renamed SBLConstants#LOADER to SBLConstants#PLATFORM
  • Removed EntityRetrievalUtil#streamEntities - Its benefits just weren't worth the confusion it caused
  • Removed EntityRetrievalUtil#findEntities - It only served to offer a 'max' entity short-circuit, which has now been built into the other methods
  • Removed BrainUtil#forEachBehaviour
  • Changed GroupBehaviour#getBehaviours from an Iterator to an Iterable
  • Added BrainBehaviourPredicate#isChildOfBehaviour helper method
  • Renamed the net.tslat.smartbrainlib.object package to net.tslat.smartbrainlib.library.object
  • Moved BrainBehaviourConsumer, BrainBehaviourPredicate, ToFloatBiFunction, and TriPredicate to net.tslat.smartbrainlib.library.interfaces
  • Made ExtendedTargetingConditions extend BiPredicate
  • Renamed FreePositionTracker to ExactPositionTracker
  • Renamed MemoryTest#hasNoMemories to MemoryTest#noMemories
  • Renamed MemoryTest#builder(int) to MemoryTest#sized(int)
  • Renamed BrainActivityGroup to ActivityBuilder
  • Renamed EntityFilteringSensor to NearestVisibleEntityFilteredSensor
  • Renamed the generic T type across all of SBL's brain-related classes to BO for consistent and clear type understanding
  • Bubbled up polymorphic overloads of self-returning methods across behaviours and sensors
  • Ensured consistency of generic type ordering across all of SBL's brain-related classes

Internal

  • Greatly improved the Javadocs in EntityRetrievalUtil
  • Converted all Javadocs to Markdown, per Java 25's new standard
  • Reorganised the boilerplate/example code
  • Added package-info declarations to each package for more consistent and cleaner API usage
  • Significantly overhauled the Javadocs across the entire mod
  • General code cleanup and improvements
  • Implemented pre-collapsed code sections for boilerplate code, to further improve code clarity
1.17-alpha-1Альфа26.1.2 · 12 мая 2026 г.

Changelog

Version

1.17

Changes

API

  • Performed a general cleanup across the entire mod, bringing it in line with modern modding practices
  • Added SmartBrainBuilder and extracted the various Brain-construction methods to it. SmartBrainOwner extends it by default, but extracting it now means you can have an external class contain your AI implementation if wanted with minimal additional effort
  • Added BehaviourUtil - a helper class for BehaviorControl related methods
  • Added ExtendedBehaviour#tryExpire - a method to allow for graceful expiration of behaviours when switching Activities
  • Added ExtendedSensor#onlyScanIf - an optional condition for sensors to only scan if the condition is met
  • Users no longer need to tick the brain, SBL ticks it automatically for you (unless you override customServerAIStep in your mob)
  • Users no longer need to return a SmartBrainProvider or SmartBrain instance in your entity class. SBL creates it automatically for you
  • Moved over to Jspecify's Nullability annotations per the new industry standard. See [here][https://jspecify.dev] for more information
  • Renamed SBLLoader to SBLPlatform
  • Renamed SBLConstants#LOADER to SBLConstants#PLATFORM
  • Removed EntityRetrievalUtil#streamEntities - Its benefits just weren't worth the confusion it caused
  • Removed EntityRetrievalUtil#findEntities - It only served to offer a 'max' entity short-circuit, which has now been built into the other methods
  • Removed BrainUtil#forEachBehaviour
  • Changed GroupBehaviour#getBehaviours from an Iterator to an Iterable
  • Added BrainBehaviourPredicate#isChildOfBehaviour helper method
  • Renamed the net.tslat.smartbrainlib.object package to net.tslat.smartbrainlib.library.object
  • Moved BrainBehaviourConsumer, BrainBehaviourPredicate, ToFloatBiFunction, and TriPredicate to net.tslat.smartbrainlib.library.interfaces
  • Made ExtendedTargetingConditions extend BiPredicate
  • Renamed FreePositionTracker to ExactPositionTracker
  • Renamed MemoryTest#hasNoMemories to MemoryTest#noMemories
  • Renamed MemoryTest#builder(int) to MemoryTest#sized(int)
  • Renamed BrainActivityGroup to ActivityBuilder
  • Renamed EntityFilteringSensor to NearestVisibleEntityFilteredSensor
  • Renamed the generic T type across all of SBL's brain-related classes to BO for consistent and clear type understanding
  • Bubbled up polymorphic overloads of self-returning methods across behaviours and sensors
  • Ensured consistency of generic type ordering across all of SBL's brain-related classes

Internal

  • Greatly improved the Javadocs in EntityRetrievalUtil
  • Converted all Javadocs to Markdown, per Java 25's new standard
  • Reorganised the boilerplate/example code
  • Added package-info declarations to each package for more consistent and cleaner API usage
  • Significantly overhauled the Javadocs across the entire mod
  • General code cleanup and improvements
  • Implemented pre-collapsed code sections for boilerplate code, to further improve code clarity

Полная история изменений — на Modrinth.

Комментарии

Загружаем…