commit f55f51fec38f4a024232f690d3d1b95e0e26edd4 Author: Jeremy Baxter Date: Fri May 2 12:40:32 2025 +1200 initial commit diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..3ac9a6e --- /dev/null +++ b/.editorconfig @@ -0,0 +1,11 @@ +root = true + +[*] +end_of_line = lf +indent_style = tab +indent_size = 4 +insert_final_newline = true + +[*.{json,md}] +indent_style = space +indent_size = 2 diff --git a/manifest.json b/manifest.json new file mode 100644 index 0000000..c961f9b --- /dev/null +++ b/manifest.json @@ -0,0 +1,29 @@ +{ + "format_version": 2, + "header": { + "description": "Update a Discord channel with messages from Minecraft", + "name": "consensus", + "uuid": "6e44dfed-cd30-4ea7-9c29-35dd9e8ca3f8", + "version": [1, 0, 0], + "min_engine_version": [1, 20, 30] + }, + "modules": [ + { + "description": "JavaScript source", + "type": "script", + "uuid": "5ceeafd7-fb35-457a-bad1-24c2f45240f8", + "version": [1, 0, 0], + "entry": "scripts/main.js" + } + ], + "dependencies": [ + { + "module_name": "@minecraft/server", + "version": "1.17.0-beta" + }, + { + "module_name": "@minecraft/server-net", + "version": "1.0.0-beta" + } + ] +} diff --git a/scripts/main.js b/scripts/main.js new file mode 100644 index 0000000..1adc414 --- /dev/null +++ b/scripts/main.js @@ -0,0 +1,51 @@ +import { + world, + system +} from "@minecraft/server"; +import { + http, + HttpRequest, + HttpHeader, + HttpRequestMethod +} from "@minecraft/server-net"; + +// CHANGE THIS TO YOUR WEBHOOK URL! +const webhookUrl = ":webhook:"; + +async function makeMessage(author, message) { + const req = new HttpRequest(webhookUrl); + + req.body = JSON.stringify({ + username: author, + content: message + }); + req.method = HttpRequestMethod.Post; + req.headers = [ + new HttpHeader("Accept", "application/json"), + new HttpHeader("Content-Type", "application/json"), + ]; + + await http.request(req); +} + +world.beforeEvents.chatSend.subscribe((e) => { + e.cancel = true; + system.run(() => { + world.sendMessage(`${e.sender.name}: ${e.message}`); + makeMessage(e.sender.name, e.message); + }); +}); + +world.afterEvents.playerJoin.subscribe((e) => { + e.cancel = true; + system.run(() => { + makeMessage("Server", `> ${e.playerName} joins`); + }); +}); + +world.afterEvents.playerLeave.subscribe((e) => { + e.cancel = true; + system.run(() => { + makeMessage("Server", `> ${e.playerName} leaves`); + }); +});