Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
e9fa560
Init ForgeMinecraft
xNickyDev Dec 26, 2025
408d015
Handle connection errors
xNickyDev Dec 26, 2025
95fac24
Handle TLS state
xNickyDev Dec 26, 2025
3a26d94
Fixed previous issues, added new functions
xNickyDev Dec 27, 2025
14b3885
Implemented reconnection manager
xNickyDev Dec 28, 2025
94756cf
Removed event call inside function
xNickyDev Dec 28, 2025
f226e7c
Remove exponential reconnect
xNickyDev Dec 28, 2025
7f2fc41
Added more functions
xNickyDev Dec 28, 2025
bd2d2cf
Added many new functions
xNickyDev Dec 29, 2025
175b054
Allowed using UUIDs for player inputs
xNickyDev Dec 29, 2025
96db068
Ignore exception errors on kick
xNickyDev Dec 29, 2025
d8ca10c
Added functions for server settings
xNickyDev Dec 29, 2025
630b330
Added java servers
xNickyDev Dec 30, 2025
ba8a187
Added many java and bedrock functions
xNickyDev Dec 30, 2025
3085f81
Made params order more consistent and added some comments
xNickyDev Dec 30, 2025
40a16a2
Fixed defaulting host
xNickyDev Dec 30, 2025
d01ffe2
Test new connection logic
xNickyDev Dec 30, 2025
54c5818
Fixed doubled event listeners
xNickyDev Dec 31, 2025
32db578
Improve structures
xNickyDev Dec 31, 2025
d15e9cd
Remove setting server to undefined
xNickyDev Dec 31, 2025
f5adb44
Attach listeners when client ready
xNickyDev Dec 31, 2025
42f9dab
Remove await of connect
xNickyDev Dec 31, 2025
fe112aa
Added new connection events
xNickyDev Dec 31, 2025
6de4392
Completed README, small adjustments
xNickyDev Dec 31, 2025
938cc05
Log socket errors as debug (revert)
xNickyDev Dec 31, 2025
5d11c9c
Update package name
xNickyDev Dec 31, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
node_modules
.env
8 changes: 8 additions & 0 deletions .npmignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
*/__tests__/
docs/
src/
metadata/
.vscode/
.github/
.env
tsconfig.json
124 changes: 123 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1 +1,123 @@
# ForgeMinecraft
<div align="center">

<img height="150" width="150" src="https://raw.githubusercontent.com/tryforge/ForgeMinecraft/main/assets/ForgeMinecraft.png" alt="ForgeMinecraft">

# ForgeMinecraft

ForgeMinecraft is an extension that provides real-time Minecraft server management via the management server protocol, alongside various functions for retrieving status and metadata from Java and Bedrock servers.

<a href="https://github.com/tryforge/ForgeMinecraft/"><img src="https://img.shields.io/github/package-json/v/tryforge/ForgeMinecraft/main?label=@tryforge/forge.minecraft&color=5c16d4" alt="@tryforge/forge.minecraft"></a>
<a href="https://github.com/tryforge/ForgeScript/"><img src="https://img.shields.io/github/package-json/v/tryforge/ForgeScript/main?label=@tryforge/forgescript&color=5c16d4" alt="@tryforge/forgescript"></a>
<a href="https://discord.gg/hcJgjzPvqb"><img src="https://img.shields.io/discord/997899472610795580?logo=discord" alt="Discord"></a>

</div>

---

## Contents

