diff --git a/mods/3d_armor/.gitignore b/mods/3d_armor/.gitignore index a57dbc9..6e4e459 100644 --- a/mods/3d_armor/.gitignore +++ b/mods/3d_armor/.gitignore @@ -4,4 +4,5 @@ *bak* tags *.vim +armor.conf diff --git a/mods/3d_armor/3d_armor/README.txt b/mods/3d_armor/3d_armor/README.txt index 0784b59..224f81c 100644 --- a/mods/3d_armor/3d_armor/README.txt +++ b/mods/3d_armor/3d_armor/README.txt @@ -1,7 +1,9 @@ [mod] Visible Player Armor [3d_armor] ===================================== -depends: default, inventory_plus +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 weapons. @@ -9,8 +11,14 @@ a player's armor group level making them less vulnerable to weapons. Armor takes damage when a player is hurt but also offers a percentage chance of healing. Overall level is boosted by 10% when wearing a full matching set. -default settings: [minetest.conf] +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. -# Set number of seconds between armor updates. -3d_armor_update_time = 1 +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. + +Note: worldpath config settings override any settings made in the mod's directory. diff --git a/mods/3d_armor/3d_armor/admin.lua b/mods/3d_armor/3d_armor/admin.lua new file mode 100644 index 0000000..f499987 --- /dev/null +++ b/mods/3d_armor/3d_armor/admin.lua @@ -0,0 +1,45 @@ +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, not_in_creative_inventory=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, not_in_creative_inventory=1}, + 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, not_in_creative_inventory=1}, + 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, not_in_creative_inventory=1}, + wear = 0, + on_drop = function(itemstack, dropper, pos) + return + end, +}) + diff --git a/mods/3d_armor/3d_armor/armor.conf.example b/mods/3d_armor/3d_armor/armor.conf.example new file mode 100644 index 0000000..75e072d --- /dev/null +++ b/mods/3d_armor/3d_armor/armor.conf.example @@ -0,0 +1,61 @@ +-- Armor Configuration (defaults) + +-- You can remove any unwanted armor materials from this table. +-- Note that existing armor that is removed will show up as an unknown item. +ARMOR_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", +} + +-- Enable fire protection (defaults true if using ethereal mod) +ARMOR_FIRE_PROTECT = false + +-- Fire protection nodes, (name, protection level, damage) +ARMOR_FIRE_NODES = { + {"default:lava_source", 5, 4}, + {"default:lava_flowing", 5, 4}, + {"fire:basic_flame", 3, 4}, + {"fire:permanent_flame", 3, 4}, + {"ethereal:crystal_spike", 2, 1}, + {"ethereal:fire_flower", 2, 1}, + {"default:torch", 1, 1}, +} + +-- Increase this if you get initialization glitches when a player first joins. +ARMOR_INIT_DELAY = 1 + +-- Number of initialization attempts. +-- Use in conjunction with ARMOR_INIT_DELAY if initialization problems persist. +ARMOR_INIT_TIMES = 1 + +-- Increase this if armor is not getting into bones due to server lag. +ARMOR_BONES_DELAY = 1 + +-- How often player armor/wield items are updated. +ARMOR_UPDATE_TIME = 1 + +-- Drop armor when a player dies. +-- Uses bones mod if present, otherwise items are dropped around the player. +ARMOR_DROP = true + +-- Pulverise armor when a player dies, overrides ARMOR_DROP. +ARMOR_DESTROY = false + +-- You can use this to increase or decrease overall armor effectiveness, +-- eg: ARMOR_LEVEL_MULTIPLIER = 0.5 will reduce armor level by half. +ARMOR_LEVEL_MULTIPLIER = 1 + +-- You can use this to increase or decrease overall armor healing, +-- eg: ARMOR_HEAL_MULTIPLIER = 0 will disable healing altogether. +ARMOR_HEAL_MULTIPLIER = 1 + +-- You can 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 8674000..05b8d24 100644 --- a/mods/3d_armor/3d_armor/armor.lua +++ b/mods/3d_armor/3d_armor/armor.lua @@ -1,24 +1,121 @@ -local time = 0 -local update_time = tonumber(minetest.setting_get("3d_armor_update_time")) -if not update_time then - update_time = 1 - minetest.setting_set("3d_armor_update_time", tostring(update_time)) +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 = "moreores:mithril_ingot", + crystal = "ethereal:crystal_ingot", +} +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("moreores") then + ARMOR_MATERIALS.mithril = nil +end +if not minetest.get_modpath("ethereal") then + ARMOR_MATERIALS.crystal = nil end armor = { - player_hp = {}, + timer = 0, elements = {"head", "torso", "legs", "feet"}, - formspec = "size[8,8.5]button[0,0;2,0.5;main;Back]" + 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[detached:player_name_armor;armor_head;3,0;1,1;]" - .."list[detached:player_name_armor;armor_torso;3,1;1,1;]" - .."list[detached:player_name_armor;armor_legs;3,2;1,1;]" - .."list[detached:player_name_armor;armor_feet;3,3;1,1;]", + .."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.png", + default_skin = "character", + version = "0.4.6", } --- armor.def - Added by BlockMen for HUD integration +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", + }) + 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.5)..";Heal: "..armor.def[name].heal.."]" + .."label[5.0,"..(fy + 1.0)..";Fire: "..armor.def[name].fire.."]" + .."label[5.0,"..(fy + 1.5)..";Radiation: "..armor.def[name].radiation.."]" + .."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, @@ -40,37 +137,74 @@ armor.update_player_visuals = function(self, player) end armor.set_player_armor = function(self, player) - if not player then + local name, player_inv = armor:get_valid_player(player, "[set_player_armor]") + if not name then return end - local name = player:get_player_name() - local player_inv = player:get_inventory() 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 textures = {} local elements = {} - for i, v in ipairs(self.elements) do - local stack = player_inv:get_stack("armor_"..v, 1) - local level = stack:get_definition().groups["armor_"..v] + local textures = {} + local physics_o = {speed=1,gravity=1,jump=1} + local material = {type=nil, count=1} + local preview = armor:get_preview(name) or "character_preview.png" + 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() - elements[i] = string.match(item, "%:.+_(.+)$") - if level then - table.insert(textures, item:gsub("%:", "_")..".png") - armor_level = armor_level + level - state = state + stack:get_wear() - items = items + 1 + 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 = def.texture or item:gsub("%:", "_") + table.insert(textures, texture..".png") + preview = preview.."^"..texture.."_preview.png" + 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 minetest.get_modpath("shields") then armor_level = armor_level * 0.9 end - if elements[1] == elements[2] and - elements[1] == elements[3] and - elements[1] == elements[4] then + 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 @@ -78,69 +212,123 @@ armor.set_player_armor = function(self, player) 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) 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" + end +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) + 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 + elseif not core.setting_getbool("creative_mode") then + 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() - local hp = player:get_hp() or 0 - if hp == 0 or hp == self.player_hp[name] then + if not name then + minetest.log("error", "3d_armor: Player name is nil "..msg) return end - if self.player_hp[name] > hp then - local player_inv = player:get_inventory() - local armor_inv = minetest.get_inventory({type="detached", name=name.."_armor"}) - if not armor_inv then - return - end - local heal_max = 0 - local state = 0 - local items = 0 - for _,v in ipairs(self.elements) do - local stack = armor_inv:get_stack("armor_"..v, 1) - 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_"..v, 1, stack) - player_inv:set_stack("armor_"..v, 1, 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 - self:set_player_armor(player) - end - heal_max = heal_max + heal - end - end - self.def[name].state = state - self.def[name].count = items - if heal_max > math.random(100) then - player:set_hp(self.player_hp[name]) - 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 - self.player_hp[name] = hp + return name, player_inv, armor_inv, pos end -- Register Player Model -default.player_register_model("3d_armor_character.x", { +default.player_register_model("3d_armor_character.b3d", { animation_speed = 30, textures = { - armor.default_skin, + armor.default_skin..".png", "3d_armor_trans.png", "3d_armor_trans.png", }, @@ -157,68 +345,106 @@ default.player_register_model("3d_armor_character.x", { -- Register Callbacks minetest.register_on_player_receive_fields(function(player, formname, fields) - local name = player:get_player_name() - if fields.armor then - local formspec = armor.formspec:gsub("player_name", name) + 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 + if string.find(field, "skins_set") then minetest.after(0, function(player) - armor.textures[name].skin = skins.skins[name]..".png" - armor:update_player_visuals(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.x") - local player_inv = player:get_inventory() + default.player_set_model(player, "3d_armor_character.b3d") local name = player:get_player_name() - local armor_inv = minetest.create_detached_inventory(name.."_armor",{ + 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 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, nil) + armor:set_player_armor(player) + armor:update_inventory(player) end, allow_put = function(inv, listname, index, stack, player) - if inv:is_empty(listname) then - return 1 - end - return 0 + 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 0 + return count end, - }) - for _,v in ipairs(armor.elements) do - local list = "armor_"..v - player_inv:set_size(list, 1) - armor_inv:set_size(list, 1) - armor_inv:set_stack(list, 1, player_inv:get_stack(list, 1)) + }, name) + if inv_mod == "inventory_plus" then + inventory_plus.register_button(player,"armor", "Armor") end - armor.player_hp[name] = 0 + 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, + skin = armor.default_skin..".png", armor = "3d_armor_trans.png", wielditem = "3d_armor_trans.png", + preview = armor.default_skin.."_preview.png", } - if minetest.get_modpath("skins") then + 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 @@ -228,18 +454,193 @@ minetest.register_on_joinplayer(function(player) armor.textures[name].skin = "player_"..name..".png" end end - minetest.after(0, function(player) - armor:set_player_armor(player) - end, player) -end) - -minetest.register_globalstep(function(dtime) - time = time + dtime - if time > update_time then - for _,player in ipairs(minetest.get_connected_players()) do - armor:update_armor(player) - end - time = 0 + 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) + if stack:get_count() > 0 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)) + if node then + if node.name ~= "bones:bones" then + pos.y = pos.y+1 + node = minetest.get_node(vector.round(pos)) + if node.name ~= "bones:bones" then + minetest.log("warning", "Failed to add armor to bones node.") + return + end + end + 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 + print ("[3d_armor] Fire Nodes disabled") +end + +minetest.register_globalstep(function(dtime) + armor.timer = armor.timer + dtime + if armor.timer < ARMOR_UPDATE_TIME then + return + end + 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 + armor.timer = 0 +end) + +-- kill player when command issued +minetest.register_chatcommand("kill", { + params = "", + description = "Kills player instantly", + privs = {ban=true}, + func = function(name, param) + local player = minetest.get_player_by_name(param) + if player then + player:set_hp(0) + end + end, +}) + +minetest.register_chatcommand("killme", { + description = "Kill yourself instantly", + func = function(name) + local player = minetest.get_player_by_name(name) + if player then + player:set_hp(-1001) + end + end, +}) diff --git a/mods/3d_armor/3d_armor/crafting_guide.txt b/mods/3d_armor/3d_armor/crafting_guide.txt index 89bff0b..abd1519 100644 --- a/mods/3d_armor/3d_armor/crafting_guide.txt +++ b/mods/3d_armor/3d_armor/crafting_guide.txt @@ -12,10 +12,13 @@ Helmets: +---+---+---+ [3d_armor:helmet_wood] X = [default:wood] +[3d_armor:helmet_cactus] X = [default:cactus] [3d_armor:helmet_steel] X = [default:steel_ingot] [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 = [moreores:mithril_ingot] * +[3d_armor:helmet_crystal] X = [ethereal:crystal_ingot] ** Chestplates: @@ -28,10 +31,13 @@ Chestplates: +---+---+---+ [3d_armor:chestplate_wood] X = [default:wood] +[3d_armor:chestplate_cactus] X = [default:cactus] [3d_armor:chestplate_steel] X = [default:steel_ingot] [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 = [moreores:mithril_ingot] * +[3d_armor:chestplate_crystal] X = [ethereal:crystal_ingot] ** Leggings: @@ -44,10 +50,13 @@ Leggings: +---+---+---+ [3d_armor:leggings_wood] X = [default:wood] +[3d_armor:leggings_cactus] X = [default:cactus] [3d_armor:leggings_steel] X = [default:steel_ingot] [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 = [moreores:mithril_ingot] * +[3d_armor:leggings_crystal] X = [ethereal:crystal_ingot] ** Boots: @@ -58,10 +67,13 @@ Boots: +---+---+---+ [3d_armor:boots_wood] X = [default:wood] +[3d_armor:boots_cactus] X = [default:cactus] [3d_armor:boots_steel] X = [default:steel_ingot] [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 = [moreores:mithril_ingot] * +[3d_armor:boots_crystal] X = [ethereal:crystal_ingot] ** -* Requires moreores mod by Calinou - https://forum.minetest.net/viewtopic.php?id=549 - + * 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 index e03d960..3acf737 100644 --- a/mods/3d_armor/3d_armor/depends.txt +++ b/mods/3d_armor/3d_armor/depends.txt @@ -1,2 +1,6 @@ default -playermodel +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 new file mode 100644 index 0000000..b0a9b0a --- /dev/null +++ b/mods/3d_armor/3d_armor/description.txt @@ -0,0 +1 @@ +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 2bdd4b4..4a2116f 100644 --- a/mods/3d_armor/3d_armor/init.lua +++ b/mods/3d_armor/3d_armor/init.lua @@ -1,154 +1,188 @@ -dofile(minetest.get_modpath(minetest.get_current_modname()).."/armor.lua") -local use_moreores = true +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") --- Regisiter Head Armor +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=5, 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=10, 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=5, 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=5, armor_heal=0, armor_use=2000}, + wear = 0, + }) +end -minetest.register_tool("3d_armor:helmet_wood", { - description = "Wood Helmet", - inventory_image = "3d_armor_inv_helmet_wood.png", - groups = {armor_head=5, armor_heal=0, armor_use=2000}, - wear = 0, -}) +if ARMOR_MATERIALS.cactus then + minetest.register_tool("3d_armor:helmet_cactus", { + description = "Cactuc Helmet", + inventory_image = "3d_armor_inv_helmet_cactus.png", + groups = {armor_head=5, 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=10, 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=5, armor_heal=0, armor_use=2000}, + wear = 0, + }) +end -minetest.register_tool("3d_armor:helmet_steel", { - description = "Steel Helmet", - inventory_image = "3d_armor_inv_helmet_steel.png", - groups = {armor_head=10, armor_heal=0, armor_use=500}, - wear = 0, -}) +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=10, 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=15, 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=15, 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=10, armor_heal=0, armor_use=500}, + wear = 0, + }) +end -minetest.register_tool("3d_armor:helmet_bronze", { - description = "Bronze Helmet", - inventory_image = "3d_armor_inv_helmet_bronze.png", - groups = {armor_head=10, armor_heal=6, armor_use=250}, - wear = 0, -}) +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=10, armor_heal=6, 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=15, armor_heal=6, 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=15, armor_heal=6, 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=10, armor_heal=6, armor_use=250}, + wear = 0, + }) +end -minetest.register_tool("3d_armor:helmet_diamond", { - description = "Diamond Helmet", - inventory_image = "3d_armor_inv_helmet_diamond.png", - groups = {armor_head=15, armor_heal=12, armor_use=100}, - wear = 0, -}) +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=15, armor_heal=12, 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=20, armor_heal=12, 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=20, armor_heal=12, 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=15, armor_heal=12, armor_use=100}, + wear = 0, + }) +end -if use_moreores then +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=10, armor_heal=6, armor_use=250}, + wear = 0, + }) + minetest.register_tool("3d_armor:chestplate_gold", { + description = "Gold Chestplate", + inventory_image = "3d_armor_inv_chestplate_gold.png", + groups = {armor_torso=15, armor_heal=6, armor_use=250}, + wear = 0, + }) + minetest.register_tool("3d_armor:leggings_gold", { + description = "Gold Leggings", + inventory_image = "3d_armor_inv_leggings_gold.png", + groups = {armor_legs=15, armor_heal=6, armor_use=250}, + wear = 0, + }) + minetest.register_tool("3d_armor:boots_gold", { + description = "Gold Boots", + inventory_image = "3d_armor_inv_boots_gold.png", + groups = {armor_feet=10, armor_heal=6, armor_use=250}, + wear = 0, + }) +end + +if ARMOR_MATERIALS.mithril then minetest.register_tool("3d_armor:helmet_mithril", { description = "Mithril Helmet", inventory_image = "3d_armor_inv_helmet_mithril.png", groups = {armor_head=15, armor_heal=12, armor_use=50}, wear = 0, }) -end - --- Regisiter Torso Armor - -minetest.register_tool("3d_armor:chestplate_wood", { - description = "Wood Chestplate", - inventory_image = "3d_armor_inv_chestplate_wood.png", - groups = {armor_torso=10, armor_heal=0, armor_use=2000}, - wear = 0, -}) - -minetest.register_tool("3d_armor:chestplate_steel", { - description = "Steel Chestplate", - inventory_image = "3d_armor_inv_chestplate_steel.png", - groups = {armor_torso=15, armor_heal=0, armor_use=500}, - wear = 0, -}) - -minetest.register_tool("3d_armor:chestplate_bronze", { - description = "Bronze Chestplate", - inventory_image = "3d_armor_inv_chestplate_bronze.png", - groups = {armor_torso=15, armor_heal=6, armor_use=250}, - wear = 0, -}) - -minetest.register_tool("3d_armor:chestplate_diamond", { - description = "Diamond Chestplate", - inventory_image = "3d_armor_inv_chestplate_diamond.png", - groups = {armor_torso=20, armor_heal=12, armor_use=100}, - wear = 0, -}) - -if use_moreores then minetest.register_tool("3d_armor:chestplate_mithril", { description = "Mithril Chestplate", inventory_image = "3d_armor_inv_chestplate_mithril.png", groups = {armor_torso=20, armor_heal=12, armor_use=50}, wear = 0, }) -end - --- Regisiter Leg Armor - -minetest.register_tool("3d_armor:leggings_wood", { - description = "Wood Leggings", - inventory_image = "3d_armor_inv_leggings_wood.png", - groups = {armor_legs=5, armor_heal=0, armor_use=2000}, - wear = 0, -}) - -minetest.register_tool("3d_armor:leggings_steel", { - description = "Steel Leggings", - inventory_image = "3d_armor_inv_leggings_steel.png", - groups = {armor_legs=15, armor_heal=0, armor_use=500}, - wear = 0, -}) - -minetest.register_tool("3d_armor:leggings_bronze", { - description = "Bronze Leggings", - inventory_image = "3d_armor_inv_leggings_bronze.png", - groups = {armor_legs=15, armor_heal=6, armor_use=250}, - wear = 0, -}) - -minetest.register_tool("3d_armor:leggings_diamond", { - description = "Diamond Leggings", - inventory_image = "3d_armor_inv_leggings_diamond.png", - groups = {armor_legs=20, armor_heal=12, armor_use=100}, - wear = 0, -}) - -if use_moreores then minetest.register_tool("3d_armor:leggings_mithril", { description = "Mithril Leggings", inventory_image = "3d_armor_inv_leggings_mithril.png", groups = {armor_legs=20, armor_heal=12, armor_use=50}, wear = 0, }) -end - --- Regisiter Boots - -minetest.register_tool("3d_armor:boots_wood", { - description = "Wood Boots", - inventory_image = "3d_armor_inv_boots_wood.png", - groups = {armor_feet=5, armor_heal=0, armor_use=2000}, - wear = 0, -}) - -minetest.register_tool("3d_armor:boots_steel", { - description = "Steel Boots", - inventory_image = "3d_armor_inv_boots_steel.png", - groups = {armor_feet=10, armor_heal=0, armor_use=500}, - wear = 0, -}) - -minetest.register_tool("3d_armor:boots_bronze", { - description = "Bronze Boots", - inventory_image = "3d_armor_inv_boots_bronze.png", - groups = {armor_feet=10, armor_heal=6, armor_use=250}, - wear = 0, -}) - -minetest.register_tool("3d_armor:boots_diamond", { - description = "Diamond Boots", - inventory_image = "3d_armor_inv_boots_diamond.png", - groups = {armor_feet=15, armor_heal=12, armor_use=100}, - wear = 0, -}) - -if use_moreores then minetest.register_tool("3d_armor:boots_mithril", { description = "Mithril Boots", inventory_image = "3d_armor_inv_boots_mithril.png", @@ -157,16 +191,34 @@ if use_moreores then }) end --- Register Craft Recipies +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=12, 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=12, 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=12, 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=12, armor_use=50, physics_speed=1, physics_jump=0.5, armor_fire=1}, + wear = 0, + }) +end -local craft_ingreds = { - wood = "default:wood", - steel = "default:steel_ingot", - bronze = "default:bronze_ingot", - diamond = "default:diamond", -} - -for k, v in pairs(craft_ingreds) do +for k, v in pairs(ARMOR_MATERIALS) do minetest.register_craft({ output = "3d_armor:helmet_"..k, recipe = { diff --git a/mods/3d_armor/3d_armor/models/3d_armor_character.b3d b/mods/3d_armor/3d_armor/models/3d_armor_character.b3d new file mode 100644 index 0000000..7c27cae Binary files /dev/null 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 cf638e1..f61e222 100644 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_boots_admin.png b/mods/3d_armor/3d_armor/textures/3d_armor_boots_admin.png new file mode 100644 index 0000000..a05e4c5 Binary files /dev/null and b/mods/3d_armor/3d_armor/textures/3d_armor_boots_admin.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_boots_admin_preview.png b/mods/3d_armor/3d_armor/textures/3d_armor_boots_admin_preview.png new file mode 100644 index 0000000..d61ab25 Binary files /dev/null and b/mods/3d_armor/3d_armor/textures/3d_armor_boots_admin_preview.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_boots_bronze.png b/mods/3d_armor/3d_armor/textures/3d_armor_boots_bronze.png index 1b09421..7cfe378 100644 Binary files a/mods/3d_armor/3d_armor/textures/3d_armor_boots_bronze.png and b/mods/3d_armor/3d_armor/textures/3d_armor_boots_bronze.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_boots_bronze_preview.png b/mods/3d_armor/3d_armor/textures/3d_armor_boots_bronze_preview.png new file mode 100644 index 0000000..6da8019 Binary files /dev/null and b/mods/3d_armor/3d_armor/textures/3d_armor_boots_bronze_preview.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_boots_cactus.png b/mods/3d_armor/3d_armor/textures/3d_armor_boots_cactus.png new file mode 100644 index 0000000..7dc43e3 Binary files /dev/null and b/mods/3d_armor/3d_armor/textures/3d_armor_boots_cactus.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_boots_cactus_preview.png b/mods/3d_armor/3d_armor/textures/3d_armor_boots_cactus_preview.png new file mode 100644 index 0000000..33f9221 Binary files /dev/null and b/mods/3d_armor/3d_armor/textures/3d_armor_boots_cactus_preview.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_boots_crystal.png b/mods/3d_armor/3d_armor/textures/3d_armor_boots_crystal.png new file mode 100644 index 0000000..50bbf20 Binary files /dev/null and b/mods/3d_armor/3d_armor/textures/3d_armor_boots_crystal.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_boots_crystal_preview.png b/mods/3d_armor/3d_armor/textures/3d_armor_boots_crystal_preview.png new file mode 100644 index 0000000..a3ab7d1 Binary files /dev/null and b/mods/3d_armor/3d_armor/textures/3d_armor_boots_crystal_preview.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_boots_diamond.png b/mods/3d_armor/3d_armor/textures/3d_armor_boots_diamond.png index ccd696c..6678b16 100644 Binary files a/mods/3d_armor/3d_armor/textures/3d_armor_boots_diamond.png and b/mods/3d_armor/3d_armor/textures/3d_armor_boots_diamond.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_boots_diamond_preview.png b/mods/3d_armor/3d_armor/textures/3d_armor_boots_diamond_preview.png new file mode 100644 index 0000000..eb99c4e Binary files /dev/null and b/mods/3d_armor/3d_armor/textures/3d_armor_boots_diamond_preview.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_boots_gold.png b/mods/3d_armor/3d_armor/textures/3d_armor_boots_gold.png new file mode 100644 index 0000000..2de3966 Binary files /dev/null and b/mods/3d_armor/3d_armor/textures/3d_armor_boots_gold.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_boots_gold_preview.png b/mods/3d_armor/3d_armor/textures/3d_armor_boots_gold_preview.png new file mode 100644 index 0000000..5ca40ac Binary files /dev/null and b/mods/3d_armor/3d_armor/textures/3d_armor_boots_gold_preview.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_boots_mithril.png b/mods/3d_armor/3d_armor/textures/3d_armor_boots_mithril.png index fa0b504..3e4173b 100644 Binary files a/mods/3d_armor/3d_armor/textures/3d_armor_boots_mithril.png and b/mods/3d_armor/3d_armor/textures/3d_armor_boots_mithril.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_boots_mithril_preview.png b/mods/3d_armor/3d_armor/textures/3d_armor_boots_mithril_preview.png new file mode 100644 index 0000000..b0c4684 Binary files /dev/null and b/mods/3d_armor/3d_armor/textures/3d_armor_boots_mithril_preview.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_boots_steel.png b/mods/3d_armor/3d_armor/textures/3d_armor_boots_steel.png index 51752c2..4664be5 100644 Binary files a/mods/3d_armor/3d_armor/textures/3d_armor_boots_steel.png and b/mods/3d_armor/3d_armor/textures/3d_armor_boots_steel.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_boots_steel_preview.png b/mods/3d_armor/3d_armor/textures/3d_armor_boots_steel_preview.png new file mode 100644 index 0000000..25fc47a Binary files /dev/null and b/mods/3d_armor/3d_armor/textures/3d_armor_boots_steel_preview.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_boots_wood.png b/mods/3d_armor/3d_armor/textures/3d_armor_boots_wood.png index 1fbe616..0ec5d6c 100644 Binary files a/mods/3d_armor/3d_armor/textures/3d_armor_boots_wood.png and b/mods/3d_armor/3d_armor/textures/3d_armor_boots_wood.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_boots_wood_preview.png b/mods/3d_armor/3d_armor/textures/3d_armor_boots_wood_preview.png new file mode 100644 index 0000000..53d6d15 Binary files /dev/null and b/mods/3d_armor/3d_armor/textures/3d_armor_boots_wood_preview.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_chestplate_admin.png b/mods/3d_armor/3d_armor/textures/3d_armor_chestplate_admin.png new file mode 100644 index 0000000..404d6e8 Binary files /dev/null and b/mods/3d_armor/3d_armor/textures/3d_armor_chestplate_admin.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_chestplate_admin_preview.png b/mods/3d_armor/3d_armor/textures/3d_armor_chestplate_admin_preview.png new file mode 100644 index 0000000..09325a5 Binary files /dev/null and b/mods/3d_armor/3d_armor/textures/3d_armor_chestplate_admin_preview.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_chestplate_bronze.png b/mods/3d_armor/3d_armor/textures/3d_armor_chestplate_bronze.png index b4fbf2d..d9c7267 100644 Binary files a/mods/3d_armor/3d_armor/textures/3d_armor_chestplate_bronze.png and b/mods/3d_armor/3d_armor/textures/3d_armor_chestplate_bronze.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_chestplate_bronze_preview.png b/mods/3d_armor/3d_armor/textures/3d_armor_chestplate_bronze_preview.png new file mode 100644 index 0000000..90d887a Binary files /dev/null and b/mods/3d_armor/3d_armor/textures/3d_armor_chestplate_bronze_preview.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_chestplate_cactus.png b/mods/3d_armor/3d_armor/textures/3d_armor_chestplate_cactus.png new file mode 100644 index 0000000..ee433de Binary files /dev/null and b/mods/3d_armor/3d_armor/textures/3d_armor_chestplate_cactus.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_chestplate_cactus_preview.png b/mods/3d_armor/3d_armor/textures/3d_armor_chestplate_cactus_preview.png new file mode 100644 index 0000000..32bf6f6 Binary files /dev/null and b/mods/3d_armor/3d_armor/textures/3d_armor_chestplate_cactus_preview.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_chestplate_crystal.png b/mods/3d_armor/3d_armor/textures/3d_armor_chestplate_crystal.png new file mode 100644 index 0000000..e36aa49 Binary files /dev/null and b/mods/3d_armor/3d_armor/textures/3d_armor_chestplate_crystal.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_chestplate_crystal_preview.png b/mods/3d_armor/3d_armor/textures/3d_armor_chestplate_crystal_preview.png new file mode 100644 index 0000000..c43015c Binary files /dev/null and b/mods/3d_armor/3d_armor/textures/3d_armor_chestplate_crystal_preview.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_chestplate_diamond.png b/mods/3d_armor/3d_armor/textures/3d_armor_chestplate_diamond.png index ce959c5..81a7b21 100644 Binary files a/mods/3d_armor/3d_armor/textures/3d_armor_chestplate_diamond.png and b/mods/3d_armor/3d_armor/textures/3d_armor_chestplate_diamond.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_chestplate_diamond_preview.png b/mods/3d_armor/3d_armor/textures/3d_armor_chestplate_diamond_preview.png new file mode 100644 index 0000000..17e2eb8 Binary files /dev/null and b/mods/3d_armor/3d_armor/textures/3d_armor_chestplate_diamond_preview.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_chestplate_gold.png b/mods/3d_armor/3d_armor/textures/3d_armor_chestplate_gold.png new file mode 100644 index 0000000..91b1631 Binary files /dev/null and b/mods/3d_armor/3d_armor/textures/3d_armor_chestplate_gold.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_chestplate_gold_preview.png b/mods/3d_armor/3d_armor/textures/3d_armor_chestplate_gold_preview.png new file mode 100644 index 0000000..cb11321 Binary files /dev/null and b/mods/3d_armor/3d_armor/textures/3d_armor_chestplate_gold_preview.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_chestplate_mithril.png b/mods/3d_armor/3d_armor/textures/3d_armor_chestplate_mithril.png index cedf0d9..2bbeab8 100644 Binary files a/mods/3d_armor/3d_armor/textures/3d_armor_chestplate_mithril.png and b/mods/3d_armor/3d_armor/textures/3d_armor_chestplate_mithril.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_chestplate_mithril_preview.png b/mods/3d_armor/3d_armor/textures/3d_armor_chestplate_mithril_preview.png new file mode 100644 index 0000000..eca051c Binary files /dev/null and b/mods/3d_armor/3d_armor/textures/3d_armor_chestplate_mithril_preview.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_chestplate_steel.png b/mods/3d_armor/3d_armor/textures/3d_armor_chestplate_steel.png index 8d7d5aa..23cdbda 100644 Binary files a/mods/3d_armor/3d_armor/textures/3d_armor_chestplate_steel.png and b/mods/3d_armor/3d_armor/textures/3d_armor_chestplate_steel.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_chestplate_steel_preview.png b/mods/3d_armor/3d_armor/textures/3d_armor_chestplate_steel_preview.png new file mode 100644 index 0000000..0e45907 Binary files /dev/null and b/mods/3d_armor/3d_armor/textures/3d_armor_chestplate_steel_preview.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_chestplate_wood.png b/mods/3d_armor/3d_armor/textures/3d_armor_chestplate_wood.png index 2e38314..ea7a1d7 100644 Binary files a/mods/3d_armor/3d_armor/textures/3d_armor_chestplate_wood.png and b/mods/3d_armor/3d_armor/textures/3d_armor_chestplate_wood.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_chestplate_wood_preview.png b/mods/3d_armor/3d_armor/textures/3d_armor_chestplate_wood_preview.png new file mode 100644 index 0000000..cdca575 Binary files /dev/null and b/mods/3d_armor/3d_armor/textures/3d_armor_chestplate_wood_preview.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_helmet_admin.png b/mods/3d_armor/3d_armor/textures/3d_armor_helmet_admin.png new file mode 100644 index 0000000..3a75a85 Binary files /dev/null and b/mods/3d_armor/3d_armor/textures/3d_armor_helmet_admin.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_helmet_admin_preview.png b/mods/3d_armor/3d_armor/textures/3d_armor_helmet_admin_preview.png new file mode 100644 index 0000000..51ecb9b Binary files /dev/null and b/mods/3d_armor/3d_armor/textures/3d_armor_helmet_admin_preview.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_helmet_bronze.png b/mods/3d_armor/3d_armor/textures/3d_armor_helmet_bronze.png index 04a32f7..91d15d7 100644 Binary files a/mods/3d_armor/3d_armor/textures/3d_armor_helmet_bronze.png and b/mods/3d_armor/3d_armor/textures/3d_armor_helmet_bronze.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_helmet_bronze_preview.png b/mods/3d_armor/3d_armor/textures/3d_armor_helmet_bronze_preview.png new file mode 100644 index 0000000..61fa1af Binary files /dev/null and b/mods/3d_armor/3d_armor/textures/3d_armor_helmet_bronze_preview.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_helmet_cactus.png b/mods/3d_armor/3d_armor/textures/3d_armor_helmet_cactus.png new file mode 100644 index 0000000..3021f20 Binary files /dev/null and b/mods/3d_armor/3d_armor/textures/3d_armor_helmet_cactus.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_helmet_cactus_preview.png b/mods/3d_armor/3d_armor/textures/3d_armor_helmet_cactus_preview.png new file mode 100644 index 0000000..4e3bfe2 Binary files /dev/null and b/mods/3d_armor/3d_armor/textures/3d_armor_helmet_cactus_preview.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_helmet_crystal.png b/mods/3d_armor/3d_armor/textures/3d_armor_helmet_crystal.png new file mode 100644 index 0000000..7a2c774 Binary files /dev/null and b/mods/3d_armor/3d_armor/textures/3d_armor_helmet_crystal.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_helmet_crystal_preview.png b/mods/3d_armor/3d_armor/textures/3d_armor_helmet_crystal_preview.png new file mode 100644 index 0000000..451a15d Binary files /dev/null and b/mods/3d_armor/3d_armor/textures/3d_armor_helmet_crystal_preview.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_helmet_diamond.png b/mods/3d_armor/3d_armor/textures/3d_armor_helmet_diamond.png index de9ae22..e1768b3 100644 Binary files a/mods/3d_armor/3d_armor/textures/3d_armor_helmet_diamond.png and b/mods/3d_armor/3d_armor/textures/3d_armor_helmet_diamond.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_helmet_diamond_preview.png b/mods/3d_armor/3d_armor/textures/3d_armor_helmet_diamond_preview.png new file mode 100644 index 0000000..33a273a Binary files /dev/null and b/mods/3d_armor/3d_armor/textures/3d_armor_helmet_diamond_preview.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_helmet_gold.png b/mods/3d_armor/3d_armor/textures/3d_armor_helmet_gold.png new file mode 100644 index 0000000..4d701b4 Binary files /dev/null and b/mods/3d_armor/3d_armor/textures/3d_armor_helmet_gold.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_helmet_gold_preview.png b/mods/3d_armor/3d_armor/textures/3d_armor_helmet_gold_preview.png new file mode 100644 index 0000000..d2e7ac8 Binary files /dev/null and b/mods/3d_armor/3d_armor/textures/3d_armor_helmet_gold_preview.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_helmet_mithril.png b/mods/3d_armor/3d_armor/textures/3d_armor_helmet_mithril.png index f7c6cae..916e69d 100644 Binary files a/mods/3d_armor/3d_armor/textures/3d_armor_helmet_mithril.png and b/mods/3d_armor/3d_armor/textures/3d_armor_helmet_mithril.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_helmet_mithril_preview.png b/mods/3d_armor/3d_armor/textures/3d_armor_helmet_mithril_preview.png new file mode 100644 index 0000000..a331f6a Binary files /dev/null and b/mods/3d_armor/3d_armor/textures/3d_armor_helmet_mithril_preview.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_helmet_steel.png b/mods/3d_armor/3d_armor/textures/3d_armor_helmet_steel.png index f092ead..e0a5afd 100644 Binary files a/mods/3d_armor/3d_armor/textures/3d_armor_helmet_steel.png and b/mods/3d_armor/3d_armor/textures/3d_armor_helmet_steel.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_helmet_steel_preview.png b/mods/3d_armor/3d_armor/textures/3d_armor_helmet_steel_preview.png new file mode 100644 index 0000000..2c8721c Binary files /dev/null and b/mods/3d_armor/3d_armor/textures/3d_armor_helmet_steel_preview.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_helmet_wood.png b/mods/3d_armor/3d_armor/textures/3d_armor_helmet_wood.png index 9faac93..fd5f712 100644 Binary files a/mods/3d_armor/3d_armor/textures/3d_armor_helmet_wood.png and b/mods/3d_armor/3d_armor/textures/3d_armor_helmet_wood.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_helmet_wood_preview.png b/mods/3d_armor/3d_armor/textures/3d_armor_helmet_wood_preview.png new file mode 100644 index 0000000..fe1cead Binary files /dev/null and b/mods/3d_armor/3d_armor/textures/3d_armor_helmet_wood_preview.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_inv_boots_admin.png b/mods/3d_armor/3d_armor/textures/3d_armor_inv_boots_admin.png new file mode 100644 index 0000000..f94c844 Binary files /dev/null and b/mods/3d_armor/3d_armor/textures/3d_armor_inv_boots_admin.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_inv_boots_bronze.png b/mods/3d_armor/3d_armor/textures/3d_armor_inv_boots_bronze.png index 795903c..7f5f968 100644 Binary files a/mods/3d_armor/3d_armor/textures/3d_armor_inv_boots_bronze.png and b/mods/3d_armor/3d_armor/textures/3d_armor_inv_boots_bronze.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_inv_boots_cactus.png b/mods/3d_armor/3d_armor/textures/3d_armor_inv_boots_cactus.png new file mode 100644 index 0000000..b665eb8 Binary files /dev/null and b/mods/3d_armor/3d_armor/textures/3d_armor_inv_boots_cactus.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_inv_boots_crystal.png b/mods/3d_armor/3d_armor/textures/3d_armor_inv_boots_crystal.png new file mode 100644 index 0000000..5709a17 Binary files /dev/null and b/mods/3d_armor/3d_armor/textures/3d_armor_inv_boots_crystal.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_inv_boots_diamond.png b/mods/3d_armor/3d_armor/textures/3d_armor_inv_boots_diamond.png index 87e3443..6bcd620 100644 Binary files a/mods/3d_armor/3d_armor/textures/3d_armor_inv_boots_diamond.png and b/mods/3d_armor/3d_armor/textures/3d_armor_inv_boots_diamond.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_inv_boots_gold.png b/mods/3d_armor/3d_armor/textures/3d_armor_inv_boots_gold.png new file mode 100644 index 0000000..8598cf9 Binary files /dev/null and b/mods/3d_armor/3d_armor/textures/3d_armor_inv_boots_gold.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_inv_boots_mithril.png b/mods/3d_armor/3d_armor/textures/3d_armor_inv_boots_mithril.png index f15bbe6..a4c180d 100644 Binary files a/mods/3d_armor/3d_armor/textures/3d_armor_inv_boots_mithril.png and b/mods/3d_armor/3d_armor/textures/3d_armor_inv_boots_mithril.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_inv_boots_steel.png b/mods/3d_armor/3d_armor/textures/3d_armor_inv_boots_steel.png index 2d13249..77286b5 100644 Binary files a/mods/3d_armor/3d_armor/textures/3d_armor_inv_boots_steel.png and b/mods/3d_armor/3d_armor/textures/3d_armor_inv_boots_steel.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_inv_boots_wood.png b/mods/3d_armor/3d_armor/textures/3d_armor_inv_boots_wood.png index 6e18501..66993a1 100644 Binary files a/mods/3d_armor/3d_armor/textures/3d_armor_inv_boots_wood.png and b/mods/3d_armor/3d_armor/textures/3d_armor_inv_boots_wood.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_inv_chestplate_admin.png b/mods/3d_armor/3d_armor/textures/3d_armor_inv_chestplate_admin.png new file mode 100644 index 0000000..29f3897 Binary files /dev/null and b/mods/3d_armor/3d_armor/textures/3d_armor_inv_chestplate_admin.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_inv_chestplate_bronze.png b/mods/3d_armor/3d_armor/textures/3d_armor_inv_chestplate_bronze.png index 793f875..da2f3e0 100644 Binary files a/mods/3d_armor/3d_armor/textures/3d_armor_inv_chestplate_bronze.png and b/mods/3d_armor/3d_armor/textures/3d_armor_inv_chestplate_bronze.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_inv_chestplate_cactus.png b/mods/3d_armor/3d_armor/textures/3d_armor_inv_chestplate_cactus.png new file mode 100644 index 0000000..a695e78 Binary files /dev/null and b/mods/3d_armor/3d_armor/textures/3d_armor_inv_chestplate_cactus.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_inv_chestplate_crystal.png b/mods/3d_armor/3d_armor/textures/3d_armor_inv_chestplate_crystal.png new file mode 100644 index 0000000..4d23066 Binary files /dev/null and b/mods/3d_armor/3d_armor/textures/3d_armor_inv_chestplate_crystal.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_inv_chestplate_diamond.png b/mods/3d_armor/3d_armor/textures/3d_armor_inv_chestplate_diamond.png index cfb71e1..eee800b 100644 Binary files a/mods/3d_armor/3d_armor/textures/3d_armor_inv_chestplate_diamond.png and b/mods/3d_armor/3d_armor/textures/3d_armor_inv_chestplate_diamond.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_inv_chestplate_gold.png b/mods/3d_armor/3d_armor/textures/3d_armor_inv_chestplate_gold.png new file mode 100644 index 0000000..1dddc3d Binary files /dev/null and b/mods/3d_armor/3d_armor/textures/3d_armor_inv_chestplate_gold.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_inv_chestplate_mithril.png b/mods/3d_armor/3d_armor/textures/3d_armor_inv_chestplate_mithril.png index 367e442..e4c50a7 100644 Binary files a/mods/3d_armor/3d_armor/textures/3d_armor_inv_chestplate_mithril.png and b/mods/3d_armor/3d_armor/textures/3d_armor_inv_chestplate_mithril.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_inv_chestplate_steel.png b/mods/3d_armor/3d_armor/textures/3d_armor_inv_chestplate_steel.png index e5d16ec..421b3e3 100644 Binary files a/mods/3d_armor/3d_armor/textures/3d_armor_inv_chestplate_steel.png and b/mods/3d_armor/3d_armor/textures/3d_armor_inv_chestplate_steel.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_inv_chestplate_wood.png b/mods/3d_armor/3d_armor/textures/3d_armor_inv_chestplate_wood.png index ae7defb..434374f 100644 Binary files a/mods/3d_armor/3d_armor/textures/3d_armor_inv_chestplate_wood.png and b/mods/3d_armor/3d_armor/textures/3d_armor_inv_chestplate_wood.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_inv_helmet_admin.png b/mods/3d_armor/3d_armor/textures/3d_armor_inv_helmet_admin.png new file mode 100644 index 0000000..e019702 Binary files /dev/null and b/mods/3d_armor/3d_armor/textures/3d_armor_inv_helmet_admin.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_inv_helmet_bronze.png b/mods/3d_armor/3d_armor/textures/3d_armor_inv_helmet_bronze.png index 20e5b56..53cdaf1 100644 Binary files a/mods/3d_armor/3d_armor/textures/3d_armor_inv_helmet_bronze.png and b/mods/3d_armor/3d_armor/textures/3d_armor_inv_helmet_bronze.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_inv_helmet_cactus.png b/mods/3d_armor/3d_armor/textures/3d_armor_inv_helmet_cactus.png new file mode 100644 index 0000000..746c264 Binary files /dev/null and b/mods/3d_armor/3d_armor/textures/3d_armor_inv_helmet_cactus.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_inv_helmet_crystal.png b/mods/3d_armor/3d_armor/textures/3d_armor_inv_helmet_crystal.png new file mode 100644 index 0000000..8a29eec Binary files /dev/null and b/mods/3d_armor/3d_armor/textures/3d_armor_inv_helmet_crystal.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_inv_helmet_diamond.png b/mods/3d_armor/3d_armor/textures/3d_armor_inv_helmet_diamond.png index d05d1de..2eb3a5c 100644 Binary files a/mods/3d_armor/3d_armor/textures/3d_armor_inv_helmet_diamond.png and b/mods/3d_armor/3d_armor/textures/3d_armor_inv_helmet_diamond.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_inv_helmet_gold.png b/mods/3d_armor/3d_armor/textures/3d_armor_inv_helmet_gold.png new file mode 100644 index 0000000..e8f83d8 Binary files /dev/null and b/mods/3d_armor/3d_armor/textures/3d_armor_inv_helmet_gold.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_inv_helmet_mithril.png b/mods/3d_armor/3d_armor/textures/3d_armor_inv_helmet_mithril.png index edb8fef..abdd0ca 100644 Binary files a/mods/3d_armor/3d_armor/textures/3d_armor_inv_helmet_mithril.png and b/mods/3d_armor/3d_armor/textures/3d_armor_inv_helmet_mithril.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_inv_helmet_steel.png b/mods/3d_armor/3d_armor/textures/3d_armor_inv_helmet_steel.png index a420b23..4c636f2 100644 Binary files a/mods/3d_armor/3d_armor/textures/3d_armor_inv_helmet_steel.png and b/mods/3d_armor/3d_armor/textures/3d_armor_inv_helmet_steel.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_inv_helmet_wood.png b/mods/3d_armor/3d_armor/textures/3d_armor_inv_helmet_wood.png index 73ec833..e8ee2fe 100644 Binary files a/mods/3d_armor/3d_armor/textures/3d_armor_inv_helmet_wood.png and b/mods/3d_armor/3d_armor/textures/3d_armor_inv_helmet_wood.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_inv_leggings_admin.png b/mods/3d_armor/3d_armor/textures/3d_armor_inv_leggings_admin.png new file mode 100644 index 0000000..04b64c0 Binary files /dev/null and b/mods/3d_armor/3d_armor/textures/3d_armor_inv_leggings_admin.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_inv_leggings_bronze.png b/mods/3d_armor/3d_armor/textures/3d_armor_inv_leggings_bronze.png index 8930538..b574108 100644 Binary files a/mods/3d_armor/3d_armor/textures/3d_armor_inv_leggings_bronze.png and b/mods/3d_armor/3d_armor/textures/3d_armor_inv_leggings_bronze.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_inv_leggings_cactus.png b/mods/3d_armor/3d_armor/textures/3d_armor_inv_leggings_cactus.png new file mode 100644 index 0000000..c011db8 Binary files /dev/null and b/mods/3d_armor/3d_armor/textures/3d_armor_inv_leggings_cactus.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_inv_leggings_crystal.png b/mods/3d_armor/3d_armor/textures/3d_armor_inv_leggings_crystal.png new file mode 100644 index 0000000..5b3f703 Binary files /dev/null and b/mods/3d_armor/3d_armor/textures/3d_armor_inv_leggings_crystal.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_inv_leggings_diamond.png b/mods/3d_armor/3d_armor/textures/3d_armor_inv_leggings_diamond.png index 88d7d33..2ab1c8e 100644 Binary files a/mods/3d_armor/3d_armor/textures/3d_armor_inv_leggings_diamond.png and b/mods/3d_armor/3d_armor/textures/3d_armor_inv_leggings_diamond.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_inv_leggings_gold.png b/mods/3d_armor/3d_armor/textures/3d_armor_inv_leggings_gold.png new file mode 100644 index 0000000..7424833 Binary files /dev/null and b/mods/3d_armor/3d_armor/textures/3d_armor_inv_leggings_gold.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_inv_leggings_mithril.png b/mods/3d_armor/3d_armor/textures/3d_armor_inv_leggings_mithril.png index 6635f8a..b9b1b3c 100644 Binary files a/mods/3d_armor/3d_armor/textures/3d_armor_inv_leggings_mithril.png and b/mods/3d_armor/3d_armor/textures/3d_armor_inv_leggings_mithril.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_inv_leggings_steel.png b/mods/3d_armor/3d_armor/textures/3d_armor_inv_leggings_steel.png index 95eb156..77ee17e 100644 Binary files a/mods/3d_armor/3d_armor/textures/3d_armor_inv_leggings_steel.png and b/mods/3d_armor/3d_armor/textures/3d_armor_inv_leggings_steel.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_inv_leggings_wood.png b/mods/3d_armor/3d_armor/textures/3d_armor_inv_leggings_wood.png index f0082bb..f162e51 100644 Binary files a/mods/3d_armor/3d_armor/textures/3d_armor_inv_leggings_wood.png and b/mods/3d_armor/3d_armor/textures/3d_armor_inv_leggings_wood.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_leggings_admin.png b/mods/3d_armor/3d_armor/textures/3d_armor_leggings_admin.png new file mode 100644 index 0000000..6752256 Binary files /dev/null and b/mods/3d_armor/3d_armor/textures/3d_armor_leggings_admin.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_leggings_admin_preview.png b/mods/3d_armor/3d_armor/textures/3d_armor_leggings_admin_preview.png new file mode 100644 index 0000000..fe47999 Binary files /dev/null and b/mods/3d_armor/3d_armor/textures/3d_armor_leggings_admin_preview.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_leggings_bronze.png b/mods/3d_armor/3d_armor/textures/3d_armor_leggings_bronze.png index 1adabde..3394288 100644 Binary files a/mods/3d_armor/3d_armor/textures/3d_armor_leggings_bronze.png and b/mods/3d_armor/3d_armor/textures/3d_armor_leggings_bronze.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_leggings_bronze_preview.png b/mods/3d_armor/3d_armor/textures/3d_armor_leggings_bronze_preview.png new file mode 100644 index 0000000..c4aa7b9 Binary files /dev/null and b/mods/3d_armor/3d_armor/textures/3d_armor_leggings_bronze_preview.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_leggings_cactus.png b/mods/3d_armor/3d_armor/textures/3d_armor_leggings_cactus.png new file mode 100644 index 0000000..7d22404 Binary files /dev/null and b/mods/3d_armor/3d_armor/textures/3d_armor_leggings_cactus.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_leggings_cactus_preview.png b/mods/3d_armor/3d_armor/textures/3d_armor_leggings_cactus_preview.png new file mode 100644 index 0000000..1a24863 Binary files /dev/null and b/mods/3d_armor/3d_armor/textures/3d_armor_leggings_cactus_preview.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_leggings_crystal.png b/mods/3d_armor/3d_armor/textures/3d_armor_leggings_crystal.png new file mode 100644 index 0000000..cc61390 Binary files /dev/null and b/mods/3d_armor/3d_armor/textures/3d_armor_leggings_crystal.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_leggings_crystal_preview.png b/mods/3d_armor/3d_armor/textures/3d_armor_leggings_crystal_preview.png new file mode 100644 index 0000000..559d008 Binary files /dev/null and b/mods/3d_armor/3d_armor/textures/3d_armor_leggings_crystal_preview.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_leggings_diamond.png b/mods/3d_armor/3d_armor/textures/3d_armor_leggings_diamond.png index e406989..a646ba2 100644 Binary files a/mods/3d_armor/3d_armor/textures/3d_armor_leggings_diamond.png and b/mods/3d_armor/3d_armor/textures/3d_armor_leggings_diamond.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_leggings_diamond_preview.png b/mods/3d_armor/3d_armor/textures/3d_armor_leggings_diamond_preview.png new file mode 100644 index 0000000..a6ac2e2 Binary files /dev/null and b/mods/3d_armor/3d_armor/textures/3d_armor_leggings_diamond_preview.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_leggings_gold.png b/mods/3d_armor/3d_armor/textures/3d_armor_leggings_gold.png new file mode 100644 index 0000000..d207dff Binary files /dev/null and b/mods/3d_armor/3d_armor/textures/3d_armor_leggings_gold.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_leggings_gold_preview.png b/mods/3d_armor/3d_armor/textures/3d_armor_leggings_gold_preview.png new file mode 100644 index 0000000..75e6ca4 Binary files /dev/null and b/mods/3d_armor/3d_armor/textures/3d_armor_leggings_gold_preview.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_leggings_mithril.png b/mods/3d_armor/3d_armor/textures/3d_armor_leggings_mithril.png index 96fbf35..ffff3ee 100644 Binary files a/mods/3d_armor/3d_armor/textures/3d_armor_leggings_mithril.png and b/mods/3d_armor/3d_armor/textures/3d_armor_leggings_mithril.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_leggings_mithril_preview.png b/mods/3d_armor/3d_armor/textures/3d_armor_leggings_mithril_preview.png new file mode 100644 index 0000000..ee99178 Binary files /dev/null and b/mods/3d_armor/3d_armor/textures/3d_armor_leggings_mithril_preview.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_leggings_steel.png b/mods/3d_armor/3d_armor/textures/3d_armor_leggings_steel.png index 717d9c3..78d5874 100644 Binary files a/mods/3d_armor/3d_armor/textures/3d_armor_leggings_steel.png and b/mods/3d_armor/3d_armor/textures/3d_armor_leggings_steel.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_leggings_steel_preview.png b/mods/3d_armor/3d_armor/textures/3d_armor_leggings_steel_preview.png new file mode 100644 index 0000000..3e3ec85 Binary files /dev/null and b/mods/3d_armor/3d_armor/textures/3d_armor_leggings_steel_preview.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_leggings_wood.png b/mods/3d_armor/3d_armor/textures/3d_armor_leggings_wood.png index 2c5b5a6..3880fc0 100644 Binary files a/mods/3d_armor/3d_armor/textures/3d_armor_leggings_wood.png and b/mods/3d_armor/3d_armor/textures/3d_armor_leggings_wood.png differ diff --git a/mods/3d_armor/3d_armor/textures/3d_armor_leggings_wood_preview.png b/mods/3d_armor/3d_armor/textures/3d_armor_leggings_wood_preview.png new file mode 100644 index 0000000..f8ee8e8 Binary files /dev/null and b/mods/3d_armor/3d_armor/textures/3d_armor_leggings_wood_preview.png 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 e215ca2..4d7beb8 100644 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 new file mode 100644 index 0000000..6e5cfee Binary files /dev/null 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 new file mode 100644 index 0000000..4ac4602 Binary files /dev/null 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 11fb508..6cde640 100644 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/README.md b/mods/3d_armor/README.md index d41e76f..aac16d3 100644 --- a/mods/3d_armor/README.md +++ b/mods/3d_armor/README.md @@ -1,32 +1,83 @@ -Modpack - 3d Armor [0.4.0] +Modpack - 3d Armor [0.4.6] ========================== +### 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] Technic Armor [technic_armor]](#mod-technic-armor-technic_armor) +- [[mod] Hazmat Suit [hazmat_suit]](#mod-hazmat-suit-hazmat_suit) +- [[mod] 3d Armor Stand [3d_armor_stand]](#mod-3d-armor-stand-3d_armor_stand) + + + + [mod] Visible Player Armor [3d_armor] ------------------------------------- -depends: default, inventory_plus +Minetest Version: 0.4.13 + +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 weapons. +a player's armor group level making them less vulnerable to attack. Armor takes damage when a player is hurt, however, many armor items offer a 'stackable' percentage chance of restoring the lost health points. Overall armor level is boosted by 10% when wearing a full matching set (helmet, chestplate, leggings and boots of the same material) -Compatible with player skins [skins] by Zeg9 and Player Textures [player_textures] by PilzAdam. +Fire protection has been added by TenPlus1 and in use when ethereal mod is found and crystal +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 +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. [mod] Visible Wielded Items [wieldview] --------------------------------------- -depends: 3d_armor +Depends: 3d_armor Makes hand wielded items visible to other players. [mod] Shields [shields] -------------------------------------- +----------------------- -depends: 3d_armor +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] +------------------------------------- + +Depends: 3d_armor + +Adds a chest-like armor stand for armor storage and display. diff --git a/mods/3d_armor/description.txt b/mods/3d_armor/description.txt new file mode 100644 index 0000000..2da5ba4 --- /dev/null +++ b/mods/3d_armor/description.txt @@ -0,0 +1 @@ +Visible player armor & wielded items. diff --git a/mods/3d_armor/screenshot.png b/mods/3d_armor/screenshot.png new file mode 100644 index 0000000..f568cea Binary files /dev/null and b/mods/3d_armor/screenshot.png differ diff --git a/mods/3d_armor/shields/README.txt b/mods/3d_armor/shields/README.txt index 80988c1..3146bcb 100644 --- a/mods/3d_armor/shields/README.txt +++ b/mods/3d_armor/shields/README.txt @@ -1,6 +1,6 @@ -A 3d character model re-texturing api used as the framework for this modpack. +Adds shields to 3d_armor -depends: 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. diff --git a/mods/3d_armor/shields/crafting_guide.txt b/mods/3d_armor/shields/crafting_guide.txt index 5800e94..9b61dde 100644 --- a/mods/3d_armor/shields/crafting_guide.txt +++ b/mods/3d_armor/shields/crafting_guide.txt @@ -10,8 +10,27 @@ Shields -- Crafting Guide +---+---+---+ [shields:shield_wood] X = [default:wood] +[shields:shield_cactus] X = [default:cactus] [shields:shield_steel] X = [default:steel_ingot] [shields:shield_bronze] X = [default:bronze_ingot] [shields:shield_diamond] X = [default:diamond] +[shields:shield_gold] X = [default:gold_ingot] +[shields:shield_mithril] X = [moreores:mithril_ingot] +[shields:shield_crystal] X = [ethereal:crystal_ingot] +Enhanced Shields +---------------- + ++---+ +| S | ++---+ +| X | ++---+ +| S | ++---+ + +[shields:shield_enhanced_wood] X = [shields:shield_wood] +[shields:shield_enhanced_cactus] X = [shields:shield_cactus] + +S = [default:steel_ingot] diff --git a/mods/3d_armor/shields/description.txt b/mods/3d_armor/shields/description.txt new file mode 100644 index 0000000..cb378bb --- /dev/null +++ b/mods/3d_armor/shields/description.txt @@ -0,0 +1 @@ +Adds visible shields to 3d armor. diff --git a/mods/3d_armor/shields/init.lua b/mods/3d_armor/shields/init.lua index 6e62d92..2234fa4 100644 --- a/mods/3d_armor/shields/init.lua +++ b/mods/3d_armor/shields/init.lua @@ -1,54 +1,115 @@ - +local use_moreores = minetest.get_modpath("moreores") -- Regisiter Shields -minetest.register_tool("shields:shield_wood", { - description = "Wooden Shield", - inventory_image = "shields_inv_shield_wood.png", - groups = {armor_shield=5, armor_heal=0, armor_use=2000}, +minetest.register_tool("shields:shield_admin", { + description = "Admin Shield", + inventory_image = "shields_inv_shield_admin.png", + groups = {armor_shield=1000, armor_heal=100, armor_use=0, not_in_creative_inventory=1}, wear = 0, }) -minetest.register_tool("shields:shield_steel", { - description = "Steel Shield", - inventory_image = "shields_inv_shield_steel.png", - groups = {armor_shield=10, armor_heal=0, armor_use=500}, - wear = 0, -}) - -minetest.register_tool("shields:shield_bronze", { - description = "Bronze Shield", - inventory_image = "shields_inv_shield_bronze.png", - groups = {armor_shield=10, armor_heal=6, armor_use=250}, - wear = 0, -}) - -minetest.register_tool("shields:shield_diamond", { - description = "Diamond Shield", - inventory_image = "shields_inv_shield_diamond.png", - groups = {armor_shield=15, armor_heal=12, armor_use=100}, - wear = 0, -}) - -minetest.register_tool("shields:shield_mithril", { - description = "Mithril Shield", - inventory_image = "shields_inv_shield_mithril.png", - groups = {armor_shield=15, armor_heal=12, armor_use=50}, - wear = 0, -}) - -local craft_ingreds = { - wood = "default:wood", - steel = "default:steel_ingot", - bronze = "default:bronze_ingot", - diamond = "default:diamond", -} - -if has_moreores then - craft_ingreds.mithril = "moreores:mithril_ingot" +if ARMOR_MATERIALS.wood then + minetest.register_tool("shields:shield_wood", { + description = "Wooden Shield", + inventory_image = "shields_inv_shield_wood.png", + groups = {armor_shield=5, armor_heal=0, armor_use=2000}, + wear = 0, + }) + minetest.register_tool("shields:shield_enhanced_wood", { + description = "Enhanced Wood Shield", + inventory_image = "shields_inv_shield_enhanced_wood.png", + groups = {armor_shield=8, armor_heal=0, armor_use=1000}, + wear = 0, + }) + minetest.register_craft({ + output = "shields:shield_enhanced_wood", + recipe = { + {"default:steel_ingot"}, + {"shields:shield_wood"}, + {"default:steel_ingot"}, + }, + }) end -for k, v in pairs(craft_ingreds) do +if ARMOR_MATERIALS.cactus then + minetest.register_tool("shields:shield_cactus", { + description = "Cactus Shield", + inventory_image = "shields_inv_shield_cactus.png", + groups = {armor_shield=5, armor_heal=0, armor_use=2000}, + wear = 0, + }) + minetest.register_tool("shields:shield_enhanced_cactus", { + description = "Enhanced Cactus Shield", + inventory_image = "shields_inv_shield_enhanced_cactus.png", + groups = {armor_shield=8, armor_heal=0, armor_use=1000}, + wear = 0, + }) + minetest.register_craft({ + output = "shields:shield_enhanced_cactus", + recipe = { + {"default:steel_ingot"}, + {"shields:shield_cactus"}, + {"default:steel_ingot"}, + }, + }) +end + +if ARMOR_MATERIALS.steel then + minetest.register_tool("shields:shield_steel", { + description = "Steel Shield", + inventory_image = "shields_inv_shield_steel.png", + groups = {armor_shield=10, armor_heal=0, armor_use=500}, + wear = 0, + }) +end + +if ARMOR_MATERIALS.bronze then + minetest.register_tool("shields:shield_bronze", { + description = "Bronze Shield", + inventory_image = "shields_inv_shield_bronze.png", + groups = {armor_shield=10, armor_heal=6, armor_use=250}, + wear = 0, + }) +end + +if ARMOR_MATERIALS.diamond then + minetest.register_tool("shields:shield_diamond", { + description = "Diamond Shield", + inventory_image = "shields_inv_shield_diamond.png", + groups = {armor_shield=15, armor_heal=12, armor_use=100}, + wear = 0, + }) +end + +if ARMOR_MATERIALS.gold then + minetest.register_tool("shields:shield_gold", { + description = "Gold Shield", + inventory_image = "shields_inv_shield_gold.png", + groups = {armor_shield=10, armor_heal=6, armor_use=250}, + wear = 0, + }) +end + +if ARMOR_MATERIALS.mithril then + minetest.register_tool("shields:shield_mithril", { + description = "Mithril Shield", + inventory_image = "shields_inv_shield_mithril.png", + groups = {armor_shield=15, armor_heal=12, armor_use=50}, + wear = 0, + }) +end + +if ARMOR_MATERIALS.crystal then + minetest.register_tool("shields:shield_crystal", { + description = "Crystal Shield", + inventory_image = "shields_inv_shield_crystal.png", + groups = {armor_shield=15, armor_heal=12, armor_use=50, armor_fire=1}, + wear = 0, + }) +end + +for k, v in pairs(ARMOR_MATERIALS) do minetest.register_craft({ output = "shields:shield_"..k, recipe = { @@ -61,12 +122,5 @@ end minetest.after(0, function() table.insert(armor.elements, "shield") - armor.formspec = "size[8,8.5]button[0,0;2,0.5;main;Back]" - .."list[current_player;main;0,4.5;8,4;]" - .."list[detached:player_name_armor;armor_head;3,0;1,1;]" - .."list[detached:player_name_armor;armor_torso;3,1;1,1;]" - .."list[detached:player_name_armor;armor_legs;3,2;1,1;]" - .."list[detached:player_name_armor;armor_feet;3,3;1,1;]" - .."list[detached:player_name_armor;armor_shield;4,1;1,1;]" end) diff --git a/mods/3d_armor/shields/textures/shields_inv_shield_admin.png b/mods/3d_armor/shields/textures/shields_inv_shield_admin.png new file mode 100644 index 0000000..ae5ab7d Binary files /dev/null and b/mods/3d_armor/shields/textures/shields_inv_shield_admin.png differ diff --git a/mods/3d_armor/shields/textures/shields_inv_shield_bronze.png b/mods/3d_armor/shields/textures/shields_inv_shield_bronze.png index 25f6769..67bac0f 100644 Binary files a/mods/3d_armor/shields/textures/shields_inv_shield_bronze.png and b/mods/3d_armor/shields/textures/shields_inv_shield_bronze.png differ diff --git a/mods/3d_armor/shields/textures/shields_inv_shield_cactus.png b/mods/3d_armor/shields/textures/shields_inv_shield_cactus.png new file mode 100644 index 0000000..00d1d58 Binary files /dev/null and b/mods/3d_armor/shields/textures/shields_inv_shield_cactus.png differ diff --git a/mods/3d_armor/shields/textures/shields_inv_shield_crystal.png b/mods/3d_armor/shields/textures/shields_inv_shield_crystal.png new file mode 100644 index 0000000..1ec1981 Binary files /dev/null and b/mods/3d_armor/shields/textures/shields_inv_shield_crystal.png differ diff --git a/mods/3d_armor/shields/textures/shields_inv_shield_diamond.png b/mods/3d_armor/shields/textures/shields_inv_shield_diamond.png index b114587..ea7c567 100644 Binary files a/mods/3d_armor/shields/textures/shields_inv_shield_diamond.png and b/mods/3d_armor/shields/textures/shields_inv_shield_diamond.png differ diff --git a/mods/3d_armor/shields/textures/shields_inv_shield_enhanced_cactus.png b/mods/3d_armor/shields/textures/shields_inv_shield_enhanced_cactus.png new file mode 100644 index 0000000..39436cd Binary files /dev/null and b/mods/3d_armor/shields/textures/shields_inv_shield_enhanced_cactus.png differ diff --git a/mods/3d_armor/shields/textures/shields_inv_shield_enhanced_wood.png b/mods/3d_armor/shields/textures/shields_inv_shield_enhanced_wood.png new file mode 100644 index 0000000..058e042 Binary files /dev/null and b/mods/3d_armor/shields/textures/shields_inv_shield_enhanced_wood.png differ diff --git a/mods/3d_armor/shields/textures/shields_inv_shield_gold.png b/mods/3d_armor/shields/textures/shields_inv_shield_gold.png new file mode 100644 index 0000000..8995834 Binary files /dev/null and b/mods/3d_armor/shields/textures/shields_inv_shield_gold.png differ diff --git a/mods/3d_armor/shields/textures/shields_inv_shield_mithril.png b/mods/3d_armor/shields/textures/shields_inv_shield_mithril.png index 7c1d7d3..d32665a 100644 Binary files a/mods/3d_armor/shields/textures/shields_inv_shield_mithril.png and b/mods/3d_armor/shields/textures/shields_inv_shield_mithril.png differ diff --git a/mods/3d_armor/shields/textures/shields_inv_shield_steel.png b/mods/3d_armor/shields/textures/shields_inv_shield_steel.png index 8eaee8f..178b507 100644 Binary files a/mods/3d_armor/shields/textures/shields_inv_shield_steel.png and b/mods/3d_armor/shields/textures/shields_inv_shield_steel.png differ diff --git a/mods/3d_armor/shields/textures/shields_inv_shield_wood.png b/mods/3d_armor/shields/textures/shields_inv_shield_wood.png index 3e3c14a..dcbe933 100644 Binary files a/mods/3d_armor/shields/textures/shields_inv_shield_wood.png and b/mods/3d_armor/shields/textures/shields_inv_shield_wood.png differ diff --git a/mods/3d_armor/shields/textures/shields_shield_admin.png b/mods/3d_armor/shields/textures/shields_shield_admin.png new file mode 100644 index 0000000..430c3e3 Binary files /dev/null and b/mods/3d_armor/shields/textures/shields_shield_admin.png differ diff --git a/mods/3d_armor/shields/textures/shields_shield_admin_preview.png b/mods/3d_armor/shields/textures/shields_shield_admin_preview.png new file mode 100644 index 0000000..762c2d2 Binary files /dev/null and b/mods/3d_armor/shields/textures/shields_shield_admin_preview.png differ diff --git a/mods/3d_armor/shields/textures/shields_shield_bronze.png b/mods/3d_armor/shields/textures/shields_shield_bronze.png index 62297a0..89d6799 100644 Binary files a/mods/3d_armor/shields/textures/shields_shield_bronze.png and b/mods/3d_armor/shields/textures/shields_shield_bronze.png differ diff --git a/mods/3d_armor/shields/textures/shields_shield_bronze_preview.png b/mods/3d_armor/shields/textures/shields_shield_bronze_preview.png new file mode 100644 index 0000000..5f9ca7b Binary files /dev/null and b/mods/3d_armor/shields/textures/shields_shield_bronze_preview.png differ diff --git a/mods/3d_armor/shields/textures/shields_shield_cactus.png b/mods/3d_armor/shields/textures/shields_shield_cactus.png new file mode 100644 index 0000000..8679aa5 Binary files /dev/null and b/mods/3d_armor/shields/textures/shields_shield_cactus.png differ diff --git a/mods/3d_armor/shields/textures/shields_shield_cactus_preview.png b/mods/3d_armor/shields/textures/shields_shield_cactus_preview.png new file mode 100644 index 0000000..ae83661 Binary files /dev/null and b/mods/3d_armor/shields/textures/shields_shield_cactus_preview.png differ diff --git a/mods/3d_armor/shields/textures/shields_shield_crystal.png b/mods/3d_armor/shields/textures/shields_shield_crystal.png new file mode 100644 index 0000000..888bc5a Binary files /dev/null and b/mods/3d_armor/shields/textures/shields_shield_crystal.png differ diff --git a/mods/3d_armor/shields/textures/shields_shield_crystal_preview.png b/mods/3d_armor/shields/textures/shields_shield_crystal_preview.png new file mode 100644 index 0000000..299776f Binary files /dev/null and b/mods/3d_armor/shields/textures/shields_shield_crystal_preview.png differ diff --git a/mods/3d_armor/shields/textures/shields_shield_diamond.png b/mods/3d_armor/shields/textures/shields_shield_diamond.png index 3f37300..e4938f9 100644 Binary files a/mods/3d_armor/shields/textures/shields_shield_diamond.png and b/mods/3d_armor/shields/textures/shields_shield_diamond.png differ diff --git a/mods/3d_armor/shields/textures/shields_shield_diamond_preview.png b/mods/3d_armor/shields/textures/shields_shield_diamond_preview.png new file mode 100644 index 0000000..afd004e Binary files /dev/null and b/mods/3d_armor/shields/textures/shields_shield_diamond_preview.png differ diff --git a/mods/3d_armor/shields/textures/shields_shield_enhanced_cactus.png b/mods/3d_armor/shields/textures/shields_shield_enhanced_cactus.png new file mode 100644 index 0000000..50d7673 Binary files /dev/null and b/mods/3d_armor/shields/textures/shields_shield_enhanced_cactus.png differ diff --git a/mods/3d_armor/shields/textures/shields_shield_enhanced_cactus_preview.png b/mods/3d_armor/shields/textures/shields_shield_enhanced_cactus_preview.png new file mode 100644 index 0000000..b15df06 Binary files /dev/null and b/mods/3d_armor/shields/textures/shields_shield_enhanced_cactus_preview.png differ diff --git a/mods/3d_armor/shields/textures/shields_shield_enhanced_wood.png b/mods/3d_armor/shields/textures/shields_shield_enhanced_wood.png new file mode 100644 index 0000000..14bd057 Binary files /dev/null and b/mods/3d_armor/shields/textures/shields_shield_enhanced_wood.png differ diff --git a/mods/3d_armor/shields/textures/shields_shield_enhanced_wood_preview.png b/mods/3d_armor/shields/textures/shields_shield_enhanced_wood_preview.png new file mode 100644 index 0000000..9298383 Binary files /dev/null and b/mods/3d_armor/shields/textures/shields_shield_enhanced_wood_preview.png differ diff --git a/mods/3d_armor/shields/textures/shields_shield_gold.png b/mods/3d_armor/shields/textures/shields_shield_gold.png new file mode 100644 index 0000000..b198d18 Binary files /dev/null and b/mods/3d_armor/shields/textures/shields_shield_gold.png differ diff --git a/mods/3d_armor/shields/textures/shields_shield_gold_preview.png b/mods/3d_armor/shields/textures/shields_shield_gold_preview.png new file mode 100644 index 0000000..66d8f2e Binary files /dev/null and b/mods/3d_armor/shields/textures/shields_shield_gold_preview.png differ diff --git a/mods/3d_armor/shields/textures/shields_shield_mithril.png b/mods/3d_armor/shields/textures/shields_shield_mithril.png index 13666d1..2fb622e 100644 Binary files a/mods/3d_armor/shields/textures/shields_shield_mithril.png and b/mods/3d_armor/shields/textures/shields_shield_mithril.png differ diff --git a/mods/3d_armor/shields/textures/shields_shield_mithril_preview.png b/mods/3d_armor/shields/textures/shields_shield_mithril_preview.png new file mode 100644 index 0000000..45306e3 Binary files /dev/null and b/mods/3d_armor/shields/textures/shields_shield_mithril_preview.png differ diff --git a/mods/3d_armor/shields/textures/shields_shield_steel.png b/mods/3d_armor/shields/textures/shields_shield_steel.png index 5d3ef06..cfe58a1 100644 Binary files a/mods/3d_armor/shields/textures/shields_shield_steel.png and b/mods/3d_armor/shields/textures/shields_shield_steel.png differ diff --git a/mods/3d_armor/shields/textures/shields_shield_steel_preview.png b/mods/3d_armor/shields/textures/shields_shield_steel_preview.png new file mode 100644 index 0000000..0a3d36a Binary files /dev/null and b/mods/3d_armor/shields/textures/shields_shield_steel_preview.png differ diff --git a/mods/3d_armor/shields/textures/shields_shield_wood.png b/mods/3d_armor/shields/textures/shields_shield_wood.png index 69c9e3a..baf092d 100644 Binary files a/mods/3d_armor/shields/textures/shields_shield_wood.png and b/mods/3d_armor/shields/textures/shields_shield_wood.png differ diff --git a/mods/3d_armor/shields/textures/shields_shield_wood_preview.png b/mods/3d_armor/shields/textures/shields_shield_wood_preview.png new file mode 100644 index 0000000..b446e4e Binary files /dev/null and b/mods/3d_armor/shields/textures/shields_shield_wood_preview.png differ diff --git a/mods/3d_armor/wieldview/description.txt b/mods/3d_armor/wieldview/description.txt new file mode 100644 index 0000000..0d51ad9 --- /dev/null +++ b/mods/3d_armor/wieldview/description.txt @@ -0,0 +1 @@ +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 69a3bd9..7a5a619 100644 --- a/mods/3d_armor/wieldview/init.lua +++ b/mods/3d_armor/wieldview/init.lua @@ -23,8 +23,10 @@ wieldview.get_item_texture = function(self, item) if minetest.registered_items[item] then if minetest.registered_items[item].inventory_image ~= "" then texture = minetest.registered_items[item].inventory_image - elseif node_tiles == true and minetest.registered_items[item].tiles then - texture = minetest.registered_items[item].tiles[1] + elseif node_tiles == true and minetest.registered_items[item].tiles + and type(minetest.registered_items[item].tiles[1]) == "string" + and minetest.registered_items[item].tiles[1] ~= "" then + texture = minetest.inventorycube(minetest.registered_items[item].tiles[1]) end end if wieldview.transform[item] then diff --git a/mods/inventory_plus/depends.txt b/mods/inventory_plus/depends.txt deleted file mode 100644 index 4ad96d5..0000000 --- a/mods/inventory_plus/depends.txt +++ /dev/null @@ -1 +0,0 @@ -default diff --git a/mods/inventory_plus/init.lua b/mods/inventory_plus/init.lua deleted file mode 100644 index f9b1cc3..0000000 --- a/mods/inventory_plus/init.lua +++ /dev/null @@ -1,229 +0,0 @@ ---[[ - -Inventory Plus for Minetest - -Copyright (c) 2012 cornernote, Brett O'Donnell -Source Code: https://github.com/cornernote/minetest-particles -License: GPLv3 - -Cisun: Author of inventory_plus_armor_shield.png (WTPFL) -Wuzzy: Author of inventory_plus_crafting_icon.png (WTFPL) -Other texture files made by Jordach (CC-BY-SA 3.0). - -]]-- - - --- expose api -inventory_plus = {} - --- define buttons -inventory_plus.buttons = {} -inventory_plus.buttons_ordered = {} - --- default inventory page -inventory_plus.default = minetest.setting_get("inventory_default") or "main" - --- register_button -inventory_plus.register_button = function(player,name,label) - local player_name = player:get_player_name() - if inventory_plus.buttons[player_name] == nil then - inventory_plus.buttons[player_name] = {["main"] = "Main"} - end - if inventory_plus.buttons_ordered[player_name] == nil then - inventory_plus.buttons_ordered[player_name] = {[1]="main"} - end - if inventory_plus.buttons[player_name][name] == nil then - inventory_plus.buttons[player_name][name] = label - table.insert(inventory_plus.buttons_ordered[player_name], name) - end -end - -inventory_plus.is_called = function(fields, compare_tabidname, player) - local player_name = player:get_player_name() - local input_id = tonumber(fields.inventory_plus_tabs) - if input_id ~= nil and inventory_plus.buttons_ordered[player_name][input_id] == compare_tabidname then - return true - else - return false - end -end - --- set_inventory_formspec -inventory_plus.set_inventory_formspec = function(player,formspec) - local name = player:get_player_name() - local privs = minetest.get_player_privs(name) - if privs.hg_maker then - -- if creative mode is on then wait a bit - minetest.after(0.1,function(tbl) - local player = minetest.get_player_by_name(tbl.name) - if player ~= nil then - player:set_inventory_formspec(tbl.formspec) - end - end, {name=name, formspec=formspec}) - else - player:set_inventory_formspec(formspec) - end -end - -inventory_plus.get_tabheader = function(player,tabidname) - local name = player:get_player_name() - local tabheader = "tabheader[0,0;inventory_plus_tabs;" - local bord = inventory_plus.buttons_ordered[name] - local tabid - if bord == nil or #bord == 1 then - return "" - end - for i=1,#bord do - local bordi = bord[i] - if bordi == tabidname then - tabid = i - end - local tabname = inventory_plus.buttons[name][bordi] - tabheader = tabheader .. tabname - if i~=#inventory_plus.buttons_ordered[name] then - tabheader = tabheader .. "," - end - end - tabheader = tabheader .. ";"..tostring(tabid)..";false;true]" - return tabheader -end - --- get_formspec -inventory_plus.get_formspec = function(player,page) - local f = {} - local fp = #f - fp = fp + 1 - f[fp] = "size[9,8.5]" - fp = fp + 1 - f[fp] = default.inventory_background - fp = fp + 1 - f[fp] = default.inventory_listcolors - - -- player inventory - fp = fp + 1 - f[fp] = "box[0.3,4.2;8.2,4.5;#FFFFFF40]" - fp = fp + 1 - f[fp] = "label[0.5,4.2;Inventory]" - fp = fp + 1 - f[fp] = "list[current_player;main;0.5,4.7;8,4;]" - - -- main page - if page=="main" then - - local name = player:get_player_name() - -- tabs - local tabheader = inventory_plus.get_tabheader(player,page) - fp = fp + 1 - f[fp] = tabheader - - -- armor - fp = fp + 1 - f[fp] = "box[-0.1,-0.1;4.1,4.1;#FFFFFF40]" - fp = fp + 1 - f[fp] = "label[0,-0.1;Armor]" - fp = fp + 1 - f[fp] = "image[0,0;1,1;inventory_plus_armor_head.png]" - fp = fp + 1 - f[fp] = "image[0,1;1,1;inventory_plus_armor_torso.png]" - fp = fp + 1 - f[fp] = "image[0,2;1,1;inventory_plus_armor_legs.png]" - fp = fp + 1 - f[fp] = "image[0,3;1,1;inventory_plus_armor_feet.png]" - fp = fp + 1 - f[fp] = "image[1,1;1,1;inventory_plus_armor_shield.png]" - fp = fp + 1 - f[fp] = "list[detached:"..name.."_armor;armor_head;2,0;1,1;]" - fp = fp + 1 - f[fp] = "list[detached:"..name.."_armor;armor_torso;2,1;1,1;]" - fp = fp + 1 - f[fp] = "list[detached:"..name.."_armor;armor_legs;2,2;1,1;]" - fp = fp + 1 - f[fp] = "list[detached:"..name.."_armor;armor_feet;2,3;1,1;]" - fp = fp + 1 - f[fp] = "list[detached:"..name.."_armor;armor_shield;3,1;1,1;]" - - -- crafting - fp = fp + 1 - f[fp] = "box[4.4,0;4.6,3.5;#FFFFFF40]" - fp = fp + 1 - f[fp] = "label[4.5,0;Crafting]" - fp = fp + 1 - f[fp] = "image[7.5,1.5;0.5,1;inventory_plus_crafting_icon.png]" - fp = fp + 1 - f[fp] = "list[current_player;craftpreview;8,1.5;1,1;]" - if minetest.setting_getbool("inventory_craft_small") then - fp = fp + 1 - f[fp] = "list[current_player;craft;4.5,0.5;2,2;]" - player:get_inventory():set_width("craft", 2) - player:get_inventory():set_size("craft", 2*2) - else - fp = fp + 1 - f[fp] = "list[current_player;craft;4.5,0.5;3,3;]" - player:get_inventory():set_width("craft", 3) - player:get_inventory():set_size("craft", 3*3) - end - end - - return table.concat(f, "") -end - --- trash slot -inventory_plus.trash = minetest.create_detached_inventory("trash", { - allow_put = function(inv, listname, index, stack, player) - if minetest.setting_getbool("creative_mode") then - return stack:get_count() - else - return 0 - end - end, - on_put = function(inv, listname, index, stack, player) - inv:set_stack(listname, index, nil) - end, -}) -inventory_plus.trash:set_size("main", 1) - --- refill slot -inventory_plus.refill = minetest.create_detached_inventory("refill", { - allow_put = function(inv, listname, index, stack, player) - local privs = minetest.get_player_privs(name) - if privs.hg_maker then - return stack:get_count() - else - return 0 - end - end, - on_put = function(inv, listname, index, stack, player) - inv:set_stack(listname, index, ItemStack(stack:get_name().." "..stack:get_stack_max())) - end, -}) -inventory_plus.refill:set_size("main", 1) - --- register_on_joinplayer -minetest.register_on_joinplayer(function(player) - if minetest.setting_getbool("inventory_craft_small") then - player:get_inventory():set_width("craft", 2) - player:get_inventory():set_size("craft", 2*2) - else - player:get_inventory():set_width("craft", 3) - player:get_inventory():set_size("craft", 3*3) - end - local name = player:get_player_name() - local privs = minetest.get_player_privs(name) - minetest.after(1,function(name) - local player = minetest.get_player_by_name(name) - if player ~= nil then - inventory_plus.set_inventory_formspec(player,inventory_plus.get_formspec(player, inventory_plus.default)) - end - end, name) -end) - --- register_on_player_receive_fields -minetest.register_on_player_receive_fields(function(player, formname, fields) - -- main - if inventory_plus.is_called(fields, "main", player) then - inventory_plus.set_inventory_formspec(player, inventory_plus.get_formspec(player,"main")) - end -end) - --- log that we started -minetest.log("action", "[MOD]"..minetest.get_current_modname().." -- loaded from "..minetest.get_modpath(minetest.get_current_modname())) diff --git a/mods/inventory_plus/textures/inventory_plus_armor_feet.png b/mods/inventory_plus/textures/inventory_plus_armor_feet.png deleted file mode 100644 index 1a78b38..0000000 Binary files a/mods/inventory_plus/textures/inventory_plus_armor_feet.png and /dev/null differ diff --git a/mods/inventory_plus/textures/inventory_plus_armor_head.png b/mods/inventory_plus/textures/inventory_plus_armor_head.png deleted file mode 100644 index 0189a4d..0000000 Binary files a/mods/inventory_plus/textures/inventory_plus_armor_head.png and /dev/null differ diff --git a/mods/inventory_plus/textures/inventory_plus_armor_legs.png b/mods/inventory_plus/textures/inventory_plus_armor_legs.png deleted file mode 100644 index c0d6982..0000000 Binary files a/mods/inventory_plus/textures/inventory_plus_armor_legs.png and /dev/null differ diff --git a/mods/inventory_plus/textures/inventory_plus_armor_shield.png b/mods/inventory_plus/textures/inventory_plus_armor_shield.png deleted file mode 100644 index 8eaee8f..0000000 Binary files a/mods/inventory_plus/textures/inventory_plus_armor_shield.png and /dev/null differ diff --git a/mods/inventory_plus/textures/inventory_plus_armor_torso.png b/mods/inventory_plus/textures/inventory_plus_armor_torso.png deleted file mode 100644 index fdd86f2..0000000 Binary files a/mods/inventory_plus/textures/inventory_plus_armor_torso.png and /dev/null differ diff --git a/mods/inventory_plus/textures/inventory_plus_crafting_icon.png b/mods/inventory_plus/textures/inventory_plus_crafting_icon.png deleted file mode 100644 index 06f80c8..0000000 Binary files a/mods/inventory_plus/textures/inventory_plus_crafting_icon.png and /dev/null differ diff --git a/mods/spawning/init.lua b/mods/spawning/init.lua index b27bbb5..d71b6a7 100644 --- a/mods/spawning/init.lua +++ b/mods/spawning/init.lua @@ -25,7 +25,7 @@ if input then end until false registered_spawns[i] = { - pos={x=parms[1],y=parms[2],z=parms[3]} + pos={x=tonumber(parms[1]),y=tonumber(parms[2]),z=tonumber(parms[3])} } end io.close(input)