BBPGlue is a modding framework built on top of BepInEx and Harmony that exposes Baldi's Basics Plus through a clean, strongly-typed API.
Instead of spending time reverse-engineering game internals, writing Harmony patches, and manually accessing private fields through reflection, modders can interact with the game through a unified API:
BBP.Player
BBP.Environment
BBP.Callbacks
BBP.Authoring
BBP.AssetsBBPGlue is designed to be the foundation for gameplay mods, custom items, custom NPCs, game mode modifications, utility tools, and larger projects.
Disclaimer
BBPGlue is a modding framework and not a crack, launcher, bypass, redistribution package, or replacement for Baldi's Basics Plus.
The project does not contain game assets and requires a legitimate copy of Baldi's Basics Plus to function.
All game content remains property of Basically Games and their respective owners.
Traditional BepInEx modding often requires:
- Reverse engineering game internals
- Writing Harmony patches
- Using reflection
- Maintaining version-specific hacks
- Repeating boilerplate code
With BBPGlue:
BBP.Player.Stamina = 100f;
BBP.Environment.MakeNoise(
BBP.Player.Position,
127
);
BBP.Callbacks.Items.OnItemUse += item =>
{
BBPConsole.Log(item.NameKey);
};The framework handles most of the plumbing so you can focus on creating mods.
BBP.Game
BBP.Player
BBP.Environment
BBP.Entities
BBP.Hud
BBP.Events
BBP.Prefabs
BBP.Authoring
BBP.Assets
BBP.Callbacks
BBP.Experimental- BBPPlayer
- BBPEntity
- BBPNpc
- BBPDoor
- BBPElevator
- BBPRoom
- BBPRandomEvent
- BBPPickup
- BBPItemObject
- BBPSoundObject
- BBPAudioManager
No Harmony patching required for common events.
Examples:
BBP.Callbacks.Items.OnItemUse
BBP.Callbacks.Items.OnPickupCollect
BBP.Callbacks.World.OnDoorOpen
BBP.Callbacks.World.OnRoomEnter
BBP.Callbacks.Npcs.OnNpcSpawn
BBP.Callbacks.Npcs.OnNpcCatchPlayer
BBP.Callbacks.Game.OnLevelReadyCreate custom content without modifying game assets.
BBP.Authoring.CloneNpc(
"my_mod:old_principal",
"Principal",
npc =>
{
npc.MaxSpeed = 10f;
}
);Sprite sprite =
BBP.Assets.LoadSprite("icon.png");
AudioClip clip =
await BBP.Assets.LoadAudioClipAsync("sound.wav");- Console (
SHIFT + F1) - Debug Menu (
SHIFT + F2)
- Baldi's Basics Plus
- BepInEx 5.x
- Harmony
Download:
https://github.com/BepInEx/BepInEx/releases
Extract into the Baldi's Basics Plus installation folder.
Copy:
BBPGlue.dll
into:
BepInEx/plugins/
Launch the game.
Press:
SHIFT + F1
If the console appears, BBPGlue is loaded successfully.
Create a normal BepInEx plugin.
using BepInEx;
using BBPGlue.API;
[BepInPlugin(
"com.example.mymod",
"My Mod",
"1.0.0"
)]
[BepInDependency("com.wufhex.BBPGlue")]
public sealed class Plugin : BaseUnityPlugin
{
private void Awake()
{
BBPConsole.Log("Hello BBPGlue!");
}
}Most mods begin by subscribing to callbacks.
private void Awake()
{
BBP.Callbacks.Items.OnItemUse += item =>
{
BBPConsole.Log(
$"Used: {item.NameKey}"
);
};
}BBP.Player.Stamina = 100f;
BBP.Environment.MakeNoise(
BBP.Player.Position,
127
);BBPRoom? room =
BBP.Environment.GetPlayerRoom();BBPDoor? door =
BBP.Environment.GetClosestDoor();BBPGlue can clone and register content at runtime.
BBP.Callbacks.Game.OnLevelReady += () =>
{
BBP.Prefabs.Refresh();
BBP.Authoring.CloneNpc(
"my_mod:old_principal",
"Principal",
npc =>
{
npc.Name = "Old Principal";
npc.MaxSpeed = 10f;
}
);
};Spawn later:
BBP.Authoring.Spawn(
"my_mod:old_principal",
BBP.Player.Position
);Callbacks can alter or cancel built-in behavior.
BBP.Callbacks.Items.OnItemUse += item =>
{
if (item.NameKey != "Monster BSoda")
return;
BBPCallbacks.Cancel();
BBP.Items.RemoveSlot(
BBP.Items.SelectedSlot
);
BBP.Player.RunSpeed *= 4f;
};See:
BBPGlue/src/Tests/CustomPrefabsTest.cs
The example demonstrates:
- Custom NPC creation
- Custom item creation
- Runtime sprite replacement
- Callback-driven behavior
- Cancelable item usage
- Timed effects
Public modding surface.
Examples:
- BBPPlayer
- BBPNpc
- BBPEnvironment
- BBPEvents
Internal systems.
Examples:
- ReflectionUtil
- ReflectionCache
- Harmony patches
- Runtime helpers
Typed wrappers around BB+ classes.
Examples:
- Door
- Room
- Pickup
- ItemObject
- RandomEvent
BBPGlue attempts to remain compatible with future BB+ updates whenever possible.
If the game version differs from the version BBPGlue was built against, a warning may appear in the console.
This warning is informational and does not necessarily indicate a problem.
Alpha Limitations:
- API may change
- Some callbacks may be incomplete or untested
- Compatibility only tested on BB+ 0.14.2
- Advanced custom NPC behavior is experimental and might be untested
No.
No.
Yes, through runtime authoring.
Yes.
Usually, no.
BBPGlue already uses Harmony internally and exposes most common game functionality through wrappers, callbacks, and helper APIs. For many mods, you can create custom content, listen for game events, and modify gameplay behavior without writing a single Harmony patch.
If the functionality you need is not currently exposed by BBPGlue, you have several options:
- Open an Issue and request the feature.
- Submit a Pull Request.
- Use Harmony directly in your mod.
- Use utilities from BBPGlue.Core to simplify reflection and runtime interaction.
BBPGlue is designed to reduce Harmony and reflection boilerplate, not prevent advanced users from accessing the game's internals when necessary.
BBPGlue is licensed under the MIT License. Attribution is appreciated but not required.