This commit is contained in:
tchncs 2016-02-07 19:18:03 +01:00
commit f39b305fb8
34 changed files with 4631 additions and 111 deletions

View File

@ -110,6 +110,24 @@ doors.register_trapdoor(name, def)
will be overwritten by the trapdoor registration function
}
Fence API
---------
Allows creation of new fences with "fencelike" drawtype.
default.register_fence(name, item definition)
^ Registers a new fence. Custom fields texture and material are required, as
^ are name and description. The rest is optional. You can pass most normal
^ nodedef fields here except drawtype. The fence group will always be added
^ for this node.
#fence definition
name = "default:fence_wood",
description = "Wooden Fence",
texture = "default_wood.png",
material = "default:wood",
groups = {choppy=2, oddly_breakable_by_hand = 2, flammable = 2},
sounds = default.node_sound_wood_defaults(),
Farming API
-----------
The farming API allows you to easily register plants and hoes.

20
mods/boats/README.txt Normal file
View File

@ -0,0 +1,20 @@
Minetest 0.4 mod: boats
=======================
by PilzAdam, slightly modified for NeXt
changed by TenPlus1 to add some new features
- boat is destroyed when crashing (drops 3 wood)
- boat turns faster
- used model from ds_rowboat mod
License of source code:
-----------------------
WTFPL
License of media (textures and sounds):
---------------------------------------
WTFPL
Authors of media files:
-----------------------
textures: Zeg9
model: thetoon and Zeg9, modified by PavelS(SokolovPavel)

2
mods/boats/depends.txt Normal file
View File

@ -0,0 +1,2 @@
default
mobs?

331
mods/boats/init.lua Normal file
View File

@ -0,0 +1,331 @@
handlers = {}
minetest.register_on_leaveplayer(function(player)
handlers[player:get_player_name()] = nil
end)
--
-- Helper functions
--
local function is_water(pos)
return minetest.get_item_group(minetest.get_node(pos).name, "water") ~= 0
end
local function get_sign(i)
if i == 0 then
return 0
else
return i / math.abs(i)
end
end
local function get_velocity(v, yaw, y)
local x = -math.sin(yaw) * v
local z = math.cos(yaw) * v
return {x = x, y = y, z = z}
end
local square = math.sqrt
local function get_v(v)
return square(v.x *v.x + v.z *v.z)
end
--
-- Boat entity
--
local boat = {
physical = true,
collisionbox = {-0.5, -0.4, -0.5, 0.5, 0.3, 0.5},
visual = "mesh",
mesh = "rowboat.x",
textures = {"default_wood.png"},
driver = nil,
v = 0,
last_v = 0,
removed = false
}
function boat.on_rightclick(self, clicker)
if not clicker or not clicker:is_player() then
return
end
local name = clicker:get_player_name()
if self.driver and clicker == self.driver then
handlers[name] = nil
self.driver = nil
clicker:set_detach()
default.player_attached[name] = false
default.player_set_animation(clicker, "stand" , 30)
local pos = clicker:getpos()
minetest.after(0.1, function()
clicker:setpos({x=pos.x, y=pos.y+0.2, z=pos.z})
end)
elseif not self.driver then
if handlers[name] and handlers[name].driver then
handlers[name].driver = nil
end
handlers[name] = self.object:get_luaentity()
self.driver = clicker
clicker:set_attach(self.object, "",
{x = 0, y = 11, z = -3}, {x = 0, y = 0, z = 0})
default.player_attached[name] = true
minetest.after(0.2, function()
default.player_set_animation(clicker, "sit" , 30)
end)
self.object:setyaw(clicker:get_look_yaw() - math.pi / 2)
end
end
function boat.on_activate(self, staticdata, dtime_s)
if mobs and mobs.entity and mobs.entity == false then
self.object:remove()
return
end
self.object:set_armor_groups({immortal = 1})
self.v = 0
self.v2 = self.v
self.last_v = self.v
self.count = 0
end
function boat.on_punch(self, puncher)
if not puncher or not puncher:is_player() or self.removed then
return
end
if self.driver and puncher == self.driver then
local name = puncher:get_player_name()
puncher:set_detach()
self.driver = nil
handlers[name] = nil
default.player_attached[name] = false
end
if not self.driver then
self.removed = true
if not minetest.setting_getbool("creative_mode") then
local inv = puncher:get_inventory()
if inv:room_for_item("main", "boats:boat") then
inv:add_item("main", "boats:boat")
else
minetest.add_item(self.object:getpos(), "boats:boat")
end
end
self.object:remove()
end
end
function boat.on_step(self, dtime)
-- after 10 seconds remove boat and drop as item if not boarded
self.count = self.count + dtime
if self.count > 10 then
--minetest.add_item(self.object:getpos(), "boats:boat")
--self.object:remove()
return
end
self.v = get_v(self.object:getvelocity()) * get_sign(self.v)
if self.driver then
self.count = 0
local ctrl = self.driver:get_player_control()
local yaw = self.object:getyaw()
if ctrl.up then
self.v = self.v + 0.1
elseif ctrl.down then
self.v = self.v - 0.1
end
if ctrl.left then
if self.v < 0 then
self.object:setyaw(yaw - (1 + dtime) * 0.08) -- 0.03 changed to speed up turning
else
self.object:setyaw(yaw + (1 + dtime) * 0.08) -- 0.03
end
elseif ctrl.right then
if self.v < 0 then
self.object:setyaw(yaw + (1 + dtime) * 0.08) -- 0.03
else
self.object:setyaw(yaw - (1 + dtime) * 0.08) -- 0.03
end
end
end
local velo = self.object:getvelocity()
if self.v == 0 and velo.x == 0 and velo.y == 0 and velo.z == 0 then
--self.object:setpos(self.object:getpos())
return
end
local s = get_sign(self.v)
self.v = self.v - 0.02 * s
if s ~= get_sign(self.v) then
self.object:setvelocity({x = 0, y = 0, z = 0})
self.v = 0
return
end
if math.abs(self.v) > 4.5 then
self.v = 4.5 * get_sign(self.v)
end
local p = self.object:getpos()
local new_velo = {x = 0, y = 0, z = 0}
local new_acce = {x = 0, y = 0, z = 0}
p.y = p.y - 0.5
if not is_water(p) then
local nodedef = minetest.registered_nodes[minetest.get_node(p).name]
if (not nodedef) or nodedef.walkable then
self.v = 0
new_acce = {x = 0, y = 0, z = 0} -- y was 1
else
new_acce = {x = 0, y = -9.8, z = 0}
end
new_velo = get_velocity(self.v, self.object:getyaw(), self.object:getvelocity().y)
--self.object:setpos(self.object:getpos())
else
p.y = p.y + 1
if is_water(p) then
local y = self.object:getvelocity().y
if y >= 4.5 then
y = 4.5
elseif y < 0 then
new_acce = {x = 0, y = 20, z = 0}
else
new_acce = {x = 0, y = 5, z = 0}
end
new_velo = get_velocity(self.v, self.object:getyaw(), y)
--self.object:setpos(self.object:getpos())
else
new_acce = {x = 0, y = 0, z = 0}
if math.abs(self.object:getvelocity().y) < 1 then
local pos = self.object:getpos()
pos.y = math.floor(pos.y) + 0.5
self.object:setpos(pos)
new_velo = get_velocity(self.v, self.object:getyaw(), 0)
else
new_velo = get_velocity(self.v, self.object:getyaw(), self.object:getvelocity().y)
--self.object:setpos(self.object:getpos())
end
end
end
self.object:setvelocity(new_velo)
self.object:setacceleration(new_acce)
-- if boat comes to sudden stop then it has crashed, destroy boat and drop 3x wood
if self.v2 - self.v >= 3 then
if self.driver then
--print ("Crash! with driver", self.v2 - self.v)
self.driver:set_detach()
default.player_attached[self.driver:get_player_name()] = false
default.player_set_animation(self.driver, "stand" , 30)
else
--print ("Crash! no driver")
end
minetest.add_item(self.object:getpos(), "default:wood 3")
self.object:remove()
return
end
self.v2 = self.v
end
minetest.register_entity("boats:boat", boat)
minetest.register_craftitem("boats:boat", {
description = "Boat",
inventory_image = "rowboat_inventory.png",
wield_image = "rowboat_wield.png",
wield_scale = {x = 2, y = 2, z = 1},
liquids_pointable = true,
on_place = function(itemstack, placer, pointed_thing)
if pointed_thing.type ~= "node"
or not is_water(pointed_thing.under) then
return
end
pointed_thing.under.y = pointed_thing.under.y + 0.5
minetest.add_entity(pointed_thing.under, "boats:boat")
if not minetest.setting_getbool("creative_mode") then
itemstack:take_item()
end
return itemstack
end,
})
minetest.register_craft({
output = "boats:boat",
recipe = {
{"", "", ""},
{"group:wood", "", "group:wood"},
{"group:wood", "group:wood", "group:wood"},
},
})
minetest.register_alias("ds_rowboat:ds_rowboat", "boats:boat")
print ("[MOD] Boats loaded")

File diff suppressed because it is too large Load Diff

760
mods/boats/models/rowboat.x Normal file
View File

@ -0,0 +1,760 @@
xof 0303txt 0032
Frame Root {
FrameTransformMatrix {
1.000000, 0.000000, 0.000000, 0.000000,
0.000000,-0.000000, 1.000000, 0.000000,
0.000000, 1.000000, 0.000000, 0.000000,
0.000000, 0.000000, 0.000000, 1.000000;;
}
Frame Cube_000 {
FrameTransformMatrix {
1.000000, 0.000000, 0.000000, 0.000000,
0.000000, 1.000000, 0.000000, 0.000000,
0.000000, 0.000000, 1.000000, 0.000000,
0.000000, 0.000000, 0.000000, 1.000000;;
}
Mesh { // Cube_000 mesh
240;
6.000000; 3.999999; 2.376923;,
5.999998;-8.000001; 2.376923;,
5.999998;-8.000001; 4.376923;,
6.000001; 3.999999; 4.376923;,
-2.000000; 8.000000; 2.376923;,
2.000000; 8.000000; 2.376923;,
2.000001; 8.000000; 4.376923;,
-1.999999; 8.000000; 4.376923;,
-6.000000; 4.000000; 4.376923;,
-6.000001;-8.000000; 4.376923;,
-6.000001;-7.999999; 2.376923;,
-6.000000; 4.000000; 2.376923;,
-3.999999; 6.000001; 2.376923;,
-1.999999; 6.000000; 2.376923;,
-2.000001;-8.000002; 2.376923;,
-4.000001;-8.000000; 2.376923;,
-2.000000; 4.000000;-1.623077;,
-2.000001;-7.999999;-1.623077;,
1.999999;-8.000001;-1.623077;,
2.000000; 4.000000;-1.623077;,
-2.000000; 4.000000; 0.376923;,
2.000000; 3.999999; 0.376923;,
1.999999;-8.000001; 0.376923;,
-2.000001;-8.000000; 0.376923;,
-2.000000; 4.000000;-1.623077;,
2.000000; 4.000000;-1.623077;,
2.000000; 3.999999; 0.376923;,
-2.000000; 4.000000; 0.376923;,
2.000000; 4.000000;-1.623077;,
1.999999;-8.000001;-1.623077;,
1.999999;-8.000001; 0.376923;,
2.000000; 3.999999; 0.376923;,
1.999999;-8.000001;-1.623077;,
-2.000001;-7.999999;-1.623077;,
-2.000001;-8.000000; 0.376923;,
1.999999;-8.000001; 0.376923;,
-2.000000; 4.000000; 0.376923;,
-2.000001;-8.000000; 0.376923;,
-2.000001;-7.999999;-1.623077;,
-2.000000; 4.000000;-1.623077;,
-4.000001;-8.000000; 0.376923;,
-4.000001;-10.000000; 0.376923;,
4.000000;-10.000000; 0.376923;,
3.999999;-8.000000; 0.376923;,
-4.000000;-7.999999; 4.376923;,
4.000000;-8.000001; 4.376923;,
3.999999;-10.000001; 4.376923;,
-4.000001;-10.000000; 4.376923;,
-4.000001;-8.000000; 0.376923;,
3.999999;-8.000000; 0.376923;,
4.000000;-8.000001; 4.376923;,
-4.000000;-7.999999; 4.376923;,
3.999999;-8.000000; 0.376923;,
4.000000;-10.000000; 0.376923;,
3.999999;-10.000001; 4.376923;,
4.000000;-8.000001; 4.376923;,
4.000000;-10.000000; 0.376923;,
-4.000001;-10.000000; 0.376923;,
-4.000001;-10.000000; 4.376923;,
3.999999;-10.000001; 4.376923;,
-4.000000;-7.999999; 4.376923;,
-4.000001;-10.000000; 4.376923;,
-4.000001;-10.000000; 0.376923;,
-4.000001;-8.000000; 0.376923;,
4.000000; 4.000000; 2.376923;,
3.999999;-8.000001; 2.376923;,
5.999998;-8.000001; 2.376923;,
6.000000; 3.999999; 2.376923;,
4.000001; 4.000000; 4.376923;,
6.000001; 3.999999; 4.376923;,
5.999998;-8.000001; 4.376923;,
4.000000;-8.000001; 4.376923;,
4.000000; 4.000000; 2.376923;,
6.000000; 3.999999; 2.376923;,
6.000001; 3.999999; 4.376923;,
4.000001; 4.000000; 4.376923;,
5.999998;-8.000001; 2.376923;,
3.999999;-8.000001; 2.376923;,
4.000000;-8.000001; 4.376923;,
5.999998;-8.000001; 4.376923;,
4.000001; 4.000000; 4.376923;,
4.000000;-8.000001; 4.376923;,
3.999999;-8.000001; 2.376923;,
4.000000; 4.000000; 2.376923;,
2.000000; 6.000000; 0.376923;,
1.999999;-8.000001; 0.376923;,
3.999999;-8.000000; 0.376923;,
4.000000; 6.000000; 0.376923;,
2.000001; 6.000000; 2.376923;,
4.000001; 5.999999; 2.376923;,
3.999999;-8.000001; 2.376923;,
1.999999;-8.000000; 2.376923;,
2.000000; 6.000000; 0.376923;,
4.000000; 6.000000; 0.376923;,
4.000001; 5.999999; 2.376923;,
2.000001; 6.000000; 2.376923;,
4.000000; 6.000000; 0.376923;,
3.999999;-8.000000; 0.376923;,
3.999999;-8.000001; 2.376923;,
4.000001; 5.999999; 2.376923;,
3.999999;-8.000000; 0.376923;,
1.999999;-8.000001; 0.376923;,
1.999999;-8.000000; 2.376923;,
3.999999;-8.000001; 2.376923;,
2.000001; 6.000000; 2.376923;,
1.999999;-8.000000; 2.376923;,
1.999999;-8.000001; 0.376923;,
2.000000; 6.000000; 0.376923;,
2.000001; 6.000000; 2.376923;,
2.000000; 4.000000; 2.376923;,
4.000000; 4.000000; 2.376923;,
4.000001; 5.999999; 2.376923;,
2.000001; 6.000000; 4.376923;,
4.000001; 5.999999; 4.376923;,
4.000001; 4.000000; 4.376923;,
2.000000; 4.000000; 4.376923;,
2.000001; 6.000000; 2.376923;,
4.000001; 5.999999; 2.376923;,
4.000001; 5.999999; 4.376923;,
2.000001; 6.000000; 4.376923;,
4.000001; 5.999999; 2.376923;,
4.000000; 4.000000; 2.376923;,
4.000001; 4.000000; 4.376923;,
4.000001; 5.999999; 4.376923;,
4.000000; 4.000000; 2.376923;,
2.000000; 4.000000; 2.376923;,
2.000000; 4.000000; 4.376923;,
4.000001; 4.000000; 4.376923;,
2.000001; 6.000000; 4.376923;,
2.000000; 4.000000; 4.376923;,
2.000000; 4.000000; 2.376923;,
2.000001; 6.000000; 2.376923;,
-3.999999; 6.000001; 2.376923;,
-4.000000; 4.000000; 2.376923;,
-2.000000; 4.000000; 2.376923;,
-1.999999; 6.000000; 2.376923;,
-3.999999; 6.000001; 4.376923;,
-1.999999; 6.000000; 4.376923;,
-2.000000; 4.000000; 4.376923;,
-4.000000; 3.999999; 4.376923;,
-3.999999; 6.000001; 2.376923;,
-1.999999; 6.000000; 2.376923;,
-1.999999; 6.000000; 4.376923;,
-3.999999; 6.000001; 4.376923;,
-1.999999; 6.000000; 2.376923;,
-2.000000; 4.000000; 2.376923;,
-2.000000; 4.000000; 4.376923;,
-1.999999; 6.000000; 4.376923;,
-2.000000; 4.000000; 2.376923;,
-4.000000; 4.000000; 2.376923;,
-4.000000; 3.999999; 4.376923;,
-2.000000; 4.000000; 4.376923;,
-3.999999; 6.000001; 4.376923;,
-4.000000; 3.999999; 4.376923;,
-4.000000; 4.000000; 2.376923;,
-3.999999; 6.000001; 2.376923;,
-2.000000; 8.000000; 2.376923;,
-1.999999; 6.000000; 2.376923;,
2.000001; 6.000000; 2.376923;,
2.000000; 8.000000; 2.376923;,
-1.999999; 8.000000; 4.376923;,
2.000001; 8.000000; 4.376923;,
2.000001; 6.000000; 4.376923;,
-1.999999; 6.000000; 4.376923;,
2.000000; 8.000000; 2.376923;,
2.000001; 6.000000; 2.376923;,
2.000001; 6.000000; 4.376923;,
2.000001; 8.000000; 4.376923;,
2.000001; 6.000000; 2.376923;,
-1.999999; 6.000000; 2.376923;,
-1.999999; 6.000000; 4.376923;,
2.000001; 6.000000; 4.376923;,
-1.999999; 8.000000; 4.376923;,
-1.999999; 6.000000; 4.376923;,
-1.999999; 6.000000; 2.376923;,
-2.000000; 8.000000; 2.376923;,
-2.000000; 6.000000; 0.376923;,
-2.000000; 4.000000; 0.376923;,
2.000000; 3.999999; 0.376923;,
2.000000; 6.000000; 0.376923;,
-1.999999; 6.000000; 2.376923;,
2.000001; 6.000000; 2.376923;,
2.000000; 4.000000; 2.376923;,
-2.000000; 4.000000; 2.376923;,
-2.000000; 6.000000; 0.376923;,
2.000000; 6.000000; 0.376923;,
2.000001; 6.000000; 2.376923;,
-1.999999; 6.000000; 2.376923;,
2.000000; 6.000000; 0.376923;,
2.000000; 3.999999; 0.376923;,
2.000000; 4.000000; 2.376923;,
2.000001; 6.000000; 2.376923;,
2.000000; 3.999999; 0.376923;,
-2.000000; 4.000000; 0.376923;,
-2.000000; 4.000000; 2.376923;,
2.000000; 4.000000; 2.376923;,
-1.999999; 6.000000; 2.376923;,
-2.000000; 4.000000; 2.376923;,
-2.000000; 4.000000; 0.376923;,
-2.000000; 6.000000; 0.376923;,
-6.000000; 4.000000; 2.376923;,
-6.000001;-7.999999; 2.376923;,
-4.000001;-8.000000; 2.376923;,
-4.000000; 4.000000; 2.376923;,
-6.000000; 4.000000; 4.376923;,
-4.000000; 3.999999; 4.376923;,
-4.000000;-7.999999; 4.376923;,
-6.000001;-8.000000; 4.376923;,
-6.000000; 4.000000; 2.376923;,
-4.000000; 4.000000; 2.376923;,
-4.000000; 3.999999; 4.376923;,
-6.000000; 4.000000; 4.376923;,
-4.000000; 4.000000; 2.376923;,
-4.000001;-8.000000; 2.376923;,
-4.000000;-7.999999; 4.376923;,
-4.000000; 3.999999; 4.376923;,
-4.000001;-8.000000; 2.376923;,
-6.000001;-7.999999; 2.376923;,
-6.000001;-8.000000; 4.376923;,
-4.000000;-7.999999; 4.376923;,
-4.000000; 6.000001; 0.376923;,
-4.000001;-8.000000; 0.376923;,
-2.000001;-8.000000; 0.376923;,
-2.000000; 6.000000; 0.376923;,
-4.000000; 6.000001; 0.376923;,
-2.000000; 6.000000; 0.376923;,
-1.999999; 6.000000; 2.376923;,
-3.999999; 6.000001; 2.376923;,
-2.000000; 6.000000; 0.376923;,
-2.000001;-8.000000; 0.376923;,
-2.000001;-8.000002; 2.376923;,
-1.999999; 6.000000; 2.376923;,
-2.000001;-8.000000; 0.376923;,
-4.000001;-8.000000; 0.376923;,
-4.000001;-8.000000; 2.376923;,
-2.000001;-8.000002; 2.376923;,
-3.999999; 6.000001; 2.376923;,
-4.000001;-8.000000; 2.376923;,
-4.000001;-8.000000; 0.376923;,
-4.000000; 6.000001; 0.376923;;
60;
4;0,1,2,3;,
4;4,5,6,7;,
4;8,9,10,11;,
4;12,13,14,15;,
4;16,17,18,19;,
4;20,21,22,23;,
4;24,25,26,27;,
4;28,29,30,31;,
4;32,33,34,35;,
4;36,37,38,39;,
4;40,41,42,43;,
4;44,45,46,47;,
4;48,49,50,51;,
4;52,53,54,55;,
4;56,57,58,59;,
4;60,61,62,63;,
4;64,65,66,67;,
4;68,69,70,71;,
4;72,73,74,75;,
4;76,77,78,79;,
4;80,81,82,83;,
4;84,85,86,87;,
4;88,89,90,91;,
4;92,93,94,95;,
4;96,97,98,99;,
4;100,101,102,103;,
4;104,105,106,107;,
4;108,109,110,111;,
4;112,113,114,115;,
4;116,117,118,119;,
4;120,121,122,123;,
4;124,125,126,127;,
4;128,129,130,131;,
4;132,133,134,135;,
4;136,137,138,139;,
4;140,141,142,143;,
4;144,145,146,147;,
4;148,149,150,151;,
4;152,153,154,155;,
4;156,157,158,159;,
4;160,161,162,163;,
4;164,165,166,167;,
4;168,169,170,171;,
4;172,173,174,175;,
4;176,177,178,179;,
4;180,181,182,183;,
4;184,185,186,187;,
4;188,189,190,191;,
4;192,193,194,195;,
4;196,197,198,199;,
4;200,201,202,203;,
4;204,205,206,207;,
4;208,209,210,211;,
4;212,213,214,215;,
4;216,217,218,219;,
4;220,221,222,223;,
4;224,225,226,227;,
4;228,229,230,231;,
4;232,233,234,235;,
4;236,237,238,239;;
MeshNormals { // Cube_000 normals
60;
-1.000000; 0.000000; 0.000000;,
0.000000;-1.000000;-0.000000;,
1.000000;-0.000000; 0.000000;,
0.000000; 0.000000;-1.000000;,
0.000000; 0.000000; 1.000000;,
0.000000; 0.000000;-1.000000;,
-0.000000;-1.000000;-0.000000;,
-1.000000; 0.000000; 0.000000;,
0.000000; 1.000000; 0.000000;,
1.000000;-0.000000;-0.000000;,
0.000000; 0.000000; 1.000000;,
0.000000; 0.000000;-1.000000;,
-0.000000;-1.000000;-0.000000;,
-1.000000; 0.000000;-0.000000;,
0.000000; 1.000000; 0.000000;,
1.000000;-0.000000;-0.000000;,
0.000000; 0.000000; 1.000000;,
0.000000; 0.000000;-1.000000;,
-0.000000;-1.000000;-0.000000;,
0.000000; 1.000000; 0.000000;,
1.000000;-0.000000;-0.000000;,
0.000000; 0.000000; 1.000000;,
0.000000; 0.000000;-1.000000;,
-0.000000;-1.000000;-0.000001;,
-1.000000; 0.000000; 0.000000;,
0.000000; 1.000000; 0.000000;,
1.000000;-0.000000;-0.000000;,
0.000000; 0.000000; 1.000000;,
0.000000; 0.000000;-1.000000;,
-0.000000;-1.000000; 0.000000;,
-1.000000; 0.000000; 0.000000;,
0.000000; 1.000000; 0.000000;,
1.000000;-0.000001;-0.000000;,
0.000000; 0.000000; 1.000000;,
0.000000; 0.000000;-1.000000;,
-0.000001;-1.000000; 0.000000;,
-1.000000; 0.000001;-0.000000;,
-0.000000; 1.000000; 0.000000;,
1.000000;-0.000000;-0.000000;,
0.000000; 0.000000; 1.000000;,
0.000000; 0.000000;-1.000000;,
-1.000000;-0.000000; 0.000000;,
-0.000000; 1.000000;-0.000000;,
1.000000; 0.000000;-0.000000;,
0.000000; 0.000000; 1.000000;,
0.000000; 0.000000;-1.000000;,
0.000000;-1.000000;-0.000000;,
-1.000000; 0.000000; 0.000000;,
0.000000; 1.000000;-0.000000;,
1.000000;-0.000000;-0.000000;,
0.000000; 0.000000; 1.000000;,
0.000000; 0.000000;-1.000000;,
-0.000000;-1.000000;-0.000000;,
-1.000000; 0.000000; 0.000000;,
0.000000; 1.000000; 0.000000;,
0.000000; 0.000000; 1.000000;,
-0.000000;-1.000000;-0.000000;,
-1.000000; 0.000000; 0.000000;,
0.000001; 1.000000; 0.000001;,
1.000000;-0.000000;-0.000000;;
60;
4;0,0,0,0;,
4;1,1,1,1;,
4;2,2,2,2;,
4;3,3,3,3;,
4;4,4,4,4;,
4;5,5,5,5;,
4;6,6,6,6;,
4;7,7,7,7;,
4;8,8,8,8;,
4;9,9,9,9;,
4;10,10,10,10;,
4;11,11,11,11;,
4;12,12,12,12;,
4;13,13,13,13;,
4;14,14,14,14;,
4;15,15,15,15;,
4;16,16,16,16;,
4;17,17,17,17;,
4;18,18,18,18;,
4;19,19,19,19;,
4;20,20,20,20;,
4;21,21,21,21;,
4;22,22,22,22;,
4;23,23,23,23;,
4;24,24,24,24;,
4;25,25,25,25;,
4;26,26,26,26;,
4;27,27,27,27;,
4;28,28,28,28;,
4;29,29,29,29;,
4;30,30,30,30;,
4;31,31,31,31;,
4;32,32,32,32;,
4;33,33,33,33;,
4;34,34,34,34;,
4;35,35,35,35;,
4;36,36,36,36;,
4;37,37,37,37;,
4;38,38,38,38;,
4;39,39,39,39;,
4;40,40,40,40;,
4;41,41,41,41;,
4;42,42,42,42;,
4;43,43,43,43;,
4;44,44,44,44;,
4;45,45,45,45;,
4;46,46,46,46;,
4;47,47,47,47;,
4;48,48,48,48;,
4;49,49,49,49;,
4;50,50,50,50;,
4;51,51,51,51;,
4;52,52,52,52;,
4;53,53,53,53;,
4;54,54,54,54;,
4;55,55,55,55;,
4;56,56,56,56;,
4;57,57,57,57;,
4;58,58,58,58;,
4;59,59,59,59;;
} // End of Cube_000 normals
MeshTextureCoords { // Cube_000 UV coordinates
240;
6.000000; 1.000000;,
0.000000; 1.000000;,
0.000000; 0.000000;,
6.000000; 0.000000;,
2.000000; 1.000000;,
0.000000; 1.000000;,
0.000000; 0.000000;,
2.000000; 0.000000;,
6.000000; 1.000000;,
0.000000; 1.000000;,
0.000000; 0.000000;,
6.000000; 0.000000;,
7.000000; 0.000000;,
7.000000; 1.000000;,
0.000000; 1.000000;,
0.000000; 0.000000;,
5.000000; 1.000000;,
0.000000; 1.000000;,
0.000000;-1.000000;,
5.000000;-1.000000;,
6.000000;-1.000000;,
6.000000; 1.000000;,
0.000000; 1.000000;,
0.000000;-1.000000;,
2.000000; 1.000000;,
0.000000; 1.000000;,
0.000000; 0.000000;,
2.000000; 0.000000;,
6.000000; 1.000000;,
0.000000; 1.000000;,
0.000000; 0.000000;,
6.000000; 0.000000;,
3.000000; 0.999999;,
0.000000; 1.000000;,
0.000000; 0.000001;,
3.000000; 0.000000;,
7.000000; 1.000000;,
0.000000; 1.000000;,
0.000000; 0.000000;,
7.000000; 0.000000;,
1.000000; 1.000000;,
0.000001; 1.000000;,
0.000000;-4.000000;,
1.000000;-4.000000;,
1.000000;-3.000000;,
0.999999; 1.000000;,
0.000000; 1.000000;,
0.000000;-3.000000;,
4.000000; 1.000000;,
0.000000; 1.000000;,
0.000000;-1.000000;,
4.000000;-1.000000;,
1.000000; 1.000000;,
0.000000; 1.000000;,
0.000000;-1.000000;,
1.000000;-1.000000;,
5.000000; 1.000000;,
0.000000; 1.000000;,
0.000000;-0.999999;,
5.000000;-1.000000;,
1.000000; 1.000000;,
0.000000; 1.000000;,
0.000000;-1.000000;,
1.000000;-1.000000;,
5.375000; 1.000000;,
0.000000; 1.000000;,
0.000000; 0.000000;,
5.375000; 0.000000;,
5.375000; 0.000000;,
5.375000; 1.000000;,
0.000000; 1.000000;,
0.000000; 0.000000;,
1.000000; 1.000000;,
0.000000; 1.000000;,
0.000000; 0.000000;,
1.000000; 0.000000;,
1.000000; 1.000000;,
0.000000; 1.000000;,
0.000000; 0.000000;,
1.000000; 0.000000;,
7.000000; 1.000000;,
0.000000; 1.000000;,
0.000000; 0.000000;,
7.000000; 0.000000;,
6.000000; 1.000000;,
0.000000; 1.000000;,
0.000000; 0.000000;,
6.000000; 0.000000;,
7.000000; 0.000000;,
7.000000; 1.000000;,
0.000000; 1.000000;,
0.000000; 0.000000;,
1.000000; 1.000000;,
0.000000; 1.000000;,
0.000000; 0.000000;,
1.000000; 0.000000;,
7.000000; 1.000000;,
0.000000; 1.000000;,
0.000000; 0.000000;,
7.000000; 0.000000;,
1.000000; 1.000000;,
0.000000; 1.000000;,
0.000000; 0.000000;,
1.000000; 0.000000;,
7.000000; 1.000000;,
0.000000; 1.000000;,
0.000000; 0.000000;,
7.000000; 0.000000;,
1.000000; 1.000000;,
0.000000; 1.000000;,
0.000000; 0.000000;,
1.000000; 0.000000;,
1.000000; 0.000000;,
1.000000; 1.000000;,
0.000000; 1.000000;,
0.000000; 0.000000;,
1.000000; 1.000000;,
0.000000; 1.000000;,
0.000000; 0.000000;,
1.000000; 0.000000;,
1.000000; 1.000000;,
0.000000; 1.000000;,
0.000000; 0.000000;,
1.000000; 0.000000;,
1.000000; 1.000000;,
0.000000; 1.000000;,
0.000000; 0.000000;,
1.000000; 0.000000;,
1.000000; 1.000000;,
0.000000; 1.000000;,
0.000000; 0.000000;,
1.000000; 0.000000;,
1.000000; 1.000000;,
0.000000; 1.000000;,
0.000000; 0.000000;,
1.000000; 0.000000;,
1.000000; 0.000000;,
1.000000; 1.000000;,
0.000000; 1.000000;,
0.000000; 0.000000;,
1.000000; 1.000000;,
0.000000; 1.000000;,
0.000000; 0.000000;,
1.000000; 0.000000;,
1.000000; 1.000000;,
0.000000; 1.000000;,
0.000000; 0.000000;,
1.000000; 0.000000;,
1.000000; 1.000000;,
0.000000; 1.000000;,
0.000000; 0.000000;,
1.000000; 0.000000;,
1.000000; 1.000000;,
0.000000; 1.000000;,
0.000000; 0.000000;,
1.000000; 0.000000;,
1.000000; 1.000000;,
0.000000; 1.000000;,
0.000000;-1.000000;,
1.000000;-1.000000;,
1.000000;-1.000000;,
0.999999; 1.000000;,
0.000000; 1.000000;,
0.000000;-1.000000;,
1.000000; 1.000000;,
0.000000; 1.000000;,
0.000000; 0.000000;,
1.000000; 0.000000;,
2.000000; 1.000000;,
0.000000; 1.000000;,
0.000000; 0.000001;,
2.000000; 0.000000;,
1.000000; 1.000000;,
0.000000; 1.000000;,
0.000000; 0.000000;,
1.000000; 0.000000;,
1.000000; 1.000000;,
0.000000; 1.000000;,
0.000000;-1.000000;,
1.000000;-1.000000;,
1.000000;-1.000000;,
0.999999; 1.000000;,
0.000000; 1.000000;,
0.000000;-1.000000;,
2.000000; 1.000000;,
0.000000; 1.000000;,
0.000000; 0.000000;,
2.000000; 0.000000;,
1.000000; 1.000000;,
0.000000; 1.000000;,
0.000000; 0.000000;,
1.000000; 0.000000;,
2.000000; 1.000000;,
0.000000; 1.000000;,
0.000000; 0.000001;,
2.000000; 0.000000;,
1.000000; 1.000000;,
0.000000; 1.000000;,
0.000000; 0.000000;,
1.000000; 0.000000;,
7.000000; 1.000000;,
0.000000; 1.000000;,
0.000000; 0.000000;,
7.000000; 0.000000;,
7.000000; 0.000000;,
7.000000; 1.000000;,
0.000000; 1.000000;,
0.000000; 0.000000;,
1.000000; 1.000000;,
0.000000; 1.000000;,
0.000000; 0.000000;,
1.000000; 0.000000;,
7.000000; 1.000000;,
0.000000; 1.000000;,
0.000000; 0.000000;,
7.000000; 0.000000;,
1.000000; 1.000000;,
0.000000; 1.000000;,
0.000000; 0.000000;,
1.000000; 0.000000;,
6.000000; 1.000000;,
0.000000; 1.000000;,
0.000000; 0.000000;,
6.000000; 0.000000;,
1.000000; 1.000000;,
0.000000; 1.000000;,
0.000000; 0.000000;,
1.000000; 0.000000;,
7.000000; 1.000000;,
0.000000; 1.000000;,
0.000000; 0.000000;,
7.000000; 0.000000;,
1.000000; 1.000000;,
0.000000; 1.000000;,
0.000000; 0.000000;,
1.000000; 0.000000;,
7.000000; 1.000000;,
0.000000; 1.000000;,
0.000000; 0.000000;,
7.000000; 0.000000;;
} // End of Cube_000 UV coordinates
MeshMaterialList { // Cube_000 material list
1;
60;
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0;;
Material Material {
0.640000; 0.640000; 0.640000; 1.000000;;
96.078431;
0.500000; 0.500000; 0.500000;;
0.000000; 0.000000; 0.000000;;
TextureFilename {"default_wood.png";}
}
} // End of Cube_000 material list
} // End of Cube_000 mesh
} // End of Cube_000
} // End of Root

