diff --git a/TestProject/advperipherals energy detector (example 2).ccp b/TestProject/advperipherals energy detector (example 2).ccp
new file mode 100644
index 0000000..2cab87b
--- /dev/null
+++ b/TestProject/advperipherals energy detector (example 2).ccp
@@ -0,0 +1 @@
+{"usedlibrary":["Advanced_Peripherals","CCPeripheral"],"content":{"blocks":{"languageVersion":0,"blocks":[{"type":"ide_start","id":"ricNE5%Z`fhO08w3_ys?","x":101,"y":245,"inputs":{"DO":{"block":{"type":"variables_set","id":"eI39:+.u@(!5%kvtO;:%","fields":{"VAR":{"id":"*{7i9]pPQ]SdxwKC$?3g"}},"inputs":{"VALUE":{"block":{"type":"peripheral_wrap","id":"I@})D:bWyuA*FB8JA._Q","inputs":{"NAME":{"block":{"type":"text","id":"$.|TXypr(p,O?j+AyxG}","fields":{"TEXT":"back"}}}}}}},"next":{"block":{"type":"text_print","id":"`pV-P7(5sAFfu.Rw#?*0","inputs":{"TEXT":{"shadow":{"type":"text","id":"LWM*Dzq9*nJOE2aHlE!:","fields":{"TEXT":"Hello World!"}},"block":{"type":"advanced_peripherals_energy_detector_get_transfer_rate","id":",t1ePaKNhwgjj8*NxTv4","inputs":{"DETECTOR":{"block":{"type":"variables_get","id":"*CXv^ZN2(,0/M{AAYCqd","fields":{"VAR":{"id":"*{7i9]pPQ]SdxwKC$?3g"}}}}}}}},"next":{"block":{"type":"controls_for","id":"4!(mnA6g%G=~D3O|::Vm","fields":{"VAR":{"id":"RxOxb]Cq?^Fl%TPEReQg"}},"inputs":{"FROM":{"shadow":{"type":"math_number","id":"Dd_i)gS(=_5Z^A+WFwlC","fields":{"NUM":1}}},"TO":{"shadow":{"type":"math_number","id":"-C7.z0)cwU2m=Nkai:?t","fields":{"NUM":5500000}}},"BY":{"shadow":{"type":"math_number","id":"0XKg00ZWP)J21Ml;r3zY","fields":{"NUM":10000}}},"DO":{"block":{"type":"advanced_peripherals_energy_detector_set_transfer_rate_limit","id":"LUW1R-c8QnslP9ZkHe^i","inputs":{"TFRLIMIT":{"shadow":{"type":"math_number","id":"ihxhw[%G_?YGmGNHhNn~","fields":{"NUM":512}},"block":{"type":"variables_get","id":"zdca/5P:G=R-/1Jn7~6i","fields":{"VAR":{"id":"RxOxb]Cq?^Fl%TPEReQg"}}}},"DETECTOR":{"block":{"type":"variables_get","id":"R+t`O{nwP2m`h;00zn$S","fields":{"VAR":{"id":"*{7i9]pPQ]SdxwKC$?3g"}}}}},"next":{"block":{"type":"text_print","id":"y:t@#1T=P?#7On+oP!vk","inputs":{"TEXT":{"shadow":{"type":"text","id":"LWM*Dzq9*nJOE2aHlE!:","fields":{"TEXT":"Hello World!"}},"block":{"type":"advanced_peripherals_energy_detector_get_transfer_rate","id":"%#cm|_bk@Z?K2dcZ%yG8","inputs":{"DETECTOR":{"block":{"type":"variables_get","id":"Q3,TJ``WBVTZC|iAm:WI","fields":{"VAR":{"id":"*{7i9]pPQ]SdxwKC$?3g"}}}}}}}}}}}}}}}}}}}}}]},"variables":[{"name":"i","id":"RxOxb]Cq?^Fl%TPEReQg"},{"name":"detector","id":"*{7i9]pPQ]SdxwKC$?3g"}]}}
\ No newline at end of file
diff --git a/blocks/Advanced_Peripherals/block_design.json b/blocks/Advanced_Peripherals/block_design.json
new file mode 100644
index 0000000..5a898be
--- /dev/null
+++ b/blocks/Advanced_Peripherals/block_design.json
@@ -0,0 +1,597 @@
+{
+ "advanced_peripherals_chatbox_send_message": {
+ "message0": "Chatbox %1 broadcast %2\nPrefix %3 Brackets %4 Bracket color %5 Range %6",
+ "args0": [
+ {
+ "type": "input_value",
+ "name": "CHATBOX",
+ "check": "Peripheral"
+ },
+ {
+ "type": "input_value",
+ "name": "TEXT",
+ "check": "String"
+ },
+ {
+ "type": "input_value",
+ "name": "PREFIX",
+ "check": "String"
+ },
+ {
+ "type": "input_value",
+ "name": "BRACKET",
+ "check": "String"
+ },
+ {
+ "type": "input_value",
+ "name": "BRACKETCOLOR",
+ "check": "String"
+ },
+ {
+ "type": "input_value",
+ "name": "RANGE",
+ "check": "Number"
+ }
+ ],
+ "previousStatement": null,
+ "nextStatement": null,
+ "colour": 200,
+ "tooltip": "Broadcast message to chat",
+ "helpUrl": "https://docs.advanced-peripherals.de/peripherals/chat_box/#sendmessage"
+ },
+ "advanced_peripherals_chatbox_send_message_to_player": {
+ "message0": "Chatbox %1 send %2 to player %3\nPrefix %4 Brackets %5 Bracket color %6 Range %7",
+ "args0": [
+ {
+ "type": "input_value",
+ "name": "CHATBOX",
+ "check": "Peripheral"
+ },
+ {
+ "type": "input_value",
+ "name": "TEXT",
+ "check": "String"
+ },
+ {
+ "type": "input_value",
+ "name": "PLAYER",
+ "check": "String"
+ },
+ {
+ "type": "input_value",
+ "name": "PREFIX",
+ "check": "String"
+ },
+ {
+ "type": "input_value",
+ "name": "BRACKET",
+ "check": "String"
+ },
+ {
+ "type": "input_value",
+ "name": "BRACKETCOLOR",
+ "check": "String"
+ },
+ {
+ "type": "input_value",
+ "name": "RANGE",
+ "check": "Number"
+ }
+ ],
+ "previousStatement": null,
+ "nextStatement": null,
+ "colour": 200,
+ "tooltip": "Send message to player chat"
+ },
+ "advanced_peripherals_chatbox_send_toast_to_player": {
+ "message0": "Chatbox %1 toast send %2 and title %3 to player %4\nPrefix %5 Brackets %6 Bracket color %7 Range %8",
+ "args0": [
+ {
+ "type": "input_value",
+ "name": "CHATBOX",
+ "check": "Peripheral"
+ },
+ {
+ "type": "input_value",
+ "name": "TEXT",
+ "check": "String"
+ },
+ {
+ "type": "input_value",
+ "name": "TITLE",
+ "check": "String"
+ },
+ {
+ "type": "input_value",
+ "name": "PLAYER",
+ "check": "String"
+ },
+ {
+ "type": "input_value",
+ "name": "PREFIX",
+ "check": "String"
+ },
+ {
+ "type": "input_value",
+ "name": "BRACKET",
+ "check": "String"
+ },
+ {
+ "type": "input_value",
+ "name": "BRACKETCOLOR",
+ "check": "String"
+ },
+ {
+ "type": "input_value",
+ "name": "RANGE",
+ "check": "Number"
+ }
+ ],
+ "previousStatement": null,
+ "nextStatement": null,
+ "colour": 200,
+ "tooltip": "Send message to player toast",
+ "helpUrl": "https://docs.advanced-peripherals.de/peripherals/chat_box/#sendtoasttoplayer"
+ },
+ "advanced_peripherals_chatbox_send_message_formatted": {
+ "message0": "Chatbox %1 broadcast formatted json %2\nPrefix %3 Brackets %4 Bracket color %5 Range %6",
+ "args0": [
+ {
+ "type": "input_value",
+ "name": "CHATBOX",
+ "check": "Peripheral"
+ },
+ {
+ "type": "input_value",
+ "name": "JSON",
+ "check": "String"
+ },
+ {
+ "type": "input_value",
+ "name": "PREFIX",
+ "check": "String"
+ },
+ {
+ "type": "input_value",
+ "name": "BRACKET",
+ "check": "String"
+ },
+ {
+ "type": "input_value",
+ "name": "BRACKETCOLOR",
+ "check": "String"
+ },
+ {
+ "type": "input_value",
+ "name": "RANGE",
+ "check": "Number"
+ }
+ ],
+ "previousStatement": null,
+ "nextStatement": null,
+ "colour": 200,
+ "tooltip": "Broadcast message to chat with formatted",
+ "helpUrl": "https://docs.advanced-peripherals.de/peripherals/chat_box/#sendformattedmessage"
+ },
+ "advanced_peripherals_chatbox_send_message_formatted_to_player": {
+ "message0": "Chatbox %1 send formatted json %2 to player %3\nPrefix %4 Brackets %5 Bracket color %6 Range %7",
+ "args0": [
+ {
+ "type": "input_value",
+ "name": "CHATBOX",
+ "check": "Peripheral"
+ },
+ {
+ "type": "input_value",
+ "name": "JSON",
+ "check": "String"
+ },
+ {
+ "type": "input_value",
+ "name": "PLAYER",
+ "check": "String"
+ },
+ {
+ "type": "input_value",
+ "name": "PREFIX",
+ "check": "String"
+ },
+ {
+ "type": "input_value",
+ "name": "BRACKET",
+ "check": "String"
+ },
+ {
+ "type": "input_value",
+ "name": "BRACKETCOLOR",
+ "check": "String"
+ },
+ {
+ "type": "input_value",
+ "name": "RANGE",
+ "check": "Number"
+ }
+ ],
+ "previousStatement": null,
+ "nextStatement": null,
+ "colour": 200,
+ "tooltip": "Send message formatted to player chat"
+ },
+ "advanced_peripherals_chatbox_send_toast_formatted_to_player": {
+ "message0": "Chatbox %1 toast send %2 and title %3 to player %4\nPrefix %5 Brackets %6 Bracket color %7 Range %8",
+ "args0": [
+ {
+ "type": "input_value",
+ "name": "CHATBOX",
+ "check": "Peripheral"
+ },
+ {
+ "type": "input_value",
+ "name": "TEXT",
+ "check": "String"
+ },
+ {
+ "type": "input_value",
+ "name": "TITLE",
+ "check": "String"
+ },
+ {
+ "type": "input_value",
+ "name": "PLAYER",
+ "check": "String"
+ },
+ {
+ "type": "input_value",
+ "name": "PREFIX",
+ "check": "String"
+ },
+ {
+ "type": "input_value",
+ "name": "BRACKET",
+ "check": "String"
+ },
+ {
+ "type": "input_value",
+ "name": "BRACKETCOLOR",
+ "check": "String"
+ },
+ {
+ "type": "input_value",
+ "name": "RANGE",
+ "check": "Number"
+ }
+ ],
+ "previousStatement": null,
+ "nextStatement": null,
+ "colour": 200,
+ "tooltip": "Send message formatted to player toast",
+ "helpUrl": "https://docs.advanced-peripherals.de/peripherals/chat_box/#sendformattedtoasttoplayer"
+ },
+
+ "advanced_peripherals_energy_detector_get_transfer_rate": {
+ "message0": "Get current transfer rate from detector %1",
+ "args0": [
+ {
+ "type": "input_value",
+ "name": "DETECTOR",
+ "check": "Peripheral"
+ }
+ ],
+ "output": "Number",
+ "colour": 200,
+ "tooltip": "Returns the current energy that is going through the block."
+ },
+ "advanced_peripherals_energy_detector_get_transfer_rate_limit": {
+ "message0": "get transfer rate limit from detector %1",
+ "args0": [
+ {
+ "type": "input_value",
+ "name": "DETECTOR",
+ "check": "Peripheral"
+ }
+ ],
+ "output": "Number",
+ "colour": 200,
+ "tooltip": "Returns the max rate limit of energy through the block which has been set."
+ },
+ "advanced_peripherals_energy_detector_set_transfer_rate_limit": {
+ "message0": "Set transfer rate limit to %1 FE for detector %2",
+ "args0": [
+ {
+ "type": "input_value",
+ "name": "TFRLIMIT",
+ "check": "Number"
+ },
+ {
+ "type": "input_value",
+ "name": "DETECTOR",
+ "check": "Peripheral"
+ }
+ ],
+ "inputsInline": true,
+ "previousStatement": null,
+ "nextStatement": null,
+ "colour": 200,
+ "tooltip": "Set the max energy rate that will go through the block."
+ },
+
+ "advanced_peripherals_env_detector_get_biome": {
+ "message0": "Get current biome from detector %1",
+ "args0": [
+ {
+ "type": "input_value",
+ "name": "DETECTOR",
+ "check": "Peripheral"
+ }
+ ],
+ "output": "String",
+ "colour": 200,
+ "tooltip": "Returns the current biome the block is in."
+ },
+ "advanced_peripherals_env_detector_get_block_light_level": {
+ "message0": "Get current light level from detector %1",
+ "args0": [
+ {
+ "type": "input_value",
+ "name": "DETECTOR",
+ "check": "Peripheral"
+ }
+ ],
+ "output": "Number",
+ "colour": 200,
+ "tooltip": "Returns the block light level (0 to 15) at the detector block, this can be influenced by light sources"
+ },
+ "advanced_peripherals_env_detector_get_day_light_level": {
+ "message0": "Get current day light level from detector %1",
+ "args0": [
+ {
+ "type": "input_value",
+ "name": "DETECTOR",
+ "check": "Peripheral"
+ }
+ ],
+ "output": "Number",
+ "colour": 200,
+ "tooltip": "Returns the day light level of the current world from 0 to 15. This is uneffected by blocks covering the peripheral."
+ },
+ "advanced_peripherals_env_detector_get_sky_light_level": {
+ "message0": "Get current sky light level from detector %1",
+ "args0": [
+ {
+ "type": "input_value",
+ "name": "DETECTOR",
+ "check": "Peripheral"
+ }
+ ],
+ "output": "Number",
+ "colour": 200,
+ "tooltip": "Returns the current sky light level from 0 to 15 (like a daylight sensor)."
+ },
+ "advanced_peripherals_env_detector_get_dimension_name": {
+ "message0": "Get current dimension name from detector %1",
+ "args0": [
+ {
+ "type": "input_value",
+ "name": "DETECTOR",
+ "check": "Peripheral"
+ }
+ ],
+ "output": "String",
+ "colour": 200,
+ "tooltip": "Returns the name of the current dimension (ex. overworld, the_nether or the_end)."
+ },
+ "advanced_peripherals_env_detector_get_dimension_PaN": {
+ "message0": "Get current dimension PaN from detector %1",
+ "args0": [
+ {
+ "type": "input_value",
+ "name": "DETECTOR",
+ "check": "Peripheral"
+ }
+ ],
+ "output": "String",
+ "colour": 200,
+ "tooltip": "Similar to getDimensionName it returns the name of the dimension prefixed with the provider name (ex. minecraft:overworld)."
+ },
+ "advanced_peripherals_env_detector_get_dimension_provider": {
+ "message0": "Get current dimension provider from detector %1",
+ "args0": [
+ {
+ "type": "input_value",
+ "name": "DETECTOR",
+ "check": "Peripheral"
+ }
+ ],
+ "output": "String",
+ "colour": 200,
+ "tooltip": "Returns the provider of the dimension (ex. minecraft)."
+ },
+ "advanced_peripherals_env_detector_get_moon_id": {
+ "message0": "Get current moon phase id from detector %1",
+ "args0": [
+ {
+ "type": "input_value",
+ "name": "DETECTOR",
+ "check": "Peripheral"
+ }
+ ],
+ "output": "Number",
+ "colour": 200,
+ "tooltip": "Returns the current moon phase's id.",
+ "helpUrl": "https://minecraft.wiki/w/Moon"
+ },
+ "advanced_peripherals_env_detector_get_moon_name": {
+ "message0": "Get current moon phase name from detector %1",
+ "args0": [
+ {
+ "type": "input_value",
+ "name": "DETECTOR",
+ "check": "Peripheral"
+ }
+ ],
+ "output": "String",
+ "colour": 200,
+ "tooltip": "Returns the current moon phase's name.",
+ "helpUrl": "https://minecraft.wiki/w/Moon"
+ },
+ "advanced_peripherals_env_detector_get_time": {
+ "message0": "Get current time from detector %1",
+ "args0": [
+ {
+ "type": "input_value",
+ "name": "DETECTOR",
+ "check": "Peripheral"
+ }
+ ],
+ "output": "Number",
+ "colour": 200,
+ "tooltip": "Returns the daytime of the current world."
+ },
+ "advanced_peripherals_env_detector_get_radiation": {
+ "message0": "Get current radiation from detector %1",
+ "args0": [
+ {
+ "type": "input_value",
+ "name": "DETECTOR",
+ "check": "Peripheral"
+ }
+ ],
+ "output": "Array",
+ "colour": 200,
+ "tooltip": "Returns the current radiation level from the Mekanism mod with the radiation unit. (Require Mekanism mod)"
+ },
+ "advanced_peripherals_env_detector_get_radiation_raw": {
+ "message0": "Get current radiation raw from detector %1",
+ "args0": [
+ {
+ "type": "input_value",
+ "name": "DETECTOR",
+ "check": "Peripheral"
+ }
+ ],
+ "output": "Number",
+ "colour": 200,
+ "tooltip": "Returns the current raw radiation level in Sv/h. (Require Mekanism mod)"
+ },
+ "advanced_peripherals_env_detector_is_dimension": {
+ "message0": "Is current dimension %1 from detector %2",
+ "args0": [
+ {
+ "type": "input_value",
+ "name": "DIMENSION",
+ "check": "String"
+ },
+ {
+ "type": "input_value",
+ "name": "DETECTOR",
+ "check": "Peripheral"
+ }
+ ],
+ "output": "Boolean",
+ "colour": 200,
+ "tooltip": "Returns true if the current dimension matches the dimension parameter."
+ },
+ "advanced_peripherals_env_detector_is_moon": {
+ "message0": "Is current moon phase id %1 from detector %2",
+ "args0": [
+ {
+ "type": "input_value",
+ "name": "MOONID",
+ "check": "Number"
+ },
+ {
+ "type": "input_value",
+ "name": "DETECTOR",
+ "check": "Peripheral"
+ }
+ ],
+ "output": "Boolean",
+ "colour": 200,
+ "tooltip": "Returns true if the current moon phase matches the moonPhaseId parameter.",
+ "helpUrl": "https://minecraft.wiki/w/Moon"
+ },
+ "advanced_peripherals_env_detector_is_raining": {
+ "message0": "Is current raining from detector %1",
+ "args0": [
+ {
+ "type": "input_value",
+ "name": "DETECTOR",
+ "check": "Peripheral"
+ }
+ ],
+ "output": "Boolean",
+ "colour": 200,
+ "tooltip": "Returns true if it is raining."
+ },
+ "advanced_peripherals_env_detector_is_sunny": {
+ "message0": "Is current sunny from detector %1",
+ "args0": [
+ {
+ "type": "input_value",
+ "name": "DETECTOR",
+ "check": "Peripheral"
+ }
+ ],
+ "output": "Boolean",
+ "colour": 200,
+ "tooltip": "Returns true if it is sunny."
+ },
+ "advanced_peripherals_env_detector_is_thunder": {
+ "message0": "Is current thunder from detector %1",
+ "args0": [
+ {
+ "type": "input_value",
+ "name": "DETECTOR",
+ "check": "Peripheral"
+ }
+ ],
+ "output": "Boolean",
+ "colour": 200,
+ "tooltip": "Returns true if it is thundering."
+ },
+ "advanced_peripherals_env_detector_is_slime_chunk": {
+ "message0": "Is current slime chunk from detector %1",
+ "args0": [
+ {
+ "type": "input_value",
+ "name": "DETECTOR",
+ "check": "Peripheral"
+ }
+ ],
+ "output": "Boolean",
+ "colour": 200,
+ "tooltip": "Returns true if the current chunk is a slime chunk."
+ },
+ "advanced_peripherals_env_detector_list_dimensions": {
+ "message0": "List all dimensions from detector %1",
+ "args0": [
+ {
+ "type": "input_value",
+ "name": "DETECTOR",
+ "check": "Peripheral"
+ }
+ ],
+ "output": "Array",
+ "colour": 200,
+ "tooltip": "Returns a table with all of the registered dimensions for the current world, this includes modded dimensions."
+ },
+ "advanced_peripherals_env_detector_scan_entities": {
+ "message0": "Scan entities in range %1 blocks from detector %2",
+ "args0": [
+ {
+ "type": "input_value",
+ "name": "BLOCKSRANGE",
+ "check": "Number"
+ },
+ {
+ "type": "input_value",
+ "name": "DETECTOR",
+ "check": "Peripheral"
+ }
+ ],
+ "inputsInline": true,
+ "output": "Array",
+ "colour": 200,
+ "tooltip": "Returns a table with all entities in the given range Coordinates are relativ and not absolute"
+ }
+}
diff --git a/blocks/Advanced_Peripherals/generator.js b/blocks/Advanced_Peripherals/generator.js
new file mode 100644
index 0000000..30938f8
--- /dev/null
+++ b/blocks/Advanced_Peripherals/generator.js
@@ -0,0 +1,228 @@
+// this file not for generator only
+
+const { luaGenerator } = require('blockly/lua');
+
+// Check if luaGenerator.forBlock is defined and initialize if necessary
+if (!luaGenerator.forBlock) {
+ luaGenerator.forBlock = {};
+}
+
+// Generator for chatbox
+
+luaGenerator.forBlock['advanced_peripherals_chatbox_send_message'] = function(block, generator) {
+ var chatbox = generator.valueToCode(block, 'CHATBOX', generator.ORDER_ATOMIC);
+ var text = generator.valueToCode(block, 'TEXT', generator.ORDER_ATOMIC);
+ var prefix = generator.valueToCode(block, 'PREFIX', generator.ORDER_ATOMIC);
+ var bracket = generator.valueToCode(block, 'BRACKET', generator.ORDER_ATOMIC);
+ var bracketcolor = generator.valueToCode(block, 'BRACKETCOLOR', generator.ORDER_ATOMIC);
+ var range = generator.valueToCode(block, 'RANGE', generator.ORDER_ATOMIC);
+
+ return `${chatbox}.sendMessage(${text}, ${prefix}, ${bracket}, ${bracketcolor}, ${range})\n`;
+};
+
+luaGenerator.forBlock['advanced_peripherals_chatbox_send_message_to_player'] = function(block, generator) {
+ var chatbox = generator.valueToCode(block, 'CHATBOX', generator.ORDER_ATOMIC);
+ var text = generator.valueToCode(block, 'TEXT', generator.ORDER_ATOMIC);
+ var player = generator.valueToCode(block, 'PLAYER', generator.ORDER_ATOMIC);
+ var prefix = generator.valueToCode(block, 'PREFIX', generator.ORDER_ATOMIC);
+ var bracket = generator.valueToCode(block, 'BRACKET', generator.ORDER_ATOMIC);
+ var bracketcolor = generator.valueToCode(block, 'BRACKETCOLOR', generator.ORDER_ATOMIC);
+ var range = generator.valueToCode(block, 'RANGE', generator.ORDER_ATOMIC);
+
+ return `${chatbox}.sendMessageToPlayer(${text}, ${player}, ${prefix}, ${bracket}, ${bracketcolor}, ${range})\n`;
+};
+
+luaGenerator.forBlock['advanced_peripherals_chatbox_send_toast_to_player'] = function(block, generator) {
+ var chatbox = generator.valueToCode(block, 'CHATBOX', generator.ORDER_ATOMIC);
+ var text = generator.valueToCode(block, 'TEXT', generator.ORDER_ATOMIC);
+ var title = generator.valueToCode(block, 'TITLE', generator.ORDER_ATOMIC);
+ var player = generator.valueToCode(block, 'PLAYER', generator.ORDER_ATOMIC);
+ var prefix = generator.valueToCode(block, 'PREFIX', generator.ORDER_ATOMIC);
+ var bracket = generator.valueToCode(block, 'BRACKET', generator.ORDER_ATOMIC);
+ var bracketcolor = generator.valueToCode(block, 'BRACKETCOLOR', generator.ORDER_ATOMIC);
+ var range = generator.valueToCode(block, 'RANGE', generator.ORDER_ATOMIC);
+
+ return `${chatbox}.sendToastToPlayer(${text}, ${title}, ${player}, ${prefix}, ${bracket}, ${bracketcolor}, ${range})\n`;
+};
+
+luaGenerator.forBlock['advanced_peripherals_chatbox_send_message_formatted'] = function(block, generator) {
+ var chatbox = generator.valueToCode(block, 'CHATBOX', generator.ORDER_ATOMIC);
+ var json = generator.valueToCode(block, 'JSON', generator.ORDER_ATOMIC);
+ var prefix = generator.valueToCode(block, 'PREFIX', generator.ORDER_ATOMIC);
+ var bracket = generator.valueToCode(block, 'BRACKET', generator.ORDER_ATOMIC);
+ var bracketcolor = generator.valueToCode(block, 'BRACKETCOLOR', generator.ORDER_ATOMIC);
+ var range = generator.valueToCode(block, 'RANGE', generator.ORDER_ATOMIC);
+
+ return `${chatbox}.sendFormattedMessage(${json}, ${prefix}, ${bracket}, ${bracketcolor}, ${range})\n`;
+};
+
+luaGenerator.forBlock['advanced_peripherals_chatbox_send_message_formatted_to_player'] = function(block, generator) {
+ var chatbox = generator.valueToCode(block, 'CHATBOX', generator.ORDER_ATOMIC);
+ var json = generator.valueToCode(block, 'JSON', generator.ORDER_ATOMIC);
+ var player = generator.valueToCode(block, 'PLAYER', generator.ORDER_ATOMIC);
+ var prefix = generator.valueToCode(block, 'PREFIX', generator.ORDER_ATOMIC);
+ var bracket = generator.valueToCode(block, 'BRACKET', generator.ORDER_ATOMIC);
+ var bracketcolor = generator.valueToCode(block, 'BRACKETCOLOR', generator.ORDER_ATOMIC);
+ var range = generator.valueToCode(block, 'RANGE', generator.ORDER_ATOMIC);
+
+ return `${chatbox}.sendFormattedMessageToPlayer(${json}, ${player}, ${prefix}, ${bracket}, ${bracketcolor}, ${range})\n`;
+};
+
+luaGenerator.forBlock['advanced_peripherals_chatbox_send_toast_formatted_to_player'] = function(block, generator) {
+ var chatbox = generator.valueToCode(block, 'CHATBOX', generator.ORDER_ATOMIC);
+ var json = generator.valueToCode(block, 'JSON', generator.ORDER_ATOMIC);
+ var title = generator.valueToCode(block, 'TITLE', generator.ORDER_ATOMIC);
+ var player = generator.valueToCode(block, 'PLAYER', generator.ORDER_ATOMIC);
+ var prefix = generator.valueToCode(block, 'PREFIX', generator.ORDER_ATOMIC);
+ var bracket = generator.valueToCode(block, 'BRACKET', generator.ORDER_ATOMIC);
+ var bracketcolor = generator.valueToCode(block, 'BRACKETCOLOR', generator.ORDER_ATOMIC);
+ var range = generator.valueToCode(block, 'RANGE', generator.ORDER_ATOMIC);
+
+ return `${chatbox}.sendFormattedToastToPlayer(${json}, ${title}, ${player}, ${prefix}, ${bracket}, ${bracketcolor}, ${range})\n`;
+};
+
+// Generator for Energy Detector
+
+luaGenerator.forBlock['advanced_peripherals_energy_detector_get_transfer_rate'] = function(block, generator) {
+ var detector = generator.valueToCode(block, 'DETECTOR', generator.ORDER_ATOMIC);
+
+ return [`${detector}.getTransferRate()`, luaGenerator.ORDER_NONE];
+};
+
+luaGenerator.forBlock['advanced_peripherals_energy_detector_get_transfer_rate_limit'] = function(block, generator) {
+ var detector = generator.valueToCode(block, 'DETECTOR', generator.ORDER_ATOMIC);
+
+ return [`${detector}.getTransferRateLimit()`, luaGenerator.ORDER_NONE];
+};
+
+luaGenerator.forBlock['advanced_peripherals_energy_detector_set_transfer_rate_limit'] = function(block, generator) {
+ var limit = generator.valueToCode(block, 'TFRLIMIT', generator.ORDER_ATOMIC);
+ var detector = generator.valueToCode(block, 'DETECTOR', generator.ORDER_ATOMIC);
+
+ return `${detector}.setTransferRateLimit(${limit})\n`;
+};
+
+// Generator for Environment Detector
+
+luaGenerator.forBlock['advanced_peripherals_env_detector_get_biome'] = function(block, generator) {
+ var detector = generator.valueToCode(block, 'DETECTOR', generator.ORDER_ATOMIC);
+
+ return [`${detector}.getBiome()`, luaGenerator.ORDER_NONE];
+};
+
+luaGenerator.forBlock['advanced_peripherals_env_detector_get_block_light_level'] = function(block, generator) {
+ var detector = generator.valueToCode(block, 'DETECTOR', generator.ORDER_ATOMIC);
+
+ return [`${detector}.getBlockLightLevel()`, luaGenerator.ORDER_NONE];
+};
+
+luaGenerator.forBlock['advanced_peripherals_env_detector_get_day_light_level'] = function(block, generator) {
+ var detector = generator.valueToCode(block, 'DETECTOR', generator.ORDER_ATOMIC);
+
+ return [`${detector}.getDayLightLevel()`, luaGenerator.ORDER_NONE];
+};
+
+luaGenerator.forBlock['advanced_peripherals_env_detector_get_sky_light_level'] = function(block, generator) {
+ var detector = generator.valueToCode(block, 'DETECTOR', generator.ORDER_ATOMIC);
+
+ return [`${detector}.getSkyLightLevel()`, luaGenerator.ORDER_NONE];
+};
+
+luaGenerator.forBlock['advanced_peripherals_env_detector_get_dimension_name'] = function(block, generator) {
+ var detector = generator.valueToCode(block, 'DETECTOR', generator.ORDER_ATOMIC);
+
+ return [`${detector}.getDimensionName()`, luaGenerator.ORDER_NONE];
+};
+
+luaGenerator.forBlock['advanced_peripherals_env_detector_get_dimension_PaN'] = function(block, generator) {
+ var detector = generator.valueToCode(block, 'DETECTOR', generator.ORDER_ATOMIC);
+
+ return [`${detector}.getDimensionPaN()`, luaGenerator.ORDER_NONE];
+};
+
+luaGenerator.forBlock['advanced_peripherals_env_detector_get_dimension_provider'] = function(block, generator) {
+ var detector = generator.valueToCode(block, 'DETECTOR', generator.ORDER_ATOMIC);
+
+ return [`${detector}.getDimensionProvider()`, luaGenerator.ORDER_NONE];
+};
+
+luaGenerator.forBlock['advanced_peripherals_env_detector_get_moon_id'] = function(block, generator) {
+ var detector = generator.valueToCode(block, 'DETECTOR', generator.ORDER_ATOMIC);
+
+ return [`${detector}.getMoonId()`, luaGenerator.ORDER_NONE];
+};
+
+luaGenerator.forBlock['advanced_peripherals_env_detector_get_moon_name'] = function(block, generator) {
+ var detector = generator.valueToCode(block, 'DETECTOR', generator.ORDER_ATOMIC);
+
+ return [`${detector}.getMoonName()`, luaGenerator.ORDER_NONE];
+};
+
+luaGenerator.forBlock['advanced_peripherals_env_detector_get_time'] = function(block, generator) {
+ var detector = generator.valueToCode(block, 'DETECTOR', generator.ORDER_ATOMIC);
+
+ return [`${detector}.getTime()`, luaGenerator.ORDER_NONE];
+};
+
+luaGenerator.forBlock['advanced_peripherals_env_detector_get_radiation'] = function(block, generator) {
+ var detector = generator.valueToCode(block, 'DETECTOR', generator.ORDER_ATOMIC);
+
+ return [`${detector}.getRadiation()`, luaGenerator.ORDER_NONE];
+};
+
+luaGenerator.forBlock['advanced_peripherals_env_detector_get_radiation_raw'] = function(block, generator) {
+ var detector = generator.valueToCode(block, 'DETECTOR', generator.ORDER_ATOMIC);
+
+ return [`${detector}.getRadiationRaw()`, luaGenerator.ORDER_NONE];
+};
+
+luaGenerator.forBlock['advanced_peripherals_env_detector_is_dimension'] = function(block, generator) {
+ var dimension = generator.valueToCode(block, 'DIMENSION', generator.ORDER_ATOMIC);
+ var detector = generator.valueToCode(block, 'DETECTOR', generator.ORDER_ATOMIC);
+
+ return [`${detector}.isDimension(${dimension})`, luaGenerator.ORDER_NONE];
+};
+
+luaGenerator.forBlock['advanced_peripherals_env_detector_is_moon'] = function(block, generator) {
+ var id = generator.valueToCode(block, 'MOONID', generator.ORDER_ATOMIC);
+ var detector = generator.valueToCode(block, 'DETECTOR', generator.ORDER_ATOMIC);
+
+ return [`${detector}.isMoon(${id})`, luaGenerator.ORDER_NONE];
+};
+
+luaGenerator.forBlock['advanced_peripherals_env_detector_is_raining'] = function(block, generator) {
+ var detector = generator.valueToCode(block, 'DETECTOR', generator.ORDER_ATOMIC);
+
+ return [`${detector}.isRaining()`, luaGenerator.ORDER_NONE];
+};
+
+luaGenerator.forBlock['advanced_peripherals_env_detector_is_sunny'] = function(block, generator) {
+ var detector = generator.valueToCode(block, 'DETECTOR', generator.ORDER_ATOMIC);
+
+ return [`${detector}.isSunny()`, luaGenerator.ORDER_NONE];
+};
+
+luaGenerator.forBlock['advanced_peripherals_env_detector_is_thunder'] = function(block, generator) {
+ var detector = generator.valueToCode(block, 'DETECTOR', generator.ORDER_ATOMIC);
+
+ return [`${detector}.isThunder()`, luaGenerator.ORDER_NONE];
+};
+
+luaGenerator.forBlock['advanced_peripherals_env_detector_is_slime_chunk'] = function(block, generator) {
+ var detector = generator.valueToCode(block, 'DETECTOR', generator.ORDER_ATOMIC);
+
+ return [`${detector}.isSlimeChunk()`, luaGenerator.ORDER_NONE];
+};
+
+luaGenerator.forBlock['advanced_peripherals_env_detector_list_dimensions'] = function(block, generator) {
+ var detector = generator.valueToCode(block, 'DETECTOR', generator.ORDER_ATOMIC);
+
+ return [`${detector}.listDimensions()`, luaGenerator.ORDER_NONE];
+};
+
+luaGenerator.forBlock['advanced_peripherals_env_detector_scan_entities'] = function(block, generator) {
+ var blockrange = generator.valueToCode(block, "BLOCKSRANGE", generator.ORDER_ATOMIC)
+ var detector = generator.valueToCode(block, 'DETECTOR', generator.ORDER_ATOMIC);
+
+ return [`${detector}.scanEntities(${blockrange})`, luaGenerator.ORDER_NONE];
+};
\ No newline at end of file
diff --git a/blocks/Advanced_Peripherals/icon.png b/blocks/Advanced_Peripherals/icon.png
new file mode 100644
index 0000000..d9d14e5
Binary files /dev/null and b/blocks/Advanced_Peripherals/icon.png differ
diff --git a/blocks/Advanced_Peripherals/index.json b/blocks/Advanced_Peripherals/index.json
new file mode 100644
index 0000000..006214a
--- /dev/null
+++ b/blocks/Advanced_Peripherals/index.json
@@ -0,0 +1,22 @@
+{
+ "name": "Advanced Peripherals",
+ "author": "DPSoftware Foundation",
+ "description": "Advanced Peripherals is a mod that adds many useful extensions for CC:Tweaked.",
+ "version": "1.0.0",
+ "category": "Mod",
+ "keyword": "mod",
+ "license": "GPL-3.0-or-later",
+ "peripherals": true,
+ "library": false,
+ "require_network": false,
+ "dependencies": {},
+ "design_for_computer": {
+ "basic": true,
+ "adv": true,
+ "command": true,
+ "pocket": false,
+ "advpocket": false,
+ "turtle": true,
+ "advturtle": true
+ }
+}
diff --git a/blocks/Advanced_Peripherals/toolbox.xml b/blocks/Advanced_Peripherals/toolbox.xml
new file mode 100644
index 0000000..facba05
--- /dev/null
+++ b/blocks/Advanced_Peripherals/toolbox.xml
@@ -0,0 +1,163 @@
+
+
+
+
+
+
+ Hello, world!
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Hello, world!
+
+
+
+
+ Player
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Hello, world!
+
+
+
+
+ Hi
+
+
+
+
+ Player
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Player
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 512
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ minecraft:overworld
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+ 32
+
+
+
+
+
+
+
diff --git a/blocks/Create_Additions/toolbox.xml b/blocks/Create_Additions/toolbox.xml
index 148d0ba..a14d33f 100644
--- a/blocks/Create_Additions/toolbox.xml
+++ b/blocks/Create_Additions/toolbox.xml
@@ -106,7 +106,7 @@
- Hello, world!
+ Hello, world!
diff --git a/index.js b/index.js
index cc91b58..01afbe6 100644
--- a/index.js
+++ b/index.js
@@ -4,7 +4,8 @@ const fs = require('fs');
const prompt = require('electron-prompt');
const path = require('path');
const pino = require('pino')
-const pretty = require('pino-pretty')
+const pretty = require('pino-pretty');
+const { log } = require('console');
const ipc = ipcMain
const logger = pino(pretty())
@@ -480,9 +481,10 @@ app.whenReady().then(() => {
})
// Listen for the close event of the main window
+ /*
win.on('close', (event) => {
event.preventDefault()
- if (currentprojectopen) {
+ if (currentprojectopen && !currentworkspacechange) {
const result = dialog.showMessageBoxSync({
type: 'question',
buttons: ['Save', 'Don\'t Save', 'Cancel'],
@@ -502,8 +504,10 @@ app.whenReady().then(() => {
win.destroy();
}
});
+ */
win.on("closed", () => {
+ logger.info("Exiting...")
if (splash) {
splash.close()
}
@@ -515,4 +519,5 @@ app.on('window-all-closed', () => {
if (process.platform !== 'darwin') {
app.quit();
}
+ logger.info("Exited")
});
\ No newline at end of file
diff --git a/src/module_block_design.json b/src/module_block_design.json
index 9e8f084..be689e1 100644
--- a/src/module_block_design.json
+++ b/src/module_block_design.json
@@ -158,5 +158,34 @@
"nextStatement": null,
"colour": 110,
"tooltip": "Prints the specified values to the screen in red, separated by spaces, wrapping if necessary. After printing, the cursor is moved to the next line."
+ },
+ "sys_mc_std_color": {
+ "message0": "Standard chat color %1",
+ "args0": [
+ {
+ "type": "field_dropdown",
+ "name": "COLOR",
+ "options": [
+ ["White", "&f"],
+ ["Gray", "&7"],
+ ["Dark Gray", "&8"],
+ ["Black", "&0"],
+ ["Dark Red", "&4"],
+ ["Red", "&c"],
+ ["Gold", "&6"],
+ ["Yellow", "&e"],
+ ["Dark Green", "&2"],
+ ["Green", "&a"],
+ ["Dark Aqua", "&b"],
+ ["Dark Blue", "&1"],
+ ["Blue", "&9"],
+ ["Light Purple", "&d"],
+ ["Dark Purple", "&5"]
+ ]
+ }
+ ],
+ "output": "String",
+ "colour": 220,
+ "tooltip": "Standard chat color picker"
}
}
diff --git a/src/module_generator.js b/src/module_generator.js
index f285c87..b37af7d 100644
--- a/src/module_generator.js
+++ b/src/module_generator.js
@@ -101,4 +101,10 @@ luaGenerator.forBlock['sys_print_error'] = function(block, generator) {
var error = generator.valueToCode(block, 'ERROR', generator.ORDER_NONE);
return `printError(${error})\n`;
+};
+
+luaGenerator.forBlock['sys_mc_std_color'] = function(block, generator) {
+ var color = block.getFieldValue('COLOR');
+
+ return [`"${color}"`, luaGenerator.ORDER_NONE];
};
\ No newline at end of file
diff --git a/src/toolbox.xml b/src/toolbox.xml
index 275f0ba..53e1a0b 100644
--- a/src/toolbox.xml
+++ b/src/toolbox.xml
@@ -332,6 +332,7 @@
+