Added support for Minecraft Bedrock edition to the Minecraft widget
This commit is contained in:
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…
Reference in New Issue
Block a user