From a3cbd59f8ac9cf0aecfaf9e854cc142cd478235f Mon Sep 17 00:00:00 2001 From: damp11113 Date: Mon, 19 Aug 2024 21:04:51 +0700 Subject: [PATCH] update 1.2.2 Added 4 module - CCPeripheral - CCPeripheral_generic_energy_storage - CCPeripheral_generic_fluid_storage - CCPeripheral_generic_inventory --- blocks/CCColors/index.json | 2 +- blocks/CCDisk/index.json | 2 +- blocks/CCKeys/index.json | 2 +- blocks/CCPeripheral/block_design.json | 129 ++++++++++++++++++ blocks/CCPeripheral/generator.js | 63 +++++++++ blocks/CCPeripheral/index.json | 22 +++ blocks/CCPeripheral/toolbox.xml | 13 ++ .../block_design.json | 28 ++++ .../generator.js | 20 +++ .../index.json | 22 +++ .../toolbox.xml | 6 + .../block_design.json | 52 +++++++ .../generator.js | 28 ++++ .../index.json | 22 +++ .../toolbox.xml | 12 ++ .../block_design.json | 107 +++++++++++++++ .../generator.js | 49 +++++++ .../CCPeripheral_generic_inventory/index.json | 22 +++ .../toolbox.xml | 37 +++++ blocks/CCRednet/index.json | 2 +- blocks/CCRedstone/index.json | 2 +- blocks/CCSettings/index.json | 2 +- blocks/CCSystem/index.json | 2 +- blocks/CCTextutils/index.json | 2 +- blocks/CCTurtle/index.json | 2 +- blocks/NativeIO/index.json | 2 +- ccIDE Defines.xlsx | Bin 52548 -> 52633 bytes readme.md | 15 +- 28 files changed, 651 insertions(+), 16 deletions(-) create mode 100644 blocks/CCPeripheral/block_design.json create mode 100644 blocks/CCPeripheral/generator.js create mode 100644 blocks/CCPeripheral/index.json create mode 100644 blocks/CCPeripheral/toolbox.xml create mode 100644 blocks/CCPeripheral_generic_energy_storage/block_design.json create mode 100644 blocks/CCPeripheral_generic_energy_storage/generator.js create mode 100644 blocks/CCPeripheral_generic_energy_storage/index.json create mode 100644 blocks/CCPeripheral_generic_energy_storage/toolbox.xml create mode 100644 blocks/CCPeripheral_generic_fluid_storage/block_design.json create mode 100644 blocks/CCPeripheral_generic_fluid_storage/generator.js create mode 100644 blocks/CCPeripheral_generic_fluid_storage/index.json create mode 100644 blocks/CCPeripheral_generic_fluid_storage/toolbox.xml create mode 100644 blocks/CCPeripheral_generic_inventory/block_design.json create mode 100644 blocks/CCPeripheral_generic_inventory/generator.js create mode 100644 blocks/CCPeripheral_generic_inventory/index.json create mode 100644 blocks/CCPeripheral_generic_inventory/toolbox.xml diff --git a/blocks/CCColors/index.json b/blocks/CCColors/index.json index 67a3507..a719008 100644 --- a/blocks/CCColors/index.json +++ b/blocks/CCColors/index.json @@ -7,7 +7,7 @@ "keyword": "Colors", "license": "GPL-3.0-or-later", "peripherals": false, - "library": true, + "library": false, "require_network": false, "dependencies": {}, "design_for_computer": { diff --git a/blocks/CCDisk/index.json b/blocks/CCDisk/index.json index 71aee3a..8ca6e34 100644 --- a/blocks/CCDisk/index.json +++ b/blocks/CCDisk/index.json @@ -7,7 +7,7 @@ "keyword": "disk, operations, ccIDE", "license": "GPL-3.0-or-later", "peripherals": true, - "library": true, + "library": false, "require_network": false, "dependencies": {}, "design_for_computer": { diff --git a/blocks/CCKeys/index.json b/blocks/CCKeys/index.json index ed4ca6a..58f573c 100644 --- a/blocks/CCKeys/index.json +++ b/blocks/CCKeys/index.json @@ -7,7 +7,7 @@ "keyword": "Keyboard", "license": "GPL-3.0-or-later", "peripherals": false, - "library": true, + "library": false, "require_network": false, "dependencies": {}, "design_for_computer": { diff --git a/blocks/CCPeripheral/block_design.json b/blocks/CCPeripheral/block_design.json new file mode 100644 index 0000000..5fadd0f --- /dev/null +++ b/blocks/CCPeripheral/block_design.json @@ -0,0 +1,129 @@ +{ + "peripheral_get_names": { + "message0": "Get all peripheral", + "output": "Array", + "colour": 240, + "tooltip": "Provides a list of all peripherals available." + }, + "peripheral_is_present": { + "message0": "Peripheral %1 is present", + "args0": [ + { + "type": "input_value", + "name": "NAME" + } + ], + "output": "Boolean", + "colour": 240, + "tooltip": "Determines if a peripheral is present with the given name." + }, + "peripheral_get_type": { + "message0": "Get type of peripheral %1", + "args0": [ + { + "type": "input_value", + "name": "DEVICE", + "check": ["Peripheral", "String"] + } + ], + "output": "String", + "colour": 240, + "tooltip": "Get the types of a named or wrapped peripheral." + }, + "peripheral_has_type": { + "message0": "Peripheral %1 has type %2", + "args0": [ + { + "type": "input_value", + "name": "DEVICE", + "check": ["Peripheral", "String"] + }, + { + "type": "input_value", + "name": "TYPE", + "check": "String" + } + ], + "output": "Boolean", + "colour": 240, + "tooltip": "Check if a peripheral is of a particular type." + }, + "peripheral_get_methods": { + "message0": "Get methods of peripheral %1", + "args0": [ + { + "type": "input_value", + "name": "NAME", + "check": "String" + } + ], + "output": "Array", + "colour": 240, + "tooltip": "Get all available methods for the peripheral with the given name." + }, + "peripheral_get_name": { + "message0": "Get name of peripheral %1", + "args0": [ + { + "type": "input_value", + "name": "DEVICE", + "check": "Peripheral" + } + ], + "output": "String", + "colour": 240, + "tooltip": "Get the name of a peripheral wrapped with peripheral.wrap." + }, + "peripheral_call": { + "message0": "Call peripheral %1 with method %2\nand args %3", + "args0": [ + { + "type": "input_value", + "name": "NAME", + "check": "String" + }, + { + "type": "input_value", + "name": "METHOD", + "check": "String" + }, + { + "type": "input_value", + "name": "ARGS", + "check": "Multiple" + } + ], + "previousStatement": null, + "nextStatement": null, + "output": null, + "colour": 240, + "tooltip": "Call a method on the peripheral with the given name." + }, + "peripheral_wrap": { + "message0": "Open peripheral %1", + "args0": [ + { + "type": "input_value", + "name": "NAME", + "check": "String" + } + ], + "output": "Peripheral", + "colour": 240, + "tooltip": "Get a table containing all functions available on a peripheral. These can then be called instead of using peripheral.call every time." + }, + "peripheral_find": { + "message0": "Find peripheral %1", + "args0": [ + { + "type": "input_value", + "name": "NAME", + "check": "String" + } + ], + "output": "Peripheral", + "colour": 240, + "tooltip": "Find all peripherals of a specific type, and return the wrapped peripherals." + } +} + diff --git a/blocks/CCPeripheral/generator.js b/blocks/CCPeripheral/generator.js new file mode 100644 index 0000000..4621679 --- /dev/null +++ b/blocks/CCPeripheral/generator.js @@ -0,0 +1,63 @@ +// 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 = {}; +} + +luaGenerator.forBlock['peripheral_get_names'] = function(block, generator) { + return ["peripheral.getNames()", luaGenerator.ORDER_NONE]; +}; + +luaGenerator.forBlock['peripheral_is_present'] = function(block, generator) { + var name = generator.valueToCode(block, 'NAME', generator.ORDER_ATOMIC); + + return [`peripheral.isPresent(${name})`, luaGenerator.ORDER_NONE]; +}; + +luaGenerator.forBlock['peripheral_get_type'] = function(block, generator) { + var device = generator.valueToCode(block, 'DEVICE', generator.ORDER_ATOMIC); + + return [`peripheral.getType(${device})`, luaGenerator.ORDER_NONE]; +}; + +luaGenerator.forBlock['peripheral_has_type'] = function(block, generator) { + var device = generator.valueToCode(block, 'DEVICE', generator.ORDER_ATOMIC); + var type = generator.valueToCode(block, 'TYPE', generator.ORDER_ATOMIC); + + return [`peripheral.hasType(${device}, ${type})`, luaGenerator.ORDER_NONE]; +}; + +luaGenerator.forBlock['peripheral_get_methods'] = function(block, generator) { + var name = generator.valueToCode(block, 'NAME', generator.ORDER_ATOMIC); + + return [`peripheral.getMethods(${name})`, luaGenerator.ORDER_NONE]; +}; + +luaGenerator.forBlock['peripheral_get_name'] = function(block, generator) { + var device = generator.valueToCode(block, 'DEVICE', generator.ORDER_ATOMIC); + + return [`peripheral.getName(${device})`, luaGenerator.ORDER_NONE]; +}; + +luaGenerator.forBlock['peripheral_call'] = function(block, generator) { + var name = generator.valueToCode(block, 'NAME', generator.ORDER_ATOMIC); + var method = generator.valueToCode(block, 'METHOD', generator.ORDER_ATOMIC); + var args = generator.valueToCode(block, 'ARGS', generator.ORDER_ATOMIC); + + return [`peripheral.call(${name}, ${method}, ${args})`, luaGenerator.ORDER_NONE]; +}; + +luaGenerator.forBlock['peripheral_wrap'] = function(block, generator) { + var name = generator.valueToCode(block, 'NAME', generator.ORDER_ATOMIC); + + return [`peripheral.wrap(${name})`, luaGenerator.ORDER_NONE]; +}; + +luaGenerator.forBlock['peripheral_find'] = function(block, generator) { + var name = generator.valueToCode(block, 'NAME', generator.ORDER_ATOMIC); + + return [`peripheral.find(${name})`, luaGenerator.ORDER_NONE]; +}; \ No newline at end of file diff --git a/blocks/CCPeripheral/index.json b/blocks/CCPeripheral/index.json new file mode 100644 index 0000000..bb444e7 --- /dev/null +++ b/blocks/CCPeripheral/index.json @@ -0,0 +1,22 @@ +{ + "name": "CC: Peripheral", + "author": "DPSoftware Foundation", + "description": "Peripherals are blocks (or turtle and pocket computer upgrades) which can be controlled by a computer.", + "version": "1.0.0", + "category": "Peripheral", + "keyword": "peripheral", + "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/CCPeripheral/toolbox.xml b/blocks/CCPeripheral/toolbox.xml new file mode 100644 index 0000000..9adc0e3 --- /dev/null +++ b/blocks/CCPeripheral/toolbox.xml @@ -0,0 +1,13 @@ + diff --git a/blocks/CCPeripheral_generic_energy_storage/block_design.json b/blocks/CCPeripheral_generic_energy_storage/block_design.json new file mode 100644 index 0000000..3664c76 --- /dev/null +++ b/blocks/CCPeripheral_generic_energy_storage/block_design.json @@ -0,0 +1,28 @@ +{ + "periph_gen_energy_get": { + "message0": "Get current energy from %1", + "args0": [ + { + "type": "input_value", + "name": "ENERGY", + "check": "Peripheral" + } + ], + "output": "Number", + "colour": 25, + "tooltip": "Get the energy of this block." + }, + "periph_gen_energy_get_capacity": { + "message0": "Get max energy capacity from %1", + "args0": [ + { + "type": "input_value", + "name": "ENERGY", + "check": "Peripheral" + } + ], + "output": "Number", + "colour": 25, + "tooltip": "Get the maximum amount of energy this block can store." + } +} diff --git a/blocks/CCPeripheral_generic_energy_storage/generator.js b/blocks/CCPeripheral_generic_energy_storage/generator.js new file mode 100644 index 0000000..9d08dea --- /dev/null +++ b/blocks/CCPeripheral_generic_energy_storage/generator.js @@ -0,0 +1,20 @@ +// 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 = {}; +} + +luaGenerator.forBlock['periph_gen_energy_get'] = function(block, generator) { + var energy = generator.valueToCode(block, 'ENERGY', generator.ORDER_NONE); + + return [`${energy}.getEnergy()`, luaGenerator.ORDER_NONE]; +}; + +luaGenerator.forBlock['periph_gen_energy_get_capacity'] = function(block, generator) { + var energy = generator.valueToCode(block, 'ENERGY', generator.ORDER_NONE); + + return [`${energy}.getEnergyCapacity()`, luaGenerator.ORDER_NONE]; +}; \ No newline at end of file diff --git a/blocks/CCPeripheral_generic_energy_storage/index.json b/blocks/CCPeripheral_generic_energy_storage/index.json new file mode 100644 index 0000000..8acb676 --- /dev/null +++ b/blocks/CCPeripheral_generic_energy_storage/index.json @@ -0,0 +1,22 @@ +{ + "name": "CC: Generic Energy Storage", + "author": "DPSoftware Foundation", + "description": "Methods for interacting with blocks which store energy.", + "version": "1.0.0", + "category": "Peripheral", + "keyword": "generic peripheral storage power", + "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/CCPeripheral_generic_energy_storage/toolbox.xml b/blocks/CCPeripheral_generic_energy_storage/toolbox.xml new file mode 100644 index 0000000..7725d16 --- /dev/null +++ b/blocks/CCPeripheral_generic_energy_storage/toolbox.xml @@ -0,0 +1,6 @@ + diff --git a/blocks/CCPeripheral_generic_fluid_storage/block_design.json b/blocks/CCPeripheral_generic_fluid_storage/block_design.json new file mode 100644 index 0000000..3342e3a --- /dev/null +++ b/blocks/CCPeripheral_generic_fluid_storage/block_design.json @@ -0,0 +1,52 @@ +{ + "periph_gen_fluid_tanks": { + "message0": "Get fluid in tanks %1", + "args0": [ + { + "type": "input_value", + "name": "TANKS", + "check": "Peripheral" + } + ], + "output": "Array", + "colour": 240, + "tooltip": "Get all \"tanks\" in this fluid storage." + }, + "periph_gen_fluid_transfer": { + "message0": "Fluid name %1 in tanks %2 %3 tanks %4\nWith limit %5 mb", + "args0": [ + { + "type": "input_value", + "name": "FLUIDNAME", + "check": "String" + }, + { + "type": "input_value", + "name": "TANKS1", + "check": "Peripheral" + }, + { + "type": "field_dropdown", + "name": "MODE", + "options": [ + ["Push to", "PUSH"], + ["Pull from", "PULL"] + ] + }, + { + "type": "input_value", + "name": "TANKS2", + "check": "Peripheral" + }, + { + "type": "input_value", + "name": "LIMIT", + "check": "Number" + } + ], + "previousStatement": null, + "nextStatement": null, + "colour": 240, + "tooltip": "Transfer a fluid from one fluid container to another connected one." + } +} diff --git a/blocks/CCPeripheral_generic_fluid_storage/generator.js b/blocks/CCPeripheral_generic_fluid_storage/generator.js new file mode 100644 index 0000000..271f829 --- /dev/null +++ b/blocks/CCPeripheral_generic_fluid_storage/generator.js @@ -0,0 +1,28 @@ +// 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 = {}; +} + +luaGenerator.forBlock['periph_gen_fluid_tanks'] = function(block, generator) { + var tanks = generator.valueToCode(block, 'TANKS', generator.ORDER_NONE); + + return [`${tanks}.tanks()`, luaGenerator.ORDER_NONE]; +}; + +luaGenerator.forBlock['periph_gen_fluid_transfer'] = function(block, generator) { + var fluidname = generator.valueToCode(block, 'FLUIDNAME', generator.ORDER_ATOMIC); + var tanks1 = generator.valueToCode(block, 'TANKS1', generator.ORDER_ATOMIC); + var mode = block.getFieldValue('MODE'); + var tanks2 = generator.valueToCode(block, 'TANKS2', generator.ORDER_ATOMIC); + var limit = generator.valueToCode(block, 'LIMIT', generator.ORDER_ATOMIC); + + if (mode == "PUSH") { + return `${tanks1}.pushFluid(peripheral.getName(${tanks2}), ${limit}, ${fluidname})\n` + } else { + return `${tanks1}.pullFluid(peripheral.getName(${tanks2}), ${limit}, ${fluidname})\n` + } +}; diff --git a/blocks/CCPeripheral_generic_fluid_storage/index.json b/blocks/CCPeripheral_generic_fluid_storage/index.json new file mode 100644 index 0000000..0575b5c --- /dev/null +++ b/blocks/CCPeripheral_generic_fluid_storage/index.json @@ -0,0 +1,22 @@ +{ + "name": "CC: Generic Fluid Storage", + "author": "DPSoftware Foundation", + "description": "Methods for interacting with tanks and other fluid storage blocks.", + "version": "1.0.0", + "category": "Peripheral", + "keyword": "generic peripheral storage", + "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/CCPeripheral_generic_fluid_storage/toolbox.xml b/blocks/CCPeripheral_generic_fluid_storage/toolbox.xml new file mode 100644 index 0000000..d5fb9c6 --- /dev/null +++ b/blocks/CCPeripheral_generic_fluid_storage/toolbox.xml @@ -0,0 +1,12 @@ + diff --git a/blocks/CCPeripheral_generic_inventory/block_design.json b/blocks/CCPeripheral_generic_inventory/block_design.json new file mode 100644 index 0000000..69ef6bd --- /dev/null +++ b/blocks/CCPeripheral_generic_inventory/block_design.json @@ -0,0 +1,107 @@ +{ + "periph_gen_inv_size": { + "message0": "Size of Inventory %1", + "args0": [ + { + "type": "input_value", + "name": "INV", + "check": "Peripheral" + } + ], + "output": "Number", + "colour": 130, + "tooltip": "Get the size of this inventory." + }, + "periph_gen_inv_list": { + "message0": "List all item in Inventory %1", + "args0": [ + { + "type": "input_value", + "name": "INV", + "check": "Peripheral" + } + ], + "output": "Array", + "colour": 130, + "tooltip": "List all items in this inventory. This returns a table, with an entry for each slot." + }, + "periph_gen_inv_get_item_detail": { + "message0": "Get item detail from inventory %1 in slot %2", + "args0": [ + { + "type": "input_value", + "name": "INV", + "check": "Peripheral" + }, + { + "type": "input_value", + "name": "SLOT", + "check": "Number" + } + ], + "output": "Array", + "colour": 130, + "tooltip": "Get detailed information about an item.", + "helpUrl": "https://tweaked.cc/generic_peripheral/inventory.html#v:getItemDetail" + }, + "periph_gen_inv_get_item_limit": { + "message0": "Get item limit from inventory %1 in slot %2", + "args0": [ + { + "type": "input_value", + "name": "INV", + "check": "Peripheral" + }, + { + "type": "input_value", + "name": "SLOT", + "check": "Number" + } + ], + "output": "Number", + "colour": 130, + "tooltip": "Get the maximum number of items which can be stored in this slot." + }, + "periph_gen_inv_transfer_items": { + "message0": "Inventory %1 in slot %2 %3 inventory %4 in slot %5\nWith limit %6 items", + "args0": [ + { + "type": "input_value", + "name": "INV1", + "check": "Peripheral" + }, + { + "type": "input_value", + "name": "INV1SLOT", + "check": "Number" + }, + { + "type": "field_dropdown", + "name": "MODE", + "options": [ + ["Push to", "PUSH"], + ["Pull from", "PULL"] + ] + }, + { + "type": "input_value", + "name": "INV2", + "check": "Peripheral" + }, + { + "type": "input_value", + "name": "INV2SLOT", + "check": "Number" + }, + { + "type": "input_value", + "name": "LIMIT", + "check": "Number" + } + ], + "previousStatement": null, + "nextStatement": null, + "colour": 130, + "tooltip": "Transfer items from one inventory to another connected one." + } +} diff --git a/blocks/CCPeripheral_generic_inventory/generator.js b/blocks/CCPeripheral_generic_inventory/generator.js new file mode 100644 index 0000000..cfa7837 --- /dev/null +++ b/blocks/CCPeripheral_generic_inventory/generator.js @@ -0,0 +1,49 @@ +// 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 = {}; +} + +luaGenerator.forBlock['periph_gen_inv_size'] = function(block, generator) { + var inv = generator.valueToCode(block, 'INV', generator.ORDER_NONE); + + return [`${inv}.size()`, luaGenerator.ORDER_NONE]; +}; + +luaGenerator.forBlock['periph_gen_inv_list'] = function(block, generator) { + var inv = generator.valueToCode(block, 'INV', generator.ORDER_NONE); + + return [`${inv}.list()`, luaGenerator.ORDER_NONE]; +}; + +luaGenerator.forBlock['periph_gen_inv_get_item_detail'] = function(block, generator) { + var inv = generator.valueToCode(block, 'INV', generator.ORDER_NONE); + var slot = generator.valueToCode(block, 'SLOT', generator.ORDER_NONE); + + return [`${inv}.getItemDetail(${slot})`, luaGenerator.ORDER_NONE]; +}; + +luaGenerator.forBlock['periph_gen_inv_get_item_limit'] = function(block, generator) { + var inv = generator.valueToCode(block, 'INV', generator.ORDER_NONE); + var slot = generator.valueToCode(block, 'SLOT', generator.ORDER_NONE); + + return [`${inv}.getItemLimit(${slot})`, luaGenerator.ORDER_NONE]; +}; + +luaGenerator.forBlock['periph_gen_inv_transfer_items'] = function(block, generator) { + var inv1 = generator.valueToCode(block, 'INV1', generator.ORDER_ATOMIC); + var inv1slot = generator.valueToCode(block, 'INV1SLOT', generator.ORDER_ATOMIC); + var mode = block.getFieldValue('MODE'); + var inv2 = generator.valueToCode(block, 'INV2', generator.ORDER_ATOMIC); + var inv2slot = generator.valueToCode(block, 'INV2SLOT', generator.ORDER_ATOMIC); + var limit = generator.valueToCode(block, 'LIMIT', generator.ORDER_ATOMIC); + + if (mode == "PUSH") { + return `${inv1}.pushItems(peripheral.getName(${inv2}), ${inv1slot}, ${limit}, ${inv2slot})\n` + } else { + return `${inv1}.pullItems(peripheral.getName(${inv2}), ${inv2slot}, ${limit}, ${inv1slot})\n` + } +}; diff --git a/blocks/CCPeripheral_generic_inventory/index.json b/blocks/CCPeripheral_generic_inventory/index.json new file mode 100644 index 0000000..cde8f27 --- /dev/null +++ b/blocks/CCPeripheral_generic_inventory/index.json @@ -0,0 +1,22 @@ +{ + "name": "CC: Generic Inventory", + "author": "DPSoftware Foundation", + "description": "Methods for interacting with inventories.", + "version": "1.0.0", + "category": "Peripheral", + "keyword": "generic peripheral", + "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/CCPeripheral_generic_inventory/toolbox.xml b/blocks/CCPeripheral_generic_inventory/toolbox.xml new file mode 100644 index 0000000..bc7e329 --- /dev/null +++ b/blocks/CCPeripheral_generic_inventory/toolbox.xml @@ -0,0 +1,37 @@ + diff --git a/blocks/CCRednet/index.json b/blocks/CCRednet/index.json index 762d65b..0172f34 100644 --- a/blocks/CCRednet/index.json +++ b/blocks/CCRednet/index.json @@ -7,7 +7,7 @@ "keyword": "Rednet", "license": "GPL-3.0-or-later", "peripherals": true, - "library": true, + "library": false, "require_network": false, "dependencies": {}, "design_for_computer": { diff --git a/blocks/CCRedstone/index.json b/blocks/CCRedstone/index.json index ae02eba..6fbce12 100644 --- a/blocks/CCRedstone/index.json +++ b/blocks/CCRedstone/index.json @@ -7,7 +7,7 @@ "keyword": "Redstone", "license": "GPL-3.0-or-later", "peripherals": false, - "library": true, + "library": false, "require_network": false, "dependencies": {}, "design_for_computer": { diff --git a/blocks/CCSettings/index.json b/blocks/CCSettings/index.json index 12a9d27..656a11a 100644 --- a/blocks/CCSettings/index.json +++ b/blocks/CCSettings/index.json @@ -7,7 +7,7 @@ "keyword": "Env", "license": "GPL-3.0-or-later", "peripherals": false, - "library": true, + "library": false, "require_network": false, "dependencies": {}, "design_for_computer": { diff --git a/blocks/CCSystem/index.json b/blocks/CCSystem/index.json index 389626c..f7616d9 100644 --- a/blocks/CCSystem/index.json +++ b/blocks/CCSystem/index.json @@ -7,7 +7,7 @@ "keyword": "System, OS", "license": "GPL-3.0-or-later", "peripherals": false, - "library": true, + "library": false, "require_network": false, "dependencies": {}, "design_for_computer": { diff --git a/blocks/CCTextutils/index.json b/blocks/CCTextutils/index.json index 56ea0d9..9fc7d92 100644 --- a/blocks/CCTextutils/index.json +++ b/blocks/CCTextutils/index.json @@ -7,7 +7,7 @@ "keyword": "utils", "license": "GPL-3.0-or-later", "peripherals": false, - "library": true, + "library": false, "require_network": false, "dependencies": {}, "design_for_computer": { diff --git a/blocks/CCTurtle/index.json b/blocks/CCTurtle/index.json index 036e927..238f77c 100644 --- a/blocks/CCTurtle/index.json +++ b/blocks/CCTurtle/index.json @@ -7,7 +7,7 @@ "keyword": "turtle", "license": "GPL-3.0-or-later", "peripherals": false, - "library": true, + "library": false, "require_network": false, "dependencies": {}, "design_for_computer": { diff --git a/blocks/NativeIO/index.json b/blocks/NativeIO/index.json index 6496b73..89fce3a 100644 --- a/blocks/NativeIO/index.json +++ b/blocks/NativeIO/index.json @@ -7,7 +7,7 @@ "keyword": "Native, Lua, IO", "license": "GPL-3.0-or-later", "peripherals": false, - "library": true, + "library": false, "require_network": false, "dependencies": {}, "design_for_computer": { diff --git a/ccIDE Defines.xlsx b/ccIDE Defines.xlsx index 3e3602b036bf7800d81a7fafb4edddb62afb8c03..23276d2f1e1b0c9448934ccb7a7951926986b774 100644 GIT binary patch delta 29054 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

R=l5ohfdqG`#jKO%PPznI)>M+!4kiB8d{{uh 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 TO$&l5rnpR#L+OtFNB6$~-!EHw diff --git a/readme.md b/readme.md index f8cd562..d049b05 100644 --- a/readme.md +++ b/readme.md @@ -47,9 +47,13 @@ If error "Domain not permitted" try [this solution](https://github.com/cc-tweake | [Keys](https://tweaked.cc/module/keys.html) | 🟩 Supported all | [OS](https://tweaked.cc/module/os.html) (System) | 🟩 Supported all | [RedNet](https://tweaked.cc/module/rednet.html) | 🟩 Supported all -| [Redstone](https://tweaked.cc/module/redstone.html) | 🟩 Supported all | [Settings](https://tweaked.cc/module/settings.html) | 🟩 Supported all | [TextUtils](https://tweaked.cc/module/textutils.html) | 🟩 Supported all +| [Peripheral](https://tweaked.cc/module/peripheral.html) | 🟩 Supported all +| [Energy Storage Peripheral](https://tweaked.cc/generic_peripheral/energy_storage.html) | 🟩 Supported all +| [Fluid Storage Peripheral](https://tweaked.cc/generic_peripheral/fluid_storage.html) | 🟩 Supported all +| [Inventory](https://tweaked.cc/generic_peripheral/inventory.html) | 🟩 Supported all +| [Redstone](https://tweaked.cc/module/redstone.html) | 🟨 Partially Supported | [Colors](https://tweaked.cc/module/colors.html) | 🟨 Partially Supported | [Commands](https://tweaked.cc/module/commands.html) | 🟥 Unsupport | [FS](https://tweaked.cc/module/fs.html) | 🟥 Unsupport @@ -59,7 +63,6 @@ If error "Domain not permitted" try [this solution](https://github.com/cc-tweake | [Multishell](https://tweaked.cc/module/multishell.html) | 🟥 Unsupport | [PaintUtils](https://tweaked.cc/module/paintutils.html) | 🟥 Unsupport | [Parallel](https://tweaked.cc/module/parallel.html) | 🟥 Unsupport -| [Peripheral](https://tweaked.cc/module/peripheral.html) | 🟥 Unsupport | [Pocket](https://tweaked.cc/module/pocket.html) | 🟥 Unsupport | [Shell](https://tweaked.cc/module/shell.html) | 🟥 Unsupport | [Term](https://tweaked.cc/module/term.html) | 🟥 Unsupport @@ -81,17 +84,17 @@ If error "Domain not permitted" try [this solution](https://github.com/cc-tweake | [Monitor Peripheral](https://tweaked.cc/peripheral/monitor.html) | 🟥 Unsupport | [Printer Peripheral](https://tweaked.cc/peripheral/printer.html) | 🟥 Unsupport | [Speaker Peripheral](https://tweaked.cc/peripheral/speaker.html) | 🟥 Unsupport -| [Energy Storage Peripheral](https://tweaked.cc/generic_peripheral/energy_storage.html) | 🟥 Unsupport -| [Fluid Storage Peripheral](https://tweaked.cc/generic_peripheral/fluid_storage.html) | 🟥 Unsupport -| [Inventory](https://tweaked.cc/generic_peripheral/inventory.html) | 🟥 Unsupport Event: https://tweaked.cc/event/alarm.html ### Peripheral mods | Mod | Status |------------|-------- -|[Advanced Peripherals](https://www.curseforge.com/minecraft/mc-mods/advanced-peripherals) | 🟨 First support +|[Create Additions](https://www.curseforge.com/minecraft/mc-mods/createaddition) | 🟨 First support +|[Advanced Peripherals](https://www.curseforge.com/minecraft/mc-mods/advanced-peripherals) | 🟨 Second support +|[Create](https://www.curseforge.com/minecraft/mc-mods/create) | 🟨 Third support |[CC:C Bridge](https://www.curseforge.com/minecraft/mc-mods/cccbridge) | 🟥 Unsupport +|[Extreme Reactors](https://www.curseforge.com/minecraft/mc-mods/extreme-reactors) ([Command](https://ftbwiki.org/Reactor_Computer_Port)) | 🟥 Unsupport |[CC:Destroy Bridge](https://www.curseforge.com/minecraft/mc-mods/ccdbridge) | 🟥 Unsupport |[More Red x CC:Tweaked Compat](https://www.curseforge.com/minecraft/mc-mods/more-red-x-cc-tweaked-compat) | 🟥 Unsupport |[More Peripherals](https://www.curseforge.com/minecraft/mc-mods/more-peripherals) | 🟥 Unsupport