a lot of new things

master
root 2022-02-24 22:01:54 +01:00
parent 89ee2aab86
commit 2d55d1e405
395 changed files with 852 additions and 3535 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 160 B

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 404 B

After

Width:  |  Height:  |  Size: 624 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 217 B

After

Width:  |  Height:  |  Size: 318 B

View File

@ -6,7 +6,7 @@ globals = {
"furn",
"minetest",
"nodez",
"player_api",
"playerz",
"samz",
"sfinv",
"sound",

Binary file not shown.

Before

Width:  |  Height:  |  Size: 159 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 163 B

14
mods/bedrock2/COPYING Normal file
View File

@ -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.

11
mods/bedrock2/README.md Normal file
View File

@ -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).

View File

@ -0,0 +1 @@
mesecons_mvps?

View File

@ -0,0 +1 @@
Adds an indestructable bedrock layer at the bottom of the world.

51
mods/bedrock2/init.lua Normal file
View File

@ -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

View File

@ -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.

View File

@ -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.

View File

@ -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.

1
mods/bedrock2/mod.conf Normal file
View File

@ -0,0 +1 @@
name = bedrock2

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

View File

@ -0,0 +1,2 @@
# Sets the height (Y) at which the bedrock layer will be created.
bedrock2_y = -513

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 573 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 571 B

View File

@ -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"},
})

View File

@ -1,2 +0,0 @@
name = dignodes
description = Nodes with different digging groups

Binary file not shown.

Before

Width:  |  Height:  |  Size: 187 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 193 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 172 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 170 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 201 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 94 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 92 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 93 B

63
mods/flowers/api.lua Normal file
View File

@ -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

169
mods/flowers/flowers.lua Normal file
View File

@ -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

8
mods/flowers/init.lua Normal file
View File

@ -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)

View File

@ -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

3
mods/flowers/mod.conf Normal file
View File

@ -0,0 +1,3 @@
name = flowers
description = Flowers
depends =

Binary file not shown.

After

Width:  |  Height:  |  Size: 669 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 670 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 614 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 614 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 566 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 566 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 625 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 623 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 596 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 576 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 619 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 629 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 619 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 617 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 618 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 770 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 770 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 777 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 575 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 599 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 566 B

View File

@ -1,3 +1,3 @@
name = give_initial_stuff
description = Gives items to players on join
depends = basetools, bucket, chest_of_everything, testnodes
depends = tools, bucket, chest_of_everything

View File

