minetest-game-nssg/mods/3d_armor/3d_armor
general 7e2beca1bd update 3d_armor with last fixed backported
* update from https://codeberg.org/minenux/minetest-mod-3d_armor
* Fix armor radiation values were not not summed up
* Closes https://github.com/minetest-mods/3d_armor/issues/136
  radiation does not work when using technic armor
* resolve player object in async function again (different globalstep)
   due the core.after we need to recall player name
  closes https://github.com/minetest-mods/3d_armor/issues/132
* Make all admin armor to protect from drowning
  group of water is the same as if you get asfixiate,
  admin armor must be protected, this was missing cos the
  chessplate already has the armor_water=1 set..
  closes https://github.com/minetest-mods/3d_armor/issues/130
* Call custom on_punched functions w/ hitter = nil too
  this allows to propagates the nil on custom mods
  related to https://github.com/minetest-mods/3d_armor/pull/138#discussion_r1529014373
  backported https://github.com/minetest-mods/3d_armor/pull/141
* Don't assume hitter ~= nil in on_punchplayer callback
  closes https://github.com/minetest-mods/3d_armor/issues/137
  related to https://github.com/minetest/minetest/pull/14319#issuecomment-1989555604
2024-03-29 17:47:29 -04:00
..
locale upgrade 3d_armor modpack and 3d_armor respect new player model 1 vertical node 2023-07-31 01:53:44 -04:00
models upgrade 3d_armor modpack and 3d_armor respect new player model 1 vertical node 2023-07-31 01:53:44 -04:00
textures opticrush texture images to reduce size media 2023-06-11 06:24:23 -04:00
tools add armors.. from the minuenux compatible to all engines 2023-01-10 18:02:36 -04:00
LICENSE.txt update 3d_armor to 0.4.12.2 for 0.4 engines, with admin black armor 2023-01-14 13:59:17 -04:00
README.md update 3d_armor with last fixed backported 2024-03-29 17:47:29 -04:00
README.txt update 3d_armor with last fixed backported 2024-03-29 17:47:29 -04:00
api.lua update 3d_armor with last fixed backported 2024-03-29 17:47:29 -04:00
armor.conf.example add armors.. from the minuenux compatible to all engines 2023-01-10 18:02:36 -04:00
armor.lua update 3d_armor with last fixed backported 2024-03-29 17:47:29 -04:00
crafting_guide.txt add armors.. from the minuenux compatible to all engines 2023-01-10 18:02:36 -04:00
depends.txt upgrade 3d_armor modpack and 3d_armor respect new player model 1 vertical node 2023-07-31 01:53:44 -04:00
description.txt add armors.. from the minuenux compatible to all engines 2023-01-10 18:02:36 -04:00
init.lua default/player_api/3darmor/skinsdb - dinamically set the model player on client conection 2023-08-13 20:12:04 -04:00
intllib.lua add armors.. from the minuenux compatible to all engines 2023-01-10 18:02:36 -04:00
mod.conf upgrade 3d_armor modpack and 3d_armor respect new player model 1 vertical node 2023-07-31 01:53:44 -04:00
screenshot.png opticrush texture images to reduce size media 2023-06-11 06:24:23 -04:00

README.md

minetest mod 3d_armor

ARMOR for players

Information


Adds craftable armor that is visible to other players that allows players to equip making them less vulnerable to weapons, takes damage when a player is hurt but also offers a percentage chance of healing.

screenshot.png

Technical info


This mod is named 3d_armor and each armor item worn contributes to a player's armor group level Armor Overall level is boosted by 10% when wearing a full matching set.

Fire protection added by TenPlus1 when using crystal armor if Ethereal mod active, level 1 protects against torches, level 2 for crystal spike, level 3 for fire, level 5 for lava.

Depends:

  • default

Following are need to manage armors on the player:

  • sfinv
  • unified_inventory
  • smart_inventory

You must use only one.

Optional depends

  • player_monoids
  • armor_monoid
  • fire
  • ethereal
  • nether
  • moreores

Configuration


Override the following default settings by adding them to your minetest.conf file.

Setting type default descripton
armor_material_wood bool true Set false to disable wood armors
armor_material_cactus bool true Set false to disable cactus armor
armor_material_steel bool true Set false to disable steel armor
armor_material_bronze bool true Set false to disable bronze armor
armor_material_diamond bool true Set false to disable diamond armor
armor_material_gold bool true Set false to disable gold armor
armor_material_mithril bool true Set false to disable mitrhil armor
armor_material_crystal bool true Set false to disable crystal armors
armor_material_nether bool true Set false to disable nether armor
armor_init_delay int 1 Increase it if get glitches when a player first joins
armor_init_times int 1 Number of initialization attempts if previous still happnes
armor_bones_delay int 1 Increase it if armor is not getting into bones due to server lag.
armor_update_time int 1 How often player armor items are updated
armor_drop bool true If false will be into bones,otherwise Drop armor when a player dies
armor_destroy bool false Pulverise armor when a player dies, overrides armor_drop
armor_level_multiplier int 1 level to increaseeffects, 0.5 will reduce armor by half
armor_heal_multiplier int 1 increase or decrease overall armor healing, 0 disable it
armor_water_protect bool true water protection (periodically restores breath when activated)
armor_punch_damage bool true Enable punch damage effects.
armor_migrate_old_inventory bool true Enable migration of old armor inventories
armor_fire_protect bool false fire protection (defaults true if using ethereal mod)
armor_fire_protect_torch bool false allows you to disable fire damage from torches

