diff --git a/mods/3d_armor/.gitignore b/mods/3d_armor/.gitignore index 6e4e4593..ba96b081 100755 --- a/mods/3d_armor/.gitignore +++ b/mods/3d_armor/.gitignore @@ -6,3 +6,6 @@ tags *.vim armor.conf +## Eclipse project files & directories +.project +.settings diff --git a/mods/3d_armor/3d_armor/LICENSE.txt b/mods/3d_armor/3d_armor/LICENSE.txt new file mode 100644 index 00000000..f253f299 --- /dev/null +++ b/mods/3d_armor/3d_armor/LICENSE.txt @@ -0,0 +1,26 @@ +[mod] 3d Armor [3d_armor] +========================= + +License Source Code +------------------- + +Copyright (C) 2012-2019 stujones11, Stuart Jones + +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 diff --git a/mods/3d_armor/3d_armor/README.txt b/mods/3d_armor/3d_armor/README.txt index 224f81c9..7dbe82d0 100755 --- a/mods/3d_armor/3d_armor/README.txt +++ b/mods/3d_armor/3d_armor/README.txt @@ -3,7 +3,9 @@ Depends: default -Recommends: inventory_plus or unified_inventory (use only one) +Recommends: sfinv, unified_inventory or smart_inventory (use only one to avoid conflicts) + +Supports: player_monoids and armor_monoid Adds craftable armor that is visible to other players. Each armor item worn contributes to a player's armor group level making them less vulnerable to weapons. @@ -14,11 +16,176 @@ 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. -Configuration -------------- +Armor Configuration +------------------- -Armor can be configured by adding a file called armor.conf in 3d_armor mod and/or world directory. -see armor.conf.example for all available options. +Override the following default settings by adding them to your minetest.conf file. -Note: worldpath config settings override any settings made in the mod's directory. +-- Set false to disable individual armor materials. +armor_material_wood = true +armor_material_cactus = true +armor_material_steel = true +armor_material_bronze = true +armor_material_diamond = true +armor_material_gold = true +armor_material_mithril = true +armor_material_crystal = true + +-- Increase this if you get initialization glitches when a player first joins. +armor_init_delay = 2 + +-- Number of initialization attempts. +-- Use in conjunction with armor_init_delay if initialization problems persist. +armor_init_times = 10 + +-- Increase this if armor is not getting into bones due to server lag. +armor_bones_delay = 1 + +-- How often player armor 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: 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 + +-- Enable water protection (periodically restores breath when activated) +armor_water_protect = true + +-- Enable fire protection (defaults true if using ethereal mod) +armor_fire_protect = false + +-- Enable punch damage effects. +armor_punch_damage = true + +-- Enable migration of old armor inventories +armor_migrate_old_inventory = true + +API +--- + +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 = + preview = + armor_groups = + damage_groups =
+ reciprocate_damage = + on_equip = + on_unequip = + on_destroy = + on_damage = + on_punched = + +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:get_pos() + 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. + +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_punched` 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) diff --git a/mods/3d_armor/3d_armor/admin.lua b/mods/3d_armor/3d_armor/admin.lua deleted file mode 100755 index eaa71ad8..00000000 --- a/mods/3d_armor/3d_armor/admin.lua +++ /dev/null @@ -1,45 +0,0 @@ -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_tool("3d_armor:helmet_admin", { - description = "Admin Helmet", - inventory_image = "3d_armor_inv_helmet_admin.png", - groups = {armor_head=1000, armor_heal=1000, armor_use=0, armor_water=1,}, - wear = 0, - on_drop = function(itemstack, dropper, pos) - return - end, -}) - -minetest.register_tool("3d_armor:chestplate_admin", { - description = "Admin Chestplate", - inventory_image = "3d_armor_inv_chestplate_admin.png", - groups = {armor_torso=1000, armor_heal=1000, armor_use=0}, - wear = 0, - on_drop = function(itemstack, dropper, pos) - return - end, -}) - -minetest.register_tool("3d_armor:leggings_admin", { - description = "Admin Leggings", - inventory_image = "3d_armor_inv_leggings_admin.png", - groups = {armor_legs=1000, armor_heal=1000, armor_use=0}, - wear = 0, - on_drop = function(itemstack, dropper, pos) - return - end, -}) - -minetest.register_tool("3d_armor:boots_admin", { - description = "Admin Boots", - inventory_image = "3d_armor_inv_boots_admin.png", - groups = {armor_feet=1000, armor_heal=1000, armor_use=0}, - wear = 0, - on_drop = function(itemstack, dropper, pos) - return - end, -}) - diff --git a/mods/3d_armor/3d_armor/api.lua b/mods/3d_armor/3d_armor/api.lua new file mode 100644 index 00000000..38eadff0 --- /dev/null +++ b/mods/3d_armor/3d_armor/api.lua @@ -0,0 +1,552 @@ +-- support for i18n +local S = armor_i18n.gettext + +local skin_previews = {} +local use_player_monoids = minetest.global_exists("player_monoids") +local use_armor_monoid = minetest.global_exists("armor_monoid") +local use_pova_mod = minetest.get_modpath("pova") +local armor_def = setmetatable({}, { + __index = function() + return setmetatable({ + groups = setmetatable({}, { + __index = function() + return 0 + end}) + }, { + __index = function() + return 0 + end + }) + end, +}) +local armor_textures = setmetatable({}, { + __index = function() + return setmetatable({}, { + __index = function() + return "blank.png" + end + }) + end +}) + +armor = { + timer = 0, + elements = {"head", "torso", "legs", "feet"}, + physics = {"jump", "speed", "gravity"}, + attributes = {"heal", "fire", "water"}, + formspec = "image[2.5,0;2,4;armor_preview]".. + default.gui_bg.. + default.gui_bg_img.. + default.gui_slots.. + default.get_hotbar_bg(0, 4.7).. + "list[current_player;main;0,4.7;8,1;]".. + "list[current_player;main;0,5.85;8,3;8]", + def = armor_def, + textures = armor_textures, + default_skin = "character", + materials = { + wood = "group:wood", + cactus = "default:cactus", + steel = "default:steel_ingot", + bronze = "default:bronze_ingot", + diamond = "default:diamond", + gold = "default:gold_ingot", + mithril = "moreores:mithril_ingot", + crystal = "ethereal:crystal_ingot", + -- Hunter armors (A déc-ommenter quand activation de l'armure au total) + hardenedleather = "3d_armor:hardenedleather", + reinforcedleather = "3d_armor:reinforcedleather", + + -- Warrior armors + blackmithril = "3d_armor:blackmithril_ingot" + + -- Wizard armors + --armor = "xxx", + --armor = "xxx", + }, + fire_nodes = { + {"default:lava_source", 5, 8}, + {"default:lava_flowing", 5, 8}, + {"fire:basic_flame", 3, 4}, + {"fire:permanent_flame", 3, 4}, + {"ethereal:crystal_spike", 2, 1}, + {"ethereal:fire_flower", 2, 1}, + {"default:torch", 1, 1}, + {"default:torch_ceiling", 1, 1}, + {"default:torch_wall", 1, 1}, + }, + registered_groups = {["fleshy"]=100}, + registered_callbacks = { + on_update = {}, + on_equip = {}, + on_unequip = {}, + on_damage = {}, + on_destroy = {}, + }, + migrate_old_inventory = true, + version = "0.4.13", +} + +armor.config = { + init_delay = 2, + init_times = 10, + bones_delay = 1, + update_time = 1, + drop = minetest.get_modpath("bones") ~= nil, + destroy = false, + level_multiplier = 1, + heal_multiplier = 1, + material_wood = true, + material_cactus = true, + material_steel = true, + material_bronze = true, + material_diamond = true, + material_gold = true, + material_mithril = true, + material_crystal = true, + water_protect = true, + fire_protect = minetest.get_modpath("ethereal") ~= nil, + punch_damage = true, +} + +-- Armor Registration + +armor.register_armor = function(self, name, def) + minetest.register_tool(name, def) +end + +armor.register_armor_group = function(self, group, base) + base = base or 100 + self.registered_groups[group] = base + if use_armor_monoid then + armor_monoid.register_armor_group(group, base) + end +end + +-- Armor callbacks + +armor.register_on_update = function(self, func) + if type(func) == "function" then + table.insert(self.registered_callbacks.on_update, func) + end +end + +armor.register_on_equip = function(self, func) + if type(func) == "function" then + table.insert(self.registered_callbacks.on_equip, func) + end +end + +armor.register_on_unequip = function(self, func) + if type(func) == "function" then + table.insert(self.registered_callbacks.on_unequip, func) + end +end + +armor.register_on_damage = function(self, func) + if type(func) == "function" then + table.insert(self.registered_callbacks.on_damage, func) + end +end + +armor.register_on_destroy = function(self, func) + if type(func) == "function" then + table.insert(self.registered_callbacks.on_destroy, func) + end +end + +armor.run_callbacks = function(self, callback, player, index, stack) + if stack then + local def = stack:get_definition() or {} + if type(def[callback]) == "function" then + def[callback](player, index, stack) + end + end + local callbacks = self.registered_callbacks[callback] + if callbacks then + for _, func in pairs(callbacks) do + func(player, index, stack) + end + end +end + +armor.update_player_visuals = function(self, player) + if not player then + return + end + local name = player:get_player_name() + if self.textures[name] then + default.player_set_textures(player, { + self.textures[name].skin, + self.textures[name].armor, + self.textures[name].wielditem, + }) + end + self:run_callbacks("on_update", player) +end + +armor.set_player_armor = function(self, player) + local name, armor_inv = self:get_valid_player(player, "[set_player_armor]") + if not name then + return + end + local item = stack:get_name() + local state = 0 + local count = 0 + local material = {count=1} + local preview = armor:get_preview(name) + local texture = "3d_armor_trans.png" + local textures = {} + local physics = {} + local attributes = {} + local levels = {} + local groups = {} + local change = {} + for _, phys in pairs(self.physics) do + physics[phys] = 1 + end + for _, attr in pairs(self.attributes) do + attributes[attr] = 0 + end + for group, _ in pairs(self.registered_groups) do + change[group] = 1 + levels[group] = 0 + end + local list = armor_inv:get_list("armor") + if type(list) ~= "table" then + return + end + for i, stack in pairs(list) do + if stack:get_count() == 1 then + local def = stack:get_definition() + for _, element in pairs(self.elements) do + if def.groups["armor_"..element] then + if def.armor_groups then + for group, level in pairs(def.armor_groups) do + if levels[group] then + local texture = item:gsub("%:", "_") + if texture:find("enchanted") then -- MFF xdecor enchanting preview fix (testing needed!). + texture = texture:gsub("_enchanted", "") + texture = texture:gsub("_strong", "") + texture = texture:gsub("_speed", "") + end + table.insert(textures, texture..".png") + if preview == "" then + preview = texture .. "_preview.png" + elseif stack:get_name():find("shield") then -- MFF(Mg | 09/05/15). + preview = preview.. "^" .. texture.."_preview.png" + else + preview = texture .. "_preview.png^" .. preview + end + levels[group] = levels[group] + level + end + end + else + local level = def.groups["armor_"..element] + levels["fleshy"] = levels["fleshy"] + level + end + break + end + -- DEPRECATED, use armor_groups instead + if def.groups["armor_radiation"] and levels["radiation"] then + levels["radiation"] = def.groups["armor_radiation"] + end + end + local tex = def.texture or item:gsub("%:", "_") + tex = tex:gsub(".png$", "") + local prev = def.preview or tex.."_preview" + prev = prev:gsub(".png$", "") + texture = texture.."^"..tex..".png" + preview = preview.."^"..prev..".png" + state = state + stack:get_wear() + count = count + 1 + for _, phys in pairs(self.physics) do + local value = def.groups["physics_"..phys] or 0 + physics[phys] = physics[phys] + value + end + for _, attr in pairs(self.attributes) do + local value = def.groups["armor_"..attr] or 0 + attributes[attr] = attributes[attr] + value + end + local mat = string.match(item, "%:.+_(.+)$") + if material.name then + if material.name == mat then + material.count = material.count + 1 + end + else + material.name = mat + end + end + end + for group, level in pairs(levels) do + if level > 0 then + level = level * armor.config.level_multiplier + if material.name and material.count == #self.elements then + level = level * 1.1 + end + end + local base = self.registered_groups[group] + self.def[name].groups[group] = level + if level > base then + level = base + end + groups[group] = base - level + change[group] = groups[group] / base + end + for _, attr in pairs(self.attributes) do + local mult = attr == "heal" and self.config.heal_multiplier or 1 + self.def[name][attr] = attributes[attr] * mult + end + for _, phys in pairs(self.physics) do + self.def[name][phys] = physics[phys] + end + if use_armor_monoid then + armor_monoid.monoid:add_change(player, change, "3d_armor:armor") + else + player:set_armor_groups(groups) + end + if use_player_monoids then + player_monoids.speed:add_change(player, physics.speed, + "3d_armor:physics") + player_monoids.jump:add_change(player, physics.jump, + "3d_armor:physics") + player_monoids.gravity:add_change(player, physics.gravity, + "3d_armor:physics") + elseif use_pova_mod then + -- only add the changes, not the default 1.0 for each physics setting + pova.add_override(name, "3d_armor", { + speed = physics.speed - 1, + jump = physics.jump - 1, + gravity = physics.gravity - 1, + }) + pova.do_override(player) + else + player:set_physics_override(physics) + end + pclasses.api.util.on_update(name) + self.textures[name].armor = texture + self.textures[name].preview = preview + self.def[name].level = self.def[name].groups.fleshy or 0 + self.def[name].state = state + self.def[name].count = count + self:update_player_visuals(player) +end + +armor.punch = function(self, player, hitter, time_from_last_punch, tool_capabilities) + local name, armor_inv = self:get_valid_player(player, "[punch]") + if not name then + return + end + local state = 0 + local count = 0 + local recip = true + local default_groups = {cracky=3, snappy=3, choppy=3, crumbly=3, level=1} + local list = armor_inv:get_list("armor") + for i, stack in pairs(list) do + if stack:get_count() == 1 then + local name = stack:get_name() + local use = minetest.get_item_group(name, "armor_use") or 0 + local damage = use > 0 + local def = stack:get_definition() or {} + if type(def.on_punched) == "function" then + damage = def.on_punched(player, hitter, time_from_last_punch, + tool_capabilities) ~= false and damage == true + end + if damage == true and tool_capabilities then + local damage_groups = def.damage_groups or default_groups + local level = damage_groups.level or 0 + local groupcaps = tool_capabilities.groupcaps or {} + local uses = 0 + damage = false + for group, caps in pairs(groupcaps) do + local maxlevel = caps.maxlevel or 0 + local diff = maxlevel - level + if diff == 0 then + diff = 1 + end + if diff > 0 and caps.times then + local group_level = damage_groups[group] + if group_level then + local time = caps.times[group_level] + if time then + local dt = time_from_last_punch or 0 + if dt > time / diff then + if caps.uses then + uses = caps.uses * math.pow(3, diff) + end + damage = true + break + end + end + end + end + end + if damage == true and recip == true and hitter and + def.reciprocate_damage == true and uses > 0 then + local item = hitter:get_wielded_item() + if item and item:get_name() ~= "" then + item:add_wear(65535 / uses) + hitter:set_wielded_item(item) + end + -- reciprocate tool damage only once + recip = false + end + end + if damage == true and hitter == "fire" then + damage = minetest.get_item_group(name, "flammable") > 0 + end + if damage == true then + self:damage(player, i, stack, use) + end + state = state + stack:get_wear() + count = count + 1 + end + end + self.def[name].state = state + self.def[name].count = count +end + +armor.damage = function(self, player, index, stack, use) + local old_stack = ItemStack(stack) + stack:add_wear(use) + self:run_callbacks("on_damage", player, index, stack) + self:set_inventory_stack(player, index, stack) + if stack:get_count() == 0 then + self:run_callbacks("on_unequip", player, index, old_stack) + self:run_callbacks("on_destroy", player, index, old_stack) + self:set_player_armor(player) + end +end + +armor.get_player_skin = function(self, name) + if (self.skin_mod == "skins" or self.skin_mod == "simple_skins") and skins.skins[name] then + return skins.skins[name]..".png" + elseif self.skin_mod == "u_skins" and u_skins.u_skins[name] then + return u_skins.u_skins[name]..".png" + elseif self.skin_mod == "wardrobe" and wardrobe.playerSkins and wardrobe.playerSkins[name] then + return wardrobe.playerSkins[name] + end + return armor.default_skin..".png" +end + +armor.add_preview = function(self, preview) + skin_previews[preview] = true +end + +armor.get_preview = function(self, name) + local preview = string.gsub(armor:get_player_skin(name), ".png", "_preview.png") + if skin_previews[preview] then + return preview + end + return "character_preview.png" +end + +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 + formspec = formspec.."listring[current_player;main]".. + "listring[detached:"..name.."_armor;armor]" + end + formspec = formspec:gsub("armor_preview", armor.textures[name].preview) + formspec = formspec:gsub("armor_level", armor.def[name].level) + for _, attr in pairs(self.attributes) do + formspec = formspec:gsub("armor_attr_"..attr, armor.def[name][attr]) + end + for group, _ in pairs(self.registered_groups) do + formspec = formspec:gsub("armor_group_"..group, + armor.def[name].groups[group]) + end + return formspec +end + +armor.get_element = function(self, item_name) + for _, element in pairs(armor.elements) do + if minetest.get_item_group(item_name, "armor_"..element) > 0 then + return element + end + end +end + +armor.serialize_inventory_list = function(self, list) + local list_table = {} + for _, stack in ipairs(list) do + table.insert(list_table, stack:to_string()) + end + return minetest.serialize(list_table) +end + +armor.deserialize_inventory_list = function(self, list_string) + local list_table = minetest.deserialize(list_string) + local list = {} + for _, stack in ipairs(list_table or {}) do + table.insert(list, ItemStack(stack)) + end + return list +end + +armor.load_armor_inventory = function(self, player) + local _, inv = self:get_valid_player(player, "[load_armor_inventory]") + if inv then + local meta = player:get_meta() + local armor_list_string = meta:get_string("3d_armor_inventory") + if armor_list_string then + inv:set_list("armor", + self:deserialize_inventory_list(armor_list_string)) + return true + end + end +end + +armor.save_armor_inventory = function(self, player) + local _, inv = self:get_valid_player(player, "[save_armor_inventory]") + if inv then + local meta = player:get_meta() + meta:set_string("3d_armor_inventory", + self:serialize_inventory_list(inv:get_list("armor"))) + end +end + +armor.update_inventory = function(self, player) + -- DEPRECATED: Legacy inventory support +end + +armor.set_inventory_stack = function(self, player, i, stack) + local _, inv = self:get_valid_player(player, "[set_inventory_stack]") + if inv then + inv:set_stack("armor", i, stack) + self:save_armor_inventory(player) + end +end + +armor.get_valid_player = function(self, player, msg) + msg = msg or "" + if not player then + minetest.log("warning", S("3d_armor: Player reference is nil @1", msg)) + return + end + local name = player:get_player_name() + if not name then + minetest.log("warning", S("3d_armor: Player name is nil @1", msg)) + return + end + local inv = minetest.get_inventory({type="detached", name=name.."_armor"}) + if not inv then + minetest.log("warning", S("3d_armor: Detached armor inventory is nil @1", msg)) + return + end + return name, inv +end + +armor.drop_armor = function(pos, stack) + local node = minetest.get_node_or_nil(pos) + if node then + local obj = minetest.add_item(pos, stack) + if obj then + obj:set_velocity({x=math.random(-1, 1), y=5, z=math.random(-1, 1)}) + end + end +end diff --git a/mods/3d_armor/3d_armor/armor.conf b/mods/3d_armor/3d_armor/armor.conf deleted file mode 100755 index 4e4b86fd..00000000 --- a/mods/3d_armor/3d_armor/armor.conf +++ /dev/null @@ -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 = 0 - --- 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 - diff --git a/mods/3d_armor/3d_armor/armor.conf.example b/mods/3d_armor/3d_armor/armor.conf.example index 2e1149a1..9ce34b45 100755 --- a/mods/3d_armor/3d_armor/armor.conf.example +++ b/mods/3d_armor/3d_armor/armor.conf.example @@ -1,3 +1,7 @@ +-- DEPRECATED, will not be supported in future versions + +-- See README.txt for new configuration options. + -- Armor Configuration (defaults) -- You can remove any unwanted armor materials from this table. @@ -9,7 +13,7 @@ ARMOR_MATERIALS = { bronze = "default:bronze_ingot", diamond = "default:diamond", gold = "default:gold_ingot", - mithril = "default:mithril_ingot", + mithril = "moreores:mithril_ingot", crystal = "ethereal:crystal_ingot", } @@ -55,3 +59,7 @@ ARMOR_LEVEL_MULTIPLIER = 1 -- eg: ARMOR_HEAL_MULTIPLIER = 0 will disable healing altogether. ARMOR_HEAL_MULTIPLIER = 1 +-- You can use this to increase or decrease overall armor radiation protection, +-- eg: ARMOR_RADIATION_MULTIPLIER = 0 will completely disable radiation protection. +-- Note: patched technic mod is required +ARMOR_RADIATION_MULTIPLIER = 1 diff --git a/mods/3d_armor/3d_armor/armor.lua b/mods/3d_armor/3d_armor/armor.lua index 6f561db2..dd124bb6 100755 --- a/mods/3d_armor/3d_armor/armor.lua +++ b/mods/3d_armor/3d_armor/armor.lua @@ -1,721 +1,346 @@ -local armors_no_shields = { ["3d_armor:helmet_hardenedleather"] = true,["3d_armor:chestplate_hardenedleather"] = true, - ["3d_armor:leggings_hardenedleather"] = true,["3d_armor:boots_hardenedleather"] = true, - ["3d_armor:helmet_reinforcedleather"] = true,["3d_armor:chestplate_reinforcedleather"] = true, - ["3d_armor:leggings_reinforcedleather"] = true,["3d_armor:boots_reinforcedleather"] = true, -} -- modif MFF (crabman/24/06/2015) +-- support for i18n +local S = armor_i18n.gettext - -ARMOR_INIT_DELAY = 1 -ARMOR_INIT_TIMES = 1 -ARMOR_BONES_DELAY = 1 -ARMOR_UPDATE_TIME = 1 -ARMOR_DROP = minetest.get_modpath("bones") ~= nil -ARMOR_DESTROY = false -ARMOR_LEVEL_MULTIPLIER = 1 -ARMOR_HEAL_MULTIPLIER = 1 -ARMOR_RADIATION_MULTIPLIER = 1 -ARMOR_MATERIALS = { - wood = "group:wood", - cactus = "default:cactus", - steel = "default:steel_ingot", - bronze = "default:bronze_ingot", - diamond = "default:diamond", - gold = "default:gold_ingot", - mithril = "default:mithril_ingot", - crystal = "ethereal:crystal_ingot", - -- Hunter armors (A déc-ommenter quand activation de l'armure au total) - hardenedleather = "3d_armor:hardenedleather", - reinforcedleather = "3d_armor:reinforcedleather", - -- Warrior armors - blackmithril = "3d_armor:blackmithril_ingot" - -- Wizard armors - --armor = "xxx", - --armor = "xxx", -} -ARMOR_FIRE_PROTECT = minetest.get_modpath("ethereal") ~= nil -ARMOR_FIRE_NODES = { - {"default:lava_source", 5, 8}, - {"default:lava_flowing", 5, 8}, - {"fire:basic_flame", 3, 4}, - {"fire:permanent_flame", 3, 4}, - {"ethereal:crystal_spike", 2, 1}, - {"ethereal:fire_flower", 2, 1}, - {"default:torch", 1, 1}, -} - -local skin_mod = nil -local inv_mod = nil - -local modpath = minetest.get_modpath(ARMOR_MOD_NAME) -local worldpath = minetest.get_worldpath() -local input = io.open(modpath.."/armor.conf", "r") -if input then - dofile(modpath.."/armor.conf") - input:close() - input = nil -end -input = io.open(worldpath.."/armor.conf", "r") -if input then - dofile(worldpath.."/armor.conf") - input:close() - input = nil -end -if not minetest.get_modpath("ethereal") then - ARMOR_MATERIALS.crystal = nil -end - -armor = { - timer = 0, - elements = {"head", "torso", "legs", "feet"}, - physics = {"jump","speed","gravity"}, - formspec = "size[8,8.5]image[2,0.75;2,4;armor_preview]" - .."list[current_player;main;0,4.5;8,4;]" - .."list[current_player;craft;4,1;3,3;]" - .."list[current_player;craftpreview;7,2;1,1;]" - .."listring[current_player;main]" - .."listring[current_player;craft]", - textures = {}, - default_skin = "character", - version = "0.4.5", -} - -if minetest.get_modpath("inventory_plus") then - inv_mod = "inventory_plus" - armor.formspec = "size[8,8.5]button[0,0;2,0.5;main;Back]" - .."image[2.5,0.75;2,4;armor_preview]" - .."label[5,1;Level: armor_level]" - .."label[5,1.5;Heal: armor_heal]" - .."label[5,2;Fire: armor_fire]" - .."label[5,2.5;Radiation: armor_radiation]" - .."list[current_player;main;0,4.5;8,4;]" - if minetest.get_modpath("crafting") then - inventory_plus.get_formspec = function(player, page) - end - end -elseif minetest.get_modpath("unified_inventory") then - inv_mod = "unified_inventory" - unified_inventory.register_button("armor", { - type = "image", - image = "inventory_plus_armor.png", - tooltip = "Armor inventory", - show_with = false, --Modif MFF (Crabman 30/06/2015) - }) - unified_inventory.register_page("armor", { - get_formspec = function(player, perplayer_formspec) - local fy = perplayer_formspec.formspec_y - local name = player:get_player_name() - local formspec = "background[0.06,"..fy..";7.92,7.52;3d_armor_ui_form.png]" - .."label[0,0;Armor]" - .."list[detached:"..name.."_armor;armor;0,"..fy..";2,3;]" - .."image[2.5,"..(fy - 0.25)..";2,4;"..armor.textures[name].preview.."]" - .."label[5.0,"..(fy + 0.0)..";Level: "..armor.def[name].level.."]" - .."label[5.0,"..(fy + 0.4)..";Heal: "..armor.def[name].heal.."]" - .."label[5.0,"..(fy + 0.8)..";Fire: "..armor.def[name].fire.."]" - .."label[5.0,"..(fy + 1.2)..";Radiation: "..armor.def[name].radiation.."]" - .."label[5.0,"..(fy + 1.6)..";Speed: "..armor.def[name].speed.."]" - .."label[5.0,"..(fy + 2)..";Jump: "..armor.def[name].jump.."]" - .."label[5.0,"..(fy + 2.4)..";Gravity: "..armor.def[name].gravity.."]" - .."listring[current_player;main]" - .."listring[detached:"..name.."_armor;armor]" - return {formspec=formspec} - end, - }) -elseif minetest.get_modpath("inventory_enhanced") then - inv_mod = "inventory_enhanced" -end - -if minetest.get_modpath("skins") then - skin_mod = "skins" -elseif minetest.get_modpath("simple_skins") then - skin_mod = "simple_skins" -elseif minetest.get_modpath("u_skins") then - skin_mod = "u_skins" -elseif minetest.get_modpath("wardrobe") then - skin_mod = "wardrobe" -end - -armor.def = { - state = 0, - count = 0, -} - -armor.update_player_visuals = function(self, player) - if not player then +armor:register_armor("3d_armor:helmet_admin", { + description = S("Admin Helmet"), + inventory_image = "3d_armor_inv_helmet_admin.png", + armor_groups = {fleshy=100}, + groups = {armor_head=1, armor_heal=100, armor_use=0, armor_water=1, + not_in_creative_inventory=1}, + on_drop = function(itemstack, dropper, pos) return - end - local name = player:get_player_name() - if self.textures[name] then - default.player_set_textures(player, { - self.textures[name].skin, - self.textures[name].armor, - self.textures[name].wielditem, - }) - end -end - -armor.set_player_armor = function(self, player) - local name, player_inv = armor:get_valid_player(player, "[set_player_armor]") - if not name then - return - end - local armor_texture = "3d_armor_trans.png" - local armor_level = 0 - local armor_heal = 0 - local armor_fire = 0 - local armor_water = 0 - local armor_radiation = 0 - local state = 0 - local items = 0 - local elements = {} - local textures = {} - local physics_o = {speed=1,gravity=1,jump=1} - local material = {type=nil, count=1} - local preview = "" - for _,v in ipairs(self.elements) do - elements[v] = false - end - for i=1, 6 do - local stack = player_inv:get_stack("armor", i) - local item = stack:get_name() - if stack:get_count() == 1 then - local def = stack:get_definition() - for k, v in pairs(elements) do - if v == false then - local level = def.groups["armor_"..k] - if level then - local texture = item:gsub("%:", "_") - if texture:find("enchanted") then --MFF xdecor enchanting preview fix - texture = texture:gsub("_enchanted", "") - texture = texture:gsub("_strong", "") - texture = texture:gsub("_speed", "") - end - table.insert(textures, texture..".png") - if preview == "" then - preview = texture .. "_preview.png" - elseif stack:get_name():find("shield") then -- //MFF(Mg|09/05/15) - preview = preview.. "^" .. texture.."_preview.png" - else - preview = texture .. "_preview.png^" .. preview - end - armor_level = armor_level + level - state = state + stack:get_wear() - items = items + 1 - armor_heal = armor_heal + (def.groups["armor_heal"] or 0) - armor_fire = armor_fire + (def.groups["armor_fire"] or 0) - armor_water = armor_water + (def.groups["armor_water"] or 0) - armor_radiation = armor_radiation + (def.groups["armor_radiation"] or 0) - for kk,vv in ipairs(self.physics) do - local o_value = def.groups["physics_"..vv] - if o_value then - physics_o[vv] = physics_o[vv] + o_value - end - end - local mat = string.match(item, "%:.+_(.+)$") - if material.type then - if material.type == mat then - material.count = material.count + 1 - end - else - material.type = mat - end - elements[k] = true - end - end - end - end - end - if preview ~= "" then - preview = "^" .. preview - end - preview = armor:get_preview(name) .. preview -- //MFF(Mg|09/05/15) - if minetest.get_modpath("shields") then - armor_level = armor_level * 0.9 - end - if material.type and material.count == #self.elements then - armor_level = armor_level * 1.1 - end - armor_level = armor_level * ARMOR_LEVEL_MULTIPLIER - armor_heal = armor_heal * ARMOR_HEAL_MULTIPLIER - armor_radiation = armor_radiation * ARMOR_RADIATION_MULTIPLIER - if #textures > 0 then - armor_texture = table.concat(textures, "^") - end - local armor_groups = {fleshy=100} - if armor_level > 0 then - armor_groups.level = math.floor(armor_level / 20) - armor_groups.fleshy = 100 - armor_level - armor_groups.radiation = 100 - armor_radiation - end - player:set_armor_groups(armor_groups) - --player:set_physics_override(physics_o) - player_physics.set_stats(player, "3d_armor", {speed=physics_o.speed-1, jump=physics_o.jump-1, gravity=physics_o.gravity-1}) - pclasses.api.util.on_update(name) - self.textures[name].armor = armor_texture - self.textures[name].preview = preview - self.def[name].state = state - self.def[name].count = items - self.def[name].level = armor_level - self.def[name].heal = armor_heal - self.def[name].jump = physics_o.jump - self.def[name].speed = physics_o.speed - self.def[name].gravity = physics_o.gravity - self.def[name].fire = armor_fire - self.def[name].water = armor_water - self.def[name].radiation = armor_radiation - self:update_player_visuals(player) -end - -armor.update_armor = function(self, player) - -- Legacy support: Called when armor levels are changed - -- Other mods can hook on to this function, see hud mod for example -end - -armor.get_player_skin = function(self, name) - local skin = nil - if skin_mod == "skins" or skin_mod == "simple_skins" then - skin = skins.skins[name] - elseif skin_mod == "u_skins" then - skin = u_skins.u_skins[name] - elseif skin_mod == "wardrobe" then - skin = string.gsub(wardrobe.playerSkins[name], "%.png$","") - end - return skin or armor.default_skin -end - -armor.get_preview = function(self, name) - if skin_mod == "skins" then - return armor:get_player_skin(name).."_preview.png" - elseif skin_mod == "u_skins"then - return string.gsub(armor.textures[name].skin, ".png", "_preview.png") - end - return "character_preview.png" -end - -armor.get_armor_formspec = function(self, name) - if not armor.textures[name] then - minetest.log("error", "3d_armor: Player texture["..name.."] is nil [get_armor_formspec]") - return "" - end - if not armor.def[name] then - minetest.log("error", "3d_armor: Armor def["..name.."] is nil [get_armor_formspec]") - return "" - end - local formspec = armor.formspec.."list[detached:"..name.."_armor;armor;0,1;2,3;]" - formspec = formspec:gsub("armor_preview", armor.textures[name].preview) - formspec = formspec:gsub("armor_level", armor.def[name].level) - formspec = formspec:gsub("armor_heal", armor.def[name].heal) - formspec = formspec:gsub("armor_fire", armor.def[name].fire) - formspec = formspec:gsub("armor_radiation", armor.def[name].radiation) - formspec = formspec:gsub("armor_speed", armor.def[name].speed) - formspec = formspec:gsub("armor_jump", armor.def[name].jump) - formspec = formspec:gsub("armor_gravity", armor.def[name].gravity) - return formspec -end - -armor.update_inventory = function(self, player) - local name = armor:get_valid_player(player, "[set_player_armor]") - if not name or inv_mod == "inventory_enhanced" then - return - end - if inv_mod == "unified_inventory" then - if unified_inventory.current_page[name] == "armor" then - unified_inventory.set_inventory_formspec(player, "armor") - end - else - local formspec = armor:get_armor_formspec(name) - if inv_mod == "inventory_plus" then - formspec = formspec.."listring[current_player;main]" - .."listring[detached:"..name.."_armor;armor]" - local page = player:get_inventory_formspec() - if page:find("detached:"..name.."_armor") then - inventory_plus.set_inventory_formspec(player, formspec) - end - else - player:set_inventory_formspec(formspec) - end - end -end - -armor.get_valid_player = function(self, player, msg) - msg = msg or "" - if not player then - minetest.log("error", "3d_armor: Player reference is nil "..msg) - return - end - local name = player:get_player_name() - if not name then - minetest.log("error", "3d_armor: Player name is nil "..msg) - return - end - local pos = player:getpos() - local player_inv = player:get_inventory() - local armor_inv = minetest.get_inventory({type="detached", name=name.."_armor"}) - if not pos then - minetest.log("error", "3d_armor: Player position is nil "..msg) - return - elseif not player_inv then - minetest.log("error", "3d_armor: Player inventory is nil "..msg) - return - elseif not armor_inv then - minetest.log("error", "3d_armor: Detached armor inventory is nil "..msg) - return - end - return name, player_inv, armor_inv, pos -end - --- Register Player Model - -default.player_register_model("3d_armor_character.b3d", { - animation_speed = 30, - textures = { - armor.default_skin..".png", - "3d_armor_trans.png", - "3d_armor_trans.png", - }, - animations = { - stand = {x=0, y=79}, - lay = {x=162, y=166}, - walk = {x=168, y=187}, - mine = {x=189, y=198}, - walk_mine = {x=200, y=219}, - sit = {x=81, y=160}, - }, -}) - --- Register Callbacks - -minetest.register_on_player_receive_fields(function(player, formname, fields) - local name = armor:get_valid_player(player, "[on_player_receive_fields]") - if not name or inv_mod == "inventory_enhanced" then - return - end - if inv_mod == "inventory_plus" and fields.armor then - local formspec = armor:get_armor_formspec(name) - inventory_plus.set_inventory_formspec(player, formspec) - return - end - for field, _ in pairs(fields) do - if string.find(field, "skins_set") then - minetest.after(0, function(player) - local skin = armor:get_player_skin(name) - armor.textures[name].skin = skin..".png" - armor:set_player_armor(player) - end, player) - end - end -end) - -minetest.register_on_joinplayer(function(player) - default.player_set_model(player, "3d_armor_character.b3d") - local name = player:get_player_name() - local player_inv = player:get_inventory() - local armor_inv = minetest.create_detached_inventory(name.."_armor", { - on_put = function(inv, listname, index, stack, player) - player:get_inventory():set_stack(listname, index, stack) - armor:set_player_armor(player) - armor:update_inventory(player) - end, - on_take = function(inv, listname, index, stack, player) - player:get_inventory():set_stack(listname, index, nil) - armor:set_player_armor(player) - armor:update_inventory(player) - end, - on_move = function(inv, from_list, from_index, to_list, to_index, count, player) - local plaver_inv = player:get_inventory() - local old_stack = inv:get_stack(from_list, from_index) - local stack = inv:get_stack(to_list, to_index) - player_inv:set_stack(to_list, to_index, stack) - player_inv:set_stack(from_list, from_index, old_stack) - armor:set_player_armor(player) - armor:update_inventory(player) - end, - allow_put = function(inv, listname, index, stack, player) - --DEBUT modif MFF (crabman/24/06/2015) - local name = stack:get_name() - local player_inv = player:get_inventory() - local size = player_inv:get_size(listname) - if not ( (name:split(":")[1] == "3d_armor" and stack:get_definition().groups["armor_heal"]) or name:split(":")[1] == "shields") then - return 0 - end - - -- if player class != item class - if not pclasses.api.util.can_have_item(player:get_player_name(), name) then - return 0 - end - - --MFF (crabman/27/11/2015) no same item type. *helmet* - local ptype = name:split(":")[2]:split("_")[1] - if ptype == "enchanted" then - ptype = name:split(":")[2]:split("_")[2] - end - for i=1, size do - local stack = player_inv:get_stack(listname, i) - if stack:get_count() > 0 then - if stack:get_name():find(ptype) then - return 0 - end - end - end - - if name:find("shield") then - for i=1, size do - local stack = player_inv:get_stack(listname, i) - if stack:get_count() > 0 then - if armors_no_shields[stack:get_name()] ~= nil then - return 0 - end - end - end - else - if armors_no_shields[name] ~= nil then - for i=1, size do - local stack = player_inv:get_stack(listname, i) - if stack:get_count() > 0 then - if stack:get_name():find("shields:") then - return 0 - end - end - end - end - end - --FIN modif MFF (crabman/24/06/2015) - return 1 - end, - allow_take = function(inv, listname, index, stack, player) - return stack:get_count() - end, - allow_move = function(inv, from_list, from_index, to_list, to_index, count, player) - return count - end, - }) - if inv_mod == "inventory_plus" then - inventory_plus.register_button(player,"armor", "Armor") - end - armor_inv:set_size("armor", 6) - player_inv:set_size("armor", 6) - for i=1, 6 do - local stack = player_inv:get_stack("armor", i) - armor_inv:set_stack("armor", i, stack) - end - armor.def[name] = { - state = 0, - count = 0, - level = 0, - heal = 0, - jump = 1, - speed = 1, - gravity = 1, - fire = 0, - water = 0, - radiation = 0, - } - armor.textures[name] = { - skin = armor.default_skin..".png", - armor = "3d_armor_trans.png", - wielditem = "3d_armor_trans.png", - preview = armor.default_skin.."_preview.png", - } - if skin_mod == "skins" then - local skin = skins.skins[name] - if skin and skins.get_type(skin) == skins.type.MODEL then - armor.textures[name].skin = skin..".png" - end - elseif skin_mod == "simple_skins" then - local skin = skins.skins[name] - if skin then - armor.textures[name].skin = skin..".png" - end - elseif skin_mod == "u_skins" then - local skin = u_skins.u_skins[name] - if skin and u_skins.get_type(skin) == u_skins.type.MODEL then - armor.textures[name].skin = skin..".png" - end - elseif skin_mod == "wardrobe" then - local skin = wardrobe.playerSkins[name] - if skin then - armor.textures[name].skin = skin - end - end - if minetest.get_modpath("player_textures") then - local filename = minetest.get_modpath("player_textures").."/textures/player_"..name - local f = io.open(filename..".png") - if f then - f:close() - armor.textures[name].skin = "player_"..name..".png" - end - end - for i=1, ARMOR_INIT_TIMES do - minetest.after(ARMOR_INIT_DELAY * i, function(player) - armor:set_player_armor(player) - if not inv_mod then - armor:update_inventory(player) - end - end, player) - end -end) ---[[ -if ARMOR_DROP == true or ARMOR_DESTROY == true then - armor.drop_armor = function(pos, stack) - local obj = minetest.add_item(pos, stack) - if obj then - obj:setvelocity({x=math.random(-1, 1), y=5, z=math.random(-1, 1)}) - end - end - minetest.register_on_dieplayer(function(player) - local name, player_inv, armor_inv, pos = armor:get_valid_player(player, "[on_dieplayer]") - if not name then - return - end - local drop = {} - for i=1, player_inv:get_size("armor") do - local stack = armor_inv:get_stack("armor", i) - -- Modification for MFF - if stack:get_count() > 0 and (not pclasses.data.reserved_items[armor_inv:get_stack("armor", i):get_name()] or - not pclasses.api.util.can_have_item(name, armor_inv:get_stack("armor", i):get_name())) then - table.insert(drop, stack) - armor_inv:set_stack("armor", i, nil) - player_inv:set_stack("armor", i, nil) - end - end - armor:set_player_armor(player) - if inv_mod == "unified_inventory" then - unified_inventory.set_inventory_formspec(player, "craft") - elseif inv_mod == "inventory_plus" then - local formspec = inventory_plus.get_formspec(player,"main") - inventory_plus.set_inventory_formspec(player, formspec) - else - armor:update_inventory(player) - end - if ARMOR_DESTROY == false then - minetest.after(ARMOR_BONES_DELAY, function() - local node = minetest.get_node(vector.round(pos)) - -- Modification for MFF - if node and node.name == "bones:bones" then - local meta = minetest.get_meta(vector.round(pos)) - local owner = meta:get_string("owner") - local inv = meta:get_inventory() - for _,stack in ipairs(drop) do - if name == owner and inv:room_for_item("main", stack) then - inv:add_item("main", stack) - else - armor.drop_armor(pos, stack) - end - end - else - for _,stack in ipairs(drop) do - armor.drop_armor(pos, stack) - end - end - end) - end - end) -end ---]] - -minetest.register_on_player_hpchange(function(player, hp_change) - local name, player_inv, armor_inv = armor:get_valid_player(player, "[on_hpchange]") - if name and hp_change < 0 then - - -- used for insta kill tools/commands like /kill (doesnt damage armor) - if hp_change < -100 then - return hp_change - end - - local heal_max = 0 - local state = 0 - local items = 0 - for i=1, 6 do - local stack = player_inv:get_stack("armor", i) - if stack:get_count() > 0 then - local use = stack:get_definition().groups["armor_use"] or 0 - local heal = stack:get_definition().groups["armor_heal"] or 0 - local item = stack:get_name() - stack:add_wear(use) - armor_inv:set_stack("armor", i, stack) - player_inv:set_stack("armor", i, stack) - state = state + stack:get_wear() - items = items + 1 - if stack:get_count() == 0 then - local desc = minetest.registered_items[item].description - if desc then - minetest.chat_send_player(name, "Your "..desc.." got destroyed!") - end - armor:set_player_armor(player) - armor:update_inventory(player) - end - heal_max = heal_max + heal - end - end - armor.def[name].state = state - armor.def[name].count = items - heal_max = heal_max * ARMOR_HEAL_MULTIPLIER - if heal_max > math.random(100) then - hp_change = 0 - end - armor:update_armor(player) - end - return hp_change -end, true) - --- Fire Protection and water breating, added by TenPlus1 - -if ARMOR_FIRE_PROTECT == true then - -- override hot nodes so they do not hurt player anywhere but mod - for _, row in pairs(ARMOR_FIRE_NODES) do - if minetest.registered_nodes[row[1]] then - minetest.override_item(row[1], {damage_per_second = 0}) - end - end -else - minetest.log("info", "[3d_armor] Fire Nodes disabled") -end - -function armor_step() - for _,player in pairs(minetest.get_connected_players()) do - local name = player:get_player_name() - local pos = player:getpos() - local hp = player:get_hp() - -- water breathing - if name and armor.def[name].water > 0 then - if player:get_breath() < 10 then - player:set_breath(10) - end - end - -- fire protection - if ARMOR_FIRE_PROTECT == true - and name and pos and hp then - pos.y = pos.y + 1.4 -- head level - local node_head = minetest.get_node(pos).name - pos.y = pos.y - 1.2 -- feet level - local node_feet = minetest.get_node(pos).name - -- is player inside a hot node? - for _, row in pairs(ARMOR_FIRE_NODES) do - -- check fire protection, if not enough then get hurt - if row[1] == node_head or row[1] == node_feet then - if hp > 0 and armor.def[name].fire < row[2] then - hp = hp - row[3] * ARMOR_UPDATE_TIME - player:set_hp(hp) - break - end - end - end - end - end - minetest.after(ARMOR_UPDATE_TIME, armor_step) -end - --- Launch once started -minetest.after(0, armor_step) - - --- kill player when command issued -minetest.register_chatcommand("kill", { - params = "", - description = "Kills player instantly", - func = function(name, param) - local player = minetest.get_player_by_name(name) - if player then - player:set_hp(-1001) - end end, }) + +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, + not_in_creative_inventory=1}, + on_drop = function(itemstack, dropper, pos) + return + end, +}) + +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, + not_in_creative_inventory=1}, + on_drop = function(itemstack, dropper, pos) + return + end, +}) + +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}, + on_drop = function(itemstack, dropper, pos) + return + end, +}) + +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") + +if armor.materials.wood then + armor:register_armor("3d_armor:helmet_wood", { + description = S("Wood Helmet"), + inventory_image = "3d_armor_inv_helmet_wood.png", + groups = {armor_head=1, armor_heal=0, armor_use=2000, flammable=1}, + armor_groups = {fleshy=5}, + damage_groups = {cracky=3, snappy=2, choppy=3, crumbly=2, level=1}, + }) + armor:register_armor("3d_armor:chestplate_wood", { + description = S("Wood Chestplate"), + inventory_image = "3d_armor_inv_chestplate_wood.png", + groups = {armor_torso=1, armor_heal=0, armor_use=2000, flammable=1}, + armor_groups = {fleshy=10}, + damage_groups = {cracky=3, snappy=2, choppy=3, crumbly=2, level=1}, + }) + armor:register_armor("3d_armor:leggings_wood", { + description = S("Wood Leggings"), + inventory_image = "3d_armor_inv_leggings_wood.png", + groups = {armor_legs=1, armor_heal=0, armor_use=2000, flammable=1}, + armor_groups = {fleshy=10}, + damage_groups = {cracky=3, snappy=2, choppy=3, crumbly=2, level=1}, + }) + armor:register_armor("3d_armor:boots_wood", { + description = S("Wood Boots"), + inventory_image = "3d_armor_inv_boots_wood.png", + armor_groups = {fleshy=5}, + damage_groups = {cracky=3, snappy=2, choppy=3, crumbly=2, level=1}, + groups = {armor_feet=1, armor_heal=0, armor_use=2000, flammable=1}, + }) +end + +if armor.materials.cactus then + armor:register_armor("3d_armor:helmet_cactus", { + description = S("Cactus Helmet"), + inventory_image = "3d_armor_inv_helmet_cactus.png", + groups = {armor_head=1, armor_heal=0, armor_use=1000}, + armor_groups = {fleshy=5}, + damage_groups = {cracky=3, snappy=3, choppy=2, crumbly=2, level=1}, + }) + armor:register_armor("3d_armor:chestplate_cactus", { + description = S("Cactus Chestplate"), + inventory_image = "3d_armor_inv_chestplate_cactus.png", + groups = {armor_torso=1, armor_heal=0, armor_use=1000}, + armor_groups = {fleshy=10}, + damage_groups = {cracky=3, snappy=3, choppy=2, crumbly=2, level=1}, + }) + armor:register_armor("3d_armor:leggings_cactus", { + description = S("Cactus Leggings"), + inventory_image = "3d_armor_inv_leggings_cactus.png", + groups = {armor_legs=1, armor_heal=0, armor_use=1000}, + armor_groups = {fleshy=10}, + damage_groups = {cracky=3, snappy=3, choppy=2, crumbly=2, level=1}, + }) + armor:register_armor("3d_armor:boots_cactus", { + description = S("Cactus Boots"), + inventory_image = "3d_armor_inv_boots_cactus.png", + groups = {armor_feet=1, armor_heal=0, armor_use=1000}, + armor_groups = {fleshy=5}, + damage_groups = {cracky=3, snappy=3, choppy=2, crumbly=2, level=1}, + }) +end + +if armor.materials.steel then + armor:register_armor("3d_armor:helmet_steel", { + description = S("Steel Helmet"), + inventory_image = "3d_armor_inv_helmet_steel.png", + groups = {armor_head=1, armor_heal=0, armor_use=800, + physics_speed=-0.01, physics_gravity=0.01}, + armor_groups = {fleshy=10}, + damage_groups = {cracky=2, snappy=3, choppy=2, crumbly=1, level=2}, + }) + armor:register_armor("3d_armor:chestplate_steel", { + description = S("Steel Chestplate"), + inventory_image = "3d_armor_inv_chestplate_steel.png", + groups = {armor_torso=1, armor_heal=0, armor_use=800, + physics_speed=-0.04, physics_gravity=0.04}, + armor_groups = {fleshy=15}, + damage_groups = {cracky=2, snappy=3, choppy=2, crumbly=1, level=2}, + }) + armor:register_armor("3d_armor:leggings_steel", { + description = S("Steel Leggings"), + inventory_image = "3d_armor_inv_leggings_steel.png", + groups = {armor_legs=1, armor_heal=0, armor_use=800, + physics_speed=-0.03, physics_gravity=0.03}, + armor_groups = {fleshy=15}, + damage_groups = {cracky=2, snappy=3, choppy=2, crumbly=1, level=2}, + }) + armor:register_armor("3d_armor:boots_steel", { + description = S("Steel Boots"), + inventory_image = "3d_armor_inv_boots_steel.png", + groups = {armor_feet=1, armor_heal=0, armor_use=800, + physics_speed=-0.01, physics_gravity=0.01}, + armor_groups = {fleshy=10}, + damage_groups = {cracky=2, snappy=3, choppy=2, crumbly=1, level=2}, + }) +end + +if armor.materials.bronze then + armor:register_armor("3d_armor:helmet_bronze", { + description = S("Bronze Helmet"), + inventory_image = "3d_armor_inv_helmet_bronze.png", + groups = {armor_head=1, armor_heal=6, armor_use=400, + physics_speed=-0.01, physics_gravity=0.01}, + armor_groups = {fleshy=10}, + damage_groups = {cracky=3, snappy=2, choppy=2, crumbly=1, level=2}, + }) + armor:register_armor("3d_armor:chestplate_bronze", { + description = S("Bronze Chestplate"), + inventory_image = "3d_armor_inv_chestplate_bronze.png", + groups = {armor_torso=1, armor_heal=6, armor_use=400, + physics_speed=-0.04, physics_gravity=0.04}, + armor_groups = {fleshy=15}, + damage_groups = {cracky=3, snappy=2, choppy=2, crumbly=1, level=2}, + }) + armor:register_armor("3d_armor:leggings_bronze", { + description = S("Bronze Leggings"), + inventory_image = "3d_armor_inv_leggings_bronze.png", + groups = {armor_legs=1, armor_heal=6, armor_use=400, + physics_speed=-0.03, physics_gravity=0.03}, + armor_groups = {fleshy=15}, + damage_groups = {cracky=3, snappy=2, choppy=2, crumbly=1, level=2}, + }) + armor:register_armor("3d_armor:boots_bronze", { + description = S("Bronze Boots"), + inventory_image = "3d_armor_inv_boots_bronze.png", + groups = {armor_feet=1, armor_heal=6, armor_use=400, + physics_speed=-0.01, physics_gravity=0.01}, + armor_groups = {fleshy=10}, + damage_groups = {cracky=3, snappy=2, choppy=2, crumbly=1, level=2}, + }) +end + +if armor.materials.diamond then + armor:register_armor("3d_armor:helmet_diamond", { + description = S("Diamond Helmet"), + inventory_image = "3d_armor_inv_helmet_diamond.png", + groups = {armor_head=1, armor_heal=12, armor_use=200}, + armor_groups = {fleshy=15}, + damage_groups = {cracky=2, snappy=1, choppy=1, level=3}, + }) + armor:register_armor("3d_armor:chestplate_diamond", { + description = S("Diamond Chestplate"), + inventory_image = "3d_armor_inv_chestplate_diamond.png", + groups = {armor_torso=1, armor_heal=12, armor_use=200}, + armor_groups = {fleshy=20}, + damage_groups = {cracky=2, snappy=1, choppy=1, level=3}, + }) + armor:register_armor("3d_armor:leggings_diamond", { + description = S("Diamond Leggings"), + inventory_image = "3d_armor_inv_leggings_diamond.png", + groups = {armor_legs=1, armor_heal=12, armor_use=200}, + armor_groups = {fleshy=20}, + damage_groups = {cracky=2, snappy=1, choppy=1, level=3}, + }) + armor:register_armor("3d_armor:boots_diamond", { + description = S("Diamond Boots"), + inventory_image = "3d_armor_inv_boots_diamond.png", + groups = {armor_feet=1, armor_heal=12, armor_use=200}, + armor_groups = {fleshy=15}, + damage_groups = {cracky=2, snappy=1, choppy=1, level=3}, + }) +end + +if armor.materials.gold then + armor:register_armor("3d_armor:helmet_gold", { + description = S("Gold Helmet"), + inventory_image = "3d_armor_inv_helmet_gold.png", + groups = {armor_head=1, armor_heal=6, armor_use=300, + physics_speed=-0.02, physics_gravity=0.02}, + armor_groups = {fleshy=10}, + damage_groups = {cracky=1, snappy=2, choppy=2, crumbly=3, level=2}, + }) + armor:register_armor("3d_armor:chestplate_gold", { + description = S("Gold Chestplate"), + inventory_image = "3d_armor_inv_chestplate_gold.png", + groups = {armor_torso=1, armor_heal=6, armor_use=300, + physics_speed=-0.05, physics_gravity=0.05}, + armor_groups = {fleshy=15}, + damage_groups = {cracky=1, snappy=2, choppy=2, crumbly=3, level=2}, + }) + armor:register_armor("3d_armor:leggings_gold", { + description = S("Gold Leggings"), + inventory_image = "3d_armor_inv_leggings_gold.png", + groups = {armor_legs=1, armor_heal=6, armor_use=300, + physics_speed=-0.04, physics_gravity=0.04}, + armor_groups = {fleshy=15}, + damage_groups = {cracky=1, snappy=2, choppy=2, crumbly=3, level=2}, + }) + armor:register_armor("3d_armor:boots_gold", { + description = S("Gold Boots"), + inventory_image = "3d_armor_inv_boots_gold.png", + groups = {armor_feet=1, armor_heal=6, armor_use=300, + physics_speed=-0.02, physics_gravity=0.02}, + armor_groups = {fleshy=10}, + damage_groups = {cracky=1, snappy=2, choppy=2, crumbly=3, level=2}, + }) +end + +if armor.materials.mithril then + armor:register_armor("3d_armor:helmet_mithril", { + description = S("Mithril Helmet (Warrior)"), + inventory_image = "3d_armor_inv_helmet_mithril.png", + groups = {armor_head=1, armor_heal=12, armor_use=100}, + armor_groups = {fleshy=15}, + damage_groups = {cracky=2, snappy=1, level=3}, + }) + armor:register_armor("3d_armor:chestplate_mithril", { + description = S("Mithril Chestplate (Warrior)"), + inventory_image = "3d_armor_inv_chestplate_mithril.png", + groups = {armor_torso=1, armor_heal=12, armor_use=100}, + armor_groups = {fleshy=20}, + damage_groups = {cracky=2, snappy=1, level=3}, + }) + armor:register_armor("3d_armor:leggings_mithril", { + description = S("Mithril Leggings (Warrior)"), + inventory_image = "3d_armor_inv_leggings_mithril.png", + groups = {armor_legs=1, armor_heal=12, armor_use=100}, + armor_groups = {fleshy=20}, + damage_groups = {cracky=2, snappy=1, level=3}, + }) + armor:register_armor("3d_armor:boots_mithril", { + description = S("Mithril Boots (Warrior)"), + inventory_image = "3d_armor_inv_boots_mithril.png", + groups = {armor_feet=1, armor_heal=12, armor_use=100}, + armor_groups = {fleshy=15}, + damage_groups = {cracky=2, snappy=1, level=3}, + }) +end + +if armor.materials.crystal then + armor:register_armor("3d_armor:helmet_crystal", { + description = S("Crystal Helmet"), + inventory_image = "3d_armor_inv_helmet_crystal.png", + groups = {armor_head=1, armor_heal=12, armor_use=100, armor_fire=1}, + armor_groups = {fleshy=15}, + damage_groups = {cracky=2, snappy=1, level=3}, + }) + armor:register_armor("3d_armor:chestplate_crystal", { + description = S("Crystal Chestplate"), + inventory_image = "3d_armor_inv_chestplate_crystal.png", + groups = {armor_torso=1, armor_heal=12, armor_use=100, armor_fire=1}, + armor_groups = {fleshy=20}, + damage_groups = {cracky=2, snappy=1, level=3}, + }) + armor:register_armor("3d_armor:leggings_crystal", { + description = S("Crystal Leggings"), + inventory_image = "3d_armor_inv_leggings_crystal.png", + groups = {armor_legs=1, armor_heal=12, armor_use=100, armor_fire=1}, + armor_groups = {fleshy=20}, + damage_groups = {cracky=2, snappy=1, level=3}, + }) + armor:register_armor("3d_armor:boots_crystal", { + description = S("Crystal Boots"), + inventory_image = "3d_armor_inv_boots_crystal.png", + groups = {armor_feet=1, armor_heal=12, armor_use=100, physics_speed=1, + physics_jump=0.5, armor_fire=1}, + armor_groups = {fleshy=15}, + damage_groups = {cracky=2, snappy=1, level=3}, + }) +end + +for k, v in pairs(armor.materials) do + minetest.register_craft({ + output = "3d_armor:helmet_"..k, + recipe = { + {v, v, v}, + {v, "", v}, + {"", "", ""}, + }, + }) + minetest.register_craft({ + output = "3d_armor:chestplate_"..k, + recipe = { + {v, "", v}, + {v, v, v}, + {v, v, v}, + }, + }) + minetest.register_craft({ + output = "3d_armor:leggings_"..k, + recipe = { + {v, v, v}, + {v, "", v}, + {v, "", v}, + }, + }) + minetest.register_craft({ + output = "3d_armor:boots_"..k, + recipe = { + {v, "", v}, + {v, "", v}, + }, + }) +end diff --git a/mods/3d_armor/3d_armor/crafting_guide.txt b/mods/3d_armor/3d_armor/crafting_guide.txt index 2086f8cd..f5e94eba 100755 --- a/mods/3d_armor/3d_armor/crafting_guide.txt +++ b/mods/3d_armor/3d_armor/crafting_guide.txt @@ -17,8 +17,8 @@ Helmets: [3d_armor:helmet_bronze] X = [default:bronze_ingot] [3d_armor:helmet_diamond] X = [default:diamond] [3d_armor:helmet_gold] X = [default:gold_ingot] -[3d_armor:helmet_mithril] X = [default:mithril_ingot] -[3d_armor:helmet_crystal] X = [ethereal:crystal_ingot] * +[3d_armor:helmet_mithril] X = [default:mithril_ingot] * +[3d_armor:helmet_crystal] X = [ethereal:crystal_ingot] ** Chestplates: @@ -36,8 +36,8 @@ Chestplates: [3d_armor:chestplate_bronze] X = [default:bronze_ingot] [3d_armor:chestplate_diamond] X = [default:diamond] [3d_armor:chestplate_gold] X = [default:gold_ingot] -[3d_armor:chestplate_mithril] X = [default:mithril_ingot] -[3d_armor:chestplate_crystal] X = [ethereal:crystal_ingot] * +[3d_armor:chestplate_mithril] X = [default:mithril_ingot] * +[3d_armor:chestplate_crystal] X = [ethereal:crystal_ingot] ** Leggings: @@ -55,8 +55,8 @@ Leggings: [3d_armor:leggings_bronze] X = [default:bronze_ingot] [3d_armor:leggings_diamond] X = [default:diamond] [3d_armor:leggings_gold] X = [default:gold_ingot] -[3d_armor:leggings_mithril] X = [default:mithril_ingot] -[3d_armor:leggings_crystal] X = [ethereal:crystal_ingot] * +[3d_armor:leggings_mithril] X = [default:mithril_ingot] * +[3d_armor:leggings_crystal] X = [ethereal:crystal_ingot] ** Boots: @@ -72,7 +72,8 @@ Boots: [3d_armor:boots_bronze] X = [default:bronze_ingot [3d_armor:boots_diamond] X = [default:diamond] [3d_armor:boots_gold] X = [default:gold_ingot] -[3d_armor:boots_mithril] X = [default:mithril_ingot] -[3d_armor:boots_crystal] X = [ethereal:crystal_ingot] * +[3d_armor:boots_mithril] X = [default:mithril_ingot] * +[3d_armor:boots_crystal] X = [ethereal:crystal_ingot] ** - * Requires ethereal mod by Chinchow & TenPlus1 - https://github.com/tenplus1/ethereal + * Requires moreores mod by Calinou - https://forum.minetest.net/viewtopic.php?id=549 +** Requires ethereal mod by Chinchow & TenPlus1 - https://github.com/tenplus1/ethereal diff --git a/mods/3d_armor/3d_armor/depends.txt b/mods/3d_armor/3d_armor/depends.txt deleted file mode 100755 index 0dd76f9f..00000000 --- a/mods/3d_armor/3d_armor/depends.txt +++ /dev/null @@ -1,7 +0,0 @@ -default -player_physics -inventory_plus? -unified_inventory? -fire? -ethereal? -bakedclay? diff --git a/mods/3d_armor/3d_armor/description.txt b/mods/3d_armor/3d_armor/description.txt deleted file mode 100644 index b0a9b0a5..00000000 --- a/mods/3d_armor/3d_armor/description.txt +++ /dev/null @@ -1 +0,0 @@ -Adds craftable armor that is visible to other players. diff --git a/mods/3d_armor/3d_armor/init.lua b/mods/3d_armor/3d_armor/init.lua index f8aa8626..0f541bcb 100755 --- a/mods/3d_armor/3d_armor/init.lua +++ b/mods/3d_armor/3d_armor/init.lua @@ -1,254 +1,513 @@ -ARMOR_MOD_NAME = minetest.get_current_modname() -dofile(minetest.get_modpath(ARMOR_MOD_NAME).."/armor.lua") -dofile(minetest.get_modpath(ARMOR_MOD_NAME).."/admin.lua") +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 -if ARMOR_MATERIALS.wood then - minetest.register_tool("3d_armor:helmet_wood", { - description = "Wood Helmet", - inventory_image = "3d_armor_inv_helmet_wood.png", - groups = {armor_head=1, armor_heal=0, armor_use=2000}, - wear = 0, - }) - minetest.register_tool("3d_armor:chestplate_wood", { - description = "Wood Chestplate", - inventory_image = "3d_armor_inv_chestplate_wood.png", - groups = {armor_torso=3, armor_heal=0, armor_use=2000}, - wear = 0, - }) - minetest.register_tool("3d_armor:leggings_wood", { - description = "Wood Leggings", - inventory_image = "3d_armor_inv_leggings_wood.png", - groups = {armor_legs=3, armor_heal=0, armor_use=2000}, - wear = 0, - }) - minetest.register_tool("3d_armor:boots_wood", { - description = "Wood Boots", - inventory_image = "3d_armor_inv_boots_wood.png", - groups = {armor_feet=1, armor_heal=0, armor_use=2000}, - wear = 0, - }) +-- support for i18n +armor_i18n = { } +armor_i18n.gettext, armor_i18n.ngettext = dofile(modpath.."/intllib.lua") + +-- local functions +local S = armor_i18n.gettext +local F = minetest.formspec_escape + +dofile(modpath.."/api.lua") +local armors_no_shields = { ["3d_armor:helmet_hardenedleather"] = true,["3d_armor:chestplate_hardenedleather"] = true, + ["3d_armor:leggings_hardenedleather"] = true,["3d_armor:boots_hardenedleather"] = true, + ["3d_armor:helmet_reinforcedleather"] = true,["3d_armor:chestplate_reinforcedleather"] = true, + ["3d_armor:leggings_reinforcedleather"] = true,["3d_armor:boots_reinforcedleather"] = true, +} -- modif MFF (crabman/24/06/2015) + + +-- Legacy Config Support + +local input = io.open(modpath.."/armor.conf", "r") +if input then + dofile(modpath.."/armor.conf") + input:close() + input = nil +end +input = io.open(worldpath.."/armor.conf", "r") +if input then + dofile(worldpath.."/armor.conf") + input:close() + input = nil +end +for name, _ in pairs(armor.config) do + local global = "ARMOR_"..name:upper() + if minetest.global_exists(global) then + armor.config[name] = _G[global] + end +end +if minetest.global_exists("ARMOR_MATERIALS") then + armor.materials = table.copy(ARMOR_MATERIALS) +end +if minetest.global_exists("ARMOR_FIRE_NODES") then + armor.fire_nodes = table.copy(ARMOR_FIRE_NODES) end -if ARMOR_MATERIALS.cactus then - minetest.register_tool("3d_armor:helmet_cactus", { - description = "Cactus Helmet", - inventory_image = "3d_armor_inv_helmet_cactus.png", - groups = {armor_head=3, armor_heal=0, armor_use=1000}, - wear = 0, - }) - minetest.register_tool("3d_armor:chestplate_cactus", { - description = "Cactus Chestplate", - inventory_image = "3d_armor_inv_chestplate_cactus.png", - groups = {armor_torso=5, armor_heal=0, armor_use=1000}, - wear = 0, - }) - minetest.register_tool("3d_armor:leggings_cactus", { - description = "Cactus Leggings", - inventory_image = "3d_armor_inv_leggings_cactus.png", - groups = {armor_legs=5, armor_heal=0, armor_use=1000}, - wear = 0, - }) - minetest.register_tool("3d_armor:boots_cactus", { - description = "Cactus Boots", - inventory_image = "3d_armor_inv_boots_cactus.png", - groups = {armor_feet=3, armor_heal=0, armor_use=1000}, - wear = 0, - }) +-- Load Configuration + +for name, config in pairs(armor.config) do + local setting = minetest.settings:get("armor_"..name) + if type(config) == "number" then + setting = tonumber(setting) + elseif type(config) == "boolean" then + setting = minetest.settings:get_bool("armor_"..name) + end + if setting ~= nil then + armor.config[name] = setting + end +end +for material, _ in pairs(armor.materials) do + local key = "material_"..material + if armor.config[key] == false then + armor.materials[material] = nil + end end -if ARMOR_MATERIALS.steel then - minetest.register_tool("3d_armor:helmet_steel", { - description = "Steel Helmet", - inventory_image = "3d_armor_inv_helmet_steel.png", - groups = {armor_head=4, armor_heal=0, armor_use=500}, - wear = 0, - }) - minetest.register_tool("3d_armor:chestplate_steel", { - description = "Steel Chestplate", - inventory_image = "3d_armor_inv_chestplate_steel.png", - groups = {armor_torso=8, armor_heal=0, armor_use=500}, - wear = 0, - }) - minetest.register_tool("3d_armor:leggings_steel", { - description = "Steel Leggings", - inventory_image = "3d_armor_inv_leggings_steel.png", - groups = {armor_legs=8, armor_heal=0, armor_use=500}, - wear = 0, - }) - minetest.register_tool("3d_armor:boots_steel", { - description = "Steel Boots", - inventory_image = "3d_armor_inv_boots_steel.png", - groups = {armor_feet=4, armor_heal=0, armor_use=500}, - wear = 0, - }) +-- Mod Compatibility + +if minetest.get_modpath("technic") then + armor.formspec = armor.formspec.. + "label[5,2.5;"..F(S("Radiation"))..": armor_group_radiation]" + armor:register_armor_group("radiation") +end +local skin_mods = {"skins", "u_skins", "simple_skins", "wardrobe"} +for _, mod in pairs(skin_mods) do + local path = minetest.get_modpath(mod) + if path then + local dir_list = minetest.get_dir_list(path.."/textures") + for _, fn in pairs(dir_list) do + if fn:find("_preview.png$") then + armor:add_preview(fn) + end + end + armor.skin_mod = mod + end +end +if not minetest.get_modpath("moreores") then + armor.materials.mithril = nil +end +if not minetest.get_modpath("ethereal") then + armor.materials.crystal = nil end -if ARMOR_MATERIALS.bronze then - minetest.register_tool("3d_armor:helmet_bronze", { - description = "Bronze Helmet", - inventory_image = "3d_armor_inv_helmet_bronze.png", - groups = {armor_head=5, armor_heal=0, armor_use=250}, - wear = 0, - }) - minetest.register_tool("3d_armor:chestplate_bronze", { - description = "Bronze Chestplate", - inventory_image = "3d_armor_inv_chestplate_bronze.png", - groups = {armor_torso=9, armor_heal=0, armor_use=250}, - wear = 0, - }) - minetest.register_tool("3d_armor:leggings_bronze", { - description = "Bronze Leggings", - inventory_image = "3d_armor_inv_leggings_bronze.png", - groups = {armor_legs=9, armor_heal=0, armor_use=250}, - wear = 0, - }) - minetest.register_tool("3d_armor:boots_bronze", { - description = "Bronze Boots", - inventory_image = "3d_armor_inv_boots_bronze.png", - groups = {armor_feet=5, armor_heal=0, armor_use=250}, - wear = 0, - }) +dofile(modpath.."/armor.lua") + +-- Armor Initialization + +armor.formspec = armor.formspec.. + "label[5,1;"..F(S("Level"))..": armor_level]".. + "label[5,1.5;"..F(S("Heal"))..": armor_attr_heal]" +if armor.config.fire_protect then + armor.formspec = armor.formspec.."label[5,2;"..F(S("Fire"))..": armor_attr_fire]" +end +armor:register_on_destroy(function(player, index, stack) + local name = player:get_player_name() + local def = stack:get_definition() + if name and def and def.description then + minetest.chat_send_player(name, S("Your @1 got destroyed!", def.description)) + end +end) + +local function validate_armor_inventory(player) + -- Workaround for detached inventory swap exploit + local _, inv = armor:get_valid_player(player, "[validate_armor_inventory]") + if not inv then + return + end + local armor_prev = {} + local attribute_meta = player:get_meta() -- I know, the function's name is weird but let it be like that. ;) + local armor_list_string = attribute_meta:get_string("3d_armor_inventory") + if armor_list_string then + local armor_list = armor:deserialize_inventory_list(armor_list_string) + for i, stack in ipairs(armor_list) do + if stack:get_count() > 0 then + armor_prev[stack:get_name()] = i + end + end + end + local elements = {} + local player_inv = player:get_inventory() + for i = 1, 6 do + local stack = inv:get_stack("armor", i) + if stack:get_count() > 0 then + local item = stack:get_name() + local element = armor:get_element(item) + if element and not elements[element] then + if armor_prev[item] then + armor_prev[item] = nil + else + -- Item was not in previous inventory + armor:run_callbacks("on_equip", player, i, stack) + end + elements[element] = true; + else + inv:remove_item("armor", stack) + -- The following code returns invalid items to the player's main + -- inventory but could open up the possibity for a hacked client + -- to receive items back they never really had. I am not certain + -- so remove the is_singleplayer check at your own risk :] + if minetest.is_singleplayer() and player_inv and + player_inv:room_for_item("main", stack) then + player_inv:add_item("main", stack) + end + end + end + end + for item, i in pairs(armor_prev) do + local stack = ItemStack(item) + -- Previous item is not in current inventory + armor:run_callbacks("on_unequip", player, i, stack) + end end -if ARMOR_MATERIALS.diamond then - minetest.register_tool("3d_armor:helmet_diamond", { - description = "Diamond Helmet", - inventory_image = "3d_armor_inv_helmet_diamond.png", - groups = {armor_head=7, armor_heal=0, armor_use=100}, - wear = 0, - }) - minetest.register_tool("3d_armor:chestplate_diamond", { - description = "Diamond Chestplate", - inventory_image = "3d_armor_inv_chestplate_diamond.png", - groups = {armor_torso=13, armor_heal=0, armor_use=100}, - wear = 0, - }) - minetest.register_tool("3d_armor:leggings_diamond", { - description = "Diamond Leggings", - inventory_image = "3d_armor_inv_leggings_diamond.png", - groups = {armor_legs=13, armor_heal=0, armor_use=100}, - wear = 0, - }) - minetest.register_tool("3d_armor:boots_diamond", { - description = "Diamond Boots", - inventory_image = "3d_armor_inv_boots_diamond.png", - groups = {armor_feet=7, armor_heal=0, armor_use=100}, - wear = 0, - }) +local function init_player_armor(player) + local name = player:get_player_name() + local pos = player:get_pos() + if not name or not pos then + return false + end + local armor_inv = minetest.create_detached_inventory(name.."_armor", { + on_put = function(inv, listname, index, stack, player) + validate_armor_inventory(player) + armor:save_armor_inventory(player) + armor:set_player_armor(player) + end, + on_take = function(inv, listname, index, stack, player) + validate_armor_inventory(player) + armor:save_armor_inventory(player) + armor:set_player_armor(player) + end, + on_move = function(inv, from_list, from_index, to_list, to_index, count, player) + validate_armor_inventory(player) + armor:save_armor_inventory(player) + armor:set_player_armor(player) + end, + allow_put = function(inv, listname, index, stack, player) + -- DEBUT modif MFF (crabman/24/06/2015) + local name = stack:get_name() + local player_inv = player:get_inventory() + local size = player_inv:get_size(listname) + if not ( (name:split(":")[1] == "3d_armor" and stack:get_definition().groups["armor_heal"]) or name:split(":")[1] == "shields") then + return 0 + end + + -- if player class != item class + if not pclasses.api.util.can_have_item(player:get_player_name(), name) then + return 0 + end + + -- MFF (crabman/27/11/2015) no same item type. *helmet* + local ptype = name:split(":")[2]:split("_")[1] + if ptype == "enchanted" then + ptype = name:split(":")[2]:split("_")[2] + end + for i=1, size do + local stack = player_inv:get_stack(listname, i) + if stack:get_count() > 0 then + if stack:get_name():find(ptype) then + return 0 + end + end + end + + if name:find("shield") then + for i=1, size do + local stack = player_inv:get_stack(listname, i) + if stack:get_count() > 0 then + if armors_no_shields[stack:get_name()] ~= nil then + return 0 + end + end + end + else + if armors_no_shields[name] ~= nil then + for i=1, size do + local stack = player_inv:get_stack(listname, i) + if stack:get_count() > 0 then + if stack:get_name():find("shields:") then + return 0 + end + end + end + end + end + -- FIN modif MFF (crabman/24/06/2015) + return 1 + end, + allow_take = function(inv, listname, index, stack, player) + return stack:get_count() + end, + allow_move = function(inv, from_list, from_index, to_list, to_index, count, player) + return count + end, + }, name) + armor_inv:set_size("armor", 6) + if not armor:load_armor_inventory(player) and armor.migrate_old_inventory then + local player_inv = player:get_inventory() + player_inv:set_size("armor", 6) + for i=1, 6 do + local stack = player_inv:get_stack("armor", i) + armor_inv:set_stack("armor", i, stack) + end + armor:save_armor_inventory(player) + player_inv:set_size("armor", 0) + end + for i=1, 6 do + local stack = armor_inv:get_stack("armor", i) + if stack:get_count() > 0 then + armor:run_callbacks("on_equip", player, i, stack) + end + end + armor.def[name] = { + init_time = minetest.get_gametime(), + level = 0, + state = 0, + count = 0, + groups = {}, + } + for _, phys in pairs(armor.physics) do + armor.def[name][phys] = 1 + end + for _, attr in pairs(armor.attributes) do + armor.def[name][attr] = 0 + end + for group, _ in pairs(armor.registered_groups) do + armor.def[name].groups[group] = 0 + end + local skin = armor:get_player_skin(name) + armor.textures[name] = { + skin = skin, + armor = "3d_armor_trans.png", + wielditem = "3d_armor_trans.png", + preview = armor.default_skin.."_preview.png", + } + local texture_path = minetest.get_modpath("player_textures") + if texture_path then + local dir_list = minetest.get_dir_list(texture_path.."/textures") + for _, fn in pairs(dir_list) do + if fn == "player_"..name..".png" then + armor.textures[name].skin = fn + break + end + end + end + armor:set_player_armor(player) + return true end -if ARMOR_MATERIALS.gold then - minetest.register_tool("3d_armor:helmet_gold", { - description = "Gold Helmet", - inventory_image = "3d_armor_inv_helmet_gold.png", - groups = {armor_head=5, armor_heal=0, armor_use=200}, - wear = 0, - }) - minetest.register_tool("3d_armor:chestplate_gold", { - description = "Gold Chestplate", - inventory_image = "3d_armor_inv_chestplate_gold.png", - groups = {armor_torso=11, armor_heal=0, armor_use=200}, - wear = 0, - }) - minetest.register_tool("3d_armor:leggings_gold", { - description = "Gold Leggings", - inventory_image = "3d_armor_inv_leggings_gold.png", - groups = {armor_legs=11, armor_heal=0, armor_use=200}, - wear = 0, - }) - minetest.register_tool("3d_armor:boots_gold", { - description = "Gold Boots", - inventory_image = "3d_armor_inv_boots_gold.png", - groups = {armor_feet=5, armor_heal=0, armor_use=200}, - wear = 0, - }) +-- Armor Player Model + +default.player_register_model("3d_armor_character.b3d", { + animation_speed = 30, + textures = { + armor.default_skin..".png", + "3d_armor_trans.png", + "3d_armor_trans.png", + }, + animations = { + stand = {x=0, y=79}, + lay = {x=162, y=166}, + walk = {x=168, y=187}, + mine = {x=189, y=198}, + walk_mine = {x=200, y=219}, + sit = {x=81, y=160}, + }, +}) + +minetest.register_on_player_receive_fields(function(player, formname, fields) + local name = armor:get_valid_player(player, "[on_player_receive_fields]") + if not name then + return + end + for field, _ in pairs(fields) do + if string.find(field, "skins_set") then + minetest.after(0, function(player) + local skin = armor:get_player_skin(name) + armor.textures[name].skin = skin + armor:set_player_armor(player) + end, player) + end + end +end) + +minetest.register_on_joinplayer(function(player) + default.player_set_model(player, "3d_armor_character.b3d") + minetest.after(0, function(player) + if init_player_armor(player) == false then + pending_players[player] = 0 + end + end, player) +end) + +minetest.register_on_leaveplayer(function(player) + local name = player:get_player_name() + if name then + 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 + minetest.register_on_dieplayer(function(player) + local name, armor_inv = armor:get_valid_player(player, "[on_dieplayer]") + if not name then + return + end + local drop = {} + 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) + end + end + armor:save_armor_inventory(player) + armor:set_player_armor(player) + local pos = player:get_pos() + if pos and armor.config.destroy == false then + minetest.after(armor.config.bones_delay, function() + local meta = nil + local maxp = vector.add(pos, 8) + local minp = vector.subtract(pos, 8) + local bones = minetest.find_nodes_in_area(minp, maxp, {"bones:bones"}) + for _, p in pairs(bones) do + local m = minetest.get_meta(p) + if m:get_string("owner") == name then + meta = m + break + end + end + if meta then + local inv = meta:get_inventory() + for _,stack in ipairs(drop) do + if inv:room_for_item("main", stack) then + inv:add_item("main", stack) + else + armor.drop_armor(pos, stack) + end + end + else + for _,stack in ipairs(drop) do + armor.drop_armor(pos, stack) + end + end + end) + end + end) end -if ARMOR_MATERIALS.mithril then - minetest.register_tool("3d_armor:helmet_mithril", { - description = "Mithril Helmet (Warrior)", - inventory_image = "3d_armor_inv_helmet_mithril.png", - groups = {armor_head=9, armor_heal=0, armor_use=50}, - wear = 0, - }) - minetest.register_tool("3d_armor:chestplate_mithril", { - description = "Mithril Chestplate (Warrior)", - inventory_image = "3d_armor_inv_chestplate_mithril.png", - groups = {armor_torso=15, armor_heal=0, armor_use=50}, - wear = 0, - }) - minetest.register_tool("3d_armor:leggings_mithril", { - description = "Mithril Leggings (Warrior)", - inventory_image = "3d_armor_inv_leggings_mithril.png", - groups = {armor_legs=15, armor_heal=0, armor_use=50}, - wear = 0, - }) - minetest.register_tool("3d_armor:boots_mithril", { - description = "Mithril Boots (Warrior)", - inventory_image = "3d_armor_inv_boots_mithril.png", - groups = {armor_feet=9, armor_heal=0, armor_use=50}, - wear = 0, - }) +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 name then + armor:punch(player, hitter, time_from_last_punch, tool_capabilities) + last_punch_time[name] = minetest.get_gametime() + end + end) end -if ARMOR_MATERIALS.crystal then - minetest.register_tool("3d_armor:helmet_crystal", { - description = "Crystal Helmet", - inventory_image = "3d_armor_inv_helmet_crystal.png", - groups = {armor_head=15, armor_heal=0, armor_use=50, armor_fire=1}, - wear = 0, - }) - minetest.register_tool("3d_armor:chestplate_crystal", { - description = "Crystal Chestplate", - inventory_image = "3d_armor_inv_chestplate_crystal.png", - groups = {armor_torso=20, armor_heal=0, armor_use=50, armor_fire=1}, - wear = 0, - }) - minetest.register_tool("3d_armor:leggings_crystal", { - description = "Crystal Leggings", - inventory_image = "3d_armor_inv_leggings_crystal.png", - groups = {armor_legs=20, armor_heal=0, armor_use=50, armor_fire=1}, - wear = 0, - }) - minetest.register_tool("3d_armor:boots_crystal", { - description = "Crystal Boots", - inventory_image = "3d_armor_inv_boots_crystal.png", - groups = {armor_feet=15, armor_heal=0, armor_use=50, physics_speed=1, physics_jump=0.5, armor_fire=1}, - wear = 0, - }) +minetest.register_on_player_hpchange(function(player, hp_change) + if player and hp_change < 0 then + local name = player:get_player_name() + if name then + local heal = armor.def[name].heal + if heal >= math.random(100) then + hp_change = 0 + end + -- check if armor damage was handled by fire or on_punchplayer + local time = last_punch_time[name] or 0 + if time == 0 or time + 1 < minetest.get_gametime() then + armor:punch(player) + end + end + end + return hp_change +end, true) + +minetest.register_globalstep(function(dtime) + timer = timer + dtime + if timer > armor.config.init_delay then + 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", S("3d_armor: Failed to initialize player")) + remove = true + end + if remove == true then + pending_players[player] = nil + end + end + timer = 0 + end +end) + +-- Fire Protection and water breathing, added by TenPlus1. + +if armor.config.fire_protect == true then + -- override hot nodes so they do not hurt player anywhere but mod + for _, row in pairs(armor.fire_nodes) do + if minetest.registered_nodes[row[1]] then + minetest.override_item(row[1], {damage_per_second = 0}) + end + end +else + print (S("[3d_armor] Fire Nodes disabled")) end -for k, v in pairs(ARMOR_MATERIALS) do - minetest.register_craft({ - output = "3d_armor:helmet_"..k, - recipe = { - {v, v, v}, - {v, "", v}, - {"", "", ""}, - }, - }) - minetest.register_craft({ - output = "3d_armor:chestplate_"..k, - recipe = { - {v, "", v}, - {v, v, v}, - {v, v, v}, - }, - }) - minetest.register_craft({ - output = "3d_armor:leggings_"..k, - recipe = { - {v, v, v}, - {v, "", v}, - {v, "", v}, - }, - }) - minetest.register_craft({ - output = "3d_armor:boots_"..k, - recipe = { - {v, "", v}, - {v, "", v}, - }, - }) +if armor.config.water_protect == true or armor.config.fire_protect == true then + minetest.register_globalstep(function(dtime) + armor.timer = armor.timer + dtime + if armor.timer < armor.config.update_time then + return + end + for _,player in pairs(minetest.get_connected_players()) do + local name = player:get_player_name() + local pos = player:get_pos() + local hp = player:get_hp() + if not name or not pos or not hp then + return + end + -- water breathing + if armor.config.water_protect == true then + if armor.def[name].water > 0 and + player:get_breath() < 10 then + player:set_breath(10) + end + end + -- fire protection + if armor.config.fire_protect == true then + local fire_damage = true + pos.y = pos.y + 1.4 -- head level + local node_head = minetest.get_node(pos).name + pos.y = pos.y - 1.2 -- feet level + local node_feet = minetest.get_node(pos).name + -- is player inside a hot node? + for _, row in pairs(armor.fire_nodes) do + -- check fire protection, if not enough then get hurt + if row[1] == node_head or row[1] == node_feet then + if fire_damage == true then + armor:punch(player, "fire") + last_punch_time[name] = minetest.get_gametime() + fire_damage = false + end + if hp > 0 and armor.def[name].fire < row[2] then + hp = hp - row[3] * armor.config.update_time + player:set_hp(hp) + break + end + end + end + end + end + armor.timer = 0 + end) end - diff --git a/mods/3d_armor/3d_armor/intllib.lua b/mods/3d_armor/3d_armor/intllib.lua new file mode 100644 index 00000000..6669d720 --- /dev/null +++ b/mods/3d_armor/3d_armor/intllib.lua @@ -0,0 +1,45 @@ + +-- Fallback functions for when `intllib` is not installed. +-- Code released under Unlicense . + +-- Get the latest version of this file at: +-- https://raw.githubusercontent.com/minetest-mods/intllib/master/lib/intllib.lua + +local function format(str, ...) + local args = { ... } + local function repl(escape, open, num, close) + if escape == "" then + local replacement = tostring(args[tonumber(num)]) + if open == "" then + replacement = replacement..close + end + return replacement + else + return "@"..open..num..close + end + end + return (str:gsub("(@?)@(%(?)(%d+)(%)?)", repl)) +end + +local gettext, ngettext +if minetest.get_modpath("intllib") then + if intllib.make_gettext_pair then + -- New method using gettext. + gettext, ngettext = intllib.make_gettext_pair() + else + -- Old method using text files. + gettext = intllib.Getter() + end +end + +-- Fill in missing functions. + +gettext = gettext or function(msgid, ...) + return format(msgid, ...) +end + +ngettext = ngettext or function(msgid, msgid_plural, n, ...) + return format(n==1 and msgid or msgid_plural, ...) +end + +return gettext, ngettext diff --git a/mods/3d_armor/3d_armor/locale/es.po b/mods/3d_armor/3d_armor/locale/es.po new file mode 100644 index 00000000..8eeaf6ef --- /dev/null +++ b/mods/3d_armor/3d_armor/locale/es.po @@ -0,0 +1,384 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-08-06 18:20+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: ../3d_armor/api.lua +msgid "3d_armor: Player name is nil @1" +msgstr "3d_armor: El nombre del jugador es nulo @1" + +#: ../3d_armor/api.lua +msgid "3d_armor: Player inventory is nil @1" +msgstr "3d_armor: El inventario del jugador es nulo @1" + +#: ../3d_armor/api.lua +msgid "3d_armor: Detached armor inventory is nil @1" +msgstr "3d_armor: La armadura desconectada es nula @1" + +#: ../3d_armor/api.lua +msgid "3d_armor: Player reference is nil @1" +msgstr "3d_armor: La referencia del jugador es nula @1" + +#: ../3d_armor/armor.lua +msgid "Admin Helmet" +msgstr "Casco de admin" + +#: ../3d_armor/armor.lua +msgid "Admin Chestplate" +msgstr "Peto de admin" + +#: ../3d_armor/armor.lua +msgid "Admin Leggings" +msgstr "Polainas de admin" + +#: ../3d_armor/armor.lua +msgid "Admin Boots" +msgstr "Botas de admin" + +#: ../3d_armor/armor.lua +msgid "Wood Helmet" +msgstr "Casco de madera" + +#: ../3d_armor/armor.lua +msgid "Wood Chestplate" +msgstr "Peto de madera" + +#: ../3d_armor/armor.lua +msgid "Wood Leggings" +msgstr "Polainas de madera" + +#: ../3d_armor/armor.lua +msgid "Wood Boots" +msgstr "Botas de madera" + +#: ../3d_armor/armor.lua +msgid "Cactus Helmet" +msgstr "Casco de cactus" + +#: ../3d_armor/armor.lua +msgid "Cactus Chestplate" +msgstr "Peto de cactus" + +#: ../3d_armor/armor.lua +msgid "Cactus Leggings" +msgstr "Polainas de cactus" + +#: ../3d_armor/armor.lua +msgid "Cactus Boots" +msgstr "Botas de cactus" + +#: ../3d_armor/armor.lua +msgid "Steel Helmet" +msgstr "Casco de acero" + +#: ../3d_armor/armor.lua +msgid "Steel Chestplate" +msgstr "Peto de acero" + +#: ../3d_armor/armor.lua +msgid "Steel Leggings" +msgstr "Polainas de acero" + +#: ../3d_armor/armor.lua +msgid "Steel Boots" +msgstr "Botas de acero" + +#: ../3d_armor/armor.lua +msgid "Bronze Helmet" +msgstr "Casco de bronce" + +#: ../3d_armor/armor.lua +msgid "Bronze Chestplate" +msgstr "Peto de bronce" + +#: ../3d_armor/armor.lua +msgid "Bronze Leggings" +msgstr "Polainas de bronce" + +#: ../3d_armor/armor.lua +msgid "Bronze Boots" +msgstr "Botas de bronce" + +#: ../3d_armor/armor.lua +msgid "Diamond Helmet" +msgstr "Casco de diamante" + +#: ../3d_armor/armor.lua +msgid "Diamond Chestplate" +msgstr "Peto de diamante" + +#: ../3d_armor/armor.lua +msgid "Diamond Leggings" +msgstr "Polainas de diamante" + +#: ../3d_armor/armor.lua +msgid "Diamond Boots" +msgstr "Botas de diamante" + +#: ../3d_armor/armor.lua +msgid "Gold Helmet" +msgstr "Casco de oro" + +#: ../3d_armor/armor.lua +msgid "Gold Chestplate" +msgstr "Peto de oro" + +#: ../3d_armor/armor.lua +msgid "Gold Leggings" +msgstr "Polainas de oro" + +#: ../3d_armor/armor.lua +msgid "Gold Boots" +msgstr "Botas de oro" + +#: ../3d_armor/armor.lua +msgid "Mithril Helmet" +msgstr "Casco de mitrilo" + +#: ../3d_armor/armor.lua +msgid "Mithril Chestplate" +msgstr "Peto de mitrilo" + +#: ../3d_armor/armor.lua +msgid "Mithril Leggings" +msgstr "Polainas de mitrilo" + +#: ../3d_armor/armor.lua +msgid "Mithril Boots" +msgstr "Botas de mitrilo" + +#: ../3d_armor/armor.lua +msgid "Crystal Helmet" +msgstr "Casco de cristal" + +#: ../3d_armor/armor.lua +msgid "Crystal Chestplate" +msgstr "Peto de cristal" + +#: ../3d_armor/armor.lua +msgid "Crystal Leggings" +msgstr "Polainas de cristal" + +#: ../3d_armor/armor.lua +msgid "Crystal Boots" +msgstr "Botas de cristal" + +#: ../3d_armor/init.lua ../3d_armor_ui/init.lua +msgid "Radiation" +msgstr "Radiación" + +#: ../3d_armor/init.lua ../3d_armor_ui/init.lua +msgid "Level" +msgstr "Nivel" + +#: ../3d_armor/init.lua ../3d_armor_ui/init.lua +msgid "Heal" +msgstr "Salud" + +#: ../3d_armor/init.lua ../3d_armor_ui/init.lua +msgid "Fire" +msgstr "Fuego" + +#: ../3d_armor/init.lua +msgid "Your @1 got destroyed!" +msgstr "¡Tu @1 fue destruído!" + +#: ../3d_armor/init.lua +msgid "3d_armor: Failed to initialize player" +msgstr "3d_armor: Fallo en la inicialización del jugador" + +#: ../3d_armor/init.lua +msgid "[3d_armor] Fire Nodes disabled" +msgstr "[3d_armor] Nodos de fuego desabilitados" + +#: ../3d_armor_ip/init.lua +msgid "3d_armor_ip: Mod loaded but unused." +msgstr "3d_armor_ip: Mod cargado, pero sin ser usado." + +#: ../3d_armor_ip/init.lua +msgid "Back" +msgstr "Volver" + +#: ../3d_armor_ip/init.lua ../3d_armor_sfinv/init.lua ../3d_armor_ui/init.lua +msgid "Armor" +msgstr "Armadura" + +#: ../3d_armor_sfinv/init.lua +msgid "3d_armor_sfinv: Mod loaded but unused." +msgstr "3d_armor_sfinv: Mod cargado, pero sin ser usado." + +#: ../3d_armor_stand/init.lua +msgid "Armor stand top" +msgstr "Parte arriba maniquí armadura" + +#: ../3d_armor_stand/init.lua +msgid "Armor stand" +msgstr "Maniquí para armadura" + +#: ../3d_armor_stand/init.lua +msgid "Armor Stand" +msgstr "Maniquí para armadura" + +#: ../3d_armor_stand/init.lua +msgid "Locked Armor stand" +msgstr "Maniquí para armadura (bloqueado)" + +#: ../3d_armor_stand/init.lua +msgid "Armor Stand (owned by @1)" +msgstr "Maniquí para armadura (propiedad de @1)" + +#: ../3d_armor_ui/init.lua +msgid "3d_armor_ui: Mod loaded but unused." +msgstr "3d_armor_ui: Mod cargado, pero sin ser usado." + +#: ../3d_armor_ui/init.lua +msgid "3d Armor" +msgstr "Armadura 3d" + +#: ../3d_armor_ui/init.lua +msgid "Armor not initialized!" +msgstr "¡Armadura no inicializada!" + +#: ../hazmat_suit/init.lua +msgid "hazmat_suit: Mod loaded but unused." +msgstr "hazmat_suit: Mod cargado, pero sin ser usado." + +#: ../hazmat_suit/init.lua +msgid "Hazmat Helmet" +msgstr "Casco de hazmat" + +#: ../hazmat_suit/init.lua +msgid "Hazmat Chestplate" +msgstr "Peto de hazmat" + +#: ../hazmat_suit/init.lua +msgid "Hazmat Sleeve" +msgstr "Manga de hazmat" + +#: ../hazmat_suit/init.lua +msgid "Hazmat Leggins" +msgstr "Polainas de hazmat" + +#: ../hazmat_suit/init.lua +msgid "Hazmat Boots" +msgstr "Botas de hazmat" + +#: ../hazmat_suit/init.lua +msgid "Hazmat Suit" +msgstr "Traje de hazmat" + +#: ../shields/init.lua +msgid "Admin Shield" +msgstr "Escudo de admin" + +#: ../shields/init.lua +msgid "Wooden Shield" +msgstr "Escudo de madera" + +#: ../shields/init.lua +msgid "Enhanced Wood Shield" +msgstr "Escudo de madera mejorado" + +#: ../shields/init.lua +msgid "Cactus Shield" +msgstr "Escudo de cactus" + +#: ../shields/init.lua +msgid "Enhanced Cactus Shield" +msgstr "Escudo de cactus mejorado" + +#: ../shields/init.lua +msgid "Steel Shield" +msgstr "Escudo de acero" + +#: ../shields/init.lua +msgid "Bronze Shield" +msgstr "Escudo de bronce" + +#: ../shields/init.lua +msgid "Diamond Shield" +msgstr "Escudo de diamante" + +#: ../shields/init.lua +msgid "Gold Shield" +msgstr "Escudo de oro" + +#: ../shields/init.lua +msgid "Mithril Shield" +msgstr "Escudo de mitrilo" + +#: ../shields/init.lua +msgid "Crystal Shield" +msgstr "Escudo de cristal" + +#: ../technic_armor/init.lua +msgid "technic_armor: Mod loaded but unused." +msgstr "technic_armor: Mod cargado, pero no usado." + +#: ../technic_armor/init.lua +msgid "Lead" +msgstr "Plomo" + +#: ../technic_armor/init.lua +msgid "Brass" +msgstr "Latón" + +#: ../technic_armor/init.lua +msgid "Cast Iron" +msgstr "Hierro fundido" + +#: ../technic_armor/init.lua +msgid "Carbon Steel" +msgstr "Acero carbono" + +#: ../technic_armor/init.lua +msgid "Stainless Steel" +msgstr "Acero inoxidable" + +#: ../technic_armor/init.lua +msgid "Tin" +msgstr "Estaño" + +#: ../technic_armor/init.lua +msgid "Silver" +msgstr "Plata" + +#: ../technic_armor/init.lua +msgid "Helmet" +msgstr "Casco" + +#: ../technic_armor/init.lua +msgid "Chestplate" +msgstr "Peto" + +#: ../technic_armor/init.lua +msgid "Leggins" +msgstr "Polainas" + +#: ../technic_armor/init.lua +msgid "Boots" +msgstr "Botas" + +#: ../technic_armor/init.lua +msgid "Shield" +msgstr "Escudo" + +#. Translators: @1 stands for material and @2 for part of the armor, so that you could use a conjunction if in your language part name comes first then material (e.g. in french 'Silver Boots' is translated in 'Bottes en argent' by using '@2 en @1' as translated string) +#: ../technic_armor/init.lua +msgid "@1 @2" +msgstr "@2 de @1" diff --git a/mods/3d_armor/3d_armor/locale/fr.po b/mods/3d_armor/3d_armor/locale/fr.po new file mode 100644 index 00000000..f2d258f4 --- /dev/null +++ b/mods/3d_armor/3d_armor/locale/fr.po @@ -0,0 +1,295 @@ +# French translation for 3D ARMOR MOD +# Copyright (C) 2018 by Stuart Jones +# This file is distributed under the same license as the 3D ARMOR MOD package. +# fat115 , 2017. +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-07-23 21:24+0200\n" +"PO-Revision-Date: 2018-07-23 21:30+0200\n" +"Last-Translator: fat115 \n" +"Language-Team: \n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.8.12\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: ../3d_armor/api.lua +msgid "3d_armor: Player reference is nil @1" +msgstr "3d_armor : Référence au joueur non trouvée @1" + +#: ../3d_armor/api.lua +msgid "3d_armor: Player name is nil @1" +msgstr "3d_armor : Nom du joueur non trouvé @1" + +#: ../3d_armor/api.lua +msgid "3d_armor: Detached armor inventory is nil @1" +msgstr "3d_armor : Inventaire détaché pour l'armure non trouvé @1" + +#: ../3d_armor/armor.lua +msgid "Admin Helmet" +msgstr "Casque d'admin" + +#: ../3d_armor/armor.lua +msgid "Admin Chestplate" +msgstr "Cuirasse d'admin" + +#: ../3d_armor/armor.lua +msgid "Admin Leggings" +msgstr "Jambières d'admin" + +#: ../3d_armor/armor.lua +msgid "Admin Boots" +msgstr "Bottes d'admin" + +#: ../3d_armor/armor.lua +msgid "Wood Helmet" +msgstr "Casque en bois" + +#: ../3d_armor/armor.lua +msgid "Wood Chestplate" +msgstr "Cuirasse en bois" + +#: ../3d_armor/armor.lua +msgid "Wood Leggings" +msgstr "Jambières en bois" + +#: ../3d_armor/armor.lua +msgid "Wood Boots" +msgstr "Bottes en bois" + +#: ../3d_armor/armor.lua +msgid "Cactus Helmet" +msgstr "Casque en cactus" + +#: ../3d_armor/armor.lua +msgid "Cactus Chestplate" +msgstr "Cuirasse en cactus" + +#: ../3d_armor/armor.lua +msgid "Cactus Leggings" +msgstr "Jambières en cactus" + +#: ../3d_armor/armor.lua +msgid "Cactus Boots" +msgstr "Bottes en cactus" + +#: ../3d_armor/armor.lua +msgid "Steel Helmet" +msgstr "Casque en acier" + +#: ../3d_armor/armor.lua +msgid "Steel Chestplate" +msgstr " = Cuirasse en acier" + +#: ../3d_armor/armor.lua +msgid "Steel Leggings" +msgstr "Jambières en acier" + +#: ../3d_armor/armor.lua +msgid "Steel Boots" +msgstr "Bottes en acier" + +#: ../3d_armor/armor.lua +msgid "Bronze Helmet" +msgstr "Casque en bronze" + +#: ../3d_armor/armor.lua +msgid "Bronze Chestplate" +msgstr "Cuirasse en bronze" + +#: ../3d_armor/armor.lua +msgid "Bronze Leggings" +msgstr "Jambières en bronze" + +#: ../3d_armor/armor.lua +msgid "Bronze Boots" +msgstr "Bottes en bronze" + +#: ../3d_armor/armor.lua +msgid "Diamond Helmet" +msgstr "Casque en diamant" + +#: ../3d_armor/armor.lua +msgid "Diamond Chestplate" +msgstr "Cuirasse en diamant" + +#: ../3d_armor/armor.lua +msgid "Diamond Leggings" +msgstr "Jambières en diamant" + +#: ../3d_armor/armor.lua +msgid "Diamond Boots" +msgstr "Bottes en diamant" + +#: ../3d_armor/armor.lua +msgid "Gold Helmet" +msgstr "Casque en or" + +#: ../3d_armor/armor.lua +msgid "Gold Chestplate" +msgstr "Cuirasse en or" + +#: ../3d_armor/armor.lua +msgid "Gold Leggings" +msgstr "Jambières en or" + +#: ../3d_armor/armor.lua +msgid "Gold Boots" +msgstr "Bottes en or" + +#: ../3d_armor/armor.lua +msgid "Mithril Helmet" +msgstr "Casque en mithril" + +#: ../3d_armor/armor.lua +msgid "Mithril Chestplate" +msgstr "Cuirasse en mithril" + +#: ../3d_armor/armor.lua +msgid "Mithril Leggings" +msgstr "Jambières en mithril" + +#: ../3d_armor/armor.lua +msgid "Mithril Boots" +msgstr "Bottes en mithril" + +#: ../3d_armor/armor.lua +msgid "Crystal Helmet" +msgstr "Casque en cristal" + +#: ../3d_armor/armor.lua +msgid "Crystal Chestplate" +msgstr "Cuirasse en cristal" + +#: ../3d_armor/armor.lua +msgid "Crystal Leggings" +msgstr "Jambières en cristal" + +#: ../3d_armor/armor.lua +msgid "Crystal Boots" +msgstr "Bottes en cristal" + +#: ../3d_armor/init.lua ../3d_armor_ui/init.lua +msgid "Radiation" +msgstr "Radiation" + +#: ../3d_armor/init.lua ../3d_armor_ui/init.lua +msgid "Level" +msgstr "Niveau" + +#: ../3d_armor/init.lua ../3d_armor_ui/init.lua +msgid "Heal" +msgstr "Soins" + +#: ../3d_armor/init.lua ../3d_armor_ui/init.lua +msgid "Fire" +msgstr "Fire" + +#: ../3d_armor/init.lua +msgid "Your @1 got destroyed!" +msgstr "Une partie de votre armure a été détruite : @1 !" + +#: ../3d_armor/init.lua +msgid "3d_armor: Failed to initialize player" +msgstr "3d_armor : Impossible d'initialiser le joueur" + +#: ../3d_armor/init.lua +msgid "[3d_armor] Fire Nodes disabled" +msgstr "[3d_armor] Noeuds de type feu désactivés" + +#: ../3d_armor_ip/init.lua +msgid "3d_armor_ip: Mod loaded but unused." +msgstr "3d_armor_ip : Mod chargé mais inutilisé." + +#: ../3d_armor_ip/init.lua +msgid "Back" +msgstr "Retour" + +#: ../3d_armor_ip/init.lua ../3d_armor_sfinv/init.lua ../3d_armor_ui/init.lua +msgid "Armor" +msgstr "Armure" + +#: ../3d_armor_sfinv/init.lua +msgid "3d_armor_sfinv: Mod loaded but unused." +msgstr "3d_armor_sfinv : Mod chargé mais inutilisé." + +#: ../3d_armor_stand/init.lua +msgid "Armor stand top" +msgstr "Haut de support d'armure" + +#: ../3d_armor_stand/init.lua +msgid "Armor stand" +msgstr "Support d'armure" + +#: ../3d_armor_stand/init.lua +msgid "Armor Stand" +msgstr "Support d'armure" + +#: ../3d_armor_stand/init.lua +msgid "Locked Armor stand" +msgstr "Support d'armure verrouillé" + +#: ../3d_armor_stand/init.lua +msgid "Armor Stand (owned by @1)" +msgstr "Support d'armure (propriété de @1)" + +#: ../3d_armor_ui/init.lua +msgid "3d_armor_ui: Mod loaded but unused." +msgstr "3d_armor_ui : Mod chargé mais inutilisé." + +#: ../3d_armor_ui/init.lua +msgid "3d Armor" +msgstr "Armure 3d" + +#: ../3d_armor_ui/init.lua +msgid "Armor not initialized!" +msgstr "Armure non initialisée !" + +#: ../shields/init.lua +msgid "Admin Shield" +msgstr "Bouclier d'admin" + +#: ../shields/init.lua +msgid "Wooden Shield" +msgstr "Bouclier en bois" + +#: ../shields/init.lua +msgid "Enhanced Wood Shield" +msgstr "Bouclier en bois amélioré" + +#: ../shields/init.lua +msgid "Cactus Shield" +msgstr "Bouclier en cactus" + +#: ../shields/init.lua +msgid "Enhanced Cactus Shield" +msgstr "Bouclier en cactus amélioré" + +#: ../shields/init.lua +msgid "Steel Shield" +msgstr "Bouclier en acier" + +#: ../shields/init.lua +msgid "Bronze Shield" +msgstr "Bouclier en bronze" + +#: ../shields/init.lua +msgid "Diamond Shield" +msgstr "Bouclier en diamant" + +#: ../shields/init.lua +msgid "Gold Shield" +msgstr "Bouclier en or" + +#: ../shields/init.lua +msgid "Mithril Shield" +msgstr "Bouclier en mithril" + +#: ../shields/init.lua +msgid "Crystal Shield" +msgstr "Bouclier en cristal" diff --git a/mods/3d_armor/3d_armor/locale/it.po b/mods/3d_armor/3d_armor/locale/it.po new file mode 100644 index 00000000..5d6f46b9 --- /dev/null +++ b/mods/3d_armor/3d_armor/locale/it.po @@ -0,0 +1,295 @@ +# Italian translation for 3D ARMOR MOD +# Copyright (C) 2018 by Stuart Jones +# This file is distributed under the same license as the 3D ARMOR MOD package. +# Hamlet , 2017. +# +msgid "" +msgstr "" +"Project-Id-Version: Italian localization file for the 3D Armor module\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-07-23 21:24+0200\n" +"PO-Revision-Date: 2018-07-23 21:30+0200\n" +"Last-Translator: H4mlet \n" +"Language-Team: ITALIANO\n" +"Language: it\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 1.6.10\n" + +#: ../3d_armor/api.lua +msgid "3d_armor: Player reference is nil @1" +msgstr "3d_armor: Il riferimento alla/al giocatrice/tore è nullo @1" + +#: ../3d_armor/api.lua +msgid "3d_armor: Player name is nil @1" +msgstr "3d_armor: Il nome della/del gicatrice/tore è nullo @1" + +#: ../3d_armor/api.lua +msgid "3d_armor: Detached armor inventory is nil @1" +msgstr "3d_armor: L'inventario staccato dell'armatura è nullo @1" + +#: ../3d_armor/armor.lua +msgid "Admin Helmet" +msgstr "Elmo dell'amministratrice/tore" + +#: ../3d_armor/armor.lua +msgid "Admin Chestplate" +msgstr "Corazza dell'amministratrice/tore" + +#: ../3d_armor/armor.lua +msgid "Admin Leggings" +msgstr "Gambali dell'amministratrice/tore" + +#: ../3d_armor/armor.lua +msgid "Admin Boots" +msgstr "Stivali dell'amministratrice/tore" + +#: ../3d_armor/armor.lua +msgid "Wood Helmet" +msgstr "Elmo di legno" + +#: ../3d_armor/armor.lua +msgid "Wood Chestplate" +msgstr "Corazza di legno" + +#: ../3d_armor/armor.lua +msgid "Wood Leggings" +msgstr "Gambali di legno" + +#: ../3d_armor/armor.lua +msgid "Wood Boots" +msgstr "Stivali di legno" + +#: ../3d_armor/armor.lua +msgid "Cactus Helmet" +msgstr "Elmo di cactus" + +#: ../3d_armor/armor.lua +msgid "Cactus Chestplate" +msgstr "Corazza di cactus" + +#: ../3d_armor/armor.lua +msgid "Cactus Leggings" +msgstr "Gambali di cactus" + +#: ../3d_armor/armor.lua +msgid "Cactus Boots" +msgstr "Stivali di cactus" + +#: ../3d_armor/armor.lua +msgid "Steel Helmet" +msgstr "Elmo di acciaio" + +#: ../3d_armor/armor.lua +msgid "Steel Chestplate" +msgstr "Corazza di acciaio" + +#: ../3d_armor/armor.lua +msgid "Steel Leggings" +msgstr "Gambali di acciaio" + +#: ../3d_armor/armor.lua +msgid "Steel Boots" +msgstr "Stivali di acciaio" + +#: ../3d_armor/armor.lua +msgid "Bronze Helmet" +msgstr "Elmo di bronzo" + +#: ../3d_armor/armor.lua +msgid "Bronze Chestplate" +msgstr "Corazza di bronzo" + +#: ../3d_armor/armor.lua +msgid "Bronze Leggings" +msgstr "Gambali di bronzo" + +#: ../3d_armor/armor.lua +msgid "Bronze Boots" +msgstr "Stivali di bronzo" + +#: ../3d_armor/armor.lua +msgid "Diamond Helmet" +msgstr "Elmo di diamante" + +#: ../3d_armor/armor.lua +msgid "Diamond Chestplate" +msgstr "Corazza di diamante" + +#: ../3d_armor/armor.lua +msgid "Diamond Leggings" +msgstr "Gambali di diamante" + +#: ../3d_armor/armor.lua +msgid "Diamond Boots" +msgstr "Stivali di diamante" + +#: ../3d_armor/armor.lua +msgid "Gold Helmet" +msgstr "Elmo d'oro" + +#: ../3d_armor/armor.lua +msgid "Gold Chestplate" +msgstr "Corazza d'oro" + +#: ../3d_armor/armor.lua +msgid "Gold Leggings" +msgstr "Gambali d'oro" + +#: ../3d_armor/armor.lua +msgid "Gold Boots" +msgstr "Stivali d'oro" + +#: ../3d_armor/armor.lua +msgid "Mithril Helmet" +msgstr "Elmo di mithril" + +#: ../3d_armor/armor.lua +msgid "Mithril Chestplate" +msgstr "Corazza di mithril" + +#: ../3d_armor/armor.lua +msgid "Mithril Leggings" +msgstr "Gambali di mithril" + +#: ../3d_armor/armor.lua +msgid "Mithril Boots" +msgstr "Stivali di mithril" + +#: ../3d_armor/armor.lua +msgid "Crystal Helmet" +msgstr "Elmo di cristallo" + +#: ../3d_armor/armor.lua +msgid "Crystal Chestplate" +msgstr "Corazza di cristallo" + +#: ../3d_armor/armor.lua +msgid "Crystal Leggings" +msgstr "Gambali di cristallo" + +#: ../3d_armor/armor.lua +msgid "Crystal Boots" +msgstr "Stivali di cristallo" + +#: ../3d_armor/init.lua ../3d_armor_ui/init.lua +msgid "Radiation" +msgstr "Radiazione" + +#: ../3d_armor/init.lua ../3d_armor_ui/init.lua +msgid "Level" +msgstr "Livello" + +#: ../3d_armor/init.lua ../3d_armor_ui/init.lua +msgid "Heal" +msgstr "Guarigione" + +#: ../3d_armor/init.lua ../3d_armor_ui/init.lua +msgid "Fire" +msgstr "Fuoco" + +#: ../3d_armor/init.lua +msgid "Your @1 got destroyed!" +msgstr "Il/i vostro/i @1 è/sono stato/i distrutto/i!" + +#: ../3d_armor/init.lua +msgid "3d_armor: Failed to initialize player" +msgstr "3d_armor: Inizializzazione della/del giocatrice/tore fallita" + +#: ../3d_armor/init.lua +msgid "[3d_armor] Fire Nodes disabled" +msgstr "[3d_armor] Nodi fuoco disabilitati" + +#: ../3d_armor_ip/init.lua +msgid "3d_armor_ip: Mod loaded but unused." +msgstr "3d_armor_ip: Mod caricato ma inutilizzato." + +#: ../3d_armor_ip/init.lua +msgid "Back" +msgstr "Indietro" + +#: ../3d_armor_ip/init.lua ../3d_armor_sfinv/init.lua ../3d_armor_ui/init.lua +msgid "Armor" +msgstr "Armatura" + +#: ../3d_armor_sfinv/init.lua +msgid "3d_armor_sfinv: Mod loaded but unused." +msgstr "3d_armor_sfinv: Mod caricato ma inutilizzato." + +#: ../3d_armor_stand/init.lua +msgid "Armor stand top" +msgstr "Parte superiore del supporto per armatura" + +#: ../3d_armor_stand/init.lua +msgid "Armor stand" +msgstr "Supporto per armatura" + +#: ../3d_armor_stand/init.lua +msgid "Armor Stand" +msgstr "Supporto per armatura" + +#: ../3d_armor_stand/init.lua +msgid "Locked Armor stand" +msgstr "Supporto per armatura chiuso a chiave" + +#: ../3d_armor_stand/init.lua +msgid "Armor Stand (owned by @1)" +msgstr "Supporto per armatura (di proprietà di @1)" + +#: ../3d_armor_ui/init.lua +msgid "3d_armor_ui: Mod loaded but unused." +msgstr "3d_armor_ui: Mod caricato ma inutilizzato." + +#: ../3d_armor_ui/init.lua +msgid "3d Armor" +msgstr "Armatura 3D" + +#: ../3d_armor_ui/init.lua +msgid "Armor not initialized!" +msgstr "Armatura non inizializzata!" + +#: ../shields/init.lua +msgid "Admin Shield" +msgstr "Scudo dell'amministratrice/tore" + +#: ../shields/init.lua +msgid "Wooden Shield" +msgstr "Scudo di legno" + +#: ../shields/init.lua +msgid "Enhanced Wood Shield" +msgstr "Scudo di legno migliorato" + +#: ../shields/init.lua +msgid "Cactus Shield" +msgstr "Scudo di cactus" + +#: ../shields/init.lua +msgid "Enhanced Cactus Shield" +msgstr "Scudo di cactus migliorato" + +#: ../shields/init.lua +msgid "Steel Shield" +msgstr "Scudo di acciaio" + +#: ../shields/init.lua +msgid "Bronze Shield" +msgstr "Scudo di bronzo" + +#: ../shields/init.lua +msgid "Diamond Shield" +msgstr "Scudo di diamante" + +#: ../shields/init.lua +msgid "Gold Shield" +msgstr "Scudo d'oro" + +#: ../shields/init.lua +msgid "Mithril Shield" +msgstr "Scudo di mithril" + +#: ../shields/init.lua +msgid "Crystal Shield" +msgstr "Scudo di cristallo" diff --git a/mods/3d_armor/3d_armor/locale/ms.po b/mods/3d_armor/3d_armor/locale/ms.po new file mode 100644 index 00000000..518e4380 --- /dev/null +++ b/mods/3d_armor/3d_armor/locale/ms.po @@ -0,0 +1,296 @@ +# Malay translation for 3D ARMOR MOD +# Copyright (C) 2018 by Stuart Jones +# This file is distributed under the same license as the 3D ARMOR MOD package. +# MuhdNurHidayat (MNH48) , 2018. +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-07-23 21:21+0200\n" +"PO-Revision-Date: 2018-07-23 21:30+0200\n" +"Last-Translator: MuhdNurHidayat (MNH48) \n" +"Language-Team: \n" +"Language: ms\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.0.6\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: ../3d_armor/api.lua +msgid "3d_armor: Player reference is nil @1" +msgstr "3d_armor: Rujukan pemain tiada nilai @1" + +#: ../3d_armor/api.lua +msgid "3d_armor: Player name is nil @1" +msgstr "3d_armor: Nama pemain tiada nilai @1" + +#: ../3d_armor/api.lua +msgid "3d_armor: Detached armor inventory is nil @1" +msgstr "3d_armor: Inventori perisai terpisah tiada nilai @1" + +#: ../3d_armor/armor.lua +msgid "Admin Helmet" +msgstr "Helmet Pentadbir" + +#: ../3d_armor/armor.lua +msgid "Admin Chestplate" +msgstr "Perisai Dada Pentadbir" + +#: ../3d_armor/armor.lua +msgid "Admin Leggings" +msgstr "Perisai Kaki Pentadbir" + +#: ../3d_armor/armor.lua +msgid "Admin Boots" +msgstr "But Pentadbir" + +#: ../3d_armor/armor.lua +msgid "Wood Helmet" +msgstr "Helmet Kayu" + +#: ../3d_armor/armor.lua +msgid "Wood Chestplate" +msgstr "Perisai Dada Kayu" + +#: ../3d_armor/armor.lua +msgid "Wood Leggings" +msgstr "Perisai Kaki Kayu" + +#: ../3d_armor/armor.lua +msgid "Wood Boots" +msgstr "But Kayu" + +#: ../3d_armor/armor.lua +msgid "Cactus Helmet" +msgstr "Helmet Kaktus" + +#: ../3d_armor/armor.lua +msgid "Cactus Chestplate" +msgstr "Perisai Dada Kaktus" + +#: ../3d_armor/armor.lua +msgid "Cactus Leggings" +msgstr "Perisai Kaki Kaktus" + +#: ../3d_armor/armor.lua +msgid "Cactus Boots" +msgstr "But Kaktus" + +#: ../3d_armor/armor.lua +msgid "Steel Helmet" +msgstr "Helmet Keluli" + +#: ../3d_armor/armor.lua +msgid "Steel Chestplate" +msgstr "Perisai Dada Keluli" + +#: ../3d_armor/armor.lua +msgid "Steel Leggings" +msgstr "Perisai Kaki Keluli" + +#: ../3d_armor/armor.lua +msgid "Steel Boots" +msgstr "But Keluli" + +#: ../3d_armor/armor.lua +msgid "Bronze Helmet" +msgstr "Helmet Gangsa" + +#: ../3d_armor/armor.lua +msgid "Bronze Chestplate" +msgstr "Perisai Dada Gangsa" + +#: ../3d_armor/armor.lua +msgid "Bronze Leggings" +msgstr "Perisai Kaki Gangsa" + +#: ../3d_armor/armor.lua +msgid "Bronze Boots" +msgstr "But Gangsa" + +# 'Diamond' should be translated as 'intan' because the more common word 'berlian' is only specifically used for the gemstone diamond. +#: ../3d_armor/armor.lua +msgid "Diamond Helmet" +msgstr "Helmet Intan" + +#: ../3d_armor/armor.lua +msgid "Diamond Chestplate" +msgstr "Perisai Dada Intan" + +#: ../3d_armor/armor.lua +msgid "Diamond Leggings" +msgstr "Perisai Kaki Intan" + +#: ../3d_armor/armor.lua +msgid "Diamond Boots" +msgstr "But Intan" + +#: ../3d_armor/armor.lua +msgid "Gold Helmet" +msgstr "Helmet Emas" + +#: ../3d_armor/armor.lua +msgid "Gold Chestplate" +msgstr "Perisai Dada Emas" + +#: ../3d_armor/armor.lua +msgid "Gold Leggings" +msgstr "Perisai Kaki Emas" + +#: ../3d_armor/armor.lua +msgid "Gold Boots" +msgstr "But Emas" + +#: ../3d_armor/armor.lua +msgid "Mithril Helmet" +msgstr "Helmet Mithril" + +#: ../3d_armor/armor.lua +msgid "Mithril Chestplate" +msgstr "Perisai Dada Mithril" + +#: ../3d_armor/armor.lua +msgid "Mithril Leggings" +msgstr "Perisai Kaki Mithril" + +#: ../3d_armor/armor.lua +msgid "Mithril Boots" +msgstr "But Mithril" + +#: ../3d_armor/armor.lua +msgid "Crystal Helmet" +msgstr "Helmet Kristal" + +#: ../3d_armor/armor.lua +msgid "Crystal Chestplate" +msgstr "Perisai Dada Kristal" + +#: ../3d_armor/armor.lua +msgid "Crystal Leggings" +msgstr "Perisai Kaki Kristal" + +#: ../3d_armor/armor.lua +msgid "Crystal Boots" +msgstr "But Kristal" + +#: ../3d_armor/init.lua ../3d_armor_ui/init.lua +msgid "Radiation" +msgstr "Radiasi" + +#: ../3d_armor/init.lua ../3d_armor_ui/init.lua +msgid "Level" +msgstr "Tahap" + +#: ../3d_armor/init.lua ../3d_armor_ui/init.lua +msgid "Heal" +msgstr "Pulih" + +#: ../3d_armor/init.lua ../3d_armor_ui/init.lua +msgid "Fire" +msgstr "Api" + +#: ../3d_armor/init.lua +msgid "Your @1 got destroyed!" +msgstr "@1 anda telah musnah!" + +#: ../3d_armor/init.lua +msgid "3d_armor: Failed to initialize player" +msgstr "3d_armor: Gagal mengasalkan pemain" + +#: ../3d_armor/init.lua +msgid "[3d_armor] Fire Nodes disabled" +msgstr "[3d_armor] Nod-nod Api dilumpuhkan" + +#: ../3d_armor_ip/init.lua +msgid "3d_armor_ip: Mod loaded but unused." +msgstr "3d_armor_ip: Mods dimuatkan tetapi tidak digunakan." + +#: ../3d_armor_ip/init.lua +msgid "Back" +msgstr "Kembali" + +#: ../3d_armor_ip/init.lua ../3d_armor_sfinv/init.lua ../3d_armor_ui/init.lua +msgid "Armor" +msgstr "Perisai" + +#: ../3d_armor_sfinv/init.lua +msgid "3d_armor_sfinv: Mod loaded but unused." +msgstr "3d_armor_sfinv: Mods dimuatkan tetapi tidak digunakan." + +#: ../3d_armor_stand/init.lua +msgid "Armor stand top" +msgstr "Bhg atas dirian perisai" + +#: ../3d_armor_stand/init.lua +msgid "Armor stand" +msgstr "Dirian perisai" + +#: ../3d_armor_stand/init.lua +msgid "Armor Stand" +msgstr "Dirian Perisai" + +#: ../3d_armor_stand/init.lua +msgid "Locked Armor stand" +msgstr "Dirian perisai Berkunci" + +#: ../3d_armor_stand/init.lua +msgid "Armor Stand (owned by @1)" +msgstr "Dirian Perisai (milik @1)" + +#: ../3d_armor_ui/init.lua +msgid "3d_armor_ui: Mod loaded but unused." +msgstr "3d_armor_ui: Mods dimuatkan tetapi tidak digunakan." + +#: ../3d_armor_ui/init.lua +msgid "3d Armor" +msgstr "Perisai 3d" + +#: ../3d_armor_ui/init.lua +msgid "Armor not initialized!" +msgstr "Perisai tidak diasalkan!" + +#: ../shields/init.lua +msgid "Admin Shield" +msgstr "Perisai Pegang Pentadbir" + +#: ../shields/init.lua +msgid "Wooden Shield" +msgstr "Perisai Pegang Kayu" + +#: ../shields/init.lua +msgid "Enhanced Wood Shield" +msgstr "Perisai Pegang Kayu Kukuh" + +#: ../shields/init.lua +msgid "Cactus Shield" +msgstr "Perisai Pegang Kaktus" + +#: ../shields/init.lua +msgid "Enhanced Cactus Shield" +msgstr "Perisai Pegang Kaktus Kukuh" + +#: ../shields/init.lua +msgid "Steel Shield" +msgstr "Perisai Pegang Keluli" + +#: ../shields/init.lua +msgid "Bronze Shield" +msgstr "Perisai Pegang Gangsa" + +#: ../shields/init.lua +msgid "Diamond Shield" +msgstr "Perisai Pegang Intan" + +#: ../shields/init.lua +msgid "Gold Shield" +msgstr "Perisai Pegang Emas" + +#: ../shields/init.lua +msgid "Mithril Shield" +msgstr "Perisai Pegang Mithril" + +#: ../shields/init.lua +msgid "Crystal Shield" +msgstr "Perisai Pegang Kristal" diff --git a/mods/3d_armor/3d_armor/locale/pt.po b/mods/3d_armor/3d_armor/locale/pt.po new file mode 100644 index 00000000..01666372 --- /dev/null +++ b/mods/3d_armor/3d_armor/locale/pt.po @@ -0,0 +1,295 @@ +# LANGUAGE translation for 3D ARMOR MOD +# Copyright (C) 2018 by Stuart Jones +# This file is distributed under the same license as the 3D ARMOR MOD package. +# BrunoMine , 2018. +# +msgid "" +msgstr "" +"Project-Id-Version: 3d_armor\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-07-23 21:24+0200\n" +"PO-Revision-Date: 2018-11-08 13:12-0200\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.0.6\n" +"Last-Translator: BrunoMine \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Language: pt\n" + +#: ../3d_armor/api.lua +msgid "3d_armor: Player reference is nil @1" +msgstr "3d_armor: Referência Jogador é nula @1" + +#: ../3d_armor/api.lua +msgid "3d_armor: Player name is nil @1" +msgstr "3d_armor: Nome de jogador é nulo @1" + +#: ../3d_armor/api.lua +msgid "3d_armor: Detached armor inventory is nil @1" +msgstr "3d_armor: Inventario avulso de armadura é nulo @1" + +#: ../3d_armor/armor.lua +msgid "Admin Helmet" +msgstr "Capacete de Administrador" + +#: ../3d_armor/armor.lua +msgid "Admin Chestplate" +msgstr "Peitoral de Administrador" + +#: ../3d_armor/armor.lua +msgid "Admin Leggings" +msgstr "Calças de Administrador" + +#: ../3d_armor/armor.lua +msgid "Admin Boots" +msgstr "Botas de Administrador" + +#: ../3d_armor/armor.lua +msgid "Wood Helmet" +msgstr "Capacete de Madeira" + +#: ../3d_armor/armor.lua +msgid "Wood Chestplate" +msgstr "Peitoral de Madeira" + +#: ../3d_armor/armor.lua +msgid "Wood Leggings" +msgstr "Calças de Madeira" + +#: ../3d_armor/armor.lua +msgid "Wood Boots" +msgstr "Botas de Madeira" + +#: ../3d_armor/armor.lua +msgid "Cactus Helmet" +msgstr "Capacete de Cacto" + +#: ../3d_armor/armor.lua +msgid "Cactus Chestplate" +msgstr "Peitoral de Cacto" + +#: ../3d_armor/armor.lua +msgid "Cactus Leggings" +msgstr "Calças de Cacto" + +#: ../3d_armor/armor.lua +msgid "Cactus Boots" +msgstr "Botas de Madeira" + +#: ../3d_armor/armor.lua +msgid "Steel Helmet" +msgstr "Capacete de Aço" + +#: ../3d_armor/armor.lua +msgid "Steel Chestplate" +msgstr "Peitoral de Aço" + +#: ../3d_armor/armor.lua +msgid "Steel Leggings" +msgstr "Calças de Aço" + +#: ../3d_armor/armor.lua +msgid "Steel Boots" +msgstr "Botas de Aço" + +#: ../3d_armor/armor.lua +msgid "Bronze Helmet" +msgstr "Capacete de Bronze" + +#: ../3d_armor/armor.lua +msgid "Bronze Chestplate" +msgstr "Peitoral de Bronze" + +#: ../3d_armor/armor.lua +msgid "Bronze Leggings" +msgstr "Calças de Bronze" + +#: ../3d_armor/armor.lua +msgid "Bronze Boots" +msgstr "Botas de Bronze" + +#: ../3d_armor/armor.lua +msgid "Diamond Helmet" +msgstr "Capacete de Diamante" + +#: ../3d_armor/armor.lua +msgid "Diamond Chestplate" +msgstr "Peitoral de Diamante" + +#: ../3d_armor/armor.lua +msgid "Diamond Leggings" +msgstr "Calças de Diamante" + +#: ../3d_armor/armor.lua +msgid "Diamond Boots" +msgstr "Botas de Diamante" + +#: ../3d_armor/armor.lua +msgid "Gold Helmet" +msgstr "Capacete de Ouro" + +#: ../3d_armor/armor.lua +msgid "Gold Chestplate" +msgstr "Peitoral de Ouro" + +#: ../3d_armor/armor.lua +msgid "Gold Leggings" +msgstr "Calças de Ouro" + +#: ../3d_armor/armor.lua +msgid "Gold Boots" +msgstr "Botas de Ouro" + +#: ../3d_armor/armor.lua +msgid "Mithril Helmet" +msgstr "Capacete de Mithril" + +#: ../3d_armor/armor.lua +msgid "Mithril Chestplate" +msgstr "Peitoral de Mithril" + +#: ../3d_armor/armor.lua +msgid "Mithril Leggings" +msgstr "Calças de Mithril" + +#: ../3d_armor/armor.lua +msgid "Mithril Boots" +msgstr "Botas de Mithril" + +#: ../3d_armor/armor.lua +msgid "Crystal Helmet" +msgstr "Capacete de Cristal" + +#: ../3d_armor/armor.lua +msgid "Crystal Chestplate" +msgstr "Peitoral de Cristal" + +#: ../3d_armor/armor.lua +msgid "Crystal Leggings" +msgstr "Calças de Cristal" + +#: ../3d_armor/armor.lua +msgid "Crystal Boots" +msgstr "Botas de Cristal" + +#: ../3d_armor/init.lua ../3d_armor_ui/init.lua +msgid "Radiation" +msgstr "Radiação" + +#: ../3d_armor/init.lua ../3d_armor_ui/init.lua +msgid "Level" +msgstr "Nível" + +#: ../3d_armor/init.lua ../3d_armor_ui/init.lua +msgid "Heal" +msgstr "Saúde" + +#: ../3d_armor/init.lua ../3d_armor_ui/init.lua +msgid "Fire" +msgstr "Fogo" + +#: ../3d_armor/init.lua +msgid "Your @1 got destroyed!" +msgstr "@1 foi destruído(a)!" + +#: ../3d_armor/init.lua +msgid "3d_armor: Failed to initialize player" +msgstr "3d_armor: Falha ao inicializar jogador" + +#: ../3d_armor/init.lua +msgid "[3d_armor] Fire Nodes disabled" +msgstr "[3d_armor] Nodes de gofo desabilitados" + +#: ../3d_armor_ip/init.lua +msgid "3d_armor_ip: Mod loaded but unused." +msgstr "3d_armor_ip: Mod carregado mas inoperante." + +#: ../3d_armor_ip/init.lua +msgid "Back" +msgstr "Voltar" + +#: ../3d_armor_ip/init.lua ../3d_armor_sfinv/init.lua ../3d_armor_ui/init.lua +msgid "Armor" +msgstr "Armadura" + +#: ../3d_armor_sfinv/init.lua +msgid "3d_armor_sfinv: Mod loaded but unused." +msgstr "3d_armor_sfinv: Mod carregado mas inoperante." + +#: ../3d_armor_stand/init.lua +msgid "Armor stand top" +msgstr "Topo de estande de armadura" + +#: ../3d_armor_stand/init.lua +msgid "Armor stand" +msgstr "Estande de armadura" + +#: ../3d_armor_stand/init.lua +msgid "Armor Stand" +msgstr "Estande de Armadura" + +#: ../3d_armor_stand/init.lua +msgid "Locked Armor stand" +msgstr "Estande de Armadura Trancada" + +#: ../3d_armor_stand/init.lua +msgid "Armor Stand (owned by @1)" +msgstr "Estande de Armadura (pertente a @1)" + +#: ../3d_armor_ui/init.lua +msgid "3d_armor_ui: Mod loaded but unused." +msgstr "3d_armor_ui: Mod carregado mas inoperante." + +#: ../3d_armor_ui/init.lua +msgid "3d Armor" +msgstr "3d Armor" + +#: ../3d_armor_ui/init.lua +msgid "Armor not initialized!" +msgstr "Armadura não inicializada!" + +#: ../shields/init.lua +msgid "Admin Shield" +msgstr "Escudo de Administrador" + +#: ../shields/init.lua +msgid "Wooden Shield" +msgstr "Escudo de Madeira" + +#: ../shields/init.lua +msgid "Enhanced Wood Shield" +msgstr "Escudo de Madeira Melhorado" + +#: ../shields/init.lua +msgid "Cactus Shield" +msgstr "Escudo de Cacto" + +#: ../shields/init.lua +msgid "Enhanced Cactus Shield" +msgstr "Escudo de Cacto Melhorado" + +#: ../shields/init.lua +msgid "Steel Shield" +msgstr "Escudo de Aço" + +#: ../shields/init.lua +msgid "Bronze Shield" +msgstr "Escudo de Bronze" + +#: ../shields/init.lua +msgid "Diamond Shield" +msgstr "Escudo de Diamante" + +#: ../shields/init.lua +msgid "Gold Shield" +msgstr "Escudo de Ouro" + +#: ../shields/init.lua +msgid "Mithril Shield" +msgstr "Escudo de Mithril" + +#: ../shields/init.lua +msgid "Crystal Shield" +msgstr "Escudo de Cristal" diff --git a/mods/3d_armor/3d_armor/locale/pt_BR.po b/mods/3d_armor/3d_armor/locale/pt_BR.po new file mode 100644 index 00000000..b429d113 --- /dev/null +++ b/mods/3d_armor/3d_armor/locale/pt_BR.po @@ -0,0 +1,295 @@ +# LANGUAGE translation for 3D ARMOR MOD +# Copyright (C) 2018 by Stuart Jones +# This file is distributed under the same license as the 3D ARMOR MOD package. +# BrunoMine , 2018. +# +msgid "" +msgstr "" +"Project-Id-Version: 3d_armor\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-07-23 21:24+0200\n" +"PO-Revision-Date: 2018-11-08 13:12-0200\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.0.6\n" +"Last-Translator: BrunoMine \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Language: pt_BR\n" + +#: ../3d_armor/api.lua +msgid "3d_armor: Player reference is nil @1" +msgstr "3d_armor: Referência Jogador é nula @1" + +#: ../3d_armor/api.lua +msgid "3d_armor: Player name is nil @1" +msgstr "3d_armor: Nome de jogador é nulo @1" + +#: ../3d_armor/api.lua +msgid "3d_armor: Detached armor inventory is nil @1" +msgstr "3d_armor: Inventario avulso de armadura é nulo @1" + +#: ../3d_armor/armor.lua +msgid "Admin Helmet" +msgstr "Capacete de Administrador" + +#: ../3d_armor/armor.lua +msgid "Admin Chestplate" +msgstr "Peitoral de Administrador" + +#: ../3d_armor/armor.lua +msgid "Admin Leggings" +msgstr "Calças de Administrador" + +#: ../3d_armor/armor.lua +msgid "Admin Boots" +msgstr "Botas de Administrador" + +#: ../3d_armor/armor.lua +msgid "Wood Helmet" +msgstr "Capacete de Madeira" + +#: ../3d_armor/armor.lua +msgid "Wood Chestplate" +msgstr "Peitoral de Madeira" + +#: ../3d_armor/armor.lua +msgid "Wood Leggings" +msgstr "Calças de Madeira" + +#: ../3d_armor/armor.lua +msgid "Wood Boots" +msgstr "Botas de Madeira" + +#: ../3d_armor/armor.lua +msgid "Cactus Helmet" +msgstr "Capacete de Cacto" + +#: ../3d_armor/armor.lua +msgid "Cactus Chestplate" +msgstr "Peitoral de Cacto" + +#: ../3d_armor/armor.lua +msgid "Cactus Leggings" +msgstr "Calças de Cacto" + +#: ../3d_armor/armor.lua +msgid "Cactus Boots" +msgstr "Botas de Madeira" + +#: ../3d_armor/armor.lua +msgid "Steel Helmet" +msgstr "Capacete de Aço" + +#: ../3d_armor/armor.lua +msgid "Steel Chestplate" +msgstr "Peitoral de Aço" + +#: ../3d_armor/armor.lua +msgid "Steel Leggings" +msgstr "Calças de Aço" + +#: ../3d_armor/armor.lua +msgid "Steel Boots" +msgstr "Botas de Aço" + +#: ../3d_armor/armor.lua +msgid "Bronze Helmet" +msgstr "Capacete de Bronze" + +#: ../3d_armor/armor.lua +msgid "Bronze Chestplate" +msgstr "Peitoral de Bronze" + +#: ../3d_armor/armor.lua +msgid "Bronze Leggings" +msgstr "Calças de Bronze" + +#: ../3d_armor/armor.lua +msgid "Bronze Boots" +msgstr "Botas de Bronze" + +#: ../3d_armor/armor.lua +msgid "Diamond Helmet" +msgstr "Capacete de Diamante" + +#: ../3d_armor/armor.lua +msgid "Diamond Chestplate" +msgstr "Peitoral de Diamante" + +#: ../3d_armor/armor.lua +msgid "Diamond Leggings" +msgstr "Calças de Diamante" + +#: ../3d_armor/armor.lua +msgid "Diamond Boots" +msgstr "Botas de Diamante" + +#: ../3d_armor/armor.lua +msgid "Gold Helmet" +msgstr "Capacete de Ouro" + +#: ../3d_armor/armor.lua +msgid "Gold Chestplate" +msgstr "Peitoral de Ouro" + +#: ../3d_armor/armor.lua +msgid "Gold Leggings" +msgstr "Calças de Ouro" + +#: ../3d_armor/armor.lua +msgid "Gold Boots" +msgstr "Botas de Ouro" + +#: ../3d_armor/armor.lua +msgid "Mithril Helmet" +msgstr "Capacete de Mithril" + +#: ../3d_armor/armor.lua +msgid "Mithril Chestplate" +msgstr "Peitoral de Mithril" + +#: ../3d_armor/armor.lua +msgid "Mithril Leggings" +msgstr "Calças de Mithril" + +#: ../3d_armor/armor.lua +msgid "Mithril Boots" +msgstr "Botas de Mithril" + +#: ../3d_armor/armor.lua +msgid "Crystal Helmet" +msgstr "Capacete de Cristal" + +#: ../3d_armor/armor.lua +msgid "Crystal Chestplate" +msgstr "Peitoral de Cristal" + +#: ../3d_armor/armor.lua +msgid "Crystal Leggings" +msgstr "Calças de Cristal" + +#: ../3d_armor/armor.lua +msgid "Crystal Boots" +msgstr "Botas de Cristal" + +#: ../3d_armor/init.lua ../3d_armor_ui/init.lua +msgid "Radiation" +msgstr "Radiação" + +#: ../3d_armor/init.lua ../3d_armor_ui/init.lua +msgid "Level" +msgstr "Nível" + +#: ../3d_armor/init.lua ../3d_armor_ui/init.lua +msgid "Heal" +msgstr "Saúde" + +#: ../3d_armor/init.lua ../3d_armor_ui/init.lua +msgid "Fire" +msgstr "Fogo" + +#: ../3d_armor/init.lua +msgid "Your @1 got destroyed!" +msgstr "@1 foi destruído(a)!" + +#: ../3d_armor/init.lua +msgid "3d_armor: Failed to initialize player" +msgstr "3d_armor: Falha ao inicializar jogador" + +#: ../3d_armor/init.lua +msgid "[3d_armor] Fire Nodes disabled" +msgstr "[3d_armor] Nodes de gofo desabilitados" + +#: ../3d_armor_ip/init.lua +msgid "3d_armor_ip: Mod loaded but unused." +msgstr "3d_armor_ip: Mod carregado mas inoperante." + +#: ../3d_armor_ip/init.lua +msgid "Back" +msgstr "Voltar" + +#: ../3d_armor_ip/init.lua ../3d_armor_sfinv/init.lua ../3d_armor_ui/init.lua +msgid "Armor" +msgstr "Armadura" + +#: ../3d_armor_sfinv/init.lua +msgid "3d_armor_sfinv: Mod loaded but unused." +msgstr "3d_armor_sfinv: Mod carregado mas inoperante." + +#: ../3d_armor_stand/init.lua +msgid "Armor stand top" +msgstr "Topo de estande de armadura" + +#: ../3d_armor_stand/init.lua +msgid "Armor stand" +msgstr "Estande de armadura" + +#: ../3d_armor_stand/init.lua +msgid "Armor Stand" +msgstr "Estande de Armadura" + +#: ../3d_armor_stand/init.lua +msgid "Locked Armor stand" +msgstr "Estande de Armadura Trancada" + +#: ../3d_armor_stand/init.lua +msgid "Armor Stand (owned by @1)" +msgstr "Estande de Armadura (pertente a @1)" + +#: ../3d_armor_ui/init.lua +msgid "3d_armor_ui: Mod loaded but unused." +msgstr "3d_armor_ui: Mod carregado mas inoperante." + +#: ../3d_armor_ui/init.lua +msgid "3d Armor" +msgstr "3d Armor" + +#: ../3d_armor_ui/init.lua +msgid "Armor not initialized!" +msgstr "Armadura não inicializada!" + +#: ../shields/init.lua +msgid "Admin Shield" +msgstr "Escudo de Administrador" + +#: ../shields/init.lua +msgid "Wooden Shield" +msgstr "Escudo de Madeira" + +#: ../shields/init.lua +msgid "Enhanced Wood Shield" +msgstr "Escudo de Madeira Melhorado" + +#: ../shields/init.lua +msgid "Cactus Shield" +msgstr "Escudo de Cacto" + +#: ../shields/init.lua +msgid "Enhanced Cactus Shield" +msgstr "Escudo de Cacto Melhorado" + +#: ../shields/init.lua +msgid "Steel Shield" +msgstr "Escudo de Aço" + +#: ../shields/init.lua +msgid "Bronze Shield" +msgstr "Escudo de Bronze" + +#: ../shields/init.lua +msgid "Diamond Shield" +msgstr "Escudo de Diamante" + +#: ../shields/init.lua +msgid "Gold Shield" +msgstr "Escudo de Ouro" + +#: ../shields/init.lua +msgid "Mithril Shield" +msgstr "Escudo de Mithril" + +#: ../shields/init.lua +msgid "Crystal Shield" +msgstr "Escudo de Cristal" diff --git a/mods/3d_armor/3d_armor/locale/ru.po b/mods/3d_armor/3d_armor/locale/ru.po new file mode 100644 index 00000000..4beee8a0 --- /dev/null +++ b/mods/3d_armor/3d_armor/locale/ru.po @@ -0,0 +1,294 @@ +# Russian translation for 3D ARMOR MOD +# Copyright (C) 2018 by Stuart Jones +# This file is distributed under the same license as the 3D ARMOR MOD package. +# CodeXP , 2018. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: 3d_armor\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-07-23 21:21+0200\n" +"PO-Revision-Date: 2018-07-23 21:30+0200\n" +"Last-Translator: CodeXP \n" +"Language-Team: \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ../3d_armor/api.lua +msgid "3d_armor: Player reference is nil @1" +msgstr "3d_armor: Ссылка игрока является nil @1" + +#: ../3d_armor/api.lua +msgid "3d_armor: Player name is nil @1" +msgstr "3d_armor: Имя игрока является nil @1" + +#: ../3d_armor/api.lua +msgid "3d_armor: Detached armor inventory is nil @1" +msgstr "3d_armor: Отдельный инвентарь брони является nil @1" + +#: ../3d_armor/armor.lua +msgid "Admin Helmet" +msgstr "шлем админа" + +#: ../3d_armor/armor.lua +msgid "Admin Chestplate" +msgstr "бронежилет админа" + +#: ../3d_armor/armor.lua +msgid "Admin Leggings" +msgstr "гамаши админа" + +#: ../3d_armor/armor.lua +msgid "Admin Boots" +msgstr "ботинки админа" + +#: ../3d_armor/armor.lua +msgid "Wood Helmet" +msgstr "деревянный шлем" + +#: ../3d_armor/armor.lua +msgid "Wood Chestplate" +msgstr "деревянный бронежилет" + +#: ../3d_armor/armor.lua +msgid "Wood Leggings" +msgstr "деревянные гамаши" + +#: ../3d_armor/armor.lua +msgid "Wood Boots" +msgstr "деревянные ботинки" + +#: ../3d_armor/armor.lua +msgid "Cactus Helmet" +msgstr "кактусовый шлем" + +#: ../3d_armor/armor.lua +msgid "Cactus Chestplate" +msgstr "кактусовый бронежилет" + +#: ../3d_armor/armor.lua +msgid "Cactus Leggings" +msgstr "кактусовые гамаши" + +#: ../3d_armor/armor.lua +msgid "Cactus Boots" +msgstr "кактусовые ботинки" + +#: ../3d_armor/armor.lua +msgid "Steel Helmet" +msgstr "стальной шлем" + +#: ../3d_armor/armor.lua +msgid "Steel Chestplate" +msgstr "стальной бронежилет" + +#: ../3d_armor/armor.lua +msgid "Steel Leggings" +msgstr "стальные гамаши" + +#: ../3d_armor/armor.lua +msgid "Steel Boots" +msgstr "стальные ботинки" + +#: ../3d_armor/armor.lua +msgid "Bronze Helmet" +msgstr "бронзовый шлем" + +#: ../3d_armor/armor.lua +msgid "Bronze Chestplate" +msgstr "бронзовый бронежилет" + +#: ../3d_armor/armor.lua +msgid "Bronze Leggings" +msgstr "бронзовые гамаши" + +#: ../3d_armor/armor.lua +msgid "Bronze Boots" +msgstr "бронзовые ботинки" + +#: ../3d_armor/armor.lua +msgid "Diamond Helmet" +msgstr "алмазный шлем" + +#: ../3d_armor/armor.lua +msgid "Diamond Chestplate" +msgstr "алмазный бронежилет" + +#: ../3d_armor/armor.lua +msgid "Diamond Leggings" +msgstr "алмазные гамаши" + +#: ../3d_armor/armor.lua +msgid "Diamond Boots" +msgstr "алмазные ботинки" + +#: ../3d_armor/armor.lua +msgid "Gold Helmet" +msgstr "золотой шлем" + +#: ../3d_armor/armor.lua +msgid "Gold Chestplate" +msgstr "золотой бронежилет" + +#: ../3d_armor/armor.lua +msgid "Gold Leggings" +msgstr "золотые гамаши" + +#: ../3d_armor/armor.lua +msgid "Gold Boots" +msgstr "золотые ботинки" + +#: ../3d_armor/armor.lua +msgid "Mithril Helmet" +msgstr "мифриловый шлем" + +#: ../3d_armor/armor.lua +msgid "Mithril Chestplate" +msgstr "мифриловый бронежилет" + +#: ../3d_armor/armor.lua +msgid "Mithril Leggings" +msgstr "мифриловые гамаши" + +#: ../3d_armor/armor.lua +msgid "Mithril Boots" +msgstr "мифриловые ботинки" + +#: ../3d_armor/armor.lua +msgid "Crystal Helmet" +msgstr "кристалловый шлем" + +#: ../3d_armor/armor.lua +msgid "Crystal Chestplate" +msgstr "кристалловый бронежилет" + +#: ../3d_armor/armor.lua +msgid "Crystal Leggings" +msgstr "кристалловые гамаши" + +#: ../3d_armor/armor.lua +msgid "Crystal Boots" +msgstr "кристалловые ботинки" + +#: ../3d_armor/init.lua ../3d_armor_ui/init.lua +msgid "Radiation" +msgstr "излучение" + +#: ../3d_armor/init.lua ../3d_armor_ui/init.lua +msgid "Level" +msgstr "уровень" + +#: ../3d_armor/init.lua ../3d_armor_ui/init.lua +msgid "Heal" +msgstr "исцеление" + +#: ../3d_armor/init.lua ../3d_armor_ui/init.lua +msgid "Fire" +msgstr "огонь" + +#: ../3d_armor/init.lua +msgid "Your @1 got destroyed!" +msgstr "твой(и) @1 был(и) разрушен(ы)!" + +#: ../3d_armor/init.lua +msgid "3d_armor: Failed to initialize player" +msgstr "3d_armor: не смог подготовить игрока" + +#: ../3d_armor/init.lua +msgid "[3d_armor] Fire Nodes disabled" +msgstr "[3d_armor] блоки огня отключены" + +#: ../3d_armor_ip/init.lua +msgid "3d_armor_ip: Mod loaded but unused." +msgstr "3d_armor_ip: мод загружен но не используется." + +#: ../3d_armor_ip/init.lua +msgid "Back" +msgstr "назад" + +#: ../3d_armor_ip/init.lua ../3d_armor_sfinv/init.lua ../3d_armor_ui/init.lua +msgid "Armor" +msgstr "бронь" + +#: ../3d_armor_sfinv/init.lua +msgid "3d_armor_sfinv: Mod loaded but unused." +msgstr "3d_armor_sfinv: мод загружен но не используется." + +#: ../3d_armor_stand/init.lua +msgid "Armor stand top" +msgstr "стойка для брони (верх)" + +#: ../3d_armor_stand/init.lua +msgid "Armor stand" +msgstr "стойка для брони" + +#: ../3d_armor_stand/init.lua +msgid "Armor Stand" +msgstr "стойка для брони" + +#: ../3d_armor_stand/init.lua +msgid "Locked Armor stand" +msgstr "защищенная стойка для брони" + +#: ../3d_armor_stand/init.lua +msgid "Armor Stand (owned by @1)" +msgstr "стойка для брони (принадлежит @1)" + +#: ../3d_armor_ui/init.lua +msgid "3d_armor_ui: Mod loaded but unused." +msgstr "3d_armor_ui: мод загружен но не используется." + +#: ../3d_armor_ui/init.lua +msgid "3d Armor" +msgstr "3D бронь" + +#: ../3d_armor_ui/init.lua +msgid "Armor not initialized!" +msgstr "бронь не подготовлена!" + +#: ../shields/init.lua +msgid "Admin Shield" +msgstr "щит админа" + +#: ../shields/init.lua +msgid "Wooden Shield" +msgstr "деревянный щит" + +#: ../shields/init.lua +msgid "Enhanced Wood Shield" +msgstr "улучшенный деревянный щит" + +#: ../shields/init.lua +msgid "Cactus Shield" +msgstr "кактусный щит" + +#: ../shields/init.lua +msgid "Enhanced Cactus Shield" +msgstr "улучшенный кактусный щит" + +#: ../shields/init.lua +msgid "Steel Shield" +msgstr "стальной щит" + +#: ../shields/init.lua +msgid "Bronze Shield" +msgstr "бронзовый щит" + +#: ../shields/init.lua +msgid "Diamond Shield" +msgstr "алмазный щит" + +#: ../shields/init.lua +msgid "Gold Shield" +msgstr "золотой щит" + +#: ../shields/init.lua +msgid "Mithril Shield" +msgstr "мифриловый щит" + +#: ../shields/init.lua +msgid "Crystal Shield" +msgstr "кристалловый щит" diff --git a/mods/3d_armor/3d_armor/locale/template.pot b/mods/3d_armor/3d_armor/locale/template.pot new file mode 100644 index 00000000..0b0222c6 --- /dev/null +++ b/mods/3d_armor/3d_armor/locale/template.pot @@ -0,0 +1,294 @@ +# LANGUAGE translation for 3D ARMOR MOD +# Copyright (C) 2018 by Stuart Jones +# This file is distributed under the same license as the 3D ARMOR MOD package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-07-23 21:24+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ../3d_armor/api.lua +msgid "3d_armor: Player reference is nil @1" +msgstr "" + +#: ../3d_armor/api.lua +msgid "3d_armor: Player name is nil @1" +msgstr "" + +#: ../3d_armor/api.lua +msgid "3d_armor: Detached armor inventory is nil @1" +msgstr "" + +#: ../3d_armor/armor.lua +msgid "Admin Helmet" +msgstr "" + +#: ../3d_armor/armor.lua +msgid "Admin Chestplate" +msgstr "" + +#: ../3d_armor/armor.lua +msgid "Admin Leggings" +msgstr "" + +#: ../3d_armor/armor.lua +msgid "Admin Boots" +msgstr "" + +#: ../3d_armor/armor.lua +msgid "Wood Helmet" +msgstr "" + +#: ../3d_armor/armor.lua +msgid "Wood Chestplate" +msgstr "" + +#: ../3d_armor/armor.lua +msgid "Wood Leggings" +msgstr "" + +#: ../3d_armor/armor.lua +msgid "Wood Boots" +msgstr "" + +#: ../3d_armor/armor.lua +msgid "Cactus Helmet" +msgstr "" + +#: ../3d_armor/armor.lua +msgid "Cactus Chestplate" +msgstr "" + +#: ../3d_armor/armor.lua +msgid "Cactus Leggings" +msgstr "" + +#: ../3d_armor/armor.lua +msgid "Cactus Boots" +msgstr "" + +#: ../3d_armor/armor.lua +msgid "Steel Helmet" +msgstr "" + +#: ../3d_armor/armor.lua +msgid "Steel Chestplate" +msgstr "" + +#: ../3d_armor/armor.lua +msgid "Steel Leggings" +msgstr "" + +#: ../3d_armor/armor.lua +msgid "Steel Boots" +msgstr "" + +#: ../3d_armor/armor.lua +msgid "Bronze Helmet" +msgstr "" + +#: ../3d_armor/armor.lua +msgid "Bronze Chestplate" +msgstr "" + +#: ../3d_armor/armor.lua +msgid "Bronze Leggings" +msgstr "" + +#: ../3d_armor/armor.lua +msgid "Bronze Boots" +msgstr "" + +#: ../3d_armor/armor.lua +msgid "Diamond Helmet" +msgstr "" + +#: ../3d_armor/armor.lua +msgid "Diamond Chestplate" +msgstr "" + +#: ../3d_armor/armor.lua +msgid "Diamond Leggings" +msgstr "" + +#: ../3d_armor/armor.lua +msgid "Diamond Boots" +msgstr "" + +#: ../3d_armor/armor.lua +msgid "Gold Helmet" +msgstr "" + +#: ../3d_armor/armor.lua +msgid "Gold Chestplate" +msgstr "" + +#: ../3d_armor/armor.lua +msgid "Gold Leggings" +msgstr "" + +#: ../3d_armor/armor.lua +msgid "Gold Boots" +msgstr "" + +#: ../3d_armor/armor.lua +msgid "Mithril Helmet" +msgstr "" + +#: ../3d_armor/armor.lua +msgid "Mithril Chestplate" +msgstr "" + +#: ../3d_armor/armor.lua +msgid "Mithril Leggings" +msgstr "" + +#: ../3d_armor/armor.lua +msgid "Mithril Boots" +msgstr "" + +#: ../3d_armor/armor.lua +msgid "Crystal Helmet" +msgstr "" + +#: ../3d_armor/armor.lua +msgid "Crystal Chestplate" +msgstr "" + +#: ../3d_armor/armor.lua +msgid "Crystal Leggings" +msgstr "" + +#: ../3d_armor/armor.lua +msgid "Crystal Boots" +msgstr "" + +#: ../3d_armor/init.lua ../3d_armor_ui/init.lua +msgid "Radiation" +msgstr "" + +#: ../3d_armor/init.lua ../3d_armor_ui/init.lua +msgid "Level" +msgstr "" + +#: ../3d_armor/init.lua ../3d_armor_ui/init.lua +msgid "Heal" +msgstr "" + +#: ../3d_armor/init.lua ../3d_armor_ui/init.lua +msgid "Fire" +msgstr "" + +#: ../3d_armor/init.lua +msgid "Your @1 got destroyed!" +msgstr "" + +#: ../3d_armor/init.lua +msgid "3d_armor: Failed to initialize player" +msgstr "" + +#: ../3d_armor/init.lua +msgid "[3d_armor] Fire Nodes disabled" +msgstr "" + +#: ../3d_armor_ip/init.lua +msgid "3d_armor_ip: Mod loaded but unused." +msgstr "" + +#: ../3d_armor_ip/init.lua +msgid "Back" +msgstr "" + +#: ../3d_armor_ip/init.lua ../3d_armor_sfinv/init.lua ../3d_armor_ui/init.lua +msgid "Armor" +msgstr "" + +#: ../3d_armor_sfinv/init.lua +msgid "3d_armor_sfinv: Mod loaded but unused." +msgstr "" + +#: ../3d_armor_stand/init.lua +msgid "Armor stand top" +msgstr "" + +#: ../3d_armor_stand/init.lua +msgid "Armor stand" +msgstr "" + +#: ../3d_armor_stand/init.lua +msgid "Armor Stand" +msgstr "" + +#: ../3d_armor_stand/init.lua +msgid "Locked Armor stand" +msgstr "" + +#: ../3d_armor_stand/init.lua +msgid "Armor Stand (owned by @1)" +msgstr "" + +#: ../3d_armor_ui/init.lua +msgid "3d_armor_ui: Mod loaded but unused." +msgstr "" + +#: ../3d_armor_ui/init.lua +msgid "3d Armor" +msgstr "" + +#: ../3d_armor_ui/init.lua +msgid "Armor not initialized!" +msgstr "" + +#: ../shields/init.lua +msgid "Admin Shield" +msgstr "" + +#: ../shields/init.lua +msgid "Wooden Shield" +msgstr "" + +#: ../shields/init.lua +msgid "Enhanced Wood Shield" +msgstr "" + +#: ../shields/init.lua +msgid "Cactus Shield" +msgstr "" + +#: ../shields/init.lua +msgid "Enhanced Cactus Shield" +msgstr "" + +#: ../shields/init.lua +msgid "Steel Shield" +msgstr "" + +#: ../shields/init.lua +msgid "Bronze Shield" +msgstr "" + +#: ../shields/init.lua +msgid "Diamond Shield" +msgstr "" + +#: ../shields/init.lua +msgid "Gold Shield" +msgstr "" + +#: ../shields/init.lua +msgid "Mithril Shield" +msgstr "" + +#: ../shields/init.lua +msgid "Crystal Shield" +msgstr "" diff --git a/mods/3d_armor/3d_armor/mod.conf b/mods/3d_armor/3d_armor/mod.conf new file mode 100644 index 00000000..56f79738 --- /dev/null +++ b/mods/3d_armor/3d_armor/mod.conf @@ -0,0 +1,4 @@ +name = 3d_armor +depends = default +optional_depends = player_monoids, armor_monoid, pova, fire, ethereal, bakedclay, intllib +description = Adds craftable armor that is visible to other players. diff --git a/mods/3d_armor/3d_armor/models/3d_armor_character.b3d b/mods/3d_armor/3d_armor/models/3d_armor_character.b3d index 278956b0..c4d45b50 100755 Binary files a/mods/3d_armor/3d_armor/models/3d_armor_character.b3d and b/mods/3d_armor/3d_armor/models/3d_armor_character.b3d differ diff --git a/mods/3d_armor/3d_armor/models/3d_armor_character.blend b/mods/3d_armor/3d_armor/models/3d_armor_character.blend index 5ded978c..44f7e27d 100755 Binary files a/mods/3d_armor/3d_armor/models/3d_armor_character.blend and b/mods/3d_armor/3d_armor/models/3d_armor_character.blend differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_trans.png b/mods/3d_armor/3d_armor/textures/3d_armor_trans.png index 4d7beb80..4a31242b 100755 Binary files a/mods/3d_armor/3d_armor/textures/3d_armor_trans.png and b/mods/3d_armor/3d_armor/textures/3d_armor_trans.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_ui_form.png b/mods/3d_armor/3d_armor/textures/3d_armor_ui_form.png index 69980310..993809f2 100644 Binary files a/mods/3d_armor/3d_armor/textures/3d_armor_ui_form.png and b/mods/3d_armor/3d_armor/textures/3d_armor_ui_form.png differ diff --git a/mods/3d_armor/3d_armor/textures/character_preview.png b/mods/3d_armor/3d_armor/textures/character_preview.png index 23d64645..82a0ae45 100644 Binary files a/mods/3d_armor/3d_armor/textures/character_preview.png and b/mods/3d_armor/3d_armor/textures/character_preview.png differ diff --git a/mods/3d_armor/3d_armor/textures/inventory_plus_armor.png b/mods/3d_armor/3d_armor/textures/inventory_plus_armor.png index 6cde6402..f317c709 100755 Binary files a/mods/3d_armor/3d_armor/textures/inventory_plus_armor.png and b/mods/3d_armor/3d_armor/textures/inventory_plus_armor.png differ diff --git a/mods/3d_armor/3d_armor/textures/preview_index.txt b/mods/3d_armor/3d_armor/textures/preview_index.txt new file mode 100644 index 00000000..9e2fe9d4 --- /dev/null +++ b/mods/3d_armor/3d_armor/textures/preview_index.txt @@ -0,0 +1,44 @@ +3d_armor/textures/3d_armor_helmet_wood.png:head +3d_armor/textures/3d_armor_chestplate_wood.png:torso +3d_armor/textures/3d_armor_leggings_wood.png:legs +3d_armor/textures/3d_armor_boots_wood.png:feet + +3d_armor/textures/3d_armor_helmet_cactus.png:head +3d_armor/textures/3d_armor_chestplate_cactus.png:torso +3d_armor/textures/3d_armor_leggings_cactus.png:legs +3d_armor/textures/3d_armor_boots_cactus.png:feet + +3d_armor/textures/3d_armor_helmet_steel.png:head +3d_armor/textures/3d_armor_chestplate_steel.png:torso +3d_armor/textures/3d_armor_leggings_steel.png:legs +3d_armor/textures/3d_armor_boots_steel.png:feet + +3d_armor/textures/3d_armor_helmet_bronze.png:head +3d_armor/textures/3d_armor_chestplate_bronze.png:torso +3d_armor/textures/3d_armor_leggings_bronze.png:legs +3d_armor/textures/3d_armor_boots_bronze.png:feet + +3d_armor/textures/3d_armor_helmet_gold.png:head +3d_armor/textures/3d_armor_chestplate_gold.png:torso +3d_armor/textures/3d_armor_leggings_gold.png:legs +3d_armor/textures/3d_armor_boots_gold.png:feet + +3d_armor/textures/3d_armor_helmet_diamond.png:head +3d_armor/textures/3d_armor_chestplate_diamond.png:torso +3d_armor/textures/3d_armor_leggings_diamond.png:legs +3d_armor/textures/3d_armor_boots_diamond.png:feet + +3d_armor/textures/3d_armor_helmet_mithril.png:head +3d_armor/textures/3d_armor_chestplate_mithril.png:torso +3d_armor/textures/3d_armor_leggings_mithril.png:legs +3d_armor/textures/3d_armor_boots_mithril.png:feet + +3d_armor/textures/3d_armor_helmet_crystal.png:head +3d_armor/textures/3d_armor_chestplate_crystal.png:torso +3d_armor/textures/3d_armor_leggings_crystal.png:legs +3d_armor/textures/3d_armor_boots_crystal.png:feet + +3d_armor/textures/3d_armor_helmet_admin.png:head +3d_armor/textures/3d_armor_chestplate_admin.png:torso +3d_armor/textures/3d_armor_leggings_admin.png:legs +3d_armor/textures/3d_armor_boots_admin.png:feet diff --git a/mods/3d_armor/3d_armor/tools/README.md b/mods/3d_armor/3d_armor/tools/README.md new file mode 100644 index 00000000..6aa7ffed --- /dev/null +++ b/mods/3d_armor/3d_armor/tools/README.md @@ -0,0 +1,7 @@ +# Intllib tool + +please consider using the intllib tool to update locale files: + +```../../intllib/tools/xgettext.sh ../**/*.lua``` + +make sure you are in `3d_armor` derectory before running this command diff --git a/mods/3d_armor/3d_armor/tools/updatepo.sh b/mods/3d_armor/3d_armor/tools/updatepo.sh new file mode 100644 index 00000000..52de9908 --- /dev/null +++ b/mods/3d_armor/3d_armor/tools/updatepo.sh @@ -0,0 +1,24 @@ +#! /bin/bash + +# To create a new translation: +# msginit --locale=ll_CC -o locale/ll_CC.po -i locale/template.pot + +cd "$(dirname "${BASH_SOURCE[0]}")/.."; + +# Extract translatable strings. +xgettext --from-code=UTF-8 \ + --language=Lua \ + --sort-by-file \ + --keyword=S \ + --keyword=NS:1,2 \ + --keyword=N_ \ + --add-comments='Translators:' \ + --add-location=file \ + -o locale/template.pot \ + $(find .. -name '*.lua') + +# Update translations. +find locale -name '*.po' | while read -r file; do + echo $file + msgmerge --update $file locale/template.pot; +done diff --git a/mods/3d_armor/3d_armor_ip/LICENSE.txt b/mods/3d_armor/3d_armor_ip/LICENSE.txt new file mode 100644 index 00000000..b924ac07 --- /dev/null +++ b/mods/3d_armor/3d_armor_ip/LICENSE.txt @@ -0,0 +1,18 @@ +[mod] 3d Armor integration to inventory plus [3d_armor_ip] +========================================================== + +Copyright (C) 2012-2019 stujones11, Stuart Jones + +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. diff --git a/mods/3d_armor/3d_armor_ip/init.lua b/mods/3d_armor/3d_armor_ip/init.lua new file mode 100644 index 00000000..7701a707 --- /dev/null +++ b/mods/3d_armor/3d_armor_ip/init.lua @@ -0,0 +1,38 @@ +-- support for i18n +local S = armor_i18n.gettext +local F = minetest.formspec_escape + +if not minetest.global_exists("inventory_plus") then + minetest.log("warning", S("3d_armor_ip: Mod loaded but unused.")) + return +end + +armor.formspec = "size[8,8.5]button[6,0;2,0.5;main;"..F(S("Back")).."]"..armor.formspec +armor:register_on_update(function(player) + local name = player:get_player_name() + local formspec = armor:get_armor_formspec(name, true) + local page = player:get_inventory_formspec() + if page:find("detached:"..name.."_armor") then + inventory_plus.set_inventory_formspec(player, formspec) + end +end) + +if minetest.get_modpath("crafting") then + inventory_plus.get_formspec = function(player, page) + end +end + +minetest.register_on_joinplayer(function(player) + inventory_plus.register_button(player,"armor", S("Armor")) +end) + +minetest.register_on_player_receive_fields(function(player, formname, fields) + if fields.armor then + local name = armor:get_valid_player(player, "[on_player_receive_fields]") + if not name then + return + end + local formspec = armor:get_armor_formspec(name, true) + inventory_plus.set_inventory_formspec(player, formspec) + end +end) diff --git a/mods/3d_armor/3d_armor_ip/mod.conf b/mods/3d_armor/3d_armor_ip/mod.conf new file mode 100644 index 00000000..0fe7f4e3 --- /dev/null +++ b/mods/3d_armor/3d_armor_ip/mod.conf @@ -0,0 +1,4 @@ +name = 3d_armor_ip +depends = 3d_armor +optional_depends = inventory_plus +description = Adds 3d_armor page to the inventory plus. diff --git a/mods/3d_armor/3d_armor_sfinv/LICENSE.txt b/mods/3d_armor/3d_armor_sfinv/LICENSE.txt new file mode 100644 index 00000000..2b2a9f64 --- /dev/null +++ b/mods/3d_armor/3d_armor_sfinv/LICENSE.txt @@ -0,0 +1,18 @@ +[mod] 3d Armor sfinv integration [3d_armor_sfinv] +================================================= + +Copyright (C) 2012-2019 stujones11, Stuart Jones + +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. diff --git a/mods/3d_armor/3d_armor_sfinv/init.lua b/mods/3d_armor/3d_armor_sfinv/init.lua new file mode 100644 index 00000000..a9371278 --- /dev/null +++ b/mods/3d_armor/3d_armor_sfinv/init.lua @@ -0,0 +1,21 @@ +-- support for i18n +local S = armor_i18n.gettext + +if not minetest.global_exists("sfinv") then + minetest.log("warning", S("3d_armor_sfinv: Mod loaded but unused.")) + return +end + +sfinv.register_page("3d_armor:armor", { + title = S("Armor"), + get = function(self, player, context) + local name = player:get_player_name() + local formspec = armor:get_armor_formspec(name, true) + return sfinv.make_formspec(player, context, formspec, false) + end +}) +armor:register_on_update(function(player) + if sfinv.enabled then + sfinv.set_player_inventory_formspec(player) + end +end) diff --git a/mods/3d_armor/3d_armor_sfinv/mod.conf b/mods/3d_armor/3d_armor_sfinv/mod.conf new file mode 100644 index 00000000..bc0eb898 --- /dev/null +++ b/mods/3d_armor/3d_armor_sfinv/mod.conf @@ -0,0 +1,4 @@ +name = 3d_armor_sfinv +depends = 3d_armor +optional_depends = sfinv +description = Adds 3d_armor page to the sfinv inventory. diff --git a/mods/3d_armor/3d_armor_stand/LICENSE.txt b/mods/3d_armor/3d_armor_stand/LICENSE.txt index 5c8246a9..e3cb55d6 100644 --- a/mods/3d_armor/3d_armor_stand/LICENSE.txt +++ b/mods/3d_armor/3d_armor_stand/LICENSE.txt @@ -1,7 +1,43 @@ [mod] 3d Armor Stand [3d_armor_stand] ===================================== -License Source Code: LGPL v2.1 +License Source Code +------------------- -Lecense Media: CC BY-SA 3.0 +Copyright (C) 2012-2019 stujones11, Stuart Jones +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 diff --git a/mods/3d_armor/3d_armor_stand/depends.txt b/mods/3d_armor/3d_armor_stand/depends.txt deleted file mode 100644 index fdbb2900..00000000 --- a/mods/3d_armor/3d_armor_stand/depends.txt +++ /dev/null @@ -1,2 +0,0 @@ -3d_armor - diff --git a/mods/3d_armor/3d_armor_stand/init.lua b/mods/3d_armor/3d_armor_stand/init.lua index 0a4e91c1..ab4549b7 100644 --- a/mods/3d_armor/3d_armor_stand/init.lua +++ b/mods/3d_armor/3d_armor_stand/init.lua @@ -1,3 +1,6 @@ +-- support for i18n +local S = armor_i18n.gettext + local armor_stand_formspec = "size[8,7]" .. default.gui_bg .. default.gui_bg_img .. @@ -16,6 +19,18 @@ local armor_stand_formspec = "size[8,7]" .. 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) + if stack and stack:get_count() > 0 then + armor.drop_armor(pos, stack) + inv:set_stack("armor_"..element, 1, nil) + end + end +end + local function get_stand_object(pos) local object = nil local objects = minetest.get_objects_inside_radius(pos, 0.5) or {} @@ -60,8 +75,11 @@ local function update_entity(pos) local def = stack:get_definition() or {} local groups = def.groups or {} if groups["armor_"..element] then - local texture = def.texture or item:gsub("%:", "_") - table.insert(textures, texture..".png") + if def.texture then + table.insert(textures, def.texture) + else + table.insert(textures, item:gsub("%:", "_")..".png") + end end end end @@ -79,7 +97,7 @@ local function update_entity(pos) yaw = math.pi / 2 end end - object:setyaw(yaw) + object:set_yaw(yaw) object:set_properties({textures={texture}}) end end @@ -98,24 +116,59 @@ local function has_locked_armor_stand_privilege(meta, player) return true end +local function add_hidden_node(pos, player) + local p = {x=pos.x, y=pos.y + 1, z=pos.z} + local name = player:get_player_name() + local node = minetest.get_node(p) + if node.name == "air" and not minetest.is_protected(pos, name) then + minetest.set_node(p, {name="3d_armor_stand:top"}) + end +end + +local function remove_hidden_node(pos) + local p = {x=pos.x, y=pos.y + 1, z=pos.z} + local node = minetest.get_node(p) + if node.name == "3d_armor_stand:top" then + minetest.remove_node(p) + end +end + +minetest.register_node("3d_armor_stand:top", { + description = S("Armor stand top"), + paramtype = "light", + drawtype = "plantlike", + sunlight_propagates = true, + walkable = true, + pointable = false, + diggable = false, + buildable_to = false, + drop = "", + groups = {not_in_creative_inventory = 1}, + on_blast = function() end, + tiles = {"3d_armor_trans.png"}, +}) + minetest.register_node("3d_armor_stand:armor_stand", { - description = "Armor stand", + description = S("Armor stand"), drawtype = "mesh", mesh = "3d_armor_stand.obj", - tiles = {"default_wood.png", "default_steel_block.png"}, + tiles = {"3d_armor_stand.png"}, paramtype = "light", paramtype2 = "facedir", walkable = false, selection_box = { type = "fixed", - fixed = {-0.5,-0.5,-0.5, 0.5,1.4,0.5} + 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", "Armor Stand") + meta:set_string("infotext", S("Armor Stand")) local inv = meta:get_inventory() for _, element in pairs(elements) do inv:set_size("armor_"..element, 1) @@ -131,8 +184,9 @@ minetest.register_node("3d_armor_stand:armor_stand", { end return true end, - after_place_node = function(pos) + 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 {} @@ -153,36 +207,36 @@ minetest.register_node("3d_armor_stand:armor_stand", { end, after_destruct = function(pos) update_entity(pos) + remove_hidden_node(pos) end, on_blast = function(pos) - local object = get_stand_object(pos) - if object then - object:remove() - end - minetest.after(1, function(pos) - update_entity(pos) - end, pos) + drop_armor(pos) + armor.drop_armor(pos, "3d_armor_stand:armor_stand") + minetest.remove_node(pos) end, }) minetest.register_node("3d_armor_stand:locked_armor_stand", { - description = "Locked Armor stand", + description = S("Locked Armor stand"), drawtype = "mesh", mesh = "3d_armor_stand.obj", - tiles = {"default_wood.png", "default_steel_block.png"}, + tiles = {"3d_armor_stand_locked.png"}, paramtype = "light", paramtype2 = "facedir", walkable = false, selection_box = { type = "fixed", - fixed = {-0.5,-0.5,-0.5, 0.5,1.4,0.5} + 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", "Armor Stand") + meta:set_string("infotext", S("Armor Stand")) meta:set_string("owner", "") local inv = meta:get_inventory() for _, element in pairs(elements) do @@ -203,8 +257,8 @@ minetest.register_node("3d_armor_stand:locked_armor_stand", { 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", "Armor Stand (owned by " .. - meta:get_string("owner") .. ")") + 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) @@ -236,15 +290,10 @@ minetest.register_node("3d_armor_stand:locked_armor_stand", { end, after_destruct = function(pos) update_entity(pos) + remove_hidden_node(pos) end, on_blast = function(pos) - local object = get_stand_object(pos) - if object then - object:remove() - end - minetest.after(1, function(pos) - update_entity(pos) - end, pos) + -- Not affected by TNT end, }) @@ -253,41 +302,45 @@ minetest.register_entity("3d_armor_stand:armor_entity", { visual = "mesh", mesh = "3d_armor_entity.obj", visual_size = {x=1, y=1}, - collisionbox = {-0.1,-0.4,-0.1, 0.1,1.3,0.1}, + collisionbox = {0,0,0,0,0,0}, textures = {"3d_armor_trans.png"}, pos = nil, timer = 0, on_activate = function(self) - local pos = self.object:getpos() + local pos = self.object:get_pos() if pos then self.pos = vector.round(pos) update_entity(pos) end end, - on_step = function(self, dtime) - if not self.pos then - return - end - self.timer = self.timer + dtime - if self.timer > 1 then - self.timer = 0 - local pos = self.object:getpos() - if pos then - if vector.equals(vector.round(pos), self.pos) then - return - end - end - update_entity(self.pos) + on_blast = function(self, damage) + local drops = {} + local node = minetest.get_node(self.pos) + if node.name == "3d_armor_stand:armor_stand" then + drop_armor(self.pos) self.object:remove() end + return false, false, drops end, }) +minetest.register_abm({ + nodenames = {"3d_armor_stand:locked_armor_stand", "3d_armor_stand:armor_stand"}, + interval = 15, + chance = 1, + action = function(pos, node, active_object_count, active_object_count_wider) + local num + num = #minetest.get_objects_inside_radius(pos, 0.5) + if num > 0 then return end + update_entity(pos) + end +}) + minetest.register_craft({ output = "3d_armor_stand:armor_stand", recipe = { - {"", "default:fence_wood", ""}, - {"", "default:fence_wood", ""}, + {"", "group:fence", ""}, + {"", "group:fence", ""}, {"default:steel_ingot", "default:steel_ingot", "default:steel_ingot"}, } }) @@ -298,4 +351,3 @@ minetest.register_craft({ {"3d_armor_stand:armor_stand", "default:steel_ingot"}, } }) - diff --git a/mods/3d_armor/3d_armor_stand/mod.conf b/mods/3d_armor/3d_armor_stand/mod.conf new file mode 100644 index 00000000..d1f1a4eb --- /dev/null +++ b/mods/3d_armor/3d_armor_stand/mod.conf @@ -0,0 +1,2 @@ +name = 3d_armor_stand +depends = 3d_armor diff --git a/mods/3d_armor/3d_armor_stand/models/3d_armor_stand.obj b/mods/3d_armor/3d_armor_stand/models/3d_armor_stand.obj index 89f3793a..0df6dc78 100644 --- a/mods/3d_armor/3d_armor_stand/models/3d_armor_stand.obj +++ b/mods/3d_armor/3d_armor_stand/models/3d_armor_stand.obj @@ -1,191 +1,280 @@ -# Blender v2.73 (sub 0) OBJ File: '3d_armor_stand.blend' +# Blender v2.72 (sub 0) OBJ File: '' # www.blender.org mtllib 3d_armor_stand.mtl -o Player_Cube -v 0.062500 1.312500 -0.062500 -v 0.062500 1.312500 0.062500 -v -0.062500 1.312500 -0.062500 -v -0.062500 1.312500 0.062500 -v -0.187500 -0.437504 0.062500 -v -0.187500 -0.437504 -0.062500 -v -0.187500 0.937500 0.062500 -v -0.187500 0.937500 -0.062500 -v -0.250000 0.250000 0.062500 -v -0.250000 0.250000 -0.062500 -v -0.250000 0.125003 0.062500 -v -0.250000 0.125003 -0.062500 -v 0.250000 0.250000 0.062500 -v 0.250000 0.250000 -0.062500 -v 0.250000 0.125003 0.062500 -v 0.250000 0.125003 -0.062500 -v -0.062500 -0.437504 -0.062500 -v -0.062500 -0.437504 0.062500 -v -0.062500 0.937500 0.062500 -v -0.062500 0.937500 -0.062500 -v 0.062500 0.250000 0.062500 -v 0.062500 0.250000 -0.062500 -v 0.187500 0.250000 -0.062500 -v 0.187500 0.250000 0.062500 -v 0.187500 0.937500 -0.062500 -v 0.187500 0.937500 0.062500 -v 0.187500 -0.437504 -0.062500 -v 0.187500 -0.437504 0.062500 -v 0.062500 -0.437504 -0.062500 -v 0.062500 -0.437504 0.062500 -v 0.062500 0.937500 0.062500 -v 0.062500 0.937500 -0.062500 -v -0.062500 0.812500 -0.062500 -v -0.187500 0.812500 -0.062500 -v -0.062500 0.812500 0.062500 -v -0.187500 0.812500 0.062500 -v 0.062500 0.812500 -0.062500 -v 0.187500 0.812500 -0.062500 -v 0.187500 0.812500 0.062500 -v 0.062500 0.812500 0.062500 -v 0.375000 0.812500 0.062500 -v 0.375000 0.812500 -0.062500 -v 0.375000 0.937500 0.062500 -v 0.375000 0.937500 -0.062500 -v 0.500000 -0.437500 -0.500000 -v 0.500000 -0.437500 0.500000 +o Armor_Stand_Player_Cube_Stand +v 0.062500 0.125002 -0.062500 +v 0.062500 -0.437500 -0.062500 +v 0.062500 -0.437500 0.062500 +v 0.062500 0.125002 0.062500 +v -0.187500 0.250004 0.062500 +v -0.187500 0.250004 -0.062500 +v -0.250000 0.250004 -0.062500 +v -0.250000 0.250004 0.062500 +v -0.062500 -0.437500 -0.062500 +v -0.062500 -0.437500 0.062500 +v -0.187500 -0.437500 0.062500 +v -0.187500 -0.437500 -0.062500 +v -0.187500 0.125002 0.062500 +v -0.187500 0.125002 -0.062500 +v -0.187500 0.937504 0.062500 +v -0.187500 0.937504 -0.062500 +v -0.375000 0.937504 -0.062500 +v -0.375000 0.937504 0.062500 +v -0.062500 0.125002 0.062500 +v 0.187500 0.125002 -0.062500 +v 0.187500 -0.437500 -0.062500 +v -0.062500 0.125002 -0.062500 +v -0.250000 0.125007 -0.062500 +v -0.250000 0.125007 0.062500 +v 0.187500 -0.437500 0.062500 +v 0.187500 0.125002 0.062500 +v -0.062500 0.937504 0.062500 +v -0.187500 0.812504 0.062500 +v -0.062500 0.812504 0.062500 +v -0.062500 0.937504 -0.062500 +v 0.187500 0.250004 -0.062500 +v 0.187500 0.250004 0.062500 +v 0.250000 0.250004 0.062500 +v 0.250000 0.250004 -0.062500 +v 0.250000 0.125007 0.062500 +v 0.250000 0.125007 -0.062500 +v 0.187500 0.812504 0.062500 +v 0.187500 0.812504 -0.062500 +v 0.375000 0.812504 -0.062500 +v 0.375000 0.812504 0.062500 +v 0.187500 0.937504 -0.062500 +v 0.187500 0.937504 0.062500 +v 0.375000 0.937504 0.062500 +v 0.375000 0.937504 -0.062500 +v 0.062500 0.937504 -0.062500 +v 0.062500 0.937504 0.062500 +v -0.062500 0.812504 -0.062500 +v -0.187500 0.812504 -0.062500 +v 0.062500 0.812504 -0.062500 +v 0.062500 0.812504 0.062500 +v -0.375000 0.812504 -0.062500 +v -0.375000 0.812504 0.062500 +v -0.062500 0.250004 0.062500 +v 0.062500 0.250004 0.062500 +v 0.062500 0.250004 -0.062500 +v -0.062500 0.250004 -0.062500 +v -0.062500 1.312504 -0.062500 +v 0.062500 1.312504 -0.062500 +v -0.062500 1.312504 0.062500 +v 0.062500 1.312504 0.062500 v -0.500000 -0.437500 -0.500000 v -0.500000 -0.437500 0.500000 -v -0.062500 0.250000 -0.062500 -v -0.187500 0.250000 -0.062500 -v -0.062500 0.250000 0.062500 -v -0.187500 0.250000 0.062500 -v -0.375000 0.937500 0.062500 -v -0.375000 0.937500 -0.062500 -v -0.375000 0.812500 -0.062500 -v -0.375000 0.812500 0.062500 +v 0.500000 -0.437500 0.500000 +v 0.500000 -0.437500 -0.500000 +v -0.500000 -0.500000 -0.500000 v 0.500000 -0.500000 -0.500000 v 0.500000 -0.500000 0.500000 -v -0.500000 -0.500000 -0.500000 v -0.500000 -0.500000 0.500000 -v 0.187500 0.124998 0.062500 -v 0.187500 0.124998 -0.062500 -v 0.062500 0.124998 0.062500 -v 0.062500 0.124998 -0.062500 -v -0.062500 0.124998 -0.062500 -v -0.187500 0.124998 -0.062500 -v -0.062500 0.124998 0.062500 -v -0.187500 0.124998 0.062500 -vt 0.000000 0.000000 -vt 0.875000 0.000000 -vt 0.875000 0.250000 -vt 0.000000 0.250000 -vt 0.125000 0.500000 -vt 0.125000 0.750000 -vt -0.000000 0.750000 -vt -0.000000 0.500000 -vt 0.750000 0.000000 -vt 1.000000 0.000000 -vt 1.000000 0.250000 -vt 0.750000 0.250000 -vt 0.375000 0.500000 -vt 0.375000 0.750000 -vt 0.875000 0.750000 -vt 0.875000 1.000000 -vt 0.000000 1.000000 -vt 0.875000 0.500000 -vt 0.750000 0.500000 -vt 1.000000 0.500000 -vt 1.000000 0.750000 -vt 0.750000 0.750000 -vt 0.625000 1.000000 -vt 0.375000 1.000000 -vt 0.625000 0.750000 -vt 0.625000 0.500000 -vt 0.250000 0.500000 -vt 0.250000 0.750000 -vt 0.625000 0.250000 -vt 0.625000 -0.000000 -vt 0.250000 0.250000 -vt 0.250000 0.000000 -vt 0.375000 0.250000 -vt 0.250000 1.000000 -vt 1.000000 1.000000 -vt 0.750000 1.000000 -vt 0.375000 -0.000000 -vt 0.125000 0.250000 -vt 0.125000 1.000000 -vt 0.125000 0.000000 -vt -0.000000 0.937500 -vt 1.000000 0.937500 -vt 0.937500 0.000000 -vt 0.937500 1.000000 -vt 1.000000 0.062500 -vt 0.000000 0.062500 +vt 0.062500 0.140625 vt 0.062500 0.000000 -vt 0.062500 1.000000 -g Player_Cube_Stand +vt 0.093750 0.000000 +vt 0.093750 0.140625 +vt 0.140625 0.234375 +vt 0.140625 0.203125 +vt 0.156250 0.203125 +vt 0.156250 0.234375 +vt 0.093750 0.171875 +vt 0.062500 0.171875 +vt 0.218750 0.140625 +vt 0.187500 0.140625 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.078125 0.437500 +vt 0.078125 0.468750 +vt 0.031250 0.468750 +vt 0.031250 0.437500 +vt 0.250000 0.140625 +vt 0.250000 0.000000 +vt 0.031250 0.140625 +vt 0.031250 0.000000 +vt 0.156250 0.140625 +vt 0.156250 0.000000 +vt 0.187500 0.203125 +vt 0.156250 0.171875 +vt 0.187500 0.171875 +vt 0.125000 0.000000 +vt 0.125000 0.140625 +vt 0.000000 0.140625 +vt 0.000000 0.000000 +vt 0.328125 0.437500 +vt 0.296875 0.437500 +vt 0.296875 0.406250 +vt 0.328125 0.406250 +vt 0.109375 0.437500 +vt 0.109375 0.468750 +vt 0.046875 0.203125 +vt 0.046875 0.234375 +vt 0.031250 0.234375 +vt 0.031250 0.203125 +vt 0.000000 0.203125 +vt 0.000000 0.171875 +vt 0.031250 0.171875 +vt 0.265625 0.468750 +vt 0.265625 0.437500 +vt 0.218750 0.437500 +vt 0.218750 0.468750 +vt 0.218750 0.171875 +vt 0.171875 0.468750 +vt 0.171875 0.437500 +vt 0.078125 0.406250 +vt 0.031250 0.406250 +vt 0.140625 0.468750 +vt 0.140625 0.437500 +vt 0.140625 0.406250 +vt 0.171875 0.406250 +vt 0.109375 0.406250 +vt 0.359375 0.437500 +vt 0.359375 0.406250 +vt 0.390625 0.406250 +vt 0.390625 0.437500 +vt 0.437500 0.406250 +vt 0.437500 0.437500 +vt 0.000000 0.437500 +vt 0.000000 0.406250 +vt 0.250000 0.437500 +vt 0.218750 0.406250 +vt 0.250000 0.406250 +vt 0.359375 0.468750 +vt 0.406250 0.468750 +vt 0.406250 0.437500 +vt 0.109375 0.234375 +vt 0.078125 0.234375 +vt 0.078125 0.203125 +vt 0.109375 0.203125 +vt 0.062500 0.468750 +vt 0.062500 0.562500 +vt 0.031250 0.562500 +vt 0.328125 0.468750 +vt 0.296875 0.468750 +vt 0.062500 0.593750 +vt 0.031250 0.593750 +vt 0.093750 0.468750 +vt 0.093750 0.562500 +vt 0.125000 0.468750 +vt 0.125000 0.562500 +vt 0.000000 0.562500 +vt 0.000000 0.468750 +vt 0.078125 0.171875 +vt 0.046875 0.171875 +vt 0.265625 0.203125 +vt 0.265625 0.171875 +vt 0.296875 0.171875 +vt 0.296875 0.203125 +vt 0.265625 0.234375 +vt 0.281250 0.234375 +vt 0.281250 0.203125 +vt 0.312500 0.171875 +vt 0.312500 0.203125 +vt 0.140625 0.171875 +vt 0.171875 0.234375 +vt 0.171875 0.203125 +vt 0.109375 0.171875 +vt 0.234375 0.203125 +vt 0.203125 0.203125 +vt 0.203125 0.171875 +vt 0.234375 0.171875 +vt 0.234375 0.234375 +vt 0.203125 0.234375 +vt 0.062500 0.375000 +vt 0.062500 0.234375 +vt 0.093750 0.234375 +vt 0.093750 0.375000 +vt 0.031250 0.375000 +vt 0.125000 0.234375 +vt 0.125000 0.375000 +vt 0.000000 0.375000 +vt 0.000000 0.234375 +vt 0.218750 0.375000 +vt 0.187500 0.375000 +vt 0.187500 0.234375 +vt 0.218750 0.234375 +vt 0.250000 0.375000 +vt 0.250000 0.234375 +vt 0.156250 0.375000 +vt 0.250000 1.000000 +vt 0.250000 0.750000 +vt 0.500000 0.750000 +vt 0.500000 1.000000 +vt 0.750000 0.750000 +vt 0.750000 1.000000 +vt 0.750000 0.734375 +vt 1.000000 0.734375 +vt 1.000000 0.750000 +vt 0.000000 0.750000 +vt 0.000000 0.734375 +vt 0.250000 0.734375 +vt 0.500000 0.734375 usemtl Stand s off -f 64/1 29/2 30/3 63/4 -f 52/5 50/6 10/7 9/8 -f 17/9 18/10 5/11 6/12 -f 68/3 66/2 6/1 5/4 -f 7/13 8/14 54/7 53/8 -f 67/15 68/16 5/17 18/7 -f 62/4 27/3 29/18 64/8 -f 66/3 65/18 17/8 6/4 -f 9/19 10/20 12/21 11/22 -f 63/7 30/15 28/16 61/17 -f 65/18 67/15 18/7 17/8 -f 61/8 28/18 27/15 62/7 -f 19/23 7/24 36/14 35/25 -f 8/14 7/13 19/26 20/25 -f 23/15 24/18 13/20 14/21 -f 13/8 15/27 16/28 14/7 -f 39/29 38/30 42/10 41/11 -f 29/31 27/4 28/1 30/32 -f 25/28 26/27 43/26 44/25 -f 38/12 25/19 44/13 42/33 -f 25/28 32/7 31/8 26/27 -f 8/26 20/13 33/33 34/29 -f 25/19 38/12 37/11 32/20 -f 31/17 40/7 39/28 26/34 -f 26/34 39/28 41/25 43/23 -f 43/7 41/28 42/34 44/17 -f 53/22 54/21 55/35 56/36 -f 36/14 7/24 53/17 56/7 -f 8/26 34/29 55/11 54/20 -f 34/37 36/33 56/4 55/1 -f 51/13 21/26 22/25 49/14 -f 20/4 3/12 1/19 32/8 -f 40/15 31/16 19/23 35/25 -f 35/29 33/30 37/2 40/3 -f 33/33 20/13 32/5 37/38 -f 3/14 4/24 2/23 1/25 -f 19/12 4/4 3/1 20/9 -f 31/36 2/17 4/7 19/22 -f 32/22 1/7 2/8 31/19 -f 23/5 62/38 64/33 22/13 -f 21/14 63/24 61/39 24/6 -f 61/3 62/2 16/10 15/11 -f 62/38 23/5 14/8 16/4 -f 24/6 61/39 15/17 13/7 -f 50/18 66/3 12/11 10/20 -f 66/40 68/38 11/4 12/1 -f 50/18 49/26 65/29 66/3 -f 51/25 52/15 68/16 67/23 -f 68/16 52/15 9/21 11/35 -f 49/26 22/13 64/33 65/29 -f 51/25 67/23 63/24 21/14 -f 67/33 65/37 64/30 63/29 -f 37/1 22/2 21/3 40/4 -f 38/4 23/3 22/18 37/8 -f 40/7 21/15 24/16 39/17 -f 39/8 24/18 23/15 38/7 -f 36/2 34/3 50/4 52/1 -f 35/15 36/16 52/17 51/7 -f 34/3 33/18 49/8 50/4 -f 33/18 35/15 51/7 49/8 -g Player_Cube_Base +f 1/1 2/2 3/3 4/4 +f 5/5 6/6 7/7 8/8 +f 9/1 10/4 11/9 12/10 +f 13/11 14/12 12/13 11/14 +f 15/15 16/16 17/17 18/18 +f 19/19 13/11 11/14 10/20 +f 2/2 1/1 20/21 21/22 +f 14/12 22/23 9/24 12/13 +f 8/25 7/7 23/26 24/27 +f 4/4 3/3 25/28 26/29 +f 22/23 19/29 10/28 9/24 +f 26/30 25/31 21/22 20/21 +f 27/32 15/33 28/34 29/35 +f 16/16 15/15 27/36 30/37 +f 31/38 32/39 33/40 34/41 +f 33/42 35/43 36/44 34/41 +f 37/45 38/46 39/47 40/48 +f 2/49 21/27 25/12 3/11 +f 41/50 42/51 43/47 44/48 +f 38/52 41/15 44/18 39/53 +f 41/50 45/54 46/55 42/51 +f 16/51 30/55 47/56 48/57 +f 41/15 38/52 49/58 45/36 +f 46/59 50/60 37/61 42/62 +f 42/62 37/61 40/63 43/64 +f 43/65 40/66 39/53 44/18 +f 18/67 17/47 51/68 52/69 +f 28/34 15/33 18/67 52/69 +f 16/51 48/57 51/68 17/47 +f 48/59 28/70 52/71 51/72 +f 53/73 54/74 55/75 56/76 +f 30/77 57/78 58/79 45/17 +f 50/60 46/59 27/32 29/35 +f 29/80 47/32 49/33 50/81 +f 47/56 30/55 45/36 49/58 +f 57/78 59/82 60/83 58/79 +f 27/84 59/85 57/78 30/77 +f 46/86 60/87 59/85 27/84 +f 45/17 58/79 60/88 46/89 +f 1/90 55/75 31/38 20/91 +f 54/92 4/93 26/94 32/95 +f 26/92 20/96 36/97 35/98 +f 20/91 31/38 34/41 36/44 +f 32/95 26/94 35/99 33/100 +f 6/6 14/101 23/26 7/7 +f 14/102 13/103 24/7 23/8 +f 6/6 56/76 22/104 14/101 +f 53/105 5/106 13/107 19/108 +f 13/107 5/106 8/25 24/27 +f 1/90 22/104 56/76 55/75 +f 53/105 19/108 4/93 54/92 +f 1/109 4/105 19/106 22/110 +f 49/111 55/112 54/113 50/114 +f 38/115 31/40 55/112 49/111 +f 50/114 54/113 32/116 37/117 +f 37/118 32/119 31/40 38/115 +f 28/120 48/121 6/122 5/123 +f 29/124 28/120 5/123 53/125 +f 48/121 47/126 56/8 6/122 +f 47/126 29/117 53/116 56/8 usemtl Base -f 47/17 48/1 46/10 45/35 -f 59/1 57/10 58/35 60/17 -f 48/17 60/41 58/42 46/35 -f 46/43 58/10 57/35 45/44 -f 47/1 45/10 57/45 59/46 -f 48/47 47/48 59/17 60/1 +f 61/127 62/128 63/129 64/130 +f 65/129 66/131 67/132 68/130 +f 62/131 68/133 67/134 63/135 +f 63/136 67/137 66/138 64/128 +f 61/129 64/128 66/138 65/139 +f 62/131 61/129 65/139 68/133 diff --git a/mods/3d_armor/3d_armor_stand/models/3d_armor_stand.png b/mods/3d_armor/3d_armor_stand/models/3d_armor_stand.png new file mode 100644 index 00000000..aeb26de9 Binary files /dev/null and b/mods/3d_armor/3d_armor_stand/models/3d_armor_stand.png differ diff --git a/mods/3d_armor/3d_armor_stand/models/3d_armor_stand_locked.png b/mods/3d_armor/3d_armor_stand/models/3d_armor_stand_locked.png new file mode 100644 index 00000000..3ee08b4b Binary files /dev/null and b/mods/3d_armor/3d_armor_stand/models/3d_armor_stand_locked.png differ diff --git a/mods/3d_armor/3d_armor_stand/textures/3d_armor_stand_feet.png b/mods/3d_armor/3d_armor_stand/textures/3d_armor_stand_feet.png index d04f9e39..6b34d666 100644 Binary files a/mods/3d_armor/3d_armor_stand/textures/3d_armor_stand_feet.png and b/mods/3d_armor/3d_armor_stand/textures/3d_armor_stand_feet.png differ diff --git a/mods/3d_armor/3d_armor_stand/textures/3d_armor_stand_head.png b/mods/3d_armor/3d_armor_stand/textures/3d_armor_stand_head.png index 228c08e1..864bf5cf 100644 Binary files a/mods/3d_armor/3d_armor_stand/textures/3d_armor_stand_head.png and b/mods/3d_armor/3d_armor_stand/textures/3d_armor_stand_head.png differ diff --git a/mods/3d_armor/3d_armor_stand/textures/3d_armor_stand_legs.png b/mods/3d_armor/3d_armor_stand/textures/3d_armor_stand_legs.png index 66ec3574..5441f0c4 100644 Binary files a/mods/3d_armor/3d_armor_stand/textures/3d_armor_stand_legs.png and b/mods/3d_armor/3d_armor_stand/textures/3d_armor_stand_legs.png differ diff --git a/mods/3d_armor/3d_armor_stand/textures/3d_armor_stand_shield.png b/mods/3d_armor/3d_armor_stand/textures/3d_armor_stand_shield.png new file mode 100644 index 00000000..51b490f6 Binary files /dev/null and b/mods/3d_armor/3d_armor_stand/textures/3d_armor_stand_shield.png differ diff --git a/mods/3d_armor/3d_armor_stand/textures/3d_armor_stand_torso.png b/mods/3d_armor/3d_armor_stand/textures/3d_armor_stand_torso.png index af95ec7f..1856baea 100644 Binary files a/mods/3d_armor/3d_armor_stand/textures/3d_armor_stand_torso.png and b/mods/3d_armor/3d_armor_stand/textures/3d_armor_stand_torso.png differ diff --git a/mods/3d_armor/3d_armor_ui/LICENSE.txt b/mods/3d_armor/3d_armor_ui/LICENSE.txt new file mode 100644 index 00000000..6ae23a6f --- /dev/null +++ b/mods/3d_armor/3d_armor_ui/LICENSE.txt @@ -0,0 +1,18 @@ +[mod] 3d Armor integration to unified inventory [3d_armor_ui] +============================================================= + +Copyright (C) 2012-2019 stujones11, Stuart Jones + +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. diff --git a/mods/3d_armor/3d_armor_ui/init.lua b/mods/3d_armor/3d_armor_ui/init.lua new file mode 100644 index 00000000..41eec7bb --- /dev/null +++ b/mods/3d_armor/3d_armor_ui/init.lua @@ -0,0 +1,53 @@ +-- support for i18n +local S = armor_i18n.gettext +local F = minetest.formspec_escape +local has_technic = minetest.get_modpath("technic") ~= nil + +if not minetest.global_exists("unified_inventory") then + minetest.log("warning", S("3d_armor_ui: Mod loaded but unused.")) + return +end + +if unified_inventory.sfinv_compat_layer then + return +end + +armor:register_on_update(function(player) + local name = player:get_player_name() + if unified_inventory.current_page[name] == "armor" then + unified_inventory.set_inventory_formspec(player, "armor") + end +end) + +unified_inventory.register_button("armor", { + type = "image", + image = "inventory_plus_armor.png", + tooltip = S("3d Armor") +}) + +unified_inventory.register_page("armor", { + get_formspec = function(player, perplayer_formspec) + local fy = perplayer_formspec.formspec_y + 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 = "background[0.06,"..fy..";7.92,7.52;3d_armor_ui_form.png]".. + "label[0,0;"..F(S("Armor")).."]".. + "list[detached:"..name.."_armor;armor;0,"..fy..";2,3;]".. + "image[2.5,"..(fy - 0.25)..";2,4;"..armor.textures[name].preview.."]".. + "label[5.0,"..(fy + 0.0)..";"..F(S("Level"))..": "..armor.def[name].level.."]".. + "label[5.0,"..(fy + 0.5)..";"..F(S("Heal"))..": "..armor.def[name].heal.."]".. + "listring[current_player;main]".. + "listring[detached:"..name.."_armor;armor]" + if armor.config.fire_protect then + formspec = formspec.."label[5.0,"..(fy + 1.0)..";".. + F(S("Fire"))..": "..armor.def[name].fire.."]" + end + if has_technic then + formspec = formspec.."label[5.0,"..(fy + 1.5)..";".. + F(S("Radiation"))..": "..armor.def[name].groups["radiation"].."]" + end + return {formspec=formspec} + end, +}) diff --git a/mods/3d_armor/3d_armor_ui/mod.conf b/mods/3d_armor/3d_armor_ui/mod.conf new file mode 100644 index 00000000..68eff85f --- /dev/null +++ b/mods/3d_armor/3d_armor_ui/mod.conf @@ -0,0 +1,4 @@ +name = 3d_armor_ui +depends = 3d_armor +optional_depends = unified_inventory +description = Adds 3d_armor page to the unified inventory. diff --git a/mods/3d_armor/LICENSE.md b/mods/3d_armor/LICENSE.md index d383270a..56c93cdd 100755 --- a/mods/3d_armor/LICENSE.md +++ b/mods/3d_armor/LICENSE.md @@ -1,11 +1,9 @@ 3D Armor - Visible Player Armor =============================== -Default Item Textures (C) Cisoun - WTFPL +License Source Code: Copyright (C) 2013-2018 Stuart Jones - LGPL v2.1 -Armor Textures: Copyright (C) 2013 Ryan Jones - CC-BY-SA - -Source Code: Copyright (C) 2013 Stuart Jones - LGPL +Armor Textures: Copyright (C) 2017-2018 davidthecreator - CC-BY-SA 3.0 Special credit to Jordach and MirceaKitsune for providing the default 3d character model. diff --git a/mods/3d_armor/README.md b/mods/3d_armor/README.md index 54548bf8..204bf9d1 100755 --- a/mods/3d_armor/README.md +++ b/mods/3d_armor/README.md @@ -1,17 +1,28 @@ -Modpack - 3d Armor [0.4.5] -========================== +Modpack - 3d Armor [0.4.13] +=========================== + +### Table of Contents + + + + +- [[mod] Visible Player Armor [3d_armor]](#mod-visible-player-armor-3d_armor) +- [[mod] Visible Wielded Items [wieldview]](#mod-visible-wielded-items-wieldview) +- [[mod] Shields [shields]](#mod-shields-shields) +- [[mod] 3d Armor Stand [3d_armor_stand]](#mod-3d-armor-stand-3d_armor_stand) + + + [mod] Visible Player Armor [3d_armor] ------------------------------------- -Minetest Version: 0.4.13 +Minetest Version: 5.0.0 Game: minetest_game and many derivatives Depends: default -Recommends: inventory_plus or unified_inventory (use only one) - Adds craftable armor that is visible to other players. Each armor item worn contributes to a player's armor group level making them less vulnerable to attack. @@ -23,12 +34,18 @@ Fire protection has been added by TenPlus1 and in use when ethereal mod is found armor has been enabled. each piece of armor offers 1 fire protection, level 1 protects against torches, level 2 against crystal spikes, 3 for fire and 5 protects when in lava. -Compatible with player skins [skins] by Zeg9 and Player Textures [player_textures] by PilzAdam +Compatible with sfinv, inventory plus or unified inventory by enabling the appropriate +inventory module, [3d_armor_sfinv], [3d_armor_ip] and [3d_armor_ui] respectively. +Also compatible with [smart_inventory] without the need for additional modules. + +built in support player skins [skins] by Zeg9 and Player Textures [player_textures] by PilzAdam and [simple_skins] by TenPlus1. Armor can be configured by adding a file called armor.conf in 3d_armor mod or world directory. see armor.conf.example for all available options. +For mod installation instructions, please visit: http://wiki.minetest.com/wiki/Installing_Mods + [mod] Visible Wielded Items [wieldview] --------------------------------------- @@ -44,22 +61,6 @@ Depends: 3d_armor Originally a part of 3d_armor, shields have been re-included as an optional extra. If you do not want shields then simply remove the shields folder from the modpack. -[mod] Technic Armor [technic_armor] ------------------------------------ - -Depends: 3d_armor, technic_worldgen - -Adds tin, silver and technic materials to 3d_armor. -Requires technic (technic_worldgen at least) mod. - -[mod] Hazmat Suit [hazmat_suit] -------------------------------- - -Depends: 3d_armor, technic - -Adds hazmat suit to 3d_armor. It protects rather well from fire (if enabled in configuration) and radiation, and it has built-in oxygen supply. -Requires technic mod. - [mod] 3d Armor Stand [3d_armor_stand] ------------------------------------- diff --git a/mods/3d_armor/description.txt b/mods/3d_armor/description.txt deleted file mode 100644 index 2da5ba4d..00000000 --- a/mods/3d_armor/description.txt +++ /dev/null @@ -1 +0,0 @@ -Visible player armor & wielded items. diff --git a/mods/3d_armor/modpack.conf b/mods/3d_armor/modpack.conf new file mode 100644 index 00000000..4e642513 --- /dev/null +++ b/mods/3d_armor/modpack.conf @@ -0,0 +1,2 @@ +name = minetest-3d_armor +description = Visible player armor & wielded items. diff --git a/mods/3d_armor/modpack.txt b/mods/3d_armor/modpack.txt deleted file mode 100755 index e69de29b..00000000 diff --git a/mods/3d_armor/preview_gen.py b/mods/3d_armor/preview_gen.py new file mode 100644 index 00000000..a18954df --- /dev/null +++ b/mods/3d_armor/preview_gen.py @@ -0,0 +1,81 @@ +#!/usr/bin/python + +import os +import sys +import Image + +try : + arg = sys.argv[1] +except IndexError : + print "Usage: preview_gen.py " + sys.exit(1) + +try : + index = open(arg, "r") +except IOError : + print "Failed to open index file%s" %s (arg) + sys.exit(1) + +preview = [] + +for line in index.readlines() : + if ":" in line : + line = line.rstrip('\n') + preview.append(line.split(':')) + +print "Generating preview images..." +for fn, place in preview : + try : + imi = Image.open(fn) + except IOError : + print "Failed to open %s" % (fn) + sys.exit(1) + + w, h = imi.size + if h != w / 2: + print "Incompatible texture size %s" % (fn) + sys.exit(1) + + s = w / 64 + imo = Image.new("RGBA", (16 * s, 32 * s)) + + if place == "all" or place == "head" : + face = (40 * s, 8 * s, 48 * s, 16 * s) + side_l = (56 * s, 8 * s, 57 * s, 16 * s) + side_r = (63 * s, 8 * s, 64 * s, 16 * s) + imo.paste(imi.crop(side_l), (4 * s, 0, 5 * s, 8 * s)) + imo.paste(imi.crop(side_r), (11 * s, 0, 12 * s, 8 * s)) + imo.paste(imi.crop(face), (4 * s, 0, 12 * s, 8 * s)) + + if place == "all" or place == "torso" : + arm = (44 * s, 20 * s, 48 * s, 32 * s) + body = (20 * s, 20 * s, 28 * s, 32 * s) + imo.paste(imi.crop(arm), (0 * s, 8 * s, 4 * s, 20 * s)) + imo.paste(imi.crop(arm).transpose(Image.FLIP_LEFT_RIGHT), + (12 * s, 8 * s, 16 * s, 20 * s)) + imo.paste(imi.crop(body), (4 * s, 8 * s, 12 * s, 20 * s)) + + if place == "all" or place == "legs" : + leg = (4 * s, 20 * s, 8 * s, 32 * s) + imo.paste(imi.crop(leg), (4 * s, 20 * s, 8 * s, 32 * s)) + imo.paste(imi.crop(leg).transpose(Image.FLIP_LEFT_RIGHT), + (8 * s, 20 * s, 12 * s, 32 * s)) + + if place == "all" or place == "feet" : + boot = (20 * s, 4 * s, 24 * s, 11 * s) + imo.paste(imi.crop(boot), (4 * s, 25 * s, 8 * s, 32 * s)) + imo.paste(imi.crop(boot).transpose(Image.FLIP_LEFT_RIGHT), + (8 * s, 25 * s, 12 * s, 32 * s)) + + size = (32 * s, 64 * s) + imo = imo.resize(size) + + if place == "shield" : + shield = (0, 0, 16 * s, 16 * s) + imo.paste(imi.crop(shield), (16 * s, 32 * s, 32 * s, 48 * s)) + + outfile = fn.replace(".png", "_preview.png") + imo.save(outfile) + print outfile + + diff --git a/mods/3d_armor/screenshot.png b/mods/3d_armor/screenshot.png new file mode 100644 index 00000000..c1f9e582 Binary files /dev/null and b/mods/3d_armor/screenshot.png differ diff --git a/mods/3d_armor/settingtypes.txt b/mods/3d_armor/settingtypes.txt new file mode 100644 index 00000000..c6c90de0 --- /dev/null +++ b/mods/3d_armor/settingtypes.txt @@ -0,0 +1,65 @@ + +[3d_armor] + +armor_material_wood (Enable wood armor) bool true +armor_material_cactus (Enable cactus armor) bool true +armor_material_steel (Enable steel armor) bool true +armor_material_bronze (Enable bronze armor) bool true +armor_material_diamond (Enable diamond armor) bool true +armor_material_gold (Enable gold armor) bool true +armor_material_mithril (Enable mithril armor) bool true +armor_material_crystal (Enable crystal armor) bool true + +# Increase this if you get initialization glitches when a player first joins. +armor_init_delay (Initialization delay) int 2 + +# Number of initialization attempts. +# Use in conjunction with armor_init_delay if initialization problems persist. +armor_init_times (Initialization attempts) int 10 + +# Increase this if armor is not getting into bones due to server lag. +armor_bones_delay (Delay for bones) int 1 + +# How often player armor items are updated. +armor_update_time (Armor refresh rate [seconds]) int 1 + +# Drop armor when a player dies. +# Uses bones mod if present, otherwise items are dropped around the player. +armor_drop (Drop armor on death) bool true + +# Pulverize armor when a player dies, overrides armor_drop. +armor_destroy (Pulverize armor on death) bool false + +# You can use this to increase or decrease overall armor effectiveness, +# eg: level_multiplier = 0.5 will reduce armor level by half. +armor_level_multiplier (Armor effectiveness multiplier) float 1 + +# You can use this to increase or decrease overall armor healing, +# eg: armor_heal_multiplier = 0 will disable healing altogether. +armor_heal_multiplier (Armor healing multiplier) float 1 + +# Enable water protection (periodically restores breath when activated). +armor_water_protect (Enable water protection) bool true + +# Enable fire protection (defaults true if using ethereal mod). +armor_fire_protect (Enable fire protection) bool false + +# Enable punch damage effects. +armor_punch_damage (Enable damage effects) bool true + +# Enable migration of old armor inventories. +armor_migrate_old_inventory (Migrate old armor inventories) bool true + + +[shields] + +shields_disable_sounds (Disable shield sounds) bool false + + +[wieldview] + +# Set number of seconds between visible wielded item updates. +wieldview_update_time (Wieldview refresh rate [seconds]) int 2 + +# Show nodes as tiles, disabled by default. +wieldview_node_tiles (Show nodes as tiles) bool false diff --git a/mods/3d_armor/shields/LICENSE.txt b/mods/3d_armor/shields/LICENSE.txt new file mode 100644 index 00000000..1f848593 --- /dev/null +++ b/mods/3d_armor/shields/LICENSE.txt @@ -0,0 +1,26 @@ +[mod] Shields [shields] +======================= + +License Source Code +------------------- + +Copyright (C) 2012-2019 stujones11, Stuart Jones + +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 diff --git a/mods/3d_armor/shields/README.txt b/mods/3d_armor/shields/README.txt index 3146bcbb..5a72097a 100755 --- a/mods/3d_armor/shields/README.txt +++ b/mods/3d_armor/shields/README.txt @@ -1,6 +1,16 @@ +[mod] Shields [shields] +======================= + Adds shields to 3d_armor Depends: 3d_armor Originally a part of 3d_armor, shields have been re-included as an optional extra. If you do not what shields then simply remove the shields folder from the modpack. + +Shields Configuration +--------------------- + +Override the following default settings by adding them to your minetest.conf file. + +shields_disable_sounds = false diff --git a/mods/3d_armor/shields/depends.txt b/mods/3d_armor/shields/depends.txt deleted file mode 100755 index 585cc7aa..00000000 --- a/mods/3d_armor/shields/depends.txt +++ /dev/null @@ -1,2 +0,0 @@ -default -3d_armor diff --git a/mods/3d_armor/shields/description.txt b/mods/3d_armor/shields/description.txt deleted file mode 100644 index cb378bbf..00000000 --- a/mods/3d_armor/shields/description.txt +++ /dev/null @@ -1 +0,0 @@ -Adds visible shields to 3d armor. diff --git a/mods/3d_armor/shields/init.lua b/mods/3d_armor/shields/init.lua index a24d523f..b98490a7 100755 --- a/mods/3d_armor/shields/init.lua +++ b/mods/3d_armor/shields/init.lua @@ -1,24 +1,65 @@ +-- support for i18n +local S = armor_i18n.gettext + +local disable_sounds = minetest.settings:get_bool("shields_disable_sounds") +local use_moreores = minetest.get_modpath("moreores") +local function play_sound_effect(player, name) + if not disable_sounds and player then + local pos = player:get_pos() + if pos then + minetest.sound_play(name, { + pos = pos, + max_hear_distance = 10, + gain = 0.5, + }) + end + end +end + +if minetest.global_exists("armor") and armor.elements then + table.insert(armor.elements, "shield") + local mult = armor.config.level_multiplier or 1 + armor.config.level_multiplier = mult * 0.9 +end + -- Regisiter Shields -minetest.register_tool("shields:shield_admin", { - description = "Admin Shield", +armor:register_armor("shields:shield_admin", { + description = S("Admin Shield"), inventory_image = "shields_inv_shield_admin.png", - groups = {armor_shield=1000, armor_heal=100, armor_use=0}, - wear = 0, + groups = {armor_shield=1000, armor_heal=100, armor_use=0, not_in_creative_inventory=1}, }) -if ARMOR_MATERIALS.wood then - minetest.register_tool("shields:shield_wood", { - description = "Wooden Shield", +minetest.register_alias("adminshield", "shields:shield_admin") + +if armor.materials.wood then + armor:register_armor("shields:shield_wood", { + description = S("Wooden Shield"), inventory_image = "shields_inv_shield_wood.png", groups = {armor_shield=3, armor_heal=0, armor_use=2000}, - wear = 0, + armor_groups = {fleshy=5}, + damage_groups = {cracky=3, snappy=2, choppy=3, crumbly=2, level=1}, + reciprocate_damage = true, + on_damage = function(player, index, stack) + play_sound_effect(player, "default_wood_footstep") + end, + on_destroy = function(player, index, stack) + play_sound_effect(player, "default_wood_footstep") + end, }) - minetest.register_tool("shields:shield_enhanced_wood", { - description = "Enhanced Wood Shield", + armor:register_armor("shields:shield_enhanced_wood", { + description = S("Enhanced Wood Shield"), inventory_image = "shields_inv_shield_enhanced_wood.png", groups = {armor_shield=4, armor_heal=0, armor_use=1000}, - wear = 0, + armor_groups = {fleshy=8}, + damage_groups = {cracky=3, snappy=2, choppy=3, crumbly=2, level=2}, + reciprocate_damage = true, + on_damage = function(player, index, stack) + play_sound_effect(player, "default_dig_metal") + end, + on_destroy = function(player, index, stack) + play_sound_effect(player, "default_dug_metal") + end, }) minetest.register_craft({ output = "shields:shield_enhanced_wood", @@ -30,18 +71,34 @@ if ARMOR_MATERIALS.wood then }) end -if ARMOR_MATERIALS.cactus then - minetest.register_tool("shields:shield_cactus", { - description = "Cactus Shield", +if armor.materials.cactus then + armor:register_armor("shields:shield_cactus", { + description = S("Cactus Shield"), inventory_image = "shields_inv_shield_cactus.png", groups = {armor_shield=5, armor_heal=0, armor_use=1000}, - wear = 0, + armor_groups = {fleshy=5}, + damage_groups = {cracky=3, snappy=3, choppy=2, crumbly=2, level=1}, + reciprocate_damage = true, + on_damage = function(player, index, stack) + play_sound_effect(player, "default_wood_footstep") + end, + on_destroy = function(player, index, stack) + play_sound_effect(player, "default_wood_footstep") + end, }) - minetest.register_tool("shields:shield_enhanced_cactus", { - description = "Enhanced Cactus Shield", + armor:register_armor("shields:shield_enhanced_cactus", { + description = S("Enhanced Cactus Shield"), inventory_image = "shields_inv_shield_enhanced_cactus.png", groups = {armor_shield=6, armor_heal=0, armor_use=500}, - wear = 0, + armor_groups = {fleshy=8}, + damage_groups = {cracky=3, snappy=3, choppy=2, crumbly=2, level=2}, + reciprocate_damage = true, + on_damage = function(player, index, stack) + play_sound_effect(player, "default_dig_metal") + end, + on_destroy = function(player, index, stack) + play_sound_effect(player, "default_dug_metal") + end, }) minetest.register_craft({ output = "shields:shield_enhanced_cactus", @@ -53,70 +110,130 @@ if ARMOR_MATERIALS.cactus then }) end -if ARMOR_MATERIALS.steel then - minetest.register_tool("shields:shield_steel", { - description = "Steel Shield", +if armor.materials.steel then + armor:register_armor("shields:shield_steel", { + description = S("Steel Shield"), inventory_image = "shields_inv_shield_steel.png", - groups = {armor_shield=7, armor_heal=0, armor_use=500}, - wear = 0, + groups = {armor_shield=7, armor_heal=0, armor_use=500, + physics_speed=-0.03, physics_gravity=0.03}, + armor_groups = {fleshy=10}, + damage_groups = {cracky=2, snappy=3, choppy=2, crumbly=1, level=2}, + reciprocate_damage = true, + on_damage = function(player, index, stack) + play_sound_effect(player, "default_dig_metal") + end, + on_destroy = function(player, index, stack) + play_sound_effect(player, "default_dug_metal") + end, }) end -if ARMOR_MATERIALS.bronze then - minetest.register_tool("shields:shield_bronze", { - description = "Bronze Shield", +if armor.materials.bronze then + armor:register_armor("shields:shield_bronze", { + description = S("Bronze Shield"), inventory_image = "shields_inv_shield_bronze.png", - groups = {armor_shield=8, armor_heal=0, armor_use=250}, - wear = 0, + groups = {armor_shield=8, armor_heal=0, armor_use=250, + physics_speed=-0.03, physics_gravity=0.03}, + armor_groups = {fleshy=10}, + damage_groups = {cracky=2, snappy=3, choppy=2, crumbly=1, level=2}, + reciprocate_damage = true, + on_damage = function(player, index, stack) + play_sound_effect(player, "default_dig_metal") + end, + on_destroy = function(player, index, stack) + play_sound_effect(player, "default_dug_metal") + end, }) end -if ARMOR_MATERIALS.diamond then - minetest.register_tool("shields:shield_diamond", { - description = "Diamond Shield", +if armor.materials.diamond then + armor:register_armor("shields:shield_diamond", { + description = S("Diamond Shield"), inventory_image = "shields_inv_shield_diamond.png", groups = {armor_shield=11, armor_heal=0, armor_use=100}, - wear = 0, + armor_groups = {fleshy=15}, + damage_groups = {cracky=2, snappy=1, choppy=1, level=3}, + reciprocate_damage = true, + on_damage = function(player, index, stack) + play_sound_effect(player, "default_glass_footstep") + end, + on_destroy = function(player, index, stack) + play_sound_effect(player, "default_break_glass") + end, }) end -if ARMOR_MATERIALS.gold then - minetest.register_tool("shields:shield_gold", { - description = "Gold Shield", +if armor.materials.gold then + armor:register_armor("shields:shield_gold", { + description = S("Gold Shield"), inventory_image = "shields_inv_shield_gold.png", - groups = {armor_shield=9, armor_heal=0, armor_use=200}, - wear = 0, + groups = {armor_shield=9, armor_heal=0, armor_use=200, + physics_speed=-0.04, physics_gravity=0.04}, + armor_groups = {fleshy=10}, + damage_groups = {cracky=1, snappy=2, choppy=2, crumbly=3, level=2}, + reciprocate_damage = true, + on_damage = function(player, index, stack) + play_sound_effect(player, "default_dig_metal") + end, + on_destroy = function(player, index, stack) + play_sound_effect(player, "default_dug_metal") + end, }) end -if ARMOR_MATERIALS.mithril then - minetest.register_tool("shields:shield_mithril", { - description = "Mithril Shield (Warrior)", +if armor.materials.mithril then + armor:register_armor("shields:shield_mithril", { + description = S("Mithril Shield (Warrior)"), inventory_image = "shields_inv_shield_mithril.png", groups = {armor_shield=13, armor_heal=0, armor_use=50}, - wear = 0, + armor_groups = {fleshy=15}, + damage_groups = {cracky=2, snappy=1, level=3}, + reciprocate_damage = true, + on_damage = function(player, index, stack) + play_sound_effect(player, "default_glass_footstep") + end, + on_destroy = function(player, index, stack) + play_sound_effect(player, "default_break_glass") + end, }) end -if ARMOR_MATERIALS.blackmithril then - minetest.register_tool("shields:shield_blackmithril", { +if armor.materials.blackmithril then + armor:register_armor("shields:shield_blackmithril", { description = "Black Mithril Shield (Warrior)", inventory_image = "shields_inv_shield_black_mithril_warrior.png", groups = {armor_shield=15, armor_heal=0, armor_use=50}, - wear = 0, + armor_groups = {fleshy=12}, + damage_groups = {cracky=2, snappy=1, level=3}, + reciprocate_damage = true, + on_damage = function(player, index, stack) + play_sound_effect(player, "default_glass_footstep") + end, + on_destroy = function(player, index, stack) + play_sound_effect(player, "default_break_glass") + end, }) end -if ARMOR_MATERIALS.crystal then - minetest.register_tool("shields:shield_crystal", { - description = "Crystal Shield", + +if armor.materials.crystal then + armor:register_armor("shields:shield_crystal", { + description = S("Crystal Shield"), inventory_image = "shields_inv_shield_crystal.png", groups = {armor_shield=15, armor_heal=0, armor_use=50, armor_fire=1}, - wear = 0, + armor_groups = {fleshy=15}, + damage_groups = {cracky=2, snappy=1, level=3}, + reciprocate_damage = true, + on_damage = function(player, index, stack) + play_sound_effect(player, "default_glass_footstep") + end, + on_destroy = function(player, index, stack) + play_sound_effect(player, "default_break_glass") + end, }) end -for k, v in pairs(ARMOR_MATERIALS) do +for k, v in pairs(armor.materials) do minetest.register_craft({ output = "shields:shield_"..k, recipe = { @@ -125,9 +242,4 @@ for k, v in pairs(ARMOR_MATERIALS) do {"", v, ""}, }, }) -end - -minetest.after(0, function() - table.insert(armor.elements, "shield") -end) - +end \ No newline at end of file diff --git a/mods/3d_armor/shields/mod.conf b/mods/3d_armor/shields/mod.conf new file mode 100644 index 00000000..9a956297 --- /dev/null +++ b/mods/3d_armor/shields/mod.conf @@ -0,0 +1,3 @@ +name = shields +depends = default, 3d_armor +description = Adds visible shields to 3d armor. diff --git a/mods/3d_armor/shields/textures/preview_index.txt b/mods/3d_armor/shields/textures/preview_index.txt new file mode 100644 index 00000000..4408c61a --- /dev/null +++ b/mods/3d_armor/shields/textures/preview_index.txt @@ -0,0 +1,11 @@ +shields/textures/shields_shield_wood.png:shield +shields/textures/shields_shield_enhanced_wood.png:shield +shields/textures/shields_shield_cactus.png:shield +shields/textures/shields_shield_enhanced_cactus.png:shield +shields/textures/shields_shield_steel.png:shield +shields/textures/shields_shield_bronze.png:shield +shields/textures/shields_shield_gold.png:shield +shields/textures/shields_shield_diamond.png:shield +shields/textures/shields_shield_mithril.png:shield +shields/textures/shields_shield_crystal.png:shield +shields/textures/shields_shield_admin.png:shield diff --git a/mods/3d_armor/shields/textures/shields_shield_blackmithril.png b/mods/3d_armor/shields/textures/shields_shield_blackmithril.png old mode 100755 new mode 100644 diff --git a/mods/3d_armor/wieldview/LICENSE.txt b/mods/3d_armor/wieldview/LICENSE.txt new file mode 100644 index 00000000..e1552c06 --- /dev/null +++ b/mods/3d_armor/wieldview/LICENSE.txt @@ -0,0 +1,18 @@ +[mod] visible wielded items [wieldview] +======================================= + +Copyright (C) 2012-2019 stujones11, Stuart Jones + +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. diff --git a/mods/3d_armor/wieldview/README.txt b/mods/3d_armor/wieldview/README.txt index cffae468..ffa5ef0c 100755 --- a/mods/3d_armor/wieldview/README.txt +++ b/mods/3d_armor/wieldview/README.txt @@ -1,7 +1,7 @@ [mod] visible wielded items [wieldview] ======================================= -depends: default, 3d_armor +Depends on: 3d_armor Makes hand wielded items visible to other players. @@ -13,3 +13,11 @@ wieldview_update_time = 2 # Show nodes as tiles, disabled by default wieldview_node_tiles = false + +Info for modders +################ + +Wield image transformation: To apply a simple transformation to the item in +hand, add the group “wieldview_transform” to the item definition. The group +rating equals one of the numbers used for the [transform texture modifier +of the Lua API. diff --git a/mods/3d_armor/wieldview/depends.txt b/mods/3d_armor/wieldview/depends.txt deleted file mode 100755 index 585cc7aa..00000000 --- a/mods/3d_armor/wieldview/depends.txt +++ /dev/null @@ -1,2 +0,0 @@ -default -3d_armor diff --git a/mods/3d_armor/wieldview/description.txt b/mods/3d_armor/wieldview/description.txt deleted file mode 100644 index 0d51ad95..00000000 --- a/mods/3d_armor/wieldview/description.txt +++ /dev/null @@ -1 +0,0 @@ -Makes hand wielded items visible to other players. diff --git a/mods/3d_armor/wieldview/init.lua b/mods/3d_armor/wieldview/init.lua index d7b78c57..45f9fcaf 100755 --- a/mods/3d_armor/wieldview/init.lua +++ b/mods/3d_armor/wieldview/init.lua @@ -1,13 +1,13 @@ local time = 0 -local update_time = tonumber(minetest.setting_get("wieldview_update_time")) +local update_time = tonumber(minetest.settings:get("wieldview_update_time")) if not update_time then update_time = 2 - minetest.setting_set("wieldview_update_time", tostring(update_time)) + minetest.settings:set("wieldview_update_time", tostring(update_time)) end -local node_tiles = minetest.setting_getbool("wieldview_node_tiles") +local node_tiles = minetest.settings:get_bool("wieldview_node_tiles") if not node_tiles then node_tiles = false - minetest.setting_set("wieldview_node_tiles", "false") + minetest.settings:set("wieldview_node_tiles", "false") end wieldview = { @@ -29,8 +29,15 @@ wieldview.get_item_texture = function(self, item) texture = minetest.inventorycube(minetest.registered_items[item].tiles[1]) end end - if wieldview.transform[item] then - texture = texture.."^[transform"..wieldview.transform[item] + -- Get item image transformation, first from group, then from transform.lua + local transform = minetest.get_item_group(item, "wieldview_transform") + if transform == 0 then + transform = wieldview.transform[item] + end + if transform then + -- This actually works with groups ratings because transform1, transform2, etc. + -- have meaning and transform0 is used for identidy, so it can be ignored + texture = texture.."^[transform"..tostring(transform) end end return texture @@ -64,12 +71,13 @@ minetest.register_on_joinplayer(function(player) end, player) end) -function step() - for _,player in ipairs(minetest.get_connected_players()) do - wieldview:update_wielded_item(player) +minetest.register_globalstep(function(dtime) + time = time + dtime + if time > update_time then + for _,player in ipairs(minetest.get_connected_players()) do + wieldview:update_wielded_item(player) + end + time = 0 end - time = 0 - minetest.after(update_time, step) -end -minetest.after(0, step) +end) diff --git a/mods/3d_armor/wieldview/mod.conf b/mods/3d_armor/wieldview/mod.conf new file mode 100644 index 00000000..c5f48128 --- /dev/null +++ b/mods/3d_armor/wieldview/mod.conf @@ -0,0 +1,3 @@ +name = wieldview +depends = 3d_armor +description = Makes hand wielded items visible to other players. diff --git a/mods/3d_armor_classes/blackmithril/depends.txt b/mods/3d_armor_classes/blackmithril/depends.txt deleted file mode 100755 index 585cc7aa..00000000 --- a/mods/3d_armor_classes/blackmithril/depends.txt +++ /dev/null @@ -1,2 +0,0 @@ -default -3d_armor diff --git a/mods/3d_armor_classes/blackmithril/init.lua b/mods/3d_armor_classes/blackmithril/init.lua index ca586ceb..1ddb7ed8 100755 --- a/mods/3d_armor_classes/blackmithril/init.lua +++ b/mods/3d_armor_classes/blackmithril/init.lua @@ -1,31 +1,36 @@ -if ARMOR_MATERIALS.blackmithril then - -- Register helmets : - minetest.register_tool(":3d_armor:helmet_blackmithril", { +if armor.materials.blackmithril then + + -- Register helmets + armor:register_armor(":3d_armor:helmet_blackmithril", { description = "Black Mithril Helmet (Warrior)", inventory_image = "3d_armor_inv_helmet_blackmithril.png", groups = {armor_head = 11, armor_heal = 0, armor_use = 40}, - wear = 0, + armor_groups = {fleshy = 12}, + damage_groups = {cracky = 2, snappy = 1, level = 3}, }) - -- Register chestplates : - minetest.register_tool(":3d_armor:chestplate_blackmithril", { + -- Register chestplates + armor:register_armor(":3d_armor:chestplate_blackmithril", { description = "Black Mithril Chestplate (Warrior)", inventory_image = "3d_armor_inv_chestplate_blackmithril.png", groups = {armor_torso = 17, armor_heal = 0, armor_use = 40}, - wear = 0, + armor_groups = {fleshy = 12}, + damage_groups = {cracky = 2, snappy = 1, level = 3}, }) - -- Register leggings : - minetest.register_tool(":3d_armor:leggings_blackmithril", { + -- Register leggings + armor:register_armor(":3d_armor:leggings_blackmithril", { description = "Black Mithril Leggings (Warrior)", inventory_image = "3d_armor_inv_leggings_blackmithril.png", groups = {armor_legs = 17, armor_heal = 0, armor_use = 40}, - wear = 0, + armor_groups = {fleshy = 12}, + damage_groups = {cracky = 2, snappy = 1, level = 3}, }) - -- Register boots : - minetest.register_tool(":3d_armor:boots_blackmithril", { + -- Register boots + armor:register_armor(":3d_armor:boots_blackmithril", { description = "Black Mithril Boots (Warrior)", inventory_image = "3d_armor_inv_boots_blackmithril.png", groups = {armor_feet = 11, armor_heal = 0, armor_use = 40}, - wear = 0, + armor_groups = {fleshy = 12}, + damage_groups = {cracky = 2, snappy = 1, level = 3}, }) end @@ -44,4 +49,4 @@ minetest.register_craft({ {"mobs:dungeon_master_diamond", "default:obsidian", ""}, {"", "", ""} } -}) +}) \ No newline at end of file diff --git a/mods/3d_armor_classes/blackmithril/mod.conf b/mods/3d_armor_classes/blackmithril/mod.conf new file mode 100644 index 00000000..fa4acb69 --- /dev/null +++ b/mods/3d_armor_classes/blackmithril/mod.conf @@ -0,0 +1,2 @@ +name = blackmithril +depends = default, 3d_armor \ No newline at end of file diff --git a/mods/3d_armor_classes/hardenedleather/depends.txt b/mods/3d_armor_classes/hardenedleather/depends.txt deleted file mode 100755 index 585cc7aa..00000000 --- a/mods/3d_armor_classes/hardenedleather/depends.txt +++ /dev/null @@ -1,2 +0,0 @@ -default -3d_armor diff --git a/mods/3d_armor_classes/hardenedleather/init.lua b/mods/3d_armor_classes/hardenedleather/init.lua index e4d74857..734edc18 100755 --- a/mods/3d_armor_classes/hardenedleather/init.lua +++ b/mods/3d_armor_classes/hardenedleather/init.lua @@ -1,31 +1,28 @@ -if ARMOR_MATERIALS.hardenedleather then - -- Register helmets : - minetest.register_tool(":3d_armor:helmet_hardenedleather", { +if armor.materials.hardenedleather then + + -- Register helmets + armor:register_armor(":3d_armor:helmet_hardenedleather", { description = "Hardened Leather Helmet (Hunter)", inventory_image = "3d_armor_inv_helmet_hardenedleather.png", groups = {armor_head = 5, armor_heal = 0, armor_use = 250}, - wear = 0, }) - -- Register chestplates : - minetest.register_tool(":3d_armor:chestplate_hardenedleather", { + -- Register chestplates + armor:register_armor(":3d_armor:chestplate_hardenedleather", { description = "Hardened Leather Chestplate (Hunter)", inventory_image = "3d_armor_inv_chestplate_hardenedleather.png", groups = {armor_torso = 8, armor_heal = 0, armor_use = 250}, - wear = 0, }) - -- Register leggings : - minetest.register_tool(":3d_armor:leggings_hardenedleather", { + -- Register leggings + armor:register_armor(":3d_armor:leggings_hardenedleather", { description = "Hardened Leather Leggings (Hunter)", inventory_image = "3d_armor_inv_leggings_hardenedleather.png", groups = {armor_legs = 8, armor_heal = 0, armor_use = 250}, - wear = 0, }) - -- Register boots : - minetest.register_tool(":3d_armor:boots_hardenedleather", { + -- Register boots + armor:register_armor(":3d_armor:boots_hardenedleather", { description = "Hardened Leather Boots (Hunter)", inventory_image = "3d_armor_inv_boots_hardenedleather.png", groups = {armor_feet = 5, armor_heal = 0, armor_use = 250}, - wear = 0, }) end diff --git a/mods/3d_armor_classes/hardenedleather/mod.conf b/mods/3d_armor_classes/hardenedleather/mod.conf new file mode 100644 index 00000000..87587889 --- /dev/null +++ b/mods/3d_armor_classes/hardenedleather/mod.conf @@ -0,0 +1,2 @@ +name = hardenedleather +depends = default, 3d_armor \ No newline at end of file diff --git a/mods/3d_armor_classes/magicmithril/depends.txt b/mods/3d_armor_classes/magicmithril/depends.txt deleted file mode 100755 index 585cc7aa..00000000 --- a/mods/3d_armor_classes/magicmithril/depends.txt +++ /dev/null @@ -1,2 +0,0 @@ -default -3d_armor diff --git a/mods/3d_armor_classes/magicmithril/mod.conf b/mods/3d_armor_classes/magicmithril/mod.conf new file mode 100644 index 00000000..f760a083 --- /dev/null +++ b/mods/3d_armor_classes/magicmithril/mod.conf @@ -0,0 +1,2 @@ +name = magicmithril +depends = default, 3d_armor \ No newline at end of file diff --git a/mods/3d_armor_classes/modpack.conf b/mods/3d_armor_classes/modpack.conf new file mode 100644 index 00000000..098eea84 --- /dev/null +++ b/mods/3d_armor_classes/modpack.conf @@ -0,0 +1 @@ +name = 3d_armor_classes \ No newline at end of file diff --git a/mods/3d_armor_classes/modpack.txt b/mods/3d_armor_classes/modpack.txt deleted file mode 100755 index e69de29b..00000000 diff --git a/mods/3d_armor_classes/obsidian/depends.txt b/mods/3d_armor_classes/obsidian/depends.txt deleted file mode 100755 index 585cc7aa..00000000 --- a/mods/3d_armor_classes/obsidian/depends.txt +++ /dev/null @@ -1,2 +0,0 @@ -default -3d_armor diff --git a/mods/3d_armor_classes/obsidian/mod.conf b/mods/3d_armor_classes/obsidian/mod.conf new file mode 100644 index 00000000..670ec925 --- /dev/null +++ b/mods/3d_armor_classes/obsidian/mod.conf @@ -0,0 +1,2 @@ +name = obsidian +depends = default, 3d_armor \ No newline at end of file diff --git a/mods/3d_armor_classes/reinforcedleather/depends.txt b/mods/3d_armor_classes/reinforcedleather/depends.txt deleted file mode 100755 index 585cc7aa..00000000 --- a/mods/3d_armor_classes/reinforcedleather/depends.txt +++ /dev/null @@ -1,2 +0,0 @@ -default -3d_armor diff --git a/mods/3d_armor_classes/reinforcedleather/init.lua b/mods/3d_armor_classes/reinforcedleather/init.lua index 2aa8a5b4..40001a25 100755 --- a/mods/3d_armor_classes/reinforcedleather/init.lua +++ b/mods/3d_armor_classes/reinforcedleather/init.lua @@ -1,31 +1,28 @@ -if ARMOR_MATERIALS.reinforcedleather then - -- Register helmets : - minetest.register_tool(":3d_armor:helmet_reinforcedleather", { +if armor.materials.reinforcedleather then + + -- Register helmets + armor:register_armor(":3d_armor:helmet_reinforcedleather", { description = "Reinforced Leather Helmet (Hunter)", inventory_image = "3d_armor_inv_helmet_reinforcedleather.png", groups = {armor_head = 6, armor_heal = 0, armor_use = 40}, - wear = 0, }) - -- Register chestplates : - minetest.register_tool(":3d_armor:chestplate_reinforcedleather", { + -- Register chestplates + armor:register_armor(":3d_armor:chestplate_reinforcedleather", { description = "Reinforced Leather Chestplate (Hunter)", inventory_image = "3d_armor_inv_chestplate_reinforcedleather.png", groups = {armor_torso = 11, armor_heal = 0, armor_use = 40}, - wear = 0, }) - -- Register leggings : - minetest.register_tool(":3d_armor:leggings_reinforcedleather", { + -- Register leggings + armor:register_armor(":3d_armor:leggings_reinforcedleather", { description = "Reinforced Leather Leggings (Hunter)", inventory_image = "3d_armor_inv_leggings_reinforcedleather.png", groups = {armor_legs = 11, armor_heal = 0, armor_use = 40}, - wear = 0, }) - -- Register boots : - minetest.register_tool(":3d_armor:boots_reinforcedleather", { + -- Register boots + armor:register_armor(":3d_armor:boots_reinforcedleather", { description = "Reinforced Leather Boots (Hunter)", inventory_image = "3d_armor_inv_boots_reinforcedleather.png", groups = {armor_feet = 6, armor_heal = 0, armor_use = 40}, - wear = 0, }) end @@ -43,4 +40,4 @@ minetest.register_craft({ {"darkage:chain", "mobs:minotaur_eye", ""}, {"", "", ""} } -}) +}) \ No newline at end of file diff --git a/mods/3d_armor_classes/reinforcedleather/mod.conf b/mods/3d_armor_classes/reinforcedleather/mod.conf new file mode 100644 index 00000000..77098b0c --- /dev/null +++ b/mods/3d_armor_classes/reinforcedleather/mod.conf @@ -0,0 +1,2 @@ +name = reinforcedleather +depends = default, 3d_armor \ No newline at end of file diff --git a/mods/action_timers/mod.conf b/mods/action_timers/mod.conf new file mode 100644 index 00000000..7bcaea3a --- /dev/null +++ b/mods/action_timers/mod.conf @@ -0,0 +1 @@ +name = action_timers \ No newline at end of file diff --git a/mods/arrow_signs/depends.txt b/mods/arrow_signs/depends.txt deleted file mode 100755 index 24a785d1..00000000 --- a/mods/arrow_signs/depends.txt +++ /dev/null @@ -1,2 +0,0 @@ -default -locks? \ No newline at end of file diff --git a/mods/arrow_signs/init.lua b/mods/arrow_signs/init.lua index 0c2648ae..d560d813 100755 --- a/mods/arrow_signs/init.lua +++ b/mods/arrow_signs/init.lua @@ -1,10 +1,8 @@ ---more_signs by addi ---Code and Textures are under the CC by-sa 3.0 licence ---see: http://creativecommons.org/licenses/by-sa/3.0/ +-- more_signs by addi +-- Code and Textures are under the CC by-sa 3.0 licence +-- see: http://creativecommons.org/licenses/by-sa/3.0/ - - -arrow_signs={} +arrow_signs = {} arrow_signs.formspec = "field[text;Sign text:;${text}]"; @@ -97,7 +95,7 @@ arrow_signs_on_place = function(itemstack, placer, pointed_thing) itemstack:take_item() end - if not minetest.setting_getbool("creative_mode") then + if not minetest.settings:get_bool("creative_mode") then return itemstack end @@ -106,9 +104,10 @@ end function arrow_signs:savetext(pos, formname, fields, sender) if not minetest.get_player_privs(sender:get_player_name())["interact"] then - minetest.chat_send_player(sender:get_player_name(), "error: you don't have permission to edit the sign. you need the interact priv") - return + minetest.chat_send_player(sender:get_player_name(), "Insufficient privileges (missing privilege: interact).") + return end + local meta = minetest.get_meta(pos) fields.text = fields.text or "" print((sender:get_player_name() or "").." wrote \""..fields.text.. @@ -183,7 +182,7 @@ minetest.register_craft({ } }) ---Redefinition +-- Redefinition minetest.register_abm({ nodenames = {"arrow_signs:wall_right", "arrow_signs:wall_left", "arrow_signs:wall_up", "arrow_signs:wall_down", "more_signs:wall_right","more_signs:wall_left","more_signs:wall_up" ,"more_signs:wall_down" @@ -204,4 +203,4 @@ minetest.register_abm({ } minetest.swap_node(pos, {name="arrow_signs:wall",param2=convert_facedir[node.name][node.param2+1]}) end, -}) +}) \ No newline at end of file diff --git a/mods/arrow_signs/mod.conf b/mods/arrow_signs/mod.conf new file mode 100644 index 00000000..6ccd1b7c --- /dev/null +++ b/mods/arrow_signs/mod.conf @@ -0,0 +1,3 @@ +name = arrow_signs +depends = default +optional_depends = locks \ No newline at end of file diff --git a/mods/automappercolors/init.lua b/mods/automappercolors/init.lua index 55143326..f22e8ea2 100755 --- a/mods/automappercolors/init.lua +++ b/mods/automappercolors/init.lua @@ -42,9 +42,7 @@ minetest.register_chatcommand("amcdumpnodes", { minetest.after(1, function(args) amc_dumpnodes() - if minetest.setting_getbool("log_mods") then + if minetest.settings:get_bool("log_mods") then minetest.log("action", "[automappercolors] nodes dumped") end -end) - - +end) \ No newline at end of file diff --git a/mods/automappercolors/mod.conf b/mods/automappercolors/mod.conf new file mode 100644 index 00000000..a7f38f7d --- /dev/null +++ b/mods/automappercolors/mod.conf @@ -0,0 +1 @@ +name = automappercolors \ No newline at end of file diff --git a/mods/bones/depends.txt b/mods/bones/depends.txt deleted file mode 100755 index b017e45a..00000000 --- a/mods/bones/depends.txt +++ /dev/null @@ -1,4 +0,0 @@ -default -pclasses -unified_inventory? -3d_armor? diff --git a/mods/bones/init.lua b/mods/bones/init.lua index e50edf78..0438559c 100755 --- a/mods/bones/init.lua +++ b/mods/bones/init.lua @@ -134,13 +134,13 @@ end minetest.register_on_dieplayer(function(player) - if minetest.setting_getbool("creative_mode") or not player then + if minetest.settings:get_bool("creative_mode") or not player then return end local player_name = player:get_player_name() if player_name == "" then return end - local pos = player:getpos() + local pos = player:get_pos() pos.y = math.floor(pos.y + 0.5) minetest.chat_send_player(player_name, 'Died at '..math.floor(pos.x)..','..math.floor(pos.y)..','..math.floor(pos.z)) @@ -202,21 +202,19 @@ minetest.register_on_dieplayer(function(player) --3d_armor if minetest.get_modpath("3d_armor") then - local name, player_inv, armor_inv, pos = armor:get_valid_player(player, "[on_dieplayer]") + local name, armor_inv = armor:get_valid_player(player, "[on_dieplayer]") if name then for i=1, player_inv:get_size("armor") do local stack = armor_inv:get_stack("armor", i) if stack:get_count() > 0 and (not pclasses.data.reserved_items[stack:get_name()] or not pclasses.api.util.can_have_item(name, stack:get_name())) then bones_inv:add_item("main", stack) - armor_inv:set_stack("armor", i, nil) player_inv:set_stack("armor", i, nil) end end armor:set_player_armor(player) end end - minetest.chat_send_player(player_name, 'Your bones is at '..math.floor(bones_pos.x)..','..math.floor(bones_pos.y)..','..math.floor(bones_pos.z)) + minetest.chat_send_player(player_name, 'Your bones are at '..math.floor(bones_pos.x)..','..math.floor(bones_pos.y)..','..math.floor(bones_pos.z)) minetest.get_node_timer(bones_pos):start(10) -end) - +end) \ No newline at end of file diff --git a/mods/bones/mod.conf b/mods/bones/mod.conf new file mode 100644 index 00000000..ede5bf7e --- /dev/null +++ b/mods/bones/mod.conf @@ -0,0 +1,3 @@ +name = bones +depends = default, pclasses +optional_depends = unified_inventory, 3d_armor \ No newline at end of file diff --git a/mods/broomstick/depends.txt b/mods/broomstick/depends.txt deleted file mode 100755 index 48fe1d60..00000000 --- a/mods/broomstick/depends.txt +++ /dev/null @@ -1,4 +0,0 @@ -mana -default -mobs -farming \ No newline at end of file diff --git a/mods/broomstick/mod.conf b/mods/broomstick/mod.conf new file mode 100644 index 00000000..23c11952 --- /dev/null +++ b/mods/broomstick/mod.conf @@ -0,0 +1,2 @@ +name = broomstick +depends = mana, default, mobs, farming \ No newline at end of file diff --git a/mods/chesttools/depends.txt b/mods/chesttools/depends.txt deleted file mode 100755 index 4ad96d51..00000000 --- a/mods/chesttools/depends.txt +++ /dev/null @@ -1 +0,0 @@ -default diff --git a/mods/chesttools/mod.conf b/mods/chesttools/mod.conf new file mode 100644 index 00000000..973fbb29 --- /dev/null +++ b/mods/chesttools/mod.conf @@ -0,0 +1,2 @@ +name = chesttools +depends = default \ No newline at end of file diff --git a/mods/christmas_craft/depends.txt b/mods/christmas_craft/depends.txt deleted file mode 100755 index 02de85a8..00000000 --- a/mods/christmas_craft/depends.txt +++ /dev/null @@ -1,3 +0,0 @@ -default -youngtrees? -woodsoils? diff --git a/mods/christmas_craft/init.lua b/mods/christmas_craft/init.lua index fc31a0c8..38417333 100755 --- a/mods/christmas_craft/init.lua +++ b/mods/christmas_craft/init.lua @@ -1,6 +1,6 @@ --dofile(minetest.get_modpath("christmas_craft").."/mods.lua")--disabled because 4seasons is not installed dofile(minetest.get_modpath("christmas_craft").."/crafts.lua") --temporary disabled because cristmas is over-- -if minetest.setting_getbool("is_winter") then +if minetest.settings:get_bool("is_winter") then dofile(minetest.get_modpath("christmas_craft").."/settings.lua") -- makes it snow end @@ -17,7 +17,6 @@ minetest.register_node("christmas_craft:snowman", { }) - minetest.register_node("christmas_craft:christmas_lights", { description = "christmas lights", drawtype = "signlike", @@ -164,7 +163,6 @@ minetest.register_node("christmas_craft:green_baubles", { }, }) - minetest.register_node("christmas_craft:blue_baubles", { description = "Blue Baubles", drawtype = "nodebox", @@ -300,21 +298,21 @@ minetest.register_node("christmas_craft:silver_baubles", { }, }) ------------- ---nodes-- +--------------- +-- nodes -- +-- presents -- +--------------- - -- presents -- - - minetest.register_node("christmas_craft:present_box", { +minetest.register_node("christmas_craft:present_box", { description = "Present Box", tiles = {"christmas_craft_present_box.png"}, is_ground_content = true, paramtype = "light", groups = {crumbly=3}, sounds = default.node_sound_sand_defaults(), - }) +}) - minetest.register_node("christmas_craft:Christmas_present", { +minetest.register_node("christmas_craft:Christmas_present", { description = "Christmas Present", tiles = {"christmas_craft_present_wh.png^christmas_craft_bow_top.png", "christmas_craft_present_wh.png^christmas_craft_bow_bottom.png", "christmas_craft_present_wh.png^christmas_craft_bow_side.png"}, is_ground_content = true, @@ -344,9 +342,9 @@ minetest.register_node("christmas_craft:silver_baubles", { sounds = default.node_sound_dirt_defaults({ footstep = {name="default_grass_footstep", gain=0.4}, }), - }) +}) - minetest.register_node("christmas_craft:Christmas_present_green", { +minetest.register_node("christmas_craft:Christmas_present_green", { description = "Christmas Present Green ", tiles = {"christmas_craft_present_gr.png^christmas_craft_bow_top.png", "christmas_craft_present_gr.png^christmas_craft_bow_bottom.png", "christmas_craft_present_gr.png^christmas_craft_bow_side.png"}, is_ground_content = true, @@ -376,9 +374,9 @@ minetest.register_node("christmas_craft:silver_baubles", { sounds = default.node_sound_dirt_defaults({ footstep = {name="default_grass_footstep", gain=0.4}, }), - }) +}) - minetest.register_node("christmas_craft:Christmas_present_red", { +minetest.register_node("christmas_craft:Christmas_present_red", { description = "Christmas Present Red ", tiles = {"christmas_craft_present_re.png^christmas_craft_bow_top.png", "christmas_craft_present_re.png^christmas_craft_bow_bottom.png", "christmas_craft_present_re.png^christmas_craft_bow_side.png"}, is_ground_content = true, @@ -408,9 +406,9 @@ minetest.register_node("christmas_craft:silver_baubles", { sounds = default.node_sound_dirt_defaults({ footstep = {name="default_grass_footstep", gain=0.4}, }), - }) +}) - minetest.register_node("christmas_craft:Christmas_present_blue", { +minetest.register_node("christmas_craft:Christmas_present_blue", { description = "Christmas Present Blue ", tiles = {"christmas_craft_present_bl.png^christmas_craft_bow_top.png", "christmas_craft_present_bl.png^christmas_craft_bow_bottom.png", "christmas_craft_present_bl.png^christmas_craft_bow_side.png"}, is_ground_content = true, @@ -440,9 +438,9 @@ minetest.register_node("christmas_craft:silver_baubles", { sounds = default.node_sound_dirt_defaults({ footstep = {name="default_grass_footstep", gain=0.4}, }), - }) +}) - minetest.register_node("christmas_craft:Christmas_present_yellow", { +minetest.register_node("christmas_craft:Christmas_present_yellow", { description = "Christmas Present Yellow ", tiles = {"christmas_craft_present_ye.png^christmas_craft_bow_top.png", "christmas_craft_present_ye.png^christmas_craft_bow_bottom.png", "christmas_craft_present_ye.png^christmas_craft_bow_side.png"}, is_ground_content = true, @@ -472,9 +470,9 @@ minetest.register_node("christmas_craft:silver_baubles", { sounds = default.node_sound_dirt_defaults({ footstep = {name="default_grass_footstep", gain=0.4}, }), - }) +}) - minetest.register_node("christmas_craft:Christmas_present_red", { +minetest.register_node("christmas_craft:Christmas_present_red", { description = "Christmas Present Red ", tiles = {"christmas_craft_present_re.png^christmas_craft_bow_top.png", "christmas_craft_present_re.png^christmas_craft_bow_bottom.png", "christmas_craft_present_re.png^christmas_craft_bow_side.png"}, is_ground_content = true, @@ -504,9 +502,9 @@ minetest.register_node("christmas_craft:silver_baubles", { sounds = default.node_sound_dirt_defaults({ footstep = {name="default_grass_footstep", gain=0.4}, }), - }) +}) - minetest.register_node("christmas_craft:Christmas_present_violet", { +minetest.register_node("christmas_craft:Christmas_present_violet", { description = "Christmas Present Violet ", tiles = {"christmas_craft_present_vi.png^christmas_craft_bow_top.png", "christmas_craft_present_vi.png^christmas_craft_bow_bottom.png", "christmas_craft_present_vi.png^christmas_craft_bow_side.png"}, is_ground_content = true, @@ -536,9 +534,9 @@ minetest.register_node("christmas_craft:silver_baubles", { sounds = default.node_sound_dirt_defaults({ footstep = {name="default_grass_footstep", gain=0.4}, }), - }) +}) - minetest.register_node("christmas_craft:Christmas_present_orange", { +minetest.register_node("christmas_craft:Christmas_present_orange", { description = "Christmas Present Orange ", tiles = {"christmas_craft_present_or.png^christmas_craft_bow_top.png", "christmas_craft_present_or.png^christmas_craft_bow_bottom.png", "christmas_craft_present_or.png^christmas_craft_bow_side.png"}, is_ground_content = true, @@ -568,9 +566,9 @@ minetest.register_node("christmas_craft:silver_baubles", { sounds = default.node_sound_dirt_defaults({ footstep = {name="default_grass_footstep", gain=0.4}, }), - }) +}) - minetest.register_node("christmas_craft:Christmas_present_pink", { +minetest.register_node("christmas_craft:Christmas_present_pink", { description = "Christmas Present Pink ", tiles = {"christmas_craft_present_pi.png^christmas_craft_bow_top.png", "christmas_craft_present_pi.png^christmas_craft_bow_bottom.png", "christmas_craft_present_pi.png^christmas_craft_bow_side.png"}, is_ground_content = true, @@ -600,80 +598,79 @@ minetest.register_node("christmas_craft:silver_baubles", { sounds = default.node_sound_dirt_defaults({ footstep = {name="default_grass_footstep", gain=0.4}, }), - }) ------------- +}) ------------ ---Items-- +-- Items -- +-- paper -- +------------ - -- paper -- - - minetest.register_craftitem("christmas_craft:paper_blue", { +minetest.register_craftitem("christmas_craft:paper_blue", { description = "Blue paper", inventory_image = "christmas_craft_paper_bl.png", stack_max = 99, liquids_pointable = false, - }) +}) - minetest.register_craftitem("christmas_craft:paper_yellow", { +minetest.register_craftitem("christmas_craft:paper_yellow", { description = "Yellow paper", inventory_image = "christmas_craft_paper_ye.png", stack_max = 99, liquids_pointable = false, - }) +}) - minetest.register_craftitem("christmas_craft:paper_green", { +minetest.register_craftitem("christmas_craft:paper_green", { description = "Green paper", inventory_image = "christmas_craft_paper_gr.png", stack_max = 99, liquids_pointable = false, - }) +}) - minetest.register_craftitem("christmas_craft:paper_red", { +minetest.register_craftitem("christmas_craft:paper_red", { description = "Red paper", inventory_image = "christmas_craft_paper_re.png", stack_max = 99, liquids_pointable = false, - }) +}) - minetest.register_craftitem("christmas_craft:paper_violet", { +minetest.register_craftitem("christmas_craft:paper_violet", { description = "Violet paper", inventory_image = "christmas_craft_paper_vi.png", stack_max = 99, liquids_pointable = false, - }) +}) - minetest.register_craftitem("christmas_craft:paper_orange", { +minetest.register_craftitem("christmas_craft:paper_orange", { description = "Orange paper", inventory_image = "christmas_craft_paper_or.png", stack_max = 99, liquids_pointable = false, - }) +}) - minetest.register_craftitem("christmas_craft:paper_pink", { +minetest.register_craftitem("christmas_craft:paper_pink", { description = "Pink paper", inventory_image = "christmas_craft_paper_pi.png", stack_max = 99, liquids_pointable = false, - }) +}) -- string -- - minetest.register_craftitem("christmas_craft:red_ribbon", { + minetest.register_craftitem("christmas_craft:red_ribbon", { description = "Red Ribbon", inventory_image = "christmas_craft_red_ribbon.png", stack_max = 99, liquids_pointable = false, - }) +}) -- wish list -- - minetest.register_craftitem("christmas_craft:wish_list", { +minetest.register_craftitem("christmas_craft:wish_list", { description = "Wish list", inventory_image = "christmas_craft_which_list.png", stack_max = 99, liquids_pointable = false, - }) +}) ------------ @@ -786,7 +783,7 @@ minetest.register_craftitem("christmas_craft:snowball", { }) --]] ---Snow. +-- Snow. minetest.register_node("christmas_craft:snow", { tiles = {"snow.png"}, drawtype = "nodebox", @@ -814,4 +811,4 @@ minetest.register_node("christmas_craft:snow", { sounds = default.node_sound_dirt_defaults({ footstep = {name="default_gravel_footstep", gain=0.45}, }), -}) +}) \ No newline at end of file diff --git a/mods/christmas_craft/mod.conf b/mods/christmas_craft/mod.conf new file mode 100644 index 00000000..e147bc86 --- /dev/null +++ b/mods/christmas_craft/mod.conf @@ -0,0 +1,3 @@ +name = christmas_craft +depends = default +optional_depends = youngtrees, woodsoils \ No newline at end of file diff --git a/mods/christmas_craft/mods.lua b/mods/christmas_craft/mods.lua index b9b50cd3..29a8fa62 100755 --- a/mods/christmas_craft/mods.lua +++ b/mods/christmas_craft/mods.lua @@ -1,4 +1,4 @@ -print (" ---- mods override is Loading! ---- ") +print(" ---- mods override is Loading! ---- ") -- leaves -- @@ -36,7 +36,7 @@ minetest.register_node(":4seasons:grass_winter", { }), }) ---normal sand +-- normal sand minetest.register_node(":4seasons:sand_winter", { description = "Sand with snow", tiles = {"4seasons_snow.png", "default_sand.png", "default_sand.png^4seasons_sand_w_snow_side.png"}, @@ -52,7 +52,7 @@ minetest.register_node(":4seasons:sand_winter", { footstep = {name="default_grass_footstep", gain=0.4}, }), }) ---desert sand +-- desert sand minetest.register_node(":4seasons:desertsand_winter", { description = "Desert Sand with snow", tiles = {"4seasons_snow.png", "default_desert_sand.png", "default_desert_sand.png^4seasons_desertsand_w_snow_side.png"}, @@ -68,7 +68,7 @@ minetest.register_node(":4seasons:desertsand_winter", { }), }) ---cactus winter +-- cactus winter minetest.register_node(":4seasons:cactus_winter", { description = "Cactus", @@ -81,4 +81,4 @@ minetest.register_node(":4seasons:cactus_winter", { {items = {'default:snow'}, rarity = 0,}, }}, sounds = default.node_sound_wood_defaults(), -}) +}) \ No newline at end of file diff --git a/mods/christmas_craft/settings.lua b/mods/christmas_craft/settings.lua index ead38b33..118308f3 100755 --- a/mods/christmas_craft/settings.lua +++ b/mods/christmas_craft/settings.lua @@ -1,5 +1,5 @@ -print (" ---- Overrider christmas_craft = true! ---- ") +minetest.log("info", " ---- Overrider christmas_craft = true! ---- ") local dirttiles = {"snow.png", "default_dirt.png", {name = "default_dirt.png^grass_w_snow_side.png", tileable_vertical = false}} local snowballdrop = {items = {'default:snow'}, rarity = 0} @@ -91,6 +91,4 @@ if minetest.registered_items["woodsoils:dirt_with_leaves_2"] then add_drop(minetest.registered_items["woodsoils:dirt_with_leaves_2"]) end - -print (" ---- Overrider christmas_craft [OK] ---- ") - +minetest.log("action", " ---- Overrider christmas_craft [OK] ---- ") \ No newline at end of file diff --git a/mods/death_messages/depends.txt b/mods/death_messages/depends.txt deleted file mode 100755 index 4b7ff57c..00000000 --- a/mods/death_messages/depends.txt +++ /dev/null @@ -1 +0,0 @@ -soundset diff --git a/mods/death_messages/init.lua b/mods/death_messages/init.lua index 4e94acf0..81508108 100755 --- a/mods/death_messages/init.lua +++ b/mods/death_messages/init.lua @@ -201,7 +201,7 @@ end) if RANDOM_MESSAGES == true then minetest.register_on_dieplayer(function(player) local player_name = player:get_player_name() - local node = minetest.registered_nodes[minetest.get_node(player:getpos()).name] + local node = minetest.registered_nodes[minetest.get_node(player:get_pos()).name] if minetest.is_singleplayer() then player_name = "You" end @@ -243,7 +243,7 @@ else -- Should we keep that part? minetest.register_on_dieplayer(function(player) local player_name = player:get_player_name() - local node = minetest.registered_nodes[minetest.get_node(player:getpos()).name] + local node = minetest.registered_nodes[minetest.get_node(player:get_pos()).name] if minetest.is_singleplayer() then player_name = "You" end diff --git a/mods/death_messages/mod.conf b/mods/death_messages/mod.conf new file mode 100644 index 00000000..3eb2971b --- /dev/null +++ b/mods/death_messages/mod.conf @@ -0,0 +1,2 @@ +name = death_messages +depends = soundset \ No newline at end of file diff --git a/mods/eventobjects/depends.txt b/mods/eventobjects/depends.txt deleted file mode 100755 index 331d858c..00000000 --- a/mods/eventobjects/depends.txt +++ /dev/null @@ -1 +0,0 @@ -default \ No newline at end of file diff --git a/mods/eventobjects/init.lua b/mods/eventobjects/init.lua index b46e6047..58943a91 100755 --- a/mods/eventobjects/init.lua +++ b/mods/eventobjects/init.lua @@ -76,7 +76,7 @@ minetest.register_node("eventobjects:surprise_node", { local obj = minetest.spawn_item({x=pos.x, y = pos.y + 1,z=pos.z},stack) inv:remove_item("main",stack) if obj then - obj:setvelocity({x = math.random(-0.4,0.4), y = math.random(2,9), z = math.random(-0.4,0.4)}) + obj:set_velocity({x = math.random(-0.4,0.4), y = math.random(2,9), z = math.random(-0.4,0.4)}) end end end diff --git a/mods/eventobjects/mod.conf b/mods/eventobjects/mod.conf new file mode 100644 index 00000000..74ca26e5 --- /dev/null +++ b/mods/eventobjects/mod.conf @@ -0,0 +1,2 @@ +name = eventobjects +depends = default \ No newline at end of file diff --git a/mods/glow/glow/depends.txt b/mods/glow/glow/depends.txt deleted file mode 100755 index 4ad96d51..00000000 --- a/mods/glow/glow/depends.txt +++ /dev/null @@ -1 +0,0 @@ -default diff --git a/mods/glow/glow/mod.conf b/mods/glow/glow/mod.conf new file mode 100644 index 00000000..ea8f03fb --- /dev/null +++ b/mods/glow/glow/mod.conf @@ -0,0 +1,2 @@ +name = glow +depends = default \ No newline at end of file diff --git a/mods/glow/modpack.conf b/mods/glow/modpack.conf new file mode 100644 index 00000000..a8fa1790 --- /dev/null +++ b/mods/glow/modpack.conf @@ -0,0 +1,2 @@ +name = glow +description = Adds glowing blocks to Minetest. \ No newline at end of file diff --git a/mods/glow/modpack.txt b/mods/glow/modpack.txt deleted file mode 100755 index e69de29b..00000000 diff --git a/mods/hbhunger/hunger.lua b/mods/hbhunger/hunger.lua index 503680a0..76a1dcde 100755 --- a/mods/hbhunger/hunger.lua +++ b/mods/hbhunger/hunger.lua @@ -476,9 +476,9 @@ function hbhunger.handle_node_actions(pos, oldnode, player, ext) -- Armor's exhaus if minetest.get_modpath("3d_armor") then - local name, inv, arminv, pos = armor:get_valid_player(player, "[exhaus]") - local armorinv = arminv:get_list("armor") --- table.foreach(armorinv, print) + -- arminv is null now, get_valid_player only returns name and inv (Mg, 05/10/2019) + local name, inv = armor:get_valid_player(player, "[exhaus]") + local armorinv = inv:get_list("armor") for index, stack in ipairs(armorinv) do if stack:get_count() > 0 and (stack:get_name():split(":")[1] == "3d_armor" or stack:get_name():split(":")[1] == "shields") then local itemname = stack:get_name():split(":")[2]:split("_")[1] diff --git a/mods/interact/depends.txt b/mods/interact/depends.txt deleted file mode 100755 index e69de29b..00000000 diff --git a/mods/interact/mod.conf b/mods/interact/mod.conf new file mode 100644 index 00000000..7fb2483c --- /dev/null +++ b/mods/interact/mod.conf @@ -0,0 +1,2 @@ +name = interact +description = Allows players to automatically get interact. \ No newline at end of file diff --git a/mods/inventory_icon/depends.txt b/mods/inventory_icon/depends.txt deleted file mode 100755 index 7e882b39..00000000 --- a/mods/inventory_icon/depends.txt +++ /dev/null @@ -1 +0,0 @@ -unified_inventory diff --git a/mods/inventory_icon/description.txt b/mods/inventory_icon/description.txt deleted file mode 100755 index 792a3860..00000000 --- a/mods/inventory_icon/description.txt +++ /dev/null @@ -1 +0,0 @@ -Shows a little backpack icon in the HUD, which shows how many slots are available and free in the player inventory. diff --git a/mods/inventory_icon/mod.conf b/mods/inventory_icon/mod.conf new file mode 100644 index 00000000..760c2098 --- /dev/null +++ b/mods/inventory_icon/mod.conf @@ -0,0 +1,6 @@ +name = inventory_icon +depends = unified_inventory +description = """ +Shows a little backpack icon in the HUD, +which shows how many slots are available and free in the player inventory. +""" \ No newline at end of file diff --git a/mods/inventorycheck/depends.txt b/mods/inventorycheck/depends.txt deleted file mode 100755 index 4ad96d51..00000000 --- a/mods/inventorycheck/depends.txt +++ /dev/null @@ -1 +0,0 @@ -default diff --git a/mods/inventorycheck/init.lua b/mods/inventorycheck/init.lua index 33de1e19..4e18238e 100755 --- a/mods/inventorycheck/init.lua +++ b/mods/inventorycheck/init.lua @@ -1,33 +1,38 @@ -- Check Inventory -minetest.register_privilege("inv", "Can use /inv") +minetest.register_privilege("inv", { + description = "Can check other player inventories", + give_to_singleplayer = false, + give_to_admin = true, +}) + minetest.register_chatcommand("inv", { params = "", description = "Shows inventory of ", func = function(name, param) if not minetest.check_player_privs(name, {inv=true}) then - return false, "You don't have permission to check inventories" + return false, "You don't have permission to check other player inventories (missing privilege: inv)." end local player = minetest.get_player_by_name(param) if player == nil then - minetest.chat_send_player(name, param.." is not online right now") + minetest.chat_send_player(name, param .. " is not an existing player/online") return false end local player_inv = player:get_inventory() - local invlist = param.."'s inventory: " - for i=1,player_inv:get_size("main") do + local invlist = param .. "'s inventory: " + for i = 1, player_inv:get_size("main") do local items = player_inv:get_stack("main", i) items = items:to_string() if items ~= "" then - invlist = invlist..items.." | " + invlist = invlist .. items .. " | " end end for i=1,player_inv:get_size("craft") do local items = player_inv:get_stack("craft", i) items = items:to_string() if items ~= "" then - invlist = invlist..items.." | " + invlist = invlist .. items .. " | " end end minetest.chat_send_player(name, invlist) diff --git a/mods/inventorycheck/mod.conf b/mods/inventorycheck/mod.conf new file mode 100644 index 00000000..359e5333 --- /dev/null +++ b/mods/inventorycheck/mod.conf @@ -0,0 +1,3 @@ +name = inventorycheck +depends = default +description = Allows administrators to check other player inventories. \ No newline at end of file diff --git a/mods/invtweak/README.txt b/mods/invtweak/README.txt index 85660526..76745d6e 100755 --- a/mods/invtweak/README.txt +++ b/mods/invtweak/README.txt @@ -1,6 +1,6 @@ Minetest mod "Inventory Tweaks" =============================== -version: 2.0 +version: 2.0.1 License of source code: WTFPL ----------------------------- diff --git a/mods/invtweak/depends.txt b/mods/invtweak/depends.txt deleted file mode 100755 index 86aaa64c..00000000 --- a/mods/invtweak/depends.txt +++ /dev/null @@ -1,3 +0,0 @@ -default -3d_armor? -unified_inventory? \ No newline at end of file diff --git a/mods/invtweak/init.lua b/mods/invtweak/init.lua index 565c01f5..6778583e 100755 --- a/mods/invtweak/init.lua +++ b/mods/invtweak/init.lua @@ -1,4 +1,4 @@ -local auto_refill = minetest.setting_getbool("invtweak_auto_refill") or true +local auto_refill = minetest.settings:get_bool("invtweak_auto_refill") or true local tweak = {} tweak.formspec = {} @@ -98,7 +98,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) end -- player inventory - if minetest.setting_getbool("creative_mode") then + if minetest.settings:get_bool("creative_mode") then add_buttons(player) end end) @@ -212,7 +212,7 @@ if auto_refill == true then if not placer then return end local index = placer:get_wield_index() local cnt = placer:get_wielded_item():get_count()-1 - if minetest.setting_getbool("creative_mode") then + if minetest.settings:get_bool("creative_mode") then return else if cnt == 0 then @@ -228,7 +228,7 @@ wielded["wear"] = {} wielded["index"] = {} minetest.register_on_punchnode(function(pos, node, puncher) - if not puncher or minetest.setting_getbool("creative_mode") then + if not puncher or minetest.settings:get_bool("creative_mode") then return end local name = puncher:get_player_name() @@ -255,23 +255,45 @@ end) minetest.register_on_dignode(function(pos, oldnode, digger) if not digger then return end + local name = digger:get_player_name() - if not name then return end local item = digger:get_wielded_item() - if not item then return end local index = digger:get_wield_index() local tname = item:get_name() - if tname ~= "" then return end --new not empty, return + local def = minetest.registered_tools[tname] - local old_name = wielded["name"][name] - if old_name == nil or old_name == "" then return end -- old empty, not replace - local old_wear = wielded["wear"][name] - local old_index = wielded["index"][name] - if index == old_index and old_wear == true then -- if identical index and old is tools, replace - minetest.sound_play("invtweak_tool_break", {pos = digger:getpos(), gain = 0.9, max_hear_distance = 5}) - if auto_refill == true then - minetest.after(0.01, refill, digger, old_name, index) + if not item then + return + end + if tname ~= "" then + if not def then + return + end + end + + local old_name = wielded.name[name] + if tname == old_name and tname == "" then + return + end + + local old = wielded.wear[name] + if not old and tname == "" then + old = 0 + end + local new = item:get_wear() + + if old ~= new then + if old > 0 and new == 0 then + wielded.wear[name] = new + minetest.sound_play("invtweak_tool_break", { + pos = digger:get_pos(), + gain = 0.9, + max_hear_distance = 5 + }) + if auto_refill == true then + minetest.after(0.01, refill, digger, old_name, index) + end end end end) diff --git a/mods/invtweak/mod.conf b/mods/invtweak/mod.conf new file mode 100644 index 00000000..0ac93109 --- /dev/null +++ b/mods/invtweak/mod.conf @@ -0,0 +1,3 @@ +name = invtweak +depends = default +optional_depends = 3d_armor, unified_inventory \ No newline at end of file diff --git a/mods/jumping/init.lua b/mods/jumping/init.lua index cf2a7fe7..196a4500 100755 --- a/mods/jumping/init.lua +++ b/mods/jumping/init.lua @@ -79,6 +79,6 @@ minetest.register_craft({ } }) -if minetest.setting_getbool("log_mods") then +if minetest.settings:get_bool("log_mods") then minetest.log("action", "Carbone: [jumping] loaded.") end diff --git a/mods/jumping/mod.conf b/mods/jumping/mod.conf new file mode 100644 index 00000000..83e66330 --- /dev/null +++ b/mods/jumping/mod.conf @@ -0,0 +1,2 @@ +name = jumping +description = Adds trampolines and cushions. \ No newline at end of file diff --git a/mods/maze/.gitignore b/mods/maze/.gitignore new file mode 100644 index 00000000..f3a7e468 --- /dev/null +++ b/mods/maze/.gitignore @@ -0,0 +1,4 @@ +## Generic ignorable patterns and files +*~ +.*.swp +debug.txt \ No newline at end of file diff --git a/mods/maze/mod.conf b/mods/maze/mod.conf new file mode 100644 index 00000000..3bbfdbe0 --- /dev/null +++ b/mods/maze/mod.conf @@ -0,0 +1 @@ +name = maze \ No newline at end of file diff --git a/mods/meru/depends.txt b/mods/meru/depends.txt deleted file mode 100755 index 4ad96d51..00000000 --- a/mods/meru/depends.txt +++ /dev/null @@ -1 +0,0 @@ -default diff --git a/mods/meru/mod.conf b/mods/meru/mod.conf new file mode 100644 index 00000000..6a10e641 --- /dev/null +++ b/mods/meru/mod.conf @@ -0,0 +1,2 @@ +name = meru +depends = default \ No newline at end of file diff --git a/mods/mff/mff_core/mod.conf b/mods/mff/mff_core/mod.conf new file mode 100644 index 00000000..4b0a53ee --- /dev/null +++ b/mods/mff/mff_core/mod.conf @@ -0,0 +1 @@ +name = mff_core \ No newline at end of file diff --git a/mods/mff/mff_pclasses/depends.txt b/mods/mff/mff_pclasses/depends.txt deleted file mode 100755 index 5b6cf0f4..00000000 --- a/mods/mff/mff_pclasses/depends.txt +++ /dev/null @@ -1,3 +0,0 @@ -mff_core -pclasses -runes diff --git a/mods/mff/mff_pclasses/mod.conf b/mods/mff/mff_pclasses/mod.conf new file mode 100644 index 00000000..9b053e51 --- /dev/null +++ b/mods/mff/mff_pclasses/mod.conf @@ -0,0 +1,2 @@ +name = mff_pclasses +depends = mff_core, pclasses, runes \ No newline at end of file diff --git a/mods/mff/mff_quests/depends.txt b/mods/mff/mff_quests/depends.txt deleted file mode 100755 index e8cef597..00000000 --- a/mods/mff/mff_quests/depends.txt +++ /dev/null @@ -1,3 +0,0 @@ -mff_core -default -quests \ No newline at end of file diff --git a/mods/mff/mff_quests/init.lua b/mods/mff/mff_quests/init.lua index 113bd826..cf3d30e1 100755 --- a/mods/mff/mff_quests/init.lua +++ b/mods/mff/mff_quests/init.lua @@ -156,7 +156,7 @@ function mff.quests.handle_quest_end(playername, questname, metadata) end local p = minetest.get_player_by_name(playername) if p then - minetest.add_item(p:getpos(), {name=item, count=count, wear=0, metadata=""}) + minetest.add_item(p:get_pos(), {name=item, count=count, wear=0, metadata=""}) end end end diff --git a/mods/mff/mff_quests/mod.conf b/mods/mff/mff_quests/mod.conf new file mode 100644 index 00000000..5b8c969c --- /dev/null +++ b/mods/mff/mff_quests/mod.conf @@ -0,0 +1,2 @@ +name = mff_quests +depends = mff_core, default, quests \ No newline at end of file diff --git a/mods/mff/modpack.conf b/mods/mff/modpack.conf new file mode 100644 index 00000000..713705b9 --- /dev/null +++ b/mods/mff/modpack.conf @@ -0,0 +1 @@ +name = mff \ No newline at end of file diff --git a/mods/mff/modpack.txt b/mods/mff/modpack.txt deleted file mode 100755 index e69de29b..00000000 diff --git a/mods/multitest/depends.txt b/mods/multitest/depends.txt deleted file mode 100755 index efe819e4..00000000 --- a/mods/multitest/depends.txt +++ /dev/null @@ -1,3 +0,0 @@ -default -stairs -wool \ No newline at end of file diff --git a/mods/multitest/mod.conf b/mods/multitest/mod.conf new file mode 100644 index 00000000..18142c20 --- /dev/null +++ b/mods/multitest/mod.conf @@ -0,0 +1,2 @@ +name = multitest +depends = default, stairs, wool \ No newline at end of file diff --git a/mods/music/depends.txt b/mods/music/depends.txt deleted file mode 100755 index 892af91d..00000000 --- a/mods/music/depends.txt +++ /dev/null @@ -1 +0,0 @@ -soundset? diff --git a/mods/music/init.lua b/mods/music/init.lua index 3b3bdf2b..e672a87c 100755 --- a/mods/music/init.lua +++ b/mods/music/init.lua @@ -1,7 +1,7 @@ - local players = {} local music_volume = 1 local SOUNDVOLUME = 1 + -- compatibility with soundset mod local get_volume if (minetest.get_modpath("soundset")) ~= nil then diff --git a/mods/music/mod.conf b/mods/music/mod.conf new file mode 100644 index 00000000..daebca10 --- /dev/null +++ b/mods/music/mod.conf @@ -0,0 +1,2 @@ +name = music +optional_depends = soundset \ No newline at end of file diff --git a/mods/news/mod.conf b/mods/news/mod.conf new file mode 100644 index 00000000..70f21285 --- /dev/null +++ b/mods/news/mod.conf @@ -0,0 +1 @@ +name = news \ No newline at end of file diff --git a/mods/notice/mod.conf b/mods/notice/mod.conf new file mode 100644 index 00000000..70df61ff --- /dev/null +++ b/mods/notice/mod.conf @@ -0,0 +1 @@ +name = notice \ No newline at end of file diff --git a/mods/paintings/depends.txt b/mods/paintings/depends.txt deleted file mode 100755 index 470ec30b..00000000 --- a/mods/paintings/depends.txt +++ /dev/null @@ -1,2 +0,0 @@ -default -wool diff --git a/mods/paintings/init.lua b/mods/paintings/init.lua index 14ee0375..42efa428 100755 --- a/mods/paintings/init.lua +++ b/mods/paintings/init.lua @@ -52,6 +52,6 @@ for _, row in ipairs(paintings.dyes) do }) end -if minetest.setting_getbool("log_mods") then +if minetest.settings:get_bool("log_mods") then minetest.log("action", "Carbone: [paintings] loaded.") -end +end \ No newline at end of file diff --git a/mods/paintings/mod.conf b/mods/paintings/mod.conf new file mode 100644 index 00000000..e044cffb --- /dev/null +++ b/mods/paintings/mod.conf @@ -0,0 +1,2 @@ +name = paintings +depends = default, wool \ No newline at end of file diff --git a/mods/pclasses/api.lua b/mods/pclasses/api.lua index 58c420d2..2e521bb4 100755 --- a/mods/pclasses/api.lua +++ b/mods/pclasses/api.lua @@ -143,6 +143,10 @@ end ------------------------------------------- function vacuum_inventory(name, inv, invname, bury) + if inv == nil then + minetest.log("warning", "[pclasses/api] Inventory given to `vacuum_inventory` is nil") + return + end local ref = minetest.get_player_by_name(name) for i = 1, inv:get_size(invname) do local stack = inv:get_stack(invname, i) diff --git a/mods/pclasses/depends.txt b/mods/pclasses/depends.txt deleted file mode 100755 index 86d6f14f..00000000 --- a/mods/pclasses/depends.txt +++ /dev/null @@ -1,3 +0,0 @@ -3d_armor -sprint -unified_inventory diff --git a/mods/pclasses/mod.conf b/mods/pclasses/mod.conf new file mode 100644 index 00000000..0fcc40dc --- /dev/null +++ b/mods/pclasses/mod.conf @@ -0,0 +1,2 @@ +name = pclasses +depends = 3d_armor, sprint, unified_inventory \ No newline at end of file diff --git a/mods/peace_areas/init.lua b/mods/peace_areas/init.lua index cdd36dd4..1cc0594e 100755 --- a/mods/peace_areas/init.lua +++ b/mods/peace_areas/init.lua @@ -6,7 +6,7 @@ peace_areas = {areas = {}} function is_in_peace_area(player) - local pos = player:getpos() + local pos = player:get_pos() if pos == nil then return false end for name, positions in pairs(peace_areas.areas) do local pos1 = positions["pos1"] @@ -55,7 +55,7 @@ end minetest.register_on_punchplayer(function(player, hitter) if is_in_peace_area(player) and hitter:is_player() then minetest.chat_send_player(hitter:get_player_name(), "You cannot punch player " .. - player:get_player_name() .. ". They are in area '" .. peace_area(player:getpos()) .. "'.") + player:get_player_name() .. ". They are in area '" .. peace_area(player:get_pos()) .. "'.") return true --[[ Note: @@ -72,4 +72,4 @@ end peace_areas.register_area("spawn", { ["pos1"] = {x = 16, y = 0, z = 12}, ["pos2"] = {x = 42, y = 100, z = -14}, -}) +}) \ No newline at end of file diff --git a/mods/peace_areas/mod.conf b/mods/peace_areas/mod.conf new file mode 100644 index 00000000..e09a8a01 --- /dev/null +++ b/mods/peace_areas/mod.conf @@ -0,0 +1 @@ +name = peace_areas \ No newline at end of file diff --git a/mods/profnsched/init.lua b/mods/profnsched/init.lua index 5ea060bb..5c166d41 100644 --- a/mods/profnsched/init.lua +++ b/mods/profnsched/init.lua @@ -2,8 +2,8 @@ dofile(minetest.get_modpath("profnsched").."/queue.lua") dofile(minetest.get_modpath("profnsched").."/after.lua") local durations = {} -local active = minetest.setting_get("profnsched_activate") -local dump_delay = minetest.setting_get("profnsched_dump_delay") +local active = minetest.settings:get("profnsched_activate") +local dump_delay = minetest.settings:get("profnsched_dump_delay") if not active then active = false end if not dump_delay then dump_delay = 60*5 end @@ -49,7 +49,7 @@ minetest.register_chatcommand("profnsched", { func = function(name, param) active = true if param == "" then - dump_delay = minetest.setting_get("profnsched_dump_delay") + dump_delay = minetest.settings:get("profnsched_dump_delay") if not dump_delay then dump_delay = 60*5 end else dump_delay = tonumber(param) @@ -58,9 +58,6 @@ minetest.register_chatcommand("profnsched", { end }) - - - local function update_durations(mod_name, func_id, dtime) if not durations[mod_name] then durations[mod_name] = {} @@ -101,17 +98,15 @@ function minetest.register_globalstep(func) } end - - -- Main code local last_elapsed_local_dtime = 0 local last_internal_server_dtime = 0 -local tick_dtime = minetest.setting_get("dedicated_server_step")*1000000 +local tick_dtime = minetest.settings:get("dedicated_server_step") * 1000000 old_globalstep(function(dtime) local begin_time = core.get_us_time() - last_internal_server_dtime = dtime*1000000 - last_elapsed_local_dtime + last_internal_server_dtime = dtime * 1000000 - last_elapsed_local_dtime local launch_dtime = begin_time - last_internal_server_dtime local current_durations = {} diff --git a/mods/profnsched/mod.conf b/mods/profnsched/mod.conf new file mode 100644 index 00000000..e9528da2 --- /dev/null +++ b/mods/profnsched/mod.conf @@ -0,0 +1 @@ +name = profnsched \ No newline at end of file diff --git a/mods/report/depends.txt b/mods/report/depends.txt deleted file mode 100644 index 7381e1c2..00000000 --- a/mods/report/depends.txt +++ /dev/null @@ -1,3 +0,0 @@ -email -action_timers -unified_inventory? diff --git a/mods/report/mod.conf b/mods/report/mod.conf new file mode 100644 index 00000000..f68e4bc8 --- /dev/null +++ b/mods/report/mod.conf @@ -0,0 +1,4 @@ +name = report +depends = email, action_timers +optional_depends = unified_inventory +description = Allows players to report misconduct or bugs using /report. \ No newline at end of file diff --git a/mods/riesenpilz/depends.txt b/mods/riesenpilz/depends.txt deleted file mode 100755 index 6687d7c0..00000000 --- a/mods/riesenpilz/depends.txt +++ /dev/null @@ -1,4 +0,0 @@ -default -vector_extras -fence_registration? -watershed? diff --git a/mods/riesenpilz/mod.conf b/mods/riesenpilz/mod.conf new file mode 100644 index 00000000..414cfd43 --- /dev/null +++ b/mods/riesenpilz/mod.conf @@ -0,0 +1,3 @@ +name = riesenpilz +depends = default, vector_extras +optional_depends = fence_registration, watershed \ No newline at end of file diff --git a/mods/runes/depends.txt b/mods/runes/depends.txt deleted file mode 100755 index 66340fe7..00000000 --- a/mods/runes/depends.txt +++ /dev/null @@ -1,3 +0,0 @@ -default -unified_inventory -mana diff --git a/mods/runes/glyphs.lua b/mods/runes/glyphs.lua index 6d8ddfbd..3b799320 100644 --- a/mods/runes/glyphs.lua +++ b/mods/runes/glyphs.lua @@ -224,7 +224,7 @@ register_glyph("watchdog", { ref:set_hp(ref:get_hp() - 1) meta:set_int("charge", (meta:get_int("charge") or 1) - 1) local collisionbox = ref:get_properties().collisionbox - local refpos = ref:getpos() + local refpos = ref:get_pos() refpos.y = refpos.y + (((collisionbox[4] or 0) - (collisionbox[3] or 0)) / 2) local vel = vector.subtract(refpos, pos) @@ -299,7 +299,7 @@ register_glyph("manasucker", { end local collisionbox = ref:get_properties().collisionbox - local refpos = ref:getpos() + local refpos = ref:get_pos() refpos.y = refpos.y + (((collisionbox[4] or 0) - (collisionbox[3] or 0)) / 2) local vel = vector.subtract(pos, refpos) @@ -342,7 +342,7 @@ register_glyph("spontafire", { for _, ref in pairs(minetest.get_objects_inside_radius(pos, 10)) do if ((not ref:is_player()) and ref:get_entity_name() ~= "gauges:hp_bar") or (ref:get_player_name() ~= "" and ref:get_player_name() ~= meta:get_string("master")) then - local rpos = vector.round(ref:getpos()) + local rpos = vector.round(ref:get_pos()) rpos.y = rpos.y - 1 local node = minetest.get_node(rpos) if node.name == "air" and (not minetest.is_protected(rpos, meta:get_string("master"))) @@ -380,10 +380,10 @@ register_glyph("prankster", { local stolen = inv:get_stack("main", thieff) inv:set_stack("main", thieff, nil) if stolen:get_count() > 0 then - local pos = ref:getpos() + local pos = ref:get_pos() local obj = minetest.add_item({x = pos.x, y = pos.y + 2.5, z = pos.z}, stolen) if obj then - obj:setvelocity({x = math.random(-5,5), y = math.random(3,5), z = math.random(-5,5)}) + obj:set_velocity({x = math.random(-5,5), y = math.random(3,5), z = math.random(-5,5)}) end charge = charge - runes.glyphs["prankster"].mana_cost minetest.chat_send_player(ref:get_player_name(), "The Prankster attacked you and stole " .. stolen:get_count() .. " " diff --git a/mods/runes/handlers.lua b/mods/runes/handlers.lua index 82d26d11..d13c70e6 100755 --- a/mods/runes/handlers.lua +++ b/mods/runes/handlers.lua @@ -28,8 +28,8 @@ end earthquake = function(runelevel, itemstack, user, pointed_thing) for name,entity in pairs(minetest.get_objects_inside_radius(user:getpos(),10)) do - local v = entity:getvelocity() or {x=0,y=0,z=0} - entity:setvelocity({x=v.x, y=v.y+50, z=v.z}) + local v = entity:get_velocity() or {x=0,y=0,z=0} + entity:set_velocity({x=v.x, y=v.y+50, z=v.z}) end end @@ -74,7 +74,7 @@ set_manamax = function(runelevel, itemstack, user, pointed_thing) -- Violent reaction if not admin user:set_hp(1) user:set_breath(1) - local userpos = user:getpos() + local userpos = user:get_pos() local useritem = user:get_wielded_item() user:setpos({x=userpos.x+math.random(-50,50),y = userpos.y + math.random(1,20),z = userpos.z + math.random(-50,50)}) end @@ -89,7 +89,7 @@ set_manamax = function(level, itemstack, user, pointed_thing) -- Violent reaction if not admin user:set_hp(1) user:set_breath(1) - local userpos = user:getpos() + local userpos = user:get_pos() local useritem = user:get_wielded_item() user:setpos({x=userpos.x+math.random(-50,50),y = userpos.y + math.random(1,20),z = userpos.z + math.random(-50,50)}) end diff --git a/mods/runes/mod.conf b/mods/runes/mod.conf new file mode 100644 index 00000000..d0d6d7a2 --- /dev/null +++ b/mods/runes/mod.conf @@ -0,0 +1,2 @@ +name = runes +depends = default, unified_inventory, mana \ No newline at end of file diff --git a/mods/sea/clams/depends.txt b/mods/sea/clams/depends.txt deleted file mode 100755 index 331d858c..00000000 --- a/mods/sea/clams/depends.txt +++ /dev/null @@ -1 +0,0 @@ -default \ No newline at end of file diff --git a/mods/sea/clams/init.lua b/mods/sea/clams/init.lua index cb513138..6e7fcc25 100755 --- a/mods/sea/clams/init.lua +++ b/mods/sea/clams/init.lua @@ -1,4 +1,6 @@ +-------- -- NODES +-------- minetest.register_node("clams:sandalgae", { description = "Sandalgae", @@ -56,9 +58,9 @@ minetest.register_node("clams:dirtalgaeused", { sounds = default.node_sound_dirt_defaults(), }) - +----------- -- ENTITIES - +----------- -- The registration of the entities' code is copied from celeron55's mob (the DM's fireball) @@ -92,7 +94,7 @@ minetest.register_entity("clams:whiteshell", { if self.phase >= 3 then self.phase = 0 end - self.object:setsprite({x=0, y=self.phase}) + self.object:set_sprite({x=0, y=self.phase}) local phasearmor = { [0]={fleshy=0}, [1]={fleshy=30}, @@ -114,7 +116,7 @@ minetest.register_entity("clams:whiteshell", { for _,drop in ipairs(self.drops) do if math.random(1, drop.chance) == 1 then for i=1,math.random(drop.min, drop.max) do - local obj = minetest.add_item(self.object:getpos(), drop.name) + local obj = minetest.add_item(self.object:get_pos(), drop.name) if obj then obj:get_luaentity().collect = true local x = math.random(1, 5) @@ -125,7 +127,7 @@ minetest.register_entity("clams:whiteshell", { if math.random(1,2) == 1 then z = -z end - obj:setvelocity({x=1/x, y=obj:getvelocity().y, z=1/z}) + obj:set_velocity({x=1/x, y=obj:get_velocity().y, z=1/z}) end end end @@ -135,9 +137,9 @@ minetest.register_entity("clams:whiteshell", { end, }) - +-------------- -- CRAFT ITEMS - +-------------- minetest.register_craftitem("clams:collectedalgae", { description = "Collected algae", @@ -149,9 +151,9 @@ minetest.register_craftitem("clams:crushedwhite", { inventory_image = "clams_crushedwhite.png", }) - +------------------- -- ALGAE GENERATION - +------------------- minetest.register_ore({ ore_type = "scatter", @@ -214,9 +216,9 @@ local function generate_ore(name, wherein, minp, maxp, seed, chunks_per_volume, end end - ---ABM's - +-------- +-- ABM's +-------- minetest.register_abm({ nodenames = {"clams:sandalgaeused"}, @@ -294,9 +296,9 @@ minetest.register_abm({ end, }) - +---------- -- ALIASES - +---------- minetest.register_alias("clams:yellowalgae","clams:collectedalgae") minetest.register_alias("clams:redalgae","clams:collectedalgae") diff --git a/mods/sea/clams/mod.conf b/mods/sea/clams/mod.conf new file mode 100644 index 00000000..20214a04 --- /dev/null +++ b/mods/sea/clams/mod.conf @@ -0,0 +1,2 @@ +name = clams +depends = default \ No newline at end of file diff --git a/mods/sea/modpack.conf b/mods/sea/modpack.conf new file mode 100644 index 00000000..a33e9025 --- /dev/null +++ b/mods/sea/modpack.conf @@ -0,0 +1 @@ +name = sea \ No newline at end of file diff --git a/mods/sea/modpack.txt b/mods/sea/modpack.txt deleted file mode 100755 index e69de29b..00000000 diff --git a/mods/sea/noairblocks/depends.txt b/mods/sea/noairblocks/depends.txt deleted file mode 100755 index 331d858c..00000000 --- a/mods/sea/noairblocks/depends.txt +++ /dev/null @@ -1 +0,0 @@ -default \ No newline at end of file diff --git a/mods/sea/noairblocks/mod.conf b/mods/sea/noairblocks/mod.conf new file mode 100644 index 00000000..67b1abb3 --- /dev/null +++ b/mods/sea/noairblocks/mod.conf @@ -0,0 +1,2 @@ +name = noairblocks +depends = default \ No newline at end of file diff --git a/mods/sea/seacobble/depends.txt b/mods/sea/seacobble/depends.txt deleted file mode 100755 index 257d73b9..00000000 --- a/mods/sea/seacobble/depends.txt +++ /dev/null @@ -1,6 +0,0 @@ -default -dye -stairs -clams -whiteshell? -colormachine? \ No newline at end of file diff --git a/mods/sea/seacobble/mod.conf b/mods/sea/seacobble/mod.conf new file mode 100644 index 00000000..e11a1c4c --- /dev/null +++ b/mods/sea/seacobble/mod.conf @@ -0,0 +1,3 @@ +name = seacobble +depends = default, dye, stairs, clams +optional_depends = whiteshell, colormachine \ No newline at end of file diff --git a/mods/sea/seacoral/depends.txt b/mods/sea/seacoral/depends.txt deleted file mode 100755 index e1b2c4e6..00000000 --- a/mods/sea/seacoral/depends.txt +++ /dev/null @@ -1,4 +0,0 @@ -default -noairblocks -unifieddyes -colormachine? \ No newline at end of file diff --git a/mods/sea/seacoral/mod.conf b/mods/sea/seacoral/mod.conf new file mode 100644 index 00000000..4fbd47c3 --- /dev/null +++ b/mods/sea/seacoral/mod.conf @@ -0,0 +1,3 @@ +name = seacoral +depends = default, noairblocks, unifieddyes +optional_depends = colormachine \ No newline at end of file diff --git a/mods/sea/seaglass/depends.txt b/mods/sea/seaglass/depends.txt deleted file mode 100755 index 5ceae13c..00000000 --- a/mods/sea/seaglass/depends.txt +++ /dev/null @@ -1,6 +0,0 @@ -default -dye -stairs -clams -stairsshine -colormachine? \ No newline at end of file diff --git a/mods/sea/seaglass/init.lua b/mods/sea/seaglass/init.lua index 6e8deba6..243b15db 100755 --- a/mods/sea/seaglass/init.lua +++ b/mods/sea/seaglass/init.lua @@ -319,420 +319,420 @@ register_seaglass_craft("stairs:slab_seaglassoff_blue", {'stairsshine:slab_seagl register_seaglass_craft("stairs:slab_seaglassoff_white", {'stairsshine:slab_seaglass_white'}) register_seaglass_craft("stairs:slab_seaglassoff_black", {'stairsshine:slab_seaglass_black'}) - +------------ -- FUNCTIONS - +------------ local on_lamp_puncher = function (pos, node, puncher) if node.name == "seaglass:seaglass" then minetest.add_node(pos, {name="seaglass:seaglassoff"}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "seaglass:seaglassoff" then minetest.add_node(pos, {name="seaglass:seaglass"}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "seaglass:seaglass_yellow" then minetest.add_node(pos, {name="seaglass:seaglassoff_yellow"}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "seaglass:seaglassoff_yellow" then minetest.add_node(pos, {name="seaglass:seaglass_yellow"}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "seaglass:seaglass_red" then minetest.add_node(pos, {name="seaglass:seaglassoff_red"}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "seaglass:seaglassoff_red" then minetest.add_node(pos, {name="seaglass:seaglass_red"}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "seaglass:seaglass_blue" then minetest.add_node(pos, {name="seaglass:seaglassoff_blue"}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "seaglass:seaglassoff_blue" then minetest.add_node(pos, {name="seaglass:seaglass_blue"}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "seaglass:seaglass_white" then minetest.add_node(pos, {name="seaglass:seaglassoff_white"}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "seaglass:seaglassoff_white" then minetest.add_node(pos, {name="seaglass:seaglass_white"}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "seaglass:seaglass_black" then minetest.add_node(pos, {name="seaglass:seaglassoff_black"}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "seaglass:seaglassoff_black" then minetest.add_node(pos, {name="seaglass:seaglass_black"}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass" and node.param2 == 0 then minetest.add_node(pos, {name="stairs:stair_seaglassoff", param2 = 0}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff" and node.param2 == 0 then minetest.add_node(pos, {name="stairsshine:stair_seaglass", param2 = 0}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass" and node.param2 == 1 then minetest.add_node(pos, {name="stairs:stair_seaglassoff", param2 = 1}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff" and node.param2 == 1 then minetest.add_node(pos, {name="stairsshine:stair_seaglass", param2 = 1}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass" and node.param2 == 2 then minetest.add_node(pos, {name="stairs:stair_seaglassoff", param2 = 2}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff" and node.param2 == 2 then minetest.add_node(pos, {name="stairsshine:stair_seaglass", param2 = 2}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass" and node.param2 == 3 then minetest.add_node(pos, {name="stairs:stair_seaglassoff", param2 = 3}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff" and node.param2 == 3 then minetest.add_node(pos, {name="stairsshine:stair_seaglass", param2 = 3}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass" and node.param2 == 20 then minetest.add_node(pos, {name="stairs:stair_seaglassoff", param2 = 20}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff" and node.param2 == 20 then minetest.add_node(pos, {name="stairsshine:stair_seaglass", param2 = 20}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass" and node.param2 == 21 then minetest.add_node(pos, {name="stairs:stair_seaglassoff", param2 = 21}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff" and node.param2 == 21 then minetest.add_node(pos, {name="stairsshine:stair_seaglass", param2 = 21}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass" and node.param2 == 22 then minetest.add_node(pos, {name="stairs:stair_seaglassoff", param2 = 22}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff" and node.param2 == 22 then minetest.add_node(pos, {name="stairsshine:stair_seaglass", param2 = 22}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass" and node.param2 == 23 then minetest.add_node(pos, {name="stairs:stair_seaglassoff", param2 = 23}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff" and node.param2 == 23 then minetest.add_node(pos, {name="stairsshine:stair_seaglass", param2 = 23}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass_yellow" and node.param2 == 0 then minetest.add_node(pos, {name="stairs:stair_seaglassoff_yellow", param2 = 0}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff_yellow" and node.param2 == 0 then minetest.add_node(pos, {name="stairsshine:stair_seaglass_yellow", param2 = 0}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass_yellow" and node.param2 == 1 then minetest.add_node(pos, {name="stairs:stair_seaglassoff_yellow", param2 = 1}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff_yellow" and node.param2 == 1 then minetest.add_node(pos, {name="stairsshine:stair_seaglass_yellow", param2 = 1}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass_yellow" and node.param2 == 2 then minetest.add_node(pos, {name="stairs:stair_seaglassoff_yellow", param2 = 2}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff_yellow" and node.param2 == 2 then minetest.add_node(pos, {name="stairsshine:stair_seaglass_yellow", param2 = 2}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass_yellow" and node.param2 == 3 then minetest.add_node(pos, {name="stairs:stair_seaglassoff_yellow", param2 = 3}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff_yellow" and node.param2 == 3 then minetest.add_node(pos, {name="stairsshine:stair_seaglass_yellow", param2 = 3}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass_yellow" and node.param2 == 20 then minetest.add_node(pos, {name="stairs:stair_seaglassoff_yellow", param2 = 20}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff_yellow" and node.param2 == 20 then minetest.add_node(pos, {name="stairsshine:stair_seaglass_yellow", param2 = 20}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass_yellow" and node.param2 == 21 then minetest.add_node(pos, {name="stairs:stair_seaglassoff_yellow", param2 = 21}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff_yellow" and node.param2 == 21 then minetest.add_node(pos, {name="stairsshine:stair_seaglass_yellow", param2 = 21}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass_yellow" and node.param2 == 22 then minetest.add_node(pos, {name="stairs:stair_seaglassoff_yellow", param2 = 22}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff_yellow" and node.param2 == 22 then minetest.add_node(pos, {name="stairsshine:stair_seaglass_yellow", param2 = 22}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass_yellow" and node.param2 == 23 then minetest.add_node(pos, {name="stairs:stair_seaglassoff_yellow", param2 = 23}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff_yellow" and node.param2 == 23 then minetest.add_node(pos, {name="stairsshine:stair_seaglass_yellow", param2 = 23}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass_red" and node.param2 == 0 then minetest.add_node(pos, {name="stairs:stair_seaglassoff_red", param2 = 0}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff_red" and node.param2 == 0 then minetest.add_node(pos, {name="stairsshine:stair_seaglass_red", param2 = 0}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass_red" and node.param2 == 1 then minetest.add_node(pos, {name="stairs:stair_seaglassoff_red", param2 = 1}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff_red" and node.param2 == 1 then minetest.add_node(pos, {name="stairsshine:stair_seaglass_red", param2 = 1}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass_red" and node.param2 == 2 then minetest.add_node(pos, {name="stairs:stair_seaglassoff_red", param2 = 2}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff_red" and node.param2 == 2 then minetest.add_node(pos, {name="stairsshine:stair_seaglass_red", param2 = 2}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass_red" and node.param2 == 3 then minetest.add_node(pos, {name="stairs:stair_seaglassoff_red", param2 = 3}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff_red" and node.param2 == 3 then minetest.add_node(pos, {name="stairsshine:stair_seaglass_red", param2 = 3}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass_red" and node.param2 == 20 then minetest.add_node(pos, {name="stairs:stair_seaglassoff_red", param2 = 20}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff_red" and node.param2 == 20 then minetest.add_node(pos, {name="stairsshine:stair_seaglass_red", param2 = 20}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass_red" and node.param2 == 21 then minetest.add_node(pos, {name="stairs:stair_seaglassoff_red", param2 = 21}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff_red" and node.param2 == 21 then minetest.add_node(pos, {name="stairsshine:stair_seaglass_red", param2 = 21}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass_red" and node.param2 == 22 then minetest.add_node(pos, {name="stairs:stair_seaglassoff_red", param2 = 22}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff_red" and node.param2 == 22 then minetest.add_node(pos, {name="stairsshine:stair_seaglass_red", param2 = 22}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass_red" and node.param2 == 23 then minetest.add_node(pos, {name="stairs:stair_seaglassoff_red", param2 = 23}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff_red" and node.param2 == 23 then minetest.add_node(pos, {name="stairsshine:stair_seaglass_red", param2 = 23}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass_blue" and node.param2 == 0 then minetest.add_node(pos, {name="stairs:stair_seaglassoff_blue", param2 = 0}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff_blue" and node.param2 == 0 then minetest.add_node(pos, {name="stairsshine:stair_seaglass_blue", param2 = 0}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass_blue" and node.param2 == 1 then minetest.add_node(pos, {name="stairs:stair_seaglassoff_blue", param2 = 1}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff_blue" and node.param2 == 1 then minetest.add_node(pos, {name="stairsshine:stair_seaglass_blue", param2 = 1}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass_blue" and node.param2 == 2 then minetest.add_node(pos, {name="stairs:stair_seaglassoff_blue", param2 = 2}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff_blue" and node.param2 == 2 then minetest.add_node(pos, {name="stairsshine:stair_seaglass_blue", param2 = 2}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass_blue" and node.param2 == 3 then minetest.add_node(pos, {name="stairs:stair_seaglassoff_blue", param2 = 3}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff_blue" and node.param2 == 3 then minetest.add_node(pos, {name="stairsshine:stair_seaglass_blue", param2 = 3}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass_blue" and node.param2 == 20 then minetest.add_node(pos, {name="stairs:stair_seaglassoff_blue", param2 = 20}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff_blue" and node.param2 == 20 then minetest.add_node(pos, {name="stairsshine:stair_seaglass_blue", param2 = 20}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass_blue" and node.param2 == 21 then minetest.add_node(pos, {name="stairs:stair_seaglassoff_blue", param2 = 21}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff_blue" and node.param2 == 21 then minetest.add_node(pos, {name="stairsshine:stair_seaglass_blue", param2 = 21}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass_blue" and node.param2 == 22 then minetest.add_node(pos, {name="stairs:stair_seaglassoff_blue", param2 = 22}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff_blue" and node.param2 == 22 then minetest.add_node(pos, {name="stairsshine:stair_seaglass_blue", param2 = 22}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass_blue" and node.param2 == 23 then minetest.add_node(pos, {name="stairs:stair_seaglassoff_blue", param2 = 23}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff_blue" and node.param2 == 23 then minetest.add_node(pos, {name="stairsshine:stair_seaglass_blue", param2 = 23}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass_white" and node.param2 == 0 then minetest.add_node(pos, {name="stairs:stair_seaglassoff_white", param2 = 0}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff_white" and node.param2 == 0 then minetest.add_node(pos, {name="stairsshine:stair_seaglass_white", param2 = 0}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass_white" and node.param2 == 1 then minetest.add_node(pos, {name="stairs:stair_seaglassoff_white", param2 = 1}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff_white" and node.param2 == 1 then minetest.add_node(pos, {name="stairsshine:stair_seaglass_white", param2 = 1}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass_white" and node.param2 == 2 then minetest.add_node(pos, {name="stairs:stair_seaglassoff_white", param2 = 2}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff_white" and node.param2 == 2 then minetest.add_node(pos, {name="stairsshine:stair_seaglass_white", param2 = 2}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass_white" and node.param2 == 3 then minetest.add_node(pos, {name="stairs:stair_seaglassoff_white", param2 = 3}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff_white" and node.param2 == 3 then minetest.add_node(pos, {name="stairsshine:stair_seaglass_white", param2 = 3}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass_white" and node.param2 == 20 then minetest.add_node(pos, {name="stairs:stair_seaglassoff_white", param2 = 20}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff_white" and node.param2 == 20 then minetest.add_node(pos, {name="stairsshine:stair_seaglass_white", param2 = 20}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass_white" and node.param2 == 21 then minetest.add_node(pos, {name="stairs:stair_seaglassoff_white", param2 = 21}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff_white" and node.param2 == 21 then minetest.add_node(pos, {name="stairsshine:stair_seaglass_white", param2 = 21}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass_white" and node.param2 == 22 then minetest.add_node(pos, {name="stairs:stair_seaglassoff_white", param2 = 22}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff_white" and node.param2 == 22 then minetest.add_node(pos, {name="stairsshine:stair_seaglass_white", param2 = 22}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass_white" and node.param2 == 23 then minetest.add_node(pos, {name="stairs:stair_seaglassoff_white", param2 = 23}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff_white" and node.param2 == 23 then minetest.add_node(pos, {name="stairsshine:stair_seaglass_white", param2 = 23}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass_black" and node.param2 == 0 then minetest.add_node(pos, {name="stairs:stair_seaglassoff_black", param2 = 0}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff_black" and node.param2 == 0 then minetest.add_node(pos, {name="stairsshine:stair_seaglass_black", param2 = 0}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass_black" and node.param2 == 1 then minetest.add_node(pos, {name="stairs:stair_seaglassoff_black", param2 = 1}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff_black" and node.param2 == 1 then minetest.add_node(pos, {name="stairsshine:stair_seaglass_black", param2 = 1}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass_black" and node.param2 == 2 then minetest.add_node(pos, {name="stairs:stair_seaglassoff_black", param2 = 2}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff_black" and node.param2 == 2 then minetest.add_node(pos, {name="stairsshine:stair_seaglass_black", param2 = 2}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass_black" and node.param2 == 3 then minetest.add_node(pos, {name="stairs:stair_seaglassoff_black", param2 = 3}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff_black" and node.param2 == 3 then minetest.add_node(pos, {name="stairsshine:stair_seaglass_black", param2 = 3}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass_black" and node.param2 == 20 then minetest.add_node(pos, {name="stairs:stair_seaglassoff_black", param2 = 20}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff_black" and node.param2 == 20 then minetest.add_node(pos, {name="stairsshine:stair_seaglass_black", param2 = 20}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass_black" and node.param2 == 21 then minetest.add_node(pos, {name="stairs:stair_seaglassoff_black", param2 = 21}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff_black" and node.param2 == 21 then minetest.add_node(pos, {name="stairsshine:stair_seaglass_black", param2 = 21}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass_black" and node.param2 == 22 then minetest.add_node(pos, {name="stairs:stair_seaglassoff_black", param2 = 22}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff_black" and node.param2 == 22 then minetest.add_node(pos, {name="stairsshine:stair_seaglass_black", param2 = 22}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:stair_seaglass_black" and node.param2 == 23 then minetest.add_node(pos, {name="stairs:stair_seaglassoff_black", param2 = 23}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:stair_seaglassoff_black" and node.param2 == 23 then minetest.add_node(pos, {name="stairsshine:stair_seaglass_black", param2 = 23}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:slab_seaglass" and node.param2 == 20 then minetest.add_node(pos, {name="stairs:slab_seaglassoff", param2 = 20}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:slab_seaglassoff" and node.param2 == 20 then minetest.add_node(pos, {name="stairsshine:slab_seaglass", param2 = 20}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:slab_seaglass" then minetest.add_node(pos, {name="stairs:slab_seaglassoff"}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:slab_seaglassoff" then minetest.add_node(pos, {name="stairsshine:slab_seaglass"}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:slab_seaglass_yellow" and node.param2 == 20 then minetest.add_node(pos, {name="stairs:slab_seaglassoff_yellow", param2 = 20}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:slab_seaglassoff_yellow" and node.param2 == 20 then minetest.add_node(pos, {name="stairsshine:slab_seaglass_yellow", param2 = 20}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:slab_seaglass_yellow" then minetest.add_node(pos, {name="stairs:slab_seaglassoff_yellow"}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:slab_seaglassoff_yellow" then minetest.add_node(pos, {name="stairsshine:slab_seaglass_yellow"}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:slab_seaglass_red" and node.param2 == 20 then minetest.add_node(pos, {name="stairs:slab_seaglassoff_red", param2 = 20}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:slab_seaglassoff_red" and node.param2 == 20 then minetest.add_node(pos, {name="stairsshine:slab_seaglass_red", param2 = 20}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:slab_seaglass_red" then minetest.add_node(pos, {name="stairs:slab_seaglassoff_red"}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:slab_seaglassoff_red" then minetest.add_node(pos, {name="stairsshine:slab_seaglass_red"}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:slab_seaglass_blue" and node.param2 == 20 then minetest.add_node(pos, {name="stairs:slab_seaglassoff_blue", param2 = 20}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:slab_seaglassoff_blue" and node.param2 == 20 then minetest.add_node(pos, {name="stairsshine:slab_seaglass_blue", param2 = 20}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:slab_seaglass_blue" then minetest.add_node(pos, {name="stairs:slab_seaglassoff_blue"}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:slab_seaglassoff_blue" then minetest.add_node(pos, {name="stairsshine:slab_seaglass_blue"}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:slab_seaglass_white" and node.param2 == 20 then minetest.add_node(pos, {name="stairs:slab_seaglassoff_white", param2 = 20}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:slab_seaglassoff_white" and node.param2 == 20 then minetest.add_node(pos, {name="stairsshine:slab_seaglass_white", param2 = 20}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:slab_seaglass_white" then minetest.add_node(pos, {name="stairs:slab_seaglassoff_white"}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:slab_seaglassoff_white" then minetest.add_node(pos, {name="stairsshine:slab_seaglass_white"}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:slab_seaglass_black" and node.param2 == 20 then minetest.add_node(pos, {name="stairs:slab_seaglassoff_black", param2 = 20}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:slab_seaglassoff_black" and node.param2 == 20 then minetest.add_node(pos, {name="stairsshine:slab_seaglass_black", param2 = 20}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairsshine:slab_seaglass_black" then minetest.add_node(pos, {name="stairs:slab_seaglassoff_black"}) - nodeupdate(pos) + minetest.check_for_falling(pos) elseif node.name == "stairs:slab_seaglassoff_black" then minetest.add_node(pos, {name="stairsshine:slab_seaglass_black"}) - nodeupdate(pos) else + minetest.check_for_falling(pos) else return end end + minetest.register_on_punchnode(on_lamp_puncher) - - +---------- -- ALIASES - +---------- minetest.register_alias("clams:yellowlightglass","seaglass:seaglassoff_yellow") minetest.register_alias("clams:redlightglass","seaglass:seaglassoff_red") diff --git a/mods/sea/seaglass/mod.conf b/mods/sea/seaglass/mod.conf new file mode 100644 index 00000000..98f1ce33 --- /dev/null +++ b/mods/sea/seaglass/mod.conf @@ -0,0 +1,3 @@ +name = seaglass +depends = default, dye, stairs, clams, stairsshine +optional_depends = colormachine \ No newline at end of file diff --git a/mods/sea/seagravel/depends.txt b/mods/sea/seagravel/depends.txt deleted file mode 100755 index 257d73b9..00000000 --- a/mods/sea/seagravel/depends.txt +++ /dev/null @@ -1,6 +0,0 @@ -default -dye -stairs -clams -whiteshell? -colormachine? \ No newline at end of file diff --git a/mods/sea/seagravel/init.lua b/mods/sea/seagravel/init.lua index 5739914f..9320ff08 100755 --- a/mods/sea/seagravel/init.lua +++ b/mods/sea/seagravel/init.lua @@ -78,9 +78,9 @@ minetest.register_node("seagravel:seagravel_redviolet", { }), }) - +--------- -- STAIRS - +--------- stairs.register_stair_and_slab("seagravel", "seagravel:seagravel", {crumbly=2, falling_node=1}, @@ -152,9 +152,9 @@ stairs.register_stair_and_slab("seagravel_redviolet", "seagravel:seagravel_redvi dug = {name="default_gravel_footstep", gain=1.0}, })) - +----------- -- CRAFTING - +----------- local register_seagravel_craft = function(output,recipe) minetest.register_craft({ diff --git a/mods/sea/seagravel/mod.conf b/mods/sea/seagravel/mod.conf new file mode 100644 index 00000000..e130c9e3 --- /dev/null +++ b/mods/sea/seagravel/mod.conf @@ -0,0 +1,3 @@ +name = seagravel +depends = default, dye, stairs, clams +optional_depends = whiteshell, colormachine \ No newline at end of file diff --git a/mods/sea/sealamps/depends.txt b/mods/sea/sealamps/depends.txt deleted file mode 100755 index 96362815..00000000 --- a/mods/sea/sealamps/depends.txt +++ /dev/null @@ -1,3 +0,0 @@ -default -bucket -noairblocks \ No newline at end of file diff --git a/mods/sea/sealamps/init.lua b/mods/sea/sealamps/init.lua index c3b5af5b..519b24bb 100755 --- a/mods/sea/sealamps/init.lua +++ b/mods/sea/sealamps/init.lua @@ -1,4 +1,6 @@ +-------- -- NODES +-------- minetest.register_node("sealamps:torch", { description = "Sea torch", @@ -52,9 +54,9 @@ minetest.register_node("sealamps:lantern", { sounds = default.node_sound_defaults(), }) - +----------- -- CRAFTING - +----------- minetest.register_craft({ output = 'sealamps:torch 8', @@ -71,4 +73,4 @@ minetest.register_craft({ recipe = { {'default:steel_ingot', 'default:bronze_ingot', 'default:glass'}, }, -}) +}) \ No newline at end of file diff --git a/mods/sea/sealamps/mod.conf b/mods/sea/sealamps/mod.conf new file mode 100644 index 00000000..c4801712 --- /dev/null +++ b/mods/sea/sealamps/mod.conf @@ -0,0 +1,2 @@ +name = sealamps +depends = default, bucket, noairblocks \ No newline at end of file diff --git a/mods/sea/seaplants/depends.txt b/mods/sea/seaplants/depends.txt deleted file mode 100755 index c8aa9b2c..00000000 --- a/mods/sea/seaplants/depends.txt +++ /dev/null @@ -1,2 +0,0 @@ -default -noairblocks \ No newline at end of file diff --git a/mods/sea/seaplants/init.lua b/mods/sea/seaplants/init.lua index ec3139fb..0eef0384 100755 --- a/mods/sea/seaplants/init.lua +++ b/mods/sea/seaplants/init.lua @@ -1,4 +1,6 @@ +-------- -- NODES +-------- -- Lightened nodes for MFF local sea_light_source = 5 @@ -215,9 +217,9 @@ minetest.register_node("seaplants:seaplantsdirtseagrassred", { sounds = default.node_sound_dirt_defaults(), }) - +-------------- -- CRAFT ITEMS - +-------------- minetest.register_craftitem("seaplants:seasaladmix", { description = "Sea salad mix", @@ -225,8 +227,9 @@ minetest.register_craftitem("seaplants:seasaladmix", { on_use = minetest.item_eat(6) }) - +----------- -- CRAFTING +----------- minetest.register_craft({ type = "shapeless", @@ -234,9 +237,9 @@ minetest.register_craft({ recipe = {"seaplants:kelpgreen", "seaplants:kelpbrown", "seaplants:seagrassgreen", "seaplants:seagrassred"} }) - +------------------------------------- -- SEAPLANTS SAND AND DIRT GENERATION - +------------------------------------- minetest.register_ore({ ore_type = "scatter", @@ -364,9 +367,9 @@ local function generate_ore(name, wherein, minp, maxp, seed, chunks_per_volume, end end - +-------- -- ABM'S - +-------- minetest.register_abm({ nodenames = {"seaplants:seaplantsdirtkelpgreen"}, @@ -540,9 +543,9 @@ action = function(pos, node, active_object_count, active_object_count_wider) end }) - +---------- -- ALIASES - +---------- minetest.register_alias("seaplants:stemsgreen","default:sand") minetest.register_alias("seaplants:stemsbrown","default:dirt") @@ -553,4 +556,4 @@ minetest.register_alias("seaplants:chewstickgreen","seaplants:kelpgreen") minetest.register_alias("seaplants:chewstickbrown","seaplants:kelpbrown") minetest.register_alias("seaplants:leavysnackgreen","seaplants:seagrassgreen") minetest.register_alias("seaplants:leavysnackblue","seaplants:seagrassred") -minetest.register_alias("seaplants:seasalad","seaplants:seasaladmix") +minetest.register_alias("seaplants:seasalad","seaplants:seasaladmix") \ No newline at end of file diff --git a/mods/sea/seaplants/mod.conf b/mods/sea/seaplants/mod.conf new file mode 100644 index 00000000..0f8cf6b3 --- /dev/null +++ b/mods/sea/seaplants/mod.conf @@ -0,0 +1,2 @@ +name = seaplants +depends = default, noairblocks \ No newline at end of file diff --git a/mods/sea/seastone/depends.txt b/mods/sea/seastone/depends.txt deleted file mode 100755 index 257d73b9..00000000 --- a/mods/sea/seastone/depends.txt +++ /dev/null @@ -1,6 +0,0 @@ -default -dye -stairs -clams -whiteshell? -colormachine? \ No newline at end of file diff --git a/mods/sea/seastone/init.lua b/mods/sea/seastone/init.lua index bfbf9c09..0ddeb8b5 100755 --- a/mods/sea/seastone/init.lua +++ b/mods/sea/seastone/init.lua @@ -1,5 +1,6 @@ +-------- -- NODES - +-------- minetest.register_node("seastone:seastone", { description = "Seastone", @@ -64,9 +65,9 @@ minetest.register_node("seastone:seastone_redviolet", { sounds = default.node_sound_stone_defaults(), }) - +--------- -- STAIRS - +--------- stairs.register_stair_and_slab("seastone", "seastone:seastone", {cracky=3, stone=1}, @@ -117,9 +118,9 @@ stairs.register_stair_and_slab("seastone_redviolet", "seastone:seastone_redviole "Seastone slab redviolet", default.node_sound_stone_defaults()) - +----------- -- CRAFTING - +----------- local register_seastone_craft = function(output,recipe) minetest.register_craft({ @@ -145,8 +146,9 @@ register_seastone_craft("seastone:seastone_aqua", {'clams:crushedwhite', 'defaul register_seastone_craft("seastone:seastone_skyblue", {'clams:crushedwhite', 'default:stone','dye:skyblue'}) register_seastone_craft("seastone:seastone_redviolet", {'clams:crushedwhite', 'default:stone','dye:redviolet'}) +---------- -- COOKING - +---------- local register_smoothblock_cooking = function(output,recipe) minetest.register_craft({ diff --git a/mods/sea/seastone/mod.conf b/mods/sea/seastone/mod.conf new file mode 100644 index 00000000..8c7d706f --- /dev/null +++ b/mods/sea/seastone/mod.conf @@ -0,0 +1,3 @@ +name = seastone +depends = default, dye, stairs, clams +optional_depends = whiteshell, colormachine \ No newline at end of file diff --git a/mods/sea/seastonebrick/depends.txt b/mods/sea/seastonebrick/depends.txt deleted file mode 100755 index 8a60af65..00000000 --- a/mods/sea/seastonebrick/depends.txt +++ /dev/null @@ -1,4 +0,0 @@ -default -stairs -seastone -colormachine? \ No newline at end of file diff --git a/mods/sea/seastonebrick/init.lua b/mods/sea/seastonebrick/init.lua index e0264137..f8754529 100755 --- a/mods/sea/seastonebrick/init.lua +++ b/mods/sea/seastonebrick/init.lua @@ -1,5 +1,6 @@ +-------- -- NODES - +-------- minetest.register_node("seastonebrick:seastonebrick", { description = "Seastone brick", @@ -58,9 +59,9 @@ minetest.register_node("seastonebrick:seastonebrick_redviolet", { sounds = default.node_sound_stone_defaults(), }) - +--------- -- STAIRS - +--------- stairs.register_stair_and_slab("seastonebrick", "seastonebrick:seastonebrick", {cracky=3, stone=1}, @@ -111,9 +112,9 @@ stairs.register_stair_and_slab("seastonebrick_redviolet", "seastonebrick:seaston "Seastonebrick slab redviolet", default.node_sound_stone_defaults()) - +----------- -- CRAFTING - +----------- local register_blockbrick_craft = function(output,recipe) minetest.register_craft({ diff --git a/mods/sea/seastonebrick/mod.conf b/mods/sea/seastonebrick/mod.conf new file mode 100644 index 00000000..91534d21 --- /dev/null +++ b/mods/sea/seastonebrick/mod.conf @@ -0,0 +1,3 @@ +name = seastonebrick +depends = default, stairs, seastone +optional_depends = colormachine \ No newline at end of file diff --git a/mods/sea/seawrecks/depends.txt b/mods/sea/seawrecks/depends.txt deleted file mode 100755 index 331d858c..00000000 --- a/mods/sea/seawrecks/depends.txt +++ /dev/null @@ -1 +0,0 @@ -default \ No newline at end of file diff --git a/mods/sea/seawrecks/init.lua b/mods/sea/seawrecks/init.lua index 375e1327..3630790d 100755 --- a/mods/sea/seawrecks/init.lua +++ b/mods/sea/seawrecks/init.lua @@ -1,5 +1,6 @@ +-------- -- NODES - +-------- minetest.register_node("seawrecks:woodship", { description = "Sand for the wooden ship", @@ -154,9 +155,9 @@ meta:from_table({ end, }) - +------------------- -- WRECK GENERATION - +------------------- minetest.register_ore({ ore_type = "scatter", @@ -218,9 +219,9 @@ local function generate_ore(name, wherein, minp, maxp, seed, chunks_per_volume, end end - +-------- -- ABM'S - +-------- minetest.register_abm({ nodenames = {"seawrecks:woodship"}, diff --git a/mods/sea/seawrecks/mod.conf b/mods/sea/seawrecks/mod.conf new file mode 100644 index 00000000..502135fd --- /dev/null +++ b/mods/sea/seawrecks/mod.conf @@ -0,0 +1,2 @@ +name = seawrecks +depends = default \ No newline at end of file diff --git a/mods/sea/stairsshine/depends.txt b/mods/sea/stairsshine/depends.txt deleted file mode 100755 index 331d858c..00000000 --- a/mods/sea/stairsshine/depends.txt +++ /dev/null @@ -1 +0,0 @@ -default \ No newline at end of file diff --git a/mods/sea/stairsshine/mod.conf b/mods/sea/stairsshine/mod.conf new file mode 100644 index 00000000..f58d98cb --- /dev/null +++ b/mods/sea/stairsshine/mod.conf @@ -0,0 +1,2 @@ +name = stairsshine +depends = default \ No newline at end of file diff --git a/mods/sea/whiteshell/depends.txt b/mods/sea/whiteshell/depends.txt deleted file mode 100755 index ff483cad..00000000 --- a/mods/sea/whiteshell/depends.txt +++ /dev/null @@ -1,2 +0,0 @@ -default -clams \ No newline at end of file diff --git a/mods/sea/whiteshell/init.lua b/mods/sea/whiteshell/init.lua index 176c2d5d..b3aed508 100755 --- a/mods/sea/whiteshell/init.lua +++ b/mods/sea/whiteshell/init.lua @@ -1,5 +1,6 @@ +-------- -- NODES - +-------- minetest.register_node("whiteshell:whiteshell", { description = "White shell", @@ -22,8 +23,9 @@ minetest.register_node("whiteshell:whiteshell", { sounds = default.node_sound_sand_defaults(), }) +------------------------ -- WHITESHELL GENERATION - +------------------------ minetest.register_ore({ ore_type = "scatter", @@ -36,7 +38,6 @@ minetest.register_ore({ y_min = -31000, }) - local function generate_ore(name, wherein, minp, maxp, seed, chunks_per_volume, chunk_size, ore_per_chunk, y_min, y_max) if maxp.y < y_min or minp.y > y_max then return @@ -75,10 +76,13 @@ local function generate_ore(name, wherein, minp, maxp, seed, chunks_per_volume, end end - +---------- -- ALIASES - +---------- minetest.register_alias("clams:whiteshell","whiteshell:whiteshell") -minetest.log("action", "[Mod] Sea Loaded.") +-- Log +if minetest.settings:get_bool("log_mods") then + minetest.log("action", "[Mod] Sea Loaded.") +end \ No newline at end of file diff --git a/mods/sea/whiteshell/mod.conf b/mods/sea/whiteshell/mod.conf new file mode 100644 index 00000000..9803cba7 --- /dev/null +++ b/mods/sea/whiteshell/mod.conf @@ -0,0 +1,2 @@ +name = whiteshell +depends = default, clams \ No newline at end of file diff --git a/mods/serverguide/depends.txt b/mods/serverguide/depends.txt deleted file mode 100644 index 4ad96d51..00000000 --- a/mods/serverguide/depends.txt +++ /dev/null @@ -1 +0,0 @@ -default diff --git a/mods/serverguide/mod.conf b/mods/serverguide/mod.conf new file mode 100644 index 00000000..f3d6edee --- /dev/null +++ b/mods/serverguide/mod.conf @@ -0,0 +1,2 @@ +name = serverguide +depends = default \ No newline at end of file diff --git a/mods/shutdown/depends.txt b/mods/shutdown/depends.txt deleted file mode 100755 index 892af91d..00000000 --- a/mods/shutdown/depends.txt +++ /dev/null @@ -1 +0,0 @@ -soundset? diff --git a/mods/shutdown/init.lua b/mods/shutdown/init.lua index f4091a8e..26bf1305 100755 --- a/mods/shutdown/init.lua +++ b/mods/shutdown/init.lua @@ -1,27 +1,27 @@ --[[ - shutdown par turbogus, code sous licence gpl2 ou sup déclaration du "timer" par Jat ( du mod annonce ) Affiche l'heure dans le chat toute les minutes et arrête votre serveur "proprement" à une heure précise afin de créer une sauvegarde - ]]-- + -- compatibility with soundset mod local SOUNDVOLUME = 1 local get_volume + if (minetest.get_modpath("soundset")) ~= nil then get_volume = soundset.get_gain else - get_volume = function (player_name, sound_type) return SOUNDVOLUME end + get_volume = function(player_name, sound_type) return SOUNDVOLUME end end local function sound_play_all(sound) for _, p in ipairs(minetest.get_connected_players()) do local player_name = p:get_player_name() if player_name then - minetest.sound_play(sound, {to_player=player_name, gain=get_volume(player_name, "other")}) + minetest.sound_play(sound, {to_player = player_name, gain = get_volume(player_name, "other")}) end end end @@ -70,4 +70,4 @@ minetest.after(0, function() -- When server has just started minetest.after(61 - tonumber(os.date("%S")), function() tick() end) -end) +end) \ No newline at end of file diff --git a/mods/shutdown/mod.conf b/mods/shutdown/mod.conf new file mode 100644 index 00000000..ce891686 --- /dev/null +++ b/mods/shutdown/mod.conf @@ -0,0 +1,2 @@ +name = shutdown +optional_depends = soundset \ No newline at end of file diff --git a/mods/soundset/depends.txt b/mods/soundset/depends.txt deleted file mode 100755 index 20b7c424..00000000 --- a/mods/soundset/depends.txt +++ /dev/null @@ -1 +0,0 @@ -unified_inventory? diff --git a/mods/soundset/init.lua b/mods/soundset/init.lua index ac8edec1..dde8e05e 100755 --- a/mods/soundset/init.lua +++ b/mods/soundset/init.lua @@ -1,9 +1,11 @@ -minetest.log("action","[mod soundset] Loading...") +minetest.log("action","[soundset] Loading...") soundset = {} soundset.file = minetest.get_worldpath() .. "/sounds_config.txt" soundset.gainplayers = {} + local tmp = {} + tmp["music"] = {} tmp["ambience"] = {} tmp["other"] = {} @@ -34,22 +36,22 @@ load_sounds_config() soundset.set_sound = function(name, param) if param == "" then - minetest.chat_send_player(name, "/setsound ") + minetest.chat_send_player(name, "/setsound ") return end local param_name, param_value = param:match("^(%S+)%s(%S+)$") if param_name == nil or param_value == nil then - minetest.chat_send_player(name, "invalid param, /setsound ") + minetest.chat_send_player(name, "Invalid parameters, see help /setsound") return end if param_name ~= "music" and param_name ~= "ambience" and param_name ~= "mobs" and param_name ~= "other" then - minetest.chat_send_player(name, "invalid param " .. param_name) + minetest.chat_send_player(name, "Invalid param " .. param_name) return end local value = tonumber(param_value) if value == nil then - minetest.chat_send_player(name, "invalid value, " ..param_value .. " must be number") + minetest.chat_send_player(name, "Invalid value, " ..param_value .. " must be number") return end @@ -60,12 +62,12 @@ soundset.set_sound = function(name, param) end if soundset.gainplayers[name][param_name] == value then - minetest.chat_send_player(name, "volume " .. param_name .. " already set to " .. value) + minetest.chat_send_player(name, "Volume " .. param_name .. " already set to " .. value) return end soundset.gainplayers[name][param_name] = value - minetest.chat_send_player(name, "sound " .. param_name .. " set to " .. value) + minetest.chat_send_player(name, "Sound " .. param_name .. " set to " .. value) save_sounds_config() end @@ -178,7 +180,7 @@ if (minetest.get_modpath("unified_inventory")) then type = "image", image = "soundset_menu_icon.png", tooltip = "sounds menu ", - show_with = false, --Modif MFF (Crabman 30/06/2015) + show_with = false, -- Modif MFF (Crabman 30/06/2015) action = function(player) local name = player:get_player_name() if not name then return end @@ -190,7 +192,7 @@ end minetest.register_chatcommand("soundset", { params = "", description = "Display volume menu formspec", - privs = {interact=true}, + privs = {interact = true}, func = function(name, param) if not name then return end on_show_settings(name, soundset.gainplayers[name]["music"], soundset.gainplayers[name]["ambience"], soundset.gainplayers[name]["other"]) @@ -199,15 +201,15 @@ minetest.register_chatcommand("soundset", { minetest.register_chatcommand("soundsets", { - params = " ", - description = "Set volume sound ", - privs = {interact=true}, + params = " ", + description = "Set volume sound.", + privs = {interact = true}, func = soundset.set_sound, }) minetest.register_chatcommand("soundsetg", { params = "", - description = "Display volume sound ", + description = "Display volume sound ", privs = {interact=true}, func = function(name, param) local conf = "" @@ -215,7 +217,7 @@ minetest.register_chatcommand("soundsetg", { conf = conf .. " " .. k .. ":" .. v end minetest.chat_send_player(name, "sounds conf " .. conf) - minetest.log("action","Player ".. name .. " sound conf " .. conf) + minetest.log("action", "Player ".. name .. " sound conf " .. conf) end }) @@ -226,5 +228,4 @@ minetest.register_on_joinplayer(function(player) end end) -minetest.log("action","[mod soundset] Loaded") - +minetest.log("action","[soundset] Loaded") \ No newline at end of file diff --git a/mods/soundset/mod.conf b/mods/soundset/mod.conf new file mode 100644 index 00000000..9142edcf --- /dev/null +++ b/mods/soundset/mod.conf @@ -0,0 +1,2 @@ +name = soundset +optional_depends = unified_inventory \ No newline at end of file diff --git a/mods/spears/depends.txt b/mods/spears/depends.txt deleted file mode 100755 index 4ad96d51..00000000 --- a/mods/spears/depends.txt +++ /dev/null @@ -1 +0,0 @@ -default diff --git a/mods/spears/functions.lua b/mods/spears/functions.lua index b8a1387e..c3ed871c 100755 --- a/mods/spears/functions.lua +++ b/mods/spears/functions.lua @@ -1,14 +1,14 @@ -function spears_shot (itemstack, player) +function spears_shot(itemstack, player) local spear = itemstack:get_name() .. '_entity' - local playerpos = player:getpos() + local playerpos = player:get_pos() local obj = minetest.add_entity({x=playerpos.x,y=playerpos.y+1.5,z=playerpos.z}, spear) local dir = player:get_look_dir() local sp = 14 local dr = .3 local gravity = 9.8 - obj:setvelocity({x=dir.x*sp, y=dir.y*sp, z=dir.z*sp}) - obj:setacceleration({x=-dir.x*dr, y=-gravity, z=-dir.z*dr}) - obj:setyaw(player:get_look_yaw()+math.pi) + obj:set_velocity({x=dir.x*sp, y=dir.y*sp, z=dir.z*sp}) + obj:set_acceleration({x=-dir.x*dr, y=-gravity, z=-dir.z*dr}) + obj:set_yaw(player:get_look_horizontal()+math.pi) obj:get_luaentity().wear = itemstack:get_wear() obj:get_luaentity().player = player:get_player_name() obj:get_luaentity().lastpos = {x=playerpos.x,y=playerpos.y+1.5,z=playerpos.z} @@ -16,7 +16,6 @@ function spears_shot (itemstack, player) return true end - function spears_set_entity(kind, eq, toughness) local SPEAR_ENTITY={ physical = false, @@ -44,13 +43,13 @@ function spears_set_entity(kind, eq, toughness) SPEAR_ENTITY.on_step = function(self, dtime) - local pos = self.object:getpos() + local pos = self.object:get_pos() local node = minetest.get_node(pos) if not self.wear then self.object:remove() return end - local newpos = self.object:getpos() + local newpos = self.object:get_pos() if self.lastpos.x ~= nil then for _, pos in pairs(spears_get_trajectoire(self, newpos)) do local node = minetest.get_node(pos) @@ -73,7 +72,7 @@ function spears_set_entity(kind, eq, toughness) local objs = minetest.get_objects_inside_radius({x=pos.x,y=pos.y,z=pos.z}, 2) for k, obj in pairs(objs) do - local objpos = obj:getpos() + local objpos = obj:get_pos() if spears_is_player(self.player, obj) or spears_is_entity(obj) then if spears_touch(pos, objpos) then local puncher = self.object @@ -147,5 +146,4 @@ function spears_touch(pos, objpos) return true end return false -end - +end \ No newline at end of file diff --git a/mods/spears/init.lua b/mods/spears/init.lua index 842d919b..e5657855 100755 --- a/mods/spears/init.lua +++ b/mods/spears/init.lua @@ -8,15 +8,14 @@ if input then end dofile(minetest.get_modpath("spears").."/functions.lua") - dofile(minetest.get_modpath("spears").."/tools.lua") -if minetest.setting_get("log_mods") then - minetest.log("action", "spears loaded") +if minetest.settings:get_bool("log_mods") then + minetest.log("action", "[spears] Loaded.") end ---alias +-- Aliases minetest.register_alias("throwing:spear_stone", "spears:spear_stone") minetest.register_alias("throwing:spear_steel", "spears:spear_steel") minetest.register_alias("throwing:spear_diamond", "spears:spear_diamond") diff --git a/mods/spears/mod.conf b/mods/spears/mod.conf new file mode 100644 index 00000000..0d4586d3 --- /dev/null +++ b/mods/spears/mod.conf @@ -0,0 +1,2 @@ +name = spears +depends = default \ No newline at end of file diff --git a/mods/spears/tools.lua b/mods/spears/tools.lua index 12a870f2..11918d2d 100755 --- a/mods/spears/tools.lua +++ b/mods/spears/tools.lua @@ -6,7 +6,7 @@ function spears_register_spear(kind, desc, eq, toughness, material) wield_scale= {x=2,y=1,z=1}, on_drop = function(itemstack, user, pointed_thing) spears_shot(itemstack, user) - if not minetest.setting_getbool("creative_mode") then + if not minetest.settings:get_bool("creative_mode") then itemstack:take_item() end return itemstack @@ -42,22 +42,21 @@ function spears_register_spear(kind, desc, eq, toughness, material) end if not DISABLE_STONE_SPEAR then - spears_register_spear('stone', 'Stone (Hunter)', 3, 25, 'group:stone') --MFF crabman(28/09/2015) damage and wear + spears_register_spear('stone', 'Stone (Hunter)', 3, 25, 'group:stone') -- MFF crabman(28/09/2015) damage and wear end if not DISABLE_STEEL_SPEAR then - spears_register_spear('steel', 'Steel (Hunter)', 4, 30, 'default:steel_ingot') --MFF crabman(28/09/2015) damage and wear + spears_register_spear('steel', 'Steel (Hunter)', 4, 30, 'default:steel_ingot') -- MFF crabman(28/09/2015) damage and wear end if not DISABLE_DIAMOND_SPEAR then - spears_register_spear('diamond', 'Diamond (Hunter)', 7, 50, 'default:diamond') --MFF crabman(28/09/2015) damage and wear + spears_register_spear('diamond', 'Diamond (Hunter)', 7, 50, 'default:diamond') -- MFF crabman(28/09/2015) damage and wear end if not DISABLE_OBSIDIAN_SPEAR then - spears_register_spear('obsidian', 'Obsidian (Hunter)', 5, 40, 'default:obsidian') --MFF crabman(28/09/2015) damage and wear + spears_register_spear('obsidian', 'Obsidian (Hunter)', 5, 40, 'default:obsidian') -- MFF crabman(28/09/2015) damage and wear end if not DISABLE_MITHRIL_SPEAR then - spears_register_spear('mithril', 'Mithril (Hunter)', 8, 200, 'default:mithril_ingot') --MFF crabman(28/09/2015) damage and wear -end - + spears_register_spear('mithril', 'Mithril (Hunter)', 8, 200, 'default:mithril_ingot') -- MFF crabman(28/09/2015) damage and wear +end \ No newline at end of file diff --git a/mods/sponge/init.lua b/mods/sponge/init.lua index 8715ce4a..670d62b5 100755 --- a/mods/sponge/init.lua +++ b/mods/sponge/init.lua @@ -100,4 +100,4 @@ minetest.register_craft({ {"dye:yellow", "wool:white", "dye:yellow"}, {"", "farming:wheat", ""}, }, -}) +}) \ No newline at end of file diff --git a/mods/sponge/mod.conf b/mods/sponge/mod.conf new file mode 100644 index 00000000..36992f7e --- /dev/null +++ b/mods/sponge/mod.conf @@ -0,0 +1 @@ +name = sponge \ No newline at end of file diff --git a/mods/track_players/init.lua b/mods/track_players/init.lua index e613527a..5e4beb2f 100755 --- a/mods/track_players/init.lua +++ b/mods/track_players/init.lua @@ -4,7 +4,7 @@ local fifo_path = "/home/quentinbd/mff/worlds/minetestforfun/mt_players_fifo" function players_data() local ps = {} for _, player in ipairs(minetest.get_connected_players()) do - local pos = player:getpos() + local pos = player:get_pos() local pname = player:get_player_name() local data = { name = pname, @@ -29,4 +29,4 @@ function time_interval_func() minetest.after(time_interval, time_interval_func) end -minetest.after(time_interval, time_interval_func) +minetest.after(time_interval, time_interval_func) \ No newline at end of file diff --git a/mods/track_players/mod.conf b/mods/track_players/mod.conf new file mode 100644 index 00000000..75cf8bab --- /dev/null +++ b/mods/track_players/mod.conf @@ -0,0 +1 @@ +name = track_players \ No newline at end of file diff --git a/mods/vector_extras/mod.conf b/mods/vector_extras/mod.conf new file mode 100644 index 00000000..93a7311e --- /dev/null +++ b/mods/vector_extras/mod.conf @@ -0,0 +1 @@ +name = vector_extras \ No newline at end of file diff --git a/mods/vector_extras/vector_meta.lua b/mods/vector_extras/vector_meta.lua index b4ed291e..0620a1cc 100755 --- a/mods/vector_extras/vector_meta.lua +++ b/mods/vector_extras/vector_meta.lua @@ -155,7 +155,7 @@ function vector.meta.remove_node(pos) vector.meta.nodes[pos.x] = nil end else - print("[vector_extras] Warning: The node at "..vector.pos_to_string(pos).." wasn't stored in vector.meta.nodes.") + minetest.log("error", "[vector_extras] Warning: The node at " .. vector.pos_to_string(pos) .. " wasn't stored in vector.meta.nodes") end end @@ -180,4 +180,4 @@ minetest.register_chatcommand('cleanvectormetatable',{ end }) -vector.meta.nodes_file.load() +vector.meta.nodes_file.load() \ No newline at end of file diff --git a/mods/watershed/README.txt b/mods/watershed/README.txt index dfc706c8..350a31c6 100755 --- a/mods/watershed/README.txt +++ b/mods/watershed/README.txt @@ -1,4 +1,11 @@ -watershed 0.7.1 by paramat, modified by the MinetestForFun Team. -For Minetest 0.4.13 and later -Depends default farming darkage -Licenses: WTFPL +Water Shed +============ + +Created by: paramat +Modified by the MinetestForFun team. + +Version: 0.7.2. +Dependencies: default, farming, darkage + +License: LGPLv2.1+ for everything. +For MT/MTG 0.4.16 and above. \ No newline at end of file diff --git a/mods/watershed/depends.txt b/mods/watershed/depends.txt deleted file mode 100755 index 95289b27..00000000 --- a/mods/watershed/depends.txt +++ /dev/null @@ -1,3 +0,0 @@ -default -farming -darkage diff --git a/mods/watershed/init.lua b/mods/watershed/init.lua index 5746e509..d2d68ef2 100755 --- a/mods/watershed/init.lua +++ b/mods/watershed/init.lua @@ -241,22 +241,22 @@ local nobj_magma = nil -- Localise noise buffers -local nbuf_terrain -local nbuf_fissure -local nbuf_temp -local nbuf_humid -local nbuf_seam -local nbuf_strata +local nbuf_terrain = {} +local nbuf_fissure = {} +local nbuf_temp = {} +local nbuf_humid = {} +local nbuf_seam = {} +local nbuf_strata = {} local nbuf_cave1 local nbuf_cave2 local nbuf_cave3 local nbuf_cave4 -local nbuf_mid -local nbuf_base -local nbuf_xlscale -local nbuf_magma +local nbuf_mid = {} +local nbuf_base = {} +local nbuf_xlscale = {} +local nbuf_magma = {} -- Mapchunk generation function @@ -742,7 +742,7 @@ minetest.register_on_generated(function(minp, maxp, seed) local y0 = minp.y local z0 = minp.z - print ("[watershed] generate mapchunk minp (" .. x0 .. " " .. y0 .. " " .. z0 .. ")") + minetest.log("action", "[watershed] generate mapchunk minp (" .. x0 .. " " .. y0 .. " " .. z0 .. ")") local vm, emin, emax = minetest.get_mapgen_object("voxelmanip") local area = VoxelArea:new{MinEdge = emin, MaxEdge = emax} @@ -759,11 +759,12 @@ minetest.register_on_generated(function(minp, maxp, seed) vm:update_liquids() local chugent = math.ceil((os.clock() - t1) * 1000) - print ("[watershed] " .. chugent .. " ms") + minetest.log("action", "[watershed] " .. chugent .. " ms") end) default.register_ores() farming.register_mgv6_decorations() + -- cherry tree minetest.register_decoration({ deco_type = "simple", @@ -779,4 +780,4 @@ minetest.register_decoration({ }, decoration = "default:mg_cherry_sapling", height = 1, -}) +}) \ No newline at end of file diff --git a/mods/watershed/license.txt b/mods/watershed/license.txt index c73f8ae7..c0cdd475 100755 --- a/mods/watershed/license.txt +++ b/mods/watershed/license.txt @@ -1,14 +1,20 @@ - DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE - Version 2, December 2004 +GNU Lesser General Public License (2.1) +Copyright (C) 2014-2017 paramat. +Copyright (C) 2016-2019 Various MinetestForFun developers and contributors. - Copyright (C) 2004 Sam Hocevar +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. - 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. +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. - DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION +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. - 0. You just DO WHAT THE FUCK YOU WANT TO. - +For more details: +https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html \ No newline at end of file diff --git a/mods/watershed/mod.conf b/mods/watershed/mod.conf new file mode 100644 index 00000000..bfab7491 --- /dev/null +++ b/mods/watershed/mod.conf @@ -0,0 +1,2 @@ +name = watershed +depends = default, farming, darkage \ No newline at end of file diff --git a/mods/watershed/nodes.lua b/mods/watershed/nodes.lua index f8521418..85c4b020 100755 --- a/mods/watershed/nodes.lua +++ b/mods/watershed/nodes.lua @@ -32,6 +32,4 @@ minetest.register_alias("watershed:lava", "default:lava_source") minetest.register_alias("watershed:lavaflow", "default:lava_flowing") -- Items - -minetest.register_alias("watershed:luxcrystal", "default:cobble") - +minetest.register_alias("watershed:luxcrystal", "default:cobble") \ No newline at end of file diff --git a/mods/whoison/functions.lua b/mods/whoison/functions.lua index 693a6b5c..573b2860 100755 --- a/mods/whoison/functions.lua +++ b/mods/whoison/functions.lua @@ -1,5 +1,6 @@ +------------ -- Functions --- +------------ function whoison.functions.load(param) --[[ @@ -51,7 +52,7 @@ function whoison.functions.save(param) -- Erase line local i = 0 whoison.presence_file:seek(string.len(line),"cur") - print("removing " .. string.len(line)) + minetest.log("action", "Removing " .. string.len(line)) while i < string.len(line) do whoison.presence_file:write("\b") i = i + 1 @@ -67,4 +68,4 @@ function whoison.functions.save(param) {name = param, time = whoison.datas[param]} ) .. "\n") return true -end +end \ No newline at end of file diff --git a/mods/whoison/init.lua b/mods/whoison/init.lua index af99248a..122462c5 100755 --- a/mods/whoison/init.lua +++ b/mods/whoison/init.lua @@ -9,7 +9,7 @@ function whoison.createFile(loopit) local file = io.open(filename, "w") file:write(os.time().."\n") file:write(minetest.get_server_status().."\n") - for _,player in ipairs(minetest.get_connected_players()) do + for _, player in ipairs(minetest.get_connected_players()) do local name = player:get_player_name() whoison.updateStats(name) @@ -144,4 +144,4 @@ end minetest.after(10,whoison.createFile,true) -whoison.loadLastSeen() +whoison.loadLastSeen() \ No newline at end of file diff --git a/mods/whoison/mod.conf b/mods/whoison/mod.conf new file mode 100644 index 00000000..a40f21ff --- /dev/null +++ b/mods/whoison/mod.conf @@ -0,0 +1 @@ +name = whoison \ No newline at end of file