1. [Installation](#installation)
2. [Management Server](#management-server)
3. [Java & Bedrock Servers](#java--bedrock-servers)
4. [Documentation](https://docs.botforge.org/p/ForgeMinecraft/)

<h3 align="center">Installation</h3><hr>

1. Run the following command to install the required `npm` packages:

```bash
npm i @tryforge/forge.minecraft
```

2. Here’s an example of how your main file should look:

```js
const { ForgeClient } = require("@tryforge/forgescript")
const { ForgeMinecraft } = require("@tryforge/forge.minecraft")

const minecraft = new ForgeMinecraft({
java: {
host: "0.0.0.0", // Default Java Server
port: 25565
},
bedrock: {
host: "0.0.0.0" // Default Bedrock Server
}
})

const client = new ForgeClient({
...options, // The options you currently have
extensions: [
minecraft
]
})

client.commands.load("commands")

client.login("YourToken")
```

> 💡 **Tip**\
> View all available client options [**here**](https://tryforge.github.io/ForgeMinecraft/interfaces/IForgeMinecraftOptions.html).

<h3 align="center">Management Server</h3><hr>

Minecraft’s management server protocol, introduced in **1.21.9**, enables remote management and monitoring of your Minecraft server. It allows this extension to connect to the server, execute administrative actions, and receive real-time events such as player activity, server status changes, and configuration updates, making automation and server control easier.

#### Setting up the Minecraft Server

To enable the management server protocol, set up `management-server-enabled`, `management-server-port` and `management-server-host` in the **server.properties** file of your Minecraft server:

```properties
management-server-enabled=true
management-server-port=25585
management-server-host=0.0.0.0
management-server-secret=
```

You can either set `management-server-secret` to a random 40 character long alphanumeric string or leave it empty and let the Minecraft server generate a random token on startup. You will need this token to connect to the server.

If you want to establish connections from a web browser, you need to set the allowed origins:

```properties
management-server-allowed-origins=http\://localhost\:63315
```

#### TLS

By default, TLS is enabled, but the server will crash if you don't provide a certificate. If the management server protocol is not exposed to the internet, or you are using a reverse proxy, the easiest option would be to disable TLS:

```properties
management-server-tls-enabled=false
```

#### Setting up Client Configurations

Next, configure the **ForgeMinecraft** client. This is where you specify which server `events` you want to listen to and provide the management server connection details, such as `host`, `port`, and authentication `token` (secret). These options determine how ForgeMinecraft connects to your server and which real-time events the extension receives.

```js
const minecraft = new ForgeMinecraft({
events: [
"playerJoined",
"serverStarted"
],
server: {
host: "0.0.0.0",
port: 3000,
token: "YourAuthToken",
}
})

// ...

minecraft.commands.load("minecraft") // Load your server events folder

// ...
```

> 💡 **Tip**\
> View all available server options [**here**](https://tryforge.github.io/ForgeMinecraft/interfaces/IManagementServerOptions.html).

<h3 align="center">Java & Bedrock Servers</h3><hr>

Desired Java and Bedrock functions let you fetch status and metadata from Minecraft servers on demand. You can call these functions with custom `host` and `port` arguments, or define [default Java and Bedrock server settings in the client configuration](#installation) to avoid passing arguments each time. The responses include various details such as server status, version, players, and more. Note that availability depends on the server, as not all servers allow full information to be queried.
Binary file added assets/ForgeMinecraft.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 2 additions & 0 deletions dist/commit.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
export declare function prompt(q: string): Promise<string>;
//# sourceMappingURL=commit.d.ts.map
1 change: 1 addition & 0 deletions dist/commit.d.ts.map

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

60 changes: 60 additions & 0 deletions dist/commit.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions dist/commit.js.map

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions dist/constants.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
export declare const ForgeMinecraftEventHandlerName = "ForgeMinecraftEvents";
//# sourceMappingURL=constants.d.ts.map
1 change: 1 addition & 0 deletions dist/constants.d.ts.map

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 5 additions & 0 deletions dist/constants.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions dist/constants.js.map

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions dist/docgen.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
export {};
//# sourceMappingURL=docgen.d.ts.map
1 change: 1 addition & 0 deletions dist/docgen.d.ts.map

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions dist/docgen.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions dist/docgen.js.map

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions dist/events/allowListAdded.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
import { MinecraftEventHandler } from "../handlers";
declare const _default: MinecraftEventHandler<"allowListAdded">;
export default _default;
//# sourceMappingURL=allowListAdded.d.ts.map
1 change: 1 addition & 0 deletions dist/events/allowListAdded.d.ts.map

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

23 changes: 23 additions & 0 deletions dist/events/allowListAdded.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions dist/events/allowListAdded.js.map

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions dist/events/allowListRemoved.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
import { MinecraftEventHandler } from "../handlers";
declare const _default: MinecraftEventHandler<"allowListRemoved">;
export default _default;
//# sourceMappingURL=allowListRemoved.d.ts.map
1 change: 1 addition & 0 deletions dist/events/allowListRemoved.d.ts.map

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

23 changes: 23 additions & 0 deletions dist/events/allowListRemoved.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions dist/events/allowListRemoved.js.map

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions dist/events/banAdded.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
import { MinecraftEventHandler } from "../handlers";
declare const _default: MinecraftEventHandler<"banAdded">;
export default _default;
//# sourceMappingURL=banAdded.d.ts.map
1 change: 1 addition & 0 deletions dist/events/banAdded.d.ts.map

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

23 changes: 23 additions & 0 deletions dist/events/banAdded.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions dist/events/banAdded.js.map

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions dist/events/banRemoved.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
import { MinecraftEventHandler } from "../handlers";
declare const _default: MinecraftEventHandler<"banRemoved">;
export default _default;
//# sourceMappingURL=banRemoved.d.ts.map
1 change: 1 addition & 0 deletions dist/events/banRemoved.d.ts.map

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

23 changes: 23 additions & 0 deletions dist/events/banRemoved.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions dist/events/banRemoved.js.map

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading