a lot of new things
Before Width: | Height: | Size: 160 B After Width: | Height: | Size: 5.8 KiB |
BIN
menu/header.png
Before Width: | Height: | Size: 404 B After Width: | Height: | Size: 624 B |
BIN
menu/icon.png
Before Width: | Height: | Size: 217 B After Width: | Height: | Size: 318 B |
|
@ -6,7 +6,7 @@ globals = {
|
||||||
"furn",
|
"furn",
|
||||||
"minetest",
|
"minetest",
|
||||||
"nodez",
|
"nodez",
|
||||||
"player_api",
|
"playerz",
|
||||||
"samz",
|
"samz",
|
||||||
"sfinv",
|
"sfinv",
|
||||||
"sound",
|
"sound",
|
||||||
|
|
Before Width: | Height: | Size: 159 B |
Before Width: | Height: | Size: 163 B |
|
@ -0,0 +1,14 @@
|
||||||
|
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
|
||||||
|
Version 2, December 2004
|
||||||
|
|
||||||
|
Copyright (C) 2004 Sam Hocevar <sam@hocevar.net>
|
||||||
|
|
||||||
|
Everyone is permitted to copy and distribute verbatim or modified
|
||||||
|
copies of this license document, and changing it is allowed as long
|
||||||
|
as the name is changed.
|
||||||
|
|
||||||
|
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
|
||||||
|
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||||
|
|
||||||
|
0. You just DO WHAT THE FUCK YOU WANT TO.
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
# Bedrock [`bedrock2`]
|
||||||
|
|
||||||
|
Version 1.2.2
|
||||||
|
|
||||||
|
## Description
|
||||||
|
This mod adds an indestructible bedrock layer at the bottom of the world.
|
||||||
|
|
||||||
|
## Configuration
|
||||||
|
This mod recognizes the following minetest.conf setting:
|
||||||
|
|
||||||
|
* `bedrock2_y`: Sets the Y coordinate on which the bedrock layer will be created (default: -30912).
|
|
@ -0,0 +1 @@
|
||||||
|
mesecons_mvps?
|
|
@ -0,0 +1 @@
|
||||||
|
Adds an indestructable bedrock layer at the bottom of the world.
|
|
@ -0,0 +1,51 @@
|
||||||
|
local S = minetest.get_translator("bedrock2")
|
||||||
|
|
||||||
|
local bedrock = {}
|
||||||
|
|
||||||
|
bedrock.layer = -30912 -- determined as appropriate by experiment
|
||||||
|
bedrock.node = {name = "bedrock2:bedrock"}
|
||||||
|
|
||||||
|
local settings = Settings(minetest.get_modpath("bedrock2").."/settings.conf")
|
||||||
|
local depth = tonumber(settings:get("bedrock2_y"))
|
||||||
|
if depth ~= nil then
|
||||||
|
bedrock.layer = depth
|
||||||
|
end
|
||||||
|
|
||||||
|
minetest.register_on_generated(function(minp, maxp)
|
||||||
|
if maxp.y >= bedrock.layer and minp.y <= bedrock.layer then
|
||||||
|
local vm, emin, emax = minetest.get_mapgen_object("voxelmanip")
|
||||||
|
local data = vm:get_data()
|
||||||
|
local area = VoxelArea:new({MinEdge=emin, MaxEdge=emax})
|
||||||
|
local c_bedrock = minetest.get_content_id("bedrock2:bedrock")
|
||||||
|
|
||||||
|
for x = minp.x, maxp.x do
|
||||||
|
for z = minp.z, maxp.z do
|
||||||
|
local p_pos = area:index(x, bedrock.layer, z)
|
||||||
|
data[p_pos] = c_bedrock
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
vm:set_data(data)
|
||||||
|
vm:calc_lighting()
|
||||||
|
vm:update_liquids()
|
||||||
|
vm:write_to_map()
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
||||||
|
minetest.register_node("bedrock2:bedrock", {
|
||||||
|
description = S("Bedrock"),
|
||||||
|
_doc_items_longdesc = S("Bedrock is a very hard block. It cannot be mined, altered, destroyed or moved by any means. It appears at the bottom of the world in a flat layer."),
|
||||||
|
tiles = {"bedrock2_bedrock.png"},
|
||||||
|
groups = {immortal=1, not_in_creative_inventory=1, },
|
||||||
|
sounds = { footstep = { name = "bedrock2_step", gain = 1 } },
|
||||||
|
is_ground_content = false,
|
||||||
|
on_blast = function() end,
|
||||||
|
on_destruct = function () end,
|
||||||
|
can_dig = function() return false end,
|
||||||
|
diggable = false,
|
||||||
|
drop = "",
|
||||||
|
})
|
||||||
|
|
||||||
|
if minetest.get_modpath("mesecons_mvps") ~= nil then
|
||||||
|
mesecon.register_mvps_stopper("bedrock2:bedrock")
|
||||||
|
end
|
|
@ -0,0 +1,3 @@
|
||||||
|
# textdomain:bedrock2
|
||||||
|
Bedrock=Grundgestein
|
||||||
|
Bedrock is a very hard block. It cannot be mined, altered, destroyed or moved by any means. It appears at the bottom of the world in a flat layer.=Grundgestein ist sehr hart. Es kann nicht gegraben, verändert, zerstört oder bewegt werden. Es taucht am Boden der Welt in einer flachen Ebene auf.
|
|
@ -0,0 +1,3 @@
|
||||||
|
# textdomain:bedrock2
|
||||||
|
Bedrock=Lecho de roca
|
||||||
|
Bedrock is a very hard block. It cannot be mined, altered, destroyed or moved by any means. It appears at the bottom of the world in a flat layer.=El lecho de roca es un bloque muy duro. No puede ser minado, alterado, destruido o movido por ningún medio. Aparece en el fondo del mundo en una capa plana.
|
|
@ -0,0 +1,2 @@
|
||||||
|
Bedrock
|
||||||
|
Bedrock is a very hard block. It cannot be mined, altered, destroyed or moved by any means. It appears at the bottom of the world in a flat layer.
|
|
@ -0,0 +1 @@
|
||||||
|
name = bedrock2
|
After Width: | Height: | Size: 50 KiB |
|
@ -0,0 +1,2 @@
|
||||||
|
# Sets the height (Y) at which the bedrock layer will be created.
|
||||||
|
bedrock2_y = -513
|
After Width: | Height: | Size: 573 B |
After Width: | Height: | Size: 571 B |
|
@ -1,37 +0,0 @@
|
||||||
local groups = {
|
|
||||||
"cracky", "dig_immediate"
|
|
||||||
}
|
|
||||||
|
|
||||||
-- Register dig nodes with 1 digging group, a rating between 1-3 and a level between 0-2
|
|
||||||
for g=1, #groups do
|
|
||||||
local gr = groups[g]
|
|
||||||
for r=1, 3 do
|
|
||||||
for l=0, 2 do
|
|
||||||
if not (gr=="dig_immediate" and (l>0 or r==1)) then
|
|
||||||
local d
|
|
||||||
if l > 0 then
|
|
||||||
d = string.format("Dig Test Node: %s=%d, level=%d", gr, r, l)
|
|
||||||
else
|
|
||||||
d = string.format("Dig Test Node: %s=%d", gr, r)
|
|
||||||
end
|
|
||||||
local tile = "dignodes_"..gr..".png^dignodes_rating"..r..".png"
|
|
||||||
if l==1 then
|
|
||||||
tile = tile .. "^[colorize:#FFFF00:127"
|
|
||||||
elseif l==2 then
|
|
||||||
tile = tile .. "^[colorize:#FF0000:127"
|
|
||||||
end
|
|
||||||
minetest.register_node("dignodes:"..gr.."_"..r.."_"..l, {
|
|
||||||
description = d,
|
|
||||||
tiles = { tile },
|
|
||||||
groups = { [gr] = r, level = l },
|
|
||||||
})
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Node without any digging groups
|
|
||||||
minetest.register_node("dignodes:none", {
|
|
||||||
description = "Dig Test Node: groupless",
|
|
||||||
tiles = {"dignodes_none.png"},
|
|
||||||
})
|
|
|
@ -1,2 +0,0 @@
|
||||||
name = dignodes
|
|
||||||
description = Nodes with different digging groups
|
|
Before Width: | Height: | Size: 187 B |
Before Width: | Height: | Size: 193 B |
Before Width: | Height: | Size: 172 B |
Before Width: | Height: | Size: 170 B |
Before Width: | Height: | Size: 201 B |
Before Width: | Height: | Size: 94 B |
Before Width: | Height: | Size: 92 B |
Before Width: | Height: | Size: 93 B |
|
@ -0,0 +1,63 @@
|
||||||
|
-- Flower registration
|
||||||
|
|
||||||
|
local function register_flower_deco(name, deco)
|
||||||
|
if not(deco.noise_params) then
|
||||||
|
deco.noise_params = {
|
||||||
|
scale = 0.04
|
||||||
|
}
|
||||||
|
end
|
||||||
|
minetest.register_decoration({
|
||||||
|
name = "flowers:"..name,
|
||||||
|
decoration = "flowers:"..name,
|
||||||
|
deco_type = "simple",
|
||||||
|
place_on = deco.place_on,
|
||||||
|
sidelen = 16,
|
||||||
|
noise_params = {
|
||||||
|
offset = -0.02,
|
||||||
|
scale = deco.noise_params.scale or 0.04,
|
||||||
|
spread = {x = 200, y = 200, z = 200},
|
||||||
|
seed = deco.seed,
|
||||||
|
octaves = 3,
|
||||||
|
persist = 0.6
|
||||||
|
},
|
||||||
|
biomes = deco.biomes,
|
||||||
|
y_max = deco.height.y_max,
|
||||||
|
y_min = deco.height.y_min,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
function flowers.register_flower(name, def)
|
||||||
|
-- Common flowers' groups
|
||||||
|
def.groups.snappy = 3
|
||||||
|
def.groups.flower = 1
|
||||||
|
def.groups.flora = 1
|
||||||
|
def.groups.attached_node = 1
|
||||||
|
|
||||||
|
local inventory_image = "flowers_" .. name
|
||||||
|
if def.inv_img then
|
||||||
|
inventory_image = inventory_image .. "_inv"
|
||||||
|
end
|
||||||
|
|
||||||
|
minetest.register_node("flowers:" .. name, {
|
||||||
|
description = def.desc,
|
||||||
|
drawtype = "plantlike",
|
||||||
|
waving = 1,
|
||||||
|
tiles = {"flowers_" .. name .. ".png"},
|
||||||
|
inventory_image = inventory_image .. ".png",
|
||||||
|
wield_image = "flowers_" .. name .. ".png",
|
||||||
|
sunlight_propagates = true,
|
||||||
|
paramtype = "light",
|
||||||
|
walkable = false,
|
||||||
|
buildable_to = true,
|
||||||
|
groups = def.groups,
|
||||||
|
sounds = sound.leaves(),
|
||||||
|
selection_box = {
|
||||||
|
type = "fixed",
|
||||||
|
fixed = def.box
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
if def.deco then
|
||||||
|
register_flower_deco(name, def.deco)
|
||||||
|
end
|
||||||
|
end
|
|
@ -0,0 +1,169 @@
|
||||||
|
local S = ...
|
||||||
|
|
||||||
|
flowers.list = {
|
||||||
|
{
|
||||||
|
name = "rose_bush",
|
||||||
|
def = {
|
||||||
|
desc = S("Rose Bush"),
|
||||||
|
box = {-2/16, -0.5, -2/16, 2/16, 5/16, 2/16},
|
||||||
|
groups = {color_red = 1, flammable = 1},
|
||||||
|
inv_img = false,
|
||||||
|
deco = {
|
||||||
|
place_on = "nodez:dirt_with_grass",
|
||||||
|
seed = 345,
|
||||||
|
biomes = {"forest"},
|
||||||
|
height = {y_max = 128, y_min = 1},
|
||||||
|
noise_params = {
|
||||||
|
scale = 0.02,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name = "rose",
|
||||||
|
def = {
|
||||||
|
desc = S("Rose"),
|
||||||
|
box = {-2/16, -0.5, -2/16, 2/16, 5/16, 2/16},
|
||||||
|
groups = {color_red = 1, flammable = 1},
|
||||||
|
inv_img = false,
|
||||||
|
deco = {
|
||||||
|
place_on = "nodez:dirt_with_grass",
|
||||||
|
seed = 345,
|
||||||
|
biomes = {"forest"},
|
||||||
|
height = {y_max = 128, y_min = 1},
|
||||||
|
noise_params = {
|
||||||
|
scale = 0.03,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name = "daisy",
|
||||||
|
def = {
|
||||||
|
desc = S("Daisy"),
|
||||||
|
box = {-2/16, -0.5, -2/16, 2/16, 5/16, 2/16},
|
||||||
|
groups = {color_white = 1, flammable = 1},
|
||||||
|
inv_img = false,
|
||||||
|
deco = {
|
||||||
|
place_on = "nodez:dirt_with_grass",
|
||||||
|
seed = 1528,
|
||||||
|
biomes = {"forest"},
|
||||||
|
height = {y_max = 128, y_min = 1}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name = "tulip",
|
||||||
|
def = {
|
||||||
|
desc = S("Tulip"),
|
||||||
|
box = {-2/16, -0.5, -2/16, 2/16, 2/16, 2/16},
|
||||||
|
groups = {color_yellow = 1, flammable = 1},
|
||||||
|
inv_img = false,
|
||||||
|
deco = {
|
||||||
|
place_on = "nodez:dirt_with_grass",
|
||||||
|
seed = 7898,
|
||||||
|
biomes = {"forest"},
|
||||||
|
height = {y_max = 128, y_min = 1}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name = "pansy",
|
||||||
|
def = {
|
||||||
|
desc = S("Pansy"),
|
||||||
|
box = {-2/16, -0.5, -2/16, 2/16, 2/16, 2/16},
|
||||||
|
groups = {color_pink = 1, flammable = 1},
|
||||||
|
inv_img = false,
|
||||||
|
deco = {
|
||||||
|
place_on = "nodez:dirt_with_grass",
|
||||||
|
seed = 734,
|
||||||
|
biomes = {"forest"},
|
||||||
|
height = {y_max = 128, y_min = 1}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name = "gerbera",
|
||||||
|
def = {
|
||||||
|
desc = S("Gerbera Daisy"),
|
||||||
|
box = {-4/16, -8/16, -4/16, 4/16, -3/16, 4/16},
|
||||||
|
groups = {color_orange = 1, flammable = 1},
|
||||||
|
inv_img = false,
|
||||||
|
deco = {
|
||||||
|
place_on = "nodez:dirt_with_grass",
|
||||||
|
seed = 5770,
|
||||||
|
biomes = {"forest"},
|
||||||
|
height = {y_max = 128, y_min = 1}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name = "lavender",
|
||||||
|
def = {
|
||||||
|
desc = S("Lavender"),
|
||||||
|
box = {-4/16, -8/16, -4/16, 4/16, -3/16, 4/16},
|
||||||
|
groups = {color_violet = 1, flammable = 1},
|
||||||
|
inv_img = false,
|
||||||
|
deco = {
|
||||||
|
place_on = "nodez:dirt_with_grass",
|
||||||
|
seed = 230,
|
||||||
|
biomes = {"forest"},
|
||||||
|
height = {y_max = 128, y_min = 1}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name = "dandellion",
|
||||||
|
def = {
|
||||||
|
desc = S("Dandellion"),
|
||||||
|
box = {-4/16, -8/16, -4/16, 4/16, -3/16, 4/16},
|
||||||
|
groups = {color_yellow = 1, flammable = 1},
|
||||||
|
inv_img = false,
|
||||||
|
deco = {
|
||||||
|
place_on = "nodez:dirt_with_grass",
|
||||||
|
seed = 3946,
|
||||||
|
biomes = {"forest"},
|
||||||
|
height = {y_max = 128, y_min = 1}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name = "dahlia",
|
||||||
|
def = {
|
||||||
|
desc = S("Dahlia"),
|
||||||
|
box = {-2/16, -8/16, -2/16, 2/16, 3/16, 2/16},
|
||||||
|
groups = {color_red = 1, flammable = 1},
|
||||||
|
inv_img = false,
|
||||||
|
deco = {
|
||||||
|
place_on = "nodez:dirt_with_grass",
|
||||||
|
seed = 356,
|
||||||
|
biomes = {"forest"},
|
||||||
|
height = {y_max = 128, y_min = 1},
|
||||||
|
height = {y_max = 128, y_min = 1},
|
||||||
|
noise_params = {
|
||||||
|
scale = 0.02,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name = "zinnia",
|
||||||
|
def = {
|
||||||
|
desc = S("Zinnia"),
|
||||||
|
box = {-4/16, -8/16, -4/16, 4/16, -2/16, 4/16},
|
||||||
|
groups = {color_red = 1, flammable = 1},
|
||||||
|
inv_img = false,
|
||||||
|
deco = {
|
||||||
|
place_on = "nodez:dirt_with_grass",
|
||||||
|
seed = 993,
|
||||||
|
biomes = {"forest"},
|
||||||
|
height = {y_max = 128, y_min = 1}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, item in pairs(flowers.list) do
|
||||||
|
flowers.register_flower(item.name, item.def)
|
||||||
|
end
|
||||||
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
flowers = {}
|
||||||
|
|
||||||
|
local modname = minetest.get_current_modname()
|
||||||
|
local modpath = minetest.get_modpath(modname)
|
||||||
|
local S = minetest.get_translator(modname)
|
||||||
|
|
||||||
|
assert(loadfile(modpath .. "/api.lua"))()
|
||||||
|
assert(loadfile(modpath .. "/flowers.lua"))(S)
|
|
@ -0,0 +1,9 @@
|
||||||
|
# textdomain: flowers
|
||||||
|
Dahlia=Dalia
|
||||||
|
Daisy=Margarita
|
||||||
|
Daisy Gerbera=Margarita Gerbera
|
||||||
|
Lavender=Lavanda
|
||||||
|
Rose=Rosa
|
||||||
|
Rose Bush=Rosal
|
||||||
|
Tulip=Tulipán
|
||||||
|
Zinnia=Zinnia
|
|
@ -0,0 +1,3 @@
|
||||||
|
name = flowers
|
||||||
|
description = Flowers
|
||||||
|
depends =
|
After Width: | Height: | Size: 669 B |
After Width: | Height: | Size: 670 B |
After Width: | Height: | Size: 614 B |
After Width: | Height: | Size: 614 B |
After Width: | Height: | Size: 566 B |
After Width: | Height: | Size: 566 B |
After Width: | Height: | Size: 625 B |
After Width: | Height: | Size: 623 B |
After Width: | Height: | Size: 596 B |
After Width: | Height: | Size: 576 B |
After Width: | Height: | Size: 619 B |
After Width: | Height: | Size: 629 B |
After Width: | Height: | Size: 619 B |
After Width: | Height: | Size: 617 B |
After Width: | Height: | Size: 618 B |
After Width: | Height: | Size: 770 B |
After Width: | Height: | Size: 770 B |
After Width: | Height: | Size: 777 B |
After Width: | Height: | Size: 575 B |
After Width: | Height: | Size: 599 B |
After Width: | Height: | Size: 566 B |
|
@ -1,3 +1,3 @@
|
||||||
name = give_initial_stuff
|
name = give_initial_stuff
|
||||||
description = Gives items to players on join
|
description = Gives items to players on join
|
||||||
depends = basetools, bucket, chest_of_everything, testnodes
|
depends = tools, bucket, chest_of_everything
|
||||||
|
|
|
@ -1,15 +1,17 @@
|
||||||
local mg_name = minetest.get_mapgen_setting("mg_name")
|
local mg_name = minetest.get_mapgen_setting("mg_name")
|
||||||
|
|
||||||
biomes = {}
|
mapgen = {
|
||||||
|
biomes = {}
|
||||||
|
}
|
||||||
|
|
||||||
if mg_name == "valleys" then
|
if mg_name == "valleys" then
|
||||||
biomes.peaky_mountain_height = 85
|
mapgen.biomes.peaky_mountain_height = 85
|
||||||
elseif mg_name == "carphatian" then
|
elseif mg_name == "carphatian" then
|
||||||
biomes.peaky_mountain_height = 65
|
mapgen.biomes.peaky_mountain_height = 65
|
||||||
elseif mg_name == "v7" then
|
elseif mg_name == "v7" then
|
||||||
biomes.peaky_mountain_height = 45
|
mapgen.biomes.peaky_mountain_height = 45
|
||||||
else
|
else
|
||||||
biomes.peaky_mountain_height = 55
|
mapgen.biomes.peaky_mountain_height = 55
|
||||||
end
|
end
|
||||||
|
|
||||||
--
|
--
|
||||||
|
@ -62,7 +64,7 @@ if minetest.settings:get_bool("devtest_dungeon_stairs", false) then
|
||||||
end
|
end
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Register biomes for biome API
|
-- Register mapgen.biomes.for biome API
|
||||||
--
|
--
|
||||||
|
|
||||||
if mg_name == "v6" or mg_name == "singlenode" then
|
if mg_name == "v6" or mg_name == "singlenode" then
|
||||||
|
@ -248,7 +250,7 @@ minetest.register_decoration({
|
||||||
octaves = 3,
|
octaves = 3,
|
||||||
persist = 0.66
|
persist = 0.66
|
||||||
},
|
},
|
||||||
y_min = biomes.peaky_mountain_height,
|
y_min = mapgen.biomes.peaky_mountain_height,
|
||||||
y_max = 200,
|
y_max = 200,
|
||||||
place_offset_y = -1,
|
place_offset_y = -1,
|
||||||
flags = "place_center_x, place_center_z, force_placement",
|
flags = "place_center_x, place_center_z, force_placement",
|
||||||
|
@ -272,7 +274,7 @@ minetest.register_decoration({
|
||||||
octaves = 3,
|
octaves = 3,
|
||||||
persist = 0.66
|
persist = 0.66
|
||||||
},
|
},
|
||||||
y_min = biomes.peaky_mountain_height,
|
y_min = mapgen.biomes.peaky_mountain_height,
|
||||||
y_max = 200,
|
y_max = 200,
|
||||||
place_offset_y = -1,
|
place_offset_y = -1,
|
||||||
flags = "place_center_x, place_center_z, force_placement",
|
flags = "place_center_x, place_center_z, force_placement",
|
||||||
|
@ -295,7 +297,7 @@ minetest.register_decoration({
|
||||||
octaves = 3,
|
octaves = 3,
|
||||||
persist = 0.66
|
persist = 0.66
|
||||||
},
|
},
|
||||||
y_min = biomes.peaky_mountain_height,
|
y_min = mapgen.biomes.peaky_mountain_height,
|
||||||
y_max = 200,
|
y_max = 200,
|
||||||
place_offset_y = -1,
|
place_offset_y = -1,
|
||||||
flags = "place_center_x, place_center_z, force_placement",
|
flags = "place_center_x, place_center_z, force_placement",
|
||||||
|
@ -316,7 +318,7 @@ minetest.register_decoration({
|
||||||
octaves = 3,
|
octaves = 3,
|
||||||
persist = 0.66
|
persist = 0.66
|
||||||
},
|
},
|
||||||
y_min = biomes.peaky_mountain_height,
|
y_min = mapgen.biomes.peaky_mountain_height,
|
||||||
y_max = 200,
|
y_max = 200,
|
||||||
spawn_by = "nodez:dirt_with_snow",
|
spawn_by = "nodez:dirt_with_snow",
|
||||||
num_spawn_by = 1,
|
num_spawn_by = 1,
|
||||||
|
@ -335,5 +337,3 @@ minetest.register_ore({
|
||||||
y_max = -384,
|
y_max = -384,
|
||||||
y_min = -512,
|
y_min = -512,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -33,9 +33,9 @@ minetest.register_node("nodez:glass", {
|
||||||
paramtype2 = "glasslikeliquidlevel",
|
paramtype2 = "glasslikeliquidlevel",
|
||||||
sunlight_propagates = true,
|
sunlight_propagates = true,
|
||||||
is_ground_content = false,
|
is_ground_content = false,
|
||||||
groups = {cracky= 3, glass= 1,
|
groups = {cracky= 3, glass= 1},
|
||||||
oddly_breakable_by_hand = 3},
|
oddly_breakable_by_hand = 3,
|
||||||
sounds = sound.glass(),
|
sounds = sound.glass()
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_craft({
|
minetest.register_craft({
|
||||||
|
|
Before Width: | Height: | Size: 559 B After Width: | Height: | Size: 553 B |
Before Width: | Height: | Size: 559 B After Width: | Height: | Size: 551 B |
After Width: | Height: | Size: 559 B |
After Width: | Height: | Size: 640 B |
After Width: | Height: | Size: 552 B |
After Width: | Height: | Size: 550 B |
|
@ -1,2 +0,0 @@
|
||||||
name = player_api
|
|
||||||
description = Minetest Game mod: player_api
|
|
|
@ -1,4 +1,4 @@
|
||||||
Minetest Game mod: player_api
|
Minetest Game mod: playerz
|
||||||
=============================
|
=============================
|
||||||
See license.txt for license information.
|
See license.txt for license information.
|
||||||
|
|
|
@ -2,20 +2,20 @@
|
||||||
-- See README.txt for licensing and other information.
|
-- See README.txt for licensing and other information.
|
||||||
|
|
||||||
-- Load support for MT game translation.
|
-- Load support for MT game translation.
|
||||||
local S = minetest.get_translator("player_api")
|
local S = minetest.get_translator("playerz")
|
||||||
|
|
||||||
player_api = {}
|
playerz = {}
|
||||||
|
|
||||||
-- Player animation blending
|
-- Player animation blending
|
||||||
-- Note: This is currently broken due to a bug in Irrlicht, leave at 0
|
-- Note: This is currently broken due to a bug in Irrlicht, leave at 0
|
||||||
local animation_blend = 0
|
local animation_blend = 0
|
||||||
|
|
||||||
player_api.registered_models = { }
|
playerz.registered_models = { }
|
||||||
|
|
||||||
-- Local for speed.
|
-- Local for speed.
|
||||||
local models = player_api.registered_models
|
local models = playerz.registered_models
|
||||||
|
|
||||||
function player_api.register_model(name, def)
|
function playerz.register_model(name, def)
|
||||||
models[name] = def
|
models[name] = def
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -24,9 +24,9 @@ local player_model = {}
|
||||||
local player_textures = {}
|
local player_textures = {}
|
||||||
local player_anim = {}
|
local player_anim = {}
|
||||||
local player_sneak = {}
|
local player_sneak = {}
|
||||||
player_api.player_attached = {}
|
playerz.player_attached = {}
|
||||||
|
|
||||||
function player_api.get_animation(player)
|
function playerz.get_animation(player)
|
||||||
local name = player:get_player_name()
|
local name = player:get_player_name()
|
||||||
return {
|
return {
|
||||||
model = player_model[name],
|
model = player_model[name],
|
||||||
|
@ -35,7 +35,7 @@ function player_api.get_animation(player)
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
function player_api.set_gender(player, gender)
|
function playerz.set_gender(player, gender)
|
||||||
if not(gender) or gender == "random" then
|
if not(gender) or gender == "random" then
|
||||||
if math.random(2) == 1 then
|
if math.random(2) == 1 then
|
||||||
gender = "male"
|
gender = "male"
|
||||||
|
@ -47,16 +47,16 @@ function player_api.set_gender(player, gender)
|
||||||
return gender
|
return gender
|
||||||
end
|
end
|
||||||
|
|
||||||
function player_api.get_gender(player)
|
function playerz.get_gender(player)
|
||||||
return player:get_meta():get_string("gender")
|
return player:get_meta():get_string("gender")
|
||||||
end
|
end
|
||||||
|
|
||||||
function player_api.get_gender_model(gender)
|
function playerz.get_gender_model(gender)
|
||||||
local model = "character.b3d"
|
local model = "character.b3d"
|
||||||
return model
|
return model
|
||||||
end
|
end
|
||||||
|
|
||||||
function player_api.set_base_texture(player, gender)
|
function playerz.set_base_texture(player, gender)
|
||||||
local meta = player:get_meta()
|
local meta = player:get_meta()
|
||||||
meta:set_string("base_texture", gender)
|
meta:set_string("base_texture", gender)
|
||||||
end
|
end
|
||||||
|
@ -66,7 +66,7 @@ minetest.register_chatcommand("toggle_gender", {
|
||||||
func = function(name, param)
|
func = function(name, param)
|
||||||
local player = minetest.get_player_by_name(name)
|
local player = minetest.get_player_by_name(name)
|
||||||
local meta = player:get_meta()
|
local meta = player:get_meta()
|
||||||
local old_gender = player_api.get_gender(player)
|
local old_gender = playerz.get_gender(player)
|
||||||
if old_gender then
|
if old_gender then
|
||||||
local new_gender
|
local new_gender
|
||||||
if old_gender == "male" then
|
if old_gender == "male" then
|
||||||
|
@ -75,11 +75,11 @@ minetest.register_chatcommand("toggle_gender", {
|
||||||
new_gender = "male"
|
new_gender = "male"
|
||||||
end
|
end
|
||||||
meta:set_string("gender", new_gender)
|
meta:set_string("gender", new_gender)
|
||||||
player_api.set_model(player, player_api.get_gender_model(new_gender))
|
playerz.set_model(player, playerz.get_gender_model(new_gender))
|
||||||
local gender_model = player_api.get_gender_model(new_gender)
|
local gender_model = playerz.get_gender_model(new_gender)
|
||||||
local cloth = player_api.compose_cloth(player)
|
local cloth = playerz.compose_cloth(player)
|
||||||
player_api.registered_models[gender_model].textures[1] = cloth
|
playerz.registered_models[gender_model].textures[1] = cloth
|
||||||
player_api.set_textures(player, models[gender_model].textures)
|
playerz.set_textures(player, models[gender_model].textures)
|
||||||
local new_gender_cap = new_gender:gsub("^%l", string.upper)
|
local new_gender_cap = new_gender:gsub("^%l", string.upper)
|
||||||
minetest.chat_send_player(name, S("Your gender is changed to").." "..S(new_gender_cap)..".")
|
minetest.chat_send_player(name, S("Your gender is changed to").." "..S(new_gender_cap)..".")
|
||||||
end
|
end
|
||||||
|
@ -112,7 +112,7 @@ local function move_head(player, on_water)
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Called when a player's appearance needs to be updated
|
-- Called when a player's appearance needs to be updated
|
||||||
function player_api.set_model(player, model_name)
|
function playerz.set_model(player, model_name)
|
||||||
local name = player:get_player_name()
|
local name = player:get_player_name()
|
||||||
local model = models[model_name]
|
local model = models[model_name]
|
||||||
if model then
|
if model then
|
||||||
|
@ -128,7 +128,7 @@ function player_api.set_model(player, model_name)
|
||||||
stepheight = model.stepheight or 0.6,
|
stepheight = model.stepheight or 0.6,
|
||||||
eye_height = model.eye_height or 1.47,
|
eye_height = model.eye_height or 1.47,
|
||||||
})
|
})
|
||||||
player_api.set_animation(player, "stand")
|
playerz.set_animation(player, "stand")
|
||||||
else
|
else
|
||||||
player:set_properties({
|
player:set_properties({
|
||||||
textures = {"player.png", "player_back.png"},
|
textures = {"player.png", "player_back.png"},
|
||||||
|
@ -142,7 +142,7 @@ function player_api.set_model(player, model_name)
|
||||||
player_model[name] = model_name
|
player_model[name] = model_name
|
||||||
end
|
end
|
||||||
|
|
||||||
function player_api.set_textures(player, textures)
|
function playerz.set_textures(player, textures)
|
||||||
local name = player:get_player_name()
|
local name = player:get_player_name()
|
||||||
local model = models[player_model[name]]
|
local model = models[player_model[name]]
|
||||||
local model_textures = model and model.textures or nil
|
local model_textures = model and model.textures or nil
|
||||||
|
@ -150,7 +150,7 @@ function player_api.set_textures(player, textures)
|
||||||
player:set_properties({textures = textures or model_textures})
|
player:set_properties({textures = textures or model_textures})
|
||||||
end
|
end
|
||||||
|
|
||||||
function player_api.set_animation(player, anim_name, speed)
|
function playerz.set_animation(player, anim_name, speed)
|
||||||
local name = player:get_player_name()
|
local name = player:get_player_name()
|
||||||
if player_anim[name] == anim_name then
|
if player_anim[name] == anim_name then
|
||||||
return
|
return
|
||||||
|
@ -170,12 +170,12 @@ minetest.register_on_leaveplayer(function(player)
|
||||||
player_anim[name] = nil
|
player_anim[name] = nil
|
||||||
player_textures[name] = nil
|
player_textures[name] = nil
|
||||||
player_sneak[name] = nil
|
player_sneak[name] = nil
|
||||||
player_api.player_attached[name] = nil
|
playerz.player_attached[name] = nil
|
||||||
end)
|
end)
|
||||||
|
|
||||||
-- Localize for better performance.
|
-- Localize for better performance.
|
||||||
local player_set_animation = player_api.set_animation
|
local player_set_animation = playerz.set_animation
|
||||||
local player_attached = player_api.player_attached
|
local player_attached = playerz.player_attached
|
||||||
|
|
||||||
-- Prevent knockback for attached players
|
-- Prevent knockback for attached players
|
||||||
local old_calculate_knockback = minetest.calculate_knockback
|
local old_calculate_knockback = minetest.calculate_knockback
|
||||||
|
@ -318,7 +318,7 @@ minetest.register_globalstep(function(dtime)
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
|
|
||||||
function player_api.get_gender_formspec(name)
|
function playerz.get_gender_formspec(name)
|
||||||
local text = S("Select your gender")
|
local text = S("Select your gender")
|
||||||
|
|
||||||
local formspec = {
|
local formspec = {
|
||||||
|
@ -333,32 +333,32 @@ function player_api.get_gender_formspec(name)
|
||||||
return table.concat(formspec, "")
|
return table.concat(formspec, "")
|
||||||
end
|
end
|
||||||
|
|
||||||
function player_api.select_gender(player_name)
|
function playerz.select_gender(player_name)
|
||||||
minetest.show_formspec(player_name, "player_api:gender", player_api.get_gender_formspec(player_name))
|
minetest.show_formspec(player_name, "playerz:gender", playerz.get_gender_formspec(player_name))
|
||||||
end
|
end
|
||||||
|
|
||||||
function player_api.set_texture(player)
|
function playerz.set_texture(player)
|
||||||
local cloth = player_api.compose_cloth(player)
|
local cloth = playerz.compose_cloth(player)
|
||||||
local gender = player_api.get_gender(player)
|
local gender = playerz.get_gender(player)
|
||||||
local gender_model = player_api.get_gender_model(gender)
|
local gender_model = playerz.get_gender_model(gender)
|
||||||
player_api.registered_models[gender_model].textures[1] = cloth
|
playerz.registered_models[gender_model].textures[1] = cloth
|
||||||
player_api.set_model(player, gender_model)
|
playerz.set_model(player, gender_model)
|
||||||
player_api.set_textures(player, models[gender_model].textures)
|
playerz.set_textures(player, models[gender_model].textures)
|
||||||
end
|
end
|
||||||
|
|
||||||
function player_api.get_face(base_texture, scale, escape)
|
function playerz.get_face(base_texture, scale, escape)
|
||||||
if not scale then
|
if not scale then
|
||||||
scale = 1.0
|
scale = 1.0
|
||||||
end
|
end
|
||||||
local face = player_api.compose_face(base_texture, scale)
|
local face = playerz.compose_face(base_texture, scale)
|
||||||
if escape then
|
if escape then
|
||||||
face = minetest.formspec_escape(face)
|
face = minetest.formspec_escape(face)
|
||||||
end
|
end
|
||||||
return face
|
return face
|
||||||
end
|
end
|
||||||
|
|
||||||
function player_api.compose_face(base_texture, scale)
|
function playerz.compose_face(base_texture, scale)
|
||||||
return player_api.compose_base_texture(base_texture, {
|
return playerz.compose_base_texture(base_texture, {
|
||||||
canvas_size = "6x6",
|
canvas_size = "6x6",
|
||||||
scale = scale,
|
scale = scale,
|
||||||
skin_texture = "player_face_skin.png",
|
skin_texture = "player_face_skin.png",
|
||||||
|
@ -372,13 +372,13 @@ function player_api.compose_face(base_texture, scale)
|
||||||
end
|
end
|
||||||
|
|
||||||
--Level functions
|
--Level functions
|
||||||
function player_api.lvl_up(player)
|
function playerz.lvl_up(player)
|
||||||
local meta = player:get_meta()
|
local meta = player:get_meta()
|
||||||
local level = meta:get_int("level")
|
local level = meta:get_int("level")
|
||||||
meta:set_int("level", (level + 1))
|
meta:set_int("level", (level + 1))
|
||||||
end
|
end
|
||||||
|
|
||||||
function player_api.lvl_down(player)
|
function playerz.lvl_down(player)
|
||||||
local meta = player:get_meta()
|
local meta = player:get_meta()
|
||||||
local level = meta:get_int("level")
|
local level = meta:get_int("level")
|
||||||
if level == 0 then
|
if level == 0 then
|
||||||
|
@ -387,7 +387,7 @@ function player_api.lvl_down(player)
|
||||||
meta:set_int("level", (level - 1))
|
meta:set_int("level", (level - 1))
|
||||||
end
|
end
|
||||||
|
|
||||||
function player_api.set_lvl(player, level)
|
function playerz.set_lvl(player, level)
|
||||||
if level <= 0 then
|
if level <= 0 then
|
||||||
return
|
return
|
||||||
else
|
else
|
||||||
|
@ -395,12 +395,12 @@ function player_api.set_lvl(player, level)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function player_api.reset_lvl(player, level)
|
function playerz.reset_lvl(player, level)
|
||||||
player:get_meta():set_int("level", 0)
|
player:get_meta():set_int("level", 0)
|
||||||
end
|
end
|
||||||
|
|
||||||
minetest.register_on_player_receive_fields(function(player, formname, fields)
|
minetest.register_on_player_receive_fields(function(player, formname, fields)
|
||||||
if formname ~= "player_api:gender" then
|
if formname ~= "playerz:gender" then
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
local gender
|
local gender
|
||||||
|
@ -410,11 +410,11 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
|
||||||
else
|
else
|
||||||
gender = "female"
|
gender = "female"
|
||||||
end
|
end
|
||||||
player_api.set_gender(player, gender)
|
playerz.set_gender(player, gender)
|
||||||
else
|
else
|
||||||
player_api.set_gender(player, "random")
|
playerz.set_gender(player, "random")
|
||||||
end
|
end
|
||||||
player_api.set_base_textures(player) --set the default base_texture
|
playerz.set_base_textures(player) --set the default base_texture
|
||||||
player_api.set_cloths(player) --set the default clothes
|
playerz.set_cloths(player) --set the default clothes
|
||||||
player_api.set_texture(player)
|
playerz.set_texture(player)
|
||||||
end)
|
end)
|
|
@ -1,4 +1,4 @@
|
||||||
player_api.hair_colors = {
|
playerz.hair_colors = {
|
||||||
black = {
|
black = {
|
||||||
color = "#000000",
|
color = "#000000",
|
||||||
ratio = 175,
|
ratio = 175,
|
||||||
|
@ -23,11 +23,11 @@ player_api.hair_colors = {
|
||||||
}
|
}
|
||||||
|
|
||||||
local hair_colors_redux = {}
|
local hair_colors_redux = {}
|
||||||
for key, value in pairs(player_api.hair_colors) do
|
for key, value in pairs(playerz.hair_colors) do
|
||||||
hair_colors_redux[#hair_colors_redux+1] = key
|
hair_colors_redux[#hair_colors_redux+1] = key
|
||||||
end
|
end
|
||||||
|
|
||||||
player_api.skin_colors = {
|
playerz.skin_colors = {
|
||||||
normal = nil,
|
normal = nil,
|
||||||
light_brown = {
|
light_brown = {
|
||||||
color = "#bea080",
|
color = "#bea080",
|
||||||
|
@ -44,31 +44,31 @@ player_api.skin_colors = {
|
||||||
}
|
}
|
||||||
|
|
||||||
local skin_colors_redux = {}
|
local skin_colors_redux = {}
|
||||||
for key, value in pairs(player_api.skin_colors) do
|
for key, value in pairs(playerz.skin_colors) do
|
||||||
skin_colors_redux[#skin_colors_redux+1] = key
|
skin_colors_redux[#skin_colors_redux+1] = key
|
||||||
end
|
end
|
||||||
|
|
||||||
player_api.eye_colors = {"brown", "gray", "green", "blue", "hazel", "violet", "black", "pink"}
|
playerz.eye_colors = {"brown", "gray", "green", "blue", "hazel", "violet", "black", "pink"}
|
||||||
|
|
||||||
function player_api.get_base_texture_table(player)
|
function playerz.get_base_texture_table(player)
|
||||||
local meta = player:get_meta()
|
local meta = player:get_meta()
|
||||||
local base_texture_str = meta:get_string("base_texture")
|
local base_texture_str = meta:get_string("base_texture")
|
||||||
if base_texture_str == nil or base_texture_str == "" then
|
if base_texture_str == nil or base_texture_str == "" then
|
||||||
player_api.set_base_textures(player)
|
playerz.set_base_textures(player)
|
||||||
end
|
end
|
||||||
local base_texture = minetest.deserialize(base_texture_str)
|
local base_texture = minetest.deserialize(base_texture_str)
|
||||||
return base_texture
|
return base_texture
|
||||||
end
|
end
|
||||||
|
|
||||||
function player_api.set_base_texture(player, base_texture)
|
function playerz.set_base_texture(player, base_texture)
|
||||||
local meta = player:get_meta()
|
local meta = player:get_meta()
|
||||||
meta:set_string("base_texture", minetest.serialize(base_texture))
|
meta:set_string("base_texture", minetest.serialize(base_texture))
|
||||||
end
|
end
|
||||||
|
|
||||||
function player_api.create_base_texture(gender)
|
function playerz.create_base_texture(gender)
|
||||||
local base_texture = {}
|
local base_texture = {}
|
||||||
local hair_color = hair_colors_redux[math.random(#hair_colors_redux)]
|
local hair_color = hair_colors_redux[math.random(#hair_colors_redux)]
|
||||||
local eye_color = "player_"..player_api.eye_colors[math.random(#player_api.eye_colors)].."_eye.png"
|
local eye_color = "player_"..playerz.eye_colors[math.random(#playerz.eye_colors)].."_eye.png"
|
||||||
if gender == "male" then
|
if gender == "male" then
|
||||||
base_texture["eyebrowns"] = {texture = nil, color = nil}
|
base_texture["eyebrowns"] = {texture = nil, color = nil}
|
||||||
base_texture["eye"] = eye_color
|
base_texture["eye"] = eye_color
|
||||||
|
@ -85,20 +85,20 @@ function player_api.create_base_texture(gender)
|
||||||
return base_texture
|
return base_texture
|
||||||
end
|
end
|
||||||
|
|
||||||
function player_api.set_base_textures(player)
|
function playerz.set_base_textures(player)
|
||||||
local meta = player:get_meta()
|
local meta = player:get_meta()
|
||||||
local gender = meta:get_string("gender")
|
local gender = meta:get_string("gender")
|
||||||
local base_texture = player_api.create_base_texture(gender)
|
local base_texture = playerz.create_base_texture(gender)
|
||||||
player_api.set_base_texture(player, base_texture)
|
playerz.set_base_texture(player, base_texture)
|
||||||
end
|
end
|
||||||
|
|
||||||
local function colorize_texture(base_texture, what, texture)
|
local function colorize_texture(base_texture, what, texture)
|
||||||
if base_texture[what]["color"] then
|
if base_texture[what]["color"] then
|
||||||
local value
|
local value
|
||||||
if what == "skin" then
|
if what == "skin" then
|
||||||
value = player_api.skin_colors[base_texture[what]["color"]]
|
value = playerz.skin_colors[base_texture[what]["color"]]
|
||||||
else --"hair"
|
else --"hair"
|
||||||
value = player_api.hair_colors[base_texture[what]["color"]]
|
value = playerz.hair_colors[base_texture[what]["color"]]
|
||||||
end
|
end
|
||||||
if value and value.color then
|
if value and value.color then
|
||||||
return texture .. "\\^\\[colorize\\:\\"..value.color.."\\:"..tostring(value.ratio)
|
return texture .. "\\^\\[colorize\\:\\"..value.color.."\\:"..tostring(value.ratio)
|
||||||
|
@ -110,7 +110,7 @@ local function colorize_texture(base_texture, what, texture)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function player_api.compose_base_texture(base_texture, def)
|
function playerz.compose_base_texture(base_texture, def)
|
||||||
|
|
||||||
local texture = colorize_texture(base_texture, "skin", "[combine:"..def.canvas_size..":0,0="..def.skin_texture)
|
local texture = colorize_texture(base_texture, "skin", "[combine:"..def.canvas_size..":0,0="..def.skin_texture)
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
local S = minetest.get_translator("player_api")
|
local S = minetest.get_translator("playerz")
|
||||||
|
|
||||||
function player_api.has_cloths(player)
|
function playerz.has_cloths(player)
|
||||||
local inv = player:get_inventory()
|
local inv = player:get_inventory()
|
||||||
if inv:is_empty("cloths") then
|
if inv:is_empty("cloths") then
|
||||||
return false
|
return false
|
||||||
|
@ -9,7 +9,7 @@ function player_api.has_cloths(player)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function player_api.register_cloth(name, def)
|
function playerz.register_cloth(name, def)
|
||||||
if not(def.inventory_image) then
|
if not(def.inventory_image) then
|
||||||
def.wield_image = def.texture
|
def.wield_image = def.texture
|
||||||
end
|
end
|
||||||
|
@ -57,7 +57,7 @@ function player_api.register_cloth(name, def)
|
||||||
})
|
})
|
||||||
end
|
end
|
||||||
|
|
||||||
player_api.register_cloth("player_api:cloth_female_upper_default", {
|
playerz.register_cloth("playerz:cloth_female_upper_default", {
|
||||||
description = S("Purple Stripe Summer T-shirt"),
|
description = S("Purple Stripe Summer T-shirt"),
|
||||||
inventory_image = "cloth_female_upper_default_inv.png",
|
inventory_image = "cloth_female_upper_default_inv.png",
|
||||||
wield_image = "cloth_female_upper_default.png",
|
wield_image = "cloth_female_upper_default.png",
|
||||||
|
@ -67,7 +67,7 @@ player_api.register_cloth("player_api:cloth_female_upper_default", {
|
||||||
groups = {cloth = 2},
|
groups = {cloth = 2},
|
||||||
})
|
})
|
||||||
|
|
||||||
player_api.register_cloth("player_api:cloth_female_lower_default", {
|
playerz.register_cloth("playerz:cloth_female_lower_default", {
|
||||||
description = S("Fresh Summer Denim Shorts"),
|
description = S("Fresh Summer Denim Shorts"),
|
||||||
inventory_image = "cloth_female_lower_default_inv.png",
|
inventory_image = "cloth_female_lower_default_inv.png",
|
||||||
wield_image = "cloth_female_lower_default_inv.png",
|
wield_image = "cloth_female_lower_default_inv.png",
|
||||||
|
@ -77,7 +77,7 @@ player_api.register_cloth("player_api:cloth_female_lower_default", {
|
||||||
groups = {cloth = 3},
|
groups = {cloth = 3},
|
||||||
})
|
})
|
||||||
|
|
||||||
player_api.register_cloth("player_api:cloth_unisex_footwear_default", {
|
playerz.register_cloth("playerz:cloth_unisex_footwear_default", {
|
||||||
description = S("Common Black Shoes"),
|
description = S("Common Black Shoes"),
|
||||||
inventory_image = "cloth_unisex_footwear_default_inv.png",
|
inventory_image = "cloth_unisex_footwear_default_inv.png",
|
||||||
wield_image = "cloth_unisex_footwear_default_inv.png",
|
wield_image = "cloth_unisex_footwear_default_inv.png",
|
||||||
|
@ -87,7 +87,7 @@ player_api.register_cloth("player_api:cloth_unisex_footwear_default", {
|
||||||
groups = {cloth = 4},
|
groups = {cloth = 4},
|
||||||
})
|
})
|
||||||
|
|
||||||
player_api.register_cloth("player_api:cloth_female_head_default", {
|
playerz.register_cloth("playerz:cloth_female_head_default", {
|
||||||
description = S("Pink Bow"),
|
description = S("Pink Bow"),
|
||||||
inventory_image = "cloth_female_head_default_inv.png",
|
inventory_image = "cloth_female_head_default_inv.png",
|
||||||
wield_image = "cloth_female_head_default_inv.png",
|
wield_image = "cloth_female_head_default_inv.png",
|
||||||
|
@ -97,7 +97,7 @@ player_api.register_cloth("player_api:cloth_female_head_default", {
|
||||||
groups = {cloth = 1},
|
groups = {cloth = 1},
|
||||||
})
|
})
|
||||||
|
|
||||||
player_api.register_cloth("player_api:cloth_male_upper_default", {
|
playerz.register_cloth("playerz:cloth_male_upper_default", {
|
||||||
description = S("Classic Green Sweater"),
|
description = S("Classic Green Sweater"),
|
||||||
inventory_image = "cloth_male_upper_default_inv.png",
|
inventory_image = "cloth_male_upper_default_inv.png",
|
||||||
wield_image = "cloth_male_upper_default_inv.png",
|
wield_image = "cloth_male_upper_default_inv.png",
|
||||||
|
@ -107,7 +107,7 @@ player_api.register_cloth("player_api:cloth_male_upper_default", {
|
||||||
groups = {cloth = 2},
|
groups = {cloth = 2},
|
||||||
})
|
})
|
||||||
|
|
||||||
player_api.register_cloth("player_api:cloth_male_lower_default", {
|
playerz.register_cloth("playerz:cloth_male_lower_default", {
|
||||||
description = S("Fine Blue Pants"),
|
description = S("Fine Blue Pants"),
|
||||||
inventory_image = "cloth_male_lower_default_inv.png",
|
inventory_image = "cloth_male_lower_default_inv.png",
|
||||||
wield_image = "cloth_male_lower_default_inv.png",
|
wield_image = "cloth_male_lower_default_inv.png",
|
||||||
|
@ -117,31 +117,31 @@ player_api.register_cloth("player_api:cloth_male_lower_default", {
|
||||||
groups = {cloth = 3},
|
groups = {cloth = 3},
|
||||||
})
|
})
|
||||||
|
|
||||||
function player_api.set_cloths(player)
|
function playerz.set_cloths(player)
|
||||||
local gender = player:get_meta():get_string("gender")
|
local gender = player:get_meta():get_string("gender")
|
||||||
--Create the "cloths" inventory
|
--Create the "cloths" inventory
|
||||||
local inv = player:get_inventory()
|
local inv = player:get_inventory()
|
||||||
inv:set_size("cloths", 8)
|
inv:set_size("cloths", 8)
|
||||||
|
|
||||||
if gender == "male" then
|
if gender == "male" then
|
||||||
inv:add_item("cloths", 'player_api:cloth_male_upper_default')
|
inv:add_item("cloths", 'playerz:cloth_male_upper_default')
|
||||||
inv:add_item("cloths", 'player_api:cloth_male_lower_default')
|
inv:add_item("cloths", 'playerz:cloth_male_lower_default')
|
||||||
else
|
else
|
||||||
inv:add_item("cloths", 'player_api:cloth_female_head_default')
|
inv:add_item("cloths", 'playerz:cloth_female_head_default')
|
||||||
inv:add_item("cloths", 'player_api:cloth_female_upper_default')
|
inv:add_item("cloths", 'playerz:cloth_female_upper_default')
|
||||||
inv:add_item("cloths", 'player_api:cloth_female_lower_default')
|
inv:add_item("cloths", 'playerz:cloth_female_lower_default')
|
||||||
end
|
end
|
||||||
inv:add_item("cloths", 'player_api:cloth_unisex_footwear_default')
|
inv:add_item("cloths", 'playerz:cloth_unisex_footwear_default')
|
||||||
end
|
end
|
||||||
|
|
||||||
player_api.cloth_pos = {
|
playerz.cloth_pos = {
|
||||||
"18,0",
|
"18,0",
|
||||||
"12,12",
|
"12,12",
|
||||||
"0,12",
|
"0,12",
|
||||||
"0,12",
|
"0,12",
|
||||||
}
|
}
|
||||||
|
|
||||||
function player_api.compose_cloth(player)
|
function playerz.compose_cloth(player)
|
||||||
local inv = player:get_inventory()
|
local inv = player:get_inventory()
|
||||||
local inv_list = inv:get_list("cloths")
|
local inv_list = inv:get_list("cloths")
|
||||||
local upper_ItemStack, lower_ItemStack, footwear_ItemStack, head_ItemStack
|
local upper_ItemStack, lower_ItemStack, footwear_ItemStack, head_ItemStack
|
||||||
|
@ -170,8 +170,8 @@ function player_api.compose_cloth(player)
|
||||||
if not(underwear) then
|
if not(underwear) then
|
||||||
lower_ItemStack = "cloth_lower_underwear_default.png"
|
lower_ItemStack = "cloth_lower_underwear_default.png"
|
||||||
end
|
end
|
||||||
local _base_texture = player_api.get_base_texture_table(player)
|
local _base_texture = playerz.get_base_texture_table(player)
|
||||||
local base_texture = player_api.compose_base_texture(_base_texture, {
|
local base_texture = playerz.compose_base_texture(_base_texture, {
|
||||||
canvas_size ="48x20",
|
canvas_size ="48x20",
|
||||||
skin_texture = "player_skin.png",
|
skin_texture = "player_skin.png",
|
||||||
eyebrowns_pos = "6,6",
|
eyebrowns_pos = "6,6",
|
||||||
|
@ -183,16 +183,16 @@ function player_api.compose_cloth(player)
|
||||||
})
|
})
|
||||||
local cloth = base_texture.."^".."[combine:48x20:0,0="
|
local cloth = base_texture.."^".."[combine:48x20:0,0="
|
||||||
if head_ItemStack then
|
if head_ItemStack then
|
||||||
cloth = cloth .. ":"..player_api.cloth_pos[1].."="..head_ItemStack
|
cloth = cloth .. ":"..playerz.cloth_pos[1].."="..head_ItemStack
|
||||||
end
|
end
|
||||||
if upper_ItemStack then
|
if upper_ItemStack then
|
||||||
cloth = cloth .. ":"..player_api.cloth_pos[2].."="..upper_ItemStack
|
cloth = cloth .. ":"..playerz.cloth_pos[2].."="..upper_ItemStack
|
||||||
end
|
end
|
||||||
if lower_ItemStack then
|
if lower_ItemStack then
|
||||||
cloth = cloth .. ":"..player_api.cloth_pos[3].."="..lower_ItemStack
|
cloth = cloth .. ":"..playerz.cloth_pos[3].."="..lower_ItemStack
|
||||||
end
|
end
|
||||||
if footwear_ItemStack then
|
if footwear_ItemStack then
|
||||||
cloth = cloth .. ":"..player_api.cloth_pos[4].."="..footwear_ItemStack
|
cloth = cloth .. ":"..playerz.cloth_pos[4].."="..footwear_ItemStack
|
||||||
end
|
end
|
||||||
--Now attached cloth
|
--Now attached cloth
|
||||||
if not(next(attached_cloth) == nil) then
|
if not(next(attached_cloth) == nil) then
|
||||||
|
@ -200,7 +200,7 @@ function player_api.compose_cloth(player)
|
||||||
local attached_item_name = attached_cloth[i]
|
local attached_item_name = attached_cloth[i]
|
||||||
local attached_itemstack = minetest.registered_items[attached_item_name]
|
local attached_itemstack = minetest.registered_items[attached_item_name]
|
||||||
local attached_cloth_type = minetest.get_item_group(attached_item_name, "cloth")
|
local attached_cloth_type = minetest.get_item_group(attached_item_name, "cloth")
|
||||||
cloth = cloth .. ":"..player_api.cloth_pos[attached_cloth_type].."="..attached_itemstack._cloth_texture
|
cloth = cloth .. ":"..playerz.cloth_pos[attached_cloth_type].."="..attached_itemstack._cloth_texture
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
return cloth
|
return cloth
|
|
@ -1,11 +1,11 @@
|
||||||
-- player/init.lua
|
-- player/init.lua
|
||||||
|
|
||||||
dofile(minetest.get_modpath("player_api") .. "/api.lua")
|
dofile(minetest.get_modpath("playerz") .. "/api.lua")
|
||||||
dofile(minetest.get_modpath("player_api") .. "/base_texture.lua")
|
dofile(minetest.get_modpath("playerz") .. "/base_texture.lua")
|
||||||
dofile(minetest.get_modpath("player_api") .. "/cloths.lua")
|
dofile(minetest.get_modpath("playerz") .. "/cloths.lua")
|
||||||
|
|
||||||
-- Default player appearance
|
-- Default player appearance
|
||||||
player_api.register_model("character.b3d", {
|
playerz.register_model("character.b3d", {
|
||||||
animation_speed = 30,
|
animation_speed = 30,
|
||||||
textures = {"character.png"},
|
textures = {"character.png"},
|
||||||
animations = {
|
animations = {
|
||||||
|
@ -29,19 +29,19 @@ player_api.register_model("character.b3d", {
|
||||||
-- Update appearance when the player joins
|
-- Update appearance when the player joins
|
||||||
minetest.register_on_joinplayer(function(player)
|
minetest.register_on_joinplayer(function(player)
|
||||||
local player_name = player:get_player_name()
|
local player_name = player:get_player_name()
|
||||||
player_api.player_attached[player_name] = false
|
playerz.player_attached[player_name] = false
|
||||||
local gender = player_api.get_gender(player)
|
local gender = playerz.get_gender(player)
|
||||||
if minetest.get_modpath("ptol") ~= nil then
|
if minetest.get_modpath("ptol") ~= nil then
|
||||||
if player:get_meta():get_int("ptol:level") == 0 then
|
if player:get_meta():get_int("ptol:level") == 0 then
|
||||||
player:get_meta():set_int("ptol:level", 4)
|
player:get_meta():set_int("ptol:level", 4)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
if gender == "" then
|
if gender == "" then
|
||||||
player_api.select_gender(player_name) --select the gender
|
playerz.select_gender(player_name) --select the gender
|
||||||
else
|
else
|
||||||
local cloth = player_api.compose_cloth(player)
|
local cloth = playerz.compose_cloth(player)
|
||||||
player_api.registered_models[player_api.get_gender_model(gender)].textures[1] = cloth
|
playerz.registered_models[playerz.get_gender_model(gender)].textures[1] = cloth
|
||||||
player_api.set_model(player, player_api.get_gender_model(gender))
|
playerz.set_model(player, playerz.get_gender_model(gender))
|
||||||
end
|
end
|
||||||
-- Set formspec prepend
|
-- Set formspec prepend
|
||||||
local formspec = [[
|
local formspec = [[
|
||||||
|
@ -50,6 +50,6 @@ minetest.register_on_joinplayer(function(player)
|
||||||
]]
|
]]
|
||||||
player:set_formspec_prepend(formspec)
|
player:set_formspec_prepend(formspec)
|
||||||
-- Set hotbar textures
|
-- Set hotbar textures
|
||||||
player:hud_set_hotbar_image("player_api_hotbar.png")
|
player:hud_set_hotbar_image("playerz_hotbar.png")
|
||||||
player:hud_set_hotbar_selected_image("player_api_hotbar_selected.png")
|
player:hud_set_hotbar_selected_image("playerz_hotbar_selected.png")
|
||||||
end)
|
end)
|
|
@ -1,4 +1,4 @@
|
||||||
# textdomain: player_api
|
# textdomain: playerz
|
||||||
Select your gender=Wählen Sie Ihr Geschlecht
|
Select your gender=Wählen Sie Ihr Geschlecht
|
||||||
Male=Mann
|
Male=Mann
|
||||||
Female=Frau
|
Female=Frau
|
|
@ -1,4 +1,4 @@
|
||||||
# textdomain: player_api
|
# textdomain: playerz
|
||||||
Select your gender=Selecciona tu género
|
Select your gender=Selecciona tu género
|
||||||
Male=Hombre
|
Male=Hombre
|
||||||
Female=Mujer
|
Female=Mujer
|
|
@ -1,4 +1,4 @@
|
||||||
# textdomain: player_api
|
# textdomain: playerz
|
||||||
Select your gender=Choisissez votre sexe
|
Select your gender=Choisissez votre sexe
|
||||||
Male=Homme
|
Male=Homme
|
||||||
Female=Femme
|
Female=Femme
|
|
@ -1,4 +1,4 @@
|
||||||
# textdomain: player_api
|
# textdomain: playerz
|
||||||
Select your gender=Seleziona il tuo genere
|
Select your gender=Seleziona il tuo genere
|
||||||
Male=Uomo
|
Male=Uomo
|
||||||
Female=Donna
|
Female=Donna
|
|
@ -1,4 +1,4 @@
|
||||||
# textdomain: player_api
|
# textdomain: playerz
|
||||||
Select your gender=Seleccione o seu género
|
Select your gender=Seleccione o seu género
|
||||||
Male=Homem
|
Male=Homem
|
||||||
Female=Mulher
|
Female=Mulher
|
|
@ -1,4 +1,4 @@
|
||||||
# textdomain: player_api
|
# textdomain: playerz
|
||||||
Select your gender=Выберите свой пол
|
Select your gender=Выберите свой пол
|
||||||
Male=Человек
|
Male=Человек
|
||||||
Female=Женщина
|
Female=Женщина
|
|
@ -0,0 +1,2 @@
|
||||||
|
name = playerz
|
||||||
|
description = Minetest Game mod: playerz
|
Before Width: | Height: | Size: 7.3 KiB After Width: | Height: | Size: 7.3 KiB |
Before Width: | Height: | Size: 8.2 KiB After Width: | Height: | Size: 8.2 KiB |
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 1.8 KiB |
Before Width: | Height: | Size: 1020 B After Width: | Height: | Size: 1020 B |
Before Width: | Height: | Size: 629 B After Width: | Height: | Size: 629 B |
Before Width: | Height: | Size: 497 B After Width: | Height: | Size: 497 B |
Before Width: | Height: | Size: 497 B After Width: | Height: | Size: 497 B |
Before Width: | Height: | Size: 326 B After Width: | Height: | Size: 326 B |
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 2.9 KiB |
Before Width: | Height: | Size: 527 B After Width: | Height: | Size: 527 B |
Before Width: | Height: | Size: 530 B After Width: | Height: | Size: 530 B |
Before Width: | Height: | Size: 467 B After Width: | Height: | Size: 467 B |
Before Width: | Height: | Size: 447 B After Width: | Height: | Size: 447 B |
Before Width: | Height: | Size: 6.7 KiB After Width: | Height: | Size: 6.7 KiB |
Before Width: | Height: | Size: 7.4 KiB After Width: | Height: | Size: 7.4 KiB |