# Stubes

~~An attempt to be Luanti's best item transport.~~

After 2 months: Turns out, perfectionism is how you kill a project. Some non-trivial visual bugs whose solutions sound more like leetcode problems are okay.

An attempt to be a decent solution to transportation of ItemStacks in Luanti.

**I encourage you to fork (or even contribute to) this project and make a more generic version not limited to ItemStacks, and make it better**


I am using 32x32 textures for the tubes, because i could not fit a recognizable arrow into a 32x32 texture without making the node bigger.
I am also doing the textures in the style of Skyblock Zero. PRs for textures for other games are welcome.

This mod was inspired by the [Pipeworks Luanti mod](http://github.com/mt-mods/pipeworks) and by the [Mindustry game](https://github.com/Anuken/Mindustry).

## Terminology
In-game, Stubes should refer to themselves as just item tubes, but in code/comparisons they should be referred to as stubes to distinguish them from other implementations of item tubes.

## Compatibility
STubes **don't** implement their own way of letting nodes accept stube tubed items.  
The preffered way for a node to accept STube tubed items is using pipeworks, but there will be other ways in the future.

| Name            | Status            | Notes                                                                                      |
| --------------- | ----------------- | ------------------------------------------------------------------------------------------ |
| **Pipeworks**   | Fully compatible  | Recommended way to make receivers for STubes. Even supports item input to pipeworks tubes. |
| Tubelib         | Not compatible    | PRs welcome! Although i am unsure if there is demand.                                      |
| Others?         | Not compatible    | Let me know if there is anything else worth adding to this table                           |

This library has an API that should make it easy for other mods to be compatible with it. 

### MAJOR BREAKING CHANGES ARE CURRENTLY WELCOME

If you think there will be no need for those, make an issue.

## Performance
- Tubed item visuals which aren't near the player aren't shown (so that gets rid of the need to perform costly `move_to` calls)
- It should be able to handle 10 000 item stacks easily
- `should be more than pipeworks i hope`

# Todo
- [ ] - Detailed API documentation with examples
- [ ] - Less confusing player take/put interface to tubes (rightclick to take away and shift+punch with item to put is very confusing)
- [ ] - Fully working tube devices
  - [ ] - Junctions
  - [ ] - Overflow Gates
  - [ ] - Underflow Gates
  - [ ] - Sorters
  - [ ] - Inverted Sorters
  - [ ] - 4D bridges
- [ ] - Mesecons/digilines support (if on mesecons/digilines)
- [ ] - Seperate things *properly* into files, make it easy to tell which function is where
- [ ] - Get feedback on code and make it more readable

## License
Code - MIT - (C) stube contributors (Copyright information might change to be more detailed, currently it's just me frog contributing to this)

Media - CC BY 4.0 frogTheSecond (Currently everything made by me)

