diff --git a/src/lib/Toolbox/Toolbox.xml b/src/lib/Toolbox/Toolbox.xml
index 58dcb46..f88c1f8 100644
--- a/src/lib/Toolbox/Toolbox.xml
+++ b/src/lib/Toolbox/Toolbox.xml
@@ -3,7 +3,8 @@
-
+
+
@@ -85,6 +86,7 @@
+
@@ -155,10 +157,12 @@
+
+
diff --git a/src/resources/blocks/debug.js b/src/resources/blocks/debug.js
index 15480fe..3052b1d 100644
--- a/src/resources/blocks/debug.js
+++ b/src/resources/blocks/debug.js
@@ -162,6 +162,28 @@ ${BLOCKS}*/;`;
const FUNC = javascriptGenerator.statementToCode(block, 'FUNC');
return [`await (async () => { try { ${FUNC} return true; } catch { return false; } })()`, javascriptGenerator.ORDER_ATOMIC];
})
+ registerBlock(`${categoryPrefix}sendtowebhook`, {
+ message0: 'send %1 to webhook url %2',
+ args0: [
+ {
+ "type": "input_value",
+ "name": "TEXT1"
+ },
+ {
+ "type": "input_value",
+ "name": "TEXT2"
+ }
+ ],
+ previousStatement: null,
+ nextStatement: null,
+ inputsInline: true,
+ colour: categoryColor,
+ }, (block) => {
+ const TEXT1 = javascriptGenerator.valueToCode(block, 'TEXT1', javascriptGenerator.ORDER_ATOMIC);
+ const TEXT2 = javascriptGenerator.valueToCode(block, 'TEXT2', javascriptGenerator.ORDER_ATOMIC);
+ const code = `sendData(${TEXT1},${TEXT2});`;
+ return `${code}\n`;
+ })
}
export default register;
diff --git a/src/resources/blocks/events.js b/src/resources/blocks/events.js
index 3222db9..3e7b948 100644
--- a/src/resources/blocks/events.js
+++ b/src/resources/blocks/events.js
@@ -172,7 +172,7 @@ function register() {
return `${code}\n`;
})
- registerBlock(`${categoryPrefix}whenkeypressed`, {
+ registerBlock(`${categoryPrefix}whenkeydown`, {
message0: 'when %1 key is down %2 %3',
args0: [
{
@@ -198,6 +198,32 @@ function register() {
${KEY===""?`${BLOCKS}`:`if (event.keyCode == '${KEY}') { ${BLOCKS}}`}});`;
return `${code}\n`;
})
+ registerBlock(`${categoryPrefix}whenkeyup`, {
+ message0: 'when %1 key is up %2 %3',
+ args0: [
+ {
+ "type": "field_dropdown",
+ "name": "KEY",
+ "options": keyBoard
+ },
+ {
+ "type": "input_dummy"
+ },
+ {
+ "type": "input_statement",
+ "name": "BLOCKS"
+ }
+ ],
+ nextStatement: null,
+ inputsInline: true,
+ colour: categoryColor,
+ }, (block) => {
+ const KEY = block.getFieldValue('KEY')
+ const BLOCKS = javascriptGenerator.statementToCode(block, 'BLOCKS');
+ const code = `window.addEventListener("keyup", event => {
+ ${KEY===""?`${BLOCKS}`:`if (event.keyCode == '${KEY}') { ${BLOCKS}}`}});`;
+ return `${code}\n`;
+ })
}
const keyBoard = [
diff --git a/src/resources/blocks/operators.js b/src/resources/blocks/operators.js
index d4f95a2..331db30 100644
--- a/src/resources/blocks/operators.js
+++ b/src/resources/blocks/operators.js
@@ -506,6 +506,30 @@ function register() {
return [`Math.floor(Math.random()*(${Y} - ${X} + 1) + ${X})`, javascriptGenerator.ORDER_ATOMIC];
})
+ registerBlock(`${categoryPrefix}addblock`, {
+ message0: '%1 + %2',
+ args0: [
+ {
+ "type": "input_value",
+ "name": "X",
+ "check": "Number"
+ },
+ {
+ "type": "input_value",
+ "name": "Y",
+ "check": "Number"
+ }
+ ],
+ previousStatement: null,
+ nextStatement: null,
+ inputsInline: true,
+ colour: categoryColor
+ }, (block) => {
+ const X = javascriptGenerator.valueToCode(block, 'X', javascriptGenerator.ORDER_ATOMIC);
+ const Y = javascriptGenerator.valueToCode(block, 'Y', javascriptGenerator.ORDER_ATOMIC);
+ const code = `${X || 0} += ${Y || 0};`;
+ return `${code}\n`;
+ })
}
export default register;
diff --git a/src/resources/blocks/player.js b/src/resources/blocks/player.js
index c319c32..58d6732 100644
--- a/src/resources/blocks/player.js
+++ b/src/resources/blocks/player.js
@@ -32,7 +32,7 @@ function register() {
colour: categoryColor
}, (block) => {
const MENU = block.getFieldValue('MENU');
- return [`(ModAPI.player?ModAPI.player.${MENU}:"")`, javascriptGenerator.ORDER_ATOMIC];
+ return [`ModAPI.player.${MENU}`, javascriptGenerator.ORDER_ATOMIC];
})
registerBlock(`${categoryPrefix}motion`, {
@@ -53,7 +53,7 @@ function register() {
colour: categoryColor
}, (block) => {
const MENU = block.getFieldValue('MENU');
- return [`(ModAPI.player?ModAPI.player.motion${MENU}:"")`, javascriptGenerator.ORDER_ATOMIC];
+ return [`ModAPI.player.motion${MENU}`, javascriptGenerator.ORDER_ATOMIC];
})
registerBlock(`${categoryPrefix}indimension`, {
@@ -112,6 +112,17 @@ function register() {
if(ev.key == ${MENU3}){${BLOCKS}}});`;
return `${code}\n`;
})
+ registerBlock(`${categoryPrefix}reload`, {
+ message0: 'load new player values into game',
+ args0: [],
+ previousStatement: null,
+ nextStatement: null,
+ inputsInline: true,
+ colour: categoryColor
+ }, (block) => {
+ const code = `ModAPI.player.reload()`;
+ return `${code}\n`;
+ })
}
const keyBoard = [
diff --git a/src/resources/compiler/index.js b/src/resources/compiler/index.js
index 01c32bd..f9b6439 100644
--- a/src/resources/compiler/index.js
+++ b/src/resources/compiler/index.js
@@ -14,6 +14,19 @@ class Compiler {
if (code.indexOf('ModAPI.player') > -1) {
start+= "ModAPI.require('player');";
}
+ if (code.indexOf('sendData(') > -1) {
+ start+= `function sendData(message,url) {
+ var request = new XMLHttpRequest();
+ request.open("POST", url);
+ request.setRequestHeader("Content-type", "application/json");
+
+ var params = {
+ content: message
+ };
+
+ request.send(JSON.stringify(params));
+}`;
+ }
if (code.indexOf('variables[') > -1) {
start+= 'let variables = [];';
}
@@ -70,4 +83,4 @@ class Compiler {
}
}
-export default Compiler;
\ No newline at end of file
+export default Compiler;