@ -1,15 +1,17 @@
local mg_name = minetest.get_mapgen_setting("mg_name")
biomes = {}
mapgen = {
biomes = {}
}
if mg_name == "valleys" then
biomes.peaky_mountain_height = 85
mapgen.biomes.peaky_mountain_height = 85
elseif mg_name == "carphatian" then
biomes.peaky_mountain_height = 65
mapgen.biomes.peaky_mountain_height = 65
elseif mg_name == "v7" then
biomes.peaky_mountain_height = 45
mapgen.biomes.peaky_mountain_height = 45
else
biomes.peaky_mountain_height = 55
mapgen.biomes.peaky_mountain_height = 55
end
--
@ -62,7 +64,7 @@ if minetest.settings:get_bool("devtest_dungeon_stairs", false) then
end
--
-- Register biomes for biome API
-- Register mapgen.biomes.for biome API
--
if mg_name == "v6" or mg_name == "singlenode" then
@ -248,7 +250,7 @@ minetest.register_decoration({
octaves = 3,
persist = 0.66
},
y_min = biomes.peaky_mountain_height,
y_min = mapgen.biomes.peaky_mountain_height,
y_max = 200,
place_offset_y = -1,
flags = "place_center_x, place_center_z, force_placement",
@ -272,7 +274,7 @@ minetest.register_decoration({
octaves = 3,
persist = 0.66
},
y_min = biomes.peaky_mountain_height,
y_min = mapgen.biomes.peaky_mountain_height,
y_max = 200,
place_offset_y = -1,
flags = "place_center_x, place_center_z, force_placement",
@ -295,7 +297,7 @@ minetest.register_decoration({
octaves = 3,
persist = 0.66
},
y_min = biomes.peaky_mountain_height,
y_min = mapgen.biomes.peaky_mountain_height,
y_max = 200,
place_offset_y = -1,
flags = "place_center_x, place_center_z, force_placement",
@ -316,7 +318,7 @@ minetest.register_decoration({
octaves = 3,
persist = 0.66
},
y_min = biomes.peaky_mountain_height,
y_min = mapgen.biomes.peaky_mountain_height,
y_max = 200,
spawn_by = "nodez:dirt_with_snow",
num_spawn_by = 1,
@ -335,5 +337,3 @@ minetest.register_ore({
y_max = -384,
y_min = -512,
})

View File

@ -33,9 +33,9 @@ minetest.register_node("nodez:glass", {
paramtype2 = "glasslikeliquidlevel",
sunlight_propagates = true,
is_ground_content = false,
groups = {cracky= 3, glass= 1,
oddly_breakable_by_hand = 3},
sounds = sound.glass(),
groups = {cracky= 3, glass= 1},
oddly_breakable_by_hand = 3,
sounds = sound.glass()
})
minetest.register_craft({

Binary file not shown.

Before

Width:  |  Height:  |  Size: 559 B

After

Width:  |  Height:  |  Size: 553 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 559 B

After

Width:  |  Height:  |  Size: 551 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 559 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 640 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 552 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 550 B

View File

@ -1,2 +0,0 @@
name = player_api
description = Minetest Game mod: player_api

View File

@ -1,4 +1,4 @@
Minetest Game mod: player_api
Minetest Game mod: playerz
=============================
See license.txt for license information.

View File

@ -2,20 +2,20 @@
-- See README.txt for licensing and other information.
-- 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
-- Note: This is currently broken due to a bug in Irrlicht, leave at 0
local animation_blend = 0
player_api.registered_models = { }
playerz.registered_models = { }
-- 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
end
@ -24,9 +24,9 @@ local player_model = {}
local player_textures = {}
local player_anim = {}
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()
return {
model = player_model[name],
@ -35,7 +35,7 @@ function player_api.get_animation(player)
}
end
function player_api.set_gender(player, gender)
function playerz.set_gender(player, gender)
if not(gender) or gender == "random" then
if math.random(2) == 1 then
gender = "male"
@ -47,16 +47,16 @@ function player_api.set_gender(player, gender)
return gender
end
function player_api.get_gender(player)
function playerz.get_gender(player)
return player:get_meta():get_string("gender")
end
function player_api.get_gender_model(gender)
function playerz.get_gender_model(gender)
local model = "character.b3d"
return model
end
function player_api.set_base_texture(player, gender)
function playerz.set_base_texture(player, gender)
local meta = player:get_meta()
meta:set_string("base_texture", gender)
end
@ -66,7 +66,7 @@ minetest.register_chatcommand("toggle_gender", {
func = function(name, param)
local player = minetest.get_player_by_name(name)
local meta = player:get_meta()
local old_gender = player_api.get_gender(player)
local old_gender = playerz.get_gender(player)
if old_gender then
local new_gender
if old_gender == "male" then
@ -75,11 +75,11 @@ minetest.register_chatcommand("toggle_gender", {
new_gender = "male"
end
meta:set_string("gender", new_gender)
player_api.set_model(player, player_api.get_gender_model(new_gender))
local gender_model = player_api.get_gender_model(new_gender)
local cloth = player_api.compose_cloth(player)
player_api.registered_models[gender_model].textures[1] = cloth
player_api.set_textures(player, models[gender_model].textures)
playerz.set_model(player, playerz.get_gender_model(new_gender))
local gender_model = playerz.get_gender_model(new_gender)
local cloth = playerz.compose_cloth(player)
playerz.registered_models[gender_model].textures[1] = cloth
playerz.set_textures(player, models[gender_model].textures)
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)..".")
end
@ -112,7 +112,7 @@ local function move_head(player, on_water)
end
-- 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 model = models[model_name]
if model then
@ -128,7 +128,7 @@ function player_api.set_model(player, model_name)
stepheight = model.stepheight or 0.6,
eye_height = model.eye_height or 1.47,
})
player_api.set_animation(player, "stand")
playerz.set_animation(player, "stand")
else
player:set_properties({
textures = {"player.png", "player_back.png"},
@ -142,7 +142,7 @@ function player_api.set_model(player, model_name)
player_model[name] = model_name
end
function player_api.set_textures(player, textures)
function playerz.set_textures(player, textures)
local name = player:get_player_name()
local model = models[player_model[name]]
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})
end
function player_api.set_animation(player, anim_name, speed)
function playerz.set_animation(player, anim_name, speed)
local name = player:get_player_name()
if player_anim[name] == anim_name then
return
@ -170,12 +170,12 @@ minetest.register_on_leaveplayer(function(player)
player_anim[name] = nil
player_textures[name] = nil
player_sneak[name] = nil
player_api.player_attached[name] = nil
playerz.player_attached[name] = nil
end)
-- Localize for better performance.
local player_set_animation = player_api.set_animation
local player_attached = player_api.player_attached
local player_set_animation = playerz.set_animation
local player_attached = playerz.player_attached
-- Prevent knockback for attached players
local old_calculate_knockback = minetest.calculate_knockback
@ -318,7 +318,7 @@ minetest.register_globalstep(function(dtime)
end
end)
function player_api.get_gender_formspec(name)
function playerz.get_gender_formspec(name)
local text = S("Select your gender")
local formspec = {
@ -333,32 +333,32 @@ function player_api.get_gender_formspec(name)
return table.concat(formspec, "")
end
function player_api.select_gender(player_name)
minetest.show_formspec(player_name, "player_api:gender", player_api.get_gender_formspec(player_name))
function playerz.select_gender(player_name)
minetest.show_formspec(player_name, "playerz:gender", playerz.get_gender_formspec(player_name))
end
function player_api.set_texture(player)
local cloth = player_api.compose_cloth(player)
local gender = player_api.get_gender(player)
local gender_model = player_api.get_gender_model(gender)
player_api.registered_models[gender_model].textures[1] = cloth
player_api.set_model(player, gender_model)
player_api.set_textures(player, models[gender_model].textures)
function playerz.set_texture(player)
local cloth = playerz.compose_cloth(player)
local gender = playerz.get_gender(player)
local gender_model = playerz.get_gender_model(gender)
playerz.registered_models[gender_model].textures[1] = cloth
playerz.set_model(player, gender_model)
playerz.set_textures(player, models[gender_model].textures)
end
function player_api.get_face(base_texture, scale, escape)
function playerz.get_face(base_texture, scale, escape)
if not scale then
scale = 1.0
end
local face = player_api.compose_face(base_texture, scale)
local face = playerz.compose_face(base_texture, scale)
if escape then
face = minetest.formspec_escape(face)
end
return face
end
function player_api.compose_face(base_texture, scale)
return player_api.compose_base_texture(base_texture, {
function playerz.compose_face(base_texture, scale)
return playerz.compose_base_texture(base_texture, {
canvas_size = "6x6",
scale = scale,
skin_texture = "player_face_skin.png",
@ -372,13 +372,13 @@ function player_api.compose_face(base_texture, scale)
end
--Level functions
function player_api.lvl_up(player)
function playerz.lvl_up(player)
local meta = player:get_meta()
local level = meta:get_int("level")
meta:set_int("level", (level + 1))
end
function player_api.lvl_down(player)
function playerz.lvl_down(player)
local meta = player:get_meta()
local level = meta:get_int("level")
if level == 0 then
@ -387,7 +387,7 @@ function player_api.lvl_down(player)
meta:set_int("level", (level - 1))
end
function player_api.set_lvl(player, level)
function playerz.set_lvl(player, level)
if level <= 0 then
return
else
@ -395,12 +395,12 @@ function player_api.set_lvl(player, level)
end
end
function player_api.reset_lvl(player, level)
function playerz.reset_lvl(player, level)
player:get_meta():set_int("level", 0)
end
minetest.register_on_player_receive_fields(function(player, formname, fields)
if formname ~= "player_api:gender" then
if formname ~= "playerz:gender" then
return
end
local gender
@ -410,11 +410,11 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
else
gender = "female"
end
player_api.set_gender(player, gender)
playerz.set_gender(player, gender)
else
player_api.set_gender(player, "random")
playerz.set_gender(player, "random")
end
player_api.set_base_textures(player) --set the default base_texture
player_api.set_cloths(player) --set the default clothes
player_api.set_texture(player)
playerz.set_base_textures(player) --set the default base_texture
playerz.set_cloths(player) --set the default clothes
playerz.set_texture(player)
end)

View File

@ -1,4 +1,4 @@
player_api.hair_colors = {
playerz.hair_colors = {
black = {
color = "#000000",
ratio = 175,
@ -23,11 +23,11 @@ player_api.hair_colors = {
}
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
end
player_api.skin_colors = {
playerz.skin_colors = {
normal = nil,
light_brown = {
color = "#bea080",
@ -44,31 +44,31 @@ player_api.skin_colors = {
}
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
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 base_texture_str = meta:get_string("base_texture")
if base_texture_str == nil or base_texture_str == "" then
player_api.set_base_textures(player)
playerz.set_base_textures(player)
end
local base_texture = minetest.deserialize(base_texture_str)
return base_texture
end
function player_api.set_base_texture(player, base_texture)
function playerz.set_base_texture(player, base_texture)
local meta = player:get_meta()
meta:set_string("base_texture", minetest.serialize(base_texture))
end
function player_api.create_base_texture(gender)
function playerz.create_base_texture(gender)
local base_texture = {}
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
base_texture["eyebrowns"] = {texture = nil, color = nil}
base_texture["eye"] = eye_color
@ -85,20 +85,20 @@ function player_api.create_base_texture(gender)
return base_texture
end
function player_api.set_base_textures(player)
function playerz.set_base_textures(player)
local meta = player:get_meta()
local gender = meta:get_string("gender")
local base_texture = player_api.create_base_texture(gender)
player_api.set_base_texture(player, base_texture)
local base_texture = playerz.create_base_texture(gender)
playerz.set_base_texture(player, base_texture)
end
local function colorize_texture(base_texture, what, texture)
if base_texture[what]["color"] then
local value
if what == "skin" then
value = player_api.skin_colors[base_texture[what]["color"]]
value = playerz.skin_colors[base_texture[what]["color"]]
else --"hair"
value = player_api.hair_colors[base_texture[what]["color"]]
value = playerz.hair_colors[base_texture[what]["color"]]
end
if value and value.color then
return texture .. "\\^\\[colorize\\:\\"..value.color.."\\:"..tostring(value.ratio)
@ -110,7 +110,7 @@ local function colorize_texture(base_texture, what, texture)
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)

View File

@ -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()
if inv:is_empty("cloths") then
return false
@ -9,7 +9,7 @@ function player_api.has_cloths(player)
end
end
function player_api.register_cloth(name, def)
function playerz.register_cloth(name, def)
if not(def.inventory_image) then
def.wield_image = def.texture
end
@ -57,7 +57,7 @@ function player_api.register_cloth(name, def)
})
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"),
inventory_image = "cloth_female_upper_default_inv.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},
})
player_api.register_cloth("player_api:cloth_female_lower_default", {
playerz.register_cloth("playerz:cloth_female_lower_default", {
description = S("Fresh Summer Denim Shorts"),
inventory_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},
})
player_api.register_cloth("player_api:cloth_unisex_footwear_default", {
playerz.register_cloth("playerz:cloth_unisex_footwear_default", {
description = S("Common Black Shoes"),
inventory_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},
})
player_api.register_cloth("player_api:cloth_female_head_default", {
playerz.register_cloth("playerz:cloth_female_head_default", {
description = S("Pink Bow"),
inventory_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},
})
player_api.register_cloth("player_api:cloth_male_upper_default", {
playerz.register_cloth("playerz:cloth_male_upper_default", {
description = S("Classic Green Sweater"),
inventory_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},
})
player_api.register_cloth("player_api:cloth_male_lower_default", {
playerz.register_cloth("playerz:cloth_male_lower_default", {
description = S("Fine Blue Pants"),
inventory_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},
})
function player_api.set_cloths(player)
function playerz.set_cloths(player)
local gender = player:get_meta():get_string("gender")
--Create the "cloths" inventory
local inv = player:get_inventory()
inv:set_size("cloths", 8)
if gender == "male" then
inv:add_item("cloths", 'player_api:cloth_male_upper_default')
inv:add_item("cloths", 'player_api:cloth_male_lower_default')
inv:add_item("cloths", 'playerz:cloth_male_upper_default')
inv:add_item("cloths", 'playerz:cloth_male_lower_default')
else
inv:add_item("cloths", 'player_api:cloth_female_head_default')
inv:add_item("cloths", 'player_api:cloth_female_upper_default')
inv:add_item("cloths", 'player_api:cloth_female_lower_default')
inv:add_item("cloths", 'playerz:cloth_female_head_default')
inv:add_item("cloths", 'playerz:cloth_female_upper_default')
inv:add_item("cloths", 'playerz:cloth_female_lower_default')
end
inv:add_item("cloths", 'player_api:cloth_unisex_footwear_default')
inv:add_item("cloths", 'playerz:cloth_unisex_footwear_default')
end
player_api.cloth_pos = {
playerz.cloth_pos = {
"18,0",
"12,12",
"0,12",
"0,12",
}
function player_api.compose_cloth(player)
function playerz.compose_cloth(player)
local inv = player:get_inventory()
local inv_list = inv:get_list("cloths")
local upper_ItemStack, lower_ItemStack, footwear_ItemStack, head_ItemStack
@ -170,8 +170,8 @@ function player_api.compose_cloth(player)
if not(underwear) then
lower_ItemStack = "cloth_lower_underwear_default.png"
end
local _base_texture = player_api.get_base_texture_table(player)
local base_texture = player_api.compose_base_texture(_base_texture, {
local _base_texture = playerz.get_base_texture_table(player)
local base_texture = playerz.compose_base_texture(_base_texture, {
canvas_size ="48x20",
skin_texture = "player_skin.png",
eyebrowns_pos = "6,6",
@ -183,16 +183,16 @@ function player_api.compose_cloth(player)
})
local cloth = base_texture.."^".."[combine:48x20:0,0="
if head_ItemStack then
cloth = cloth .. ":"..player_api.cloth_pos[1].."="..head_ItemStack
cloth = cloth .. ":"..playerz.cloth_pos[1].."="..head_ItemStack
end
if upper_ItemStack then
cloth = cloth .. ":"..player_api.cloth_pos[2].."="..upper_ItemStack
cloth = cloth .. ":"..playerz.cloth_pos[2].."="..upper_ItemStack
end
if lower_ItemStack then
cloth = cloth .. ":"..player_api.cloth_pos[3].."="..lower_ItemStack
cloth = cloth .. ":"..playerz.cloth_pos[3].."="..lower_ItemStack
end
if footwear_ItemStack then
cloth = cloth .. ":"..player_api.cloth_pos[4].."="..footwear_ItemStack
cloth = cloth .. ":"..playerz.cloth_pos[4].."="..footwear_ItemStack
end
--Now attached cloth
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_itemstack = minetest.registered_items[attached_item_name]
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
return cloth

View File

@ -1,11 +1,11 @@
-- player/init.lua
dofile(minetest.get_modpath("player_api") .. "/api.lua")
dofile(minetest.get_modpath("player_api") .. "/base_texture.lua")
dofile(minetest.get_modpath("player_api") .. "/cloths.lua")
dofile(minetest.get_modpath("playerz") .. "/api.lua")
dofile(minetest.get_modpath("playerz") .. "/base_texture.lua")
dofile(minetest.get_modpath("playerz") .. "/cloths.lua")
-- Default player appearance
player_api.register_model("character.b3d", {
playerz.register_model("character.b3d", {
animation_speed = 30,
textures = {"character.png"},
animations = {
@ -29,19 +29,19 @@ player_api.register_model("character.b3d", {
-- Update appearance when the player joins
minetest.register_on_joinplayer(function(player)
local player_name = player:get_player_name()
player_api.player_attached[player_name] = false
local gender = player_api.get_gender(player)
playerz.player_attached[player_name] = false
local gender = playerz.get_gender(player)
if minetest.get_modpath("ptol") ~= nil then
if player:get_meta():get_int("ptol:level") == 0 then
player:get_meta():set_int("ptol:level", 4)
end
end
if gender == "" then
player_api.select_gender(player_name) --select the gender
playerz.select_gender(player_name) --select the gender
else
local cloth = player_api.compose_cloth(player)
player_api.registered_models[player_api.get_gender_model(gender)].textures[1] = cloth
player_api.set_model(player, player_api.get_gender_model(gender))
local cloth = playerz.compose_cloth(player)
playerz.registered_models[playerz.get_gender_model(gender)].textures[1] = cloth
playerz.set_model(player, playerz.get_gender_model(gender))
end
-- Set formspec prepend
local formspec = [[
@ -50,6 +50,6 @@ minetest.register_on_joinplayer(function(player)
]]
player:set_formspec_prepend(formspec)
-- Set hotbar textures
player:hud_set_hotbar_image("player_api_hotbar.png")
player:hud_set_hotbar_selected_image("player_api_hotbar_selected.png")
player:hud_set_hotbar_image("playerz_hotbar.png")
player:hud_set_hotbar_selected_image("playerz_hotbar_selected.png")
end)

View File

@ -1,4 +1,4 @@
# textdomain: player_api
# textdomain: playerz
Select your gender=Wählen Sie Ihr Geschlecht
Male=Mann
Female=Frau

View File

@ -1,4 +1,4 @@
# textdomain: player_api
# textdomain: playerz
Select your gender=Selecciona tu género
Male=Hombre
Female=Mujer

View File

@ -1,4 +1,4 @@
# textdomain: player_api
# textdomain: playerz
Select your gender=Choisissez votre sexe
Male=Homme
Female=Femme

View File

@ -1,4 +1,4 @@
# textdomain: player_api
# textdomain: playerz
Select your gender=Seleziona il tuo genere
Male=Uomo
Female=Donna

View File

@ -1,4 +1,4 @@
# textdomain: player_api
# textdomain: playerz
Select your gender=Seleccione o seu género
Male=Homem
Female=Mulher

View File

@ -1,4 +1,4 @@
# textdomain: player_api
# textdomain: playerz
Select your gender=Выберите свой пол
Male=Человек
Female=Женщина

2
mods/playerz/mod.conf Normal file
View File

@ -0,0 +1,2 @@
name = playerz
description = Minetest Game mod: playerz

View File

Before

Width:  |  Height:  |  Size: 7.3 KiB

After

Width:  |  Height:  |  Size: 7.3 KiB

View File

Before

Width:  |  Height:  |  Size: 8.2 KiB

After

Width:  |  Height:  |  Size: 8.2 KiB

View File

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

Before

Width:  |  Height:  |  Size: 1020 B

After

Width:  |  Height:  |  Size: 1020 B

View File

Before

Width:  |  Height:  |  Size: 629 B

After

Width:  |  Height:  |  Size: 629 B

View File

Before

Width:  |  Height:  |  Size: 497 B

After

Width:  |  Height:  |  Size: 497 B

View File

Before

Width:  |  Height:  |  Size: 497 B

After

Width:  |  Height:  |  Size: 497 B

View File

Before

Width:  |  Height:  |  Size: 326 B

After

Width:  |  Height:  |  Size: 326 B

View File

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

Before

Width:  |  Height:  |  Size: 527 B

After

Width:  |  Height:  |  Size: 527 B

View File

Before

Width:  |  Height:  |  Size: 530 B

After

Width:  |  Height:  |  Size: 530 B

View File

Before

Width:  |  Height:  |  Size: 467 B

After

Width:  |  Height:  |  Size: 467 B

View File

Before

Width:  |  Height:  |  Size: 447 B

After

Width:  |  Height:  |  Size: 447 B

View File

Before

Width:  |  Height:  |  Size: 6.7 KiB

After

Width:  |  Height:  |  Size: 6.7 KiB

View File

Before

Width:  |  Height:  |  Size: 7.4 KiB

After

Width:  |  Height:  |  Size: 7.4 KiB

Some files were not shown because too many files have changed in this diff Show More