From b62ef00410266d9ff6d60f8b9099e37010100d72 Mon Sep 17 00:00:00 2001 From: root Date: Wed, 18 Aug 2021 02:16:20 +0200 Subject: [PATCH] fixes and addons --- mods/beauty_pack/closet/api/api_container.lua | 3 +- mods/beauty_pack/vanity/vanity.lua | 4 +- mods/juanchi/elez/init.lua | 17 +- mods/juanchi/eraz/LICENSE.md | 4 + mods/juanchi/eraz/README.md | 33 ++ mods/juanchi/eraz/api.lua | 521 ++++++++++++++++++ mods/juanchi/eraz/brain_merchant.lua | 37 ++ mods/juanchi/eraz/cloth.lua | 25 + mods/juanchi/eraz/init.lua | 20 + mods/juanchi/eraz/locale/eraz.es.tr | 24 + mods/juanchi/eraz/loots.lua | 15 + mods/juanchi/eraz/merchant.lua | 64 +++ mods/juanchi/eraz/mod.conf | 3 + .../eraz/textures/eraz_adventurer_boots.png | Bin 0 -> 4794 bytes .../textures/eraz_adventurer_boots_inv.png | Bin 0 -> 5234 bytes .../eraz_adventurer_boots_preview.png | Bin 0 -> 6037 bytes .../eraz/textures/eraz_adventurer_jacket.png | Bin 0 -> 5605 bytes .../textures/eraz_adventurer_jacket_inv.png | Bin 0 -> 4284 bytes .../eraz_adventurer_jacket_preview.png | Bin 0 -> 4793 bytes mods/juanchi/eraz/textures/eraz_basket.png | Bin 0 -> 2133 bytes .../eraz/textures/eraz_spawnegg_merchant.png | Bin 0 -> 1424 bytes mods/juanchi/invz/init.lua | 2 +- mods/juanchi/invz/textures/invz_skull.png | Bin 0 -> 1381 bytes mods/juanchi/modz/init.lua | 6 +- .../default/locale/default.de.tr | 4 +- .../default/locale/default.es.tr | 4 +- .../default/locale/default.fr.tr | 6 +- .../default/locale/default.it.tr | 4 +- .../default/locale/default.pt_BR.tr | 3 + .../default/locale/default.ru.tr | 6 +- mods/minetest_game/default/mapgen.lua | 66 +++ mods/minetest_game/default/nodes.lua | 57 ++ .../default/textures/default_alocasia.png | Bin 0 -> 5327 bytes .../textures/default_bird_paradise.png | Bin 0 -> 1922 bytes .../default/textures/default_brazilwood.png | Bin 0 -> 2811 bytes .../minetest_game/give_initial_stuff/init.lua | 2 +- mods/minetest_game/player_api/api.lua | 15 +- .../minetest_game/player_api/base_texture.lua | 28 +- mods/minetest_game/player_api/cloths.lua | 15 +- .../player_api/textures/player_green_eye.png | Bin 1382 -> 1304 bytes .../player_api/textures/player_hazel_eye.png | Bin 1348 -> 1324 bytes .../player_api/textures/player_pink_eye.png | Bin 1209 -> 1307 bytes mods/petz/petz/misc/wagon.lua | 6 +- 43 files changed, 949 insertions(+), 45 deletions(-) create mode 100644 mods/juanchi/eraz/LICENSE.md create mode 100644 mods/juanchi/eraz/README.md create mode 100644 mods/juanchi/eraz/api.lua create mode 100644 mods/juanchi/eraz/brain_merchant.lua create mode 100644 mods/juanchi/eraz/cloth.lua create mode 100644 mods/juanchi/eraz/init.lua create mode 100644 mods/juanchi/eraz/locale/eraz.es.tr create mode 100644 mods/juanchi/eraz/loots.lua create mode 100644 mods/juanchi/eraz/merchant.lua create mode 100644 mods/juanchi/eraz/mod.conf create mode 100644 mods/juanchi/eraz/textures/eraz_adventurer_boots.png create mode 100644 mods/juanchi/eraz/textures/eraz_adventurer_boots_inv.png create mode 100644 mods/juanchi/eraz/textures/eraz_adventurer_boots_preview.png create mode 100644 mods/juanchi/eraz/textures/eraz_adventurer_jacket.png create mode 100644 mods/juanchi/eraz/textures/eraz_adventurer_jacket_inv.png create mode 100644 mods/juanchi/eraz/textures/eraz_adventurer_jacket_preview.png create mode 100644 mods/juanchi/eraz/textures/eraz_basket.png create mode 100644 mods/juanchi/eraz/textures/eraz_spawnegg_merchant.png create mode 100644 mods/juanchi/invz/textures/invz_skull.png create mode 100644 mods/minetest_game/default/textures/default_alocasia.png create mode 100644 mods/minetest_game/default/textures/default_bird_paradise.png create mode 100644 mods/minetest_game/default/textures/default_brazilwood.png diff --git a/mods/beauty_pack/closet/api/api_container.lua b/mods/beauty_pack/closet/api/api_container.lua index c36a94e..074cca4 100644 --- a/mods/beauty_pack/closet/api/api_container.lua +++ b/mods/beauty_pack/closet/api/api_container.lua @@ -34,7 +34,8 @@ function closet.compose_preview(clicker, gender) if not(underwear) then lower = "cloth_lower_underwear_preview.png" end - local base_texture = player_api.compose_base_texture(clicker, { + local _base_texture = player_api.get_base_texture_table(clicker) + local base_texture = player_api.compose_base_texture(_base_texture, { canvas_size ="32x64", skin_texture = "closet_player_preview.png", eyebrowns_pos = "8,0", diff --git a/mods/beauty_pack/vanity/vanity.lua b/mods/beauty_pack/vanity/vanity.lua index 911698b..e39b692 100644 --- a/mods/beauty_pack/vanity/vanity.lua +++ b/mods/beauty_pack/vanity/vanity.lua @@ -3,7 +3,9 @@ local S = ... function vanity.get_vanity_formspec(clicker) --5.4--local model = player_api.get_gender_model(gender) - local face_preview = minetest.formspec_escape(player_api.compose_base_texture(clicker, { + local _base_texture = player_api.get_base_texture_table(clicker) + + local face_preview = minetest.formspec_escape(player_api.compose_base_texture(_base_texture, { canvas_size ="16x16", skin_texture = "vanity_face_base.png", eyebrowns_pos = "0,0", diff --git a/mods/juanchi/elez/init.lua b/mods/juanchi/elez/init.lua index a14618e..abbc966 100644 --- a/mods/juanchi/elez/init.lua +++ b/mods/juanchi/elez/init.lua @@ -1,12 +1,13 @@ elez = {} -local coin_name = "elez:electrum" +elez.coin_name = "elez:electrum" +elez.coin_symbol = "ê" local ingots_to_coins = 99 local withdraw_max = 99 local modname = minetest.get_current_modname() local S = minetest.get_translator(modname) --Electrum -minetest.register_craftitem(coin_name, { +minetest.register_craftitem(elez.coin_name, { description = S("Electrum"), inventory_image = "elez_electrum.png", wield_image = "elez_electrum.png", @@ -15,7 +16,7 @@ minetest.register_craftitem(coin_name, { minetest.register_craft({ type = "shaped", - output = coin_name.." "..tostring(ingots_to_coins), + output = elez.coin_name.." "..tostring(ingots_to_coins), recipe = { {"", "moreores:silver_ingot", ""}, {"moreores:silver_ingot", "default:gold_ingot", "moreores:silver_ingot"}, @@ -79,7 +80,7 @@ minetest.register_craft({ type = "shaped", output = "elez:piggy_bank", recipe = { - {"", coin_name, ""}, + {"", elez.coin_name, ""}, {"", "dye:pink", ""}, {"", "default:clay", ""}, } @@ -151,14 +152,14 @@ function elez.save_money(player) local inv = player:get_inventory() local inv_list = inv:get_list("main") local player_name = player:get_player_name() - if not inv:contains_item("main", coin_name) then + if not inv:contains_item("main", elez.coin_name) then minetest.chat_send_player(player_name, S("You have no electrums in your inventory.")) return false end local amount = 0 for i = 1, #inv_list do local item_stack = inv_list[i] - if item_stack:get_name() == coin_name then + if item_stack:get_name() == elez.coin_name then amount = amount + item_stack:get_count() inv:set_stack("main", i, ItemStack(nil)) end @@ -210,7 +211,7 @@ function elez.withdraw_money(player, amount) return false, S("Error: You has not").." "..tostring(amount).." "..S("of money to withdraw.") end local inv = player:get_inventory() - local money_stack = ItemStack(coin_name.." "..tostring(amount)) + local money_stack = ItemStack(elez.coin_name.." "..tostring(amount)) if not inv:room_for_item("main", money_stack) then return false, S("No space in your inventory for the money.") else @@ -240,7 +241,7 @@ local function compose_formspec(user, title, msg, default_fields, withdraw) size[6,5] label[2.25,0.25;]]..title..[[] label[0.25,0.75;]]..S("Account Balance")..": ".. - tostring(elez.get_money(user)).." ê"..[[] + tostring(elez.get_money(user)).." "..elez.coin_symbol..[[] field[0.25,1.25;2,1;fld_name;]]..S("Name")..[[:;]]..default_fields["name"]..[[] field_close_on_enter[fld_name;false] field[2.25,1.25;1,1;fld_amount;]]..S("Amount")..[[:;]]..default_fields["amount"]..[[] diff --git a/mods/juanchi/eraz/LICENSE.md b/mods/juanchi/eraz/LICENSE.md new file mode 100644 index 0000000..efb5d1d --- /dev/null +++ b/mods/juanchi/eraz/LICENSE.md @@ -0,0 +1,4 @@ +# Licenses + +- Source code: GPLv3. +- Textures: CC BY-SA 4.0 diff --git a/mods/juanchi/eraz/README.md b/mods/juanchi/eraz/README.md new file mode 100644 index 0000000..c27f844 --- /dev/null +++ b/mods/juanchi/eraz/README.md @@ -0,0 +1,33 @@ +# MerchandZ + +Are you tired of complicated and absurd trading mods? Do you want the best trading mod on the market? + +If your answer is yes, you are in luck! MerchantZ, the ultimate mod, is here. + +## Merchantz + +- They are cute characters. +- You can put them in the world and they add themselves to trade with the players. + +### Wandering or Fixed + +Hold the special key (aux) to spawn a fixed merchantz. + +## Simple Trading System + +- Click and buy! + +## Loots + +Register your loots in an easy way. Period. + +You can create a "user.lua" file with your loots definitions. + +## Edit the merchants + +Hold the special key (aux) and rightclick the merchantz. It requires the server priv. + +## Licenses + +- Code: GPL v3.0 +- Textures: CC BY-SA 4.0 diff --git a/mods/juanchi/eraz/api.lua b/mods/juanchi/eraz/api.lua new file mode 100644 index 0000000..a8fbc68 --- /dev/null +++ b/mods/juanchi/eraz/api.lua @@ -0,0 +1,521 @@ +local S = ... + +--Helper Funtions + +local function is_table_empty(_table) + return next(_table) == nil +end + +local function is_srt_empty(s) + return s == nil or s == '' +end + +local function round(x) + return x>=0 and math.floor(x+0.5) or math.ceil(x-0.5) +end + +local function boolean_to_string(var) + if var or var == 1 or var == "true" then + return "true" + elseif not(var) or var == nil or var == 0 or var == "false" then + return "false" + else + return "false" + end +end + +eraz.file_exists = function(filename) + local f = io.open(filename, "r") + if f ~= nil then + io.close(f) + return true + else + return false + end +end + +--CORE functions + +local function set_gender() + local gender + if math.random(2) == 1 then + gender = "male" + else + gender = "female" + end + return gender +end + +local function set_cloths() + local cloths = { + head = nil, + upper = "eraz:adventurer_jacket", + lower = nil, + footwear = "eraz:adventurer_boots", + } + return cloths +end + +local function set_loot() + if is_table_empty(eraz.loots) then + return nil + end + local keyset = {} + for k in pairs(eraz.loots) do + table.insert(keyset, k) + end + local loot = keyset[math.random(#keyset)] + --minetest.chat_send_all(loot) + return loot +end + +local function load_loot(merchant) + local loot = eraz.loots[merchant.loot] + return loot +end + +local function update_nick(self) + if self.show_name and self.nick and not(self.nick == "") then + self.object:set_nametag_attributes({ + text = self.nick, + bgcolor = "#FFFFFF00", + }) + else + self.object:set_nametag_attributes({ + text = "", + }) + end +end + +local function compose_cloth(_base_texture, cloths) + local base_texture = player_api.compose_base_texture(_base_texture, { + canvas_size ="128x64", + skin_texture = "player_skin.png", + eyebrowns_pos = "16,16", + eye_right_pos = "18,24", + eye_left_pos = "26,24", + mouth_pos = "16,28", + hair_preview = false, + hair_pos = "0,0", + }) + local cloth = base_texture.."^".."[combine:128x64:0,0=" + if cloths.head then + cloth = cloth..":"..player_api.cloth_pos[1].."=" + ..minetest.registered_craftitems[cloths.head]._cloth_texture + end + if cloths.upper then + cloth = cloth..":"..player_api.cloth_pos[2].."=" + ..minetest.registered_craftitems[cloths.upper]._cloth_texture + end + if cloths.lower then + cloth = cloth..":"..player_api.cloth_pos[3].."=" + ..minetest.registered_craftitems[cloths.lower]._cloth_texture + end + if cloths.footwear then + cloth = cloth..":"..player_api.cloth_pos[4].."=" + ..minetest.registered_craftitems[cloths.footwear]._cloth_texture + end + return cloth +end + +function eraz.set_initial_properties(self, staticdata, dtime_s) + if dtime_s == 0 then --new merchant + --self.type already defined when spawned + self.nick = S("Merchant") + self.gender = mobkit.remember(self, "gender", set_gender()) + local base_texture = player_api.create_base_texture(self.gender) + self.base_texture = mobkit.remember(self, "base_texture", minetest.serialize(base_texture)) + local cloths = set_cloths() + local cloth = compose_cloth(base_texture, cloths) + self.cloth = mobkit.remember(self, "cloth", cloth) + self.loot = mobkit.remember(self, "loot", set_loot()) + self.show_name = mobkit.remember(self, "show_name", false) + else + self.cloth = mobkit.recall(self, "cloth") + self.base_texture = mobkit.recall(self, "base_texture") + self.gender = mobkit.recall(self, "gender") + self.loot = mobkit.recall(self, "loot") + self.type = mobkit.recall(self, "type") + self.nick = mobkit.recall(self, "nick") or S("Merchant") + self.show_name = mobkit.recall(self, "show_name") or false + end + local model + if self.gender == "female" then + model = "female.b3d" + else + model = "character.b3d" + end + self.trading = mobkit.remember(self, "trading", false) + self.object:set_properties({ + visual = "mesh", + mesh = model, + textures = {self.cloth}, + }) + if self.type == "fixed" then + self:stand() + end + update_nick(self) +end + +function eraz.register_egg(name, desc, inv_img) + local description = S("@1", desc) + minetest.register_craftitem(name.."_set", { + description = description, + inventory_image = inv_img, + groups = {spawn_egg = 2}, + stack_max = 1, + on_place = function(itemstack, placer, pointed_thing) + local spawn_pos = pointed_thing.above + local under = minetest.get_node(pointed_thing.under) + local def = minetest.registered_nodes[under.name] + if def and def.on_rightclick then + return def.on_rightclick(pointed_thing.under, under, placer, itemstack) + end + if spawn_pos and not minetest.is_protected(spawn_pos, placer:get_player_name()) then + if not minetest.registered_entities[name] then + return + end + local meta = itemstack:get_meta() + local staticdata = meta:get_string("staticdata") + local ent = minetest.add_entity(spawn_pos, name, staticdata) + local ent_ref = ent:get_luaentity() + local merchant_type + local controls = placer:get_player_control() + if controls.aux1 then + merchant_type = "fixed" + else + merchant_type = "errand" + end + ent_ref.type = mobkit.remember(ent_ref, "type", merchant_type) + if merchant_type == "fixed" then + ent_ref:stand() + end + itemstack:take_item() + end + end, + }) +end + +function eraz.cancel_trading(self, msg) + local player_name = self.trading + if player_name then + local player = minetest.get_player_by_name(player_name) + if player then + minetest.close_formspec(player_name, "eraz:merchant") + if msg then + minetest.chat_send_player(player_name, msg) + end + end + end +end + +local _contexts = {} + +local function get_context(name) + local context = _contexts[name] or {} + _contexts[name] = context + return context +end + +minetest.register_on_leaveplayer(function(player) + _contexts[player:get_player_name()] = nil +end) + +local function get_items_loot(loot) + local items_loot = "" + local items_count = 0 + local col = 0 + local row = 0 + local amount, price + for item, item_def in pairs(eraz.loots[loot].items) do + amount = tostring(item_def.amount or 1) + price = tostring(item_def.price or 0)..elez.coin_symbol + items_loot = items_loot.. + "item_image_button["..tostring(col)..","..tostring(row)..";1,1;"..item_def.name..";"..item..";"..amount.."/"..price.."]" + items_count = items_count + 1 + if col == 2 then + col = 0 + row = row + 1 + else + col = col + 1 + end + end + return items_loot, items_count +end + +local function get_items_basket(player) + local items_basket = "" + local total_cost = 0 + local player_name = player:get_player_name() + local context = get_context(player_name) + if is_table_empty(context.basket) then + return items_basket, total_cost + end + local col = 0 + local row = 0 + local amount, price + for item, item_def in pairs(context.basket) do + amount = tostring(item_def.amount or 1) + price = tostring(item_def.price or 0)..elez.coin_symbol + items_basket = items_basket.. + "item_image_button["..tostring(col)..","..tostring(row) + ..";1,1;"..item_def.name..";"..item..";"..amount.."/"..price.."]" + total_cost = total_cost + item_def.price + if col == 2 then + col = 0 + row = row + 1 + else + col = col + 1 + end + end + context.total_cost = total_cost + return items_basket, total_cost +end + +local function compose_edit_formspec(self, player) + local player_name = player:get_player_name() + local context = get_context(player_name) + local loots = "" + local index + local i = 1 + for loot_name in pairs(eraz.loots) do + if i > 1 then + loots = loots.."," + end + loots = loots..loot_name + if loot_name == context.merchant.loot then + index = i + end + i = i + 1 + end + if not index then + index = 0 + end + local selected = "false" + if context.merchant.type == "fixed" then + selected = "true" + end + local formspec = [[ + formspec_version[4] + size[6,6] + set_focus[btn_close;] + field[0.5,0.5;3,0.5;ipt_nick;]]..S("Name")..":"..";"..context.merchant.nick..[[] + checkbox[3.75,0.75;chk_show_name;]]..S("Show name")..";"..boolean_to_string(context.merchant.show_name)..[[] + label[0.5,2;]]..S("Loot")..":"..[[] + dropdown[1.5,1.5;3;drpdwn;]]..loots..[[;]]..tostring(index)..[[;] + checkbox[0.5,3;chk_fixed;]]..S("Fixed")..[[;]]..selected..[[] + style[btn_remove;bgcolor=indianred] + button_exit[0.5,3.5;1,1;btn_remove;]]..S("Remove")..[[] + button_exit[2.5,4.5;1,1;btn_close;]]..S("Close")..[[] + ]] + return formspec +end + +minetest.register_on_player_receive_fields(function(player, formname, fields) + if formname ~= "eraz:edit_merchant" then + return + end + local player_name = player:get_player_name() + local context = get_context(player_name) + if fields.drpdwn then + context.merchant.loot = mobkit.remember(context.merchant, "loot", fields.drpdwn) + end + if fields.chk_fixed then + local is_fixed = minetest.is_yes(fields.chk_fixed) + local _type + if is_fixed then + _type = "fixed" + else + _type = "errand" + end + context.merchant.type = mobkit.remember(context.merchant, "type", _type) + if is_fixed then + context.merchant:stand() + end + end + if fields.ipt_nick then + context.merchant.nick = mobkit.remember(context.merchant, "nick", fields.ipt_nick) + update_nick(context.merchant) + end + if fields.chk_show_name then + context.merchant.show_name = mobkit.remember(context.merchant, "show_name", + minetest.is_yes(fields.chk_show_name)) + update_nick(context.merchant) + end + if fields.btn_remove then + if context.merchant.trading then + minetest.close_formspec(player_name, "eraz:merchant") + end + eraz.cancel_trading(context.merchant, S("The merchant has been removed.")) + context.merchant.object:remove() + end +end) + +local function compose_formspec(self, player, msg) + local money = tostring(elez.get_money(player)).." "..elez.coin_symbol + local items_loot, items_count = get_items_loot(self.loot) + local items_basket, total_cost = get_items_basket(player) + total_cost = tostring(total_cost).." "..elez.coin_symbol + local items_count_str = tostring(items_count) + if is_srt_empty(msg) then + msg = "" + end + local face = player_api.get_face(minetest.deserialize(self.base_texture), 1.0, true) + local formspec = [[ + formspec_version[4] + size[8.25,8.25] + image[0.5,0.25;0.5,0.5;]]..face..[[] + label[1.25,0.5;]]..self.nick..[[] + label[0.5,1;]]..items_count_str.." "..S("items(s)") + .." | "..S("Amount/Price")..[[] + label[0.5,4.5;]]..S("Click to add to the basket")..[[] + label[4.25,4.5;]]..S("Click to delete from the basket")..[[] + label[5.25,0.75;]]..S("Money")..":".." "..money..[[] + image[4.5,0.625;0.5,0.5;eraz_basket.png] + label[5.25,1;]]..S("Cost")..":".." "..total_cost..[[] + box[0.5,1.25;3,3;darkgray] + scroll_container[0.5,1.25;3,3;scroll_buy;vertical;] + ]]..items_loot..[[ + scroll_container_end[] + scrollbaroptions[min=0;max=]]..tostring(round(items_count)) + ..[[;smallstep=]]..items_count_str..[[;largestep=]]..items_count_str..[[] + style_type[scroll_buy;bgcolor=#446699] + scrollbar[3.5,1.25;0.5,3;vertical;scroll_buy;0] + box[4.25,1.25;3,3;darkgray] + scroll_container[4.25,1.25;3,3;scroll_basket;vertical;] + ]]..items_basket..[[ + scroll_container_end[] + scrollbaroptions[min=0;max=]]..tostring(round(items_count)) + ..[[;smallstep=]]..items_count_str..[[;largestep=]]..items_count_str..[[] + scrollbar[7.25,1.25;0.5,3;vertical;scroll_basket;0] + button_exit[5.125,5;1,1;btn_buy;]]..S("Buy")..[[] + label[0.5,6.5;]]..msg..[[] + button_exit[3.25,6.75;1,1;btn_close;]]..S("Close")..[[] + ]] + return formspec +end + +minetest.register_on_player_receive_fields(function(player, formname, fields) + if formname ~= "eraz:merchant" then + return + end + local player_name = player:get_player_name() + local context = get_context(player_name) + local item, item_def + local action + --minetest.chat_send_all(minetest.serialize(fields)) + for key, value in pairs(fields) do + if not(key=="scroll_buy") and not(key=="scroll_basket") and not(key=="quit") + and not(key=="btn_close") and not(key=="btn_buy") then + item = key + if string.sub(key, 1, 8) == "_BASKET_" then + action = "delete" + item_def = context.basket[item] + else + action = "buy" + item_def = eraz.loots[context.merchant.loot].items[key] + end + break + end + end + if item then + if action == "buy" then + item = "_BASKET_"..item + if context.basket[item] then --already in the basket=>only increase amount + context.basket[item].amount = context.basket[item].amount + item_def.amount + context.basket[item].price = context.basket[item].price + item_def.price + else --new + context.basket[item] = { + name = item_def.name, + price = item_def.price, + amount = item_def.amount, + } + end + else --action = "delete" + context.total_cost = context.total_cost - context.basket[item].price + context.basket[item] = nil + end + minetest.show_formspec(player_name, "eraz:merchant", + compose_formspec(context.merchant, player)) + return + end + if fields.btn_buy then + local msg + if context.total_cost <= 0 then + msg = S("You have not selected products to buy!") + elseif elez.get_money(player) < context.total_cost then + msg = S("You have not enough money!") + else + local inv = player:get_inventory() + local item_stack + local cost = 0 + for _item, _item_def in pairs(context.basket) do + item_stack = ItemStack(_item_def.name.." "..tostring(_item_def.amount)) + if inv:room_for_item("main", item_stack) then + inv:add_item("main", item_stack) + context.basket[_item] = nil + elez.add_money(player, -_item_def.price) + cost = cost + _item_def.price + context.total_cost = context.total_cost - _item_def.price + end + end + msg = S("You have purchased products with a value of").." " + ..tostring(cost).." "..elez.coin_symbol + end + minetest.show_formspec(player_name, "eraz:merchant", + compose_formspec(context.merchant, player, msg)) + return + end + context.merchant.trading = false +end) + +local function load_shop(self, player) + local player_name = player:get_player_name() + local loot = load_loot(self) + if not loot then + minetest.chat_send_player(player_name, S("This merchant has not loot.")) + return + end + local context = get_context(player_name) + context.merchant = self + context.basket = {} + context.total_cost = 0 + minetest.show_formspec(player_name, "eraz:merchant", + compose_formspec(self, player)) + self.trading = player_name + if self.type == "errand" then + self:stand() --stop merchant + end +end + +local function edit_merchant(self, player) + local player_name = player:get_player_name() + local context = get_context(player_name) + context.merchant = self + minetest.show_formspec(player_name, "eraz:edit_merchant", + compose_edit_formspec(self, player)) +end + +function eraz.register_loot(name, def) + if not eraz.loots[name] then + eraz.loots[name] = def + end +end + +function eraz.on_rightclick(self, player) + local controls = player:get_player_control() + local has = minetest.check_player_privs(player, { + server = true, + }) + if has and controls.aux1 then + edit_merchant(self, player) + return + end + if self.trading then + minetest.chat_send_player(player:get_player_name(), S("This merchant is already trading with another player.")) + return + else + load_shop(self, player) + return + end +end diff --git a/mods/juanchi/eraz/brain_merchant.lua b/mods/juanchi/eraz/brain_merchant.lua new file mode 100644 index 0000000..5c9355b --- /dev/null +++ b/mods/juanchi/eraz/brain_merchant.lua @@ -0,0 +1,37 @@ +-- The Brain of the Merchant +-- + +function eraz.merchant_brain(self) + + --local pos = self.object:get_pos() + + mobkit.vitals(self) + + if self.hp <= 0 then + self:on_die() + return + end + + if mobkit.timer(self, 1) then + + local prty = mobkit.get_queue_priority(self) + + if prty < 30 then + if self.isinliquid then + mobkit.hq_liquid_recovery(self, 30) + return + end + end + + --local player = mobkit.get_nearby_player(self) + + --minetest.chat_send_all("test") + + --Wandering default + if mobkit.is_queue_empty_high(self) and self.type == "errand" + and not(self.trading) then + mobkit.hq_roam(self, 0) + end + + end +end diff --git a/mods/juanchi/eraz/cloth.lua b/mods/juanchi/eraz/cloth.lua new file mode 100644 index 0000000..998ae68 --- /dev/null +++ b/mods/juanchi/eraz/cloth.lua @@ -0,0 +1,25 @@ +local S = ... + +--Adventurer Jacket + +player_api.register_cloth("eraz:adventurer_jacket", { + description = S("Adventurer Jacket"), + texture = "eraz_adventurer_jacket.png", + inventory_image = "eraz_adventurer_jacket_inv.png", + wield_image = "eraz_adventurer_jacket_inv.png", + preview = "eraz_adventurer_jacket_preview.png", + gender = "unisex", + groups = {cloth = 2}, +}) + +--Adventurer Boots + +player_api.register_cloth("eraz:adventurer_boots", { + description = S("Adventurer Boots"), + texture = "eraz_adventurer_boots.png", + inventory_image = "eraz_adventurer_boots_inv.png", + wield_image = "eraz_adventurer_boots_inv.png", + preview = "eraz_adventurer_boots_preview.png", + gender = "unisex", + groups = {cloth = 4}, +}) diff --git a/mods/juanchi/eraz/init.lua b/mods/juanchi/eraz/init.lua new file mode 100644 index 0000000..4e385f5 --- /dev/null +++ b/mods/juanchi/eraz/init.lua @@ -0,0 +1,20 @@ +-- +-- Eraz +-- + +eraz = {} +eraz.loots = {} + +local modname = minetest.get_current_modname() +local modpath = minetest.get_modpath(modname) +local S = minetest.get_translator(modname) + +assert(loadfile(modpath .. "/api.lua"))(S) +assert(loadfile(modpath .. "/loots.lua"))() +assert(loadfile(modpath .. "/brain_merchant.lua"))() +assert(loadfile(modpath .. "/merchant.lua"))(S) +assert(loadfile(modpath .. "/cloth.lua"))(S) +local user_file = modpath .. "/user.lua" +if eraz.file_exists(user_file) then + assert(loadfile(user_file))() +end diff --git a/mods/juanchi/eraz/locale/eraz.es.tr b/mods/juanchi/eraz/locale/eraz.es.tr new file mode 100644 index 0000000..2ec92fc --- /dev/null +++ b/mods/juanchi/eraz/locale/eraz.es.tr @@ -0,0 +1,24 @@ +# textdomain: eraz +Merchant=Mercader +Money=Dinero +Cost=Coste +item(s)=producto(s) +Amount/Price=Cantidad/Precio +Click to add to the basket=Clic para añadir a la cesta +Click to delete from the basket=Clic para eliminar de la cesta +Buy=Comprar +Close=Cerrar +Name=Nombre +Loot=Lote +Fixed=Estático +Remove=Eliminar +Show name=Mostrar nombre +This merchant has not loot.=Este mercader no tiene nada que vender. +The merchant has been removed.=El mercader ha sido eliminado. +The merchant has died.=El mercader ha muerto. +This merchant is already trading with another player.=Este mercader ya está comerciando con otro jugador. +You have purchased products with a value of=Has comprado productos por valor de +You have not enough money!=¡No tienes suficiente dinero! +You have not selected products to buy!=No has seleccionado productos para comprar +Adventurer Jacket=Chaqueta de aventurero +Adventurer Boots=Botas de aventurero diff --git a/mods/juanchi/eraz/loots.lua b/mods/juanchi/eraz/loots.lua new file mode 100644 index 0000000..33f1941 --- /dev/null +++ b/mods/juanchi/eraz/loots.lua @@ -0,0 +1,15 @@ +eraz.register_loot("basic_food", { + type = "fixed", + items = { + apple = { + name = "default:apple", + price = 3, + amount = 6, + }, + bread = { + name = "farming:bread", + price = 1, + amount = 1, + }, + }, +}) diff --git a/mods/juanchi/eraz/merchant.lua b/mods/juanchi/eraz/merchant.lua new file mode 100644 index 0000000..120803a --- /dev/null +++ b/mods/juanchi/eraz/merchant.lua @@ -0,0 +1,64 @@ +-- +-- ERRAND MERCHANTS +-- +local S = ... + +minetest.register_entity("eraz:merchant",{ + type = "errand", + genre = "male", + visual = "mesh", + mesh = "character.b3d", + textures = {"character.png"}, + visual_size = {x= 1.0, y= 1.0}, + collisionbox = {-0.3, 0.0, -0.3, 0.3, 1.7, 0.3}, + static_save = true, + physical = true, + collide_with_objects = true, + -- mod props + + -- mobkit api props + get_staticdata = mobkit.statfunc, + stepheight = 0.1, --EVIL! + springiness = 0, + buoyancy = 0.5, -- portion of hitbox submerged + max_speed = 3, + jump_height = 1, + view_range = 10, + lung_capacity = 10, -- seconds + max_hp = 20, + + attack = {range=0.5, damage_groups = {fleshy=3}}, + + animation = { + stand = {range= { x= 0, y= 79}, speed= 5, loop= true}, + walk = {range= { x= 168, y= 187}, speed= 25, loop= true}, + }, + + logic = eraz.merchant_brain, + + on_activate = function(self, staticdata, dtime_s) --on_activate, required + mobkit.actfunc(self, staticdata, dtime_s) + eraz.set_initial_properties(self, staticdata, dtime_s) + end, + + on_step = function(self, dtime) + mobkit.stepfunc(self, dtime) -- required + end, + + on_rightclick = function(self, clicker) + eraz.on_rightclick(self, clicker) + end, + + stand = function(self) + mobkit.clear_queue_low(self) + mobkit.clear_queue_high(self) + mobkit.animate(self, "stand") + end, + + on_die = function(self) + eraz.cancel_trading(self, S("The merchant has died.")) + end, + +}) + +eraz.register_egg("eraz:merchant", S("Merchant"), "eraz_spawnegg_merchant.png", false) diff --git a/mods/juanchi/eraz/mod.conf b/mods/juanchi/eraz/mod.conf new file mode 100644 index 0000000..e072829 --- /dev/null +++ b/mods/juanchi/eraz/mod.conf @@ -0,0 +1,3 @@ +name = eraz +description = Errand Merchants +depends = player_api, elez diff --git a/mods/juanchi/eraz/textures/eraz_adventurer_boots.png b/mods/juanchi/eraz/textures/eraz_adventurer_boots.png new file mode 100644 index 0000000000000000000000000000000000000000..d5b73f8ef6560d9766f7da805ef38640f8ac0203 GIT binary patch literal 4794 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 Ur<##ik^lez07*qoM6N<$g1+YYga7~l literal 0 HcmV?d00001 diff --git a/mods/juanchi/eraz/textures/eraz_adventurer_boots_inv.png b/mods/juanchi/eraz/textures/eraz_adventurer_boots_inv.png new file mode 100644 index 0000000000000000000000000000000000000000..dc1a6be5c5d1f8df446c354352b1010d9b181b75 GIT binary patch literal 5234 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 literal 0 HcmV?d00001 diff --git a/mods/juanchi/eraz/textures/eraz_adventurer_jacket_inv.png b/mods/juanchi/eraz/textures/eraz_adventurer_jacket_inv.png new file mode 100644 index 0000000000000000000000000000000000000000..067d439e344d5c54c14cb63e3d24ecd38b62f143 GIT binary patch literal 4284 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 ees1S>%>D}%IkBCoCu3Rw0000 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 Tp|X5`00000NkvXXu0mjfS8q2= literal 0 HcmV?d00001 diff --git a/mods/juanchi/eraz/textures/eraz_basket.png b/mods/juanchi/eraz/textures/eraz_basket.png new file mode 100644 index 0000000000000000000000000000000000000000..8e21c33f14bd96a881cb4a1024b6651cad712624 GIT binary patch literal 2133 zcmV-b2&(sqP)cK6%2M}kPZL<02y>e zSad^gZEa<4bO1wgWnpw>WFU8GbZ8()Nlj2!fese{00+HEL_t(o!>yM~Y+Y9shQGD< zdD_?4c5J7q8Yg{(04Y@;p^ZWi1$6=l!JtA^Fk%1_q7#NlnZSer2qqvg27y3G2*Cge zDj`ZJLM@G&(6n{ahn>VpeEqn-zW3bo*n2Mq*GX$))d6)&XLQcl>s#ymXRUvWs`B1T z>GgVCx_pK8m231@uT!qA;x<u}(FmdQ8_ni0y$4{POZg!Tvmh26% zjiI0#@WJDpqplk!+igSyfHz)yg`i4%dWNa#DdNZ?V&6Z2Q7yo12OO<2pa4DyB*6J? z*l=U}J@<@mH@Mske2k|*Kgr>_mX4<>&Q;V-D4lSvHzPm(-4Y^(+fD4YDsUtCH$Hcg zhYnBa++>c3uvsdDVnAIvjERsmXML;WJI`DcUA}l*5PJgL2>#utPI3RC8I9A7&St@4 zrzg)}D){4>SAYReed;kje0WwT#xkz1_vHJ(dglED`1Th+&Z(nw8dNxUc}q_JdJ(FH zTb{l9=rO)}@~|R?Kc8EcGcTUq6T<8j{3}mjQ^a!wpq0V-w>mU+13*A9aYUXbdPmzZKRw9nm&)j?}{Zq5ZU5DQC}LB8vj8#L}%4hcFo{kwC8=wdqzO)W#BL8B-HEd6tmn z5k+I@mCDs_DL?qlb3nPHQ$_%f-M5eNJZ5omlNLf6fyFRBme3uPs0bE8R51eLA$X`n z@hT+NkQk+3Ib7XG2LrAL#l|uDSVr0!=h%TOixdOdTK?i*75W3PM>se1D6<$_m}}E(i9t^m~u*SD3h| z4Fj+_Y^Z`DvBd?&8jCd$8KJ5?f+yf!S5P`8+DV?I;lbC=H1_?qcN^C8a zgSE~kz3wLW%#88PFFdq!82#zhRjep;v(t1t8|0>;Q6YptcTmwdM`WP(Bh^%mVPmL> z5wZv>uN2+@9wU}sEd=#UM3#OHm4|k$3^uoD9~kH0nA_P2$E>AutxIr$gNN_JPE0U# z5P~PON*YBNERiuxCYGrb#u7tf1s4L>27#@rL4r^=O5b~0iNT1W^hzrgL=+Q81S~@* zJ1bBGOCpZVwGE604&Swpd*`RQvz2qfCiqa38YLBQ0jeXD501-Z`8P{QcDqf4TTB098eve466& zvs59X@=9Ji7MC{I>hzE-qn#z(IX{a?psXEb)lgKPs&c4vl+IDsp2!MG9MOs+;wUD| zQ|6{8Xl0guug_|yj~iCdId}6n9L<8?{)FcEM+8;PBgG3i5n`ik_4|}Pp^k)B9uZ8$ zM4oczR7RE=3OmHNjVO(ppb`-TE5)XKEyDc>yhF<7a zo@aV~cSG{~U;dnzLc;P;Wupp+f>(oL2tZH>A`G13FbGN$AhR$Qjl@?6B{G(v2Gk%3 zk+oC-3a6AogxAjR7)a5(4TXsC*L@H2pHr;vZVbYW!Q-ZhG&|DMqy1Q5Z9@K4~gr%p(>a?(ZB%mRX8iN|xs9~|^={l8#t-uQ}T_A)oiX}Sw`l>q}(QY2^ z#=ZGRPsoFD$pPyr8Z?qXWQ14^r7@@|RS+5n*Gt$aoxI);Jp01=n~60|!>}CER3#b$ zah%-#(QF6g1IPJv+Aw7UsRUZBHf6O*-$AJfXN!oXbN>QhSPdC$^;x}og)48o&g!L$ zNPh(ho@A{3znu+tch0-7)wK>Q%U4)hxIpLP%d9UgP^>QFsv$JZ$cn}G{{z_R?njME z5gO-MeCth?7yixFi!XES_45qZu2S{8j9bG-;jwXo4FO|>Dg^!mTWDWM+lFJ)00000 LNkvXXu0mjfAb7~u literal 0 HcmV?d00001 diff --git a/mods/juanchi/eraz/textures/eraz_spawnegg_merchant.png b/mods/juanchi/eraz/textures/eraz_spawnegg_merchant.png new file mode 100644 index 0000000000000000000000000000000000000000..3e8599e56279054d136b202f71044f9ab18377e9 GIT binary patch literal 1424 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 literal 0 HcmV?d00001 diff --git a/mods/juanchi/modz/init.lua b/mods/juanchi/modz/init.lua index 213dabf..081acf1 100644 --- a/mods/juanchi/modz/init.lua +++ b/mods/juanchi/modz/init.lua @@ -13,9 +13,9 @@ local function create_form() for _, player in ipairs(minetest.get_connected_players()) do local player_name = player:get_player_name() local player_face - if player_api.get_gender(player) then - player_face = player_api.compose_face(player, 2.0) - player_face = minetest.formspec_escape(player_face) + if player_api.get_gender(player) ~= "" then + local base_texture = player_api.get_base_texture_table(player) + player_face = player_api.get_face(base_texture, 2.0, true) else player_face = "player_male_face.png" end diff --git a/mods/minetest_game/default/locale/default.de.tr b/mods/minetest_game/default/locale/default.de.tr index a1e49dc..4d36443 100644 --- a/mods/minetest_game/default/locale/default.de.tr +++ b/mods/minetest_game/default/locale/default.de.tr @@ -213,7 +213,9 @@ Diamond Sword=Diamantschwert Key=Schlüssel Torch=Fackel @1 will intersect protection on growth.=@1 wird bei Wachstum mit geschützter Zone überlappen. - +Brazilwood=Brasilholz +Buddha's Hand=Buddhas Hand +Bird of Paradise=Paradiesvogel ##### not used anymore ##### diff --git a/mods/minetest_game/default/locale/default.es.tr b/mods/minetest_game/default/locale/default.es.tr index 35f30b3..c521489 100644 --- a/mods/minetest_game/default/locale/default.es.tr +++ b/mods/minetest_game/default/locale/default.es.tr @@ -214,7 +214,9 @@ Diamond Sword=Espada de diamante Key=Llave Torch=Antorcha @1 will intersect protection on growth.=@1 intersectará con protección cuando crezca. - +Brazilwood=Palo de Brasil +Buddha's Hand=Mano de Buda +Bird of Paradise=Pájaro del paraíso ##### not used anymore ##### diff --git a/mods/minetest_game/default/locale/default.fr.tr b/mods/minetest_game/default/locale/default.fr.tr index d74cb83..6c1ddd4 100644 --- a/mods/minetest_game/default/locale/default.fr.tr +++ b/mods/minetest_game/default/locale/default.fr.tr @@ -150,7 +150,7 @@ Pink Coral=Corail rose Cyan Coral=Corail cyan Brown Coral=Corail marron Orange Coral=Corail orange -Coral Skeleton=Squelette de corail +Coral Skeleton=Squelette de corail Water Source=Source d'eau Flowing Water=Ecoulement d'eau River Water Source=Source d'eau de rivière @@ -213,7 +213,9 @@ Diamond Sword=Epée en diamant Key=Clé Torch=Torche @1 will intersect protection on growth.=@1 chevauchera la zone protégée avec la croissance. - +Brazilwood=Bois de Brésil +Buddha's Hand=Main de Bouddha +Bird of Paradise=Oiseau de Paradis ##### not used anymore ##### diff --git a/mods/minetest_game/default/locale/default.it.tr b/mods/minetest_game/default/locale/default.it.tr index 92029d6..fc43422 100644 --- a/mods/minetest_game/default/locale/default.it.tr +++ b/mods/minetest_game/default/locale/default.it.tr @@ -213,7 +213,9 @@ Diamond Sword=Spada di diamante Key=Chiave Torch=Torcia @1 will intersect protection on growth.=@1 crescendo attraverserà la protezione. - +Brazilwood=Legno del Brasile +Buddha's Hand=Mano di Buddha +Bird of Paradise=Uccello del paradiso ##### not used anymore ##### diff --git a/mods/minetest_game/default/locale/default.pt_BR.tr b/mods/minetest_game/default/locale/default.pt_BR.tr index 34ae20a..7c3e7c0 100644 --- a/mods/minetest_game/default/locale/default.pt_BR.tr +++ b/mods/minetest_game/default/locale/default.pt_BR.tr @@ -213,3 +213,6 @@ Diamond Sword=Espada de Diamante Key=Chave Torch=Tocha @1 will intersect protection on growth.=@1 cruzará a proteção no crescimento. +Brazilwood=Paubrasilia +Buddha's Hand=Mano de Buda +Bird of Paradise=Ave do Paraíso diff --git a/mods/minetest_game/default/locale/default.ru.tr b/mods/minetest_game/default/locale/default.ru.tr index 4415f67..27b3511 100644 --- a/mods/minetest_game/default/locale/default.ru.tr +++ b/mods/minetest_game/default/locale/default.ru.tr @@ -35,7 +35,7 @@ Stick=Палка Tin Ingot=Оловянный Слиток Tin Lump=Кусок Олова Furnace is empty=Печь пуста -100% (output full)=100% (полное приготовление) +100% (output full)=100% (полное приготовление) @1%=@1% Not cookable=Не может быть приготовлено Empty=Пустое @@ -213,7 +213,9 @@ Diamond Sword=Алмазный Меч Key=Ключ Torch=Факел @1 will intersect protection on growth.=@1 пересечёт защиту по росту. - +Brazilwood=бразильское дерево +Buddha's Hand=Рука Будды +Bird of Paradise=Райская птица ##### not used anymore ##### diff --git a/mods/minetest_game/default/mapgen.lua b/mods/minetest_game/default/mapgen.lua index bb6bdcc..5e14adf 100644 --- a/mods/minetest_game/default/mapgen.lua +++ b/mods/minetest_game/default/mapgen.lua @@ -2318,6 +2318,72 @@ function default.register_decorations() flags= "all_floors", }) + -- Brazilwood + + minetest.register_decoration({ + name = "default:brazilwood", + decoration = "default:brazilwood", + deco_type = "simple", + biomes = {"rainforest"}, + place_on = {"default:dirt_with_rainforest_litter"}, + sidelen = 16, + noise_params = { + offset = 0.016, + scale = 0.016, + spread = {x = 20, y = 20, z = 20}, + seed = 589, + octaves = 3, + persist = 0.7 + }, + y_max = 31000, + y_min = 1, + flags= "all_floors", + }) + + -- Alocasia + + minetest.register_decoration({ + name = "default:alocasia", + decoration = "default:alocasia", + deco_type = "simple", + biomes = {"rainforest"}, + place_on = {"default:dirt_with_rainforest_litter"}, + sidelen = 16, + noise_params = { + offset = 0.016, + scale = 0.016, + spread = {x = 20, y = 20, z = 20}, + seed = 458, + octaves = 3, + persist = 0.7 + }, + y_max = 31000, + y_min = 1, + flags= "all_floors", + }) + + -- Bird of Paradise + + minetest.register_decoration({ + name = "default:bird_paradise", + decoration = "default:bird_paradise", + deco_type = "simple", + biomes = {"rainforest"}, + place_on = {"default:dirt_with_rainforest_litter"}, + sidelen = 16, + noise_params = { + offset = 0.016, + scale = 0.016, + spread = {x = 20, y = 20, z = 20}, + seed = 82, + octaves = 3, + persist = 0.7 + }, + y_max = 31000, + y_min = 1, + flags= "all_floors", + }) + -- Sunflower minetest.register_decoration({ diff --git a/mods/minetest_game/default/nodes.lua b/mods/minetest_game/default/nodes.lua index c8a11e2..95954ff 100644 --- a/mods/minetest_game/default/nodes.lua +++ b/mods/minetest_game/default/nodes.lua @@ -1476,6 +1476,63 @@ minetest.register_node("default:bioluminiscent_plant", { }, }) +minetest.register_node("default:brazilwood", { + description = S("Brazilwood"), + drawtype = "plantlike", + tiles = {"default_brazilwood.png"}, + visual_scale = 1.25, + inventory_image = "default_brazilwood.png", + wield_image = "default_brazilwood.png", + paramtype = "light", + sunlight_propagates = true, + walkable = false, + buildable_to = true, + groups = {snappy = 3, flammable = 3, flower =1, flora=1, attached_node = 1}, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, 3.5 / 16, 4 / 16}, + }, +}) + +minetest.register_node("default:alocasia", { + description = S("Buddha's Hand"), + drawtype = "plantlike", + tiles = {"default_alocasia.png"}, + visual_scale = 1.05, + inventory_image = "default_alocasia.png", + wield_image = "default_alocasia.png", + paramtype = "light", + sunlight_propagates = true, + walkable = false, + buildable_to = true, + groups = {snappy = 3, flammable = 3, flower =1, flora=1, attached_node = 1}, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, 3.5 / 16, 4 / 16}, + }, +}) + +minetest.register_node("default:bird_paradise", { + description = S("Bird of Paradise"), + drawtype = "plantlike", + tiles = {"default_bird_paradise.png"}, + visual_scale = 1.5, + inventory_image = "default_bird_paradise.png", + wield_image = "default_bird_paradise.png", + paramtype = "light", + sunlight_propagates = true, + walkable = false, + buildable_to = true, + groups = {snappy = 3, flammable = 3, flower =1, flora=1, attached_node = 1}, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, 3.5 / 16, 4 / 16}, + }, +}) + minetest.register_node("default:junglegrass", { description = S("Jungle Grass"), drawtype = "plantlike", diff --git a/mods/minetest_game/default/textures/default_alocasia.png b/mods/minetest_game/default/textures/default_alocasia.png new file mode 100644 index 0000000000000000000000000000000000000000..9111f4857d07f76442b323568b7a6601ff546bf1 GIT binary patch literal 5327 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 hM~)P{C@;SWN=X0!02y>e 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 N002ovPDHLkV1nJ`S=;~s literal 0 HcmV?d00001 diff --git a/mods/minetest_game/give_initial_stuff/init.lua b/mods/minetest_game/give_initial_stuff/init.lua index dbcc3f8..39f1195 100644 --- a/mods/minetest_game/give_initial_stuff/init.lua +++ b/mods/minetest_game/give_initial_stuff/init.lua @@ -2,7 +2,7 @@ local stuff_string = minetest.settings:get("initial_stuff") or "default:pick_wood,default:axe_wood,default:shovel_wood,default:apple,".. - "farming:breadº" + "farming:bread" give_initial_stuff = { items = {} diff --git a/mods/minetest_game/player_api/api.lua b/mods/minetest_game/player_api/api.lua index 5e68b7c..3adc102 100644 --- a/mods/minetest_game/player_api/api.lua +++ b/mods/minetest_game/player_api/api.lua @@ -369,8 +369,19 @@ function player_api.set_texture(player) player_api.set_textures(player, models[gender_model].textures) end -function player_api.compose_face(player, scale) - return player_api.compose_base_texture(player, { +function player_api.get_face(base_texture, scale, escape) + if not scale then + scale = 1.0 + end + local face = player_api.compose_face(base_texture, scale) + if escape then + face = minetest.formspec_escape(face) + end + return face +end + +function player_api.compose_face(base_texture, scale) + return player_api.compose_base_texture(base_texture, { canvas_size = "16x16", scale = scale, skin_texture = "player_face_skin.png", diff --git a/mods/minetest_game/player_api/base_texture.lua b/mods/minetest_game/player_api/base_texture.lua index 0af85f1..85ac1bb 100644 --- a/mods/minetest_game/player_api/base_texture.lua +++ b/mods/minetest_game/player_api/base_texture.lua @@ -3,7 +3,7 @@ player_api.hair_colors = { color = "#000000", ratio = 175, }, - gray = nil, + gray = {}, light_brown = { color = "#7a4c20", ratio = 150, @@ -65,10 +65,8 @@ function player_api.set_base_texture(player, base_texture) meta:set_string("base_texture", minetest.serialize(base_texture)) end -function player_api.set_base_textures(player) - local meta = player:get_meta() +function player_api.create_base_texture(gender) local base_texture = {} - local gender = meta:get_string("gender") local hair_color = hair_colors_redux[math.random(#hair_colors_redux)] local eye_color = "player_"..player_api.eye_colors[math.random(#player_api.eye_colors)].."_eye.png" if gender == "male" then @@ -84,11 +82,17 @@ function player_api.set_base_textures(player) end base_texture["skin"] = {texture = "player_skin.png", color = skin_colors_redux[math.random(#skin_colors_redux)]} + return base_texture +end + +function player_api.set_base_textures(player) + local meta = player:get_meta() + local gender = meta:get_string("gender") + local base_texture = player_api.create_base_texture(gender) player_api.set_base_texture(player, base_texture) end -function player_api.colorize_texture(player, what, texture) - local base_texture = player_api.get_base_texture_table(player) +local function colorize_texture(base_texture, what, texture) if base_texture[what]["color"] then local value if what == "skin" then @@ -96,7 +100,7 @@ function player_api.colorize_texture(player, what, texture) else --"hair" value = player_api.hair_colors[base_texture[what]["color"]] end - if value then + if value and value.color then return texture .. "\\^\\[colorize\\:\\"..value.color.."\\:"..tostring(value.ratio) else return texture @@ -106,9 +110,9 @@ function player_api.colorize_texture(player, what, texture) end end -function player_api.compose_base_texture(player, def) - local base_texture = player_api.get_base_texture_table(player) - local texture = player_api.colorize_texture(player, "skin", "[combine:"..def.canvas_size..":0,0="..def.skin_texture) +function player_api.compose_base_texture(base_texture, def) + + local texture = colorize_texture(base_texture, "skin", "[combine:"..def.canvas_size..":0,0="..def.skin_texture) local ordered_keys = {} @@ -121,7 +125,7 @@ function player_api.compose_base_texture(player, def) for i = 1, #ordered_keys do local key, value = ordered_keys[i], base_texture[ordered_keys[i]] if key == "eyebrowns" then - value.texture = player_api.colorize_texture(player, "eyebrowns", value.texture) + value.texture = colorize_texture(base_texture, "eyebrowns", value.texture) texture = texture .. ":"..def.eyebrowns_pos.."="..value.texture elseif key == "eye" then texture = texture .. ":"..def.eye_right_pos.."="..value @@ -132,7 +136,7 @@ function player_api.compose_base_texture(player, def) if def.hair_preview then value.texture = string.sub(value.texture, 0, -5).."_preview.png" end - value.texture = player_api.colorize_texture(player, "hair", value.texture) + value.texture = colorize_texture(base_texture, "hair", value.texture) texture = texture .. ":"..def.hair_pos.."="..value.texture end end diff --git a/mods/minetest_game/player_api/cloths.lua b/mods/minetest_game/player_api/cloths.lua index 670c3ad..6d953e6 100644 --- a/mods/minetest_game/player_api/cloths.lua +++ b/mods/minetest_game/player_api/cloths.lua @@ -134,7 +134,7 @@ function player_api.set_cloths(player) inv:add_item("cloths", 'player_api:cloth_unisex_footwear_default') end -local cloth_pos = { +player_api.cloth_pos = { "48,0", "32,32", "0,32", @@ -170,7 +170,8 @@ function player_api.compose_cloth(player) if not(underwear) then lower_ItemStack = "cloth_lower_underwear_default.png" end - local base_texture = player_api.compose_base_texture(player, { + local _base_texture = player_api.get_base_texture_table(player) + local base_texture = player_api.compose_base_texture(_base_texture, { canvas_size ="128x64", skin_texture = "player_skin.png", eyebrowns_pos = "16,16", @@ -182,16 +183,16 @@ function player_api.compose_cloth(player) }) local cloth = base_texture.."^".."[combine:128x64:0,0=" if head_ItemStack then - cloth = cloth .. ":"..cloth_pos[1].."="..head_ItemStack + cloth = cloth .. ":"..player_api.cloth_pos[1].."="..head_ItemStack end if upper_ItemStack then - cloth = cloth .. ":"..cloth_pos[2].."="..upper_ItemStack + cloth = cloth .. ":"..player_api.cloth_pos[2].."="..upper_ItemStack end if lower_ItemStack then - cloth = cloth .. ":"..cloth_pos[3].."="..lower_ItemStack + cloth = cloth .. ":"..player_api.cloth_pos[3].."="..lower_ItemStack end if footwear_ItemStack then - cloth = cloth .. ":"..cloth_pos[4].."="..footwear_ItemStack + cloth = cloth .. ":"..player_api.cloth_pos[4].."="..footwear_ItemStack end --Now attached cloth if not(next(attached_cloth) == nil) then @@ -199,7 +200,7 @@ function player_api.compose_cloth(player) local attached_item_name = attached_cloth[i] local attached_itemstack = minetest.registered_items[attached_item_name] local attached_cloth_type = minetest.get_item_group(attached_item_name, "cloth") - cloth = cloth .. ":"..cloth_pos[attached_cloth_type].."="..attached_itemstack._cloth_texture + cloth = cloth .. ":"..player_api.cloth_pos[attached_cloth_type].."="..attached_itemstack._cloth_texture end end return cloth diff --git a/mods/minetest_game/player_api/textures/player_green_eye.png b/mods/minetest_game/player_api/textures/player_green_eye.png index 8bec81538f226f96364851fccdac5997129939d2..2e3b7d31fd39fc18fbf5d967ba469cfcf635c4cc 100644 GIT binary patch delta 1222 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 dTqezK4C)*uNfiaz1?3=+ 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 diff --git a/mods/petz/petz/misc/wagon.lua b/mods/petz/petz/misc/wagon.lua index 931fe8a..f461403 100644 --- a/mods/petz/petz/misc/wagon.lua +++ b/mods/petz/petz/misc/wagon.lua @@ -13,8 +13,10 @@ minetest.register_entity("petz:wagon",{ physical= true, collisionbox = {-0.5, -1.5, -1.75, 0.5, -0.25, -3.0}, hitbox = {-0.5, -1.5, -1.5, 0.5, -0.25, -3.0}, - on_punch = function(self, puncher, time_from_last_punch, tool_capabilities, dir) - mokapi.drop_item(self, "petz:wagon", 1) + on_punch = function(self, puncher, time_from_last_punch, tool_capabilities, dir, damage) + if self.object:get_hp() - damage <= 0 then + mokapi.drop_item(self, "petz:wagon", 1) + end end, })