Drop support for WorldEdit eventually
This commit is contained in:
parent
e2102f1069
commit
3dc8e038f3
|
@ -10,7 +10,6 @@ read_globals = {
|
|||
"armor",
|
||||
"skins",
|
||||
"awards",
|
||||
"worldedit",
|
||||
"vector",
|
||||
"string",
|
||||
"table",
|
||||
|
|
8
API.md
8
API.md
|
@ -39,15 +39,19 @@ i3.new_tab {
|
|||
- `player` is an `ObjectRef` to the user.
|
||||
- `data` are the user data.
|
||||
- `fs` is the formspec table which is callable with a metamethod. Each call adds a new entry.
|
||||
- `i3.set_fs(player)` must be called to update the formspec.
|
||||
|
||||
#### `i3.set_fs(player[, extra_formspec])`
|
||||
|
||||
Updates the current formspec. `extra_formspec` adds an additional formspec string.
|
||||
|
||||
#### `i3.delete_tab(tabname)`
|
||||
|
||||
Deletes a tab by name.
|
||||
|
||||
#### `i3.set_tab(player, tabname)`
|
||||
#### `i3.set_tab(player[, tabname])`
|
||||
|
||||
Sets the current tab by name. `player` is an `ObjectRef` to the user.
|
||||
`tabname` can be omitted to get an empty tab.
|
||||
|
||||
#### `i3.override_tab(tabname, def)`
|
||||
|
||||
|
|
|
@ -26,8 +26,6 @@ To enable it: `i3_progressive_mode = true` in `minetest.conf`.*
|
|||
- [**`3d_armor`**](https://content.minetest.net/packages/stu/3d_armor/)
|
||||
- [**`skinsdb`**](https://content.minetest.net/packages/bell07/skinsdb/)
|
||||
- [**`awards`**](https://content.minetest.net/packages/rubenwardy/awards/)
|
||||
- [**`worldedit`**](https://content.minetest.net/packages/sfan5/worldedit/)
|
||||
|
||||
|
||||
#### Recommendations
|
||||
|
||||
|
|
83
init.lua
83
init.lua
|
@ -92,8 +92,8 @@ local META_SAVES = {"bag_size", "skin_id"}
|
|||
|
||||
local BAG_SIZES = {
|
||||
small = INV_SIZE + 3,
|
||||
medium = INV_SIZE + 9,
|
||||
large = INV_SIZE + 21,
|
||||
medium = INV_SIZE + 6,
|
||||
large = INV_SIZE + 9,
|
||||
}
|
||||
|
||||
local PNG = {
|
||||
|
@ -2022,7 +2022,7 @@ local function make_fs(player, data)
|
|||
local full_height = LINES + 1.73
|
||||
|
||||
local tab = tabs[data.current_tab]
|
||||
local hide_panels = tab.hide_panels and tab.hide_panels(player, data)
|
||||
local hide_panels = tab and tab.hide_panels and tab.hide_panels(player, data)
|
||||
local show_panels = data.query_item and not hide_panels
|
||||
|
||||
fs(fmt("formspec_version[%u]size[%f,%f]no_prepend[]bgcolor[#0000]",
|
||||
|
@ -2046,12 +2046,12 @@ local function make_fs(player, data)
|
|||
return concat(fs)
|
||||
end
|
||||
|
||||
function i3.set_fs(player)
|
||||
function i3.set_fs(player, _fs)
|
||||
local name = player:get_player_name()
|
||||
local data = pdata[name]
|
||||
if not data then return end
|
||||
|
||||
local fs = make_fs(player, data)
|
||||
local fs = fmt("%s%s", make_fs(player, data), _fs or "")
|
||||
player:set_inventory_formspec(fs)
|
||||
end
|
||||
|
||||
|
@ -2094,12 +2094,14 @@ function i3.delete_tab(tabname)
|
|||
end
|
||||
|
||||
function i3.set_tab(player, tabname)
|
||||
if not true_str(tabname) then
|
||||
return err "i3.set_tab: tab name missing"
|
||||
end
|
||||
|
||||
local name = player:get_player_name()
|
||||
local data = pdata[name]
|
||||
|
||||
if not tabname or tabname == "" then
|
||||
data.current_tab = 0
|
||||
return
|
||||
end
|
||||
|
||||
local found
|
||||
|
||||
for i, def in ipairs(tabs) do
|
||||
|
@ -2231,14 +2233,14 @@ local function panel_fields(player, data, fields)
|
|||
end
|
||||
|
||||
local function get_inv_slots(data, fs)
|
||||
local inv_x, inv_y = 0.234, 6.6
|
||||
local width, size, spacing, extra = HOTBAR_COUNT, 0.96, 0.15, 0
|
||||
local inv_x, inv_y = 0.22, 6.6
|
||||
local width, size, spacing = HOTBAR_COUNT, 1, 0.1
|
||||
local bag = data.bag_size
|
||||
|
||||
fs("style_type[box;colors=#77777710,#77777710,#777,#777]")
|
||||
|
||||
for i = 0, HOTBAR_COUNT - 1 do
|
||||
fs(fmt("box", i + inv_x + (i * 0.1), inv_y, size, size, ""))
|
||||
fs(fmt("box", i * size + inv_x + (i * spacing), inv_y, size, size, ""))
|
||||
end
|
||||
|
||||
fs(fmt("style_type[list;size=%f;spacing=%f]", size, spacing),
|
||||
|
@ -2246,16 +2248,16 @@ local function get_inv_slots(data, fs)
|
|||
|
||||
if bag then
|
||||
if bag == "small" then
|
||||
width, size, spacing, extra = 10, 0.89, 0.1, 0.01
|
||||
width, size = 10, 0.892
|
||||
elseif bag == "medium" then
|
||||
width, size, spacing, extra = 12, 0.72, 0.1, 0.032
|
||||
width, size = 11, 0.8
|
||||
elseif bag == "large" then
|
||||
width, size, spacing, extra = 12, 0.72, 0.1, 0.032
|
||||
width, size = 12, 0.726
|
||||
end
|
||||
end
|
||||
|
||||
fs(fmt("style_type[list;size=%f;spacing=%f]", size, spacing),
|
||||
fmt("list[current_player;main;%f,%f;%u,%u;%u]", inv_x + extra, inv_y + 1.15,
|
||||
fmt("list[current_player;main;%f,%f;%u,%u;%u]", inv_x, inv_y + 1.15,
|
||||
width, (bag and BAG_SIZES[data.bag_size] or INV_SIZE) / width, HOTBAR_COUNT),
|
||||
"style_type[list;size=1;spacing=0.15]")
|
||||
end
|
||||
|
@ -2318,7 +2320,7 @@ local function get_inventory_fs(player, data, fs)
|
|||
scrollbar[%f,0.2;0.2,%f;vertical;scrbar_inv;%u]
|
||||
scrollbaroptions[arrows=default;thumbsize=0;max=1000]
|
||||
]],
|
||||
(max_val * 4) / 15, max_val, 9.79, ctn_hgt, data.scrbar_inv or 0))
|
||||
(max_val * 4) / 15, max_val, 9.8, ctn_hgt, data.scrbar_inv or 0))
|
||||
|
||||
fs(fmt("scroll_container[3.9,0.2;%f,%f;scrbar_inv;vertical]", ctn_len, ctn_hgt))
|
||||
|
||||
|
@ -2527,53 +2529,6 @@ if rawget(_G, "skins") then
|
|||
insert(META_SAVES, "skin_id")
|
||||
end
|
||||
|
||||
if rawget(_G, "worldedit") then
|
||||
i3.new_tab {
|
||||
name = "worldedit",
|
||||
description = "WorldEdit",
|
||||
|
||||
access = function(player)
|
||||
local name = player:get_player_name()
|
||||
return worldedit.pages and check_privs(name, {server = true})
|
||||
end,
|
||||
|
||||
formspec = function(player, _, fs)
|
||||
local name = player:get_player_name()
|
||||
local wfs = split(worldedit.pages.worldedit_gui.get_formspec(name), "]")
|
||||
local new_fs = {}
|
||||
|
||||
for i = 3, 1, -1 do
|
||||
remove(wfs, i)
|
||||
end
|
||||
|
||||
for i, elem in ipairs(wfs) do
|
||||
local ename, field, str = match(elem, "(.*)%[.*%d+;(.*);(.*)$")
|
||||
local X, Y = i % 3, 0
|
||||
|
||||
if X == 2 then
|
||||
Y = 1
|
||||
end
|
||||
|
||||
X = X + (X * 2.1) + 0.5
|
||||
Y = floor((i % #wfs - X) / 3) + 3 + Y
|
||||
|
||||
insert(new_fs, fmt("%s[%f,%f;3,0.8;%s;%s]",
|
||||
ename, X, Y, field, str:gsub("/", " / ")))
|
||||
end
|
||||
|
||||
fs(concat(new_fs))
|
||||
end,
|
||||
|
||||
fields = function(player)
|
||||
i3.set_fs(player)
|
||||
end,
|
||||
|
||||
hide_panels = function()
|
||||
return true
|
||||
end,
|
||||
}
|
||||
end
|
||||
|
||||
if rawget(_G, "awards") then
|
||||
__awards = true
|
||||
|
||||
|
|
2
mod.conf
2
mod.conf
|
@ -1,3 +1,3 @@
|
|||
name = i3
|
||||
description = Tiling inventory for Minetest
|
||||
optional_depends = 3d_armor, skinsdb, awards, worldedit
|
||||
optional_depends = 3d_armor, skinsdb, awards
|
||||
|
|
|
@ -42,7 +42,7 @@ i3.new_tab {
|
|||
end,
|
||||
|
||||
fields = function(player, data, fields)
|
||||
i3.set_fs(player)
|
||||
i3.set_fs(player, "label[3,2;Test extra_fs]")
|
||||
end,
|
||||
}
|
||||
|
||||
|
|
Ŝarĝante…
Reference in New Issue