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 @@ + 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 @@ +