- Added Book sounds
- Changed TNT sound
- Overhauled eating
+- Add in client weather handling
+- Add in client movement handling
+- Made sapling fuel
+- Fix bed bed, boat, book, sapling, wood, minecart, rail, redstone, and boat placement
+- Add sounds to redstone dust
+- make redstone dust an attached node
---
sounds = main.woodSound({placing=""}),
drawtype = "nodebox",
node_placement_prediction = "",
- on_place = function(itemstack, placer, pointed_thing)
+ on_place = function(itemstack, placer, pointed_thing)
+
+ if not pointed_thing.type == "node" then
+ return
+ end
+
+ local sneak = placer:get_player_control().sneak
+ local noddef = minetest.registered_nodes[minetest.get_node(pointed_thing.under).name]
+ if not sneak and noddef.on_rightclick then
+ minetest.item_place(itemstack, placer, pointed_thing)
+ return
+ end
+
+
+
local _,pos = minetest.item_place_node(ItemStack("bed:bed_front"), placer, pointed_thing)
if pos then
return
end
+ local sneak = placer:get_player_control().sneak
+ local noddef = minetest.registered_nodes[minetest.get_node(pointed_thing.under).name]
+ if not sneak and noddef.on_rightclick then
+ minetest.item_place(itemstack, placer, pointed_thing)
+ return
+ end
+
if minetest.get_item_group(minetest.get_node(pointed_thing.under).name, "water")>0 then
minetest.add_entity(pointed_thing.under, "boat:boat")
else
inventory_image = "book.png",
on_place = function(itemstack, user, pointed_thing)
+ if not pointed_thing.type == "node" then
+ return
+ end
+ local sneak = user:get_player_control().sneak
+ local noddef = minetest.registered_nodes[minetest.get_node(pointed_thing.under).name]
+ if not sneak and noddef.on_rightclick then
+ minetest.item_place(itemstack, user, pointed_thing)
+ return
+ end
print("make books placable on the ground")
open_book_gui(itemstack, user)
end,
inventory_image = "book_written.png",
on_place = function(itemstack, user, pointed_thing)
+ if not pointed_thing.type == "node" then
+ return
+ end
+ local sneak = user:get_player_control().sneak
+ local noddef = minetest.registered_nodes[minetest.get_node(pointed_thing.under).name]
+ if not sneak and noddef.on_rightclick then
+ minetest.item_place(itemstack, user, pointed_thing)
+ return
+ end
print("make books placable on the ground")
open_book_inked_gui(itemstack, user)
end,
--Quick definition of hoes
local material = {"wood","stone","iron","gold","diamond"}
-
-
local function till_soil(pos)
- local is_dirt = minetest.get_node_group(minetest.get_node(pos).name, "dirt") > 0
+ local is_dirt = minetest.get_node_group(minetest.get_node(pos).name, "farm_tillable") > 0
local is_farmland = minetest.get_node_group(minetest.get_node(pos).name, "farmland") > 0
if is_dirt and not is_farmland then
minetest.sound_play("dirt",{pos=pos})
groups = {flammable = 2, tool=1 },
on_place = function(itemstack, placer, pointed_thing)
+ local noddef = minetest.registered_nodes[minetest.get_node(pointed_thing.under).name]
+ local sneak = placer:get_player_control().sneak
+
+ if not sneak and noddef.on_rightclick then
+ minetest.item_place(itemstack, placer, pointed_thing)
+ return
+ end
+
local tilled = till_soil(pointed_thing.under)
- if tilled == true then itemstack:add_wear(wear) end
+ if tilled == true then
+ if minetest.registered_nodes[minetest.get_node(vector.new(pointed_thing.under.x,pointed_thing.under.y+1,pointed_thing.under.z)).name].buildable_to then
+ minetest.dig_node(vector.new(pointed_thing.under.x,pointed_thing.under.y+1,pointed_thing.under.z))
+ end
+ itemstack:add_wear(wear)
+ end
local damage = itemstack:get_wear()
-
- if damage <= 0 then
+ print(damage)
+ if damage <= 0 and tilled == true then
minetest.sound_play("tool_break",{object=placer})
end
return(itemstack)
minetest.register_node("main:dirt", {
description = "Dirt",
tiles = {"dirt.png"},
- groups = {dirt = 1, soft = 1, shovel = 1, hand = 1, soil=1,pathable = 1},
+ groups = {dirt = 1, soft = 1, shovel = 1, hand = 1, soil=1,pathable = 1, farm_tillable=1},
sounds = main.dirtSound(),
paramtype = "light",
})
minetest.register_node("main:grass", {
description = "Grass",
tiles = {"grass.png"},
- groups = {dirt = 1, soft = 1, shovel = 1, hand = 1, soil=1,pathable = 1},
+ groups = {dirt = 1, soft = 1, shovel = 1, hand = 1, soil=1,pathable = 1, farm_tillable=1},
sounds = main.dirtSound(),
drop="main:dirt",
})
sounds = main.woodSound(),
--set metadata so treecapitator doesn't destroy houses
on_place = function(itemstack, placer, pointed_thing)
+ if not pointed_thing.type == "node" then
+ return
+ end
+
+ local sneak = placer:get_player_control().sneak
+ local noddef = minetest.registered_nodes[minetest.get_node(pointed_thing.under).name]
+ if not sneak and noddef.on_rightclick then
+ minetest.item_place(itemstack, placer, pointed_thing)
+ return
+ end
+
local pos = pointed_thing.above
minetest.item_place_node(itemstack, placer, pointed_thing)
local meta = minetest.get_meta(pos)
if not pointed_thing.type == "node" then
return
end
+
+ local sneak = placer:get_player_control().sneak
+ local noddef = minetest.registered_nodes[minetest.get_node(pointed_thing.under).name]
+
+ if not sneak and noddef.on_rightclick then
+ minetest.item_place(itemstack, placer, pointed_thing)
+ return
+ end
+
local buildable = minetest.registered_nodes[minetest.get_node(pointed_thing.under).name].buildable_to
--replace buildable
if buildable and minetest.get_node_group(minetest.get_node(vector.new(pointed_thing.under.x,pointed_thing.under.y-1,pointed_thing.under.z)).name, "soil") > 0 then
sound = {breaks = {name="tool_break",gain=0.4}}, -- change this
groups = {flammable = 2, tool=1 },
--torch rightclick - hacked in since api doesn't call on_place correctly
- on_place = on_rightclick or function(itemstack, placer, pointed_thing)
+ on_place = function(itemstack, placer, pointed_thing)
local inv = placer:get_inventory()
local torch = inv:contains_item("main", "torch:torch")
local is_air = minetest.get_node(pointed_thing.above).name == "air"
local walkable = noddef.walkable
local sneak = placer:get_player_control().sneak
+ if not sneak and noddef.on_rightclick then
+ minetest.item_place(itemstack, placer, pointed_thing)
+ return
+ end
if torch and is_air and walkable then
if diff == 0 then
return
end
+ local sneak = placer:get_player_control().sneak
+ local noddef = minetest.registered_nodes[minetest.get_node(pointed_thing.under).name]
+ if not sneak and noddef.on_rightclick then
+ minetest.item_place(itemstack, placer, pointed_thing)
+ return
+ end
+
if minetest.get_item_group(minetest.get_node(pointed_thing.under).name, "rail")>0 then
minetest.add_entity(pointed_thing.under, "minecart:minecart")
else
if not pointed_thing.type == "node" then
return
end
+
+ local sneak = placer:get_player_control().sneak
+ local noddef = minetest.registered_nodes[minetest.get_node(pointed_thing.under).name]
+ if not sneak and noddef.on_rightclick then
+ minetest.item_place(itemstack, placer, pointed_thing)
+ return
+ end
+ local buildable = minetest.registered_nodes[minetest.get_node(pointed_thing.under).name].buildable_to
+ --replace buildable
+ if buildable and minetest.get_node_group(minetest.get_node(vector.new(pointed_thing.under.x,pointed_thing.under.y-1,pointed_thing.under.z)).name, "soil") > 0 then
+ return(minetest.item_place(itemstack, placer, pointed_thing))
+ end
+ --replace buildable above
+ local buildable = minetest.registered_nodes[minetest.get_node(pointed_thing.above).name].buildable_to
+ if buildable and minetest.get_node_group(minetest.get_node(vector.new(pointed_thing.above.x,pointed_thing.above.y-1,pointed_thing.above.z)).name, "soil") > 0 then
+ return(minetest.item_place(itemstack, placer, pointed_thing))
+ end
+ --normal
local pos = pointed_thing.above
if minetest.registered_nodes[minetest.get_node({x=pos.x,y=pos.y-1,z=pos.z}).name].walkable and minetest.get_node(pointed_thing.above).name == "air" then
minetest.set_node(pointed_thing.above, {name="minecart:rail"})
on_place = function(itemstack, placer, pointed_thing)
if not pointed_thing.type == "node" then
return
+ end
+ local sneak = placer:get_player_control().sneak
+ local noddef = minetest.registered_nodes[minetest.get_node(pointed_thing.under).name]
+ if not sneak and noddef.on_rightclick then
+ minetest.item_place(itemstack, placer, pointed_thing)
+ return
end
- local pos = pointed_thing.above
- if minetest.registered_nodes[minetest.get_node({x=pos.x,y=pos.y-1,z=pos.z}).name].walkable and minetest.get_node(pointed_thing.above).name == "air" then
- minetest.add_node(pointed_thing.above, {name="redstone:dust_0"})
- itemstack:take_item(1)
- --print(minetest.get_node(pointed_thing.above).param1)
- --minetest.after(0,function(pointed_thing)
- -- redstone.add(pos)
- --end,pointed_thing)
+
+ local _,worked = minetest.item_place(ItemStack("redstone:dust_0"), placer, pointed_thing)
+ if worked then
+ itemstack:take_item()
return(itemstack)
end
+
+
+ --minetest.add_node(pointed_thing.above, {name="redstone:dust_0"})
+ --itemstack:take_item(1)
+ --minetest.sound_play("stone", {pos=pointed_thing.above})
+ --return(itemstack)
+ --end
end,
})
+minetest.register_craft({
+ type = "shapeless",
+ output = "redstone:dust",
+ recipe = {"redstone:dust"},
+})
--8 power levels 8 being the highest
local color = 0
type = "fixed",
fixed = {-1/2, -1/2, -1/2, 1/2, -1/2+1/16, 1/2},
},
- groups={dig_immediate=1,attached=1,redstone_dust=1,redstone=1,redstone_power=i},
+ sounds = main.stoneSound(),
+ groups={dig_immediate=1,attached_node=1,redstone_dust=1,redstone=1,redstone_power=i},
drop="redstone:dust",
on_construct = function(pos)
redstone.collect_info(pos)