[workbench] Update to Git commit 74dd1af & patch b964323:
https://github.com/minetest-mods/workbench/tree/74dd1af https://github.com/AntumDeluge/mtmod-workbench/tree/b964323
This commit is contained in:
parent
fda741886a
commit
3a8e08f723
@ -90,7 +90,7 @@ The game includes the mods from the default [minetest_game](https://github.com/m
|
|||||||
* [compassgps][] ([WTFPL][lic.wtfpl] / [CC0][lic.cc0] / [CC BY-SA][lic.ccbysa]) -- version: [96892a0 Git][ver.compassgps] *2015-07-31* ([patched][patch.compassgps])
|
* [compassgps][] ([WTFPL][lic.wtfpl] / [CC0][lic.cc0] / [CC BY-SA][lic.ccbysa]) -- version: [96892a0 Git][ver.compassgps] *2015-07-31* ([patched][patch.compassgps])
|
||||||
* [tools_obsidian][] ([LGPL / CC BY-SA][lic.tools_obsidian]) -- version: [f77fd79][ver.tools_obsidian] *2016-03-19*
|
* [tools_obsidian][] ([LGPL / CC BY-SA][lic.tools_obsidian]) -- version: [f77fd79][ver.tools_obsidian] *2016-03-19*
|
||||||
* [torches][] ([LGPL / CC-BY-SA](mods/tools/torches/README.txt)) -- version: [e19c772 Git][ver.torches] *2015-11-12*
|
* [torches][] ([LGPL / CC-BY-SA](mods/tools/torches/README.txt)) -- version: [e19c772 Git][ver.torches] *2015-11-12*
|
||||||
* [workbench][] ([GPL / WTFPL](mods/tools/workbench/LICENSE))
|
* [workbench][] ([GPL / WTFPL](mods/tools/workbench/LICENSE)) -- version: [74dd1af Git][ver.workbench] *2017-02-07* ([patched][patch.workbench])
|
||||||
* transport/
|
* transport/
|
||||||
* [helicopter][] ([GPL][lic.gpl2.0]) -- version: [10f1433 Git][ver.helicopter] ([patched][patch.helicopter]) *2015-07-15*
|
* [helicopter][] ([GPL][lic.gpl2.0]) -- version: [10f1433 Git][ver.helicopter] ([patched][patch.helicopter]) *2015-07-15*
|
||||||
* [hovercraft][] ([LGPL / CC BY-SA / CC0][lic.hovercraft])
|
* [hovercraft][] ([LGPL / CC BY-SA / CC0][lic.hovercraft])
|
||||||
@ -454,6 +454,7 @@ The game includes the mods from the default [minetest_game](https://github.com/m
|
|||||||
[ver.walking_light]: https://github.com/petermaloney/walking_light/tree/b9de302
|
[ver.walking_light]: https://github.com/petermaloney/walking_light/tree/b9de302
|
||||||
[ver.wardrobe]: https://github.com/prestidigitator/minetest-mod-wardrobe/tree/c48b011
|
[ver.wardrobe]: https://github.com/prestidigitator/minetest-mod-wardrobe/tree/c48b011
|
||||||
[ver.windmill]: https://github.com/Sokomine/windmill/tree/47b029d
|
[ver.windmill]: https://github.com/Sokomine/windmill/tree/47b029d
|
||||||
|
[ver.workbench]: https://github.com/minetest-mods/workbench/tree/74dd1af
|
||||||
|
|
||||||
[patch.adv_spawning]: https://github.com/AntumDeluge/mtmod-adv_spawning/tree/572688b
|
[patch.adv_spawning]: https://github.com/AntumDeluge/mtmod-adv_spawning/tree/572688b
|
||||||
[patch.bags]: https://github.com/AntumDeluge/mtmod-bags/tree/4363284
|
[patch.bags]: https://github.com/AntumDeluge/mtmod-bags/tree/4363284
|
||||||
@ -480,3 +481,4 @@ The game includes the mods from the default [minetest_game](https://github.com/m
|
|||||||
[patch.unifieddyes]: https://github.com/AntumDeluge/mtmod-unifieddyes/tree/df3f1b1
|
[patch.unifieddyes]: https://github.com/AntumDeluge/mtmod-unifieddyes/tree/df3f1b1
|
||||||
[patch.walking_light]: https://github.com/AntumDeluge/mtmod-walking_light/tree/00ebab8
|
[patch.walking_light]: https://github.com/AntumDeluge/mtmod-walking_light/tree/00ebab8
|
||||||
[patch.windmill]: https://github.com/AntumDeluge/mtmod-windmill/tree/7756ab4
|
[patch.windmill]: https://github.com/AntumDeluge/mtmod-windmill/tree/7756ab4
|
||||||
|
[patch.workbench]: https://github.com/AntumDeluge/mtmod-workbench/tree/b964323
|
||||||
|
8
mods/tools/workbench/.luacheckrc
Normal file
8
mods/tools/workbench/.luacheckrc
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
unused_args = false
|
||||||
|
allow_defined_top = true
|
||||||
|
|
||||||
|
read_globals = {
|
||||||
|
"minetest",
|
||||||
|
"default",
|
||||||
|
"stairs",
|
||||||
|
}
|
@ -1,4 +1,4 @@
|
|||||||
default
|
default
|
||||||
stairs
|
stairs
|
||||||
xdecor?
|
xdecor?
|
||||||
screwdriver?
|
craft_guide?
|
||||||
|
@ -1,8 +1,10 @@
|
|||||||
local workbench = {}
|
local workbench = {}
|
||||||
|
WB = {}
|
||||||
screwdriver = screwdriver or {}
|
screwdriver = screwdriver or {}
|
||||||
|
local min, ceil = math.min, math.ceil
|
||||||
|
|
||||||
-- Nodes allowed to be cut.
|
-- Nodes allowed to be cut
|
||||||
-- Only the regular, solid blocks without metas or explosivity can be cut.
|
-- Only the regular, solid blocks without metas or explosivity can be cut
|
||||||
local nodes = {}
|
local nodes = {}
|
||||||
for node, def in pairs(minetest.registered_nodes) do
|
for node, def in pairs(minetest.registered_nodes) do
|
||||||
if (def.drawtype == "normal" or def.drawtype:sub(1,5) == "glass") and
|
if (def.drawtype == "normal" or def.drawtype:sub(1,5) == "glass") and
|
||||||
@ -13,8 +15,11 @@ for node, def in pairs(minetest.registered_nodes) do
|
|||||||
not def.on_blast and
|
not def.on_blast and
|
||||||
not def.allow_metadata_inventory_take and
|
not def.allow_metadata_inventory_take and
|
||||||
not (def.groups.not_in_creative_inventory == 1) and
|
not (def.groups.not_in_creative_inventory == 1) and
|
||||||
|
not (def.groups.not_cuttable == 1) and
|
||||||
not def.groups.wool and
|
not def.groups.wool and
|
||||||
not def.description:find("Ore") and
|
(def.tiles and type(def.tiles[1]) == "string" and not
|
||||||
|
def.tiles[1]:find("default_mineral")) and
|
||||||
|
not def.mesecons and
|
||||||
def.description and
|
def.description and
|
||||||
def.description ~= "" and
|
def.description ~= "" and
|
||||||
def.light_source == 0
|
def.light_source == 0
|
||||||
@ -23,7 +28,23 @@ for node, def in pairs(minetest.registered_nodes) do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Nodeboxes definitions.
|
-- Optionally, you can register custom cuttable nodes in the workbench
|
||||||
|
WB.custom_nodes_register = {
|
||||||
|
-- "default:leaves",
|
||||||
|
}
|
||||||
|
|
||||||
|
setmetatable(nodes, {
|
||||||
|
__concat = function(t1, t2)
|
||||||
|
for i=1, #t2 do
|
||||||
|
t1[#t1+1] = t2[i]
|
||||||
|
end
|
||||||
|
return t1
|
||||||
|
end
|
||||||
|
})
|
||||||
|
|
||||||
|
nodes = nodes..WB.custom_nodes_register
|
||||||
|
|
||||||
|
-- Nodeboxes definitions
|
||||||
workbench.defs = {
|
workbench.defs = {
|
||||||
-- Name Yield X Y Z W H L
|
-- Name Yield X Y Z W H L
|
||||||
{"nanoslab", 16, { 0, 0, 0, 8, 1, 8 }},
|
{"nanoslab", 16, { 0, 0, 0, 8, 1, 8 }},
|
||||||
@ -46,7 +67,7 @@ workbench.defs = {
|
|||||||
{ 0, 8, 0, 8, 8, 8 }}
|
{ 0, 8, 0, 8, 8, 8 }}
|
||||||
}
|
}
|
||||||
|
|
||||||
-- Tools allowed to be repaired.
|
-- Tools allowed to be repaired
|
||||||
function workbench:repairable(stack)
|
function workbench:repairable(stack)
|
||||||
local tools = {"pick", "axe", "shovel", "sword", "hoe", "armor", "shield"}
|
local tools = {"pick", "axe", "shovel", "sword", "hoe", "armor", "shield"}
|
||||||
for _, t in pairs(tools) do
|
for _, t in pairs(tools) do
|
||||||
@ -56,13 +77,9 @@ function workbench:repairable(stack)
|
|||||||
end
|
end
|
||||||
|
|
||||||
function workbench:get_output(inv, input, name)
|
function workbench:get_output(inv, input, name)
|
||||||
if inv:is_empty("input") then
|
|
||||||
inv:set_list("forms", {}) return
|
|
||||||
end
|
|
||||||
|
|
||||||
local output = {}
|
local output = {}
|
||||||
for _, n in pairs(self.defs) do
|
for _, n in pairs(self.defs) do
|
||||||
local count = math.min(n[2] * input:get_count(), input:get_stack_max())
|
local count = min(n[2] * input:get_count(), input:get_stack_max())
|
||||||
local item = name.."_"..n[1]
|
local item = name.."_"..n[1]
|
||||||
if not n[3] then item = "stairs:"..n[1].."_"..name:match(":(.*)") end
|
if not n[3] then item = "stairs:"..n[1].."_"..name:match(":(.*)") end
|
||||||
output[#output+1] = item.." "..count
|
output[#output+1] = item.." "..count
|
||||||
@ -70,11 +87,11 @@ function workbench:get_output(inv, input, name)
|
|||||||
inv:set_list("forms", output)
|
inv:set_list("forms", output)
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Thanks to kaeza for this function.
|
-- Thanks to kaeza for this function
|
||||||
function workbench:pixelbox(size, boxes)
|
function workbench:pixelbox(size, boxes)
|
||||||
local fixed = {}
|
local fixed = {}
|
||||||
for _, box in pairs(boxes) do
|
for _, box in pairs(boxes) do
|
||||||
-- `unpack` has been changed to `table.unpack` in newest Lua versions.
|
-- `unpack` has been changed to `table.unpack` in newest Lua versions
|
||||||
local x, y, z, w, h, l = unpack(box)
|
local x, y, z, w, h, l = unpack(box)
|
||||||
fixed[#fixed+1] = {
|
fixed[#fixed+1] = {
|
||||||
(x / size) - 0.5,
|
(x / size) - 0.5,
|
||||||
@ -85,11 +102,11 @@ function workbench:pixelbox(size, boxes)
|
|||||||
((z + l) / size) - 0.5
|
((z + l) / size) - 0.5
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
return {type = "fixed", fixed = fixed}
|
return {type="fixed", fixed=fixed}
|
||||||
end
|
end
|
||||||
|
|
||||||
local formspecs = {
|
local formspecs = {
|
||||||
-- Main formspec.
|
-- Main formspec
|
||||||
[[ label[0.9,1.23;Cut]
|
[[ label[0.9,1.23;Cut]
|
||||||
label[0.9,2.23;Repair]
|
label[0.9,2.23;Repair]
|
||||||
box[-0.05,1;2.05,0.9;#555555]
|
box[-0.05,1;2.05,0.9;#555555]
|
||||||
@ -104,14 +121,14 @@ local formspecs = {
|
|||||||
list[context;tool;2,2;1,1;]
|
list[context;tool;2,2;1,1;]
|
||||||
list[context;hammer;3,2;1,1;]
|
list[context;hammer;3,2;1,1;]
|
||||||
list[context;forms;4,0;4,3;] ]],
|
list[context;forms;4,0;4,3;] ]],
|
||||||
-- Crafting formspec.
|
-- Crafting formspec
|
||||||
[[ image[5,1;1,1;gui_furnace_arrow_bg.png^[transformR270]
|
[[ image[5,1;1,1;gui_furnace_arrow_bg.png^[transformR270]
|
||||||
button[0,0;1.5,1;back;< Back]
|
button[0,0;1.5,1;back;< Back]
|
||||||
list[current_player;craft;2,0;3,3;]
|
list[current_player;craft;2,0;3,3;]
|
||||||
list[current_player;craftpreview;6,1;1,1;]
|
list[current_player;craftpreview;6,1;1,1;]
|
||||||
listring[current_player;main]
|
listring[current_player;main]
|
||||||
listring[current_player;craft] ]],
|
listring[current_player;craft] ]],
|
||||||
-- Storage formspec.
|
-- Storage formspec
|
||||||
[[ list[context;storage;0,1;8,2;]
|
[[ list[context;storage;0,1;8,2;]
|
||||||
button[0,0;1.5,1;back;< Back]
|
button[0,0;1.5,1;back;< Back]
|
||||||
listring[context;storage]
|
listring[context;storage]
|
||||||
@ -158,10 +175,11 @@ function workbench.timer(pos)
|
|||||||
local hammer = inv:get_stack("hammer", 1)
|
local hammer = inv:get_stack("hammer", 1)
|
||||||
|
|
||||||
if tool:is_empty() or hammer:is_empty() or tool:get_wear() == 0 then
|
if tool:is_empty() or hammer:is_empty() or tool:get_wear() == 0 then
|
||||||
timer:stop() return
|
timer:stop()
|
||||||
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Tool's wearing range: 0-65535 | 0 = new condition.
|
-- Tool's wearing range: 0-65535 | 0 = new condition
|
||||||
tool:add_wear(-500)
|
tool:add_wear(-500)
|
||||||
hammer:add_wear(700)
|
hammer:add_wear(700)
|
||||||
|
|
||||||
@ -172,7 +190,8 @@ end
|
|||||||
|
|
||||||
function workbench.put(_, listname, _, stack)
|
function workbench.put(_, listname, _, stack)
|
||||||
local stackname = stack:get_name()
|
local stackname = stack:get_name()
|
||||||
if (listname == "tool" and stack:get_wear() > 0 and workbench:repairable(stackname)) or
|
if (listname == "tool" and stack:get_wear() > 0 and
|
||||||
|
workbench:repairable(stackname)) or
|
||||||
(listname == "input" and minetest.registered_nodes[stackname.."_cube"]) or
|
(listname == "input" and minetest.registered_nodes[stackname.."_cube"]) or
|
||||||
(listname == "hammer" and stackname == "xdecor:hammer") or
|
(listname == "hammer" and stackname == "xdecor:hammer") or
|
||||||
listname == "storage" then
|
listname == "storage" then
|
||||||
@ -181,18 +200,8 @@ function workbench.put(_, listname, _, stack)
|
|||||||
return 0
|
return 0
|
||||||
end
|
end
|
||||||
|
|
||||||
function workbench.take(_, listname, _, stack, player)
|
|
||||||
if listname == "forms" then
|
|
||||||
local inv = player:get_inventory()
|
|
||||||
if inv:room_for_item("main", stack:get_name()) then return -1 end
|
|
||||||
return 0
|
|
||||||
end
|
|
||||||
return stack:get_count()
|
|
||||||
end
|
|
||||||
|
|
||||||
function workbench.move(_, from_list, _, to_list, _, count)
|
function workbench.move(_, from_list, _, to_list, _, count)
|
||||||
if to_list == "storage" and from_list ~= "forms" then return count end
|
return (to_list == "storage" and from_list ~= "forms") and count or 0
|
||||||
return 0
|
|
||||||
end
|
end
|
||||||
|
|
||||||
function workbench.on_put(pos, listname, _, stack)
|
function workbench.on_put(pos, listname, _, stack)
|
||||||
@ -206,20 +215,30 @@ function workbench.on_put(pos, listname, _, stack)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function workbench.on_take(pos, listname, index, stack)
|
function workbench.on_take(pos, listname, index, stack, player)
|
||||||
local inv = minetest.get_meta(pos):get_inventory()
|
local inv = minetest.get_meta(pos):get_inventory()
|
||||||
local input = inv:get_stack("input", 1)
|
local input = inv:get_stack("input", 1)
|
||||||
|
local inputname = input:get_name()
|
||||||
|
local stackname = stack:get_name()
|
||||||
|
|
||||||
if listname == "input" then
|
if listname == "input" then
|
||||||
if stack:get_name() == input:get_name() then
|
if stackname == inputname then
|
||||||
workbench:get_output(inv, input, stack:get_name())
|
workbench:get_output(inv, input, stackname)
|
||||||
else
|
else
|
||||||
inv:set_list("forms", {})
|
inv:set_list("forms", {})
|
||||||
end
|
end
|
||||||
elseif listname == "forms" then
|
elseif listname == "forms" then
|
||||||
input:take_item(math.ceil(stack:get_count() / workbench.defs[index][2]))
|
local fromstack = inv:get_stack(listname, index)
|
||||||
|
if not fromstack:is_empty() and fromstack:get_name() ~= stackname then
|
||||||
|
local player_inv = player:get_inventory()
|
||||||
|
if player_inv:room_for_item("main", fromstack) then
|
||||||
|
player_inv:add_item("main", fromstack)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
input:take_item(ceil(stack:get_count() / workbench.defs[index][2]))
|
||||||
inv:set_stack("input", 1, input)
|
inv:set_stack("input", 1, input)
|
||||||
workbench:get_output(inv, input, input:get_name())
|
workbench:get_output(inv, input, inputname)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -240,7 +259,6 @@ minetest.register_node(":xdecor:workbench", {
|
|||||||
on_metadata_inventory_put = workbench.on_put,
|
on_metadata_inventory_put = workbench.on_put,
|
||||||
on_metadata_inventory_take = workbench.on_take,
|
on_metadata_inventory_take = workbench.on_take,
|
||||||
allow_metadata_inventory_put = workbench.put,
|
allow_metadata_inventory_put = workbench.put,
|
||||||
allow_metadata_inventory_take = workbench.take,
|
|
||||||
allow_metadata_inventory_move = workbench.move
|
allow_metadata_inventory_move = workbench.move
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -268,12 +286,13 @@ minetest.register_craft({
|
|||||||
})
|
})
|
||||||
|
|
||||||
for _, d in pairs(workbench.defs) do
|
for _, d in pairs(workbench.defs) do
|
||||||
for i = 1, #nodes do
|
for i=1, #nodes do
|
||||||
local node = nodes[i]
|
local node = nodes[i]
|
||||||
local def = minetest.registered_nodes[node]
|
local def = minetest.registered_nodes[node]
|
||||||
|
|
||||||
if d[3] then
|
if d[3] then
|
||||||
local groups, tiles = {}, {}
|
local groups = {}
|
||||||
|
local tiles
|
||||||
groups.not_in_creative_inventory = 1
|
groups.not_in_creative_inventory = 1
|
||||||
|
|
||||||
for k, v in pairs(def.groups) do
|
for k, v in pairs(def.groups) do
|
||||||
@ -293,8 +312,9 @@ for i = 1, #nodes do
|
|||||||
end
|
end
|
||||||
|
|
||||||
if not minetest.registered_nodes["stairs:slab_"..node:match(":(.*)")] then
|
if not minetest.registered_nodes["stairs:slab_"..node:match(":(.*)")] then
|
||||||
stairs.register_stair_and_slab(node:match(":(.*)"), node, groups, tiles,
|
stairs.register_stair_and_slab(node:match(":(.*)"), node,
|
||||||
def.description.." Stair", def.description.." Slab", def.sounds)
|
groups, tiles, def.description.." Stair",
|
||||||
|
def.description.." Slab", def.sounds)
|
||||||
end
|
end
|
||||||
|
|
||||||
minetest.register_node(":"..node.."_"..d[1], {
|
minetest.register_node(":"..node.."_"..d[1], {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user