Skip to content

Consumer Mods Integration Guide

Rifaditya edited this page Aug 9, 2026 · 1 revision

๐Ÿ”Œ Consumer Mods Integration Guide

Guide for third-party developer integration with Better Bats and DasikLibrary APIs.


๐Ÿ“ฆ Gradle Dependency Setup

Add DasikLibrary to your third-party mod build.gradle and fabric.mod.json:

dependencies {
    modImplementation "net.dasik.social:dasik-library:1.8.9+26.2"
}
"depends": {
    "dasik-library": ">=1.8.2"
}

๐Ÿงฌ Reading Bat Genetics & Trait Values

Third-party mods can read bat genetics using DasikAnimalGeneticsAPI:

import net.dasik.social.api.genetics.DasikAnimalGeneticsAPI;
import net.minecraft.world.entity.ambient.Bat;

public class BatInspector {
    public static void inspectBat(Bat bat) {
        // Read scale trait multiplier (Default baseline: 1.0f)
        float scale = DasikAnimalGeneticsAPI.getTrait(bat, "scale", 1.0f);
        
        // Read movement speed trait (Default baseline: 0.0f)
        float speedBonus = DasikAnimalGeneticsAPI.getTrait(bat, "movement_speed", 0.0f);
        
        // Read attack damage multiplier trait (Default baseline: 2.0f)
        float attackDamage = DasikAnimalGeneticsAPI.getTrait(bat, "attack_damage", 2.0f);
        
        System.out.println("Bat scale: " + scale + ", Damage multiplier: " + attackDamage);
    }
}

๐Ÿ”Š Triggering Panic State Programmatically

To trigger panic flight programmatically on any bat entity:

import net.vanillaoutsider.betterbats.BatStateAccessor;
import net.minecraft.world.entity.ambient.Bat;
import net.minecraft.world.phys.Vec3;

public class BatSoundEmitter {
    public static void scareBat(Bat bat, Vec3 soundOrigin) {
        if (bat instanceof BatStateAccessor accessor) {
            accessor.betterbats$panic(soundOrigin);
        }
    }
}

โš™๏ธ Querying Live Dynamic GameRules

Read active Better Bats GameRules from any server world instance using DynamicGameRuleManager:

import net.dasik.social.api.gamerule.DynamicGameRuleManager;
import net.vanillaoutsider.betterbats.BetterBatsFabric;
import net.minecraft.world.level.Level;

public class BatRuleChecker {
    public static void checkRules(Level level) {
        int maxSwarm = DynamicGameRuleManager.getInt(level, BetterBatsFabric.BAT_SWARM_SIZE);
        boolean pestControl = DynamicGameRuleManager.getBoolean(level, BetterBatsFabric.BAT_PEST_CONTROL);
        int guanoTimer = DynamicGameRuleManager.getInt(level, BetterBatsFabric.BAT_GUANO_THRESHOLD);
    }
}

๐Ÿ”— Related Pages

Clone this wiki locally