BefriendMobs Framework is intended to help modders easily create features of befriending (or say taming) mobs and friendly mobs despite their type hierarchy.
For example, most vanilla tamable mobs (e.g. wolf) inherit TamableMob class. If you want to make hostile mobs (e.g. Zombie) friendly or tamed, only using vanilla API it may become complex. Then you can easily create a subclass of Zombie (or anything else extends Mob) with BefriendMobs without using any vanilla TamableMob interfaces, and without considering about the type hierarchy of the existing mobs.
Note: This lib is still in development and the API may change on update, so it's not recommended to use this lib for development NOW. If it must be used, it's recommended to specify the lib version in the mod instead of giving a range.
Github: https://github.com/SodiumZH/Befriend-Mobs
For example depending mod, see: https://modrinth.com/mod/befriendmobs-days-with-monster-girls
For earlier versions, see: https://www.curseforge.com/minecraft/mc-mods/befriendmobs
It's always welcomed to request for more features, especially when position where you want to insert code doesn't provide an event, or properties you expect to be variable is hard-coded.
QQ Group ID: 336794947 (Chinese language)
How to Install BefriendMobs Framework (Mod)
BefriendMobs Framework by SodiumZH is verified for Forge across Minecraft versions 1.18.2, 1.19.2, 1.20.1 (latest release: 0.2.18, file size: 636 KB). Follow the steps below to install it safely from ModCraft.tv:
- Click the Download button above and select your Minecraft version (1.18.2, 1.19.2, 1.20.1) and platform (Forge).
- Make sure you have the compatible loader or environment installed for Forge.
- Move the downloaded BefriendMobs Framework file into your Minecraft
.minecraft/modsfolder and launch the game.
All Versions
+ Add VersionAdded Mixin. Now adding BefriendMobs API as dependency requires to add Mixin in
build.gradle. For details see build.gradle in mod *Days with Monster Girls*. Added
HealingItemTable to handle healing. It accepts 4 methods to check if can use: item, tag, item stack predicate and item registry key. Generally it accepts only one of them. Adding multiple methods is allowed but not recommended.Changed
IBefriendedMob#getHealingItems to HealingItemTable. Deprecated IBefriendedMob#getNonconsumingHealingItems.Changed
CHealingHandler to adapt HealingItemTable. Now `CHealingHandler#applyHealingItem accepts cooldown ticks input. Deprecated CHealingHandler#getHealingCooldownTicks.##### NaUtils
Added Mixin. Now adding BefriendMobs API as dependency requires Mixin in
build.gradle. For details see build.gradle in mod *Days with Monster Girls*. Added
ItemEntityHurtEvent and NonLivingEntityHurtEvent, allowing to cancel damages to non-living entities.Added
ConditionalAttributeModifier as an auto-updating AttributeModifier added and removed depending on a Predicate as condition.Added
ObjectOrSupplier as a supplier either from a static object or a functional Supplier.Added
ObjectOrKey as a supplier either from a static object or a key of registry.Added
ItemOrKey and EntityTypeOrKey as wrappers for ObjectOrKey of Item and EntityType .Added
DynamicObjectKeyMap as a mapping from registered objects to something. It has ObjectOrKey as keys and ObjectOrSupplier as values, allowing to dynamically find objects from registries and get volatile values (e.g. max health) from static map objects.Added
DynamicItemKeyMap and DynamicEntityTypeKeyMap as wrappers of DynamicObjectKeyMap of Item and EntityType.Added Mixin. Now adding BefriendMobs API as dependency requires to add Mixin in
build.gradle. For details see build.gradle in mod *Days with Monster Girls*. Added
HealingItemTable to handle healing. It accepts 4 methods to check if can use: item, tag, item stack predicate and item registry key. Generally it accepts only one of them. Adding multiple methods is allowed but not recommended.Changed
IBefriendedMob#getHealingItems to HealingItemTable. Deprecated IBefriendedMob#getNonconsumingHealingItems.Changed
CHealingHandler to adapt HealingItemTable. Now `CHealingHandler#applyHealingItem accepts cooldown ticks input. Deprecated CHealingHandler#getHealingCooldownTicks.##### NaUtils
Added Mixin. Now adding BefriendMobs API as dependency requires Mixin in
build.gradle. For details see build.gradle in mod *Days with Monster Girls*. Added
ItemEntityHurtEvent and NonLivingEntityHurtEvent, allowing to cancel damages to non-living entities.Added
ConditionalAttributeModifier as an auto-updating AttributeModifier added and removed depending on a Predicate as condition.Added
ObjectOrSupplier as a supplier either from a static object or a functional Supplier.Added
ObjectOrKey as a supplier either from a static object or a key of registry.Added
ItemOrKey and EntityTypeOrKey as wrappers for ObjectOrKey of Item and EntityType .Added
DynamicObjectKeyMap as a mapping from registered objects to something. It has ObjectOrKey as keys and ObjectOrSupplier as values, allowing to dynamically find objects from registries and get volatile values (e.g. max health) from static map objects.Added
DynamicItemKeyMap and DynamicEntityTypeKeyMap as wrappers of DynamicObjectKeyMap of Item and EntityType.Added Mixin. Now adding BefriendMobs API as dependency requires to add Mixin in
build.gradle. For details see build.gradle in mod *Days with Monster Girls*. Added
HealingItemTable to handle healing. It accepts 4 methods to check if can use: item, tag, item stack predicate and item registry key. Generally it accepts only one of them. Adding multiple methods is allowed but not recommended.Changed
IBefriendedMob#getHealingItems to HealingItemTable. Deprecated IBefriendedMob#getNonconsumingHealingItems.Changed
CHealingHandler to adapt HealingItemTable. Now `CHealingHandler#applyHealingItem accepts cooldown ticks input. Deprecated CHealingHandler#getHealingCooldownTicks.##### NaUtils
Added Mixin. Now adding BefriendMobs API as dependency requires Mixin in
build.gradle. For details see build.gradle in mod *Days with Monster Girls*. Added
ItemEntityHurtEvent and NonLivingEntityHurtEvent, allowing to cancel damages to non-living entities.Added
ConditionalAttributeModifier as an auto-updating AttributeModifier added and removed depending on a Predicate as condition.Added
ObjectOrSupplier as a supplier either from a static object or a functional Supplier.Added
ObjectOrKey as a supplier either from a static object or a key of registry.Added
ItemOrKey and EntityTypeOrKey as wrappers for ObjectOrKey of Item and EntityType .Added
DynamicObjectKeyMap as a mapping from registered objects to something. It has ObjectOrKey as keys and ObjectOrSupplier as values, allowing to dynamically find objects from registries and get volatile values (e.g. max health) from static map objects.Added
DynamicItemKeyMap and DynamicEntityTypeKeyMap as wrappers of DynamicObjectKeyMap of Item and EntityType.