An open API service indexing awesome lists of open source software.

https://github.com/liteldev/liteloaderbds

A legacy plugin loader for Minecraft Bedrock Dedicated Server
https://github.com/liteldev/liteloaderbds

Last synced: 5 months ago
JSON representation

A legacy plugin loader for Minecraft Bedrock Dedicated Server

Awesome Lists containing this project

README

          

# LiteLoaderBDS

[![status](https://img.shields.io/github/actions/workflow/status/LiteLDev/LiteLoaderBDSv2/build.yml?style=for-the-badge)](https://github.com/LiteLDev/LiteLoaderBDSv2/actions)
[![Discord](https://img.shields.io/discord/849252980430864384?color=blue&label=Discord&style=for-the-badge)](https://discord.gg/27KTrxHc9t)
[![Telegram](https://img.shields.io/badge/telegram-LiteLoader-%232CA5E0?style=for-the-badge&logo=Telegram)](https://t.me/liteloader)
[
![Latest Tag](https://img.shields.io/github/v/tag/LiteLDev/LiteLoaderBDSv2?label=LATEST%20TAG&style=for-the-badge)
![GitHub Releases (by Asset)](https://img.shields.io/github/downloads/LiteLDev/LiteLoaderBDSv2/latest/total?style=for-the-badge)
](https://github.com/LiteLDev/LiteLoaderBDSv2/releases/latest)
QQ Group: [656669024](https://jq.qq.com/?_wv=1027&k=lagwtrfh) QQ Group
2: [850517473](https://jq.qq.com/?_wv=1027&k=zeUbrETH)

English | [简体中文](README_zh-cn.md)

## ⚠️ Warning
### LiteLoaderBDS has reached end of life! It is no longer maintained or supported. We recommend you transition to [LeviLamina](https://github.com/LiteLDev/LeviLamina).

`LiteLoaderBDS` is an unofficial plugin loader that provides basic API support for `Bedrock Dedicated Server`, with a
massive API, lots of packed utility interfaces, a rich event system and powerful basic interface support.

`LiteLoader` provides a massive API, a powerful event system and a large number of encapsulated development
infrastructure interfaces, providing a solid foundation for extending the Bedrock Edition **BDS** with more gameplay and
functionality. With plugins, it is easy to extend the functionality of BDS, the associated development is easy to learn,
and the development approach is flexible.

Writing plugins in **C++, JavaScript, Lua, Python, C#** and other languages, which allows developers to easily extend and
customize **BDS** functionality,
making it easy to learn and extremely flexible.


## 🎁 First impression

> - “Why should I choose LiteLoader?”
>
> - They have interface that is easy to use and intuitive!!

#### C++ language sample plugin

```c++
// Template project: https://github.com/LiteLDev/PluginTemplate
// More examples: https://github.com/LiteLDev/LiteLoaderPlugins
#include
#include
#include
#include
#include

Logger logger("AttackLog");

void PluginInit() {
logger.info("Plugin xxx has been loaded.");
// Subscribe Player-Attack Event
Event::PlayerAttackEvent::subscribe([](const Event::PlayerAttackEvent& ev) {
Player* player = ev.mPlayer;
Actor* actor = ev.mTarget;
logger.info("Player:{} attacks {} | at {} in Dimension {}",
player->getRealName(), actor->getTypeName(),
actor->getPos().toString(), std::to_string(actor->getDimensionId())
);
return true;
});
}
```

#### Script language sample plugin (Use Js as an example)

```javascript
// Register for shutdown command
mc.listen("onServerStarted", () => {
const cmd = mc.newCommand("stopsvr", "close server");
cmd.overload();
cmd.setCallback((_cmd, ori, out, _res) => {
out.success("stop command executed successfully");
mc.broadcast(
`${ori.player.realName} executed the stop command. The server will be shutdown after 5 seconds`
);

// Execute stop command
setTimeout(() => mc.runcmd("stop"), 5000);
});
cmd.setup();
});
```


## 💎 Advantages

- 💻 Support for developing plugins in many different languages, Keeping the API uniform

| Supported languages | `C++`, `JavaScript(Node.js)`, `Lua`, `Python`,`.NET` |
| -------------------------------- | ---------------------------------------------------- |
| **Upcoming supported languages** | `Ruby`, `TypeScript`, `Go` |

- 📕 Smooth development experience with great compatibility
- Auto-generated C++ headers, access to all `BDS` classes and functions, full toolchain support and evolving
features
- For scripting language plugins, a multi-language code completion library, a powerful VSCode plugin, a hot-loading
system...... Many tools to help you write every line of code more efficiently
- When a version is updated, the API is guaranteed to be largely **backward compatible** and the plugin requires
little or no code changes with the version update. With the `LiteLoader` series' unique symbol lookup technology,
cross-version **auto-adaptation** is no longer a dream

- 📋 Well documented and explained in detail
- Welcome to 👉[LiteLoader documentation](https://github.com/LiteLDev/liteloaderbds-documentation/)👈 to see more

- 🎈 Numerous well-packaged interfaces
- Numerous game APIs support: players, entities, cubes, items, containers, NBTs, server systems......
- Up to **50+** game events to listen to, no matter what happens, the first to respond

- 🛡 Secure, stable and versatile
- Fixes a number of vulnerabilities in BDS to ensure the stability and security of your server
- Extensive use of the seh exception protection framework to minimise the risk of server crashes
- Supports running on Linux, MacOS platforms via **Wine**, bringing a free plugin experience to other platforms as
well: write once, **share on multiple platforms**.

- 🏆 Sound app ecosystem
- A large number of existing plugins, mature publishing platform, instantly
👉[Go to official forum](https://www.litebds.com/)👈 to find and download your favorite LL plugins

- 🏃 Open Source & Community Building
- The project is licensed under the `LGPL-3.0` open source license and will **never** be charged for or released as
a commercial version.
- The design philosophy is **decentralised** and you can be assured of a **free** plugin loading framework!

------

## 💻 Install LiteLoaderBDS

Refer to the [installation guide](https://docs.litebds.com/en/#/Usage?id=%f0%9f%92%bb-install-liteloaderbds) to install LiteLoaderBDS.

## 🎯 Install plugins

Refer to the [plugin installation guide](https://docs.litebds.com/en/#/Usage?id=%f0%9f%8e%af-installing-plug-ins) to install plugins.

------

## 📕 Create a plugin

Refer to the [plugin development guide](https://docs.litebds.com/en/#/README?id=%f0%9f%9b%b4-i-want-to-get-my-hands-dirty-and-write-a-plugin-what-do-i-need-to-do) to develop plugins.

### Development Aids - VSCode Development Aids & Complementary Libraries

Use the LiteLoader development helper plugin developed by Moxicat
Helps you do better with **script plugins**!
Code hint, auto-completion, auto-documentation, error alert, runtime debugging and so on

[Click here](https://www.minebbs.com/resources/llscripthelper.2672/)
View more description and introduction of this extension
VSCode extension store search `LLScriptHelper`, install **LLScriptHelper** and experience it instantly!

### Development Aids - Blockly-LXL Graphical Development Kit

No programming foundation? Tired of complex language rules?
Have you ever thought that BDS plug-in development could be as easy as a puzzle?
Here it is! The Blockly-LXL graphical development kit from pa733 takes the plugin development experience to a new level!

[Click here](https://www.minebbs.com/resources/blockly-lxl.2671/)
View related installation and usage instructions

## 🔨 Build project

> Go to [`GitHub Actions`](https://github.com/LiteLDev/LiteLoaderBDS/actions) to get the latest build artifact
>
> Of course, if you prefer to build the project yourself, or contribute code to LiteLoader, you can build the project
> yourself by following these instructions

1. Install the latest version of **Microsoft Visual Studio** and the standard C++ desktop development suite (or you can
just install the full **msbuild** compiler suite and configure the compilation environment)
2. Install the latest **Windows SDK**.
3. Use your familiar IDE (VS / VSCode / CLion, etc.) to open the project directory and compile the cmake project.
4. After successful compilation, go back to the project root directory and execute the `PackRelease.cmd` script in the
Scripts folder.
5. After execution, the contents of the `RELEASE` folder in the root directory will be the complete `LiteLoader`
environment and all dependencies.
6. If you need extra debugging symbols of LL, execute another `PackReleaseWithPDB.cmd` script, and the `RELEASE` folder
will be filled with all necessary debugging symbols for easy debugging


## 🎬 Participate in contribution

It's highly appreciated if you're interested in developing this project and follow the method to contribute to the
LiteLoaderBDS project

1. Contribute code, maintain projects and symbols, add new APIs and events and infrastructure
2. Help us modify and optimize the development documentation and usage documentation
3. Give feedback on GitHub issues or Suggest good ideas
4. Help us promote `LiteLoaderBDS` project to support our development

⭐⭐⭐We welcome your contributions to LiteLoader!⭐⭐⭐

If you are interested in contributing to LiteLoaderBDS, feel free to come to
👉[LiteLoader documentation](https://docs.litebds.com/#/en_US/Maintenance/)👈 to view **Project Maintenance and Support
Documentation**

------


## 📍 LICENSE

- If you violate the **EULA**, any legal liability is **IRRELEVANT** to the developers.
- **NO WARRANTY**.

| Project | License |
| ----------------------------------------------------------------------- | ---------------------------------------------------------------- |
| [LiteLoader](https://github.com/LiteLDev/LiteLoader) | LGPLv3 |
| [ScriptX](https://github.com/Tencent/ScriptX) | Apache License Version 2.0 |
| [OpenSSL](https://github.com/openssl/openssl) | Apache-2.0 License |
| [SimpleIni](https://github.com/brofield/simpleini) | MIT License |
| [Nlohmann-Json](https://github.com/nlohmann/json) | MIT License |
| [nbt-cpp](https://github.com/handtruth/nbt-cpp) | MIT License |
| [ThreadPool](https://github.com/jhasse/ThreadPool) | Zlib License |
| [LightWebSocketClient](https://github.com/cyanray/LightWebSocketClient) | MIT License |
| [magic_enum](https://github.com/Neargye/magic_enum) | MIT License |
| [dyncall](https://www.dyncall.org/index) | [ISC License](https://www.dyncall.org/license) |
| [vcproxy](https://github.com/pr701/vcproxy) | MIT License |
| [RawPDB](https://github.com/MolecularMatters/raw_pdb) | BSD 2-Clause License |
| [SQLiteCpp](https://github.com/SRombauts/SQLiteCpp) | MIT License |
| [compact_enc_det](https://github.com/google/compact_enc_det) | Apache-2.0 License |
| [detours](https://github.com/microsoft/Detours) | MIT License |
| [httplib](https://github.com/yhirose/cpp-httplib) | MIT License |
| [magic_enum](https://github.com/Neargye/magic_enum) | MIT License |
| [entt](https://github.com/skypjack/entt) | MIT License |
| [fmt](https://github.com/fmtlib/fmt) | [License](https://github.com/fmtlib/fmt/blob/master/LICENSE.rst) |
| [gsl](https://github.com/microsoft/GSL) | MIT License |
| [leveldb](https://github.com/google/leveldb) | BSD-3-Clause License |
| [parallel-hashmap](https://github.com/greg7mdp/parallel-hashmap) | Apache-2.0 License |
| [Base64](https://github.com/WangYneos/Base64) | MIT License |
| [EldenRingMods](https://github.com/techiew/EldenRingMods) | MIT License |

### Extra Restrictions & Exceptions

If you provide a server hosting service,you can use this framework for free, but you SHOULD NOT make PRIVATE changes to
this framework or as a selling point. If you fixed or tweaked the code, please pull request, instead of making it
private
or using it for commercial propose.
> Do not do evil.

Although we expected to build an open-source community, but forcing everything open-source will ruin this community. So
you can write plugins based on `LiteLoader` with ANY open-source license or even do not publish your source code. but if
you modified the framework, or write a new framework based on this framework, you MUST open-source it.

If you want to reproduce and distribute this framework, you have to get our authorization!


## 🏆 Acknowledgement

#### Important Contributors

| ![ShrBox](https://avatars.githubusercontent.com/u/53301243?s=96&v=4) | ![dreamguxiang](https://avatars.githubusercontent.com/u/62042544?s=96&v=4) | ![WangYneos](https://avatars.githubusercontent.com/u/42824603?s=96&v=4) | ![wzy](https://avatars.githubusercontent.com/u/59381521?s=96&v=4) | ![xiaoqch](https://avatars.githubusercontent.com/u/37901097?s=96&v=4) | ![yqs112358](https://avatars.githubusercontent.com/u/37969157?s=96&v=4) | ![Sysca11](https://avatars.githubusercontent.com/u/46832985?s=96&v=4) | ![RimuruChan](https://avatars.githubusercontent.com/u/42002296?s=96&v=4) |
| :------------------------------------------------------------------: | :------------------------------------------------------------------------: | :---------------------------------------------------------------------: | :---------------------------------------------------------------: | :-------------------------------------------------------------------: | :---------------------------------------------------------------------: | :-------------------------------------------------------------------: | :----------------------------------------------------------------------: |
| [@ShrBox](https://github.com/ShrBox) | [@dreamguxiang](https://github.com/dreamguxiang) | [@WangYneos](https://github.com/WangYneos) | [@wzy](https://github.com/wzyyyyyyy) | [@xiaoqch](https://github.com/xiaoqch) | [@yqs112358](https://github.com/yqs112358) | [@Sysca11](https://github.com/Sysca11) | [@RimuruChan](https://github.com/RimuruChan) |

**Thanks to [JetBrains](https://www.jetbrains.com/) for allocating free open-source licences for IDEs such
as [CLion](https://www.jetbrains.com/clion/)**.
[](https://www.jetbrains.com/)

## ⭐Star History

[![Star History Chart](https://api.star-history.com/svg?repos=LiteLDev/liteloaderbds&type=Date)](https://star-history.com/#LiteLDev/liteloaderbds&Date)