34 Commits

Author SHA1 Message Date
Bradley Pierce
8f775a64f0 Rework armor stand inventories (#165)
This change makes armor stands only have one inventory list instead of four, thereby allowing the user to shift-click items back and forth. There is no visual difference in the formspec, and each piece of armor still has its own dedicated slot. An LBM is used to update the inventories of previous armor stands.
2025-09-06 08:06:39 +02:00
SmallJoker
dbe0a9276a Prevent switching pages when using sfinv
Previously, 3d_armor would issue an inventory update
even if the 3d_armor page wasn't shown..
2025-06-24 21:14:27 +02:00
EmptyStar
dbc891a711 Fix crash when right-clicking to equip a seventh armor element with a full armor inventory (#163) 2025-06-07 00:46:28 +02:00
BlackImpostor
a79d1383aa Russian Capitalization (#162)
* Update 3d_armor.ru.tr

* Create 3d_armor_ip.ru.tr

* Create 3d_armor_sfinv.ru.tr

* Create 3d_armor_ui.ru.tr

* Update 'Fire'

* Capitalization in armor_admin.ru.tr

* Capitalization in armor_bronze.ru.tr

* Capitalization in armor_cactus.ru.tr

* Capitalization in armor_crystal.ru.tr

* Capitalization in armor_diamond.ru.tr

* Capitalization in armor_gold.ru.tr

* Capitalization in armor_mithril.ru.tr

* Capitalization in armor_nether.ru.tr

* Capitalization in armor_steel.ru.tr

* Capitalization in armor_wood.ru.tr

* Capitalization in shields.ru.tr
2025-05-28 17:59:13 +02:00
BlackImpostor
220cbc8d92 Update 3d_armor_stand.ru.tr (#161) 2025-05-27 07:03:33 +02:00
TarasArt
8fe014e6d3 Add Ukrainian localization (#160) 2025-05-07 20:00:30 +02: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
SmallJoker
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
Wiktor Perskawiec
c224a73df7 Add Polish translation (#151) 2024-12-14 18:22:09 +01:00
tenplus1
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
Maurus
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
Niklp
22955b413a Fix "player still online" check of armor.unequip (#146) 2024-05-01 07:24:49 +02:00
Niklp
1fcbf64d53 Replace 3d_armor_trans.png w/ engine provided blank.png (#143) 2024-04-04 07:25:05 +02:00
randomei
fb86c02e43 russian translation fixes (#142) 2024-03-25 20:01:28 +01:00
Niklp
20917da061 Fix armor radiation values were not not summed up (#139) 2024-03-22 22:35:43 +01:00
Niklp
7bd77a7b80 Call custom on_punched functions w/ hitter = nil too (#141) 2024-03-19 12:54:42 +01:00
Niklp
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
Luke aka SwissalpS
7fc313f911 armorstand nodes are not ground content (#134) 2024-02-29 07:39:44 +01:00
SmallJoker
4bac73fc9e Make all admin armor to protect from drowning (#131) 2024-01-17 10:33:37 +01:00
BuckarooBanzay
f430395b64 resolve player object in async function again (different globalstep)
fixes #132
2024-01-15 10:15:49 +01:00
David Leal
467709c935 Use player_api functions instead of default (#129) 2023-12-26 18:34:43 +01:00
Jaidyn Ann
e0b6112320 Tweak Esperanto translation (#128) 2023-12-19 07:13:04 +01:00
fluxionary
f3e66701aa add a protected shared armor stand (#127) 2023-11-28 07:08:29 +01:00
randomei
7a0c456638 Fix broken translations (#124)
* Fix broken translation
2023-11-22 07:29:44 +01:00
Olivier Dragon
9a687fbb51 Remove individual mod LICENSE.txt (#122)
and add full license texts for LGPL2.1 and CC-BY-SA 3.0
2023-10-29 19:13:53 +01:00
Niklp
1e2760a6cf Fix ldoc ci (#121) 2023-10-29 19:09:00 +01:00
Dirkfried
1da9d94e7c Enhance the admin boots (double speed) (#120) 2023-10-28 11:42:48 +02:00
Buckaroo Banzai
3660e50312 init-cleanup (#115)
Co-authored-by: BuckarooBanzay <BuckarooBanzay@users.noreply.github.com>
2023-10-26 10:39:55 +02:00
Niklp
c894ba4b0c Add initial_properties to armor stand entity (#116)
* Add `initial_properties` to armor stand entity

* Keep pos param

* fix

* fix crash
2023-10-22 19:21:52 +02:00
Dirkfried
aef125a0ca fix small typo (#111) 2023-08-20 19:36:32 +02:00
Wuzzy
7d251784e7 German translation update (#110) 2023-08-13 14:57:32 +02:00
Buckaroo Banzai
6eb492b09c add nil check in armor.damage (#109) 2023-08-04 16:35:02 +02:00
David Leal
dfa19cce98 Fix LDoc URL 2023-07-14 08:27:36 +02:00
Kyrah Abattoir
1d8509e75b Implements item groups soulbound and cursed (#105)
* Implements item groups soulbound and cursed:
Soulbound armors respawn with their owner.
Cursed armors cannot be unequipped by the player.
(disabled in creative mode)

* Prevents a cursed armor from getting unequipped by right clicking another piece of armor.
2023-05-31 14:59:20 +02:00
248 changed files with 1385 additions and 832 deletions

View File

@@ -11,15 +11,15 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
uses: actions/checkout@v3
- name: Setup Lua
uses: leafo/gh-actions-lua@v8
uses: leafo/gh-actions-lua@v10.0.0
with:
luaVersion: 5.4
- name: Setup Lua Rocks
uses: leafo/gh-actions-luarocks@v4
- name: Setup LDoc dependencies
run: luarocks install --only-deps https://raw.githubusercontent.com/lunarmodules/LDoc/master/ldoc-scm-3.rockspec
run: luarocks install --only-deps https://raw.githubusercontent.com/lunarmodules/ldoc/master/rockspecs/ldoc-1.5.0-1.rockspec
- name: Setup LDoc
run: git clone --single-branch --branch=custom https://github.com/AntumDeluge/ldoc.git .ldoc/ldoc && chmod +x .ldoc/ldoc/ldoc.lua
- name: Generate docs

1
.gitignore vendored
View File

@@ -4,6 +4,7 @@
*bak*
tags
*.vim
armor.conf
## Eclipse project files & directories
.project

View File

@@ -48,7 +48,7 @@ done
echo
# generate new doc files
"${cmd_ldoc}" --UNSAFE_NO_SANDBOX -c "${f_config}" -d "${d_export}" "${d_root}"; retval=$?
"${cmd_ldoc}" --unsafe_no_sandbox -c "${f_config}" -d "${d_export}" "${d_root}"; retval=$?
# check exit status
if test ${retval} -ne 0; then

View File

@@ -1,26 +0,0 @@
[mod] 3d Armor [3d_armor]
=========================
License Source Code
-------------------
Copyright (C) 2012-2019 stujones11, Stuart Jones <stujones111@gmail.com>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
License Textures
----------------
Copyright (C) 2017-2019 davidthecreator - CC-BY-SA 3.0

View File

@@ -6,7 +6,7 @@
|-[Armor Configuration](#armor-configuration) |||- - [3d_Armor Item Storage](#3d_armor-item-storage)
|- - [disable_specific_materials](#to-disable-individual-armor-materials) |||- - [Armor Registration](#armor-registration)
|- - [armor_init_delay](#initialization-glitches-when-a-player-first-joins) |||- - [Registering Armor Groups](#registering-armor-groups)
|- - [armor_init_times](#number-of-initialization-attempts) |||- - [Groups used by 3d_Armor](#groups-used-by-3d_armor)
|- - [wieldview_update_time](#how-often-player-wield-items-are-updated) |||- - [Groups used by 3d_Armor](#groups-used-by-3d_armor)
|- - [armor_bones_delay](#armor-not-in-bones-due-to-server-lag) |||- - - [Elements](#elements)
|- - [armor_update_time](#how-often-player-armor-items-are-updated) |||- - - [Attributes](#attributes)
|- - [armor_drop](#drop-armor-when-a-player-dies) |||- - - [Physics](#physics)
@@ -19,7 +19,7 @@
|- - [armor_fire_protect](#enable-fire-protection) |||- - - [armor:remove_all](#armor-remove_all)
|- - [armor_punch_damage](#enable-punch-damage-effects) |||- - - [armor:equip](#armor-equip)
|- - [armor_migrate_old_inventory](#migration-of-old-armor-inventories) |||- - - [armor:unequip](#armor-unequip)
|- - [wieldview_update_time](#how-often-player-wield-items-are-updated) |||- - - [armor:update_skin](#armor-update_skin)
| |||- - - [armor:update_skin](#armor-update_skin)
|-[Credits](#credits) |||- - [Callbacks](#Callbacks)
| |||- - - [Item callbacks](#item-callbacks)
| |||- - - [Global callbacks](#global-callbacks)
@@ -60,11 +60,6 @@ Change the following default settings by going to Main Menu>>Settings(Tab)>>All
armor_init_delay = 2
### Number of initialization attempts
**Increase to prevent glitches - Use in conjunction with armor_init_delay if initialization problems persist.**
armor_init_times = 10
### Armor not in bones due to server lag
**Increase to help resolve**

View File

@@ -162,7 +162,6 @@ armor = {
armor.config = {
init_delay = 2,
init_times = 10,
bones_delay = 1,
update_time = 1,
drop = minetest.get_modpath("bones") ~= nil,
@@ -353,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,
@@ -374,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 = {}
@@ -416,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()
@@ -631,6 +630,9 @@ end
armor.damage = function(self, player, index, stack, use)
local old_stack = ItemStack(stack)
local worn_armor = armor:get_weared_armor_elements(player)
if not worn_armor then
return
end
local armor_worn_cnt = 0
for k,v in pairs(worn_armor) do
armor_worn_cnt = armor_worn_cnt + 1
@@ -681,6 +683,10 @@ armor.equip = function(self, player, itemstack)
for i=1, armor_inv:get_size("armor") do
local stack = armor_inv:get_stack("armor", i)
if self:get_element(stack:get_name()) == armor_element then
--prevents equiping an armor that would unequip a cursed armor.
if minetest.get_item_group(stack:get_name(), "cursed") ~= 0 then
return itemstack
end
index = i
self:unequip(player, armor_element)
break
@@ -688,6 +694,9 @@ armor.equip = function(self, player, itemstack)
index = i
end
end
if not index then -- armor inventory is full with other armor elements
return itemstack
end
local stack = itemstack:take_item()
armor_inv:set_stack("armor", index, stack)
self:run_callbacks("on_equip", player, index, stack)
@@ -713,11 +722,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()
if inv:room_for_item("main", stack) then
inv:add_item("main", stack)
else
minetest.add_item(player:get_pos(), stack)
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(pplayer:get_pos(), stack)
end
end
end)
self:run_callbacks("on_unequip", player, i, stack)
@@ -802,9 +814,6 @@ end
-- @tparam[opt] bool listring Use `listring` formspec element (default: `false`).
-- @treturn string Formspec formatted string.
armor.get_armor_formspec = function(self, name, listring)
if armor.def[name].init_time == 0 then
return "label[0,0;Armor not initialized!]"
end
local formspec = armor.formspec..
"list[detached:"..name.."_armor;armor;0,0.5;2,3;]"
if listring == true then

View File

@@ -1,37 +0,0 @@
-- Armor Configuration (defaults)
-- Increase this if you get initialization glitches when a player first joins.
ARMOR_INIT_DELAY = 3
-- Number of initialization attempts.
-- Use in conjunction with ARMOR_INIT_DELAY if initialization problems persist.
ARMOR_INIT_TIMES = 3
-- Increase this if armor is not getting into bones due to server lag.
ARMOR_BONES_DELAY = 3
-- How often player armor/wield items are updated.
ARMOR_UPDATE_TIME = 1
-- Drop armor when a player dies.
-- Uses bones mod if present, otherwise items are dropped around the player.
ARMOR_DROP = true
-- Pulverise armor when a player dies, overrides ARMOR_DROP.
ARMOR_DESTROY = false
-- You can use this to increase or decrease overall armor effectiveness,
-- eg: ARMOR_LEVEL_MULTIPLIER = 0.5 will reduce armor level by half.
ARMOR_LEVEL_MULTIPLIER = 1
-- You can use this to increase or decrease overall armor healing,
-- eg: ARMOR_HEAL_MULTIPLIER = 0 will disable healing altogether.
ARMOR_HEAL_MULTIPLIER = 1
-- You can also use this file to execute arbitary lua code
-- eg: Dumb the armor down if using Simple Mobs
--if minetest.get_modpath("mobs") then
-- ARMOR_LEVEL_MULTIPLIER = 1
-- ARMOR_HEAL_MULTIPLIER = 0
--end

View File

@@ -35,10 +35,6 @@ ARMOR_FIRE_NODES = {
-- Increase this if you get initialization glitches when a player first joins.
ARMOR_INIT_DELAY = 1
-- Number of initialization attempts.
-- Use in conjunction with ARMOR_INIT_DELAY if initialization problems persist.
ARMOR_INIT_TIMES = 1
-- Increase this if armor is not getting into bones due to server lag.
ARMOR_BONES_DELAY = 1

View File

@@ -2,7 +2,6 @@ local modname = minetest.get_current_modname()
local modpath = minetest.get_modpath(modname)
local worldpath = minetest.get_worldpath()
local last_punch_time = {}
local pending_players = {}
local timer = 0
dofile(modpath.."/api.lua")
@@ -181,11 +180,7 @@ local function validate_armor_inventory(player)
end
local function init_player_armor(initplayer)
local name = initplayer:get_player_name()
local pos = initplayer:get_pos()
if not name or not pos then
return false
end
local name = assert(initplayer:get_player_name())
local armor_inv = minetest.create_detached_inventory(name.."_armor", {
on_put = function(inv, listname, index, stack, player)
validate_armor_inventory(player)
@@ -224,6 +219,11 @@ local function init_player_armor(initplayer)
if player:get_player_name() ~= name then
return 0
end
--cursed items cannot be unequiped by the player
local is_cursed = minetest.get_item_group(stack:get_name(), "cursed") ~= 0
if not minetest.is_creative_enabled(player) and is_cursed then
return 0
end
return stack:get_count()
end,
allow_move = function(inv, from_list, from_index, to_list, to_index, count, player)
@@ -251,7 +251,6 @@ local function init_player_armor(initplayer)
end
end
armor.def[name] = {
init_time = minetest.get_gametime(),
level = 0,
state = 0,
count = 0,
@@ -269,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")
@@ -284,7 +283,6 @@ local function init_player_armor(initplayer)
end
end
armor:set_player_armor(initplayer)
return true
end
-- Armor Player Model
@@ -293,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)
@@ -324,16 +327,8 @@ 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")
local player_name = player:get_player_name()
minetest.after(0, function()
-- TODO: Added in 7566ecc - What's the prupose?
local pplayer = minetest.get_player_by_name(player_name)
if pplayer and init_player_armor(pplayer) == false then
pending_players[pplayer] = 0
end
end)
player_api.set_model(player, "3d_armor_character.b3d")
init_player_armor(player)
end)
minetest.register_on_leaveplayer(function(player)
@@ -342,7 +337,6 @@ minetest.register_on_leaveplayer(function(player)
armor.def[name] = nil
armor.textures[name] = nil
end
pending_players[player] = nil
end)
if armor.config.drop == true or armor.config.destroy == true then
@@ -355,9 +349,12 @@ if armor.config.drop == true or armor.config.destroy == true then
for i=1, armor_inv:get_size("armor") do
local stack = armor_inv:get_stack("armor", i)
if stack:get_count() > 0 then
table.insert(drop, stack)
armor:run_callbacks("on_unequip", player, i, stack)
armor_inv:set_stack("armor", i, nil)
--soulbound armors remain equipped after death
if minetest.get_item_group(stack:get_name(), "soulbound") == 0 then
table.insert(drop, stack)
armor:run_callbacks("on_unequip", player, i, stack)
armor_inv:set_stack("armor", i, nil)
end
end
end
armor:save_armor_inventory(player)
@@ -393,8 +390,8 @@ if armor.config.drop == true or armor.config.destroy == true then
end)
end
end)
else -- reset un-dropped armor and it's effects
minetest.register_on_respawnplayer(function(player)
-- reset un-dropped armor and it's effects
armor:set_player_armor(player)
end)
end
@@ -403,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()
local hit_ip = hitter:is_player()
if name and hit_ip and minetest.is_protected(player:get_pos(), "") then
return
elseif name then
if hitter then
local hit_ip = hitter:is_player()
if name and hit_ip and minetest.is_protected(player:get_pos(), "") then
return
end
end
if name then
armor:punch(player, hitter, time_from_last_punch, tool_capabilities)
last_punch_time[name] = minetest.get_gametime()
end
@@ -448,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
@@ -461,18 +462,6 @@ minetest.register_globalstep(function(dtime)
end
timer = 0
for player, count in pairs(pending_players) do
local remove = init_player_armor(player) == true
pending_players[player] = count + 1
if remove == false and count > armor.config.init_times then
minetest.log("warning", "3d_armor: Failed to initialize player")
remove = true
end
if remove == true then
pending_players[player] = nil
end
end
-- water breathing protection, added by TenPlus1
if armor.config.water_protect == true then
for _,player in pairs(minetest.get_connected_players()) do
@@ -511,5 +500,3 @@ if armor.config.fire_protect == true then
return hp_change
end, true)
end
minetest.log("action", "[3d_armor] loaded.")

View File

@@ -1,7 +1,7 @@
# textdomain: 3d_armor
Radiation=Strahlen
Radiation=Strahlung
Level=Stufe
Heal=Heilen
Heal=Heilung
Fire=Feuer
Your @1 is almost broken!=Deine @1 ist fast kaputt!
Your @1 got destroyed!=Deine @1 wurde zerstört!
Your @1 is almost broken!=@1 ist fast kaputt!
Your @1 got destroyed!=@1 wurde zerstört!

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!

View File

@@ -1,7 +1,7 @@
# textdomain: 3d_armor
Radiation=излучение
Level=уровень
Heal=исцеление
Fire=огонь
Your @1 is almost broken!=
Your @1 got destroyed!=твой(и) @1 был(и) разрушен(ы)!
Radiation=Излучение
Level=Уровень
Heal=Исцеление
Fire=Пламя
Your @1 is almost broken!=Ваш предмет «@1» почти сломан!
Your @1 got destroyed!=Ваш предмет «@1» был уничтожен!

View File

@@ -0,0 +1,7 @@
# textdomain: 3d_armor
Radiation=Радіація
Level=Рівень
Heal=Зцілення
Fire=Вогонь
Your @1 is almost broken!=Ваш @1 майже зламаний!
Your @1 got destroyed!=Ваш(і) @1 був(ли) зламаний(і)!

View File

@@ -2,3 +2,4 @@ name = 3d_armor
depends = default, player_api
optional_depends = player_monoids, armor_monoid, pova, moreores
description = Adds craftable armor that is visible to other players.
min_minetest_version = 5.0

Binary file not shown.

Before

Width:  |  Height:  |  Size: 273 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 339 B

After

Width:  |  Height:  |  Size: 349 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 544 B

After

Width:  |  Height:  |  Size: 571 B

View File

@@ -1,18 +0,0 @@
[mod] 3d Armor integration to inventory plus [3d_armor_ip]
==========================================================
Copyright (C) 2012-2019 stujones11, Stuart Jones <stujones111@gmail.com>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.

View File

@@ -0,0 +1,3 @@
# textdomain: 3d_armor_ip
Back=Zurück
Armor=Rüstung

View File

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

View File

@@ -0,0 +1,3 @@
# textdomain: 3d_armor_ip
Back=Назад
Armor=Броня

View File

@@ -0,0 +1,3 @@
# textdomain: 3d_armor_ip
Back=Назад
Armor=Броня

View File

@@ -1,18 +0,0 @@
[mod] 3d Armor sfinv integration [3d_armor_sfinv]
=================================================
Copyright (C) 2012-2019 stujones11, Stuart Jones <stujones111@gmail.com>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.

View File

@@ -15,7 +15,7 @@ sfinv.register_page("3d_armor:armor", {
end
})
armor:register_on_update(function(player)
if sfinv.enabled then
if sfinv.enabled and sfinv.get_page(player) == "3d_armor:armor" then
sfinv.set_player_inventory_formspec(player)
end
end)

View File

@@ -0,0 +1,2 @@
# textdomain: 3d_armor_sfinv
Armor=Rüstung

View File

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

View File

@@ -0,0 +1,2 @@
# textdomain: 3d_armor_sfinv
Armor=Броня

View File

@@ -0,0 +1,2 @@
# textdomain: 3d_armor_sfinv
Armor=Броня

View File

@@ -1,43 +0,0 @@
[mod] 3d Armor Stand [3d_armor_stand]
=====================================
License Source Code
-------------------
Copyright (C) 2012-2019 stujones11, Stuart Jones <stujones111@gmail.com>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
Lecense Models
--------------
Copyright (C) 2016-2019 Stuart Jones - CC BY-SA 3.0
UV model mapping by tobyplowy(aka toby109tt)
License Textures
----------------
3d_armor_stand.png
3d_armor_stand_locked.png
Copyright (C) 2017-2019 tobyplowy - CC BY-SA 3.0
3d_armor_stand_feet.png
3d_armor_stand_head.png
3d_armor_stand_legs.png
3d_armor_stand_torso.png
Copyright (C) 2016-2019 Stuart Jones - CC BY-SA 3.0

View File

@@ -6,27 +6,27 @@ local armor_stand_formspec = "size[8,7]" ..
default.gui_bg_img ..
default.gui_slots ..
default.get_hotbar_bg(0,3) ..
"list[current_name;armor_head;3,0.5;1,1;]" ..
"list[current_name;armor_torso;4,0.5;1,1;]" ..
"list[current_name;armor_legs;3,1.5;1,1;]" ..
"list[current_name;armor_feet;4,1.5;1,1;]" ..
"list[current_name;main;3,0.5;2,1;]" ..
"list[current_name;main;3,1.5;2,1;2]" ..
"image[3,0.5;1,1;3d_armor_stand_head.png]" ..
"image[4,0.5;1,1;3d_armor_stand_torso.png]" ..
"image[3,1.5;1,1;3d_armor_stand_legs.png]" ..
"image[4,1.5;1,1;3d_armor_stand_feet.png]" ..
"list[current_player;main;0,3;8,1;]" ..
"list[current_player;main;0,4.25;8,3;8]"
"list[current_player;main;0,4.25;8,3;8]" ..
"listring[current_name;main]" ..
"listring[current_player;main]"
local elements = {"head", "torso", "legs", "feet"}
local function drop_armor(pos)
local meta = minetest.get_meta(pos)
local inv = meta:get_inventory()
for _, element in pairs(elements) do
local stack = inv:get_stack("armor_"..element, 1)
for i = 1, 4 do
local stack = inv:get_stack("main", i)
if stack and stack:get_count() > 0 then
armor.drop_armor(pos, stack)
inv:set_stack("armor_"..element, 1, nil)
inv:set_stack("main", i, nil)
end
end
end
@@ -62,14 +62,14 @@ 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()
local yaw = 0
if inv then
for _, element in pairs(elements) do
local stack = inv:get_stack("armor_"..element, 1)
for i, element in ipairs(elements) do
local stack = inv:get_stack("main", i)
if stack:get_count() == 1 then
local item = stack:get_name() or ""
local def = stack:get_definition() or {}
@@ -144,182 +144,168 @@ 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", {
description = S("Armor Stand"),
drawtype = "mesh",
mesh = "3d_armor_stand.obj",
tiles = {"3d_armor_stand.png"},
use_texture_alpha = "clip",
paramtype = "light",
paramtype2 = "facedir",
walkable = false,
selection_box = {
type = "fixed",
fixed = {
{-0.25, -0.4375, -0.25, 0.25, 1.4, 0.25},
{-0.5, -0.5, -0.5, 0.5, -0.4375, 0.5},
},
},
groups = {choppy=2, oddly_breakable_by_hand=2},
sounds = default.node_sound_wood_defaults(),
on_construct = function(pos)
local meta = minetest.get_meta(pos)
meta:set_string("formspec", armor_stand_formspec)
meta:set_string("infotext", S("Armor Stand"))
local inv = meta:get_inventory()
for _, element in pairs(elements) do
inv:set_size("armor_"..element, 1)
local function register_armor_stand(def)
local function owns_armor_stand(pos, meta, player)
if def.name == "locked_armor_stand" and not has_locked_armor_stand_privilege(meta, player) then
return false
end
end,
can_dig = function(pos, player)
local meta = minetest.get_meta(pos)
local inv = meta:get_inventory()
for _, element in pairs(elements) do
if not inv:is_empty("armor_"..element) then
return false
end
local has_access = minetest.is_player(player) and not minetest.is_protected(pos, player:get_player_name())
if def.name == "shared_armor_stand" and not has_access then
return false
end
return true
end,
after_place_node = function(pos, placer)
minetest.add_entity(pos, "3d_armor_stand:armor_entity")
add_hidden_node(pos, placer)
end,
allow_metadata_inventory_put = function(pos, listname, index, stack)
local def = stack:get_definition() or {}
local groups = def.groups or {}
if groups[listname] then
end
minetest.register_node("3d_armor_stand:" .. def.name, {
description = def.description,
drawtype = "mesh",
mesh = "3d_armor_stand.obj",
tiles = {def.texture},
use_texture_alpha = "clip",
paramtype = "light",
paramtype2 = "facedir",
walkable = false,
selection_box = {
type = "fixed",
fixed = {
{-0.25, -0.4375, -0.25, 0.25, 1.4, 0.25},
{-0.5, -0.5, -0.5, 0.5, -0.4375, 0.5},
},
},
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)
meta:set_string("formspec", armor_stand_formspec)
meta:set_string("infotext", def.description)
if def.name == "locked_armor_stand" then
meta:set_string("owner", "")
end
local inv = meta:get_inventory()
inv:set_size("main", 4)
end,
can_dig = function(pos, player)
local meta = minetest.get_meta(pos)
local inv = meta:get_inventory()
if not inv:is_empty("main") then
return false
end
return true
end,
after_place_node = function(pos, placer)
local meta = minetest.get_meta(pos)
minetest.add_entity(pos, "3d_armor_stand:armor_entity")
if def.name == "locked_armor_stand" then
meta:set_string("owner", placer:get_player_name() or "")
meta:set_string("infotext", S("Armor Stand (owned by @1)", meta:get_string("owner")))
elseif def.name == "shared_armor_stand" then
meta:set_string("infotext", def.description)
end
add_hidden_node(pos, placer)
end,
allow_metadata_inventory_put = function(pos, listname, index, stack, player)
local meta = minetest.get_meta(pos)
if not owns_armor_stand(pos, meta, player) then
return 0
end
local inv = meta:get_inventory()
local stack_def = stack:get_definition() or {}
local groups = stack_def.groups or {}
for i, element in ipairs(elements) do
if groups["armor_"..element] and inv:get_stack(listname, i):is_empty() then
return 1
end
end
return 0
end,
allow_metadata_inventory_take = function(pos, listname, index, stack, player)
local meta = minetest.get_meta(pos)
if not owns_armor_stand(pos, meta, player) then
return 0
end
return 1
end
return 0
end,
allow_metadata_inventory_move = function(pos)
return 0
end,
on_metadata_inventory_put = function(pos)
update_entity(pos)
end,
on_metadata_inventory_take = function(pos)
update_entity(pos)
end,
after_destruct = function(pos)
update_entity(pos)
remove_hidden_node(pos)
end,
end,
allow_metadata_inventory_move = function(pos)
return 0
end,
on_metadata_inventory_put = function(pos, listname, index, stack)
local meta = minetest.get_meta(pos)
local inv = meta:get_inventory()
local stack_def = stack:get_definition() or {}
local groups = stack_def.groups or {}
for i, element in ipairs(elements) do
if groups["armor_"..element] then
inv:set_stack(listname, i, stack)
if index ~= i then
inv:set_stack(listname, index, nil)
end
break
end
end
update_entity(pos)
end,
on_metadata_inventory_take = function(pos)
update_entity(pos)
end,
after_destruct = function(pos)
update_entity(pos)
remove_hidden_node(pos)
end,
on_blast = def.on_blast
})
end
register_armor_stand({
name = "armor_stand",
description = S("Armor Stand"),
texture = "3d_armor_stand.png",
on_blast = function(pos)
drop_armor(pos)
armor.drop_armor(pos, "3d_armor_stand:armor_stand")
minetest.remove_node(pos)
end,
end
})
minetest.register_node("3d_armor_stand:locked_armor_stand", {
register_armor_stand({
name = "locked_armor_stand",
description = S("Locked Armor Stand"),
drawtype = "mesh",
mesh = "3d_armor_stand.obj",
tiles = {"3d_armor_stand_locked.png"},
use_texture_alpha = "clip",
paramtype = "light",
paramtype2 = "facedir",
walkable = false,
selection_box = {
type = "fixed",
fixed = {
{-0.25, -0.4375, -0.25, 0.25, 1.4, 0.25},
{-0.5, -0.5, -0.5, 0.5, -0.4375, 0.5},
},
},
groups = {choppy=2, oddly_breakable_by_hand=2},
sounds = default.node_sound_wood_defaults(),
on_construct = function(pos)
local meta = minetest.get_meta(pos)
meta:set_string("formspec", armor_stand_formspec)
meta:set_string("infotext", S("Armor Stand"))
meta:set_string("owner", "")
local inv = meta:get_inventory()
for _, element in pairs(elements) do
inv:set_size("armor_"..element, 1)
end
end,
can_dig = function(pos, player)
local meta = minetest.get_meta(pos)
local inv = meta:get_inventory()
for _, element in pairs(elements) do
if not inv:is_empty("armor_"..element) then
return false
end
end
return true
end,
after_place_node = function(pos, placer)
minetest.add_entity(pos, "3d_armor_stand:armor_entity")
local meta = minetest.get_meta(pos)
meta:set_string("owner", placer:get_player_name() or "")
meta:set_string("infotext", S("Armor Stand (owned by @1)", meta:get_string("owner")))
add_hidden_node(pos, placer)
end,
allow_metadata_inventory_put = function(pos, listname, index, stack, player)
local meta = minetest.get_meta(pos)
if not has_locked_armor_stand_privilege(meta, player) then
return 0
end
local def = stack:get_definition() or {}
local groups = def.groups or {}
if groups[listname] then
return 1
end
return 0
end,
allow_metadata_inventory_take = function(pos, listname, index, stack, player)
local meta = minetest.get_meta(pos)
if not has_locked_armor_stand_privilege(meta, player) then
return 0
end
return stack:get_count()
end,
allow_metadata_inventory_move = function(pos)
return 0
end,
on_metadata_inventory_put = function(pos)
update_entity(pos)
end,
on_metadata_inventory_take = function(pos)
update_entity(pos)
end,
after_destruct = function(pos)
update_entity(pos)
remove_hidden_node(pos)
end,
on_blast = function(pos)
-- Not affected by TNT
end,
texture = "3d_armor_stand_locked.png"
})
register_armor_stand({
name = "shared_armor_stand",
description = S("Shared Armor Stand"),
texture = "3d_armor_stand_shared.png"
})
minetest.register_entity("3d_armor_stand:armor_entity", {
physical = true,
visual = "mesh",
mesh = "3d_armor_entity.obj",
visual_size = {x=1, y=1},
collisionbox = {0,0,0,0,0,0},
textures = {"3d_armor_trans.png"},
pos = nil,
timer = 0,
initial_properties = {
physical = true,
visual = "mesh",
mesh = "3d_armor_entity.obj",
visual_size = {x=1, y=1},
collisionbox = {0,0,0,0,0,0},
textures = {"blank.png"},
},
_pos = nil,
on_activate = function(self)
local pos = self.object:get_pos()
if pos then
self.pos = vector.round(pos)
self._pos = vector.round(pos)
update_entity(pos)
end
end,
on_blast = function(self, damage)
local drops = {}
local node = minetest.get_node(self.pos)
local node = minetest.get_node(self._pos)
if node.name == "3d_armor_stand:armor_stand" then
drop_armor(self.pos)
drop_armor(self._pos)
self.object:remove()
end
return false, false, drops
@@ -327,7 +313,7 @@ minetest.register_entity("3d_armor_stand:armor_entity", {
})
minetest.register_abm({
nodenames = {"3d_armor_stand:locked_armor_stand", "3d_armor_stand:armor_stand"},
nodenames = {"3d_armor_stand:locked_armor_stand", "3d_armor_stand:shared_armor_stand", "3d_armor_stand:armor_stand"},
interval = 15,
chance = 1,
action = function(pos, node, active_object_count, active_object_count_wider)
@@ -338,6 +324,32 @@ minetest.register_abm({
end
})
minetest.register_lbm({
label = "Update armor stand inventories",
name = "3d_armor_stand:update_inventories",
nodenames = {"3d_armor_stand:locked_armor_stand", "3d_armor_stand:shared_armor_stand", "3d_armor_stand:armor_stand"},
run_at_every_load = false,
action = function(pos, node)
local meta = minetest.get_meta(pos)
local inv = meta:get_inventory()
local lists = inv:get_lists()
for _, element in pairs(elements) do
if not lists["armor_"..element] then
-- Abort to avoid item loss in case env_meta.txt is corrupted/deleted
return
end
end
inv:set_lists({main = {
lists.armor_head[1],
lists.armor_torso[1],
lists.armor_legs[1],
lists.armor_feet[1]
}})
meta:set_string("formspec", armor_stand_formspec)
update_entity(pos)
end
})
minetest.register_craft({
output = "3d_armor_stand:armor_stand",
recipe = {
@@ -354,4 +366,9 @@ minetest.register_craft({
}
})
minetest.log("action", "[3d_armor_stand] loaded.")
minetest.register_craft({
output = "3d_armor_stand:shared_armor_stand",
recipe = {
{"3d_armor_stand:armor_stand", "default:copper_ingot"},
}
})

View File

@@ -0,0 +1,5 @@
# textdomain: 3d_armor_stand
Armor Stand Top=Rüstungsständeroberseite
Armor Stand=Rüstungsständer
Locked Armor Stand=Abgeschlossener Rüstungsständer
Armor Stand (owned by @1)=Rüstungsständer (Eigentum von @1)

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,6 @@
# textdomain: 3d_armor_stand
Armor Stand Top=Верх Стойки для Брони
Armor Stand=Стойка для Брони
Locked Armor Stand=Заблокированная Стойка для Брони
Shared Armor Stand=Публичная Стойка для Брони
Armor Stand (owned by @1)=Стойка для Брони (владалец: @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)=

Binary file not shown.

After

Width:  |  Height:  |  Size: 1011 B

View File

@@ -1,18 +0,0 @@
[mod] 3d Armor integration to unified inventory [3d_armor_ui]
=============================================================
Copyright (C) 2012-2019 stujones11, Stuart Jones <stujones111@gmail.com>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.

View File

@@ -33,9 +33,6 @@ unified_inventory.register_page("armor", {
local gridy = 0.6
local name = player:get_player_name()
if armor.def[name].init_time == 0 then
return {formspec="label[0,0;"..F(S("Armor not initialized!")).."]"}
end
local formspec = perplayer_formspec.standard_inv_bg..
perplayer_formspec.standard_inv..
ui.make_inv_img_grid(gridx, gridy, 2, 3)..
@@ -46,9 +43,6 @@ unified_inventory.register_page("armor", {
"image[3.5,"..(fy - 0.25)..";2,4;"..armor.textures[name].preview.."]"..
"label[6.0,"..(fy + 0.0)..";"..F(S("Level"))..": "..armor.def[name].level.."]"..
"label[6.0,"..(fy + 0.5)..";"..F(S("Heal"))..": "..armor.def[name].heal.."]"..
"label[6.0,"..(fy + 2.0)..";"..F(S("Speed"))..": "..armor.def[name].speed.."]"..
"label[6.0,"..(fy + 2.5)..";"..F(S("Jump"))..": "..armor.def[name].jump.."]"..
"label[6.0,"..(fy + 3.0)..";"..F(S("Gravity"))..": "..armor.def[name].gravity.."]"..
"listring[current_player;main]"..
"listring[detached:"..name.."_armor;armor]"
if armor.config.fire_protect then
@@ -62,5 +56,3 @@ unified_inventory.register_page("armor", {
return {formspec=formspec}
end,
})
minetest.log("action", "[3d_armor_ui] loaded.")

View File

@@ -0,0 +1,8 @@
# textdomain: 3d_armor_ui
3D Armor=3D-Rüstung
Armor not initialized!=Rüstung ist nicht initialisiert!
Armor=Rüstung
Level=Stufe
Heal=Heilung
Fire=Feuer
Radiation=Strahlung

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

@@ -0,0 +1,8 @@
# textdomain: 3d_armor_ui
3D Armor=3D Броня
Armor not initialized!=Броня не инициализирована!
Armor=Броня
Level=Уровень
Heal=Исцеление
Fire=Пламя
Radiation=Излучение

View File

@@ -0,0 +1,8 @@
# textdomain: 3d_armor_ui
3D Armor=3D Броня
Armor not initialized!=Броня не ініціалізована!
Armor=Броня
Level=Рівень
Heal=Зцілення
Fire=Вогонь
Radiation=Радіація

View File

@@ -1,26 +0,0 @@
[mod] 3d Armor [3d_armor]
=========================
License Source Code
-------------------
Copyright (C) 2012-2019 stujones11, Stuart Jones <stujones111@gmail.com>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
License Textures
----------------
Copyright (C) 2017-2019 davidthecreator - CC-BY-SA 3.0

View File

@@ -5,7 +5,7 @@
-- support for i18n
local S = armor.get_translator
local S = minetest.get_translator(minetest.get_current_modname())
--- Admin Helmet
--
@@ -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
@@ -81,8 +81,8 @@ armor:register_armor(":3d_armor:boots_admin", {
description = S("Admin Boots"),
inventory_image = "3d_armor_inv_boots_admin.png",
armor_groups = {fleshy=100},
groups = {armor_feet=1, armor_heal=100, armor_use=0,
not_in_creative_inventory=1},
groups = {armor_feet=1, armor_heal=100, armor_use=0, physics_speed=1,
armor_water=1, not_in_creative_inventory=1},
on_drop = function(itemstack, dropper, pos)
return
end,
@@ -91,4 +91,4 @@ armor:register_armor(":3d_armor:boots_admin", {
minetest.register_alias("adminboots", "3d_armor:boots_admin")
minetest.register_alias("adminhelmet", "3d_armor:helmet_admin")
minetest.register_alias("adminchestplate", "3d_armor:chestplate_admin")
minetest.register_alias("adminleggings", "3d_armor:leggings_admin")
minetest.register_alias("adminleggings", "3d_armor:leggings_admin")

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 Boots=ботинки админа
Admin Helmet=Шлем Админа
Admin Chestplate=Нагрудник Админа
Admin Leggings=Поножи Админа
Admin Boots=Ботинки Админа

View File

@@ -0,0 +1,5 @@
# textdomain: armor_admin
Admin Helmet=Шолом адміна
Admin Chestplate=Броня адміна
Admin Leggings=Штани адміна
Admin Boots=Взуття адміна

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 258 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 548 B

After

Width:  |  Height:  |  Size: 261 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 409 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 285 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

After

Width:  |  Height:  |  Size: 348 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 869 B

After

Width:  |  Height:  |  Size: 261 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 216 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 256 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 188 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 214 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 288 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 298 B

View File

@@ -1,26 +0,0 @@
[mod] 3d Armor [3d_armor]
=========================
License Source Code
-------------------
Copyright (C) 2012-2019 stujones11, Stuart Jones <stujones111@gmail.com>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
License Textures
----------------
Copyright (C) 2017-2019 davidthecreator - CC-BY-SA 3.0

View File

@@ -5,8 +5,7 @@
-- support for i18n
local S = armor.get_translator
local S = minetest.get_translator(minetest.get_current_modname())
--- Bronze
--
-- Requires setting `armor_material_bronze`.
@@ -178,4 +177,4 @@ if armor.materials.bronze then
{m, "", m},
},
})
end
end

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 Boots=бронзовые ботинки
Bronze Helmet=Бронзовый Шлем
Bronze Chestplate=Бронзовый Нагрудник
Bronze Leggings=Бронзовые Поножи
Bronze Boots=Бронзовые Ботинки

View File

@@ -0,0 +1,5 @@
# textdomain: armor_bronze
Bronze Helmet=Бронзовий шолом
Bronze Chestplate=Бронзова броня
Bronze Leggings=Бронзові штани
Bronze Boots=Бронзове взуття

Binary file not shown.

Before

Width:  |  Height:  |  Size: 937 B

After

Width:  |  Height:  |  Size: 253 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 602 B

After

Width:  |  Height:  |  Size: 241 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.9 KiB

After

Width:  |  Height:  |  Size: 396 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 282 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 337 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 796 B

After

Width:  |  Height:  |  Size: 271 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 207 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 261 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 180 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 245 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 278 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 273 B

View File

@@ -1,26 +0,0 @@
[mod] 3d Armor [3d_armor]
=========================
License Source Code
-------------------
Copyright (C) 2012-2019 stujones11, Stuart Jones <stujones111@gmail.com>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
License Textures
----------------
Copyright (C) 2017-2019 davidthecreator - CC-BY-SA 3.0

View File

@@ -5,7 +5,7 @@
-- support for i18n
local S = armor.get_translator
local S = minetest.get_translator(minetest.get_current_modname())
--- Cactus
--
@@ -180,4 +180,4 @@ if armor.materials.cactus then
{m, "", m},
},
})
end
end

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 Boots=кактусовые ботинки
Cactus Helmet=Кактусовый Шлем
Cactus Chestplate=Кактусовый Нагрудник
Cactus Leggings=Кактусовые Поножи
Cactus Boots=Кактусовые Ботинки

View File

@@ -0,0 +1,5 @@
# textdomain: armor_cactus
Cactus Helmet=Кактусовий шолом
Cactus Chestplate=Кактусова броня
Cactus Leggings=Кактусові штани
Cactus Boots=Кактусове взуття

Binary file not shown.

Before

Width:  |  Height:  |  Size: 903 B

After

Width:  |  Height:  |  Size: 252 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 821 B

After

Width:  |  Height:  |  Size: 239 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.3 KiB

After

Width:  |  Height:  |  Size: 393 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 286 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 325 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 203 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 194 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 246 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 183 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 217 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 251 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 261 B

View File

@@ -1,26 +0,0 @@
[mod] 3d Armor [3d_armor]
=========================
License Source Code
-------------------
Copyright (C) 2012-2019 stujones11, Stuart Jones <stujones111@gmail.com>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
License Textures
----------------
Copyright (C) 2017-2019 davidthecreator - CC-BY-SA 3.0

View File

@@ -5,8 +5,7 @@
-- support for i18n
local S = armor.get_translator
local S = minetest.get_translator(minetest.get_current_modname())
--- Crystal
--
@@ -167,4 +166,4 @@ if armor.materials.crystal then
{m, "", m},
},
})
end
end

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 Boots=кристалловые ботинки
Crystal Helmet=Кристальный Шлем
Crystal Chestplate=Кристальный Нагрудник
Crystal Leggings=Кристальные Поножи
Crystal Boots=Кристальные Ботинки

View File

@@ -0,0 +1,5 @@
# textdomain: armor_crystal
Crystal Helmet=Кришталевий шолом
Crystal Chestplate=Кришталева броня
Crystal Leggings=Кришталеві штани
Crystal Boots=Кришталеве взуття

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