Add craftguide mod
12
mods/craftguide/.luacheckrc
Normal file
|
@ -0,0 +1,12 @@
|
|||
unused_args = false
|
||||
allow_defined_top = true
|
||||
|
||||
read_globals = {
|
||||
"minetest",
|
||||
"default",
|
||||
"sfinv",
|
||||
"sfinv_buttons",
|
||||
"vector",
|
||||
"string",
|
||||
"table",
|
||||
}
|
182
mods/craftguide/API.md
Normal file
|
@ -0,0 +1,182 @@
|
|||
## API
|
||||
|
||||
### Custom recipes
|
||||
|
||||
#### Registering a custom crafting type (example)
|
||||
|
||||
```Lua
|
||||
craftguide.register_craft_type("digging", {
|
||||
description = "Digging",
|
||||
icon = "default_tool_steelpick.png",
|
||||
})
|
||||
```
|
||||
|
||||
#### Registering a custom crafting recipe (example)
|
||||
|
||||
```Lua
|
||||
craftguide.register_craft({
|
||||
type = "digging",
|
||||
width = 1,
|
||||
output = "default:cobble 2",
|
||||
items = {"default:stone"},
|
||||
})
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Recipe filters
|
||||
|
||||
Recipe filters can be used to filter the recipes shown to players. Progressive
|
||||
mode is implemented as a recipe filter.
|
||||
|
||||
#### `craftguide.add_recipe_filter(name, function(recipes, player))`
|
||||
|
||||
Adds a recipe filter with the given name. The filter function should return the
|
||||
recipes to be displayed, given the available recipes and an `ObjectRef` to the
|
||||
user. Each recipe is a table of the form returned by
|
||||
`minetest.get_craft_recipe`.
|
||||
|
||||
Example function to hide recipes for items from a mod called "secretstuff":
|
||||
|
||||
```lua
|
||||
craftguide.add_recipe_filter("Hide secretstuff", function(recipes)
|
||||
local filtered = {}
|
||||
for _, recipe in ipairs(recipes) do
|
||||
if recipe.output:sub(1,12) ~= "secretstuff:" then
|
||||
filtered[#filtered + 1] = recipe
|
||||
end
|
||||
end
|
||||
|
||||
return filtered
|
||||
end)
|
||||
```
|
||||
|
||||
#### `craftguide.remove_recipe_filter(name)`
|
||||
|
||||
Removes the recipe filter with the given name.
|
||||
|
||||
#### `craftguide.set_recipe_filter(name, function(recipe, player))`
|
||||
|
||||
Removes all recipe filters and adds a new one.
|
||||
|
||||
#### `craftguide.get_recipe_filters()`
|
||||
|
||||
Returns a map of recipe filters, indexed by name.
|
||||
|
||||
---
|
||||
|
||||
### Search filters
|
||||
|
||||
Search filters are used to perform specific searches inside the search field.
|
||||
They can be used like so: `<optional name>+<filter name>=<value1>,<value2>,<...>`
|
||||
|
||||
Examples:
|
||||
|
||||
- `+groups=cracky,crumbly`: search for groups `cracky` and `crumbly` in all items.
|
||||
- `sand+groups=falling_node`: search for group `falling_node` for items which contain `sand` in their names.
|
||||
|
||||
Notes:
|
||||
- If `optional name` is omitted, the search filter will apply to all items, without pre-filtering.
|
||||
- Filters can be combined.
|
||||
- The `groups` filter is currently implemented by default.
|
||||
|
||||
#### `craftguide.add_search_filter(name, function(item, values))`
|
||||
|
||||
Adds a search filter with the given name.
|
||||
The search function should return a boolean value (whether the given item should be listed or not).
|
||||
|
||||
Example function to show items which contain at least a recipe of given width(s):
|
||||
|
||||
```lua
|
||||
craftguide.add_search_filter("widths", function(item, widths)
|
||||
local has_width
|
||||
local recipes = recipes_cache[item]
|
||||
|
||||
if recipes then
|
||||
for i = 1, #recipes do
|
||||
local recipe_width = recipes[i].width
|
||||
for j = 1, #widths do
|
||||
local width = tonumber(widths[j])
|
||||
if width == recipe_width then
|
||||
has_width = true
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
return has_width
|
||||
end)
|
||||
```
|
||||
|
||||
#### `craftguide.remove_search_filter(name)`
|
||||
|
||||
Removes the search filter with the given name.
|
||||
|
||||
#### `craftguide.get_search_filters()`
|
||||
|
||||
Returns a map of search filters, indexed by name.
|
||||
|
||||
---
|
||||
|
||||
### Custom formspec elements
|
||||
|
||||
#### `craftguide.add_formspec_element(name, def)`
|
||||
|
||||
Adds a formspec element to the current formspec.
|
||||
Supported types: `box`, `label`, `image`, `button`, `tooltip`, `item_image`, `image_button`, `item_image_button`
|
||||
|
||||
Example:
|
||||
|
||||
```lua
|
||||
craftguide.add_formspec_element("export", {
|
||||
type = "button",
|
||||
element = function(data)
|
||||
-- Should return a table of parameters according to the formspec element type.
|
||||
-- Note: for all buttons, the 'name' parameter *must not* be specified!
|
||||
if data.recipes then
|
||||
return {
|
||||
data.iX - 3.7, -- X
|
||||
sfinv_only and 7.9 or 8, -- Y
|
||||
1.6, -- W
|
||||
1, -- H
|
||||
ESC(S("Export")) -- label
|
||||
}
|
||||
end
|
||||
end,
|
||||
-- Optional.
|
||||
action = function(player, data)
|
||||
-- When the button is pressed.
|
||||
print("Exported!")
|
||||
end
|
||||
})
|
||||
```
|
||||
|
||||
#### `craftguide.remove_formspec_element(name)`
|
||||
|
||||
Removes the formspec element with the given name.
|
||||
|
||||
#### `craftguide.get_formspec_elements()`
|
||||
|
||||
Returns a map of formspec elements, indexed by name.
|
||||
|
||||
---
|
||||
|
||||
### Miscellaneous
|
||||
|
||||
#### `craftguide.show(player_name, item, show_usages)`
|
||||
|
||||
Opens the Crafting Guide with the current filter applied.
|
||||
|
||||
* `player_name`: string param.
|
||||
* `item`: optional, string param. If set, this item is pre-selected. If the item does not exist or has no recipe, use the player's previous selection. By default, player's previous selection is used
|
||||
* `show_usages`: optional, boolean param. If true, show item usages.
|
||||
|
||||
#### `craftguide.group_stereotypes`
|
||||
|
||||
This is the table indexing the item groups by stereotypes.
|
||||
You can add a stereotype like so:
|
||||
|
||||
```Lua
|
||||
craftguide.group_stereotypes.radioactive = "mod:item"
|
||||
```
|
21
mods/craftguide/README.md
Normal file
|
@ -0,0 +1,21 @@
|
|||
#  Crafting Guide
|
||||
|
||||
#### `craftguide` is the most comprehensive crafting guide on Minetest.
|
||||
#### Consult the [Minetest Wiki](http://wiki.minetest.net/Crafting_guide) for more details.
|
||||
|
||||
This crafting guide is a blue book named *"Crafting Guide"* or a wooden sign.
|
||||
|
||||
This crafting guide features a **progressive mode**.
|
||||
The progressive mode is a Terraria-like system that shows recipes you can craft
|
||||
from items you ever had in your inventory. To enable it: `craftguide_progressive_mode = true` in `minetest.conf`.
|
||||
|
||||
`craftguide` is also integrated in `sfinv` (Minetest Game inventory). To enable it:
|
||||
`craftguide_sfinv_only = true` in `minetest.conf`.
|
||||
|
||||
Use the command `/craft` to show the recipe(s) of the pointed node.
|
||||
|
||||
For developers, `craftguide` also has a [modding API](https://github.com/minetest-mods/craftguide/blob/master/API.md).
|
||||
|
||||
|
||||

|
||||
|
2
mods/craftguide/depends.txt
Normal file
|
@ -0,0 +1,2 @@
|
|||
sfinv?
|
||||
sfinv_buttons?
|
2
mods/craftguide/description.txt
Normal file
|
@ -0,0 +1,2 @@
|
|||
The most comprehensive Crafting Guide
|
||||
on Minetest.
|
1266
mods/craftguide/init.lua
Normal file
58
mods/craftguide/license.txt
Normal file
|
@ -0,0 +1,58 @@
|
|||
License of source code
|
||||
----------------------
|
||||
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2015-2019 Jean-Patrick Guerrero and contributors.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
|
||||
|
||||
Licenses of media (textures)
|
||||
----------------------------
|
||||
|
||||
Copyright © Diego Martínez (kaeza): craftguide_*_icon.png (CC BY-SA 3.0)
|
||||
|
||||
You are free to:
|
||||
Share — copy and redistribute the material in any medium or format.
|
||||
Adapt — remix, transform, and build upon the material for any purpose, even commercially.
|
||||
The licensor cannot revoke these freedoms as long as you follow the license terms.
|
||||
|
||||
Under the following terms:
|
||||
|
||||
Attribution — You must give appropriate credit, provide a link to the license, and
|
||||
indicate if changes were made. You may do so in any reasonable manner, but not in any way
|
||||
that suggests the licensor endorses you or your use.
|
||||
|
||||
ShareAlike — If you remix, transform, or build upon the material, you must distribute
|
||||
your contributions under the same license as the original.
|
||||
|
||||
No additional restrictions — You may not apply legal terms or technological measures that
|
||||
legally restrict others from doing anything the license permits.
|
||||
|
||||
Notices:
|
||||
|
||||
You do not have to comply with the license for elements of the material in the public
|
||||
domain or where your use is permitted by an applicable exception or limitation.
|
||||
No warranties are given. The license may not give you all of the permissions necessary
|
||||
for your intended use. For example, other rights such as publicity, privacy, or moral
|
||||
rights may limit how you use the material.
|
||||
|
||||
For more details:
|
||||
http://creativecommons.org/licenses/by-sa/3.0/
|
25
mods/craftguide/locale/craftguide.de.tr
Normal file
|
@ -0,0 +1,25 @@
|
|||
# textdomain: craftguide
|
||||
|
||||
Craft Guide=Rezeptbuch
|
||||
Crafting Guide=Rezeptbuch
|
||||
Crafting Guide Sign=Rezepttafel
|
||||
Search=Suche
|
||||
Reset=Zurücksetzen
|
||||
Previous page=Vorherige Seite
|
||||
Next page=Nächste Seite
|
||||
Usage @1 of @2=Verwendung @1 von @2
|
||||
Recipe @1 of @2=Rezept @1 von @2
|
||||
Burning time: @1=Brennzeit: @1
|
||||
Cooking time: @1=Kochzeit: @1
|
||||
Any item belonging to the group(s): @1=Beliebiger Gegenstand aus Gruppe(n): @1
|
||||
Recipe is too big to be displayed (@1x@2)=Rezept ist zu groß für die Anzeige (@1×@2)
|
||||
Shapeless=Formlos
|
||||
Cooking=Kochen
|
||||
Increase window size=Fenster vergrößern
|
||||
Decrease window size=Fenster verkleinern
|
||||
No item to show=Nichts anzuzeigen
|
||||
Collect items to reveal more recipes=Gegenstände aufsammeln, um mehr Rezepte aufzudecken
|
||||
Show recipe(s) of the pointed node=Rezept(e) des gezeigten Blocks anzeigen
|
||||
No node pointed=Auf keinen Block gezeigt
|
||||
You don't know a recipe for this node=Sie kennen kein Rezept für diesen Block
|
||||
No recipe for this node=Kein Rezept für diesen Block
|
24
mods/craftguide/locale/craftguide.fr.tr
Normal file
|
@ -0,0 +1,24 @@
|
|||
# textdomain: craftguide
|
||||
|
||||
Craft Guide=Guide de recettes
|
||||
Crafting Guide=Guide de recettes
|
||||
Search=Rechercher
|
||||
Reset=Réinitialiser
|
||||
Previous page=Page précédente
|
||||
Next page=Page suivante
|
||||
Usage @1 of @2=Usage @1 de @2
|
||||
Recipe @1 of @2=Recette @1 de @2
|
||||
Burning time: @1=Temps de combustion : @1
|
||||
Cooking time: @1=Temps de cuisson : @1
|
||||
Any item belonging to the group(s): @1=Tout item appartenant au(x) groupe(s) : @1
|
||||
Recipe is too big to be displayed (@1x@2)=La recette est trop grande pour être affichée (@1x@2)
|
||||
Shapeless=Sans forme
|
||||
Cooking=Cuisson
|
||||
Increase window size=Agrandir la fenêtre
|
||||
Decrease window size=Réduire la fenêtre
|
||||
No item to show=Aucun item à afficher
|
||||
Collect items to reveal more recipes=Collecte des items pour révéler plus de recettes
|
||||
Show recipe(s) of the pointed node=Affiche les recettes du bloc visé
|
||||
No node pointed=Aucun bloc visé
|
||||
You don't know a recipe for this node=Tu ne connais aucune recette pour ce bloc
|
||||
No recipe for this node=Aucune recette pour ce bloc
|
25
mods/craftguide/locale/craftguide.ru.tr
Normal file
|
@ -0,0 +1,25 @@
|
|||
# textdomain: craftguide
|
||||
|
||||
Craft Guide=книга рецептов крафта
|
||||
Crafting Guide=книга рецептов крафта
|
||||
Crafting Guide Sign=Знак с книгой рецептов
|
||||
Search=Поиск
|
||||
Reset=Сброс
|
||||
Previous page=Предыдущая страница
|
||||
Next page=Следущая страница
|
||||
Usage @1 of @2=использование @1 из @2
|
||||
Recipe @1 of @2=Рецепт @1 из @2
|
||||
Burning time: @1=Время горения: @1
|
||||
Cooking time: @1=Время преготовления: @1
|
||||
Any item belonging to the group(s): @1=Любой элемент из группы: @1
|
||||
Recipe is too big to be displayed (@1x@2)=Рецепт слишком большой для показа (@1x@2)
|
||||
Shapeless=Бесформенный
|
||||
Cooking=Приготовление
|
||||
Increase window size=Увеличить окно
|
||||
Decrease window size=Уменьшить окно
|
||||
No item to show=Нет элемента для показа
|
||||
Collect items to reveal more recipes=Собирайте предметы, чтобы раскрыть больше рецептов
|
||||
Show recipe(s) of the pointed node=Показать рецепт(ы) выбранной ноды
|
||||
No node pointed=Не указана нода
|
||||
You don't know a recipe for this node=Вы не знаете рецепт для этой ноды
|
||||
No recipe for this node=Нет рецептов для этой ноды
|
25
mods/craftguide/locale/template
Normal file
|
@ -0,0 +1,25 @@
|
|||
# textdomain: craftguide
|
||||
|
||||
Craft Guide=
|
||||
Crafting Guide=
|
||||
Crafting Guide Sign=
|
||||
Search=
|
||||
Reset=
|
||||
Previous page=
|
||||
Next page=
|
||||
Usage @1 of @2=
|
||||
Recipe @1 of @2=
|
||||
Burning time: @1=
|
||||
Cooking time: @1=
|
||||
Any item belonging to the group(s): @1=
|
||||
Recipe is too big to be displayed (@1x@2)=
|
||||
Shapeless=
|
||||
Cooking=
|
||||
Increase window size=
|
||||
Decrease window size=
|
||||
No item to show=
|
||||
Collect items to reveal more recipes=
|
||||
Show recipe(s) of the pointed node=
|
||||
No node pointed=
|
||||
You don't know a recipe for this node=
|
||||
No recipe for this node=
|
1
mods/craftguide/mod.conf
Normal file
|
@ -0,0 +1 @@
|
|||
name = craftguide
|
BIN
mods/craftguide/screenshot.png
Normal file
After Width: | Height: | Size: 35 KiB |
2
mods/craftguide/settingtypes.txt
Normal file
|
@ -0,0 +1,2 @@
|
|||
# The progressive mode shows recipes you can craft from items you ever had in your inventory.
|
||||
craftguide_progressive_mode (Progressive Mode) bool false
|
BIN
mods/craftguide/textures/craftguide_arrow.png
Normal file
After Width: | Height: | Size: 230 B |
BIN
mods/craftguide/textures/craftguide_bg.png
Normal file
After Width: | Height: | Size: 169 B |
BIN
mods/craftguide/textures/craftguide_book.png
Normal file
After Width: | Height: | Size: 3.1 KiB |
BIN
mods/craftguide/textures/craftguide_clear_icon.png
Normal file
After Width: | Height: | Size: 708 B |
BIN
mods/craftguide/textures/craftguide_fire.png
Normal file
After Width: | Height: | Size: 3.1 KiB |
BIN
mods/craftguide/textures/craftguide_furnace.png
Normal file
After Width: | Height: | Size: 3.3 KiB |
BIN
mods/craftguide/textures/craftguide_next_icon.png
Normal file
After Width: | Height: | Size: 727 B |
BIN
mods/craftguide/textures/craftguide_prev_icon.png
Normal file
After Width: | Height: | Size: 728 B |
BIN
mods/craftguide/textures/craftguide_search_icon.png
Normal file
After Width: | Height: | Size: 1.9 KiB |
BIN
mods/craftguide/textures/craftguide_shapeless.png
Normal file
After Width: | Height: | Size: 305 B |
BIN
mods/craftguide/textures/craftguide_sign.png
Normal file
After Width: | Height: | Size: 685 B |
BIN
mods/craftguide/textures/craftguide_sign_inv.png
Normal file
After Width: | Height: | Size: 685 B |
BIN
mods/craftguide/textures/craftguide_zoomin_icon.png
Normal file
After Width: | Height: | Size: 3.5 KiB |
BIN
mods/craftguide/textures/craftguide_zoomout_icon.png
Normal file
After Width: | Height: | Size: 2.9 KiB |