...
18
game_api.txt
@ -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
@ -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
@ -0,0 +1,2 @@
|
||||
default
|
||||
mobs?
|
331
mods/boats/init.lua
Normal 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")
|
3111
mods/boats/models/boats_boat.obj
Normal file
760
mods/boats/models/rowboat.x
Normal 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
|
BIN
mods/boats/textures/boats_inventory.png
Normal file
After Width: | Height: | Size: 851 B |
BIN
mods/boats/textures/boats_wield.png
Normal file
After Width: | Height: | Size: 546 B |
BIN
mods/boats/textures/rowboat_inventory.png
Normal file
After Width: | Height: | Size: 444 B |
BIN
mods/boats/textures/rowboat_wield.png
Normal file
After Width: | Height: | Size: 366 B |
@ -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,
|
||||
|
BIN
mods/creative/textures/creative_trash_icon.png
Normal file
After Width: | Height: | Size: 179 B |
@ -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
|
||||
|
@ -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'},
|
||||
}
|
||||
})
|
||||
|
||||
|
@ -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
|
||||
--
|
||||
|
@ -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
|
||||
|
@ -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",
|
||||
|
BIN
mods/default/schematics/aspen_tree.mts
Normal file
BIN
mods/default/schematics/aspen_tree_from_sapling.mts
Normal file
BIN
mods/default/textures/default_aspen_leaves.png
Normal file
After Width: | Height: | Size: 761 B |
BIN
mods/default/textures/default_aspen_sapling.png
Normal file
After Width: | Height: | Size: 320 B |
BIN
mods/default/textures/default_aspen_tree.png
Normal file
After Width: | Height: | Size: 695 B |
BIN
mods/default/textures/default_aspen_tree_top.png
Normal file
After Width: | Height: | Size: 656 B |
BIN
mods/default/textures/default_aspen_wood.png
Normal file
After Width: | Height: | Size: 373 B |
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
Before Width: | Height: | Size: 173 B After Width: | Height: | Size: 233 B |
@ -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"},
|
||||
|
@ -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"},
|
||||
|