Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[suggestion] Digiline docs #132

Open
TheEt1234 opened this issue Aug 11, 2024 · 5 comments
Open

[suggestion] Digiline docs #132

TheEt1234 opened this issue Aug 11, 2024 · 5 comments
Labels
documentation Improvements or additions to documentation

Comments

@TheEt1234
Copy link

There doesn't seem to be any mention of digilines in the wiki, so if players want to use the digilines features they need to dig thru pipeworks source code which is inconvenient

(Also, maybe its worth simplifying the pipeworks code by using connected nodeboxes? I don't know if this would work because pipeworks tubes are transparent, but it's what technic does and would allow a pipeworks tube to use 1 node instead of 10 - https://api.minetest.net/nodes/#node-boxes, and while at it, automatically generate the noctr and ends textures)

@wsor4035
Copy link
Contributor

feel free to suggest some documentation for the wiki. not sure how people without access are supposed to contribute to a wiki on github 🤔. worse case post it here and a can control c/v it over

@SwissalpS SwissalpS added the documentation Improvements or additions to documentation label Aug 11, 2024
@TheEt1234
Copy link
Author

TheEt1234 commented Aug 12, 2024

ok im kinda bad at writing but i think its still way better than having no docs

Digilines

  • note: pipeworks doesn't have limits on how fast you can send messages to its nodes, but you should still be careful sending hundreds of digiline messages per second to a pipeworks node, do it only for a short time

Deployer, Dispenser, Node breaker

  • sending "activate" to their channels will activate them
  • sending "activate<slot>" (for example "activate1") will activate on the slot specified
  • same can be achieved in table form {command="activate",slot=1} or {command="activate"}
  • there are no limits on how many messages you can send per second

Teleporting Pneumatic Tube Segment

  • sending a string to its digiline channel will set the teleport tube's teleport channel to the string (example: "foo" will make the teleport channel be foo)
  • sending a table to it with the format {channel = "any string", can_receive=true/false} will set the channel and the receive toggle (both channel and can_receive are optional)

Autocrafter

  • sending the string "get_recipe" will make the autocrafter send a table like this:
{
    recipe = <the recipe>, -- a nested table
    result = {
          name = <the name of the craft output...>
          count = <the amount>
    }
}
  • sending the string "on" will turn the autocrafter on, sending "off" will turn the autocrafter off

  • sending "single" will make the autocrafter make a single craft, note: there is no limit as to how fast you can send this

  • sending a nested table with 3 rows/collumns in the format of what was returned by "get_recipe" will set the autocrafter's recipe to that

Digiline Detecting Pneumatic Tube Segment

  • if an item goes through it it will send the itemstack (in a table form)

Digiline Filter-Injector

  • if you send it an itemstring (like "default:dirt 99") it will send 99 dirt
  • if you send it a table.... well.... ummm....
{
   sloteq = "priority", -- can be "priority", "random", or "rotation"
   exmatch = true, -- a boolean, turns off/on exact matching
   sloteq_index = 1, -- can only be 1 or nil, setting it to 1 will reset the sloteq_index
   tag = "any tag",
   tags = {"a","b"}, -- sets the item tag filter to that, the tags field takes priority over the tag field
   nofire = "not nil", -- if this is any value other than nil or false, it won't fire
   -- all of theese are filters:
   name = "default:dirt",
   group = "soil",
   count = 99,
   wear = 0,
   metadata = {},
   
   -- this is also a way to make multiple filters
   -- if the fields name/group/count/wear/metadata are present theese will be ignored
   [1] = {
      name = "default:dirt",
      group = "soil",
      count = 99,
      wear = 0,
      metadata = {},
   },
   [2] = ...
}

example usage:

pushing out 99 dirt:

{
  name = "default:dirt",
  count = 99
}

pushing out 99 of anything:

{count = 99}

@OgelGames
Copy link
Contributor

Related: #104

@TheEt1234
Copy link
Author

TheEt1234 commented Aug 12, 2024

oh, @OgelGames maybe it's a good idea to make a library for it (like a magic book, when you click on a machine with it, it would show the docs, and the library would convert markdown files(?) - or wait there is doclib, maybe that could be used) as this is a problem that many mods have

@S-S-X
Copy link
Member

S-S-X commented Aug 12, 2024

maybe it's a good idea to make a library for it (like a magic book, when you click on a machine with it, it would show the docs, and the library would convert markdown files(?) - or wait there is doclib, maybe that could be used) as this is a problem that many mods have

Also best to check out existing solutions and see what's wrong with those because attempt to solve this would not be first time and probably not even second time. See doc mod for one.

Furthermore I've looked at this a bit few years ago and actually even logged issue with some notes for it: S-S-X/metatool#85

I've not really worked on this issue, just sharing some research.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation Improvements or additions to documentation
Projects
None yet
Development

No branches or pull requests

5 participants