use voxelmanip
|
@ -1,142 +0,0 @@
|
|||
local mysponge_table = { -- item, ,desc, image, scale, nodegroup, bright
|
||||
{"sponge_dry", "Dry Sponge", "sponge.png", "0.5", {dig_immediate=1, oddly_breakable_by_hand=1, flammable=1}},
|
||||
{"sponge_soaked","Wet Sponge", "sponge_wet.png", "1", {dig_immediate=1, oddly_breakable_by_hand=1, not_in_creative_inventory=1}},
|
||||
}
|
||||
for i in ipairs(mysponge_table) do
|
||||
local item = mysponge_table[i][1]
|
||||
local desc = mysponge_table[i][2]
|
||||
local image = mysponge_table[i][3]
|
||||
local scale = mysponge_table[i][4]
|
||||
local nodegroup = mysponge_table[i][5]
|
||||
|
||||
|
||||
minetest.register_node("mysponge:"..item,{
|
||||
description = desc,
|
||||
tiles = {image},
|
||||
paramtype = "light",
|
||||
groups = {crumbly=3, level=0, dig_immediate=1}
|
||||
})
|
||||
|
||||
end
|
||||
|
||||
local air_nodes = {
|
||||
{"air1"},
|
||||
{"air2"},
|
||||
{"air3"},
|
||||
}
|
||||
for i in ipairs(air_nodes) do
|
||||
local airnode = air_nodes[i][1]
|
||||
minetest.register_node("mysponge:"..airnode,{
|
||||
-- description = "Air 1",
|
||||
tiles = {"mysponge_air.png"},
|
||||
drawtype = "allfaces",
|
||||
walkable = false,
|
||||
pointable = false,
|
||||
paramtype = "light",
|
||||
groups = {not_in_creative_inventory=1}
|
||||
})
|
||||
end
|
||||
|
||||
|
||||
minetest.register_node("mysponge:dry_leaves",{
|
||||
description = "Dry Leaves",
|
||||
tiles = {"mysponge_dry_leaves.png"},
|
||||
drawtype = "allfaces_optional",
|
||||
paramtype = "light",
|
||||
groups = {dig_immediate=1, oddly_breakable_by_hand=1}
|
||||
})
|
||||
|
||||
|
||||
-------------------------------------------------------------------------
|
||||
--ABMs
|
||||
-------------------------------------------------------------------------
|
||||
--Set Air
|
||||
|
||||
--Air 1
|
||||
minetest.register_abm({
|
||||
nodenames = {"group:water"},
|
||||
neighbors = {"mysponge:sponge_dry"},
|
||||
interval = 0.5,
|
||||
chance = 1,
|
||||
action = function(pos)
|
||||
minetest.set_node(pos, {name="mysponge:air1"})
|
||||
end
|
||||
})
|
||||
|
||||
--Air 2
|
||||
minetest.register_abm({
|
||||
nodenames = {"group:water"},
|
||||
neighbors = {"mysponge:air1"},
|
||||
interval = 0.5,
|
||||
chance = 1,
|
||||
action = function(pos)
|
||||
minetest.set_node(pos, {name="mysponge:air2"})
|
||||
end
|
||||
})
|
||||
|
||||
--Air 3
|
||||
minetest.register_abm({
|
||||
nodenames = {"group:water"},
|
||||
neighbors = {"mysponge:air2"},
|
||||
interval = 0.5,
|
||||
chance = 1,
|
||||
action = function(pos)
|
||||
minetest.set_node(pos, {name="mysponge:air3"})
|
||||
end
|
||||
})
|
||||
|
||||
-------------------------------------------------------------------------
|
||||
--Set default Air
|
||||
-------------------------------------------------------------------------
|
||||
|
||||
minetest.register_abm({
|
||||
nodenames = {"mysponge:air1","mysponge:air2","mysponge:air3"},
|
||||
interval = 6,
|
||||
chance = 1,
|
||||
action = function(pos)
|
||||
minetest.set_node(pos, {name="air"})
|
||||
end
|
||||
})
|
||||
|
||||
-------------------------------------------------------------------------
|
||||
--Set Sponge
|
||||
-------------------------------------------------------------------------
|
||||
|
||||
minetest.register_abm({
|
||||
nodenames = {"mysponge:sponge_dry"},
|
||||
neighbors = {"mysponge:air1"},
|
||||
interval = 3,
|
||||
chance = 1,
|
||||
action = function(pos)
|
||||
minetest.set_node(pos, {name="mysponge:sponge_soaked"})
|
||||
end
|
||||
|
||||
})
|
||||
|
||||
-------------------------------------------------------------------------------------------------
|
||||
--Craft
|
||||
|
||||
minetest.register_craft({
|
||||
type = "cooking",
|
||||
output = "default:water_source 3",
|
||||
recipe = "mysponge:sponge_soaked",
|
||||
cooktime = 5,
|
||||
replacements = {{"mysponge:sponge_soaked", "mysponge:sponge_dry"}},
|
||||
})
|
||||
minetest.register_craft({
|
||||
type = "cooking",
|
||||
output = "mysponge:dry_leaves",
|
||||
recipe = "group:leaves",
|
||||
cooktime = 3,
|
||||
})
|
||||
minetest.register_craft({
|
||||
output = "mysponge:sponge_dry 1",
|
||||
recipe = {
|
||||
{"mysponge:dry_leaves","mysponge:dry_leaves"},
|
||||
{"mysponge:dry_leaves","mysponge:dry_leaves"},
|
||||
},
|
||||
cooktime = 3,
|
||||
})
|
||||
|
||||
|
||||
|
Before Width: | Height: | Size: 228 B |
|
@ -0,0 +1,81 @@
|
|||
minetest.register_node("sponge:sponge_wet",{
|
||||
description = "Wet Sponge",
|
||||
tiles = {"sponge_wet.png"},
|
||||
paramtype = "light",
|
||||
groups = {crumbly=3, level=0, dig_immediate=1, oddly_breakable_by_hand=1}
|
||||
})
|
||||
|
||||
minetest.register_node("sponge:sponge_dry",{
|
||||
description = "Dry Sponge",
|
||||
tiles = {"sponge.png"},
|
||||
paramtype = "light",
|
||||
groups = {crumbly=3, level=0, dig_immediate=1, oddly_breakable_by_hand=1, flammable=1},
|
||||
after_place_node = function(pos, placer, itemstack)
|
||||
local vm = minetest.get_voxel_manip()
|
||||
local p1 = {x=pos.x-17,y=pos.y-17,z=pos.z-17}
|
||||
local p2 = {x=pos.x+17,y=pos.y+17,z=pos.z+17}
|
||||
local emin, emax = vm:read_from_map(p1, p2)
|
||||
local data = vm:get_data()
|
||||
local area = VoxelArea:new{ MinEdge = emin, MaxEdge = emax }
|
||||
local c_air = minetest.get_content_id("air")
|
||||
local c_w = minetest.get_content_id("water_flowing")
|
||||
local c_ws = minetest.get_content_id("water_source")
|
||||
local c_sw = minetest.get_content_id("sponge:sponge_wet")
|
||||
local iswet = false
|
||||
for x=pos.x-7,pos.x+7,1 do
|
||||
for z=pos.z-7,pos.z+7,1 do
|
||||
for y=pos.y-7,pos.y+7,1 do
|
||||
local p_pos = area:index(x, y, z)
|
||||
if data[p_pos] == c_w or data[p_pos] == c_ws then
|
||||
data[p_pos] = c_air
|
||||
iswet = true
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
if iswet then
|
||||
data[area:index(pos.x, pos.y, pos.z)] = c_sw
|
||||
end
|
||||
vm:set_data(data)
|
||||
vm:calc_lighting()
|
||||
vm:update_liquids()
|
||||
vm:write_to_map()
|
||||
vm:update_map()
|
||||
return false
|
||||
end,
|
||||
})
|
||||
|
||||
minetest.register_node("sponge:dry_leaves",{
|
||||
description = "Dry Leaves",
|
||||
tiles = {"sponge_dry_leaves.png"},
|
||||
drawtype = "allfaces_optional",
|
||||
paramtype = "light",
|
||||
groups = {dig_immediate=1, oddly_breakable_by_hand=1}
|
||||
})
|
||||
|
||||
-------------------------------------------------------------------------------------------------
|
||||
--Craft
|
||||
|
||||
minetest.register_craft({
|
||||
type = "cooking",
|
||||
output = "sponge:sponge_dry 1",
|
||||
recipe = "sponge:sponge_wet",
|
||||
cooktime = 5,
|
||||
})
|
||||
minetest.register_craft({
|
||||
type = "cooking",
|
||||
output = "sponge:dry_leaves",
|
||||
recipe = "group:leaves",
|
||||
cooktime = 3,
|
||||
})
|
||||
minetest.register_craft({
|
||||
output = "sponge:sponge_dry 1",
|
||||
recipe = {
|
||||
{"sponge:dry_leaves","sponge:dry_leaves"},
|
||||
{"sponge:dry_leaves","sponge:dry_leaves"},
|
||||
},
|
||||
cooktime = 3,
|
||||
})
|
||||
|
||||
|
||||
|
Before Width: | Height: | Size: 5.4 KiB After Width: | Height: | Size: 5.4 KiB |
Before Width: | Height: | Size: 4.3 KiB After Width: | Height: | Size: 4.3 KiB |
Before Width: | Height: | Size: 5.3 KiB After Width: | Height: | Size: 5.3 KiB |