mirror of
https://github.com/ytsodacan/Faucet.git
synced 2026-05-07 14:47:39 +00:00
Update README.md
This commit is contained in:
parent
fe76832d96
commit
b65a3e5f04
167
README.md
167
README.md
|
|
@ -1,6 +1,167 @@
|
|||
# Faucet
|
||||
Minecraft LCE’s Best Modloader!
|
||||
**A mod loader for Minecraft: Legacy Console Edition**
|
||||
|
||||
Faucet lets you load custom DLL mods into Minecraft Legacy Console Edition using a custom fork of the game. Mods are written in C++ using the FaucetSDK and placed in the game's `mods\` folder.
|
||||
|
||||
Hello people from minecraftlegacy.com! The source code will br in here in like 8 hours but here is a build and the docs for you to look at https://ytsodacan.github.io/FaucetDocs
|
||||
https://github.com/ytsodacan/FaucetBuilds/releases/tag/build
|
||||
---
|
||||
|
||||
## Requirements
|
||||
|
||||
- [Faucet (custom LCE fork)](https://github.com/ytsodacan/Faucet) — the modified game executable required to run mods
|
||||
- [FaucetSDK](https://github.com/ytsodacan/FaucetSDK/tree/main) — headers, lib, and example mod for building your own mods
|
||||
- Visual Studio 2022 with the **Desktop development with C++** workload
|
||||
- Windows x64
|
||||
|
||||
---
|
||||
|
||||
## Installation
|
||||
|
||||
1. Download and set up the Faucet fork from the link above.
|
||||
2. Place any mod `.dll` files into the `mods\` folder in your game directory.
|
||||
3. Launch the game. Mods are loaded automatically at startup and logged to `mods\modloader.log`.
|
||||
|
||||
---
|
||||
|
||||
## Creating a Mod
|
||||
|
||||
### Project Setup
|
||||
|
||||
1. In Visual Studio 2022, create a new **Dynamic-Link Library (DLL)** project targeting **x64**.
|
||||
2. Download the [FaucetSDK](https://github.com/ytsodacan/FaucetSDK/tree/main) and copy these files into your project folder:
|
||||
- `IMod.h`
|
||||
- `SDK.h`
|
||||
- `ModExport.h`
|
||||
- `Minecraft.Client.lib`
|
||||
3. In your project properties:
|
||||
- **C/C++ → Additional Include Directories**: add `$(ProjectDir)`
|
||||
- **Linker → Input → Additional Dependencies**: add `Minecraft.Client.lib`
|
||||
- **Linker → General → Additional Library Directories**: add `$(ProjectDir)`
|
||||
4. Remove `dllmain.cpp` from the project (right-click → Remove in Solution Explorer).
|
||||
|
||||
### Mod Structure
|
||||
|
||||
Every mod must implement the `IMod` interface and export a `CreateMod()` function:
|
||||
|
||||
```cpp
|
||||
#include "IMod.h"
|
||||
#include "SDK.h"
|
||||
|
||||
class MyMod final : public IMod {
|
||||
public:
|
||||
const ModInfo* GetInfo() const override {
|
||||
static const ModInfo info{
|
||||
"com.yourname.mymod", // Unique mod ID
|
||||
"My Mod", // Display name
|
||||
"YourName", // Author
|
||||
"Description here.", // Description
|
||||
{ 1, 0, 0 } // Version
|
||||
};
|
||||
return &info;
|
||||
}
|
||||
|
||||
bool OnLoad() override { SDK::Log(L"MyMod: loaded"); return true; }
|
||||
bool OnInit() override { SDK::Log(L"MyMod: init"); return true; }
|
||||
bool OnUpdate(float dt) override { return true; }
|
||||
void OnShutdown() override { SDK::Log(L"MyMod: shutdown"); }
|
||||
};
|
||||
|
||||
extern "C" __declspec(dllexport) IMod* CreateMod() {
|
||||
return new MyMod();
|
||||
}
|
||||
```
|
||||
|
||||
Build the project and copy the output `.dll` into your `mods\` folder.
|
||||
|
||||
---
|
||||
|
||||
## SDK Reference
|
||||
|
||||
Include `SDK.h` in your mod to access all game systems.
|
||||
|
||||
### Logging
|
||||
|
||||
```cpp
|
||||
SDK::Log(L"Hello from my mod!");
|
||||
SDK::LogWarn(L"Something seems off.");
|
||||
SDK::LogError(L"Something went wrong.");
|
||||
```
|
||||
|
||||
All output is written to `mods\modloader.log`.
|
||||
|
||||
### Getting Game Objects
|
||||
|
||||
```cpp
|
||||
Minecraft* client = SDK::GetClient();
|
||||
MinecraftServer* server = SDK::GetServer();
|
||||
ServerLevel* level = SDK::GetServerLevel(0); // 0=Overworld, -1=Nether, 1=End
|
||||
PlayerList* players = SDK::GetPlayerList();
|
||||
MultiplayerLocalPlayer* localPlayer = SDK::GetLocalPlayer();
|
||||
```
|
||||
|
||||
### Player
|
||||
|
||||
```cpp
|
||||
auto* player = SDK::GetLocalPlayer();
|
||||
if (player) {
|
||||
float hp = player->getHealth(); // 0.0–20.0
|
||||
player->setHealth(20.0f); // Full heal
|
||||
player->setFlying(true);
|
||||
wstring name = player->getName();
|
||||
}
|
||||
```
|
||||
|
||||
### Server Players
|
||||
|
||||
```cpp
|
||||
PlayerList* list = SDK::GetPlayerList();
|
||||
if (list) {
|
||||
for (auto& sp : list->players)
|
||||
sp->sendMessage(L"Hello!");
|
||||
|
||||
auto steve = list->getPlayer(L"Steve");
|
||||
if (steve) steve->disconnect();
|
||||
}
|
||||
```
|
||||
|
||||
### Messaging
|
||||
|
||||
```cpp
|
||||
SDK::BroadcastMessage(L"Server restarting soon!");
|
||||
SDK::SendMessageToPlayer(L"Steve", L"You've been warned.");
|
||||
```
|
||||
|
||||
### Server Control
|
||||
|
||||
```cpp
|
||||
SDK::ExecuteCommand(L"time set day");
|
||||
SDK::SetTimeOfDay(6000); // 0=dawn, 6000=noon, 12000=dusk, 18000=midnight
|
||||
SDK::SaveAll();
|
||||
SDK::SetPvpAllowed(false);
|
||||
SDK::SetFlightAllowed(true);
|
||||
```
|
||||
|
||||
### World / Level
|
||||
|
||||
```cpp
|
||||
ServerLevel* level = SDK::GetServerLevel(0);
|
||||
if (level) {
|
||||
level->explode(nullptr, 0, 64, 0, 4.0f, false, true);
|
||||
level->sendParticles(L"flame", x, y, z, 10);
|
||||
level->save(true, nullptr);
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Notes
|
||||
|
||||
- The mod loader calls `OnShutdown` each time a world unloads, not only on game exit. Design your mod accordingly if you need persistent state across world loads.
|
||||
- Logs are written to `mods\modloader.log` — check here first if your mod isn't behaving as expected.
|
||||
- `SDK::GetLocalPlayer()` returns `nullptr` when no world is loaded. Always null-check before use.
|
||||
|
||||
---
|
||||
|
||||
## Links
|
||||
|
||||
- **Faucet (game fork)**: https://github.com/ytsodacan/Faucet
|
||||
- **FaucetSDK (mod tools)**: https://github.com/ytsodacan/FaucetSDK/tree/main
|
||||
|
|
|
|||
Loading…
Reference in a new issue