Binary file not shown.

After

Width:  |  Height:  |  Size: 851 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 546 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 444 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 366 B

View File

@ -1,14 +1,16 @@
-- minetest/creative/init.lua
creative_inventory = {}
creative = {}
local player_inventory = {}
-- Create detached creative inventory after loading all mods
creative_inventory.init_creative_inventory = function(player)
creative.init_creative_inventory = function(player)
local player_name = player:get_player_name()
creative_inventory[player_name] = {}
creative_inventory[player_name].size = 0
creative_inventory[player_name].filter = nil
creative_inventory[player_name].start_i = 1
player_inventory[player_name] = {}
player_inventory[player_name].size = 0
player_inventory[player_name].filter = nil
player_inventory[player_name].start_i = 1
local inv = minetest.create_detached_inventory("creative_" .. player_name, {
allow_move = function(inv, from_list, from_index, to_list, to_index, count, player)
@ -41,18 +43,32 @@ creative_inventory.init_creative_inventory = function(player)
end,
})
creative_inventory.update(player_name, nil)
--print("creative inventory size: "..dump(creative_inventory.creative_inventory_size))
creative.update_creative_inventory(player_name, nil, 2)
--print("creative inventory size: "..dump(player_inventory[player_name].size))
end
function creative_inventory.update(player_name, filter)
local function tab_category(tab_id)
local id_category = {
nil, -- Reserved for crafting tab.
minetest.registered_items,
minetest.registered_nodes,
minetest.registered_tools,
minetest.registered_craftitems
}
-- If index out of range, show default ("All") page.
return id_category[tab_id] or id_category[2]
end
function creative.update_creative_inventory(player_name, filter, tab_id)
local creative_list = {}
local inv = minetest.get_inventory({type = "detached", name = "creative_" .. player_name})
for name, def in pairs(minetest.registered_items) do
for name, def in pairs(tab_category(tab_id)) do
if not (def.groups.not_in_creative_inventory == 1) and
def.description and def.description ~= "" and
(not filter or def.name:find(filter, 1, true)) then
(not filter or def.name:find(filter, 1, true) or
def.description:lower():find(filter, 1, true)) then
creative_list[#creative_list+1] = name
end
end
@ -60,7 +76,7 @@ function creative_inventory.update(player_name, filter)
table.sort(creative_list)
inv:set_size("main", #creative_list)
inv:set_list("main", creative_list)
creative_inventory[player_name].size = #creative_list
player_inventory[player_name].size = #creative_list
end
-- Create the trash field
@ -80,41 +96,55 @@ local trash = minetest.create_detached_inventory("creative_trash", {
})
trash:set_size("main", 1)
creative_inventory.set_creative_formspec = function(player, start_i, pagenum)
creative.set_creative_formspec = function(player, start_i, pagenum, tab_id)
local player_name = player:get_player_name()
local filter = creative_inventory[player_name].filter or ""
local filter = player_inventory[player_name].filter or ""
pagenum = math.floor(pagenum)
local pagemax = math.floor((creative_inventory[player_name].size - 1) / (6*4) + 1)
local pagemax = math.floor((player_inventory[player_name].size - 1) / (3*8) + 1)
tab_id = tab_id or 2
player:set_inventory_formspec(
"size[13,7.5]"..
--"image[6,0.6;1,2;player.png]"..
default.gui_bg..
default.gui_bg_img..
default.gui_slots..
"list[current_player;main;5,3.5;8,1;]"..
"list[current_player;main;5,4.75;8,3;8]"..
"list[current_player;craft;8,0;3,3;]"..
"list[current_player;craftpreview;12,1;1,1;]"..
"image[11,1;1,1;gui_furnace_arrow_bg.png^[transformR270]"..
"list[detached:creative_" .. player_name .. ";main;0.05,1;4,6;" .. tostring(start_i) .. "]"..
"tablecolumns[color;text;color;text]"..
"tableoptions[background=#00000000;highlight=#00000000;border=false]"..
"table[1.4,7.2;1.1,0.5;pagenum;#FFFF00," .. tostring(pagenum) .. ",#FFFFFF,/ " .. tostring(pagemax) .. "]"..
"button[0,7;1,1;creative_prev;<<]"..
"button[3.08,7;1,1;creative_next;>>]"..
"button[2.55,0.2;0.8,0.5;search;?]"..
"button[3.3,0.2;0.8,0.5;clear;X]"..
"tooltip[search;Search]"..
"tooltip[clear;Reset]"..
"listring[current_player;main]"..
"listring[current_player;craft]"..
"listring[current_player;main]"..
"listring[detached:creative_" .. player_name .. ";main]"..
"label[5,1.5;Trash:]"..
"list[detached:creative_trash;main;5,2;1,1;]"..
"field[0.3,0.3;2.6,1;filter;;" .. filter .. "]"..
default.get_hotbar_bg(5,3.5)
player:set_inventory_formspec([[
size[8,8.6]
image[4.06,3.4;0.8,0.8;creative_trash_icon.png]
list[current_player;main;0,4.7;8,1;]
list[current_player;main;0,5.85;8,3;8]
list[detached:creative_trash;main;4,3.3;1,1;]
tablecolumns[color;text;color;text]
tableoptions[background=#00000000;highlight=#00000000;border=false]
button[5.4,3.2;0.8,0.9;creative_prev;<]
button[7.25,3.2;0.8,0.9;creative_next;>]
button[2.1,3.4;0.8,0.5;search;?]
button[2.75,3.4;0.8,0.5;clear;X]
tooltip[search;Search]
tooltip[clear;Reset]
listring[current_player;main]
]] ..
"field[0.3,3.5;2.2,1;filter;;".. filter .."]"..
"listring[detached:creative_".. player_name ..";main]"..
"tabheader[0,0;tabs;Crafting,All,Nodes,Tools,Items;".. tostring(tab_id) ..";true;false]"..
"list[detached:creative_".. player_name ..";main;0,0;8,3;".. tostring(start_i) .."]"..
"table[6.05,3.35;1.15,0.5;pagenum;#FFFF00,".. tostring(pagenum) ..",#FFFFFF,/ ".. tostring(pagemax) .."]"..
default.get_hotbar_bg(0,4.7)..
default.gui_bg .. default.gui_bg_img .. default.gui_slots
)
end
creative.set_crafting_formspec = function(player)
player:set_inventory_formspec([[
size[8,8.6]
list[current_player;craft;2,0.75;3,3;]
list[current_player;craftpreview;6,1.75;1,1;]
list[current_player;main;0,4.7;8,1;]
list[current_player;main;0,5.85;8,3;8]
list[detached:creative_trash;main;0,2.75;1,1;]
image[0.06,2.85;0.8,0.8;creative_trash_icon.png]
image[5,1.75;1,1;gui_furnace_arrow_bg.png^[transformR270]
tabheader[0,0;tabs;Crafting,All,Nodes,Tools,Items;1;true;false]
listring[current_player;main]
listring[current_player;craft]
]] ..
default.get_hotbar_bg(0,4.7)..
default.gui_bg .. default.gui_bg_img .. default.gui_slots
)
end
@ -123,8 +153,8 @@ minetest.register_on_joinplayer(function(player)
if not minetest.setting_getbool("creative_mode") then
return
end
creative_inventory.init_creative_inventory(player)
creative_inventory.set_creative_formspec(player, 0, 1)
creative.init_creative_inventory(player)
creative.set_creative_formspec(player, 0, 1, 2)
end)
minetest.register_on_player_receive_fields(function(player, formname, fields)
@ -132,39 +162,51 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
return
end
-- Figure out current page from formspec
local current_page = 0
local player_name = player:get_player_name()
local formspec = player:get_inventory_formspec()
local start_i = formspec:match("list%[detached:creative_" .. player_name .. ";.*;(%d+)%]")
local inv_size = creative_inventory[player_name].size
local filter = formspec:match("filter;;([%w_:]+)") or ""
local start_i = formspec:match("list%[detached:creative_".. player_name ..";.*;(%d+)%]")
local tab_id = tonumber(formspec:match("tabheader%[.*;(%d+)%;.*%]"))
local inv_size = player_inventory[player_name].size
start_i = tonumber(start_i) or 0
if fields.creative_prev or start_i >= inv_size then
start_i = start_i - 4*6
elseif fields.creative_next or start_i < 0 then
start_i = start_i + 4*6
end
if fields.search or fields.clear then
if fields.clear then
creative_inventory[player_name].filter = ""
creative_inventory.update(player_name, nil)
else
creative_inventory[player_name].filter = fields.filter:lower()
creative_inventory.update(player_name, fields.filter:lower())
if fields.quit then
if tab_id == 1 then
creative.set_crafting_formspec(player)
end
elseif fields.tabs then
if tonumber(fields.tabs) == 1 then
creative.set_crafting_formspec(player)
else
creative.update_creative_inventory(player_name, filter, tonumber(fields.tabs))
creative.set_creative_formspec(player, 0, 1, tonumber(fields.tabs))
end
elseif fields.clear then
player_inventory[player_name].filter = ""
creative.update_creative_inventory(player_name, nil, tab_id)
creative.set_creative_formspec(player, 0, 1, tab_id)
elseif fields.search then
player_inventory[player_name].filter = fields.filter:lower()
creative.update_creative_inventory(player_name, fields.filter:lower(), tab_id)
creative.set_creative_formspec(player, 0, 1, tab_id)
else
if fields.creative_prev then
start_i = start_i - 3*8
if start_i < 0 then
start_i = inv_size - (inv_size % (3*8))
if inv_size == start_i then
start_i = math.max(0, inv_size - (3*8))
end
end
elseif fields.creative_next then
start_i = start_i + 3*8
if start_i >= inv_size then
start_i = 0
end
end
minetest.after(0, function()
creative_inventory.set_creative_formspec(player, 0, 1)
end)
end
if start_i >= inv_size then
start_i = 0
elseif start_i < 0 then
start_i = inv_size - (inv_size % (6*4))
creative.set_creative_formspec(player, start_i, start_i / (3*8) + 1, tab_id)
end
creative_inventory.set_creative_formspec(player, start_i, start_i / (6*4) + 1)
end)
if minetest.setting_getbool("creative_mode") then
@ -172,7 +214,7 @@ if minetest.setting_getbool("creative_mode") then
minetest.register_item(":", {
type = "none",
wield_image = "wieldhand.png",
wield_scale = {x=1,y=1,z=2.5},
wield_scale = {x=1, y=1, z=2.5},
range = 10,
tool_capabilities = {
full_punch_interval = 0.5,

Binary file not shown.

After

Width:  |  Height:  |  Size: 179 B

View File

@ -150,6 +150,11 @@ BlockMen (CC BY-SA 3.0):
sofar (CC BY-SA 3.0):
default_book_written.png, based on default_book.png
default_aspen_sapling
default_aspen_leaves
default_aspen_tree
default_aspen_tree_top, derived from default_pine_tree_top (by paramat)
default_aspen_wood, derived from default_pine_wood (by paramat)
Neuromancer (CC BY-SA 2.0):
default_cobble.png, based on texture by Brane praefect

View File

@ -29,17 +29,16 @@ minetest.register_craft({
})
minetest.register_craft({
output = 'default:stick 4',
output = 'default:aspen_wood 4',
recipe = {
{'group:wood'},
{'default:aspen_tree'},
}
})
minetest.register_craft({
output = 'default:fence_wood 2',
output = 'default:stick 4',
recipe = {
{'group:stick', 'group:stick', 'group:stick'},
{'group:stick', 'group:stick', 'group:stick'},
{'group:wood'},
}
})

View File

@ -209,6 +209,51 @@ function default.dig_up(pos, node, digger)
end
--
-- Fence registration helper
--
function default.register_fence(name, def)
minetest.register_craft({
output = name .. " 4",
recipe = {
{ def.material, 'group:stick', def.material },
{ def.material, 'group:stick', def.material },
}
})
local fence_texture = "default_fence_overlay.png^" .. def.texture ..
"^default_fence_overlay.png^[makealpha:255,126,126"
-- Allow almost everything to be overridden
local default_fields = {
paramtype = "light",
drawtype = "fencelike",
inventory_image = fence_texture,
wield_image = fence_texture,
tiles = { def.texture },
sunlight_propagates = true,
is_ground_content = false,
selection_box = {
type = "fixed",
fixed = {-1/7, -1/2, -1/7, 1/7, 1/2, 1/7},
},
groups = {},
}
for k, v in pairs(default_fields) do
if not def[k] then
def[k] = v
end
end
-- Always add to the fence group, even if no group provided
def.groups.fence = 1
def.texture = nil
def.material = nil
minetest.register_node(name, def)
end
--
-- Leafdecay
--

View File

@ -2,7 +2,6 @@
-- Aliases for map generator outputs
--
minetest.register_alias("mapgen_air", "air")
minetest.register_alias("mapgen_stone", "default:stone")
minetest.register_alias("mapgen_dirt", "default:dirt")
minetest.register_alias("mapgen_dirt_with_grass", "default:dirt_with_grass")
@ -379,6 +378,24 @@ function default.register_biomes()
humidity_point = 35,
})
minetest.register_biome({
name = "tundra_beach",
--node_dust = "",
node_top = "default:gravel",
depth_top = 1,
node_filler = "default:gravel",
depth_filler = 2,
--node_stone = "",
--node_water_top = "",
--depth_water_top = ,
--node_water = "",
--node_river_water = "",
y_min = -3,
y_max = 1,
heat_point = 15,
humidity_point = 35,
})
minetest.register_biome({
name = "tundra_ocean",
--node_dust = "",
@ -392,7 +409,7 @@ function default.register_biomes()
--node_water = "",
--node_river_water = "",
y_min = -112,
y_max = 1,
y_max = -4,
heat_point = 15,
humidity_point = 35,
})
@ -991,8 +1008,15 @@ function default.register_decorations()
minetest.register_decoration({
deco_type = "schematic",
place_on = {"default:dirt_with_grass"},
sidelen = 80,
fill_ratio = 0.0015,
sidelen = 16,
noise_params = {
offset = 0.002,
scale = 0.001,
spread = {x = 250, y = 250, z = 250},
seed = 2,
octaves = 3,
persist = 0.66
},
biomes = {"deciduous_forest"},
y_min = 1,
y_max = 31000,
@ -1154,6 +1178,60 @@ function default.register_decorations()
rotation = "random",
})
-- Aspen tree and log
minetest.register_decoration({
deco_type = "schematic",
place_on = {"default:dirt_with_grass"},
sidelen = 16,
noise_params = {
offset = 0.0,
scale = -0.03,
spread = {x = 250, y = 250, z = 250},
seed = 2,
octaves = 3,
persist = 0.66
},
biomes = {"deciduous_forest"},
y_min = 1,
y_max = 31000,
schematic = minetest.get_modpath("default").."/schematics/aspen_tree.mts",
flags = "place_center_x, place_center_z",
rotation = "random",
})
minetest.register_decoration({
deco_type = "schematic",
place_on = {"default:dirt_with_grass"},
sidelen = 16,
noise_params = {
offset = 0.0,
scale = -0.0015,
spread = {x = 250, y = 250, z = 250},
seed = 2,
octaves = 3,
persist = 0.66
},
biomes = {"deciduous_forest"},
y_min = 1,
y_max = 31000,
schematic = {
size = { x = 3, y = 3, z = 1},
data = {
{ name = "air", prob = 0 },
{ name = "air", prob = 0 },
{ name = "air", prob = 0 },
{ name = "default:aspen_tree", param2 = 12 },
{ name = "default:aspen_tree", param2 = 12 },
{ name = "default:aspen_tree", param2 = 12, prob = 127 },
{ name = "flowers:mushroom_red", prob = 63 },
{ name = "flowers:mushroom_brown", prob = 63 },
{ name = "air", prob = 0 },
},
},
flags = "place_center_x",
rotation = "random",
})
-- Large cactus
minetest.register_decoration({
@ -1334,8 +1412,8 @@ if mg_params.mgname == "v6" then
default.register_mgv6_decorations()
minetest.register_on_generated(default.generate_nyancats)
elseif mg_params.mgname ~= "singlenode" then
default.register_ores()
default.register_biomes()
default.register_ores()
default.register_decorations()
minetest.register_on_generated(default.generate_nyancats)
end

View File

@ -78,6 +78,10 @@ default:acacia_wood
default:acacia_leaves
default:acacia_sapling
default:aspen_tree
default:aspen_wood
default:aspen_leaves
default:aspen_sapling
Ores
----
(1. In stone 2. Block)
@ -147,6 +151,10 @@ default:sign_wall
default:ladder
default:fence_wood
default:fence_acacia_wood
default:fence_junglewood
default:fence_pine_wood
default:fence_aspen_wood
default:glass
default:obsidian_glass
@ -686,6 +694,65 @@ minetest.register_node("default:acacia_sapling", {
sounds = default.node_sound_leaves_defaults(),
})
minetest.register_node("default:aspen_tree", {
description = "Aspen Tree",
tiles = {"default_aspen_tree_top.png", "default_aspen_tree_top.png",
"default_aspen_tree.png"},
paramtype2 = "facedir",
is_ground_content = false,
groups = {tree = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2},
sounds = default.node_sound_wood_defaults(),
on_place = minetest.rotate_node
})
minetest.register_node("default:aspen_wood", {
description = "Aspen Wood Planks",
tiles = {"default_aspen_wood.png"},
is_ground_content = false,
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 3, wood = 1},
sounds = default.node_sound_wood_defaults(),
})
minetest.register_node("default:aspen_leaves", {
description = "Aspen Leaves",
drawtype = "allfaces_optional",
visual_scale = 1.3,
tiles = {"default_aspen_leaves.png"},
waving = 1,
paramtype = "light",
is_ground_content = false,
groups = {snappy = 3, leafdecay = 3, flammable = 2, leaves = 1},
drop = {
max_items = 1,
items = {
{items = {"default:aspen_sapling"}, rarity = 20},
{items = {"default:aspen_leaves"}}
}
},
sounds = default.node_sound_leaves_defaults(),
after_place_node = default.after_place_leaves,
})
minetest.register_node("default:aspen_sapling", {
description = "Aspen Tree Sapling",
drawtype = "plantlike",
visual_scale = 1.0,
tiles = {"default_aspen_sapling.png"},
inventory_image = "default_aspen_sapling.png",
wield_image = "default_aspen_sapling.png",
paramtype = "light",
sunlight_propagates = true,
walkable = false,
selection_box = {
type = "fixed",
fixed = {-0.3, -0.5, -0.3, 0.3, 0.35, 0.3}
},
groups = {snappy = 2, dig_immediate = 3, flammable = 2,
attached_node = 1, sapling = 1},
sounds = default.node_sound_leaves_defaults(),
})
--
-- Ores
--
@ -1611,26 +1678,45 @@ minetest.register_node("default:ladder", {
sounds = default.node_sound_wood_defaults(),
})
local fence_texture =
"default_fence_overlay.png^default_wood.png^default_fence_overlay.png^[makealpha:255,126,126"
minetest.register_node("default:fence_wood", {
default.register_fence("default:fence_wood", {
description = "Wooden Fence",
drawtype = "fencelike",
tiles = {"default_wood.png"},
inventory_image = fence_texture,
wield_image = fence_texture,
paramtype = "light",
sunlight_propagates = true,
is_ground_content = false,
selection_box = {
type = "fixed",
fixed = {-1/7, -1/2, -1/7, 1/7, 1/2, 1/7},
},
texture = "default_wood.png",
material = "default:wood",
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
sounds = default.node_sound_wood_defaults(),
sounds = default.node_sound_wood_defaults()
})
default.register_fence("default:fence_acacia_wood", {
description = "Acacia Fence",
texture = "default_acacia_wood.png",
material = "default:acacia_wood",
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
sounds = default.node_sound_wood_defaults()
})
default.register_fence("default:fence_junglewood", {
description = "Junglewood Fence",
texture = "default_junglewood.png",
material = "default:junglewood",
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
sounds = default.node_sound_wood_defaults()
})
default.register_fence("default:fence_pine_wood", {
description = "Pine Fence",
texture = "default_pine_wood.png",
material = "default:pine_wood",
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
sounds = default.node_sound_wood_defaults()
})
default.register_fence("default:fence_aspen_wood", {
description = "Aspen Fence",
texture = "default_aspen_wood.png",
material = "default:aspen_wood",
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
sounds = default.node_sound_wood_defaults()
})
minetest.register_node("default:glass", {
description = "Glass",

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 761 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 320 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 695 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 656 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 373 B

View File

@ -28,7 +28,8 @@ end
minetest.register_abm({
nodenames = {"default:sapling", "default:junglesapling",
"default:pine_sapling", "default:acacia_sapling"},
"default:pine_sapling", "default:acacia_sapling",
"default:aspen_sapling"},
interval = 10,
chance = 50,
action = function(pos, node)
@ -65,6 +66,10 @@ minetest.register_abm({
minetest.log("action", "An acacia sapling grows into a tree at "..
minetest.pos_to_string(pos))
default.grow_new_acacia_tree(pos)
elseif node.name == "default:aspen_sapling" then
minetest.log("action", "An aspen sapling grows into a tree at "..
minetest.pos_to_string(pos))
default.grow_new_aspen_tree(pos)
end
end
})
@ -395,3 +400,11 @@ function default.grow_new_acacia_tree(pos)
minetest.place_schematic({x = pos.x - 4, y = pos.y - 1, z = pos.z - 4},
path, random, nil, false)
end
-- New aspen tree
function default.grow_new_aspen_tree(pos)
local path = minetest.get_modpath("default") .. "/schematics/aspen_tree_from_sapling.mts"
minetest.place_schematic({x = pos.x - 2, y = pos.y - 1, z = pos.z - 2},
path, 0, nil, false)
end

View File

@ -28,7 +28,6 @@ following Textures created by BlockMen (WTFPL):
door_obsidian_glass_side.png
following textures created by celeron55 (CC BY-SA 3.0):
door_trapdoor_side.png
door_glass_a.png
door_glass_b.png
@ -36,9 +35,10 @@ following Textures created by PenguinDad (CC BY-SA 4.0):
door_glass.png
door_obsidian_glass.png
Steel trapdoor textures by sofar (CC-BY-SA-3.0)
following textures created by sofar (CC-BY-SA-3.0)
doors_trapdoor_steel.png
doors_trapdoor_steel_side.png
door_trapdoor_side.png
All other textures (created by PilzAdam): WTFPL

View File

@ -451,8 +451,6 @@ function doors.register_trapdoor(name, def)
minetest.swap_node(pos, {name = newname, param1 = node.param1, param2 = node.param2})
end
def.on_rotate = minetest.get_modpath("screwdriver") and screwdriver.rotate_simple
-- Common trapdoor configuration
def.drawtype = "nodebox"
def.paramtype = "light"
@ -476,25 +474,28 @@ function doors.register_trapdoor(name, def)
def_closed.node_box = {
type = "fixed",
fixed = {-0.5, -0.5, -0.5, 0.5, -0.4, 0.5}
fixed = {-0.5, -0.5, -0.5, 0.5, -6/16, 0.5}
}
def_closed.selection_box = {
type = "fixed",
fixed = {-0.5, -0.5, -0.5, 0.5, -0.4, 0.5}
fixed = {-0.5, -0.5, -0.5, 0.5, -6/16, 0.5}
}
def_closed.tiles = { def.tile_front, def.tile_front, def.tile_side, def.tile_side,
def.tile_side, def.tile_side }
def_opened.node_box = {
type = "fixed",
fixed = {-0.5, -0.5, 0.4, 0.5, 0.5, 0.5}
fixed = {-0.5, -0.5, 6/16, 0.5, 0.5, 0.5}
}
def_opened.selection_box = {
type = "fixed",
fixed = {-0.5, -0.5, 0.4, 0.5, 0.5, 0.5}
fixed = {-0.5, -0.5, 6/16, 0.5, 0.5, 0.5}
}
def_opened.tiles = { def.tile_side, def.tile_side, def.tile_side, def.tile_side,
def.tile_front, def.tile_front }
def_opened.tiles = { def.tile_side, def.tile_side,
def.tile_side .. '^[transform3',
def.tile_side .. '^[transform1',
def.tile_front, def.tile_front }
def_opened.drop = name_closed
def_opened.groups.not_in_creative_inventory = 1

Binary file not shown.

Before

Width:  |  Height:  |  Size: 173 B

After

Width:  |  Height:  |  Size: 233 B

View File

@ -22,6 +22,7 @@ local replace = minetest.setting_getbool("enable_stairs_replace_abm")
-- Node will be called stairs:stair_<subname>
function stairs.register_stair(subname, recipeitem, groups, images, description, sounds)
groups.stair = 1
minetest.register_node(":stairs:stair_" .. subname, {
description = description,
drawtype = "mesh",
@ -111,6 +112,7 @@ end
-- Node will be called stairs:slab_<subname>
function stairs.register_slab(subname, recipeitem, groups, images, description, sounds)
groups.slab = 1
minetest.register_node(":stairs:slab_" .. subname, {
description = description,
drawtype = "nodebox",
@ -287,6 +289,13 @@ stairs.register_stair_and_slab("acacia_wood", "default:acacia_wood",
"Acacia Wood Slab",
default.node_sound_wood_defaults())
stairs.register_stair_and_slab("aspen_wood", "default:aspen_wood",
{snappy = 2, choppy = 2, oddly_breakable_by_hand = 2, flammable = 3},
{"default_aspen_wood.png"},
"Aspen Wood Stair",
"Aspen Wood Slab",
default.node_sound_wood_defaults())
stairs.register_stair_and_slab("stone", "default:stone",
{cracky = 3},
{"default_stone.png"},

View File

@ -9,7 +9,7 @@ local wool = {}
-- colors, and then some recipes using more specific colors for a few non-base
-- colors available. When crafting, the last recipes will be checked first.
wool.dyes = {
{"white", "White", nil},
{"white", "White", "basecolor_white"},
{"grey", "Grey", "basecolor_grey"},
{"black", "Black", "basecolor_black"},
{"red", "Red", "basecolor_red"},