19 Commits

Author SHA1 Message Date
3ae2529c9f Add physics_speed to mithril armor 2025-04-21 16:35:52 +02:00
a6779e7911 Merge remote-tracking branch 'upstream/master' 2025-03-19 18:57:29 +01:00
mal
a586aeee0c Update mod.conf (#157)
* Update mod.conf

description changed from wood to nether

* Update mod.conf

Fixed typo from my previous PR.
2025-03-04 15:59:08 +01:00
082e866274 Update player_api model registration
Ensures correct eye position and collision box.
Values taken from the player_api 'character.b3d' model.
2024-12-27 21:43:08 +01:00
c224a73df7 Add Polish translation (#151) 2024-12-14 18:22:09 +01:00
280165fada tweak feather falling (#150)
changed y_velocity check for player so thart feather falling only works when actually falling and not standing around.
2024-12-12 14:00:26 +01:00
357cc3aada Merge remote-tracking branch 'upstream/master' 2024-09-15 07:59:24 +02:00
ab1bec3be8 Added spanish translations to shields and stands, added "Shared Armor Stand" to template. (#147)
* Create shields.es.tr

Spanish translation for shields.

* Create 3d_armor_stand.es.tr

Spanish translation to armor stands.

* Update template.txt

Added "Shared Armor Stand" to template.
2024-06-25 06:37:04 +02:00
22955b413a Fix "player still online" check of armor.unequip (#146) 2024-05-01 07:24:49 +02:00
1fcbf64d53 Replace 3d_armor_trans.png w/ engine provided blank.png (#143) 2024-04-04 07:25:05 +02:00
fb86c02e43 russian translation fixes (#142) 2024-03-25 20:01:28 +01:00
20917da061 Fix armor radiation values were not not summed up (#139) 2024-03-22 22:35:43 +01:00
7bd77a7b80 Call custom on_punched functions w/ hitter = nil too (#141) 2024-03-19 12:54:42 +01:00
25369e5165 Don't assume hitter ~= nil in on_punchplayer callback (#138)
* Don't assume `hitter ~= nil` in on_punchplayer callback

* Use early return
2024-03-17 09:11:03 +01:00
7fc313f911 armorstand nodes are not ground content (#134) 2024-02-29 07:39:44 +01:00
4bac73fc9e Make all admin armor to protect from drowning (#131) 2024-01-17 10:33:37 +01:00
f430395b64 resolve player object in async function again (different globalstep)
fixes #132
2024-01-15 10:15:49 +01:00
467709c935 Use player_api functions instead of default (#129) 2023-12-26 18:34:43 +01:00
e0b6112320 Tweak Esperanto translation (#128) 2023-12-19 07:13:04 +01:00
40 changed files with 148 additions and 87 deletions

View File

@ -352,7 +352,7 @@ armor.update_player_visuals = function(self, player)
end
local name = player:get_player_name()
if self.textures[name] then
default.player_set_textures(player, {
player_api.set_textures(player, {
self.textures[name].skin,
self.textures[name].armor,
self.textures[name].wielditem,
@ -373,7 +373,7 @@ armor.set_player_armor = function(self, player)
local state = 0
local count = 0
local preview = armor:get_preview(name)
local texture = "3d_armor_trans.png"
local texture = "blank.png"
local physics = {}
local attributes = {}
local levels = {}
@ -415,7 +415,7 @@ armor.set_player_armor = function(self, player)
end
-- DEPRECATED, use armor_groups instead
if def.groups["armor_radiation"] and levels["radiation"] then
levels["radiation"] = def.groups["armor_radiation"]
levels["radiation"] = levels["radiation"] + def.groups["armor_radiation"]
end
end
local item = stack:get_name()
@ -719,11 +719,14 @@ armor.unequip = function(self, player, armor_element)
if self:get_element(stack:get_name()) == armor_element then
armor_inv:set_stack("armor", i, "")
minetest.after(0, function()
local inv = player:get_inventory()
local pplayer = minetest.get_player_by_name(name)
if pplayer then -- player is still online
local inv = pplayer:get_inventory()
if inv:room_for_item("main", stack) then
inv:add_item("main", stack)
else
minetest.add_item(player:get_pos(), stack)
minetest.add_item(pplayer:get_pos(), stack)
end
end
end)
self:run_callbacks("on_unequip", player, i, stack)

View File

@ -268,8 +268,8 @@ local function init_player_armor(initplayer)
local skin = armor:get_player_skin(name)
armor.textures[name] = {
skin = skin,
armor = "3d_armor_trans.png",
wielditem = "3d_armor_trans.png",
armor = "blank.png",
wielditem = "blank.png",
preview = armor.default_skin.."_preview.png",
}
local texture_path = minetest.get_modpath("player_textures")
@ -291,21 +291,26 @@ player_api.register_model("3d_armor_character.b3d", {
animation_speed = 30,
textures = {
armor.default_skin..".png",
"3d_armor_trans.png",
"3d_armor_trans.png",
"blank.png",
"blank.png",
},
animations = {
stand = {x=0, y=79},
lay = {x=162, y=166},
lay = {x=162, y=166, eye_height = 0.3, override_local = true,
collisionbox = {-0.6, 0.0, -0.6, 0.6, 0.3, 0.6}},
walk = {x=168, y=187},
mine = {x=189, y=198},
walk_mine = {x=200, y=219},
sit = {x=81, y=160},
sit = {x=81, y=160, eye_height = 0.8, override_local = true,
collisionbox = {-0.3, 0.0, -0.3, 0.3, 1.0, 0.3}},
-- compatibility w/ the emote mod
wave = {x = 192, y = 196, override_local = true},
point = {x = 196, y = 196, override_local = true},
freeze = {x = 205, y = 205, override_local = true},
},
collisionbox = {-0.3, 0.0, -0.3, 0.3, 1.7, 0.3},
-- stepheight: use default
eye_height = 1.47,
})
minetest.register_on_player_receive_fields(function(player, formname, fields)
@ -322,7 +327,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
end)
minetest.register_on_joinplayer(function(player)
default.player_set_model(player, "3d_armor_character.b3d")
player_api.set_model(player, "3d_armor_character.b3d")
init_player_armor(player)
end)
@ -395,10 +400,14 @@ if armor.config.punch_damage == true then
minetest.register_on_punchplayer(function(player, hitter,
time_from_last_punch, tool_capabilities)
local name = player:get_player_name()
if hitter then
local hit_ip = hitter:is_player()
if name and hit_ip and minetest.is_protected(player:get_pos(), "") then
return
elseif name then
end
end
if name then
armor:punch(player, hitter, time_from_last_punch, tool_capabilities)
last_punch_time[name] = minetest.get_gametime()
end
@ -440,7 +449,7 @@ minetest.register_globalstep(function(dtime)
local name = player:get_player_name()
if armor.def[name].feather > 0 then
local vel_y = player:get_velocity().y
if vel_y < 0 and vel_y < 3 then
if vel_y < -0.5 then
vel_y = -(vel_y * 0.05)
player:add_velocity({x = 0, y = vel_y, z = 0})
end

View File

@ -1,7 +1,7 @@
# textdomain: 3d_armor
Radiation=Radiado
Level=Nivelo
Heal=Sanigi
Heal=Blokŝanco
Fire=Fajro
Your @1 is almost broken!=Via @1 estas preskaŭ rompita!
Your @1 got destroyed!=Via @1 detruiĝis!

View File

@ -0,0 +1,7 @@
# textdomain: 3d_armor
Radiation=Promieniowanie
Level=Poziom
Heal=Uzdrawianie
Fire=Ogień
Your @1 is almost broken!=Twój @1 jest prawie zepsuty!
Your @1 got destroyed!=Twój @1 został zniszczony!

Binary file not shown.

Before

Width:  |  Height:  |  Size: 273 B

View File

@ -1,3 +1,3 @@
# textdomain: 3d_armor_ip
Back=Dorso
Armor=Kiraso
Armor=Armaĵo

View File

@ -1,2 +1,2 @@
# textdomain: 3d_armor_sfinv
Armor=Kiraso
Armor=Armaĵoj

View File

@ -62,7 +62,7 @@ local function update_entity(pos)
object = minetest.add_entity(pos, "3d_armor_stand:armor_entity")
end
if object then
local texture = "3d_armor_trans.png"
local texture = "blank.png"
local textures = {}
local meta = minetest.get_meta(pos)
local inv = meta:get_inventory()
@ -144,8 +144,9 @@ minetest.register_node("3d_armor_stand:top", {
buildable_to = false,
drop = "",
groups = {not_in_creative_inventory = 1},
is_ground_content = false,
on_blast = function() end,
tiles = {"3d_armor_trans.png"},
tiles = {"blank.png"},
})
minetest.register_node("3d_armor_stand:armor_stand", {
@ -165,6 +166,7 @@ minetest.register_node("3d_armor_stand:armor_stand", {
},
},
groups = {choppy=2, oddly_breakable_by_hand=2},
is_ground_content = false,
sounds = default.node_sound_wood_defaults(),
on_construct = function(pos)
local meta = minetest.get_meta(pos)
@ -234,6 +236,7 @@ minetest.register_node("3d_armor_stand:locked_armor_stand", {
},
},
groups = {choppy=2, oddly_breakable_by_hand=2},
is_ground_content = false,
sounds = default.node_sound_wood_defaults(),
on_construct = function(pos)
local meta = minetest.get_meta(pos)
@ -316,6 +319,7 @@ minetest.register_node("3d_armor_stand:shared_armor_stand", {
},
},
groups = {choppy=2, oddly_breakable_by_hand=2},
is_ground_content = false,
sounds = default.node_sound_wood_defaults(),
on_construct = function(pos)
local meta = minetest.get_meta(pos)
@ -384,7 +388,7 @@ minetest.register_entity("3d_armor_stand:armor_entity", {
mesh = "3d_armor_entity.obj",
visual_size = {x=1, y=1},
collisionbox = {0,0,0,0,0,0},
textures = {"3d_armor_trans.png"},
textures = {"blank.png"},
},
_pos = nil,
on_activate = function(self)

View File

@ -1,5 +1,5 @@
# textdomain: 3d_armor_stand
Armor Stand Top=Kirasstando Supro
Armor Stand=Kirasstando
Locked Armor Stand=Ŝlosita Kirasstando
Armor Stand (owned by @1)=Kirasstando (posedata de @1)
Armor Stand Top=Armaĵtenila Supro
Armor Stand=Armaĵtenilo
Locked Armor Stand=Ŝlosita Armaĵtenilo
Armor Stand (owned by @1)=Ŝlosita Armaĵtenilo (posedata de @1)

View File

@ -0,0 +1,6 @@
# textdomain: 3d_armor_stand
Armor Stand Top=
Armor Stand=Soporte de armadura
Locked Armor Stand=Soporte de armadura privado
Shared Armor Stand=Soporte de armadura compartido
Armor Stand (owned by @1)=Soporte de armadura (de @1)

View File

@ -0,0 +1,5 @@
# textdomain: 3d_armor_stand
Armor Stand Top=верх стойки для брони
Armor Stand=стойка для брони
Locked Armor Stand=стойка для брони с замком
Armor Stand (owned by @1)=стойка для бони (владелец @1)

View File

@ -2,4 +2,5 @@
Armor Stand Top=
Armor Stand=
Locked Armor Stand=
Shared Armor Stand=
Armor Stand (owned by @1)=

View File

@ -1,7 +1,7 @@
# textdomain: 3d_armor_ui
3D Armor=3D Kiraso
Armor not initialized!=Kiraso ne pravigita!
Armor=Kiraso
3D Armor=3D Armaĵoj
Armor not initialized!=Armaĵoj ne pretigitaj!
Armor=Armaĵo
Level=Nivelo
Heal=Sanigi
Fire=Fajro

View File

@ -41,7 +41,7 @@ armor:register_armor(":3d_armor:chestplate_admin", {
description = S("Admin Chestplate"),
inventory_image = "3d_armor_inv_chestplate_admin.png",
armor_groups = {fleshy=100},
groups = {armor_torso=1, armor_heal=100, armor_use=0,
groups = {armor_torso=1, armor_heal=100, armor_use=0, armor_water=1,
not_in_creative_inventory=1},
on_drop = function(itemstack, dropper, pos)
return
@ -61,7 +61,7 @@ armor:register_armor(":3d_armor:leggings_admin", {
description = S("Admin Leggings"),
inventory_image = "3d_armor_inv_leggings_admin.png",
armor_groups = {fleshy=100},
groups = {armor_legs=1, armor_heal=100, armor_use=0,
groups = {armor_legs=1, armor_heal=100, armor_use=0, armor_water=1,
not_in_creative_inventory=1},
on_drop = function(itemstack, dropper, pos)
return
@ -82,7 +82,7 @@ armor:register_armor(":3d_armor:boots_admin", {
inventory_image = "3d_armor_inv_boots_admin.png",
armor_groups = {fleshy=100},
groups = {armor_feet=1, armor_heal=100, armor_use=0, physics_speed=1,
not_in_creative_inventory=1},
armor_water=1, not_in_creative_inventory=1},
on_drop = function(itemstack, dropper, pos)
return
end,

View File

@ -1,5 +1,5 @@
# textdomain: armor_admin
Admin Helmet=Administra Kasko
Admin Chestplate=Administra Brustkiraso
Admin Chestplate=Administra Kiraso
Admin Leggings=Administra Pantalono
Admin Boots=Administra Botoj
Admin Boots=Administraj Botoj

View File

@ -1,5 +1,5 @@
# textdomain: armor_admin
Admin Helmet=шлем админа
Admin Chestplate=бронежилет админа
Admin Leggings=гамаши админа
Admin Chestplate=нагрудник админа
Admin Leggings=штаны админа
Admin Boots=ботинки админа

View File

@ -1,5 +1,5 @@
# textdomain: armor_bronze
Bronze Helmet=Bronza Kasko
Bronze Chestplate=Bronza Brustkiraso
Bronze Chestplate=Bronza Kiraso
Bronze Leggings=Bronza Pantalono
Bronze Boots=Bronza Botoj
Bronze Boots=Bronzaj Botoj

View File

@ -1,5 +1,5 @@
# textdomain: armor_bronze
Bronze Helmet=бронзовый шлем
Bronze Chestplate=бронзовый бронежилет
Bronze Leggings=бронзовые гамаши
Bronze Chestplate=бронзовый нагрудник
Bronze Leggings=бронзовые штаны
Bronze Boots=бронзовые ботинки

View File

@ -1,5 +1,5 @@
# textdomain: armor_cactus
Cactus Helmet=Kakta Kasko
Cactus Chestplate=Kakta Brustkiraso
Cactus Chestplate=Kakta Kiraso
Cactus Leggings=Kakta Pantalono
Cactus Boots=Kakta Botoj
Cactus Boots=Kaktaj Botoj

View File

@ -1,5 +1,5 @@
# textdomain: armor_cactus
Cactus Helmet=кактусовый шлем
Cactus Chestplate=кактусовый бронежилет
Cactus Leggings=кактусовые гамаши
Cactus Chestplate=кактусовый нагрудник
Cactus Leggings=кактусовые штаны
Cactus Boots=кактусовые ботинки

View File

@ -1,5 +1,5 @@
# textdomain: armor_crystal
Crystal Helmet=Kristala Kasko
Crystal Chestplate=Kristala Brustkiraso
Crystal Chestplate=Kristala Kiraso
Crystal Leggings=Kristala Pantalono
Crystal Boots=Kristala Botoj
Crystal Boots=Kristalaj Botoj

View File

@ -1,5 +1,5 @@
# textdomain: armor_crystal
Crystal Helmet=кристалловый шлем
Crystal Chestplate=кристалловый бронежилет
Crystal Leggings=кристалловые гамаши
Crystal Chestplate=кристалловый нагрудник
Crystal Leggings=кристалловые штаны
Crystal Boots=кристалловые ботинки

View File

@ -1,5 +1,5 @@
# textdomain: armor_diamond
Diamond Helmet=Diamanta Kasko
Diamond Chestplate=Diamanta Brustkiraso
Diamond Chestplate=Diamanta Kiraso
Diamond Leggings=Diamanta Pantalono
Diamond Boots=Diamanta Botoj
Diamond Boots=Diamantaj Botoj

View File

@ -1,5 +1,5 @@
# textdomain: armor_diamond
Diamond Helmet=алмазный шлем
Diamond Chestplate=алмазный бронежилет
Diamond Leggings=алмазные гамаши
Diamond Chestplate=алмазный нагрудник
Diamond Leggings=алмазные штаны
Diamond Boots=алмазные ботинки

View File

@ -1,5 +1,5 @@
# textdomain: armor_gold
Gold Helmet=Ora Kasko
Gold Chestplate=Ora Brustkiraso
Gold Chestplate=Ora Kiraso
Gold Leggings=Ora Pantalono
Gold Boots=Ora Botoj
Gold Boots=Oraj Botoj

View File

@ -1,5 +1,5 @@
# textdomain: armor_gold
Gold Helmet=золотой шлем
Gold Chestplate=золотой бронежилет
Gold Leggings=золотые гамаши
Gold Chestplate=золотой нагрудник
Gold Leggings=золотые штаны
Gold Boots=золотые ботинки

View File

@ -28,7 +28,7 @@ if armor.materials.mithril then
armor:register_armor(":3d_armor:helmet_mithril", {
description = S("Mithril Helmet"),
inventory_image = "3d_armor_inv_helmet_mithril.png",
groups = {armor_head=1, armor_heal=13, armor_use=66},
groups = {armor_head=1, armor_heal=13, armor_use=66, physics_speed=0.1},
armor_groups = {fleshy=16},
damage_groups = {cracky=2, snappy=1, level=3},
})
@ -46,7 +46,7 @@ if armor.materials.mithril then
armor:register_armor(":3d_armor:chestplate_mithril", {
description = S("Mithril Chestplate"),
inventory_image = "3d_armor_inv_chestplate_mithril.png",
groups = {armor_torso=1, armor_heal=13, armor_use=66},
groups = {armor_torso=1, armor_heal=13, armor_use=66, physics_speed=0.4},
armor_groups = {fleshy=21},
damage_groups = {cracky=2, snappy=1, level=3},
})
@ -64,7 +64,7 @@ if armor.materials.mithril then
armor:register_armor(":3d_armor:leggings_mithril", {
description = S("Mithril Leggings"),
inventory_image = "3d_armor_inv_leggings_mithril.png",
groups = {armor_legs=1, armor_heal=13, armor_use=66},
groups = {armor_legs=1, armor_heal=13, armor_use=66, physics_speed=0.3},
armor_groups = {fleshy=21},
damage_groups = {cracky=2, snappy=1, level=3},
})
@ -82,7 +82,7 @@ if armor.materials.mithril then
armor:register_armor(":3d_armor:boots_mithril", {
description = S("Mithril Boots"),
inventory_image = "3d_armor_inv_boots_mithril.png",
groups = {armor_feet=1, armor_heal=13, armor_use=66},
groups = {armor_feet=1, armor_heal=13, armor_use=66, physics_speed=0.1},
armor_groups = {fleshy=16},
damage_groups = {cracky=2, snappy=1, level=3},
})

View File

@ -1,5 +1,5 @@
# textdomain: armor_mithril
Mithril Helmet=Mitrila Kasko
Mithril Chestplate=Mitrila Brustkiraso
Mithril Chestplate=Mitrila Kiraso
Mithril Leggings=Mitrila Pantalono
Mithril Boots=Mitrila Botoj
Mithril Boots=Mitrilaj Botoj

View File

@ -1,5 +1,5 @@
# textdomain: armor_mithril
Mithril Helmet=мифриловый шлем
Mithril Chestplate=мифриловый бронежилет
Mithril Leggings=мифриловые гамаши
Mithril Chestplate=мифриловый нагрудник
Mithril Leggings=мифриловые штаны
Mithril Boots=мифриловые ботинки

View File

@ -1,5 +1,5 @@
# textdomain: armor_nether
Nether Helmet=Inferna Kasko
Nether Chestplate=Inferna Brustkiraso
Nether Chestplate=Inferna Kiraso
Nether Leggings=Inferna Pantalono
Nether Boots=Inferna Botoj
Nether Boots=Infernaj Botoj

View File

@ -1,5 +1,5 @@
# textdomain: armor_nether
Nether Helmet=адский шлем
Nether Chestplate=адский бронежилет
Nether Leggings=адские гамаши
Nether Chestplate=адский нагрудник
Nether Leggings=адские штаны
Nether Boots=адские ботинки

View File

@ -1,4 +1,4 @@
name = armor_nether
depends = 3d_armor
optional_depends = nether
description = Adds craftable wood armor.
description = Adds craftable nether armor.

View File

@ -1,5 +1,5 @@
# textdomain: armor_steel
Steel Helmet=Ŝtala Kasko
Steel Chestplate=Ŝtala Brustkiraso
Steel Chestplate=Ŝtala Kiraso
Steel Leggings=Ŝtala Pantalono
Steel Boots=Ŝtala Botoj
Steel Boots=Ŝtalaj Botoj

View File

@ -1,5 +1,5 @@
# textdomain: armor_steel
Steel Helmet=стальной шлем
Steel Chestplate=стальной бронежилет
Steel Leggings=стальные гамаши
Steel Chestplate=стальной нагрудник
Steel Leggings=стальные штаны
Steel Boots=стальные ботинки

View File

@ -1,5 +1,5 @@
# textdomain: armor_wood
Wood Helmet=Ligna Kasko
Wood Chestplate=Ligna Brustkiraso
Wood Chestplate=Ligna Kiraso
Wood Leggings=Ligna Pantalono
Wood Boots=Ligna Botoj
Wood Boots=Lignaj Botoj

View File

@ -1,5 +1,5 @@
# textdomain: armor_wood
Wood Helmet=деревянный шлем
Wood Chestplate=деревянный бронежилет
Wood Leggings=деревянные гамаши
Wood Chestplate=деревянный нагрудник
Wood Leggings=деревянные штаны
Wood Boots=деревянные ботинки

View File

@ -0,0 +1,13 @@
# textdomain: shields
Admin Shield=Escudo de admin
Wooden Shield=Escudo de madera
Enhanced Wood Shield=Escudo de madera mejorado
Cactus Shield=Escudo de cactus
Enhanced Cactus Shield=Escudo de cactus mejorado
Steel Shield=Escudo de acero
Bronze Shield=Escudo de bronce
Diamond Shield=Escudo de diamante
Gold Shield=Escudo de oro
Mithril Shield=Escudo de mitrilo
Crystal Shield=Escudo de cristal
Nether Shield=Escudo de nether

13
shields/locale/shields.ru.tr Executable file
View File

@ -0,0 +1,13 @@
# textdomain: shields
Admin Shield=щит админа
Wooden Shield=деревянный щит
Enhanced Wood Shield=усиленный деревянный щит
Cactus Shield=кактусовый щит
Enhanced Cactus Shield=усиленный кактусовый щит
Steel Shield=стальной щит
Bronze Shield=бронзовый щит
Diamond Shield=алмазный щит
Gold Shield=золотой щит
Mithril Shield=мифриловый щит
Crystal Shield=кристальный щит
Nether Shield=адский щит

View File

@ -92,7 +92,7 @@ local get_image_from_tile = memoize(function(tile)
end
end
return "3d_armor_trans.png"
return "blank.png"
end)
local function get_image_cube(tiles)
@ -139,7 +139,7 @@ local function get_image_cube(tiles)
)
end
return "3d_armor_trans.png"
return "blank.png"
end
local function is_normal_node(drawtype)
@ -158,7 +158,7 @@ armor.get_wield_image = memoize(function(item)
item = ItemStack(item)
if item:is_empty() then
return "3d_armor_trans.png"
return "blank.png"
end
local def = item:get_definition()
@ -169,7 +169,7 @@ armor.get_wield_image = memoize(function(item)
local meta = item:get_meta()
local color = meta:get("color") or def.color
local image = "3d_armor_trans.png"
local image = "blank.png"
if def.wield_image and def.wield_image ~= "" then
local parts = {def.wield_image}
@ -193,7 +193,7 @@ armor.get_wield_image = memoize(function(item)
elseif def.type == "node" then
if def.drawtype == "nodebox" or def.drawtype == "mesh" then
image = "3d_armor_trans.png"
image = "blank.png"
else
local tiles = def.tiles

View File

@ -14,7 +14,7 @@ dofile(minetest.get_modpath(minetest.get_current_modname()).."/get_texture.lua")
dofile(minetest.get_modpath(minetest.get_current_modname()).."/transform.lua")
wieldview.get_item_texture = function(self, item)
local texture = "3d_armor_trans.png"
local texture = "blank.png"
if item ~= "" then
texture = armor.get_wield_image(item)