Add mods: technic, moreores, paintings, Nyancat (Pbj_pup). Small fix: sandwiches
This commit is contained in:
parent
15e8e696a2
commit
fb09deddc1
1404 changed files with 156555 additions and 211 deletions
99
mods/paintings_lib/init.lua
Normal file
99
mods/paintings_lib/init.lua
Normal file
|
@ -0,0 +1,99 @@
|
|||
-- Paintings Library
|
||||
|
||||
paintings_lib = {}
|
||||
|
||||
local default_path = minetest.get_modpath("paintings_lib")
|
||||
|
||||
dofile(minetest.get_modpath("paintings_lib") .. "/register.lua")
|
||||
dofile(minetest.get_modpath("paintings_lib") .. "/paintings.lua")
|
||||
|
||||
-- Global variable to hold the list of painting nodes
|
||||
local painting_nodes = {}
|
||||
|
||||
-- Function to populate the painting nodes list
|
||||
local function populate_painting_nodes()
|
||||
for name, def in pairs(minetest.registered_nodes) do
|
||||
if def.groups.painting then
|
||||
table.insert(painting_nodes, name)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- Register the function to be called after all mods have loaded
|
||||
minetest.register_on_mods_loaded(populate_painting_nodes)
|
||||
|
||||
-- Call the function to populate the list at server start
|
||||
populate_painting_nodes()
|
||||
|
||||
-- Retrieve the number of uses from settings
|
||||
local paintbrush_uses = tonumber(minetest.settings:get("paintings_lib_paintbrush_uses")) or 32
|
||||
|
||||
-- Register the paintbrush tool
|
||||
minetest.register_tool("paintings_lib:paintbrush", {
|
||||
description = "Paintbrush",
|
||||
inventory_image = "paintings_lib_paintbrush.png",
|
||||
wield_image = "paintings_lib_paintbrush.png^[transformFX"
|
||||
})
|
||||
|
||||
-- Function to swap the node and wear out the paintbrush
|
||||
local function swap_node(pos, node, clicker)
|
||||
local wielded_item = clicker:get_wielded_item()
|
||||
if wielded_item:get_name() ~= "paintings_lib:paintbrush" then
|
||||
return
|
||||
end
|
||||
|
||||
if #painting_nodes > 0 then
|
||||
local new_node_name = node.name
|
||||
local attempts = 0
|
||||
-- Loop until a different painting is found or after 10 attempts
|
||||
while new_node_name == node.name and attempts < 10 do
|
||||
new_node_name = painting_nodes[math.random(#painting_nodes)]
|
||||
attempts = attempts + 1
|
||||
end
|
||||
|
||||
if new_node_name ~= node.name then
|
||||
minetest.swap_node(pos, {name = new_node_name})
|
||||
-- Adding wear to the paintbrush
|
||||
wielded_item:add_wear(65535 / paintbrush_uses)
|
||||
clicker:set_wielded_item(wielded_item)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- Override the on_rightclick for nodes in the "painting" group
|
||||
minetest.register_on_punchnode(function(pos, node, clicker, pointed_thing)
|
||||
if minetest.get_item_group(node.name, "painting") > 0 then
|
||||
swap_node(pos, node, clicker)
|
||||
end
|
||||
end)
|
||||
|
||||
|
||||
-- Crafting recipe to 'refill' the paintbrush
|
||||
minetest.register_on_craft(function(itemstack, player, old_craft_grid, craft_inv)
|
||||
local paintbrush_found, dye_found = false, false
|
||||
|
||||
for _, item in ipairs(old_craft_grid) do
|
||||
if item:get_name() == "paintings_lib:paintbrush" then
|
||||
paintbrush_found = true
|
||||
-- Fully repair the paintbrush
|
||||
itemstack:add_wear(-65535)
|
||||
end
|
||||
if minetest.get_item_group(item:get_name(), "dye") > 0 then
|
||||
dye_found = true
|
||||
end
|
||||
end
|
||||
|
||||
if paintbrush_found and dye_found then
|
||||
return itemstack
|
||||
end
|
||||
end)
|
||||
|
||||
minetest.register_craft({
|
||||
type = "shapeless",
|
||||
output = "paintings_lib:paintbrush",
|
||||
recipe = {
|
||||
"paintings_lib:paintbrush",
|
||||
"group:dye", "group:dye", "group:dye", "group:dye",
|
||||
"group:dye", "group:dye", "group:dye", "group:dye"
|
||||
}
|
||||
})
|
Loading…
Add table
Add a link
Reference in a new issue