Add mods: technic, moreores, paintings, Nyancat (Pbj_pup). Small fix: sandwiches
This commit is contained in:
parent
15e8e696a2
commit
fb09deddc1
1404 changed files with 156555 additions and 211 deletions
203
mods/technic_plus_beta/technic_cnc/README.md
Normal file
203
mods/technic_plus_beta/technic_cnc/README.md
Normal file
|
@ -0,0 +1,203 @@
|
|||
Technic CNC
|
||||
-----------------
|
||||
|
||||
Provides CNC machines that allow cutting nodes to selected shapes.
|
||||
|
||||
[](https://github.com/mt-mods/technic/actions/workflows/luacheck.yml?query=branch%3Amaster)
|
||||
[](https://github.com/mt-mods/technic/actions/workflows/mineunit.yml?query=branch%3Amaster)
|
||||
[](https://github.com/mt-mods/technic/actions/workflows/mineunit.yml?query=branch%3Amaster+is%3Asuccess)
|
||||
|
||||
# Machines
|
||||
|
||||
### LV CNC Machine (technic:cnc)
|
||||
|
||||
* Manufactures different shapes from provided raw materials.
|
||||
* Manufactures products over time if technic is enabled.
|
||||
* Manufactures products immediately when selecting program if technic is not enabled.
|
||||
* 1 inventory slot for input materials, 4 inventory slots for products.
|
||||
|
||||
### LV CNC Machine Mk2 (technic:cnc_mk2)
|
||||
|
||||
* All features provided by technic:cnc
|
||||
* Only available if technic, digilines or pipeworks is available.
|
||||
* Has digiline API for programming, enabling, disabling, getting status and getting programs.
|
||||
* Can use technic upgrades for energy saving (RE battery), auto eject (CLU), and public use (chest).
|
||||
* Has support for pipeworks tubes for receiving raw materials or taking products using filter injectors.
|
||||
|
||||
# Configuration (minetest.conf)
|
||||
|
||||
| Configuration key | Default | Description
|
||||
|-----------------------------|-------------|--------------------------------------------------------------------------|
|
||||
| technic_cnc_use_technic | true | Use technic power networks and upgrades, machines require LV network |
|
||||
| technic_cnc_use_digilines | true | Use digilines to allow configuring machines using digiline messages |
|
||||
| technic_cnc_use_pipeworks | true | Use pipeworks for tube and injector support |
|
||||
|
||||
# Digilines (technic:cnc_mk2)
|
||||
|
||||
### Simple commands, type: string
|
||||
|
||||
| Command | Description
|
||||
|-------------------|--------------------------------------------------------------------------------------------------|
|
||||
| enable | Enables machines, machine will attempt manufacturing products if materials are available |
|
||||
| disable | Disables machines, machine will stop manufacturing and will not consume power |
|
||||
| programs | Machine will send table containing all possible programs as keys and product count as values |
|
||||
| status | Machine will send table with following keys: enabled, time, size, program, user, material |
|
||||
|
||||
Example reply for `programs` command:
|
||||
```lua
|
||||
{
|
||||
element_end = 2,
|
||||
slope_inner_edge = 1,
|
||||
twocurvededge = 1,
|
||||
cylinder = 2,
|
||||
stick = 8,
|
||||
spike = 1,
|
||||
element_cross = 1,
|
||||
slope_edge_upsdown = 1,
|
||||
cylinder_horizontal = 2,
|
||||
element_edge = 2,
|
||||
oblate_spheroid = 1,
|
||||
slope = 2,
|
||||
slope_lying = 2,
|
||||
slope_inner_edge_upsdown = 1,
|
||||
sphere = 1,
|
||||
element_straight = 2,
|
||||
slope_upsdown = 2,
|
||||
pyramid = 2,
|
||||
element_t = 1,
|
||||
onecurvededge = 1,
|
||||
slope_edge = 1
|
||||
}
|
||||
```
|
||||
|
||||
Example reply for `status` command:
|
||||
```lua
|
||||
{
|
||||
enabled = true,
|
||||
time = 2,
|
||||
user = "SX",
|
||||
material = {
|
||||
count = 98,
|
||||
name = "default:desert_sandstone",
|
||||
},
|
||||
program = "sphere",
|
||||
size = 2
|
||||
}
|
||||
```
|
||||
|
||||
### Complex commands, type: table
|
||||
|
||||
Command can contain any combination of keys and will affect only relevant parts of functionality.
|
||||
|
||||
Example with all possible keys set:
|
||||
|
||||
```lua
|
||||
{
|
||||
program = "sphere",
|
||||
size = 2,
|
||||
enabled = true
|
||||
}
|
||||
```
|
||||
|
||||
Value for `program` should be one of keys returned by simple command `programs`, it will change CNC program.
|
||||
|
||||
Value for `size` should be number `1` or `2`, other numbers or types are not acceppted. Sets size of programs that can
|
||||
produce both half and full sized nodes. `2` is for half size and `1` for full size products.
|
||||
|
||||
Value for `ènabled` should be `true` or `false`. Functions similar to simple string commands `enable` and `disable`.
|
||||
|
||||
Invalid values or value types are simply skipped and not used, check your value types
|
||||
and keys for typos if it seems that machine accepts commands only partially.
|
||||
|
||||
# Technic CNC API for extensions
|
||||
|
||||
API is incomplete, feel free to give suggestions for functionality or other feedback about CNC API.
|
||||
|
||||
### CNC material, program and product extension API:
|
||||
|
||||
*Currently undetermined / to be determined.*
|
||||
|
||||
### CNC machine control and manufacturing API:
|
||||
```lua
|
||||
-- Get product item string with count for given program, material and size
|
||||
-- Return value example: default:desert_sandstone_technic_cnc_stick 8
|
||||
function technic_cnc.get_product(program, material, size)
|
||||
|
||||
-- Set program for cnc machine with optional size, size is not changed if size is nil
|
||||
function technic_cnc.set_program(meta, program, size)
|
||||
|
||||
-- Returns true if CNC machine is enabled and false if machine is disabled
|
||||
function technic_cnc.is_enabled(meta) -- return true|false
|
||||
|
||||
-- Enables CNC machine
|
||||
function technic_cnc.enable(meta)
|
||||
|
||||
-- Disables CNC machine
|
||||
function technic_cnc.disable(meta)
|
||||
|
||||
-- Finds first input stack with items
|
||||
function technic_cnc.get_material(inventory)
|
||||
|
||||
-- Manufacture product based on current program.
|
||||
-- Updates src and dst inventories taking required amount from src inventory and placing products into dst inventory
|
||||
function technic_cnc.produce(meta, inventory)
|
||||
```
|
||||
|
||||
### Register new CNC machine defined by your mod:
|
||||
```lua
|
||||
-- Textures for machine
|
||||
local tiles = {
|
||||
"my_mod_my_cnc_machine_top.png",
|
||||
"my_mod_my_cnc_machine_bottom.png",
|
||||
"my_mod_my_cnc_machine_right.png",
|
||||
"my_mod_my_cnc_machine_left.png",
|
||||
"my_mod_my_cnc_machine_back.png",
|
||||
"my_mod_my_cnc_machine_front.png"
|
||||
}
|
||||
local tiles_active = {
|
||||
"my_mod_my_cnc_machine_top_active.png",
|
||||
"my_mod_my_cnc_machine_bottom_active.png",
|
||||
"my_mod_my_cnc_machine_right_active.png",
|
||||
"my_mod_my_cnc_machine_left_active.png",
|
||||
"my_mod_my_cnc_machine_back_active.png",
|
||||
"my_mod_my_cnc_machine_front_active.png"
|
||||
}
|
||||
|
||||
--
|
||||
-- Add pipeworks tube connection with overlay textures if pipeworks is available for CNC machines
|
||||
--
|
||||
local tube_def = nil
|
||||
if technic_cnc.pipeworks then
|
||||
tiles = technic_cnc.pipeworks.tube_entry_overlay(tiles)
|
||||
tiles_active = technic_cnc.pipeworks.tube_entry_overlay(tiles_active)
|
||||
tube_def = technic_cnc.pipeworks.new_tube()
|
||||
end
|
||||
|
||||
--
|
||||
-- Default values provided with example machine registration below.
|
||||
--
|
||||
-- Required definition keys that do not have default value:
|
||||
-- description, programs, demand
|
||||
-- Optional definition keys that do not have default value:
|
||||
-- recipe, upgrade, digilines, tube
|
||||
--
|
||||
technic_cnc.register_cnc_machine("my_mod_name:my_cnc_machine", {
|
||||
description = "My Mod - My CNC Machine",
|
||||
input_size = 1,
|
||||
output_size = 4,
|
||||
digilines = technic_cnc.digilines,
|
||||
upgrade = true,
|
||||
tube = tube_def,
|
||||
programs = { "sphere", "spike", "stick", "slope" },
|
||||
demand = 539,
|
||||
get_formspec = technic_cnc.formspec.get_formspec,
|
||||
on_receive_fields = technic_cnc.formspec.on_receive_fields,
|
||||
recipe = {
|
||||
{'default:glass', 'default:glass', 'default:glass'},
|
||||
{'default:steelblock', 'default:diamond', 'default:steelblock'},
|
||||
{'default:steelblock', '', 'default:steelblock'},
|
||||
},
|
||||
tiles = tiles,
|
||||
tiles_active = tiles_active,
|
||||
})
|
||||
```
|
Loading…
Add table
Add a link
Reference in a new issue