Added support for Minecraft Bedrock edition to the Minecraft widget

pull/3179/head
LojDev 2 months ago
parent 0af975b3d9
commit 80ca8407eb

@ -9,4 +9,5 @@ Allowed fields: `["players", "version", "status"]`.
widget:
type: minecraft
url: udp://minecraftserveripordomain:port
```
edition: # Optional, should be 'java' or 'bedrock'. Defaults to 'java'
```

@ -24,6 +24,7 @@
"luxon": "^3.4.4",
"memory-cache": "^0.2.0",
"minecraft-ping-js": "^1.0.2",
"minecraft-server-util-dist": "^5.4.5",
"next": "^12.3.4",
"next-i18next": "^12.1.0",
"ping": "^0.4.4",

@ -47,6 +47,9 @@ dependencies:
minecraft-ping-js:
specifier: ^1.0.2
version: 1.0.2
minecraft-server-util-dist:
specifier: ^5.4.5
version: 5.4.5
next:
specifier: ^12.3.4
version: 12.3.4(react-dom@18.2.0)(react@18.2.0)
@ -2755,6 +2758,11 @@ packages:
engines: {node: '>=6.0'}
dev: false
/jsonrepair@3.6.0:
resolution: {integrity: sha512-ZvOmoq35LhlDaf1W3uT7e17Bh2dYbln1+pdJ1KUIMkRAoUC4mvXX+dbr9Ih6dDmYvB0mdijAucyPk4xX1cEjww==}
hasBin: true
dev: false
/jsprim@1.4.2:
resolution: {integrity: sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==}
engines: {node: '>=0.6.0'}
@ -2923,6 +2931,11 @@ packages:
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
dev: false
/minecraft-motd-util@1.1.12:
resolution: {integrity: sha512-5TuTRjrRupSTruea0nRC37r0FdhkS1O4wIJKAYfwJRCQd/X4Zyl/dVIs96h9UVW6N8jhIuz9pNkrDsqyN7VBdA==}
deprecated: no longer maintained
dev: false
/minecraft-ping-js@1.0.2:
resolution: {integrity: sha512-h9QYG2n+fBKgp520tXBwR354XRzR/w5wXe8CJCmxKm6jbLpAoLODM8Nj5+ssuIVQF8rtxkAnjwv7PH+7ehFzQQ==}
deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
@ -2931,6 +2944,14 @@ packages:
varint: 6.0.0
dev: false
/minecraft-server-util-dist@5.4.5:
resolution: {integrity: sha512-s1X//SM/IrFcaZYQrnVd6feWC39pmerhbdDhO/7naKQ0tUjsyFsHcfqZiVpU7jlKtHwDcYbBrs3ad8kRnExapA==}
engines: {node: '>=10.0.0'}
dependencies:
jsonrepair: 3.6.0
minecraft-motd-util: 1.1.12
dev: false
/mini-svg-data-uri@1.4.4:
resolution: {integrity: sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==}
hasBin: true

@ -1,4 +1,4 @@
import { pingWithPromise } from "minecraft-ping-js";
import {status, statusBedrock} from "minecraft-server-util-dist";
import createLogger from "utils/logger";
import getServiceWidget from "utils/config/service-helpers";
@ -10,12 +10,19 @@ export default async function minecraftProxyHandler(req, res) {
const { group, service } = req.query;
const serviceWidget = await getServiceWidget(group, service);
const url = new URL(serviceWidget.url);
const edition = serviceWidget.edition || "java";
try {
const pingResponse = await pingWithPromise(url.hostname, url.port || 25565);
let svrResponse;
if (edition.toLowerCase() === "java") {
svrResponse = await status(url.hostname, Number(url.port));
} else if (edition.toLowerCase() === "bedrock") {
svrResponse = await statusBedrock(url.hostname, Number(url.port));
}
res.status(200).send({
version: pingResponse.version.name,
version: svrResponse.version.name,
online: true,
players: pingResponse.players,
players: svrResponse.players,
});
} catch (e) {
if (e) logger.error(e);
@ -25,4 +32,4 @@ export default async function minecraftProxyHandler(req, res) {
players: undefined,
});
}
}
}
Loading…
Cancel
Save