API

player_api compatibility and default old mod

armor.registered_player_models

If player_api is present will be same as player_api.registered_models or default.registered_player_models otherwise

armor.player_register_model

If player_api is present will be same as player_api.register_model or default.player_register_model otherwise

armor.player_set_textures

If player_api is present will be same as player_api.set_texturesor default.player_set_textures otherwise

armor.player_attached

If player_api is present will be same as player_api.player_attached otherwise default.player_attached

armor.player_set_model

If player_api is present will be same as player_api.set_model otherwise then default.player_set_model

Armor Registration:

armor:register_armor(name, def)

Wrapper function for minetest.register_tool, while registering armor as a tool item is still supported, this may be deprecated in future so new code should use this method.

Additional fields supported by 3d_armor:

	texture = <filename>
	preview = <filename>
	armor_groups = <table>
	damage_groups = <table>
	reciprocate_damage = <bool>
	on_equip = <function>
	on_unequip = <function>
	on_destroy = <function>
	on_damage = <function>
	on_punched = <function>

armor:register_armor_group(group, base)

Example:

armor:register_armor_group("radiation", 100)

armor:register_armor("mod_name:speed_boots", {
	description = "Speed Boots",
	inventory_image = "mod_name_speed_boots_inv.png",
	texture = "mod_name_speed_boots.png",
	preview = "mod_name_speed_boots_preview.png",
	groups = {armor_feet=1, armor_use=500, physics_speed=1.2, flammable=1},
	armor_groups = {fleshy=10, radiation=10},
	damage_groups = {cracky=3, snappy=3, choppy=3, crumbly=3, level=1},
	reciprocate_damage = true,
	on_destroy = function(player, index, stack)
		local pos = player:getpos()
		if pos then
			minetest.sound_play({
				name = "mod_name_break_sound",
				pos = pos,
				gain = 0.5,
			})
		end
	end,
})

See armor.lua, technic_armor and shields mods for more examples.

Default groups:

Elements: armor_head, armor_torso, armor_legs, armor_feet Attributes: armor_heal, armor_fire, armor_water Physics: physics_jump, physics_speed, physics_gravity Durability: armor_use, flammable

Notes:

Elements may be modified by dependent mods, eg shields adds armor_shield. Attributes and physics values are 'stackable', durability is determined by the level of armor_use, total uses == approx (65535/armor_use), non-fleshy damage groups need to be defined in the tool/weapon used against the player.

Reciprocal tool damage will be done only by the first armor inventory item with reciprocate_damage = true

Armor Functions:

armor:set_player_armor(player)

Primarily an internal function but can be called externally to apply any changes that might not otherwise get handled.

armor:punch(player, hitter, time_from_last_punch, tool_capabilities)

Used to apply damage to all equipped armor based on the damage groups of each individual item.hitter, time_from_last_punch and tool_capabilities are optional but should be valid if included.

armor:damage(player, index, stack, use)

Adds wear to a single armor itemstack, triggers on_damage callbacks and updates the necessary inventories. Also handles item destruction callbacks and so should NOT be called from on_unequip to avoid an infinite loop.

armor:remove_all(player)

Removes all armors from the player's inventory without triggering any callback.

armor:equip(player, armor_name)

Equip the armor, removing the itemstack from the main inventory if there's one.

armor:unequip(player, armor_name)

Unequip the armor, adding the itemstack to the main inventory.

armor:update_skin(player_name)

Triggers a skin update with the same action as if a field with skins_set was submitted.

Item Callbacks:

on_equip = func(player, index, stack) on_unequip = func(player, index, stack) on_destroy = func(player, index, stack) on_damage = func(player, index, stack) on_punched = func(player, hitter, time_from_last_punch, tool_capabilities)

Notes:

on_punch is called every time a player is punched or takes damage, hitter, time_from_last_punch and tool_capabilities can be nil and will be in the case of fall damage, etc. When fire protection is enabled, hitter == "fire" in the event of fire damage. Return false to override armor damage effects. When armor is destroyed stack will contain a copy of the previous stack.

Global Callbacks:

armor:register_on_update(func(player)) armor:register_on_equip(func(player, index, stack)) armor:register_on_unequip(func(player, index, stack)) armor:register_on_destroy(func(player, index, stack))

Global Callback Example:

armor:register_on_update(function(player)
	print(player:get_player_name().." armor updated!")
end)

LICENSE

License Source Code: (C) 2023 PICCORO Lenz McKAY

License Source Code: (C) 2012-2017 Stuart Jones - LGPL v2.1

License Textures: Copyright (C) 2017 davidthecreator - CC-BY-SA 3.0

https://github.com/daviddoesminetest/3d-armors-new-textures

Changes the color of the admin armor from stupid rose 3d_armor mod to black.

License: Creative Commons Attribution-NonCommercial-ShareAlike

https://github.com/LoneWolfHT/MT-adminarmor.git