From 2047e2321351d1b0428f7fe2bb5ce7a92a72aa75 Mon Sep 17 00:00:00 2001 From: damp11113 Date: Wed, 21 Aug 2024 21:16:46 +0700 Subject: [PATCH] update 1.3.1.1 add Advanced Peripherals (unfinished 3/13) --- ...eripherals energy detector (example 2).ccp | 1 + blocks/Advanced_Peripherals/block_design.json | 597 ++++++++++++++++++ blocks/Advanced_Peripherals/generator.js | 228 +++++++ blocks/Advanced_Peripherals/icon.png | Bin 0 -> 12362 bytes blocks/Advanced_Peripherals/index.json | 22 + blocks/Advanced_Peripherals/toolbox.xml | 163 +++++ blocks/Create_Additions/toolbox.xml | 2 +- index.js | 9 +- src/module_block_design.json | 29 + src/module_generator.js | 6 + src/toolbox.xml | 1 + 11 files changed, 1055 insertions(+), 3 deletions(-) create mode 100644 TestProject/advperipherals energy detector (example 2).ccp create mode 100644 blocks/Advanced_Peripherals/block_design.json create mode 100644 blocks/Advanced_Peripherals/generator.js create mode 100644 blocks/Advanced_Peripherals/icon.png create mode 100644 blocks/Advanced_Peripherals/index.json create mode 100644 blocks/Advanced_Peripherals/toolbox.xml 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 0000000000000000000000000000000000000000..d9d14e56235bb721ee5dc72d398be22f8fd73166 GIT binary patch literal 12362 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 A-~a#s literal 0 HcmV?d00001 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 @@ + 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 @@ +