Improve mapgen, add grass, and include the fill tool.
This commit is contained in:
parent
1e897665bb
commit
4659a008ac
86 changed files with 1098 additions and 293 deletions
|
|
@ -1,10 +1,28 @@
|
|||
rgt_inv = {}
|
||||
local ns = rgt_inv
|
||||
|
||||
local creative_inv = minetest.create_detached_inventory("rgt_creative_inv", {
|
||||
allow_take = function()
|
||||
return -1
|
||||
end
|
||||
})
|
||||
local num_items = 0
|
||||
|
||||
minetest.register_on_mods_loaded(function()
|
||||
for name, def in pairs(minetest.registered_items) do
|
||||
if not def._variant then
|
||||
creative_inv:set_size("main", num_items +1)
|
||||
creative_inv:set_stack("main", num_items, ItemStack(name.." "..def.stack_max))
|
||||
num_items = num_items +1
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
Inventory = setmetatable({
|
||||
new = function(p)
|
||||
local e = setmetatable({
|
||||
player = p,
|
||||
inv = p:get_inventory(),
|
||||
state = {
|
||||
proximate_machines = {}
|
||||
}
|
||||
|
|
@ -18,6 +36,12 @@ Inventory = setmetatable({
|
|||
e:rebuild()
|
||||
end
|
||||
})
|
||||
|
||||
e.inv:set_size("hand", 1)
|
||||
e.inv:set_size("craft", 4)
|
||||
-- This is important for shaped crafting to work properly.
|
||||
e.inv:set_width("craft", 2)
|
||||
|
||||
e:rebuild()
|
||||
return e
|
||||
end,
|
||||
|
|
@ -26,33 +50,29 @@ Inventory = setmetatable({
|
|||
formspec_version[10]\
|
||||
size[12,10]\
|
||||
style_type[button,image_button;border=false]\
|
||||
"}
|
||||
for x = 0, 7 do
|
||||
for y = 0, 3 do
|
||||
fs[#fs +1] = "\
|
||||
image["..(x *1.25 +1.125 -0.0625)..","..(y *1.25 +4.5 -0.0625)..";1.14,1.14;rgt_other_button_bg.png;8,8]\
|
||||
"
|
||||
end
|
||||
end
|
||||
fs[#fs +1] = "\
|
||||
style_type[image_button;noclip=true;bgimg=rgt_button_bg.png;bgimg_middle=8,8]\
|
||||
"
|
||||
local i = 0
|
||||
for _, x in ipairs(e.state.proximate_machines) do
|
||||
local y = i > 11 and 10.5 or -1
|
||||
fs[#fs +1] = "image_button["..(i %11 +0.125)..","..y..";0.75,0.75;rgt_stone.png;blah;]"
|
||||
i = i +1
|
||||
end
|
||||
fs[#fs +1] = "\
|
||||
list[current_player;main;1.125,4.5;8,4;]\
|
||||
list[current_player;craft;3,0.5;3,3;]\
|
||||
",
|
||||
ui.list("current_player", "main", 1.125, 4.5, 8, 4),
|
||||
}
|
||||
|
||||
if true or e.player._creative then
|
||||
fs[#fs +1] = "scroll_container[1,1;10,3;creativescroll;vertical;;0]"
|
||||
fs[#fs +1] = ui.list("detached:rgt_creative_inv", "main", 0.05, 0.05, 8, math.ceil(num_items /8))
|
||||
fs[#fs +1] = "scroll_container_end[]\
|
||||
scrollbar[11,1;0.2,3;vertical;creativescroll;]"
|
||||
else
|
||||
fs[#fs +1] = ui.list("current_player", "craft", 2, 1, 2, 2)
|
||||
fs[#fs +1] = "\
|
||||
listring[]\
|
||||
list[current_player;craftpreview;7,1;1,1;]\
|
||||
"
|
||||
image[4.7,1.5;1,1;rgt_progress_bg.png^\\[transformR270]\
|
||||
"
|
||||
fs[#fs +1] = ui.list("current_player", "craftpreview", 6, 1.5, 1, 1)
|
||||
end
|
||||
|
||||
e.player:set_inventory_formspec(table.concat(fs))
|
||||
end,
|
||||
on_action = function(e, data)
|
||||
|
||||
set_craft_grid_size = function(e, size)
|
||||
e.inv:set_size("craft", size *size)
|
||||
e.inv:set_width("craft", size)
|
||||
end
|
||||
}, {
|
||||
__call = function(_, ...)
|
||||
|
|
@ -60,31 +80,6 @@ Inventory = setmetatable({
|
|||
end
|
||||
})
|
||||
|
||||
local last_time = 0
|
||||
minetest.register_globalstep(function()
|
||||
local time = minetest.get_us_time()
|
||||
-- Scan for machines every second.
|
||||
if time -last_time > 1000000 then
|
||||
for name, m in pairs(rgt.players) do
|
||||
local pm = {}
|
||||
local machines = minetest.find_nodes_in_area(m.pos:offset(-7, -7, -7), m.pos:offset(7, 7, 7), "group:rgt_machine", true)
|
||||
for type, positions in pairs(machines) do
|
||||
pm[#pm +1] = {
|
||||
type = type,
|
||||
pos = positions[math.random(1, #positions)]
|
||||
}
|
||||
end
|
||||
if not (#pm <= 0 and #m.inv.state.proximate_machines <= 0) then
|
||||
-- Give the machines list a predictable order by sorting it alphabetically prior to submission.
|
||||
table.sort(pm, function(a, b) return a.type < b.type end)
|
||||
m.inv.proximate_machines = pm
|
||||
end
|
||||
end
|
||||
last_time = time
|
||||
end
|
||||
end)
|
||||
|
||||
|
||||
minetest.register_chatcommand("/lua", {
|
||||
privs = {server = true},
|
||||
func = function(name, args)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue